  * { box-sizing: border-box; }
  html { scroll-behavior: smooth; scroll-padding-top: var(--space-80); }
  html, body { margin: 0; padding: 0; background: var(--bg); color: var(--ink); font-family: var(--sans); -webkit-font-smoothing: antialiased; }
  /* Full-bleed sections (e.g. .community-carousel-wrap negative margin) can
     overflow the viewport by a few px on iOS Safari. Clip horizontally on
     body so the page can't scroll left-right; vertical scroll preserved. */
  body { overflow-x: clip; }
  @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
  body { font-size: var(--text-16); line-height: 1.5; }
  a { color: inherit; text-decoration: none; }
  button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; padding: 0; }
  ::selection { background: var(--ink); color: var(--bg); }

  /* Layout helpers */
  .wrap { max-width: 1280px; margin: 0 auto; padding: 0 var(--space-32); }
  .row  { display: flex; align-items: center; }
  .grid { display: grid; }

  /* Make chrome wrappers layout-transparent so sticky nav can stick to body, not the wrapper */
  #site-header, #site-footer { display: contents; }

  /* Nav */
  .nav {
    position: sticky; top: 0; z-index: 50;
    background: color-mix(in oklab, var(--bg), transparent 8%);
    backdrop-filter: blur(8px);
    border-bottom: 1px solid var(--line);
  }
  .nav-inner { display: flex; align-items: center; justify-content: space-between; height: 64px; }
  .logo { display: inline-flex; align-items: center; gap: var(--space-10); font-family: var(--sans); font-weight: var(--weight-semibold); font-size: var(--text-19); letter-spacing: -0.025em; }
  body[data-mode="systems"] .logo { font-family: var(--mono); font-size: var(--text-15); letter-spacing: -0.01em; text-transform: lowercase; font-weight: var(--weight-semibold);}
  .logo-mark { width: 22px; height: 22px; border: 1.5px solid var(--accent); border-radius: 50%; display: inline-grid; place-items: center; }
  .logo-mark::before { content:""; width: 7px; height: 7px; background: var(--accent); border-radius: 50%; }
  body[data-mode="systems"] .logo-mark { border-radius: var(--radius-4); border-color: var(--accent); }
  body[data-mode="systems"] .logo-mark::before { background: var(--accent); border-radius: var(--radius-2); }
  .nav-links { display: flex; gap: var(--space-32); font-size: var(--text-14); color: var(--ink-2); align-items: center; }
  .nav-links a { padding: var(--space-6) var(--space-2); color: var(--ink-2); transition: color .15s ease; }
  .nav-links a:hover { color: var(--ink); }

  .nav-cta { display: flex; gap: var(--space-10); align-items: center; }

  /* ––––– Language toggle ––––– */
  .lang-switch {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    font-family: var(--mono);
    font-size: var(--text-11);
    font-weight: var(--weight-medium);
    letter-spacing: 0.06em;
  }
  .lang-switch a {
    padding: var(--space-4) var(--space-8);
    border-radius: var(--radius-4);
    color: var(--ink-3);
    transition: color .15s ease, background-color .15s ease;
  }
  .lang-switch a:hover { color: var(--ink); }
  .lang-switch a.current {
    color: var(--ink);
    background: color-mix(in oklab, var(--ink), transparent 92%);
    cursor: default;
  }
  .lang-switch a.current:hover { color: var(--ink); }

  /* ––––– Orchestration section ––––– */
  .orch-grid {
    display: grid;
    grid-template-columns: 1fr 1.6fr 1fr;
    gap: 0;
    background: var(--bg);
    border: 1px solid var(--line);
    border-radius: var(--radius-12);
    padding: var(--space-32) var(--space-32);
    position: relative;
    min-height: 380px;
  }
  .orch-col { display: flex; flex-direction: column; gap: var(--space-20); position: relative; z-index: 2; }
  .orch-col-in { align-items: stretch; }
  .orch-col-out { align-items: stretch; }
  .orch-col-label {
    font-family: var(--mono); font-size: var(--text-10); letter-spacing: 0.16em; text-transform: uppercase;
    color: var(--muted); padding-bottom: var(--space-6);
  }
  .orch-col-out .orch-col-label { text-align: right; }

  .orch-node {
    display: flex; gap: var(--space-12); align-items: center;
    padding: var(--space-12) var(--space-16);
    background: var(--bg-2);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    transition: all .35s ease;
  }
  .orch-col-out .orch-node { flex-direction: row-reverse; text-align: right; }
  .orch-node-marker {
    width: 8px; height: 8px; border-radius: 50%;
    background: var(--ink-3);
    transition: all .35s ease;
    flex: 0 0 auto;
  }
  .orch-node-text { flex: 1; min-width: 0; }
  .orch-node-name { font-size: var(--text-13); font-weight: var(--weight-medium); letter-spacing: -0.01em; color: var(--ink); }
  .orch-node-sub { font-size: var(--text-11); color: var(--muted); margin-top: var(--space-2); font-family: var(--mono); letter-spacing: 0.04em; }

  .orch-node.active {
    background: var(--bg);
    border-color: var(--accent);
    box-shadow: 0 0 0 3px color-mix(in oklab, var(--accent), transparent 88%);
    transform: translateX(0);
  }
  .orch-col-in .orch-node.active { transform: translateX(4px); }
  .orch-col-out .orch-node.active { transform: translateX(-4px); }
  .orch-node.active .orch-node-marker {
    background: var(--accent);
    box-shadow: 0 0 0 4px color-mix(in oklab, var(--accent), transparent 75%);
  }

  .orch-center {
    position: relative;
    display: grid; place-items: center;
    min-height: 350px;
  }
  .orch-svg {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    pointer-events: none;
  }
  .orch-line {
    stroke: var(--line-2);
    stroke-width: var(--icon-stroke);
    stroke-dasharray: 3 4;
    transition: stroke .3s ease, stroke-width .3s ease;
  }
  .orch-line-active {
    stroke: var(--accent);
    stroke-width: var(--icon-stroke-bold);
    stroke-dasharray: 4 3;
    animation: orch-flow 0.8s linear infinite;
  }
  @keyframes orch-flow {
    to { stroke-dashoffset: -14; }
  }

  .orch-hub {
    position: relative; z-index: 3;
    width: 138px; height: 138px;
    border-radius: 50%;
    background: var(--ink); color: var(--bg);
    display: grid; place-items: center; text-align: center;
    box-shadow: 0 16px 40px rgba(0,0,0,0.18), 0 0 0 8px var(--bg);
    padding: var(--space-16);
  }
  .orch-hub-mark {
    display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4);
    width: 22px; height: 22px; margin: 0 auto var(--space-8);
  }
  .orch-hub-mark span {
    background: color-mix(in oklab, var(--accent), transparent 0%);
    border-radius: var(--radius-2);
  }
  .orch-hub-mark span:nth-child(1) { background: var(--accent); }
  .orch-hub-mark span:nth-child(2) { background: color-mix(in oklab, var(--accent), white 30%); }
  .orch-hub-mark span:nth-child(3) { background: color-mix(in oklab, var(--accent), white 30%); }
  .orch-hub-mark span:nth-child(4) { background: var(--bg); }
  .orch-hub-label {
    font-size: var(--text-16); font-weight: var(--weight-medium); letter-spacing: -0.015em;
  }
  .orch-hub-sub {
    font-family: var(--mono); font-size: var(--text-9);
    letter-spacing: 0.14em; text-transform: uppercase;
    color: color-mix(in oklab, var(--bg), transparent 50%);
    margin-top: var(--space-4);
  }

  /* Timeline */
  .orch-timeline {
    margin-top: var(--space-32);
    background: var(--bg);
    border: 1px solid var(--line);
    border-radius: var(--radius-12);
    overflow: hidden;
  }
  .orch-timeline-head {
    display: flex; justify-content: space-between; align-items: center;
    padding: var(--space-16) var(--space-20);
    background: var(--bg-2);
    border-bottom: 1px solid var(--line);
  }
  .orch-stats {
    display: flex; gap: var(--space-16); align-items: center;
    font-family: var(--mono); font-size: var(--text-11); letter-spacing: 0.06em;
    color: var(--ink-3);
  }
  .orch-stats strong { color: var(--ink); font-weight: var(--weight-medium); }
  .orch-stats-divider { width: 1px; height: 12px; background: var(--line-2); }
  .orch-escalate-count strong { color: var(--accent); }

  .orch-timeline-body {
    max-height: 420px; overflow-y: auto;
    padding: var(--space-6) 0;
  }
  .orch-event {
    display: grid;
    grid-template-columns: 80px 1fr 1.4fr auto;
    gap: var(--space-20); align-items: start;
    padding: var(--space-16) var(--space-20);
    border-bottom: 1px dashed var(--line);
    font-size: var(--text-13);
    transition: background .3s ease;
  }
  .orch-event:last-child { border-bottom: 0; background: color-mix(in oklab, var(--accent), transparent 96%); }
  .orch-event:hover { background: var(--bg-2); }
  .orch-event-time .mono { font-size: var(--text-11); color: var(--muted); letter-spacing: 0.04em; }
  .orch-event-flow {
    display: inline-flex; flex-wrap: wrap; gap: var(--space-6); align-items: center;
    font-family: var(--mono); font-size: var(--text-10); letter-spacing: 0.1em;
    text-transform: uppercase; color: var(--ink-3);
  }
  .orch-flow-tool { color: var(--ink-2); }
  .orch-flow-agent { color: var(--accent); font-weight: var(--weight-medium); }
  .orch-flow-arrow { color: var(--line-2); }
  .orch-event-title { font-weight: var(--weight-medium); letter-spacing: -0.01em; color: var(--ink); }
  .orch-event-sub { font-size: var(--text-12); color: var(--ink-3); margin-top: var(--space-4); line-height: 1.5; }
  .orch-event-escalation {
    margin-top: var(--space-8);
    display: inline-flex; gap: var(--space-8); align-items: center; flex-wrap: wrap;
    padding: var(--space-6) var(--space-10); border-radius: var(--radius-4);
    background: color-mix(in oklab, var(--warn), transparent 90%);
    border: 1px dashed color-mix(in oklab, var(--warn), transparent 60%);
    font-size: var(--text-12); color: var(--ink-2);
  }
  .orch-event-escalation strong { color: var(--ink); font-weight: var(--weight-medium); }

  .orch-badge {
    display: inline-flex; align-items: center; gap: var(--space-6);
    padding: var(--space-4) var(--space-10); border-radius: var(--radius-pill);
    font-family: var(--mono); font-size: var(--text-10); letter-spacing: 0.1em; text-transform: uppercase;
  }
  .orch-badge .orch-dot { width: 6px; height: 6px; border-radius: 50%; }
  .orch-badge-auto { background: color-mix(in oklab, var(--good), transparent 88%); color: var(--good); }
  .orch-badge-auto .orch-dot { background: var(--good); }
  .orch-badge-escalate { background: color-mix(in oklab, var(--warn), transparent 85%); color: var(--warn); }
  .orch-badge-escalate .orch-dot { background: var(--warn); animation: pulse 1.4s infinite; }
  @keyframes pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.4; transform: scale(0.8); }
  }

  @media (max-width: 900px) {
    .orch-grid { grid-template-columns: 1fr; gap: var(--space-24); }
    .orch-svg { display: none; }
    .orch-event { grid-template-columns: 1fr; gap: var(--space-6); }
  }

  /* ––––– Orchestration Variant B – swimlanes ––––– */
  .swim-counter {
    display: flex; flex-direction: column; gap: var(--space-8);
    text-align: right;
  }
  .swim-counter-row { display: flex; align-items: baseline; gap: var(--space-10); justify-content: flex-end; }
  .swim-counter-num {
    font-size: var(--text-24); font-weight: var(--weight-medium); letter-spacing: -0.02em; color: var(--ink);
    font-variant-numeric: tabular-nums;
  }
  .swim-counter-num-warn { color: var(--warn); }
  .swim-counter-lbl { font-family: var(--mono); font-size: var(--text-10); letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); }

  .swim-board {
    background: var(--bg-2);
    border: 1px solid var(--line);
    border-radius: var(--radius-12);
    overflow: hidden;
    padding-bottom: var(--space-8);
  }
  .swim-board-head {
    display: grid; grid-template-columns: 200px 1fr 130px;
    padding: var(--space-16) var(--space-24); border-bottom: 1px solid var(--line);
    background: var(--bg);
    font-family: var(--mono); font-size: var(--text-10); letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted);
  }
  .swim-head-cell { display: flex; align-items: center; }
  .swim-head-track { justify-content: center; gap: 0; color: var(--ink-3); }
  .swim-head-status { justify-content: flex-end; }

  /* Human escalation row – sits at the top */
  .swim-human-row {
    display: grid; grid-template-columns: 200px 1fr 130px;
    align-items: center;
    padding: var(--space-16) var(--space-24);
    background: color-mix(in oklab, var(--warn), transparent 94%);
    border-bottom: 1px dashed color-mix(in oklab, var(--warn), transparent 60%);
    min-height: 64px;
  }
  .swim-human-cell {
    display: flex; align-items: center; gap: var(--space-12);
  }
  .swim-human-icon {
    width: 28px; height: 28px; border-radius: 50%;
    background: var(--bg); border: 1px solid color-mix(in oklab, var(--warn), transparent 50%);
    color: var(--warn);
    display: grid; place-items: center;
  }
  .swim-human-name { font-size: var(--text-13); font-weight: var(--weight-medium); letter-spacing: -0.01em; color: var(--ink); }
  .swim-human-sub { font-family: var(--mono); font-size: var(--text-10); letter-spacing: 0.1em; text-transform: uppercase; color: var(--warn); margin-top: var(--space-2); }
  .swim-human-track {
    position: relative; height: 100%; min-height: 40px;
  }
  .swim-human-track-line {
    position: absolute; top: 50%; left: 4%; right: 4%;
    height: 2px;
    background: repeating-linear-gradient(90deg, color-mix(in oklab, var(--warn), transparent 60%) 0 4px, transparent 4px 8px);
  }
  .swim-human-stat {
    text-align: right;
    font-family: var(--mono); font-size: var(--text-10); letter-spacing: 0.12em; text-transform: uppercase;
    color: var(--warn);
  }

  /* Agent lane */
  .swim-lane {
    display: grid; grid-template-columns: 200px 1fr 130px;
    align-items: center;
    padding: var(--space-6) var(--space-24);
    border-bottom: 1px solid var(--line);
    min-height: 92px;
  }
  .swim-lane:last-child { border-bottom: 0; }

  .swim-agent-cell {
    display: flex; gap: var(--space-12); align-items: center;
  }
  .swim-agent-tag {
    font-family: var(--mono); font-size: var(--text-10); font-weight: var(--weight-medium); letter-spacing: 0.1em;
    padding: var(--space-4) var(--space-8); border-radius: var(--radius-4);
    background: var(--ink); color: var(--bg);
  }
  .swim-agent-name { font-size: var(--text-13); font-weight: var(--weight-medium); letter-spacing: -0.01em; }

  /* Track */
  .swim-track {
    position: relative;
    height: 80px;
    margin: 0 var(--space-12);
  }
  .swim-track-line {
    position: absolute; top: 50%; left: 0; right: 0;
    height: 1px;
    background: repeating-linear-gradient(90deg, var(--line-2) 0 4px, transparent 4px 8px);
  }

  /* Agent node sits in middle of lane */
  .swim-agent-node {
    position: absolute; top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    z-index: 4;
  }
  .swim-agent-node-inner {
    width: 28px; height: 28px;
    border-radius: 50%;
    background: var(--bg); color: var(--ink);
    border: 1.5px solid var(--ink);
    display: grid; place-items: center;
    font-family: var(--mono); font-size: var(--text-9); font-weight: var(--weight-semibold); letter-spacing: 0.05em;
  }

  /* Tool indicators on left/right of the lane */
  .swim-track-tool {
    position: absolute; top: 50%;
    transform: translateY(-50%);
    width: 22px; height: 22px;
    display: grid; place-items: center;
    z-index: 3;
  }
  .swim-track-tool-l { left: 0; }
  .swim-track-tool-r { right: 0; }
  .swim-tool-active {
    width: 22px; height: 22px;
    background: var(--bg); border: 1px solid var(--accent);
    color: var(--accent);
    border-radius: var(--radius-4);
    display: grid; place-items: center;
    font-family: var(--mono); font-size: var(--text-11);
    animation: swim-tool-pulse 1.4s ease;
  }
  @keyframes swim-tool-pulse {
    0% { opacity: 0; transform: scale(0.5); }
    20% { opacity: 1; transform: scale(1); }
    100% { opacity: 0.7; transform: scale(1); }
  }

  /* Packet – the moving card */
  .swim-packet {
    pointer-events: none;
    background: var(--bg);
    border: 1px solid var(--line-2);
    border-radius: var(--radius);
    padding: var(--space-10) var(--space-16);
    min-width: 240px; max-width: 320px;
    box-shadow: 0 8px 28px rgba(0,0,0,0.10);
  }
  .swim-packet-auto {
    border-color: color-mix(in oklab, var(--accent), transparent 50%);
    box-shadow: 0 8px 28px rgba(0,0,0,0.10), 0 0 0 3px color-mix(in oklab, var(--accent), transparent 90%);
  }
  .swim-packet-escalate {
    border-color: color-mix(in oklab, var(--warn), transparent 40%);
    box-shadow: 0 8px 28px rgba(0,0,0,0.12), 0 0 0 3px color-mix(in oklab, var(--warn), transparent 88%);
  }
  .swim-packet-header { margin-bottom: var(--space-4); }
  .swim-packet-tag {
    display: inline-flex; align-items: center; gap: var(--space-6);
    font-family: var(--mono); font-size: var(--text-9); letter-spacing: 0.12em; text-transform: uppercase;
    color: var(--muted);
  }
  .swim-tool-glyph {
    display: inline-grid; place-items: center;
    width: 14px; height: 14px;
    border: 1px solid var(--line); border-radius: var(--radius-4);
    color: var(--ink-2);
    font-family: var(--mono); font-size: var(--text-9);
  }
  .swim-arrow { color: var(--line-2); }
  .swim-packet-title {
    font-size: var(--text-13); font-weight: var(--weight-medium); letter-spacing: -0.005em; color: var(--ink);
    line-height: 1.3;
  }
  .swim-packet-sub {
    font-size: var(--text-11); color: var(--ink-3); margin-top: var(--space-2);
    font-family: var(--mono); letter-spacing: 0.04em;
  }
  .swim-packet-await {
    margin-top: var(--space-8);
    display: inline-flex; align-items: center; gap: var(--space-6);
    padding: var(--space-4) var(--space-8); border-radius: var(--radius-4);
    background: color-mix(in oklab, var(--warn), transparent 88%);
    color: var(--warn);
    font-family: var(--mono); font-size: var(--text-10); letter-spacing: 0.08em; text-transform: uppercase;
  }
  .swim-await-dot {
    width: 6px; height: 6px; border-radius: 50%; background: var(--warn);
    animation: pulse 1.2s infinite;
  }

  /* Status pill at right */
  .swim-status-cell { display: flex; justify-content: flex-end; }
  .swim-status {
    display: inline-flex; align-items: center; gap: var(--space-6);
    padding: var(--space-4) var(--space-10); border-radius: var(--radius-pill);
    font-family: var(--mono); font-size: var(--text-10); letter-spacing: 0.1em; text-transform: uppercase;
    transition: background .25s ease, color .25s ease;
  }
  .swim-status-dot { width: 6px; height: 6px; border-radius: 50%; }
  .swim-status-idle { background: var(--bg); color: var(--muted); border: 1px solid var(--line); }
  .swim-status-idle .swim-status-dot { background: var(--line-2); }
  .swim-status-auto { background: color-mix(in oklab, var(--good), transparent 88%); color: var(--good); }
  .swim-status-auto .swim-status-dot { background: var(--good); }
  .swim-status-esc { background: color-mix(in oklab, var(--warn), transparent 85%); color: var(--warn); }
  .swim-status-esc .swim-status-dot { background: var(--warn); animation: pulse 1.4s infinite; }

  @media (max-width: 900px) {
    .swim-board-head, .swim-human-row, .swim-lane { grid-template-columns: 100px 1fr 90px; padding: var(--space-8) var(--space-16); }
    .swim-packet { min-width: 180px; max-width: 220px; padding: var(--space-8) var(--space-10); }
  }
  .btn { display: inline-flex; align-items: center; gap: var(--space-8); padding: var(--space-10) var(--space-16); border-radius: var(--radius-pill); font-size: var(--text-14); font-weight: var(--weight-medium); transition: transform .15s ease, background .15s ease, color .15s ease; }
  .btn-ghost { color: var(--ink); border: 1px solid var(--ink); }
  /* Hero "Book a demo" CTA — solid white so the hero dot pattern doesn't show through */
  .btn-ghost[href*="calendar.app.google"] { background: var(--bg); }
  .btn-ghost:hover { background: var(--ink); color: var(--bg); }
  .btn-primary { background: var(--accent); color: var(--accent-ink); }
  .btn-primary:hover { transform: translateY(-1px); }
  body[data-mode="systems"] .btn { border-radius: var(--radius-4); font-family: var(--mono); font-size: var(--text-12); text-transform: uppercase; letter-spacing: 0.08em; padding: var(--space-10) var(--space-16); }

  /* Typographic system */
  .eyebrow { font-family: var(--mono); font-size: var(--text-11); letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent); }
  .section-label { display: inline-flex; align-items: center; gap: var(--space-10); font-family: var(--mono); font-size: var(--text-11); letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent); }
  .section-label::before { content: ""; width: 24px; height: 1px; background: var(--accent); }
  .h-display {
    font-family: var(--sans);
    font-weight: var(--weight-medium);
    font-size: clamp(40px, 4.6vw, 76px);
    line-height: 1.02;
    letter-spacing: -0.035em;
  }
  body[data-mode="systems"] .h-display {
    font-weight: var(--weight-medium);
    font-size: clamp(38px, 4.2vw, 70px);
    line-height: 1.0;
    letter-spacing: -0.04em;
  }
  .h-section {
    font-family: var(--sans);
    font-weight: var(--weight-medium);
    font-size: clamp(36px, 4.0vw, 60px);
    line-height: 1.02;
    letter-spacing: -0.03em;
  }
  body[data-mode="systems"] .h-section {
    font-weight: var(--weight-medium);
    font-size: clamp(32px, 3.6vw, 54px);
    letter-spacing: -0.035em;
  }
  .lede { font-size: var(--text-19); line-height: 1.45; color: var(--ink-2); max-width: 620px; letter-spacing: -0.005em; }
  /* Accent word – highlighter-style underline in brand blue */
  .italic-swap em { font-style: normal; font-weight: var(--weight-medium); color: var(--ink); background: linear-gradient(transparent 62%, color-mix(in oklab, var(--accent), transparent 78%) 0); padding: 0 0.08em; }
  body[data-mode="systems"] .italic-swap em { font-family: var(--mono); font-weight: var(--weight-regular); color: var(--accent); background: none; font-size: 0.85em; }

  /* Section base – separation comes from background contrast, not borders */
  section { padding: var(--space-120) 0; }
  section:first-of-type { padding-top: var(--space-80); }

  /* Tags / chips */
  .chip { display:inline-flex; align-items:center; gap:var(--space-6); padding: var(--space-4) var(--space-10); border: 1px solid var(--line-2); border-radius: var(--radius-pill); font-size: var(--text-12); color: var(--ink-2); background: var(--bg); }
  .chip .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--good); }
  body[data-mode="systems"] .chip { border-radius: var(--radius-4); font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.08em; font-size: var(--text-10); }

  /* Cards */
  .card { background: var(--bg); border: 1px solid var(--line); border-radius: var(--radius); }
  body[data-mode="systems"] .card { border-radius: var(--radius-4); }

  /* Marquee */
  .marquee { overflow: hidden; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: var(--space-20) 0; }
  .marquee-track { display: flex; gap: var(--space-80); animation: mq 40s linear infinite; white-space: nowrap; }
  @keyframes mq { from { transform: translateX(0); } to { transform: translateX(-50%); } }
  .logo-bar { height: 24px; min-width: 150px; background: var(--bg-3); border-radius: var(--radius-4); display:inline-flex; align-items:center; justify-content:center; color: var(--muted); font-size: var(--text-10); font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.1em; }

  /* Utility */
  .stack-sm > * + * { margin-top: var(--space-8); }
  .stack-md > * + * { margin-top: var(--space-16); }
  .stack-lg > * + * { margin-top: var(--space-32); }
  .divider { height: 1px; background: var(--line); }
  .mono { font-family: var(--mono); }

  /* Scrollbar subtle */
  ::-webkit-scrollbar { width: 10px; height: 10px; }
  ::-webkit-scrollbar-thumb { background: var(--line-2); border-radius: var(--radius); }
  ::-webkit-scrollbar-track { background: transparent; }

  /* Hero feed */
  @keyframes heroIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
  .hero-feed { flex: 1; overflow-y: auto; padding: var(--space-16); display: flex; flex-direction: column; gap: var(--space-10); scroll-behavior: smooth; }

  /* Reduce motion */
  @media (prefers-reduced-motion: reduce) {
    * { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; }
  }

  /* ––––– Agents / Modules grid ––––– */
  .agents-header {
    display: flex; align-items: flex-end; justify-content: space-between;
    gap: var(--space-40); margin-bottom: var(--space-64);
  }
  .agents-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--space-16);
  }
  .agents-footer {
    margin-top: var(--space-32); font-size: var(--text-11); color: var(--muted);
    text-transform: uppercase; letter-spacing: 0.14em;
    display: flex; gap: var(--space-16);
  }

  /* Module card – Variant E (Glow + Metric Number) */
  .module-card {
    position: relative;
    background: linear-gradient(180deg, var(--bg) 0%, color-mix(in oklab, var(--bg-2), transparent 50%) 100%);
    border: 1px solid var(--line);
    border-radius: var(--radius-16);
    padding: var(--space-24) var(--space-24) var(--space-24);
    min-height: 340px;
    display: flex; flex-direction: column;
    transition: transform .2s ease, border-color .2s ease;
    cursor: pointer;
    overflow: hidden;
  }
  .module-card:hover { transform: translateY(-2px); border-color: var(--line-2); }
  .module-card-arrow {
    position: absolute; top: 22px; right: 22px;
    width: 22px; height: 22px;
    color: var(--ink-3); opacity: 0.55;
    transition: opacity .2s ease, transform .2s ease;
  }
  .module-card:hover .module-card-arrow { opacity: 1; transform: translateX(2px); }
  .module-card-tag {
    font-family: var(--mono); font-size: var(--text-10); letter-spacing: 0.14em; text-transform: uppercase;
    color: var(--muted);
  }
  .module-card-name {
    font-family: var(--sans); font-weight: var(--weight-medium); font-size: var(--text-19);
    line-height: 1.15; letter-spacing: -0.015em;
    margin-top: var(--space-8); max-width: 220px;
  }
  .module-card-blurb {
    margin-top: var(--space-4); font-size: var(--text-13); color: var(--ink-3); line-height: 1.45;
  }
  .module-card-viz {
    flex: 1;
    margin-top: var(--space-20);
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: var(--space-6);
  }
  .module-card-glow {
    width: 150px; height: 150px;
    border-radius: 50%;
    background: radial-gradient(circle at 50% 50%,
      color-mix(in oklab, var(--accent), transparent 55%) 0%,
      color-mix(in oklab, var(--accent), transparent 84%) 38%,
      transparent 70%);
    display: grid; place-items: center;
    position: relative;
  }
  .module-card-glow::before {
    content: "";
    position: absolute; inset: 32%;
    border-radius: 50%;
    background: var(--bg);
    box-shadow: 0 0 20px color-mix(in oklab, var(--accent), transparent 60%);
  }
  .module-card-glyph {
    width: 36px; height: 36px;
    color: var(--accent);
    position: relative; z-index: 2;
  }
  .module-card-metric {
    font-family: var(--sans); font-weight: var(--weight-medium);
    font-size: clamp(28px, 2.6vw, 38px);
    letter-spacing: -0.025em;
    color: var(--ink);
    margin-top: var(--space-8);
    line-height: 1;
  }
  .module-card-metric-lbl {
    font-family: var(--mono); font-size: var(--text-10); letter-spacing: 0.14em; text-transform: uppercase;
    color: var(--muted);
    margin-top: var(--space-6);
  }

  /* Agents – understated group divider above each set of cards */
  .agents-group-label {
    display: flex; align-items: center; gap: var(--space-16);
    margin: 0 0 var(--space-20);
    font-family: var(--mono); font-size: var(--text-11);
    letter-spacing: 0.16em; text-transform: uppercase;
    color: var(--muted);
  }
  .agents-group-label::after {
    content: ""; flex: 1; height: 1px; background: var(--line);
  }
  .agents-grid + .agents-group-label { margin-top: var(--space-48); }

  /* ––––– Testimonial carousel (case section) ––––– */
  .testimonial-carousel { margin-top: var(--space-24); }
  .testimonial-track { display: grid; }
  /* Slides stack in one grid cell. Only the incoming slide animates (fades in);
     the outgoing slide is removed instantly, so quotes never overlap mid-fade. */
  .testimonial-slide {
    grid-area: 1 / 1;
    margin: 0;
    opacity: 0; visibility: hidden;
  }
  .testimonial-slide.is-active {
    opacity: 1; visibility: visible;
    transition: opacity .5s ease;
  }
  .testimonial-quote {
    margin: 0;
    font-family: var(--sans); font-weight: var(--weight-medium);
    font-size: clamp(20px, 2vw, 26px);
    line-height: 1.35; letter-spacing: -0.015em;
    color: var(--ink);
  }
  .testimonial-mark { color: var(--ink-3); }
  .testimonial-meta { margin-top: var(--space-24); }
  .testimonial-role { font-size: var(--text-14); font-weight: var(--weight-medium); color: var(--ink); }
  .testimonial-org { font-size: var(--text-13); color: var(--muted); margin-top: var(--space-2); }
  .testimonial-dots { display: flex; gap: var(--space-8); margin-top: var(--space-32); }
  .testimonial-dot {
    width: 8px; height: 8px; padding: 0;
    border: none; border-radius: 50%; cursor: pointer;
    background: var(--line-2);
    transition: background .2s ease, transform .2s ease;
  }
  .testimonial-dot:hover { background: var(--ink-3); }
  .testimonial-dot.is-active { background: var(--accent); transform: scale(1.15); }

  /* Case metrics – each set (1–3 metrics) syncs with the active testimonial.
     Sets stack in one grid cell; the box sizes to the tallest set and shorter
     sets stretch to fill it, so the column height never jumps on rotation. */
  .case-metrics {
    display: grid;
    border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden;
    background: var(--bg);
  }
  .case-metrics-set {
    grid-area: 1 / 1;
    display: flex; flex-direction: column;
    opacity: 0; visibility: hidden;
  }
  .case-metrics-set.is-active {
    opacity: 1; visibility: visible;
    transition: opacity .5s ease;
  }
  .case-metric {
    flex: 1;
    display: flex; flex-direction: column; justify-content: center;
    padding: var(--space-24) var(--space-32);
  }
  .case-metric + .case-metric { border-top: 1px solid var(--line); }
  .case-metric-big {
    font-family: var(--sans); font-weight: var(--weight-medium); font-size: var(--text-44);
    line-height: 1; letter-spacing: -0.02em; color: var(--ink);
  }
  .case-metric-lbl { margin-top: var(--space-10); color: var(--ink-3); font-size: var(--text-13); }

  /* ––––– Korrektheit section – Manifest LEFT + Sankey RIGHT ––––– */
  #korrektheit { padding: var(--space-120) 0; }
  .kk-head { max-width: 760px; margin-bottom: var(--space-64); }

  /* Full-width chart on top, manifest as a 2×2 grid below it */
  .kk-grid {
    display: flex;
    flex-direction: column;
    gap: var(--space-64);
  }
  .kk-manifest {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    column-gap: var(--space-64);
  }
  .kk-manifest .m-row {
    display: grid;
    grid-template-columns: 88px 1fr;
    gap: var(--space-32);
    align-items: start;
    padding: var(--space-32) 0;
    border-top: 1px solid var(--line);
  }
  .kk-manifest .m-num { padding-top: 0.04em; }
  .kk-manifest .m-row:nth-last-child(-n+2) { border-bottom: 1px solid var(--line); }
  .kk-manifest .m-num {
    font-family: var(--sans); font-weight: var(--weight-medium);
    font-size: var(--text-44); letter-spacing: -0.04em;
    color: var(--accent); line-height: 1;
  }
  .kk-manifest .m-title {
    font-family: var(--sans); font-weight: var(--weight-medium);
    font-size: clamp(20px, 1.8vw, 26px); letter-spacing: -0.02em;
    color: var(--ink); line-height: 1.2;
  }
  .kk-manifest .m-sub {
    margin-top: var(--space-8);
    font-size: var(--text-15); line-height: 1.5; color: var(--ink-2);
    max-width: 460px;
  }

  /* Sankey card – full width, ordered above the manifest */
  .kk-sankey {
    order: -1;
    background: var(--bg);
    border: 1px solid var(--line);
    border-radius: var(--radius-12);
    padding: var(--space-32) var(--space-32) var(--space-32);
  }
  .sk-header {
    display: flex; justify-content: space-between; align-items: baseline;
    margin-bottom: var(--space-16);
    font-family: var(--mono); font-size: var(--text-11); letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted);
  }
  .sk-svg-wrap { width: 100%; }
  .sk-svg { width: 100%; height: auto; display: block; }
  .sk-band { transition: opacity .2s ease; }
  .sk-svg:hover .sk-band { opacity: 0.35; }
  .sk-svg .sk-band:hover { opacity: 0.92; }

  .sk-src-label, .sk-dst-label {
    font-family: var(--mono);
    font-size: var(--text-24);
    letter-spacing: 0.04em;
    fill: var(--ink);
  }
  .sk-src-sub, .sk-dst-sub {
    font-family: var(--mono);
    font-size: var(--text-16);
    letter-spacing: 0.12em;
    fill: var(--muted);
    text-transform: uppercase;
  }
  .sk-dst-pct {
    font-family: var(--sans);
    font-weight: var(--weight-medium);
    font-size: var(--text-48);
    letter-spacing: -0.02em;
  }

  .sk-foot {
    margin-top: var(--space-20);
    padding-top: var(--space-16);
    border-top: 1px solid var(--line);
    display: flex; flex-wrap: wrap; gap: var(--space-16) var(--space-20);
    font-family: var(--mono); font-size: var(--text-11); color: var(--ink-3); letter-spacing: 0.08em;
  }
  .sk-legend-item { display: inline-flex; align-items: center; gap: var(--space-8); }
  .sk-legend-sw { width: 12px; height: 12px; border-radius: var(--radius-4); }

  @media (max-width: 860px) {
    .kk-manifest { grid-template-columns: 1fr; }
    .kk-manifest .m-row:nth-last-child(-n+2) { border-bottom: 0; }
    .kk-manifest .m-row:last-child { border-bottom: 1px solid var(--line); }
  }
  @media (max-width: 600px) {
    .kk-manifest .m-row { grid-template-columns: 60px 1fr; gap: var(--space-16); padding: var(--space-24) 0; }
    .kk-manifest .m-num { font-size: var(--text-32); }
  }
  /* Sankey on mobile — drop the card chrome and bleed the SVG out to the
     viewport edges so labels stay legible. The container's border +
     padding + .wrap inset chew up ~80px of the 390px viewport otherwise,
     leaving the chart unreadable. */
  @media (max-width: 768px) {
    .kk-sankey {
      padding: 0;
      border: 0;
      background: transparent;
      box-shadow: none;
      /* Cancel out the parent .wrap padding so the SVG hits the screen edges. */
      margin-left: calc(-1 * var(--space-24));
      margin-right: calc(-1 * var(--space-24));
    }
    .kk-sankey .sk-header { padding: 0 var(--space-16); margin-bottom: var(--space-12); }
    .sk-svg-wrap {
      overflow-x: auto;
      -webkit-overflow-scrolling: touch;
      padding: 0 var(--space-16);
      scrollbar-width: thin;
    }
    .sk-svg { min-width: 620px; }
    .kk-sankey .sk-foot { padding: var(--space-12) var(--space-16) 0; margin-top: var(--space-12); }
  }
  @media (max-width: 480px) {
    .kk-sankey {
      margin-left: calc(-1 * var(--space-16));
      margin-right: calc(-1 * var(--space-16));
    }
  }

  /* Accuracy banner – Design-Prinzip callout above the agents grid */
  .accuracy-banner {
    display: grid;
    grid-template-columns: 220px 1fr;
    gap: var(--space-32);
    align-items: center;
    margin: var(--space-8) 0 var(--space-40);
    padding: var(--space-24) var(--space-32) var(--space-24) var(--space-24);
    background: linear-gradient(90deg,
      color-mix(in oklab, var(--accent), transparent 94%) 0%,
      color-mix(in oklab, var(--accent), transparent 97%) 50%,
      var(--bg) 100%);
    border-left: 3px solid var(--accent);
    border-radius: 0 var(--radius-12) var(--radius-12) 0;
  }
  .accuracy-banner-tag {
    font-family: var(--mono); font-size: var(--text-11); letter-spacing: 0.16em; text-transform: uppercase;
    color: var(--accent);
  }
  .accuracy-banner-body h3 {
    font-family: var(--sans); font-weight: var(--weight-medium); font-size: var(--text-24); letter-spacing: -0.02em;
    margin: 0; color: var(--ink);
  }
  .accuracy-banner-body p {
    margin: var(--space-8) 0 0; color: var(--ink-2); font-size: var(--text-15); line-height: 1.55; max-width: 720px;
  }
  @media (max-width: 768px) {
    .accuracy-banner { grid-template-columns: 1fr; gap: var(--space-12); padding: var(--space-24) var(--space-24); }
  }

  @media (max-width: 1080px) {
    .agents-header { flex-direction: column; align-items: flex-start; gap: var(--space-20); }
    .agents-grid { grid-template-columns: repeat(2, 1fr); }
  }
  @media (max-width: 540px) {
    .agents-grid { grid-template-columns: 1fr; }
    .module-card:last-child { border-bottom: none; }
  }

  /* ––––– Comparison section (OCR · Hosted Agents · Orcha) ––––– */
  .compare-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-16);
    margin-top: var(--space-64);
  }
  .compare-card {
    background: var(--bg);
    border: 1px solid var(--line);
    border-radius: var(--radius-16);
    padding: var(--space-32) var(--space-24);
    display: flex;
    flex-direction: column;
    position: relative;
  }
  /* Recommended card – a crisp accent outline, in keeping with the site's
     restrained style (no glow / gradient / floating badge). */
  .compare-card.is-orcha {
    border: 1.5px solid var(--accent);
  }
  .compare-card-flag {
    display: inline-flex; align-items: center; gap: var(--space-6);
    font-family: var(--mono); font-size: var(--text-10); letter-spacing: 0.16em; text-transform: uppercase;
    color: var(--accent);
    margin-bottom: var(--space-10);
  }
  .compare-card-flag::before {
    content: ""; width: 5px; height: 5px; border-radius: 50%; background: var(--accent);
  }
  .compare-card-name {
    font-family: var(--sans); font-weight: var(--weight-medium); font-size: var(--text-24);
    letter-spacing: -0.02em; color: var(--ink);
    margin: 0;
  }
  .compare-card-sub {
    font-family: var(--mono); font-size: var(--text-11); letter-spacing: 0.12em;
    text-transform: uppercase; color: var(--muted);
    margin-top: var(--space-8);
  }
  .compare-list {
    list-style: none; margin: var(--space-24) 0 0; padding: 0;
    display: flex; flex-direction: column;
  }
  .compare-list li {
    padding: var(--space-12) 0;
    border-top: 1px solid var(--line);
  }
  .compare-list li:last-child { padding-bottom: 0; }
  .compare-dim {
    font-family: var(--mono); font-size: var(--text-10); letter-spacing: 0.14em; text-transform: uppercase;
    color: var(--muted);
    margin-bottom: var(--space-4);
  }
  .compare-val {
    font-size: var(--text-14); line-height: 1.45; color: var(--ink-2);
  }
  .compare-card.is-orcha .compare-val { color: var(--ink); }
  @media (max-width: 1080px) {
    .compare-grid { grid-template-columns: 1fr; gap: var(--space-12); }
  }

  /* ––––– Implementation timeline (Forward-Deployed Engineers) ––––– */
  .impl-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--space-16);
    margin-top: var(--space-64);
    position: relative;
  }
  .impl-grid::before { content: none; }
  .impl-card {
    background: var(--bg);
    border: 1px solid var(--line);
    border-radius: var(--radius-12);
    padding: var(--space-24) var(--space-24) var(--space-24);
    position: relative;
    z-index: 1;
    display: flex; flex-direction: column;
  }
  .impl-card.is-final {
    border-color: var(--accent);
    background: color-mix(in oklab, var(--accent), transparent 95%);
  }
  .impl-week {
    font-family: var(--mono); font-size: var(--text-10); letter-spacing: 0.16em; text-transform: uppercase;
    color: var(--muted);
  }
  .impl-num {
    width: 40px; height: 40px; border-radius: 50%;
    background: var(--bg); border: 1.5px solid var(--line-2);
    display: grid; place-items: center;
    font-family: var(--sans); font-weight: var(--weight-medium); font-size: var(--text-15);
    color: var(--ink);
    margin: var(--space-16) 0 var(--space-20);
  }
  .impl-card.is-final .impl-num {
    background: var(--accent); border-color: var(--accent); color: var(--accent-ink);
  }
  .impl-title {
    font-family: var(--sans); font-weight: var(--weight-medium); font-size: var(--text-19);
    letter-spacing: -0.015em; color: var(--ink);
  }
  .impl-list {
    list-style: none; padding: 0; margin: var(--space-16) 0 0;
    display: flex; flex-direction: column; gap: var(--space-8);
    font-size: var(--text-14); line-height: 1.45; color: var(--ink-2);
  }
  .impl-list li { padding-left: var(--space-16); position: relative; }
  .impl-list li::before {
    content: ""; position: absolute; left: 0; top: 9px;
    width: 5px; height: 1px; background: var(--ink-3);
  }

  .impl-trust-row {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0;
    margin-top: var(--space-64);
    padding: var(--space-32) 0;
    border-top: 1px solid var(--line);
    border-bottom: 1px solid var(--line);
  }
  .impl-trust-item {
    padding: 0 var(--space-32);
    border-right: 1px solid var(--line);
  }
  .impl-trust-item:last-child { border-right: 0; }
  .impl-trust-item:first-child { padding-left: 0; }
  .impl-trust-val {
    font-family: var(--sans); font-weight: var(--weight-medium); font-size: var(--text-16);
    letter-spacing: -0.015em; color: var(--ink);
  }
  .impl-trust-key {
    font-family: var(--mono); font-size: var(--text-10); letter-spacing: 0.12em; text-transform: uppercase;
    color: var(--muted); margin-top: var(--space-6);
  }

  @media (max-width: 1080px) {
    .impl-grid { grid-template-columns: repeat(2, 1fr); }
    .impl-grid::before { display: none; }
    .impl-trust-row { grid-template-columns: repeat(2, 1fr); gap: var(--space-24) 0; }
    .impl-trust-item:nth-child(2) { border-right: 0; }
    .impl-trust-item:nth-child(3) { padding-left: 0; border-right: 1px solid var(--line); }
  }
  @media (max-width: 540px) {
    .impl-grid { grid-template-columns: 1fr; }
    .impl-trust-row { grid-template-columns: 1fr; }
    .impl-trust-item { padding: 0; border-right: 0; border-bottom: 1px solid var(--line); padding-bottom: var(--space-16); }
    .impl-trust-item:last-child { border-bottom: 0; }
  }

  /* ––––– Variant divider (used for A/B variations to compare) ––––– */
  .variant-divider {
    margin: var(--space-80) 0 var(--space-32);
    display: flex;
    align-items: center;
    gap: var(--space-16);
  }
  .variant-divider-label {
    font-family: var(--mono);
    font-size: var(--text-11);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--accent);
    flex-shrink: 0;
  }
  .variant-divider-name {
    font-family: var(--sans);
    font-size: var(--text-14);
    color: var(--ink-2);
    flex-shrink: 0;
  }
  .variant-divider-rule {
    flex: 1;
    height: 1px;
    background: var(--line);
  }

  /* ––––– Agents · Variante A – Reduzierte Karten ––––– */
  .agents-grid-min {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    border: 1px solid var(--line);
    border-radius: var(--radius-12);
    overflow: hidden;
    background: var(--bg);
  }
  .module-card-min {
    padding: var(--space-24) var(--space-24) var(--space-24);
    background: var(--bg);
    color: var(--ink);
    transition: background .25s, color .25s;
    cursor: pointer;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    min-height: 200px;
  }
  .module-card-min:not(:nth-child(4n)) { border-right: 1px solid var(--line); }
  .module-card-min:nth-child(-n+4) { border-bottom: 1px solid var(--line); }
  .module-card-min:hover { background: var(--ink); color: var(--bg); }
  .module-min-tag {
    font-family: var(--mono);
    font-size: var(--text-11);
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--muted);
    transition: color .25s;
  }
  .module-card-min:hover .module-min-tag,
  .module-card-min:hover .module-min-key {
    color: color-mix(in oklab, var(--bg), transparent 40%);
  }
  .module-min-name {
    font-family: var(--sans);
    font-weight: var(--weight-medium);
    font-size: var(--text-24);
    letter-spacing: -0.015em;
    line-height: 1.1;
    margin-top: var(--space-24);
  }
  .module-min-metric { margin-top: var(--space-24); }
  .module-min-val {
    font-family: var(--sans);
    font-weight: var(--weight-medium);
    font-size: var(--text-24);
    letter-spacing: -0.01em;
    line-height: 1;
  }
  .module-min-key {
    font-family: var(--mono);
    font-size: var(--text-10);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--muted);
    margin-top: var(--space-6);
  }

  /* ––––– Agents · Variante B – Verzeichnis-Liste ––––– */
  .agents-list {
    border: 1px solid var(--line);
    border-radius: var(--radius-12);
    overflow: hidden;
    background: var(--bg);
  }
  .agents-list-row {
    display: grid;
    grid-template-columns: 84px 22px 200px 1fr 160px 16px;
    gap: var(--space-24);
    align-items: center;
    padding: var(--space-20) var(--space-32);
    border-bottom: 1px solid var(--line);
    transition: background .2s, padding-left .2s;
    cursor: pointer;
    color: var(--ink);
  }
  .agents-list-row:last-child { border-bottom: 0; }
  .agents-list-row:hover {
    background: var(--bg-2);
    padding-left: var(--space-32);
  }
  .agents-list-tag {
    font-family: var(--mono);
    font-size: var(--text-11);
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--muted);
  }
  .agents-list-icon { color: var(--ink-3); display: inline-flex; }
  .agents-list-name {
    font-family: var(--sans);
    font-size: var(--text-16);
    font-weight: var(--weight-medium);
    letter-spacing: -0.005em;
  }
  .agents-list-tagline {
    font-size: var(--text-13);
    color: var(--ink-2);
  }
  .agents-list-metric {
    font-family: var(--mono);
    font-size: var(--text-13);
    color: var(--ink);
    font-weight: var(--weight-medium);
    text-align: right;
  }
  .agents-list-arrow {
    font-family: var(--mono);
    color: var(--muted);
    font-size: var(--text-14);
    text-align: right;
  }

  @media (max-width: 1100px) {
    .agents-list-row { grid-template-columns: 70px 22px 1fr 130px 16px; gap: var(--space-20); }
    .agents-list-row > .agents-list-tagline { display: none; }
  }
  @media (max-width: 700px) {
    .agents-grid-min { grid-template-columns: repeat(2, 1fr); }
    .module-card-min:nth-child(2n) { border-right: 0; }
    .module-card-min:nth-last-child(-n+2) { border-bottom: 0; }
    .agents-list-row { grid-template-columns: 60px 1fr 90px; gap: var(--space-12); padding: var(--space-16) var(--space-20); }
    .agents-list-row > .agents-list-icon,
    .agents-list-row > .agents-list-arrow { display: none; }
  }

  /* ––––– Workflow · Variante A – Trace-Liste ––––– */
  .trace-list {
    border: 1px solid var(--line);
    border-radius: var(--radius-12);
    overflow: hidden;
    background: var(--bg);
  }
  .trace-row {
    display: grid;
    grid-template-columns: 56px 180px 1fr 80px;
    gap: var(--space-24);
    align-items: center;
    padding: var(--space-24) var(--space-32);
    border-bottom: 1px solid var(--line);
    transition: background .2s;
  }
  .trace-row:last-child { border-bottom: 0; }
  .trace-row:hover { background: var(--bg-2); }
  .trace-num {
    font-family: var(--mono);
    font-size: var(--text-11);
    letter-spacing: 0.18em;
    color: var(--accent);
    text-transform: uppercase;
  }
  .trace-name {
    font-family: var(--sans);
    font-size: var(--text-19);
    font-weight: var(--weight-medium);
    letter-spacing: -0.01em;
    color: var(--ink);
  }
  .trace-event {
    font-family: var(--mono);
    font-size: var(--text-13);
    color: var(--ink-2);
    letter-spacing: 0.01em;
    line-height: 1.4;
  }
  .trace-event .ck { color: var(--good); margin-right: var(--space-4); }
  .trace-time {
    font-family: var(--mono);
    font-size: var(--text-12);
    color: var(--muted);
    text-align: right;
    letter-spacing: 0.06em;
  }

  /* ––––– Workflow · Variante B – Stage-Karten ––––– */
  .stage-cards-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--space-16);
  }
  .stage-card {
    padding: var(--space-32) var(--space-24) var(--space-24);
    background: var(--bg);
    border: 1px solid var(--line);
    border-radius: var(--radius-12);
    display: flex;
    flex-direction: column;
    min-height: 220px;
    position: relative;
    transition: border-color .25s, transform .25s;
  }
  .stage-card:hover {
    border-color: var(--line-2);
    transform: translateY(-2px);
  }
  .stage-card-tag {
    font-family: var(--mono);
    font-size: var(--text-11);
    letter-spacing: 0.18em;
    color: var(--accent);
    text-transform: uppercase;
  }
  .stage-card-name {
    font-family: var(--sans);
    font-size: var(--text-24);
    font-weight: var(--weight-medium);
    letter-spacing: -0.015em;
    margin-top: var(--space-8);
    line-height: 1.1;
    color: var(--ink);
  }
  .stage-card-element {
    margin-top: auto;
    padding: var(--space-16) 0;
    font-family: var(--mono);
    font-size: var(--text-13);
    color: var(--ink);
    letter-spacing: 0.02em;
    line-height: 1.45;
  }
  .stage-card-element .pill {
    display: inline-flex;
    align-items: center;
    gap: var(--space-6);
    padding: var(--space-4) var(--space-10);
    border-radius: var(--radius-pill);
    background: color-mix(in oklab, var(--good), transparent 90%);
    border: 1px solid color-mix(in oklab, var(--good), transparent 60%);
    color: var(--good);
    font-size: var(--text-11);
    letter-spacing: 0.1em;
    text-transform: uppercase;
  }
  .stage-card-element .pill .dot {
    width: 6px; height: 6px; border-radius: 50%;
    background: currentColor;
  }
  .stage-card-meta {
    margin-top: var(--space-16);
    padding-top: var(--space-16);
    border-top: 1px dashed var(--line-2);
    font-family: var(--mono);
    font-size: var(--text-11);
    letter-spacing: 0.1em;
    color: var(--muted);
    display: flex;
    justify-content: space-between;
  }
  /* Connector arrows between cards (desktop) */
  .stage-card:not(:last-child)::after {
    content: "→";
    position: absolute;
    right: -16px;
    top: 50%;
    transform: translateY(-50%);
    font-family: var(--mono);
    color: var(--line-2);
    font-size: var(--text-14);
    z-index: 1;
    pointer-events: none;
  }

  @media (max-width: 900px) {
    .trace-row { grid-template-columns: 40px 1fr; gap: var(--space-12); padding: var(--space-16) var(--space-20); }
    .trace-row > .trace-time { grid-column: 2; text-align: left; }
    .trace-row > .trace-event { grid-column: 2; }
    .trace-row > .trace-name { grid-column: 2; }
    .stage-cards-grid { grid-template-columns: repeat(2, 1fr); }
    .stage-card:not(:last-child)::after { display: none; }
  }
  @media (max-width: 540px) {
    .stage-cards-grid { grid-template-columns: 1fr; }
  }

  /* ––––– Workflow section ––––– */
  /* Workflow section now uses tabbed layout – old sticky-scroll rules removed.
     Section padding is set inline on the element itself. */
  .workflow-sticky-DEAD {
    position: sticky;
    top: 64px;
    height: calc(100vh - 64px);
    display: flex;
    align-items: center;
    border-top: 1px solid var(--line);
    overflow: hidden;
  }
  .workflow-grid {
    display: grid;
    grid-template-columns: 0.9fr 1.3fr;
    gap: var(--space-80);
    align-items: center;
    width: 100%;
  }
  .workflow-step-row {
    position: relative;
    padding: var(--space-16) 0 var(--space-16) var(--space-20);
    border-top: 1px solid var(--line);
    display: grid;
    grid-template-columns: 60px 1fr;
    align-items: start;
    opacity: 0.4;
    transition: opacity .3s;
  }
  .workflow-step-row::before {
    content: "";
    position: absolute;
    left: 0; top: 16px; bottom: 16px;
    width: 2px;
    background: transparent;
    transition: background .3s;
  }
  .workflow-step-row.is-active {
    opacity: 1;
  }
  .workflow-step-row.is-active::before {
    background: var(--ink);
  }
  .workflow-cta {
    margin-top: var(--space-32);
    display: inline-flex;
    align-items: center;
    gap: var(--space-8);
    padding: var(--space-10) var(--space-16);
    border: 1px solid var(--line-2);
    border-radius: var(--radius-pill);
    font-family: var(--mono);
    font-size: var(--text-12);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--ink);
    background: var(--bg);
    transition: background .2s, border-color .2s, transform .2s;
  }
  .workflow-cta:hover {
    background: var(--ink);
    color: var(--bg);
    border-color: var(--ink);
    transform: translateY(-1px);
  }
  .workflow-cta-arrow { font-family: var(--mono); }
  .workflow-step-num {
    font-family: var(--mono);
    font-size: var(--text-11);
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: 0.16em;
    padding-top: var(--space-4);
  }
  .workflow-step-title {
    font-family: var(--sans);
    font-weight: var(--weight-medium);
    font-size: var(--text-24);
    letter-spacing: -0.01em;
    line-height: 1.1;
  }
  .workflow-step-body {
    margin-top: var(--space-6);
    color: var(--ink-2);
    font-size: var(--text-14);
    max-width: 460px;
  }

  /* Invoice panel */
  .inv-panel { overflow: hidden; }
  .inv-panel-header {
    padding: var(--space-16) var(--space-20);
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-bottom: 1px solid var(--line);
    background: var(--bg-2);
  }
  .inv-panel-status {
    font-family: var(--mono);
    font-size: var(--text-11);
    transition: color .4s;
  }
  .inv-panel-body {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    min-height: 360px;
  }
  .inv-doc {
    position: relative;
    padding: var(--space-24);
    border-right: 1px solid var(--line);
  }
  /* Diagonal stamp overlay (phase 3 + 4) */
  .inv-stamp {
    position: absolute;
    top: 38%; left: 50%;
    transform: translate(-50%, -50%) rotate(-10deg) scale(0.92);
    font-family: var(--sans);
    font-weight: var(--weight-semibold);
    font-size: var(--text-32);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    border: 2.5px solid var(--good);
    color: var(--good);
    padding: var(--space-6) var(--space-16);
    border-radius: var(--radius-4);
    background: color-mix(in oklab, var(--bg), transparent 30%);
    backdrop-filter: blur(1px);
    opacity: 0;
    pointer-events: none;
    transition: opacity .35s ease, transform .45s cubic-bezier(.2,.8,.2,1.2);
    white-space: nowrap;
    z-index: 4;
  }
  .inv-stamp.is-visible {
    opacity: 0.92;
    transform: translate(-50%, -50%) rotate(-10deg) scale(1);
  }
  /* 3-Way match strip (phase 2+) */
  .inv-match-strip {
    border-radius: var(--radius-4);
    border: 1px dashed color-mix(in oklab, var(--good), transparent 55%);
    background: color-mix(in oklab, var(--good), transparent 92%);
    display: grid;
    grid-template-columns: 1fr 1fr 1fr auto;
    gap: var(--space-12);
    font-family: var(--mono);
    font-size: var(--text-11);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--good);
    align-items: center;
    opacity: 0;
    max-height: 0;
    margin-top: 0;
    padding: 0 var(--space-16);
    overflow: hidden;
    transition: opacity .35s ease, max-height .4s ease, margin-top .4s ease, padding .4s ease;
  }
  .inv-match-strip.is-visible {
    opacity: 1;
    max-height: 80px;
    margin-top: var(--space-20);
    padding: var(--space-12) var(--space-16);
  }
  .inv-match-cell { display: flex; align-items: center; gap: var(--space-6); }
  .inv-match-cell .ck { color: var(--good); font-weight: var(--weight-semibold); }
  .inv-match-score {
    font-weight: var(--weight-semibold);
    color: var(--good);
    padding-left: var(--space-12);
    border-left: 1px solid color-mix(in oklab, var(--good), transparent 60%);
  }
  /* GL receipt footer (phase 4) */
  .inv-gl-footer {
    border: 1px solid var(--line-2);
    border-radius: var(--radius-4);
    background: var(--bg);
    font-family: var(--mono);
    font-size: var(--text-11);
    color: var(--ink-2);
    opacity: 0;
    max-height: 0;
    margin-top: 0;
    padding: 0 var(--space-16);
    overflow: hidden;
    transition: opacity .35s ease, max-height .4s ease, margin-top .4s ease, padding .4s ease;
  }
  .inv-gl-footer.is-visible {
    opacity: 1;
    max-height: 80px;
    margin-top: var(--space-16);
    padding: var(--space-12) var(--space-16);
  }
  .inv-gl-footer-line {
    display: flex;
    justify-content: space-between;
    padding: var(--space-4) 0;
  }
  .inv-gl-footer-line .k {
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-size: var(--text-10);
  }
  .inv-doc-name {
    font-family: var(--sans);
    font-weight: var(--weight-medium);
    font-size: var(--text-24);
    letter-spacing: -0.01em;
  }
  .inv-doc-date {
    font-family: var(--mono);
    font-size: var(--text-10);
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: 0.14em;
    margin-top: var(--space-4);
  }
  .inv-fields {
    margin-top: var(--space-24);
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-12);
    font-size: var(--text-12);
  }
  .inv-field {
    padding: var(--space-8) var(--space-10);
    border-radius: var(--radius-4);
    border: 1px solid var(--line);
    background: var(--bg-2);
    transition: background .4s, border-color .4s;
  }
  .inv-field.is-hot {
    background: color-mix(in oklab, var(--ink), transparent 92%);
    border-color: var(--ink);
  }
  .inv-field-key {
    font-family: var(--mono);
    font-size: var(--text-10);
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--muted);
  }
  .inv-field-val {
    font-family: var(--mono);
    margin-top: var(--space-2);
    font-size: var(--text-13);
  }
  .inv-total {
    margin-top: var(--space-32);
    padding-top: var(--space-20);
    border-top: 1px solid var(--line);
    display: flex;
    justify-content: space-between;
    align-items: baseline;
  }
  .inv-total-key {
    font-family: var(--mono);
    font-size: var(--text-11);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--muted);
  }
  .inv-total-val {
    font-family: var(--sans);
    font-weight: var(--weight-medium);
    font-size: var(--text-24);
    letter-spacing: -0.01em;
    color: var(--ink);
  }
  .inv-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: var(--space-20);
    font-size: var(--text-12);
  }
  .inv-table thead tr {
    text-align: left;
    color: var(--muted);
    font-family: var(--mono);
    font-size: var(--text-10);
    text-transform: uppercase;
    letter-spacing: 0.14em;
  }
  .inv-table thead th {
    padding: var(--space-6) 0;
    border-bottom: 1px solid var(--line);
  }
  .inv-table thead th.right { text-align: right; }
  .inv-table td {
    padding: var(--space-10) 0;
    border-bottom: 1px solid var(--line);
  }
  .inv-table td.right { text-align: right; }
  .inv-reasoning {
    padding: var(--space-24);
    background: var(--bg-2);
  }
  .inv-reasoning-label {
    font-family: var(--mono);
    font-size: var(--text-10);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--muted);
  }
  .inv-reasoning-steps {
    margin-top: var(--space-16);
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
  }
  .reasoning-group {
    display: flex;
    flex-direction: column;
    gap: var(--space-8);
    padding: var(--space-8) 0;
    border-top: 1px solid var(--line);
    transition: opacity .3s;
  }
  .reasoning-group:first-child { border-top: 0; padding-top: 0; }
  .reasoning-group.is-future { opacity: 0.35; }
  .reasoning-group-label {
    font-family: var(--mono);
    font-size: var(--text-10);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--muted);
    display: flex;
    align-items: center;
    gap: var(--space-8);
  }
  .reasoning-group.is-active .reasoning-group-label { color: var(--ink); }
  .reasoning-group.is-prev .reasoning-group-label { color: var(--ink-3); }
  .reasoning-group-label::after {
    content: "";
    flex: 1;
    height: 1px;
    background: var(--line);
  }
  .reasoning-step {
    display: flex;
    align-items: center;
    gap: var(--space-10);
    font-size: var(--text-12);
    color: var(--muted);
    transition: color .3s;
  }
  .reasoning-step.is-done {
    color: var(--ink);
  }
  .reasoning-dot {
    flex-shrink: 0;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    border: 1.5px solid var(--line-2);
    background: transparent;
    color: var(--bg);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: all .3s;
  }
  .reasoning-step.is-done .reasoning-dot {
    border-color: var(--ink);
    background: var(--ink);
  }
  .reasoning-step.is-active .reasoning-dot {
    box-shadow: 0 0 0 4px color-mix(in oklab, var(--ink), transparent 85%);
  }
  .reasoning-dot-check {
    display: none;
  }
  .reasoning-step.is-done .reasoning-dot-check {
    display: block;
  }
  .reasoning-step-label {
    font-family: var(--mono);
    font-size: var(--text-12);
  }
  .inv-progress {
    margin-top: var(--space-24);
  }
  .inv-progress-track {
    height: 3px;
    background: var(--bg-3);
    border-radius: var(--radius-2);
  }
  .inv-progress-bar {
    height: 100%;
    background: var(--ink);
    border-radius: var(--radius-2);
    transition: width .6s ease;
  }
  .inv-progress-times {
    font-family: var(--mono);
    font-size: var(--text-10);
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: 0.14em;
    margin-top: var(--space-8);
    display: flex;
    justify-content: space-between;
  }

  @media (max-width: 900px) {
    .workflow-grid { grid-template-columns: 1fr; gap: var(--space-32); }
    .inv-panel-body { grid-template-columns: 1fr; }
    .inv-doc { border-right: none; border-bottom: 1px solid var(--line); }
    .workflow-sticky { height: auto; position: relative; top: auto; padding: var(--space-40) 0; }
    #workflow { min-height: auto; }
    .inv-match-strip { grid-template-columns: 1fr 1fr; }
    .inv-match-score { border-left: 0; padding-left: 0; grid-column: 1 / -1; }
  }

  /* ––––– Ablauf section (Reise einer Rechnung – kreditoren.html) ––––– */
  .ablauf-stats {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    border: 1px solid var(--line);
    border-radius: var(--radius-12);
    overflow: hidden;
    background: var(--bg);
    margin: var(--space-40) 0 var(--space-32);
  }

  /* Sticky progress bar – anchored at viewport bottom while inside the rail,
     scrolls up with the section when reaching its end (position: sticky).
     Hidden until step 1 actually enters view; ablauf.js toggles .is-active. */
  .ablauf-progress {
    position: sticky;
    bottom: 0;
    background: var(--bg);
    color: var(--ink);
    border-top: 1px solid var(--line);
    padding: var(--space-16) 0 var(--space-16);
    z-index: 5;
    box-shadow: 0 -8px 24px -10px rgba(0,0,0,0.08);
    opacity: 0;
    transform: translateY(8px);
    pointer-events: none;
    transition: opacity .35s ease, transform .35s ease;
  }
  .ablauf-progress.is-active {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
  }
  .ap-inner {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 var(--space-32);
  }
  .ap-top {
    display: flex; justify-content: space-between; align-items: baseline;
    gap: var(--space-24);
    margin-bottom: var(--space-10);
  }
  .ap-step { display: flex; align-items: baseline; gap: var(--space-16); min-width: 0; }
  .ap-step-num {
    font-family: var(--mono); font-size: var(--text-11); letter-spacing: 0.14em; text-transform: uppercase;
    color: var(--muted);
    font-variant-numeric: tabular-nums;
    flex-shrink: 0;
  }
  .ap-step-of { color: var(--ink-3); }
  .ap-step-name {
    font-family: var(--sans); font-weight: var(--weight-medium); font-size: var(--text-16);
    letter-spacing: -0.01em; color: var(--ink);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  .ap-scale {
    font-family: var(--mono); font-size: var(--text-11); letter-spacing: 0.14em; text-transform: uppercase;
    color: var(--muted); flex-shrink: 0;
  }
  .ap-bar {
    height: 6px;
    background: var(--bg-3);
    border-radius: var(--radius-pill); overflow: hidden;
    margin: var(--space-8) 0 var(--space-16);
  }
  .ap-fill {
    height: 100%;
    background: var(--accent);
    border-radius: var(--radius-pill);
    transition: width .4s ease;
    min-width: 4px;
  }
  .ap-metrics {
    display: flex; gap: var(--space-40);
    flex-wrap: wrap;
  }
  .ap-metric {
    display: inline-flex; flex-direction: column;
  }
  .ap-metric .val {
    font-family: var(--sans); font-weight: var(--weight-medium);
    font-size: var(--text-24); letter-spacing: -0.02em; color: var(--ink);
    font-variant-numeric: tabular-nums; line-height: 1;
  }
  .ap-metric .val.accent { color: var(--accent); }
  .ap-metric .lbl {
    font-family: var(--mono); font-size: var(--text-10); letter-spacing: 0.12em; text-transform: uppercase;
    color: var(--muted); margin-top: var(--space-6);
  }

  @media (max-width: 768px) {
    .ablauf-progress { padding: var(--space-10) 0 var(--space-12); }
    .ap-inner { padding: 0 var(--space-20); }
    .ap-top { flex-direction: row; gap: var(--space-8); align-items: baseline; flex-wrap: wrap; }
    /* Drop "03 / 12" prefix and the "per 100 invoices" scale — too crowded
       on mobile; the step name carries the meaning. */
    .ap-step-num,
    .ap-scale { display: none; }
    .ap-step-name { font-size: var(--text-15); }
    .ap-bar { margin: var(--space-6) 0 var(--space-10); }
    /* Drop the cumulative "time saved" metric on mobile — €-values are the
       useful number, the minute count fights for limited horizontal space. */
    .ap-metrics > .ap-metric:first-child { display: none; }
    .ap-metric .val { font-size: var(--text-19); }
    .ap-metric .lbl { font-size: var(--text-10); }
    .ap-metrics { gap: var(--space-24); }
  }
  @media (prefers-reduced-motion: reduce) {
    .ap-fill { transition: none; }
  }
  .ablauf-stat {
    padding: var(--space-32) var(--space-32);
    text-align: center;
    border-right: 1px solid var(--line);
    background: var(--bg);
  }
  .ablauf-stat:last-child { border-right: 0; }
  .ablauf-stat-big {
    font-family: var(--sans);
    font-weight: var(--weight-medium);
    font-size: var(--text-44);
    letter-spacing: -0.02em;
    line-height: 1;
    color: var(--ink);
  }
  .ablauf-stat-label {
    font-family: var(--mono);
    font-size: var(--text-11);
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--muted);
    margin-top: var(--space-16);
  }

  /* ───── Vertical rail layout ─────
     Rail = sticky aside on left, full viewport height.
     Content = pinned-stage sections on the right. */
  .ablauf-layout {
    display: grid;
    grid-template-columns: 220px 1fr;
    align-items: start;
    position: relative;
  }
  .ablauf-content { min-width: 0; }
  .ablauf-rail-vertical {
    position: sticky;
    top: 64px; /* below nav */
    height: calc(100vh - 64px);
    background: var(--bg);
    z-index: 5;
    padding: var(--space-32) var(--space-24);
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
  .ablauf-rail-track {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: var(--space-6);
    position: relative;
    flex: 1;
    max-height: 600px; /* don't stretch nodes too far apart on tall screens */
    margin: 0 auto;
  }
  /* Connecting vertical line through node centers */
  .ablauf-rail-track::before {
    content: "";
    position: absolute;
    left: 14px;
    top: 14px;
    bottom: 14px;
    width: 1px;
    background: var(--line-2);
    z-index: 0;
  }
  .ablauf-rail-node {
    display: flex;
    align-items: center;
    gap: var(--space-16);
    position: relative;
    z-index: 1;
    text-decoration: none;
    color: inherit;
    cursor: pointer;
    padding: var(--space-2) 0;
  }
  .ablauf-rail-num {
    width: 28px; height: 28px;
    border-radius: 50%;
    border: 1.5px solid var(--line-2);
    background: var(--bg);
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--mono);
    font-size: var(--text-11);
    font-weight: var(--weight-medium);
    color: var(--ink-3);
    flex-shrink: 0;
    transition: all .3s ease;
  }
  .ablauf-rail-node:hover .ablauf-rail-num {
    border-color: var(--ink);
    color: var(--ink);
  }
  .ablauf-rail-node.is-done .ablauf-rail-num {
    background: var(--ink-3);
    border-color: var(--ink-3);
    color: var(--bg);
  }
  .ablauf-rail-node.is-active .ablauf-rail-num {
    background: var(--ink);
    border-color: var(--ink);
    color: var(--bg);
    transform: scale(1.18);
    box-shadow: 0 0 0 4px color-mix(in oklab, var(--ink), transparent 86%);
  }
  .ablauf-rail-name {
    font-family: var(--mono);
    font-size: var(--text-10);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--muted);
    text-align: left;
    line-height: 1.3;
    white-space: nowrap;
    transition: color .25s ease, font-weight .25s ease, transform .25s ease;
  }
  .ablauf-rail-node.is-done .ablauf-rail-name { color: var(--ink-3); }
  .ablauf-rail-node:hover .ablauf-rail-name { color: var(--ink); }
  .ablauf-rail-node.is-active .ablauf-rail-name {
    color: var(--ink);
    font-weight: var(--weight-semibold);
    transform: translateX(4px);
  }

  /* Scroll-driven step sections */
  .ablauf-stage {
    padding-top: var(--space-24);
  }
  .ablauf-step-section {
    padding: var(--space-64) 0;
    border-top: 1px solid var(--line);
    opacity: 0.32;
    transform: translateY(28px);
    transition: opacity .55s ease, transform .55s ease;
    scroll-margin-top: var(--space-120); /* nav 64 + rail ~76 */
  }
  .ablauf-step-section:first-child { border-top: 0; }
  .ablauf-step-section.is-in-view {
    opacity: 1;
    transform: translateY(0);
  }
  .ablauf-step-section-grid {
    display: grid;
    grid-template-columns: 180px 1fr;
    gap: var(--space-40);
    align-items: start;
  }
  .ablauf-step-section-head {
    position: sticky;
    top: 168px; /* below sticky rail */
    align-self: start;
  }
  .ablauf-step-section-num {
    font-family: var(--mono);
    font-size: var(--text-12);
    letter-spacing: 0.18em;
    color: var(--accent);
    text-transform: uppercase;
  }
  .ablauf-step-section-title {
    font-family: var(--sans);
    font-size: var(--text-32);
    font-weight: var(--weight-medium);
    letter-spacing: -0.015em;
    line-height: 1.15;
    margin-top: var(--space-10);
    color: var(--ink);
  }
  .ablauf-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-16);
  }
  .ablauf-cards.cols-2 { grid-template-columns: repeat(2, 1fr); }
  .ablauf-cards.cols-4 { grid-template-columns: repeat(2, 1fr); }
  .ablauf-card {
    padding: var(--space-24) var(--space-24);
    background: var(--bg);
    border: 1px solid var(--line);
    border-radius: var(--radius-12);
  }
  .ablauf-card-title {
    font-family: var(--sans);
    font-size: var(--text-14);
    font-weight: var(--weight-medium);
    letter-spacing: -0.005em;
    margin-bottom: var(--space-6);
    color: var(--ink);
  }
  .ablauf-card-body {
    font-size: var(--text-13);
    color: var(--ink-2);
    line-height: 1.5;
  }

  .ablauf-tags {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-32);
    margin-top: var(--space-64);
  }
  .ablauf-tag-col-label {
    font-family: var(--mono);
    font-size: var(--text-11);
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--muted);
    margin-bottom: var(--space-16);
  }
  .ablauf-tag-list { display: flex; flex-direction: column; gap: var(--space-8); }
  .ablauf-tag {
    padding: var(--space-10) var(--space-16);
    border: 1px solid var(--line);
    border-radius: var(--radius-8);
    background: var(--bg);
    font-family: var(--mono);
    font-size: var(--text-12);
    color: var(--ink-2);
    letter-spacing: 0.02em;
  }
  .ablauf-tag.is-accent {
    border-color: color-mix(in oklab, var(--accent), transparent 65%);
    background: color-mix(in oklab, var(--accent), transparent 94%);
    color: var(--accent);
  }
  .ablauf-tag.is-dashed {
    border-style: dashed;
    color: var(--muted);
  }

  @media (max-width: 900px) {
    .ablauf-stats { grid-template-columns: repeat(2, 1fr); }
    .ablauf-stat { border-bottom: 1px solid var(--line); }
    .ablauf-stat:nth-child(even) { border-right: 0; }
    .ablauf-stat:nth-last-child(-n+2) { border-bottom: 0; }
    /* Layout: hide vertical rail, content takes full width */
    .ablauf-layout { grid-template-columns: 1fr; }
    .ablauf-rail-vertical { display: none; }
    .ablauf-cards,
    .ablauf-cards.cols-2,
    .ablauf-cards.cols-4 { grid-template-columns: 1fr; }
    .ablauf-tags { grid-template-columns: 1fr; gap: var(--space-32); }
  }

  /* ––––– Hero (full-screen, kanban at bottom – fits exactly in viewport) ––––– */
  .hero-full {
    height: calc(100vh - 64px); /* viewport minus nav – fixed, not min */
    min-height: 600px;          /* graceful overflow on tiny viewports */
    display: flex;
    flex-direction: column;
    border-top: 0;
    padding: 0 !important;
    overflow: hidden;
  }
  .hero-full .wrap {
    width: 100%;
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
  }
  .hero-top {
    flex: 0 0 auto;
    padding-top: var(--space-24);
    display: flex;
    align-items: center;
    gap: var(--space-12);
    justify-content: center;
  }
  .hero-center {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: var(--space-24) 0;
    gap: var(--space-20);
  }
  .hero-center h1 { margin: 0; max-width: 1000px; }
  .hero-center .lede { margin: 0; max-width: 720px; }
  .hero-ctas {
    display: flex;
    gap: var(--space-10);
    justify-content: center;
    margin-top: var(--space-4);
  }
  .hero-pipeline {
    flex: 0 0 auto;
    padding-bottom: 0;
    min-height: 0;
  }

  /* ––––– Hero dotted backdrop: intense at the left + right edges, subtle in the middle ––––– */
  .hero-full,
  .product-hero,
  .hero-dots { position: relative; isolation: isolate; overflow: hidden; }
  .hero-full > .wrap,
  .product-hero > .wrap,
  .hero-dots > .wrap { position: relative; z-index: 1; }
  .hero-full::before,
  .hero-full::after,
  .product-hero::before,
  .product-hero::after,
  .hero-dots::before,
  .hero-dots::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 0;
  }
  /* Base dot field – always present across the whole hero, subtle. */
  .hero-full::before,
  .product-hero::before,
  .hero-dots::before {
    background-image: radial-gradient(circle, rgba(17, 17, 17, 0.14) 1px, transparent 1.6px);
    background-size: 22px 22px;
    background-position: 0 0;
  }
  /* Brighter dot field – masked into two static bright zones at the left + right edges,
     fading toward the center so the middle reads as the base subtle field only */
  .hero-full::after,
  .product-hero::after,
  .hero-dots::after {
    background-image: radial-gradient(circle, rgba(17, 17, 17, 0.42) 1px, transparent 1.6px);
    background-size: 22px 22px;
    background-position: 0 0;
    -webkit-mask-image:
      radial-gradient(ellipse 50% 100% at 0%   50%, rgba(0,0,0,1) 0%, rgba(0,0,0,0) 100%),
      radial-gradient(ellipse 50% 100% at 100% 50%, rgba(0,0,0,1) 0%, rgba(0,0,0,0) 100%);
            mask-image:
      radial-gradient(ellipse 50% 100% at 0%   50%, rgba(0,0,0,1) 0%, rgba(0,0,0,0) 100%),
      radial-gradient(ellipse 50% 100% at 100% 50%, rgba(0,0,0,1) 0%, rgba(0,0,0,0) 100%);
    -webkit-mask-repeat: no-repeat, no-repeat;
            mask-repeat: no-repeat, no-repeat;
    -webkit-mask-size: 100% 100%, 100% 100%;
            mask-size: 100% 100%, 100% 100%;
    -webkit-mask-composite: source-over;
            mask-composite: add;
  }

  /* On product heroes the section is denser with stats – make the dots more subtle */
  .product-hero::before {
    background-image: radial-gradient(circle, rgba(17, 17, 17, 0.06) 1px, transparent 1.6px);
  }
  .product-hero::after {
    background-image: radial-gradient(circle, rgba(17, 17, 17, 0.18) 1px, transparent 1.6px);
  }

  /* ––––– Hero pipeline (kanban) – ported from m1-D-conveyor ––––– */
  .pipeline-wrap {
    border: 1px solid var(--line);
    border-bottom: 0;
    border-radius: var(--radius-12) var(--radius-12) 0 0; /* flush with next section at bottom */
    overflow: hidden;
    background: var(--bg);
    box-shadow:
      0 1px 2px rgba(0, 0, 0, 0.04),
      0 10px 24px -6px rgba(0, 0, 0, 0.08),
      0 24px 48px -12px rgba(0, 0, 0, 0.10);
  }
  .pipeline-header {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    background: var(--bg-2);
    border-bottom: 1px solid var(--line);
  }
  .pipeline-stage-head {
    padding: var(--space-12) var(--space-16);
    font-family: var(--mono);
    font-size: var(--text-10);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--muted);
    border-right: 1px solid var(--line);
    display: flex;
    align-items: center;
    gap: var(--space-8);
  }
  .pipeline-stage-head:last-child { border-right: none; }
  .stage-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }
  .stage-dot-0 { background: var(--ink-3); }
  .stage-dot-1 { background: var(--accent); }
  .stage-dot-2 { background: var(--warn); }
  .stage-dot-3 { background: var(--good); }
  .stage-dot-4 { background: var(--good); }

  .pipeline-belt {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    height: clamp(260px, 52vh, 560px); /* scales up on big screens so kanban anchors the hero */
    position: relative;
  }
  .pipeline-lane {
    border-right: 1px dashed var(--line);
    padding: var(--space-12) var(--space-10);
    display: flex;
    flex-direction: column;
    gap: var(--space-8);
    height: 100%;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    position: relative;
    /* Slim scrollbar */
    scrollbar-width: thin;
    scrollbar-color: var(--line-2) transparent;
  }
  .pipeline-lane::-webkit-scrollbar { width: 4px; }
  .pipeline-lane::-webkit-scrollbar-track { background: transparent; }
  .pipeline-lane::-webkit-scrollbar-thumb { background: var(--line-2); border-radius: var(--radius-2); }
  .pipeline-lane:last-child { border-right: none; }
  .pipeline-lane-done { background: color-mix(in oklab, var(--good), transparent 95%); }

  .belt-card {
    background: var(--bg);
    border: 1px solid var(--line-2);
    border-radius: var(--radius);
    padding: var(--space-10) var(--space-12);
    font-size: var(--text-12);
    animation: beltIn 0.4s ease-out;
    transition: border-color 0.3s ease;
  }
  @keyframes beltIn {
    from { opacity: 0; transform: translateX(-12px); }
    to   { opacity: 1; transform: translateX(0); }
  }
  .belt-card-exit { animation: beltOut 0.35s ease-in forwards; }
  @keyframes beltOut {
    from { opacity: 1; transform: translateX(0); }
    to   { opacity: 0; transform: translateX(14px); }
  }
  .belt-card-stage-1 {
    border-color: color-mix(in oklab, var(--accent), transparent 60%);
    box-shadow: 0 0 0 2px color-mix(in oklab, var(--accent), transparent 90%);
  }
  .belt-card-stage-2 { border-color: color-mix(in oklab, var(--warn), transparent 55%); }
  .belt-card-stage-3, .belt-card-stage-4 { border-color: color-mix(in oklab, var(--good), transparent 60%); }
  .belt-id {
    font-family: var(--mono);
    font-size: var(--text-10);
    color: var(--muted);
    letter-spacing: 0.06em;
  }
  .belt-vendor {
    font-weight: var(--weight-medium);
    color: var(--ink);
    margin-top: var(--space-2);
    letter-spacing: -0.01em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-size: var(--text-12);
  }
  .belt-amount {
    font-family: var(--mono);
    font-size: var(--text-11);
    color: var(--ink-2);
    margin-top: var(--space-2);
  }
  .belt-tag {
    display: inline-flex;
    align-items: center;
    gap: var(--space-4);
    margin-top: var(--space-6);
    padding: var(--space-2) var(--space-8);
    border-radius: var(--radius-pill);
    font-family: var(--mono);
    font-size: var(--text-9);
    letter-spacing: 0.1em;
    text-transform: uppercase;
  }
  .belt-tag-warn { background: color-mix(in oklab, var(--warn), transparent 88%); color: var(--warn); }
  .belt-tag-ok { background: color-mix(in oklab, var(--good), transparent 88%); color: var(--good); }
  .belt-tag-wait { background: color-mix(in oklab, var(--warn), transparent 86%); color: var(--warn); }
  .belt-tag-wait .belt-tag-dot { animation: tagPulse 1.4s infinite; }
  .belt-tag-dot { width: 5px; height: 5px; border-radius: 50%; background: currentColor; }
  @keyframes tagPulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.35; transform: scale(0.7); }
  }

  .belt-card-waiting {
    border-style: dashed;
    border-color: color-mix(in oklab, var(--warn), transparent 35%) !important;
    background: color-mix(in oklab, var(--warn), transparent 96%);
    box-shadow: none !important;
  }
  .belt-card-answered {
    border-color: color-mix(in oklab, var(--good), transparent 40%) !important;
    box-shadow: 0 0 0 2px color-mix(in oklab, var(--good), transparent 86%) !important;
    animation: cardPulse 0.5s ease-out;
  }
  @keyframes cardPulse {
    0% { transform: scale(1); }
    50% { transform: scale(1.025); }
    100% { transform: scale(1); }
  }

  .belt-wait-line {
    display: flex;
    align-items: center;
    gap: var(--space-6);
    margin-top: var(--space-6);
    padding: var(--space-4) var(--space-8);
    border-radius: var(--radius-4);
    background: color-mix(in oklab, var(--warn), transparent 92%);
    border: 1px dashed color-mix(in oklab, var(--warn), transparent 70%);
    font-family: var(--mono);
    font-size: var(--text-9);
    color: var(--warn);
    letter-spacing: 0.04em;
    line-height: 1.3;
  }
  .belt-wait-icon { width: 11px; height: 11px; flex-shrink: 0; }
  .belt-wait-who {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .belt-wait-elapsed {
    color: color-mix(in oklab, var(--warn), transparent 30%);
    flex-shrink: 0;
  }

  .pipeline-stats {
    display: flex;
    gap: var(--space-24);
    padding: var(--space-12) var(--space-20);
    border-top: 1px solid var(--line);
    background: var(--bg-2);
    font-family: var(--mono);
    font-size: var(--text-11);
    color: var(--ink-3);
    letter-spacing: 0.06em;
  }
  .pipeline-stats strong { color: var(--ink); font-weight: var(--weight-medium); }
  .pipeline-stats-sep { color: var(--line-2); }

  @media (max-width: 900px) {
    /* Drop the fixed viewport height on phones: with overflow:hidden and
       justify-content:center on .hero-center, taller headlines were being
       clipped at the top + bottom equally. Let the hero grow to its content. */
    .hero-full { height: auto; min-height: auto; overflow: visible; }
    .hero-center { padding: var(--space-64) 0 var(--space-40); }
    .pipeline-header, .pipeline-belt { grid-template-columns: repeat(3, 1fr); }
    .pipeline-stage-head:nth-child(n+4),
    .pipeline-lane:nth-child(n+4) { display: none; }
  }
  @media (max-width: 600px) {
    /* In very narrow viewports the 3-col belt squeezes vendor names to
       ellipsis — let them wrap on two lines and shrink card padding. */
    .belt-card { padding: var(--space-8) var(--space-10); }
    .belt-vendor { white-space: normal; overflow: visible; text-overflow: clip; line-height: 1.25; font-size: var(--text-11); }
    .belt-id, .belt-amount { font-size: var(--text-10); }
    .pipeline-lane { padding: var(--space-8); }
  }

  /* ═══════════════════════════════════════════════════════════════
     Ablauf · Variant scroll experiments (Variante A + Variante B)
     Inspired by Apple/Stripe pinned scenes + Linear stacking cards
  ═══════════════════════════════════════════════════════════════ */

  /* Big variant separator */
  .ablauf-variant-header {
    padding: var(--space-80) 0 var(--space-24);
    text-align: center;
  }
  .ablauf-variant-tag {
    display: inline-block;
    font-family: var(--mono);
    font-size: var(--text-11);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    padding: var(--space-6) var(--space-16);
    border: 1px solid var(--accent);
    border-radius: var(--radius-pill);
    color: var(--accent);
    background: color-mix(in oklab, var(--accent), transparent 94%);
  }
  .ablauf-variant-name {
    font-family: var(--sans);
    font-weight: var(--weight-medium);
    font-size: var(--text-32);
    letter-spacing: -0.015em;
    margin-top: var(--space-16);
  }
  .ablauf-variant-sub {
    font-family: var(--mono);
    font-size: var(--text-12);
    color: var(--muted);
    margin-top: var(--space-8);
  }

  /* ─────────────────────────────────────────────
     Variante A · Pinned Stage (cinematic)
     Each step takes 180vh of scroll. Inside, a sticky 100vh
     scene with a HUGE numeral on the left and content on
     the right. As the section scrolls past, the number and
     content animate in/out via scroll-driven animations.
  ───────────────────────────────────────────── */
  .ablauf-pinned-section {
    position: relative;
    min-height: 100vh; /* one viewport – no sticky dwell, flows continuously */
    display: flex;
    align-items: center;
  }
  .ablauf-pinned-inner {
    width: 100%;
    display: grid;
    grid-template-columns: 0.5fr 1fr;
    align-items: center;
    gap: var(--space-40);
    padding: 0 var(--space-48) 0 var(--space-32);
    overflow: hidden;
  }
  .ablauf-pinned-numwrap {
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding-right: var(--space-24);
    position: relative;
  }
  .ablauf-pinned-num {
    font-family: var(--sans);
    font-weight: var(--weight-semibold);
    font-size: clamp(180px, 26vw, 380px);
    line-height: 0.8;
    letter-spacing: -0.05em;
    color: color-mix(in oklab, var(--ink), transparent 86%);
    user-select: none;
    will-change: transform, opacity;
  }
  .ablauf-pinned-tag {
    font-family: var(--mono);
    font-size: var(--text-12);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--accent);
  }
  .ablauf-pinned-title {
    font-family: var(--sans);
    font-weight: var(--weight-medium);
    font-size: clamp(32px, 4.4vw, 56px);
    letter-spacing: -0.02em;
    line-height: 1.05;
    margin-top: var(--space-16);
    color: var(--ink);
  }
  .ablauf-pinned-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: var(--space-16);
    margin-top: var(--space-32);
  }
  .ablauf-pinned-cards.cols-2 { grid-template-columns: repeat(2, 1fr); }
  .ablauf-pinned-cards.cols-3 { grid-template-columns: repeat(3, 1fr); }
  .ablauf-pinned-cards.cols-4 { grid-template-columns: repeat(2, 1fr); } /* 2x2 – 4 cards too cramped horizontally */
  .ablauf-pinned-card {
    padding: var(--space-24) var(--space-24);
    background: var(--bg);
    border: 1px solid var(--line);
    border-radius: var(--radius-12);
  }
  .ablauf-pinned-card-title {
    font-family: var(--sans);
    font-size: var(--text-14);
    font-weight: var(--weight-medium);
    letter-spacing: -0.005em;
    margin-bottom: var(--space-6);
    color: var(--ink);
  }
  .ablauf-pinned-card-body {
    font-size: var(--text-13);
    color: var(--ink-2);
    line-height: 1.5;
  }

  /* Scroll-driven animations (Chrome 115+, Safari 17.4+, Edge 115+).
     Firefox falls back to "always visible" – content still appears, just
     without the cinematic in/out. Disabled for prefers-reduced-motion. */
  @media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {
    .ablauf-pinned-section {
      view-timeline-name: --pinned-section;
      view-timeline-axis: block;
    }
    .ablauf-pinned-num {
      animation: pinnedNumLifecycle linear both;
      animation-timeline: --pinned-section;
    }
    @keyframes pinnedNumLifecycle {
      0%   { opacity: 0; transform: translateY(80px) scale(0.9); }
      45%  { opacity: 1; transform: translateY(0) scale(1); }
      55%  { opacity: 1; transform: translateY(0) scale(1); }
      100% { opacity: 0; transform: translateY(-80px) scale(0.95); }
    }
    .ablauf-pinned-body {
      animation: pinnedBodyLifecycle linear both;
      animation-timeline: --pinned-section;
    }
    @keyframes pinnedBodyLifecycle {
      0%   { opacity: 0; transform: translateX(60px); }
      45%  { opacity: 1; transform: translateX(0); }
      55%  { opacity: 1; transform: translateX(0); }
      100% { opacity: 0; transform: translateX(-30px); }
    }
    .ablauf-pinned-card {
      animation: pinnedCardIn linear both;
      animation-timeline: --pinned-section;
    }
    @keyframes pinnedCardIn {
      0%   { opacity: 0; transform: translateY(40px); }
      35%  { opacity: 1; transform: translateY(0); }
      100% { opacity: 1; transform: translateY(0); }
    }
    .ablauf-pinned-card:nth-child(2) { animation-delay: 0; animation-range: cover 5% cover 45%; }
    .ablauf-pinned-card:nth-child(3) { animation-range: cover 10% cover 50%; }
  }
  } /* /prefers-reduced-motion: no-preference */

  /* ─────────────────────────────────────────────
     Variante B · Stacking Cards (Linear-style deck)
     Each step is a sticky card. Cards stack with a
     slight staircase top offset so previous cards
     peek out from above. As you scroll, the new card
     slides up over the previous one.
  ───────────────────────────────────────────── */
  .ablauf-stack-list {
    display: flex;
    flex-direction: column;
    gap: var(--space-16);
    padding: var(--space-48) 0 40vh;
    position: relative;
  }
  .ablauf-stack-card {
    position: sticky;
    background: var(--bg);
    border: 1px solid var(--line);
    border-radius: var(--radius-16);
    padding: var(--space-48) var(--space-48);
    min-height: 360px;
    display: grid;
    grid-template-columns: 100px 1fr;
    gap: var(--space-40);
    align-items: start;
    box-shadow: 0 26px 48px -20px color-mix(in oklab, var(--ink), transparent 86%);
    transition: transform .3s ease;
  }
  /* Staircase: each card pins ~14px lower so the previous one's top peeks */
  .ablauf-stack-card:nth-child(1) { top: 92px;  z-index: 1; }
  .ablauf-stack-card:nth-child(2) { top: 106px; z-index: 2; }
  .ablauf-stack-card:nth-child(3) { top: 120px; z-index: 3; }
  .ablauf-stack-card:nth-child(4) { top: 134px; z-index: 4; }
  .ablauf-stack-num {
    font-family: var(--mono);
    font-size: var(--text-13);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--accent);
    padding-top: var(--space-6);
  }
  .ablauf-stack-num-big {
    font-family: var(--sans);
    font-weight: var(--weight-medium);
    font-size: var(--text-80);
    line-height: 0.9;
    letter-spacing: -0.04em;
    color: var(--ink);
    margin-top: var(--space-4);
  }
  .ablauf-stack-body {
    display: flex;
    flex-direction: column;
    gap: var(--space-24);
  }
  .ablauf-stack-title {
    font-family: var(--sans);
    font-weight: var(--weight-medium);
    font-size: var(--text-32);
    letter-spacing: -0.018em;
    line-height: 1.1;
    color: var(--ink);
  }
  .ablauf-stack-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: var(--space-16);
  }
  .ablauf-stack-cards.cols-2 { grid-template-columns: repeat(2, 1fr); }
  .ablauf-stack-cards.cols-3 { grid-template-columns: repeat(3, 1fr); }
  .ablauf-stack-cards .ablauf-card {
    background: var(--bg-2);
    border-radius: var(--radius);
  }

  @media (max-width: 900px) {
    .ablauf-pinned-inner {
      grid-template-columns: 1fr;
      gap: var(--space-20);
      padding: var(--space-24);
      align-items: start;
    }
    .ablauf-pinned-numwrap { height: auto; padding: 0; justify-content: flex-start; }
    .ablauf-pinned-num { font-size: var(--text-96); }
    .ablauf-pinned-section { min-height: 100vh; }

    /* Step cards: max 2 per row at this breakpoint — 3-up overflows on phones. */
    .ablauf-pinned-cards,
    .ablauf-pinned-cards.cols-2,
    .ablauf-pinned-cards.cols-3,
    .ablauf-pinned-cards.cols-4 { grid-template-columns: repeat(2, 1fr); }

    .ablauf-stack-card {
      grid-template-columns: 1fr;
      padding: var(--space-32) var(--space-24);
      gap: var(--space-16);
    }
    .ablauf-stack-num-big { font-size: var(--text-48); }
    .ablauf-stack-card:nth-child(n) { top: 88px; }
  }
  @media (max-width: 480px) {
    /* Tiny phones: drop to one card per row. */
    .ablauf-pinned-cards,
    .ablauf-pinned-cards.cols-2,
    .ablauf-pinned-cards.cols-3,
    .ablauf-pinned-cards.cols-4 { grid-template-columns: 1fr; }
  }
