/* Seitenabschluss und Fussband — geteilt von allen Seiten mit .site-footer.
   Eigene Datei, weil die Startseite s2s.css bewusst nicht einbindet
   (docs/SEITEN-BAUEN.md). Nur Tokens, die jede Seite definiert; wo eine Seite
   ohne Abstands-Token auskommt, greift der Rueckfallwert.

   Vorher: dieselbe Glas-Karte auf fuenf Seiten, darunter ein leerer
   Verlaufsstreifen, dann ein Fuss aus drei Spalten. Jetzt steht der Abschluss
   frei auf einem Punktraster und laeuft ohne Luecke in den Fuss. Der Fuss
   bleibt leise (wie Linear, Vercel, Apple) — eine ausgeblichene Wortmarke als
   Bild stand dort bis 29.09.2026 und passte nicht zum Premium-Niveau. */

/* ── Abschluss ─────────────────────────────────────────────── */
section.abschluss{
  position:relative;
  overflow:clip;
  isolation:isolate;
  border-top:0;
  padding-block:clamp(88px,12vw,168px) clamp(40px,5vw,72px);
}
/* Punktraster, zur Mitte hin sichtbar, an den Raendern weg */
section.abschluss::before{
  content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background-image:radial-gradient(circle,rgba(255,255,255,.17) 1px,transparent 1.5px);
  background-size:24px 24px;
  -webkit-mask-image:radial-gradient(ellipse 62% 70% at 50% 46%,#000 20%,transparent 78%);
          mask-image:radial-gradient(ellipse 62% 70% at 50% 46%,#000 20%,transparent 78%);
}
/* Licht von unten: traegt den Blick zum Knopf und geht nahtlos in den Fuss */
section.abschluss::after{
  content:"";position:absolute;inset:auto 0 0;height:70%;z-index:-2;pointer-events:none;
  background:
    radial-gradient(ellipse 48% 60% at 50% 100%,color-mix(in srgb,var(--emerald) 22%,transparent),transparent 72%),
    linear-gradient(180deg,transparent,var(--ink) 96%);
}

section.abschluss .band{
  position:static;
  background:none;border:0;border-radius:0;box-shadow:none;
  padding:0;
  text-align:center;
}
section.abschluss .band::before{content:none}
section.abschluss .band h2{
  max-width:15ch;margin-inline:auto;
  font-size:clamp(2.6rem,1.5rem + 4.4vw,5.2rem);
  line-height:.98;letter-spacing:-.03em;
}
section.abschluss .band .lead{max-width:44ch;margin-inline:auto}
section.abschluss .band .cta-row{justify-content:center}
section.abschluss .duo{justify-content:center;margin-top:clamp(28px,4vw,40px)}

/* Abschluss und Fuss sind eine Flaeche — kein Aussenabstand dazwischen */
main:has(> section.abschluss:last-child) + .site-footer{margin-top:0;border-top-color:transparent;box-shadow:none}
main:has(> section.abschluss:last-child) + .site-footer::before{content:none}


/* Ablauf traegt den Abschluss ohne .band — gleiche Haltung */
section.abschluss.fl-cta .wrap{text-align:center}
section.abschluss.fl-cta h2{
  max-width:15ch;margin-inline:auto;
  font-size:clamp(2.6rem,1.5rem + 4.4vw,5.2rem);
  line-height:.98;letter-spacing:-.03em;
}
section.abschluss.fl-cta .sub{max-width:44ch;margin-inline:auto}
section.abschluss.fl-cta .fl-cta-row{justify-content:center}

/* ── Kapitelziffern (28.09.2026) ──────────────────────────────
   Vorher an 5 Stellen auf 3 Seiten dieselbe Geste: riesige Fraunces-Ziffer
   als Umriss, fast unsichtbar. Wo die Zahl eine Reihenfolge traegt (Phasen,
   Zeitleiste, Etappen), bleibt sie — aber in der Etikettensprache, die die
   Seite fuer Kapitel schon hat (.ix: Mono, gesperrt). Eine Regel fuer alle,
   damit keine Seite auf der alten Geste stehen bleibt. Zustandsvarianten
   (is-done, is-active, :hover) stehen mit in der Liste, sonst faerben sie
   den Umriss wieder ein. */
:is(.fl-num,.pr-time-num,.pr-emp-nr,.pr-alt-nr,.ab-num),
.pr-time-step.is-done .pr-time-num,
.ab-row:hover .ab-num{
  display:inline-flex;align-items:center;gap:10px;
  font-family:"JetBrains Mono",ui-monospace,monospace;font-weight:500;font-style:normal;
  font-size:0.75rem;line-height:1.4;letter-spacing:.16em;
  -webkit-text-stroke:0;color:var(--emerald-soft);
}
:is(.fl-num,.pr-time-num,.pr-emp-nr,.pr-alt-nr,.ab-num)::before{
  content:"";width:22px;height:1px;background:currentColor;opacity:.55;flex:none;
}
/* In der Zeitleiste zeigt die Farbe den Zustand: offen = leise */
.pr-time-step:not(.is-done) .pr-time-num{color:var(--faint)}

/* ── Seitenwechsel (28.09.2026) ──────────────────────────────
   Vorher baute jeder Klick die Seite hart neu auf — sieben Einzelseiten statt
   einer Website. Jetzt bleiben Kopfleiste und Logo stehen, der Inhalt geht
   leise ueber. Der eine laute Moment ist der Weg zur Anfrage (uebergang.js).
   Beide Seiten muessen opt-in machen: diese Datei laden alle Seiten.
   Chromium 126+ und Safari 18.2+; Firefox laedt normal. */
@media (prefers-reduced-motion: no-preference) {
  @view-transition { navigation: auto; }
}
header.bar { view-transition-name: kopf; }
header.bar .brand, .af-logo { view-transition-name: marke; }
.af-buehne { view-transition-name: anfrage-karte; }
.af-einladung h1 { view-transition-name: anfrage-titel; }

::view-transition-old(root) { animation: s2sRaus var(--dur-2, 260ms) cubic-bezier(.16,1,.3,1) both; }
::view-transition-new(root) { animation: s2sRein var(--dur-3, 460ms) cubic-bezier(.16,1,.3,1) both; }
@keyframes s2sRaus { to { opacity: 0; transform: scale(.985); } }
@keyframes s2sRein { from { opacity: 0; transform: translateY(18px); } }

/* Die Leiste bleibt einfach stehen */
::view-transition-old(kopf), ::view-transition-new(kopf) { animation: none; mix-blend-mode: normal; }
::view-transition-group(kopf) { animation: none; }

/* Knopf -> Formularkarte, Satz -> Kopf der Anfrage: langsam genug zum Folgen */
::view-transition-group(anfrage-karte), ::view-transition-group(anfrage-titel), ::view-transition-group(marke) {
  animation-duration: var(--dur-4, 620ms); animation-timing-function: cubic-bezier(.16,1,.3,1); }
::view-transition-old(anfrage-karte), ::view-transition-new(anfrage-karte) { height: 100%; object-fit: fill; }
::view-transition-old(anfrage-karte) { animation: s2sKnopfWeg var(--dur-2, 240ms) ease both; }
::view-transition-new(anfrage-karte) { animation: s2sKarteDa var(--dur-3, 420ms) 120ms ease both; }
@keyframes s2sKnopfWeg { to { opacity: 0; } }
@keyframes s2sKarteDa { from { opacity: 0; } }
/* Gibt es die Leiste nur auf EINER Seite (die Anfrage hat keine), bleibt sie
   sonst bis zum Ende stehen und verschwindet dann schlagartig. */
::view-transition-old(kopf):only-child { animation: s2sKnopfWeg var(--dur-2, 220ms) ease both; }
::view-transition-new(kopf):only-child { animation: s2sKarteDa var(--dur-2, 320ms) 120ms ease both; }

/* ── Bedienbarkeit (29.09.2026, Audit der Startseite) ─────────────────────── */

/* Mobilmenue: `.mobile-menu{display:flex}` ueberstimmte das hidden-Attribut —
   das zugeklappte Menue lag nur per transform ausserhalb des Bildes und war
   mit der Tabulatortaste erreichbar (9 unsichtbare Tab-Stopps, WCAG 2.4.3/
   2.4.7). Das Hereingleiten startet jetzt per @starting-style, weil das
   Element aus display:none kommt. */
.mobile-menu[hidden],.nav-scrim[hidden]{display:none!important}
@starting-style{
  .mobile-menu.open{transform:translateX(105%)}
  .nav-scrim.open{opacity:0}
}

/* Feste Anfrage-Leiste am Handy: sie darf nichts verdecken. Platz am Seitenende
   reservieren und den Nach-oben-Knopf darueber heben (vorher lag er komplett
   darunter und Impressum/Datenschutz waren nicht antippbar). */
@media (max-width:759px){
  body:has(.sticky-cta){padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}
  body:has(.sticky-cta.on) .to-top{bottom:calc(84px + env(safe-area-inset-bottom,0px))}
}

/* Trefferflaechen ab 44 px (PRODUCT.md), ohne das Schriftbild zu aendern */
.textlink,.duo-txt a,.foot-brand .foot-mail{display:inline-flex;align-items:center;min-height:44px}
.foot-col a,.foot-legal a,.foot-bottom a{display:inline-flex;align-items:center;min-height:44px}
.foot-col ul{gap:0!important}
.foot-ig{width:44px!important;height:44px!important}
.kette-phasen button{min-height:44px}

/* ── Grosse Bildschirme (16.10.2026) ─────────────────────────────
   Sebi: „am Mac koennen wir das alles etwas groesser skalieren, wirkt so zusammengedrueckt“.
   Gemessen: ab 1280 px blieb alles starr bei 1240 px Inhalt und 16 px Grundgroesse, auch bei
   1512/1728 px (MacBook Pro 14/16). Fast alle Masse rechnen in rem, also waechst die Grundgroesse
   mit dem Schirm, und die Inhaltsbreite waechst mit. Unter 1440 px bleibt alles wie bisher. */
@media (min-width:1440px){html{font-size:1.0625rem}:root .wrap{max-width:1320px}}
@media (min-width:1680px){html{font-size:1.125rem}:root .wrap{max-width:1440px}}

/* Grundschrift 17 px (1.0625rem, waechst auf grossen Schirmen mit); kleine Lesetexte (>= 40 Zeichen) nicht unter 16 px */
body{font-size:1.0625rem}
.cta-note,.kette-glieder span:not(.kg-punkt),.pcap p,.duo-txt,.foot-brand p{font-size:max(16px,1em)}

/* Wer weniger Bewegung will, bekommt keine — auch nicht von spezifischeren
   Regeln (vorher liefen `ring`/`pulse` in der Handy-Attrappe endlos weiter). */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important}
}

/* ── Nav-Aktion „Gratis-Vorschau“ (lib/shell.mjs, AKTIONEN) ──
   Stand bis 01.10.2026 nur in s2s.css — Startseite, Prüf uns, Für wen und
   Über uns binden die nicht ein und zeigten den Link ungestaltet. Lautstaerke:
   Menuepunkte gedaempft, dieser Link farbig, der CTA als Flaeche. */
.nav-soft{flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;min-height:44px;
  font-family:"Hanken Grotesk",sans-serif;font-size:0.8438rem;font-weight:600;letter-spacing:.01em;
  color:var(--emerald,#00B888);text-decoration:none;white-space:nowrap;
  transition:opacity var(--dur-2, .25s) var(--ease,ease)}
.nav-soft::after{content:"\2192";font-size:1.05em;transition:transform var(--dur-2, .25s) var(--ease,ease)}
.nav-soft:hover{opacity:.82}
.nav-soft:hover::after{transform:translateX(3px)}
.nav-soft:focus-visible{outline:2px solid var(--emerald,#00B888);outline-offset:4px;border-radius:4px}
@media (max-width:960px){.nav .nav-soft{display:none}}
/* lib/shell.mjs setzt aria-current="page"; manche Seiten kannten nur "true" */
.nav-links a[aria-current="page"]{color:var(--paper,#F2F3F1)}
.nav-links a[aria-current="page"]::after{width:100%}

/* ── Knopf und Textlink: EIN Baustein fuer alle Seiten (01.10.2026) ──
   Stand bisher als Kopie im <style> jeder Seite; /ablauf/ hatte keine Kopie,
   sein Abschluss zeigte zwei unterstrichene Browser-Links statt Knopf. */
@keyframes glint{0%{transform:translateX(-130%)}100%{transform:translateX(130%)}}
.btn{position:relative;display:inline-block;font-family:"Hanken Grotesk",sans-serif;font-size:0.9062rem;font-weight:700;letter-spacing:.02em;padding:17px 32px;border-radius:9px;text-decoration:none;cursor:pointer;overflow:hidden;transition:transform var(--dur-2, .25s) var(--ease,cubic-bezier(.16,1,.3,1)),box-shadow var(--dur-2, .25s)}
.btn:hover{transform:translateY(-3px)}
.btn-primary{background:linear-gradient(135deg,var(--emerald-soft) 0%,var(--emerald) 52%,var(--teal) 100%);color:var(--emerald-ink);box-shadow:0 16px 38px -12px rgba(0,184,136,.6),0 16px 38px -16px rgba(31,166,224,.45),inset 0 1px 0 rgba(255,255,255,.32)}
.btn-primary::after{content:"";position:absolute;top:0;left:0;width:45%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent);transform:translateX(-150%)}
.btn-primary:hover::after{animation:glint var(--dur-4, .85s) var(--ease,cubic-bezier(.16,1,.3,1)) forwards}
.textlink{font-family:"Hanken Grotesk",sans-serif;font-size:0.875rem;font-weight:600;letter-spacing:.01em;color:var(--paper);text-decoration:none;position:relative;padding-bottom:3px}
.textlink::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--line-3);transition:background var(--dur-2, .25s) var(--ease,cubic-bezier(.16,1,.3,1))}
.textlink:hover{transform:none}
.textlink:hover::after{background:var(--paper)}

/* ── Fuss am Handy: Spalten nebeneinander statt ein langer Turm ──
   Vorher stand unter 520 px jede Spalte einzeln — Agentur (8 Links) und
   Rechtliches untereinander, ein Fuss laenger als ein Bildschirm. */
@media (max-width:560px){
  .site-footer .foot-top{grid-template-columns:1fr 1fr;gap:var(--s-6,32px) var(--s-5,24px)}
  .site-footer .foot-brand{grid-column:1 / -1}
}

/* ── Rueckfall im Abschluss: die Gratis-Vorschau als leise zweite Tuer ──
   Die Vorschau ist das Hauptargument (Sebi 01.10.2026); wer am Ende noch
   zoegert, bekommt sie hier statt nur Gespraech oder Mail. */
section.abschluss .rueckfall{margin-top:var(--s-5,24px);color:var(--muted,#A4A6A1);font-size:1.0625rem}
section.abschluss .rueckfall .textlink{display:inline;min-height:0}

/* ── Aufzaehlungs-Marker: Punkt statt farbigem Seitenstreifen ──
   Ein 3-px-Balken links in Akzentfarbe ist das Karten-Muster, das wir
   ueberall abgebaut haben (impeccable-Bann). Gilt fuer Startseite (.proof-points)
   und Ueber uns (.ab-creed). */
.proof-points li::before,.ab-creed li::before{
  width:6px;height:6px;border-radius:50%;top:.62em;
  background:var(--emerald-soft,#1FC998);box-shadow:none;
}

/* ── Instagram im Fuss: Baustein fuer alle Seiten (stand nur in s2s.css und auf der Startseite) */
.foot-ig{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line-2,rgba(255,255,255,.14));border-radius:10px;color:var(--paper,#F2F3F1);transition:border-color var(--dur-2, .25s) var(--ease,ease),color var(--dur-2, .25s) var(--ease,ease),transform var(--dur-2, .25s) var(--ease,ease)}
.foot-ig:hover{border-color:rgba(0,184,136,.55);color:#28C281;transform:translateY(-2px)}

/* ── Gradient-Flow im Kapitel-Etikett: die Linie laeuft von Gruen nach Tuerkis aus ──
   (Startseite; die Unterseiten setzen dasselbe in seite.css) */
.ix::after{background:linear-gradient(90deg,#1FC998,rgba(70,190,234,.55) 55%,transparent)}
section.abschluss .ix::after{content:none}

/* ── Grund: Emerald-Licht (01.10.2026) ─────────────────────────
   EINE Quelle fuer alle Seiten (Startseite + Unterseiten). Zwischendurch
   stand hier ruhiges Fast-Schwarz — Sebi: "sieht iwie so dunkel jz alles
   aus, flach und langweilig". Das Licht ist das Zeichen der Marke:
   Emerald oben links, Tuerkis unten rechts, fest am Fenster, damit beim
   Scrollen jedes Kapitel im Licht steht. Kapitel mit eigener Flaeche
   (Leistungen, Leitsatz-Baender) setzen sich davon ab. */
body{
  background:
    radial-gradient(95% 75% at 14% 6%,rgba(0,184,136,.34),transparent 55%),
    radial-gradient(98% 82% at 90% 92%,rgba(20,140,200,.30),transparent 56%),
    linear-gradient(150deg,#04140F 0%,#05131C 52%,#03080D 100%);
  background-attachment:fixed;
  background-color:#03080D;
}
/* Handy: fixed wird oft ignoriert oder ruckelt — grosse, mitlaufende Flaeche */
@media (max-width:700px){
  body{
    background:
      radial-gradient(130% 55% at 8% 1%,rgba(0,184,136,.32),transparent 56%),
      radial-gradient(130% 60% at 96% 99%,rgba(20,140,200,.28),transparent 58%),
      linear-gradient(160deg,#04140F 0%,#05131C 55%,#03080D 100%);
    background-attachment:scroll;background-size:cover;background-repeat:no-repeat;
  }
}

/* ── Korn (16.10.2026): Material statt glatter Flaeche, auf JEDER Seite ──
   Stand bisher nur in s2s.css (Preise, Ablauf, Links); Startseite, Pruef uns,
   Ueber uns, Fuer wen waren glatt (Kritik 16.10.). Gleiche Regel, eine Quelle mehr
   fuer die Seiten ohne s2s.css; wo beide laden, ist es dieselbe Deklaration. */
body::after{content:"";position:fixed;inset:0;z-index:1;pointer-events:none;
opacity:.055;mix-blend-mode:overlay;
background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.7'/%3E%3C/svg%3E");
background-size:140px 140px}
@media (prefers-reduced-motion:reduce){body::after{opacity:.04}}

/* Grautoene fuer das Licht: --faint/--muted waren auf Fast-Schwarz gerechnet;
   auf dem Emerald-Licht fielen Etiketten und Unterzeilen auf 3,0–4,4:1
   (gemessen an echten Pixeln, 01.10.2026). Eine Stelle fuer alle Seiten. */
:root{--faint:#ABAEA8;--muted:#BEC0BB}

/* ── Reduktion (02.10.2026): keine Zier-Striche, -Punkte und -Icons ──
   Sebi: "schleichen sich schon wieder vermehrt Striche, Punkte, Icons ein —
   KI-generischer Slop". Gezaehlt je Seite: bis zu 20 Gedankenstriche, 12
   Mittelpunkte, 17 Zierlinien, 20 Nummern-Etiketten, 14 Haken-Icons.
   Regel: Etiketten sind reiner Text (keine Nummer, keine Linie), Listen ohne
   Marker, Pfeile nur am Hauptknopf und an der Vorschau-Aktion. Bedeutungs-
   tragende Linien bleiben (Weg durch die Phasen auf /ablauf/, Kante der Kette). */
.ix::after,:is(.pr-rh,.rs-rh,.fw-rh,.ab-rh)::after,:is(.pr-rh,.rs-rh,.fw-rh,.ab-rh)::before{content:none!important}
:is(.fl-num,.pr-time-num,.pr-emp-nr,.pr-alt-nr,.ab-num)::before{content:none!important}
.proof-points li::before,.ab-creed li::before{content:none!important}
.proof-points li,.ab-creed li{padding-left:0}
.fw-marrow{display:none!important}

/* ── Trefferflächen ab 44 px (kern.md) ─────────────────────────
   Besucher-Simulation 12.10.2026: rund 50 Ziele lagen zwischen 24 und 44 px —
   WCAG 2.2 (24 px) erfüllt, für Menschen mit wenig Rechnerroutine zu knapp.
   Nur die Fläche wächst (min-*), nie die Schrift oder das Bild. */
.skip{display:inline-flex;align-items:center;min-height:44px}
.to-top{min-width:44px;min-height:44px}
.bar .brand,footer .brand,.af-logo{display:inline-flex;align-items:center;min-height:44px}
.foot-col a,.foot-legal a,.foot-bottom a,.foot-links a{min-width:44px}
/* Zeilen-Ziele bleiben Blockzeilen (inline-flex zog Mail und Telefon in eine Zeile,
   flex schluckte im Inhaltsverzeichnis das Leerzeichen nach „01 ·“);
   die 44 px ersetzen Lücke und Außenabstand, sonst verdoppelt sich der Rhythmus. */
nav.toc ol{gap:0}
nav.toc li a{display:block;padding-block:5px;min-height:44px}
a.rail-link{display:flex;align-items:center;min-height:44px;margin-bottom:0}
a.rail-cta{display:inline-flex;align-items:center;min-height:44px}

/* ── Eigenes Zeichen statt Icon-Satz (16.10.2026) ──────────────────
   Sebi: „die ganzen KI-Slop-Icons raus, lieber was Eigenes, das zum Design-System passt“.
   Die drei aufsteigenden Balken der Bildmarke „People Climb“ (BRAND.md §8: Hoehen 26/42/60,
   Deckkraft .5/.78/1, skewX −5°), klein. Steht fuer „aufwaerts“: Nach-oben-Knopf,
   Engpass → System auf /for-you/. Ersetzt Linien-Pfeile aus einer Icon-Bibliothek. */
.s2-mark{display:inline-flex;align-items:flex-end;gap:3px;height:16px;color:currentColor}
.s2-mark i{display:block;width:4px;border-radius:2px;background:currentColor;transform:skewX(-5deg)}
.s2-mark i:nth-child(1){height:6px;opacity:.5}
.s2-mark i:nth-child(2){height:10px;opacity:.78}
.s2-mark i:nth-child(3){height:15px}
.fw-marrow .s2-mark{color:var(--emerald-soft,#1FC998)}
.fw-mrow:hover .fw-marrow .s2-mark{transform:translateY(-2px);transition:transform var(--dur-2,.24s) ease-out}
@media (prefers-reduced-motion:reduce){.fw-mrow:hover .fw-marrow .s2-mark{transform:none}}
