/* ==============================================================
   WEBMOUNT — DESIGN SYSTEM
   Schweizer Grid · Engineering · Radius max. 2px
   Navy #0B2557 · Blau #185BED · Weiß · Grau
   ============================================================== */
:root{
  --navy:#0B2557;
  --navy-deep:#071A3E;
  --blue:#185BED;
  --blue-press:#0F49C8;
  --blue-bright:#5B8DF3;   /* Akzent auf dunklem Grund */
  --ink:#0A1730;
  --ink-2:#44506A;
  --ink-3:#8B94A8;
  --bg:#FFFFFF;
  --bg-alt:#F5F6F8;
  --line:rgba(10,23,48,.14);
  --line-soft:rgba(10,23,48,.08);
  --wline:rgba(255,255,255,.16);
  --wline-soft:rgba(255,255,255,.09);
  --f:'Inter Tight',system-ui,-apple-system,sans-serif;
  --ease:cubic-bezier(.22,.8,.24,1);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:110px}
body{
  font-family:var(--f);font-size:16px;line-height:1.6;
  color:var(--ink-2);background:var(--bg);
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;overflow-x:hidden;
}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
/* Textmarkierung (Maus-Selektion und "Scroll to text"-Sprungziele aus Browser-Links)
   in Markenblau statt Browser-Standardgelb/-blau. */
::selection{background:rgba(24,91,237,.22);color:var(--ink)}
::target-text{background:rgba(24,91,237,.22);color:var(--ink)}
button{font:inherit;background:none;border:0;cursor:pointer;color:inherit}
h1{font-weight:300;color:var(--ink);letter-spacing:-.02em}
.container{max-width:1360px;margin:0 auto;padding:0 48px}
@media(max-width:760px){.container{padding:0 22px}}

/* ---------- Buttons ---------- */
.btn{
  position:relative;display:inline-flex;align-items:center;gap:14px;
  padding:18px 30px;border-radius:2px;overflow:hidden;
  font-size:15px;font-weight:500;letter-spacing:.02em;
  transition:background .25s var(--ease),border-color .25s var(--ease),color .25s var(--ease);
}
.btn .ar{display:inline-block;transition:transform .3s var(--ease)}
.btn:hover .ar{transform:translateX(5px)}
.btn--p{background:var(--blue);color:#fff}
.btn--p::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.22) 50%,transparent 65%);
  transform:translateX(-120%);transition:transform .7s var(--ease);
}
.btn--p:hover{background:var(--blue-press)}
.btn--p:hover::after{transform:translateX(120%)}

/* ---------- Motion ---------- */
.anim [data-rv]{opacity:0;transform:translateY(22px);transition:opacity .85s var(--ease),transform .85s var(--ease)}
.anim [data-rv].in{opacity:1;transform:none}
.anim [data-rv="m"]{opacity:1;transform:none;clip-path:inset(0 100% 0 0);transition:clip-path 1s var(--ease)}
.anim [data-rv="m"].in{clip-path:inset(0 0 0 0)}
.anim [data-d="1"]{transition-delay:.09s}
.anim [data-d="2"]{transition-delay:.18s}
.anim [data-d="3"]{transition-delay:.27s}
@media(prefers-reduced-motion:reduce){
  .anim [data-rv]{opacity:1 !important;transform:none !important;clip-path:none !important;transition:none !important}
  .anim .dbar i{transition:none !important}
}

/* ==============================================================
   HEADER
   ============================================================== */
.hdr{
  position:fixed;inset:0 0 auto 0;z-index:200;
  background:transparent;border-bottom:1px solid transparent;
  transition:background .35s var(--ease),border-color .35s var(--ease),backdrop-filter .35s var(--ease);
}
/* Verlauf statt Leiste (23.09.2026, zuerst am Handy, jetzt ueberall).
   Der Kopfbalken liegt ohne eigene Flaeche ueber dem Hero: Logo, Menue
   und Knopf standen frei im Bild und verschwammen mit der Headline
   darunter — es fehlte die Trennung, nicht der Kontrast (gemessen
   10,3 bis 18,6:1). Der Verlauf loest sich nach unten vollstaendig auf,
   erzeugt also keine sichtbare Leiste, gibt dem Balken aber Halt.
   Sobald der Balken auf hell schaltet, verschwindet er. */
.hdr::before{
  content:"";position:absolute;inset:0 0 auto 0;height:158px;
  pointer-events:none;opacity:1;transition:opacity .35s var(--ease);
  background:linear-gradient(180deg,
    rgba(6,19,45,.60) 0%,rgba(6,19,45,.36) 42%,
    rgba(6,19,45,.12) 74%,rgba(6,19,45,0) 100%);
}
.hdr.light::before,.hdr.open::before{opacity:0}
.hdr__in{position:relative;z-index:1}
.hdr__in{height:88px;display:flex;align-items:center;gap:0}
/* Icon-Basis auf Text-Grundlinie (Berg „steht“ auf derselben Linie wie die Wortmarke).
   Asset ist eng auf den soliden Berg beschnitten (assets/webmount-mark.png), daher keine Crop-Hacks nötig. */
.hdr__logo{display:flex;align-items:baseline;gap:7px;flex-shrink:0}
.hdr__logo-ic{height:30px;width:auto}
.hdr__logo-wm{
  font-size:24px;font-weight:600;letter-spacing:-.02em;line-height:1;
  color:#fff;transition:color .35s var(--ease);
}
.hdr.light .hdr__logo-wm{color:var(--ink)}

.hdr__nav{display:flex;align-items:stretch;height:100%;gap:6px;margin-inline:auto}
.hdr__item{position:relative;display:flex;align-items:center}
.hdr__link{
  position:relative;display:inline-flex;align-items:center;gap:6px;height:100%;
  padding:0 14px;font-size:14.5px;font-weight:500;letter-spacing:.01em;
  color:rgba(255,255,255,.82);transition:color .25s var(--ease);white-space:nowrap;
}
.hdr__link::after{
  content:"";position:absolute;left:14px;right:14px;bottom:26px;height:1px;
  background:currentColor;transform:scaleX(0);transform-origin:left;
  transition:transform .35s var(--ease);opacity:.9;
}
.hdr__link:hover{color:#fff}
.hdr__link:hover::after{transform:scaleX(1)}

/* Menue-Hover am Desktop (23.09.2026).
   Der ueberfahrene Punkt bleibt voll und wird heller, die uebrigen
   treten zurueck. Getragen wird das von der Transparenz der
   Geschwister, nicht von einer Farbaenderung des Einzelnen: dadurch
   entsteht die Tiefe, die man eher spuert als sieht. Nur fuer echte
   Zeigegeraete — auf Touch gibt es kein Hover, dort wuerde der
   Zustand nach dem Antippen haengen bleiben.
   :focus-within spiegelt dasselbe fuer die Tastatur, damit die
   Navigation mit Tab nicht anders aussieht als mit der Maus. */
@media (hover:hover) and (pointer:fine){
  .hdr__nav .hdr__link{transition:color .25s var(--ease),opacity .3s var(--ease)}
  .hdr__nav:hover .hdr__link,
  .hdr__nav:focus-within .hdr__link{opacity:.42}
  .hdr__nav .hdr__link:hover,
  .hdr__nav .hdr__link:focus-visible{opacity:1}
  /* Das Kundenportal steht ausserhalb der Navigation, gehoert aber zur
     selben Zeile — es tritt mit zurueck. */
  .hdr__in:has(.hdr__nav:hover) .hdr__portal{opacity:.42;transition:opacity .3s var(--ease)}
}
.hdr__caret{transition:transform .25s var(--ease);opacity:.7}
.hdr__item:hover .hdr__caret,.hdr__item:focus-within .hdr__caret{transform:rotate(180deg)}

/* Dropdown-Panel: weiße Karte, 1px-Linie, kein Schatten */
.hdr__sub{
  position:absolute;top:100%;left:6px;min-width:236px;
  background:#fff;border:1px solid var(--line);border-radius:2px;padding:7px;
  opacity:0;visibility:hidden;transform:translateY(7px);
  transition:opacity .2s var(--ease),transform .2s var(--ease),visibility .2s var(--ease);
}
.hdr__item:hover .hdr__sub,.hdr__item:focus-within .hdr__sub,.hdr__item.open .hdr__sub{
  opacity:1;visibility:visible;transform:none;
}
.hdr__sub a{
  display:block;padding:11px 14px;border-radius:2px;
  font-size:14.5px;font-weight:400;color:var(--ink-2);
  transition:background .2s var(--ease),color .2s var(--ease);
}
.hdr__sub a:hover{background:var(--bg-alt);color:var(--ink)}

.hdr__cta{flex-shrink:0;margin-left:24px;padding:13px 22px;font-size:14px}
.hdr__nav-cta{display:none}   /* nur im mobilen Menü sichtbar */

/* --- Light-Zustand: weiß, sobald man den Hero verlässt --- */
.hdr.light{background:rgba(255,255,255,.72);backdrop-filter:blur(20px) saturate(1.5);-webkit-backdrop-filter:blur(20px) saturate(1.5);border-bottom-color:var(--line-soft)}
.hdr.light .hdr__link{color:var(--ink-2)}
.hdr.light .hdr__link:hover{color:var(--ink)}

/* --- Burger (mobil) --- */
.hdr__burger{display:none;flex-direction:column;justify-content:center;gap:5px;width:44px;height:44px;margin-left:auto}
.hdr__burger span{display:block;width:22px;height:2px;background:#fff;transition:transform .3s var(--ease),opacity .3s var(--ease),background .35s var(--ease);margin-left:auto}
.hdr.light .hdr__burger span{background:var(--ink)}
.hdr.open .hdr__burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.hdr.open .hdr__burger span:nth-child(2){opacity:0}
.hdr.open .hdr__burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

@media(max-width:900px){
  .hdr__in{height:72px}
  .hdr__cta{display:none}
  .hdr__burger{display:flex}
  .hdr__nav{
    position:fixed;top:72px;left:0;right:0;
    flex-direction:column;align-items:stretch;height:auto;gap:0;margin:0;
    background:#fff;border-bottom:1px solid var(--line-soft);
    padding:8px 22px 22px;
    transform:translateY(-8px);opacity:0;visibility:hidden;pointer-events:none;
    transition:opacity .25s var(--ease),transform .25s var(--ease),visibility .25s var(--ease);
  }
  .hdr.open .hdr__nav{transform:none;opacity:1;visibility:visible;pointer-events:auto}
  /* Header im offenen Zustand immer hell */
  .hdr.open{background:#fff;border-bottom-color:var(--line-soft)}
  .hdr.open .hdr__logo-wm{color:var(--ink)}
  .hdr__logo-ic{height:27px;width:auto}
  .hdr__logo-wm{font-size:21px}
  .hdr__item{flex-direction:column;align-items:stretch}
  .hdr__link{height:auto;padding:15px 6px;color:var(--ink);justify-content:space-between}
  .hdr__link::after{display:none}
  .hdr__link:hover{color:var(--ink)}
  .hdr__sub{
    position:static;opacity:1;visibility:visible;transform:none;
    border:0;border-left:1px solid var(--line);border-radius:0;
    min-width:0;margin:0 0 8px 6px;padding:2px 0;
  }
  .hdr__sub a{padding:11px 16px;color:var(--ink-2)}
  .hdr__caret{display:none}
  .hdr__nav-cta{display:inline-flex;align-self:flex-start;margin-top:16px}
}

/* ==============================================================
   HERO
   ============================================================== */
.hero{
  position:relative;overflow:hidden;
  min-height:100vh;display:flex;align-items:center;
}
.hero::after{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(rgba(11,37,87,.26),rgba(11,37,87,.26)),
    url("assets/e-hero.jpg")
      center center / cover no-repeat,
    linear-gradient(
      to right,
      rgba(11,37,87,.955) 0%,
      rgba(11,37,87,.955) 18%,
      rgba(11,37,87,.93) 35%,
      rgba(11,37,87,.84) 44%,
      rgba(11,37,87,.56) 51%,
      rgba(11,37,87,.25) 58%,
      rgba(11,37,87,.07) 63%,
      rgba(11,37,87,0) 68%
    ),
    radial-gradient(circle at 92% 8%,rgba(11,37,87,.16) 0%,rgba(11,37,87,.08) 22%,rgba(11,37,87,0) 55%);
  background-blend-mode:multiply,normal,normal,multiply;
}
.hero__inner{position:relative;z-index:3;width:100%;padding-top:24px}

.hero__lbl{
  display:inline-flex;align-items:center;
  font-size:15px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;
  color:var(--blue);margin-bottom:16px;
}

.hero h1{
  font-size:clamp(40px,5vw,68px);line-height:1.04;font-weight:400;
  color:#fff;letter-spacing:-.02em;max-width:14em;
}
.hero h1 .acc{color:var(--blue);font-weight:500}

.hero__lede{
  margin:22px 0 32px;max-width:540px;
  font-size:clamp(16.5px,1.4vw,19px);line-height:1.55;color:rgba(255,255,255,.8);
}
.hero__lede strong{color:#fff;font-weight:500}

.hero__cta{display:flex;gap:16px;flex-wrap:wrap;align-items:center}

.hero__trust{display:flex;align-items:center;gap:16px;margin-top:32px}
/* Kunden-Avatare: überlappende Gruppe (rund, weißer Ring) + Pfeil-Kreis — wie Original */
.hero__trust-ava{display:flex}
.hero__trust-ava .ava{flex:none;position:relative;width:42px;height:42px;border-radius:50%;overflow:hidden;
  border:2px solid #C1C4BF;margin-left:-13px;background:var(--bg-alt);display:block}
.hero__trust-ava .ava:first-child{margin-left:0}
.hero__trust-ava .ava:nth-child(1){z-index:6}
.hero__trust-ava .ava:nth-child(2){z-index:5}
.hero__trust-ava .ava:nth-child(3){z-index:4}
.hero__trust-ava .ava:nth-child(4){z-index:3}
.hero__trust-ava .ava--arrow{z-index:2;display:flex;align-items:center;justify-content:center;background:#fff;color:#C1C4BF}
.hero__trust-ava img{width:100%;height:100%;object-fit:cover;display:block;
  transform:scale(1.08);transform-origin:50% 32%}
.hero__trust-txt{font-size:15px;color:rgba(255,255,255,.82)}
.hero__trust-txt b{color:var(--blue);font-weight:600}

@media(max-width:760px){
  .hero__inner{padding-top:104px}
  .hero h1{max-width:100%}
  .hero__trust{margin-top:40px}
}

/* ==============================================================
   SEKTIONEN & TYPOGRAFIE
   ============================================================== */
.g{display:grid;grid-template-columns:repeat(12,1fr);gap:24px}
.sec{padding:150px 0}
@media(max-width:900px){.sec{padding:96px 0}}
h2,h3{font-weight:300;color:var(--ink);letter-spacing:-.02em}
.h2{font-size:clamp(32px,3.9vw,54px);line-height:1.1}
.h2 strong{font-weight:500}
.lede{font-size:clamp(16.5px,1.4vw,19px);line-height:1.65;color:var(--ink-2)}
/* Sektions-Label: Marken-Blau, ohne Zierstrich */
.lbl{
  display:inline-flex;align-items:baseline;gap:14px;
  font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--blue);
}
.lbl i{font-style:normal;font-weight:400;color:var(--ink-3);letter-spacing:.08em}
/* Wasserzeichen-Index: Tiefe + Rhythmusbruch */
.wmk{
  position:absolute;top:-30px;right:-6px;z-index:0;pointer-events:none;user-select:none;
  font-size:clamp(96px,12vw,180px);font-weight:300;line-height:1;letter-spacing:-.05em;
  color:rgba(11,37,87,.05);
}
/* Sektionskopf: zweispaltig (H2 links, Lede rechts) */
.head-split{position:relative;border-top:1px solid var(--line);padding-top:32px;margin-bottom:84px}
.head-split .lbl{margin-bottom:24px}
.head-split .g{align-items:end}
.head-split .h2{grid-column:1/8}
.head-split .lede{grid-column:9/13;padding-bottom:6px}
@media(max-width:900px){
  .head-split{margin-bottom:56px}
  .head-split .h2,.head-split .lede{grid-column:1/13}
  .head-split .lede{margin-top:16px}
}

/* Sektionskopf zentriert — dieselbe Grammatik wie #formel und
   #vergleich. Ersetzt fuer #angebot den zweispaltigen head-split,
   nachdem die Lede auf Seitennorm gekuerzt wurde und die schmale
   rechte Spalte nicht mehr gebraucht wird. head-split bleibt fuer
   #zahlen bestehen.
   OHNE Haarlinie ueber dem Kopf (Melvin, 01.09.: „hairline erstmal
   weg") — damit sieht der Kopf aus wie der von #formel, der seine
   Linie ebenfalls nicht selbst traegt.
   Das padding-top:32px war der Rest, der die entfernte Linie vom Kopf
   abgehalten hat; ohne Linie hat es nichts mehr zu polstern und liess
   #angebot als einzige Sektion 182 statt 150px tief anfangen. Raus. */
.head-mitte{position:relative;margin-bottom:84px;
  text-align:center}
.head-mitte .lbl{margin-bottom:16px}
.head-mitte .g{display:block}
.head-mitte .h2{max-width:900px;margin:0 auto}
.head-mitte .lede{max-width:700px;margin:18px auto 0;text-wrap:balance}
@media(max-width:900px){
  .head-mitte{margin-bottom:56px}
  .head-mitte .lede{margin-top:16px}
}

/* ==============================================================
   ZAHLEN & FAKTEN — Data-Band
   ============================================================== */
.data{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.data .g{gap:0}
.dcell{grid-column:span 4;padding:58px 44px 54px;border-left:1px solid var(--line-soft)}
.dcell:first-child{border-left:0;padding-left:0}
.dcell__tag{
  display:inline-block;margin-bottom:34px;
  font-size:11.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;
  color:var(--blue);border:1px solid rgba(24,91,237,.35);border-radius:2px;padding:6px 12px;
}
.dcell__num{
  font-size:clamp(58px,5.4vw,84px);font-weight:300;line-height:1;
  color:var(--ink);letter-spacing:-.03em;display:flex;align-items:baseline;
}
.dcell__num .cnt{font-variant-numeric:tabular-nums;min-width:2ch}
.dcell__num .pct{font-size:.38em;font-weight:400;color:var(--blue);margin-left:.1em}
.dbar{position:relative;height:2px;background:var(--line-soft);margin:26px 0 24px}
.dbar i{position:absolute;inset:0 auto 0 0;background:var(--blue);width:var(--w)}
.anim .dbar i{width:0;transition:width 1.3s var(--ease) .2s}
.anim .dbar.go i{width:var(--w)}
.dcell__txt{font-size:16.5px;line-height:1.65;color:var(--ink-2);max-width:30ch}
.dcell__src{display:block;margin-top:20px;font-size:12.5px;letter-spacing:.04em;color:var(--ink-3)}
@media(max-width:900px){
  .dcell{grid-column:span 12;border-left:0;border-top:1px solid var(--line-soft);padding:38px 0}
  .dcell:first-child{border-top:0}
}


/* ==============================================================
   PAIN — 50/50 Zickzack, Typo-Hierarchie, hell→dunkel Abstieg
   ============================================================== */
.pain{background:var(--bg-alt);transition:background 1s var(--ease);overflow:hidden;padding:150px 0 160px}
.pain.dark{background:var(--navy)}
.pain__head{position:relative;max-width:860px;margin-bottom:104px}
.pain .wmk{color:rgba(11,37,87,.05);transition:color 1s var(--ease)}
.pain.dark .wmk{color:rgba(255,255,255,.06)}
.pain__head .lbl{margin-bottom:20px}
.pain__head .h2{color:var(--ink);transition:color 1s var(--ease)}
.pain.dark .pain__head .h2,.pain.dark .pain__head .h2 strong{color:#fff}

.pscene{align-items:center;margin-bottom:132px}
.pscene__text{grid-column:1/6}
.pscene__viz{grid-column:7/13}
/* Zickzack: Szene mit --rev spiegelt (Grafik links, Text rechts) */
.pscene--rev .pscene__text{grid-column:8/13}
.pscene--rev .pscene__viz{grid-column:1/6}
/* beide Spalten in dieselbe Grid-Zeile — sonst schiebt Auto-Placement die Grafik nach unten */
.pscene__text,.pscene__viz{grid-row:1}

.pscene__title{font-size:clamp(30px,3.4vw,48px);line-height:1.1;font-weight:300;color:#fff;letter-spacing:-.02em;margin-bottom:26px}
.pscene__body{font-size:clamp(16px,1.25vw,17.5px);line-height:1.72;color:rgba(255,255,255,.58);margin-bottom:22px;max-width:40ch}
.pscene__body b{font-weight:500;color:rgba(255,255,255,.9)}
.pscene__body:last-child{margin-bottom:0}
.pscene__pointe{font-size:clamp(18px,1.55vw,21px);line-height:1.5;color:rgba(255,255,255,.82);max-width:38ch;margin-bottom:22px}
.pscene__pointe b{font-weight:500;color:#fff}
.ptransition{max-width:720px;margin:0 auto;text-align:center;font-size:clamp(20px,2vw,26px);line-height:1.45;font-weight:300;color:#fff;letter-spacing:-.01em;text-wrap:balance}

/* --- Szene 1: Suche --- */
.field{display:flex;align-items:center;gap:11px;padding:15px 16px;border:1px solid rgba(255,255,255,.16);border-radius:2px;margin-bottom:18px;color:rgba(255,255,255,.5)}
.field .q{font-size:15.5px;color:#fff;white-space:pre}
.caret{width:1.5px;height:19px;background:#5B8DF3;display:inline-block;margin-left:1px;animation:blink 1s steps(1,end) infinite}
@keyframes blink{50%{opacity:0}}
.s1rows{position:relative}
.res{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px;border:1px solid rgba(255,255,255,.12);border-radius:2px;color:rgba(255,255,255,.72);font-size:16px;
  opacity:0;transform:translateY(9px);transition:opacity .5s var(--ease),transform .5s var(--ease),border-color .45s var(--ease),background .45s var(--ease)}
.res.in{opacity:1;transform:none}
.res.pick{position:relative;overflow:hidden}
.res.pick.picked{border-color:var(--blue);background:rgba(24,91,237,.16)}
.res.pick.picked .name{color:#fff}
.res.pick.picked::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--blue)}
.res .tag{font-style:normal;font-size:13px;font-weight:500;color:#8FB2FF}
.res.empty{border-style:dashed;border-color:rgba(255,255,255,.2);color:rgba(255,255,255,.45)}
.res.empty .miss-tag{font-style:normal;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.45)}
.conn{height:34px;position:relative}
.conn::before{content:"";position:absolute;left:24px;top:0;bottom:0;width:1px;background:rgba(255,255,255,.18);transform:scaleY(0);transform-origin:top;transition:transform .5s var(--ease)}
.conn.in::before{transform:scaleY(1)}

/* --- Szene 2: vier gleiche, Preis gewinnt --- */
.s2{display:flex;flex-direction:column;gap:10px}
.c2row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px;border:1px solid rgba(255,255,255,.12);border-radius:2px;color:rgba(255,255,255,.72);
  opacity:0;transform:translateY(9px);transition:opacity .5s var(--ease),transform .5s var(--ease),border-color .45s var(--ease),background .45s var(--ease)}
.c2row.in{opacity:1;transform:none}
.c2row .name{font-size:16px}
.c2row .meta{font-size:12.5px;color:rgba(255,255,255,.4);letter-spacing:.02em}
.c2row .tag{font-style:normal;font-size:13px;font-weight:500;color:#8FB2FF}
.s2.decided .c2row:not(.c2win){opacity:.4}
.c2win.won{border-color:var(--blue);background:rgba(24,91,237,.16)}
.c2win.won .name{color:#fff}

@media(prefers-reduced-motion:reduce){.caret{display:none}.res,.c2row{opacity:1;transform:none;transition:none}}
@media(max-width:900px){.pain{padding:96px 0}.pscene__text,.pscene__viz,.pscene--rev .pscene__text,.pscene--rev .pscene__viz{grid-column:1/13;grid-row:auto}.pscene__viz{margin-top:32px}.pscene{margin-bottom:80px}}


/* ==============================================================
   VERGLEICH — Vorher/Nachher (Mockups, unten ausgerichtet)
   ============================================================== */
.h2{text-wrap:balance}
.cmp{background:var(--bg-alt)}

/* Mockups: geringere Größendifferenz, unten ausgerichtet (gemeinsame Bodenlinie) */
.cmp__grid{display:grid;grid-template-columns:minmax(0,5.5fr) minmax(0,6.5fr);gap:48px;align-items:end}
.cmp__shot{position:relative;margin:0}
.cmp__mock{width:100%;height:auto;display:block}
.cmp__mock--old{filter:grayscale(.2);opacity:.96}
/* Bodenschatten unter der Nachher-Aufnahme: am 01.09.2026 entfernt.
   Er ragte unter die Figur hinaus und lag als blauer Fleck hinter dem
   Betriebs-Schild. Die Geräte stehen jetzt ohne Ellipse auf Weiß. */
.cmp__shot--new{isolation:isolate}
.cmp__shot--new .cmp__mock{position:relative;z-index:1}

/* Tags: schweben über der oberen Kante, verdecken einen kleinen Teil */
.cmp__tag{position:absolute;top:-13px;left:16px;z-index:2;display:inline-block;
  font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;padding:6px 12px;border-radius:2px;
  background:#fff;border:1px solid var(--line);color:var(--ink-3)}
.cmp__tag--good{background:var(--blue);color:#fff;border-color:var(--blue)}

/* Punkte darunter, spaltenbündig zu den Mockups */
.cmp__lists{display:grid;grid-template-columns:minmax(0,5.5fr) minmax(0,6.5fr);gap:48px;margin-top:26px;align-items:start}
.cmp__points{display:grid;gap:10px}
.cmp__points li{display:flex;gap:12px;align-items:baseline;font-size:15px;line-height:1.45}
.cmp__points--flaws li{color:var(--ink-3)}
.cmp__points--flaws li::before{content:"—";color:var(--ink-3);flex:none}
.cmp__points--wins li{color:var(--ink-2)}
.cmp__points--wins li::before{content:"";width:7px;height:7px;border-radius:2px;background:var(--blue);flex:none;align-self:flex-start;transform:translateY(6px)}

/* CTA neben die Stärken-Liste, vertikal zentriert */
.cmp__winrow{display:flex;justify-content:space-between;align-items:center;gap:40px}
.cmp__winrow .btn--o{flex:none}
.btn--o{border:1px solid var(--line);color:var(--ink)}
.btn--o i{position:absolute;width:10px;height:10px;border:0 solid var(--blue);transition:width .3s var(--ease),height .3s var(--ease);pointer-events:none;font-style:normal}
.btn--o i:first-of-type{top:-1px;left:-1px;border-top-width:2px;border-left-width:2px;width:0;height:0}
.btn--o i:last-of-type{bottom:-1px;right:-1px;border-bottom-width:2px;border-right-width:2px;width:0;height:0}
.btn--o:hover{border-color:rgba(10,23,48,.3)}
.btn--o:hover i{width:12px;height:12px}

@media(max-width:1000px){
  .cmp__grid,.cmp__lists{grid-template-columns:1fr;gap:32px}
  .cmp__grid{align-items:start}
  .cmp__lists{margin-top:22px}
  .cmp__cta{justify-content:flex-start}
}

/* ==============================================================
   LÖSUNG B — Timeline-Aufstieg mit animierten Grafiken (mutig)
   ============================================================== */
.loesb{background:var(--bg);overflow:hidden}
.lb__steps{position:relative;padding-left:0}

/* Fortschritts-Spine (füllt sich beim Scrollen) */
.lb__spine{position:absolute;left:25px;top:14px;bottom:14px;width:2px;background:var(--line)}
.lb__spine i{position:absolute;left:0;top:0;width:2px;height:0;background:var(--blue);transition:height .8s var(--ease)}

.lb__step{position:relative;padding-left:92px;margin-bottom:120px}
.lb__step:last-child{margin-bottom:0}

/* Nummer-Node auf der Spine (Quadrat, 2px Radius) */
.lb__node{position:absolute;left:0;top:0;width:52px;height:52px;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line);border-radius:2px;background:#fff;
  font-size:15px;font-weight:600;letter-spacing:.04em;color:var(--ink-3);
  transition:background .5s var(--ease),color .5s var(--ease),border-color .5s var(--ease),transform .5s var(--ease);z-index:2}
.lb__step.active .lb__node{background:var(--blue);color:#fff;border-color:var(--blue);transform:scale(1.04)}

/* Zickzack-Inneres */
.lb__inner{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
.lb__step--rev .lb__text{order:2}
.lb__step--rev .lb__viz{order:1}

.lb__text,.lb__viz{opacity:0;transform:translateY(18px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.lb__step.active .lb__text{opacity:1;transform:none;transition-delay:.05s}
.lb__step.active .lb__viz{opacity:1;transform:none;transition-delay:.15s}

.lb__title{font-size:clamp(26px,2.6vw,38px);font-weight:300;color:var(--ink);letter-spacing:-.02em;line-height:1.08;margin-bottom:20px}
.lb__body{font-size:16px;line-height:1.72;color:var(--ink-2);margin-bottom:20px;max-width:42ch}
.lb__pointe{font-size:clamp(17px,1.5vw,20px);line-height:1.5;color:var(--ink);font-weight:300;max-width:36ch}
.lb__pointe b{font-weight:500;color:var(--blue)}

/* --- gemeinsame Viz-Karte --- */
.lbviz{background:var(--bg-alt);border:1px solid var(--line);border-radius:2px;padding:26px}

/* Viz 1 — Google-Suche, Ihr Betrieb klettert auf Platz 1 */
.lbviz--rank{background:#fff}
.gsearch{margin-bottom:16px}
.glogo{display:block;font-size:22px;font-weight:500;letter-spacing:-.01em;line-height:1;margin-bottom:14px}
.glogo b{font-weight:500}
.gbar{display:flex;align-items:center;gap:12px;padding:11px 16px;background:#fff;border:1px solid var(--line);border-radius:22px}
.gmag{color:#9aa0a6;flex:none}
.gq{flex:1;font-size:15px;color:var(--ink)}
.gmic{flex:none}
.gmeta{font-size:12px;color:var(--ink-3);margin-bottom:14px}
.rank{position:relative;height:280px}
.rank__row{position:absolute;left:0;right:0;top:0;height:64px;display:flex;flex-direction:column;justify-content:center;gap:3px;
  padding:0 14px;background:#fff;border-bottom:1px solid var(--line-soft);border-radius:2px;
  transform:translateY(calc(var(--slot) * 72px));
  transition:transform .85s var(--ease),background .5s var(--ease),box-shadow .5s var(--ease)}
.gr__url{font-size:12px;color:#5f6368;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gr__title{font-size:15.5px;color:#1a0dab;line-height:1.25;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rank__me .gr__url,.rank__me .gr__title{padding-right:84px}
.rank__badge{position:absolute;top:50%;right:12px;transform:translateY(-50%);opacity:0;
  font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  color:#fff;background:var(--blue);border-radius:2px;padding:5px 10px;transition:opacity .4s var(--ease) .55s}
.lbviz--rank.go .rank__me{transform:translateY(0);background:rgba(24,91,237,.07);box-shadow:inset 3px 0 0 var(--blue)}
.lbviz--rank.go .rank__me .gr__title{color:var(--blue)}
.lbviz--rank.go .rank__row:not(.rank__me){transform:translateY(calc((var(--slot) + 1) * 72px));opacity:.5}
.lbviz--rank.go .rank__badge{opacity:1}

/* Viz 2 — Wahrgenommener Eindruck (Balken) */
.perc__cap{display:block;font-size:11.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:22px}
.perc__row{display:flex;align-items:center;gap:16px;margin-bottom:18px}
.perc__row:last-child{margin-bottom:0}
.perc__name{flex:none;width:78px;font-size:14px;color:var(--ink-2)}
.pbar{position:relative;flex:1;height:10px;background:var(--line-soft);border-radius:2px;overflow:hidden}
.pbar i{position:absolute;inset:0 auto 0 0;width:0;background:var(--ink-3);opacity:.55;border-radius:2px;transition:width 1s var(--ease)}
.perc__me .perc__name{color:var(--ink);font-weight:500}
.perc__me .pbar i{background:var(--blue);opacity:1}
.perc__tag{flex:none;font-style:normal;font-size:12px;font-weight:600;letter-spacing:.06em;color:var(--blue);opacity:0;transition:opacity .5s var(--ease) .7s}
.lbviz--perc.go .pbar i{width:var(--w)}
.lbviz--perc.go .perc__tag{opacity:1}

/* Viz 3 — Posteingang (Mail-Client) */
.lbviz--inbox{background:#fff;padding:0;overflow:hidden}
.mail__top{display:flex;align-items:center;justify-content:space-between;padding:15px 20px;border-bottom:1px solid var(--line)}
.mail__title{font-size:15px;font-weight:600;color:var(--ink)}
.mail__flag{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);border:1px solid var(--line);border-radius:2px;padding:3px 8px}
.feed{display:block}
.feed__i{display:flex;align-items:flex-start;gap:14px;padding:14px 20px;border-bottom:1px solid var(--line-soft);
  opacity:0;transform:translateY(10px);transition:opacity .5s var(--ease),transform .5s var(--ease)}
.feed__i:last-child{border-bottom:0}
.feed__i.in{opacity:1;transform:none}
.feed__i--unread{background:rgba(24,91,237,.035)}
.mail__av{flex:none;width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:600;color:#fff;background:var(--c,#185BED)}
.mail__body{flex:1;min-width:0}
.mail__line1{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:5px}
.mail__from{font-size:14.5px;font-weight:500;color:var(--ink-2)}
.feed__i--unread .mail__from{font-weight:600;color:var(--ink)}
.mail__time{flex:none;font-size:12px;color:var(--ink-3)}
.mail__line2{display:flex;align-items:center;gap:9px;min-width:0}
.feed__t{flex:none;font-size:10.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;border-radius:2px;padding:3px 7px}
.feed__t--a{color:#fff;background:var(--blue)}
.feed__t--b{color:#fff;background:var(--navy)}
.feed__x{font-size:13.5px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.lb__cta{margin-top:96px;display:flex;justify-content:center}

@media(prefers-reduced-motion:reduce){
  .lb__text,.lb__viz{opacity:1;transform:none}
  .rank__row{transition:none}
}
@media(max-width:900px){
  .lb__step{padding-left:76px;margin-bottom:80px}
  .lb__spine{left:21px}
  .lb__node{width:44px;height:44px;font-size:14px}
  .lb__inner{grid-template-columns:1fr;gap:30px}
  .lb__step--rev .lb__text{order:1}
  .lb__step--rev .lb__viz{order:2}
  .lb__cta{margin-top:64px}
}
/* ==============================================================
   FEINSCHLIFF — Google-Markierung leiser (Badge weg, ruhiger Akzent)
   ============================================================== */
.rank__badge{display:none}
.lbviz--rank.go .rank__me{background:rgba(24,91,237,.045);box-shadow:inset 2px 0 0 var(--blue)}
.rank__me .gr__url,.rank__me .gr__title{padding-right:14px}
.lbviz--rank.go .rank__me .gr__title{color:var(--blue);font-weight:400}

/* ===== Variante A — große dünne Zahl auf der Spine (ungeboxt) ===== */
.lb__node{width:60px;height:auto;min-height:0;left:-4px;padding:8px 0;
  background:var(--bg);border:0;border-radius:0;
  display:flex;align-items:center;justify-content:center;
  font-size:48px;font-weight:300;letter-spacing:-.04em;line-height:.9;color:var(--ink-3);
  transform:none;transition:color .5s var(--ease)}
.lb__step.active .lb__node{color:var(--blue);background:var(--bg);transform:none}
@media(max-width:900px){.lb__node{width:48px;height:auto;font-size:34px;left:-3px}}


/* ==============================================================
   GRAFIK 1 v2 — reichhaltiges Google-Ergebnis (Rich Result + Maps)
   ============================================================== */
.serp{background:#fff}
.serp__head{margin-bottom:22px}
.serp .glogo{display:block;font-size:22px;font-weight:500;letter-spacing:-.01em;line-height:1;margin-bottom:14px}
.serp .glogo b{font-weight:500}
.serp .gbar{display:flex;align-items:center;gap:12px;padding:11px 16px;background:#fff;border:1px solid var(--line);border-radius:22px}
.serp .gmag{color:#9aa0a6;flex:none}
.serp .gq{flex:1;font-size:15px;color:var(--ink)}
.serp .gmic{flex:none}
.serp__tabs{display:flex;gap:22px;margin-top:14px;padding-bottom:0;border-bottom:1px solid var(--line-soft)}
.serp__tabs span{font-size:13px;color:#5f6368;padding-bottom:10px}
.serp__tabs .on{color:var(--blue);box-shadow:inset 0 -2px 0 var(--blue)}

.serp__grid{display:grid;grid-template-columns:1.15fr .85fr;gap:24px;align-items:start}

/* Rich Result */
.serp__result{min-width:0}
.serp__title{font-size:19px;line-height:1.2;color:#1a0dab;font-weight:400;margin-bottom:4px}
.serp__url{font-size:13px;color:#0a7c2f;margin-bottom:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.serp__desc{font-size:13.5px;line-height:1.55;color:#4d5156;margin-bottom:10px}
.serp__chips{font-size:13px;color:#5f6368;margin-bottom:14px}
.serp__rate{display:flex;align-items:center;gap:8px}
.serp__score{font-size:13.5px;color:#70757a}
.stars{position:relative;display:inline-block;font-size:15px;line-height:1;letter-spacing:1px}
.stars__base{color:#dadce0}
.stars__fill{position:absolute;left:0;top:0;color:#fbbc05;overflow:hidden;white-space:nowrap;width:0;transition:width 1s var(--ease) .2s}
.serp.go .stars__fill{width:100%}
.serp__count{font-size:13px;color:#70757a}

/* Maps-Karte */
.serp__map{border:1px solid var(--line);border-radius:2px;overflow:hidden;background:#fff}
.serp__mapimg{position:relative;height:132px;overflow:hidden}
.serp__mapimg .map{display:block;width:100%;height:100%}
.serp__pin{position:absolute;left:52%;top:46%;transform:translate(-50%,-135%);opacity:0;
  transition:transform .55s var(--ease) .35s,opacity .3s var(--ease) .35s;
  filter:drop-shadow(0 3px 4px rgba(10,23,48,.28))}
.serp.go .serp__pin{transform:translate(-50%,-100%);opacity:1}
.serp__mapinfo{padding:13px 15px 15px}
.serp__mapname{font-size:15px;color:var(--ink);font-weight:500;margin-bottom:5px}
.serp__rate--sm{gap:6px;margin-bottom:7px}
.stars-sm{color:#fbbc05;font-size:13px;letter-spacing:1px;line-height:1}
.serp__rate--sm .serp__score,.serp__rate--sm .serp__count{font-size:12.5px}
.serp__mapmeta{font-size:12.5px;color:#5f6368;margin-bottom:5px}
.serp__open{font-size:12.5px;color:#5f6368}
.serp__open b{color:#0a7c2f;font-weight:500}

/* Aufbau-Reveal */
.serp__result,.serp__map{opacity:0;transform:translateY(10px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.serp.go .serp__result{opacity:1;transform:none;transition-delay:.05s}
.serp.go .serp__map{opacity:1;transform:none;transition-delay:.18s}

@media(max-width:560px){
  .serp__grid{grid-template-columns:1fr;gap:20px}
}


/* ==============================================================
   REST-SEKTIONEN (aus Prototyp portiert) — 05–09 + Footer
   ============================================================== */
.btn--w{background:#fff;color:var(--navy)}
.btn--w:hover{background:#E9EEF9}
@keyframes blip{0%,100%{opacity:1}50%{opacity:.25}}

/* Sektionsköpfe (Rhythmus) */
.head-row{position:relative;border-top:1px solid var(--line);padding-top:30px;margin-bottom:64px;
  display:flex;align-items:baseline;justify-content:space-between;gap:32px;flex-wrap:wrap}
.head-row .h2{font-size:clamp(28px,3vw,40px)}
/* Ohne Linie (01.09.2026): #fragen ist die einzige Sektion mit
   .head-left, und die Linie war dort dasselbe Bauteil, das über dem
   CTA weggefallen ist. Das padding-top von 32px hing an der Linie
   und ist mit ihr weg — der Abstand kommt jetzt von #fragen. */
.head-left{position:relative;margin-bottom:72px;max-width:640px}
.head-left .lbl{margin-bottom:22px}

/* Ecken-Marker */
.tick{position:absolute;width:14px;height:14px;border-color:rgba(11,37,87,.4);border-style:solid}
.tick--tl{top:-1px;left:-1px;border-width:2px 0 0 2px}
.tick--tr{top:-1px;right:-1px;border-width:2px 2px 0 0}

/* 05 · Ergebnisse */
.refrow{display:grid;grid-template-columns:repeat(12,1fr);gap:24px;align-items:baseline;padding:38px 0;border-top:1px solid var(--line-soft)}
.refrow:last-of-type{border-bottom:1px solid var(--line-soft)}
.refrow__score{grid-column:1/3;font-size:14px;letter-spacing:2.5px;color:var(--navy);white-space:nowrap}
.refrow__score b{display:block;font-size:12px;letter-spacing:.06em;color:var(--ink-3);font-weight:400;margin-top:6px}
.refrow__quote{grid-column:3/10;font-size:clamp(17px,1.6vw,21px);line-height:1.55;font-weight:300;color:var(--ink)}
.refrow__who{grid-column:10/13;text-align:right}
.refrow__who b{display:block;font-size:14.5px;font-weight:500;color:var(--ink)}
.refrow__who span{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.refs__note{margin-top:26px;font-size:13px;color:var(--ink-3);text-align:right}
@media(max-width:900px){
  .refrow{gap:10px;padding:30px 0}
  .refrow__score,.refrow__quote,.refrow__who{grid-column:1/13}
  .refrow__who{text-align:left;margin-top:4px}
}

/* 06 · Ablauf */
.proc{position:relative}
.proc__track{position:relative;height:2px;background:var(--line-soft);margin-bottom:14px}
.proc__track i{display:block;height:100%;width:100%;background:var(--blue)}
.anim .proc__track i{width:0;transition:width 2s var(--ease) .2s}
.anim .proc__track i.go{width:100%}
.proc__node{position:absolute;top:-5px;width:12px;height:12px;border-radius:2px;background:#fff;border:2px solid var(--blue)}
.proc__ruler{display:flex;justify-content:space-between;margin-bottom:52px;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.proc__ruler span{position:relative;padding-top:12px}
.proc__ruler span::before{content:"";position:absolute;top:0;left:50%;width:1px;height:7px;background:var(--line)}
.pstep{grid-column:span 3}
.pstep__no{font-size:44px;font-weight:300;color:var(--ink-3);letter-spacing:-.02em;line-height:1}
.pstep__t{font-size:18px;font-weight:500;color:var(--ink);margin:16px 0 10px}
.pstep__d{font-size:14.5px;line-height:1.65;color:var(--ink-2)}
.pstep__meta{display:inline-block;margin-top:16px;font-size:11.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--blue)}
@media(max-width:900px){.proc__ruler{display:none}.pstep{grid-column:span 6;margin-bottom:36px}}
@media(max-width:560px){.pstep{grid-column:1/13}}

/* 07 · Direktkontakt — neues Layout, großes Foto */
/* Weißer Abstand rings um das graue Band, gemessen 01.09.2026:
   über der Kante lagen 150px, darunter 91px — das Band klebte an der
   FAQ. Beide jetzt auf 130px.

   Gerechnet wird bis zur Farbkante, nicht bis zur Tinte: bei einer
   farbigen Fläche liest das Auge die Kante als Grenze; das Innenmaß
   des Bandes (150px) ist dessen eigene Sache.

   Warum 130 und nicht der Seitenstandard 150: die Farbkante trennt
   schon, deshalb darf hier weniger Weiß stehen als zwischen zwei
   weißen Abschnitten. 150 unten hätte die FAQ um 59px nach unten
   geschoben — der Bereich war ohnehin schon als zu luftig bemängelt.

   MESSFALLE, hier zum zweiten Mal in einer Sitzung reingelaufen:
   [data-rv] steht vor dem Reveal auf translateY(22px)/opacity:0.
   Wer misst, ohne vorher `.in` zu setzen UND die Transition zu
   killen, bekommt Werte, die um zweistellige Beträge danebenliegen. */
#ablauf{padding-bottom:130px}
@media(max-width:900px){#ablauf{padding-bottom:84px}}
.contact{background:var(--bg-alt)}
.contact .container{position:relative}
.contact .wmk{top:-8px;left:-8px;right:auto}
.contact__grid{align-items:center}
/* Inhaber freigestellt: kein Kasten, weicher Ausfaden nach unten.

   ZUM BILD (01.09.2026): die Datei ist beschnitten. Vorher lag im PNG
   ein durchsichtiger Rand — die Person füllte nur 21–100 % der Höhe und
   17–87 % der Breite. Der Bildkasten war dadurch deutlich größer als die
   Person: 143px leerer Raum über dem Kopf, 89px links. Sichtbare Folge:
   die Person begann bei x=150, während der Rest der Seite und die
   Bildunterschrift darunter bei x=61 anfangen — das Foto war als
   einziges Element der Seite auf nichts ausgerichtet. Gemessen, nicht
   geschätzt (Alphakanal-Bbox 275/446/1399/2134).

   Jetzt ist der Kasten die Person. `width:70%` hält die Person exakt so
   groß wie vorher — 70 % der Spalte entspricht der Ink-Breite, die sie
   im ungeschnittenen Bild hatte. Wer die Breite ändert, ändert damit
   auch die optische Höhe und muss die Ausrichtung unten neu messen.

   FASSUNG J (01.09.2026, entschieden nach Vergleich gegen H1/82 %):
   ganzes Bild, aspect-ratio 800/1201 — kein Beschnitt unten mehr.
   Ausgerichtet wird nicht mehr über gleiche Unterkanten, sondern
   mittig: die Person überragt den Textblock oben und unten um
   denselben Betrag (`.contact__panel{align-self:center}`). Bei
   ungleich hohen Spalten ist das die einzige Definition von „auf
   einer Höhe“, die trägt. */
.contact__photo{grid-column:1/6;position:relative;margin:0;border:0;border-radius:0;overflow:visible;background:none;align-self:start;margin-top:9px}
.contact__photo img{width:70%;aspect-ratio:800/1201;height:auto;display:block;
  object-fit:cover;object-position:top center;
  -webkit-mask-image:linear-gradient(to bottom,#000 70%,transparent 100%);
  mask-image:linear-gradient(to bottom,#000 70%,transparent 100%)}
/* Die Unterschrift bleibt UNTER der Person. Zwei Versuche, sie auf
   Knopfhöhe hochzuziehen (-116px, -123px), landeten auf Unterarm
   bzw. Oberarm und waren nicht lesbar. Wer es doch will, nimmt sie
   aus dem Fluss (position:absolute + z-index über der Maske) — ein
   negatives margin-top verkürzt die Figur, dadurch schrumpft die
   Rasterzeile und der mittig gesetzte Textblock rutscht mit hoch:
   der Abstand schließt sich nur zur Hälfte. */
.contact__photo figcaption{position:static;padding:0;margin-top:-26px;background:none}
.contact__photo figcaption b{display:block;font-size:16px;font-weight:600;color:var(--ink)}
.contact__photo figcaption span{font-size:12.5px;letter-spacing:.04em;color:var(--ink-3)}

/* Hintergrund-Rhythmus: Ergebnisse abgesetzt (Testimonials auf getöntem Grund) */
#ergebnisse{background:var(--bg-alt)}
.contact__panel{grid-column:6/13;align-self:center}
.contact__status{display:flex;width:fit-content;align-items:center;gap:10px;margin-bottom:24px;font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.contact__status::before{content:"";width:8px;height:8px;border-radius:2px;background:var(--blue);animation:blip 1.8s var(--ease) infinite}
.contact__panel .lbl{display:block;margin-bottom:14px}
.contact__panel .h2{margin:0 0 20px}
.contact__panel .lede{max-width:46ch;margin-bottom:30px}
/* Die Zeilen enden dort, wo auch die Lede endet. Vorher liefen die
   Linien 223px weiter nach rechts als jeder Text darüber. 46ch wie bei
   der Lede geht NICHT: ch hängt an der Schriftgröße des Elements, und
   die Zeilen sind kleiner gesetzt — sie endeten damit 79px zu früh.
   505px ist die nachgemessene Breite der Lede (46ch bei deren
   Schriftgröße) in dieser Spaltenbreite. Kanten fluchten dadurch
   exakt; auf der Testseite standen hier 513, also 8px daneben. */
.contact__rows{display:grid;border-top:1px solid var(--line);margin-bottom:32px;max-width:505px}
.crow{display:grid;grid-template-columns:160px 1fr;gap:20px;align-items:baseline;padding:16px 0;border-bottom:1px solid var(--line-soft)}
.crow small{font-size:11.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.crow p,.crow a{font-size:15.5px;font-weight:500;color:var(--ink)}
.crow a{position:relative;width:fit-content}
.crow a::after{content:"";position:absolute;left:0;bottom:-2px;height:1px;width:0;background:var(--blue);transition:width .35s var(--ease)}
.crow a:hover{color:var(--blue)}
.crow a:hover::after{width:100%}
.crow .sub{display:block;font-size:12.5px;font-weight:400;color:var(--ink-3);margin-top:3px}
.contact__act{display:flex;gap:14px;flex-wrap:wrap}
@media(max-width:900px){
  .contact__photo,.contact__panel{grid-column:1/13}
  .contact__photo{max-width:340px}
  .contact__panel{margin-top:34px}
  .crow{grid-template-columns:1fr;gap:4px}
}

/* 08 · FAQ */
.faq{max-width:880px}
.faq details{border-bottom:1px solid var(--line-soft)}
.faq details:first-of-type{border-top:1px solid var(--line-soft)}
.faq summary{list-style:none;display:flex;align-items:center;gap:22px;padding:26px 0;cursor:pointer;font-size:18px;font-weight:400;color:var(--ink);transition:color .2s}
.faq summary::-webkit-details-marker{display:none}
/* Kein Blau mehr in der Liste: Blau ist auf dieser Seite die Farbe
   des Knopfes. Eine geöffnete Zeile darf nicht dasselbe Gewicht
   tragen wie „Erstgespräch anfragen". Reagiert deshalb der Kasten,
   nicht der Text. */
.faq summary:hover .x{border-color:var(--ink-3);color:var(--ink)}
.faq summary .q{flex:1}
.faq summary .x{flex-shrink:0;width:28px;height:28px;border:1px solid var(--line);border-radius:2px;display:flex;align-items:center;justify-content:center;color:var(--ink-3);transition:border-color .3s,color .3s}
/* Offen = Minus. Vorher drehte sich das Quadrat um 45° und füllte
   sich blau — das einzige rotierende Element der ganzen Seite, und
   durch den 2px-Radius wurde daraus eine Linse statt einer Raute.
   Jetzt wird nur der senkrechte Strich ausgeblendet. */
.faq details[open] summary .x{border-color:var(--ink);color:var(--ink)}
.faq .x .v{transition:opacity .25s var(--ease)}
.faq details[open] summary .x .v{opacity:0}
/* Links bündig: ohne die Nummernspalte (F.01 …) beginnt die Frage
   am Containerrand, die Antwort muss mit. Der alte Einzug von 62px
   hing an 38px Nummer + 22px Abstand. */
.faq .a{padding:0 60px 28px 0;font-size:15.5px;line-height:1.7;color:var(--ink-2)}
@media(max-width:700px){.faq .a{padding-left:2px}}

/* FINAL CTA — eine Zeile im Raster, weiß (Fassung A, 01.09.2026).
   Ersetzt den Navy-Block: der war die einzige dunkle Fläche der Seite
   und stand direkt über dem hellgrauen Footer — zwei Farbwechsel auf
   200px. Getrennt wird jetzt über dieselbe Haarlinie in Containerbreite,
   die auch die Sektionsköpfe benutzen (.head-left, .head-split). */
/* KEINE Trennlinie über dem Block (entschieden 01.09.2026, Melvin).
   Getrennt wird allein über den Farbwechsel Weiß -> --bg-alt.

   Vorgeschichte, damit das niemand rückgängig macht, ohne sie zu kennen:
   Solange der Block weiß auf weiß stand, war eine Linie zwingend, und
   sie musste über die volle Breite laufen — eingerückt in Containerbreite
   ist sie auf dieser Seite die Ankündigung eines Sektionskopfes
   (.head-left, .head-split, #formel::before), auf den immer ein blauer
   Kicker, eine Nummer und eine H2 folgen. Der Abschlussblock hat davon
   nichts, die eingerückte Linie hätte also eine Sektion versprochen, die
   nicht kommt.

   Seit der Block auf --bg-alt steht, trägt die Fläche die Trennung
   selbst. Eine Fassung mit --line-soft wurde gebaut und verworfen: gegen
   den Farbsprung ist sie unsichtbar, also nur Code ohne Wirkung.

   Falls die Hintergrundfarbe je wieder auf Weiß zurückgeht: Linie
   wieder rein, und zwar hier am <section>, nicht an .final__row. */
/* Abstände am Seitenende (01.09.2026, gemessen mit abgeschalteten
   Transitions — .final__row traegt beim Einblenden translateY(22px),
   und getComputedStyle liefert direkt nach dem Setzen der Klasse noch
   den Startwert. Wer hier nachmisst, ohne die Transitions vorher
   auszuschalten, misst 22px daneben.
   Zwischen letzter FAQ-Zeile und Blockoberkante lagen 150px — das volle
   Sektionspolster. Die Kante hing dadurch mitten in einer leeren Zone,
   statt die Fragenliste zu schließen. Deshalb bekommt #fragen unten ein
   eigenes, kleineres Polster; .sec bleibt global bei 150px.
   Der Block selbst ist optisch zentriert, nicht kastenzentriert:
   gemessen wird von der Blockoberkante bis zur Versalhöhe (45px) und von
   der Unterlänge der Zusagen-Zeile bis zur Footerkante (45px). Die Kästen
   sind deshalb ungleich gepolstert (34 oben / 42 unten). */
/* In der Höhe zentriert: der weiße FAQ-Streifen steht zwischen zwei
   grauen Flächen (#kontakt und dem CTA). Statt der globalen 150px von
   .sec steht oben und unten derselbe optische Abstand: 96px.
   Die Kastenwerte sind trotzdem ungleich (86 oben / 96 unten), weil
   über den Versalien des Kickers „FRAGEN" rund 10px Vorlauf liegen,
   unter der letzten Haarlinie der Liste dagegen nichts. Gemessen mit
   abgeschalteten Transitions, siehe Hinweis weiter unten. */
/* 125 statt 130: der Kicker bringt 5px eigenen Vorlauf mit, gemessen. */
#fragen{padding-top:125px;padding-bottom:96px}
/* Grund: --bg-alt, dieselbe Fläche wie die Kontaktsektion
   (.contact{background:var(--bg-alt)}). */
.final{background:var(--bg-alt)}
.final__row{padding:34px 0 42px;
  display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);
  gap:48px;align-items:center}
.final__row .h2{margin:0 0 16px}
/* Die drei Zusagen als eine Zeile statt als Hakenliste — die Liste war
   der größte Einzelposten an der Bauhöhe des alten Blocks. */
.final__pts{margin:0;font-size:14.5px;line-height:1.6;color:var(--ink-2)}
.final__pts span{color:var(--ink-3);margin:0 12px}
.final__act{justify-self:end}
@media(max-width:900px){#fragen{padding-top:79px;padding-bottom:64px}}
@media(max-width:760px){.final__row{grid-template-columns:1fr;gap:30px;
  padding:26px 0 40px}.final__act{justify-self:start}}

/* FOOTER — Navy mit gespiegeltem Berg (Fassung F05, 01.09.2026).
   Vorher: hellgrau, senkrechte Streifen alle 120px, Trennlinie über der
   Rechtszeile. Beide Linienarten sind raus — getrennt wird nur noch über
   Abstand.

   Der Berg steht kopfüber (scaleY(-1)) und sehr schwach: er soll als
   Nachhall des Heros lesbar sein, nicht als zweites Hero. Zwei
   Bergbilder auf einer Seite tragen nur, wenn das zweite deutlich
   leiser ist — deshalb opacity .28 plus Schleier darüber.

   Der Berg liegt in einer eigenen Ebene, nicht als background des
   <footer>: nur so lässt er sich spiegeln, ohne den Inhalt mitzudrehen. */
footer{position:relative;overflow:hidden;background:var(--navy);
  padding:96px 0 44px;color:rgba(255,255,255,.66)}
.ft__bg{position:absolute;inset:0;z-index:0;pointer-events:none}
.ft__bg--berg{background:url(assets/footer-berg.webp) center 76% / cover no-repeat;
  opacity:.28;transform:scaleY(-1)}
.ft__bg--schleier{background:linear-gradient(180deg,rgba(11,37,87,.92) 0%,rgba(11,37,87,.72) 40%,rgba(7,26,62,.94) 100%)}
footer > .container{position:relative;z-index:1}

.ft__top{display:grid;grid-template-columns:repeat(12,1fr);gap:24px;padding-bottom:0}
.ft__brand{grid-column:1/6}
.ft__logo{display:inline-flex;align-items:center;gap:10px}
.ft__logo img{height:30px;width:auto;display:block}
.ft__logo b{font-size:23px;font-weight:500;letter-spacing:-.01em;color:#fff}
.ft__brand p{margin-top:22px;font-size:15px;line-height:1.7;max-width:300px;color:rgba(255,255,255,.7)}
.ft__col{grid-column:span 2}
.ft__col:first-of-type{grid-column:7/9}
.ft__col h5{font-size:11.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.60);margin-bottom:18px}  /* .42 gemessen 3,78:1 — unter der Lesbarkeitsschwelle */
/* list-style:none fehlte — die Fussliste zeigte graue Punkte, am
   Desktop wie am Handy (23.09.2026). */
.ft__col ul{display:grid;gap:10px;list-style:none;margin:0;padding:0}
.ft__col a{position:relative;font-size:14px;color:rgba(255,255,255,.72);transition:color .2s}
.ft__col a::after{content:"";position:absolute;left:0;bottom:-2px;height:1px;width:0;background:#fff;transition:width .3s var(--ease)}
.ft__col a:hover{color:#fff}
.ft__col a:hover::after{width:100%}
/* Kein border-top mehr: der Abstand trennt. */
.ft__legal{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;
  margin-top:88px;font-size:12.5px;color:rgba(255,255,255,.58)}  /* .38 gemessen 3,49:1 */
.ft__legal .wm-id{letter-spacing:.14em;text-transform:uppercase}
.ft__legal a{color:rgba(255,255,255,.6)}
.ft__legal a:hover{color:#fff}
@media(max-width:900px){footer{padding:72px 0 40px}
  .ft__brand{grid-column:1/13;margin-bottom:24px}
  .ft__col,.ft__col:first-of-type{grid-column:span 4}
  .ft__legal{margin-top:64px}}
@media(max-width:560px){.ft__col,.ft__col:first-of-type{grid-column:1/13;margin-bottom:8px}}

/* ============================================================
   DIE UNSICHTBAREN KOSTEN — 2 Szenen, Kontrast-Umkehr
   dunkel · Inter Tight · Blau als Akzent · 2px Kanten
   ============================================================ */
.sz-sec{position:relative;background:var(--navy-deep);padding:150px 0 160px;overflow:hidden}
.sz-sec > .container{position:relative;z-index:1}

.sz-head{position:relative;margin-bottom:104px;padding-bottom:52px;border-bottom:1px solid var(--wline)}
.sz-sec .wmk{color:rgba(255,255,255,.06);top:-52px}
.sz-sec .lbl{margin-bottom:24px;color:#fff}
.sz-sec .lbl i{color:#5B8DF3}
.sz-head__row{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:56px;align-items:end}
.sz-sec .sz-head__row .h2{color:#fff}
.sz-sec .h2 strong{color:#fff;font-weight:500}
.sz-sec .lede{color:rgba(255,255,255,.6)}

/* --- Szenen-Zeilen (ein Gedanke + ein Bild) --- */
.sz-row{align-items:center;margin-bottom:124px}
.sz-text{grid-column:1/6}
.sz-viz{grid-column:7/13}
.sz-row--rev .sz-text{grid-column:8/13}
.sz-row--rev .sz-viz{grid-column:1/7}
.sz-text,.sz-viz{grid-row:1}

.sz-title{font-size:clamp(26px,3vw,40px);font-weight:300;line-height:1.16;letter-spacing:-.02em;color:#fff;margin-bottom:28px}
.sz-body{font-size:16.5px;line-height:1.72;color:rgba(255,255,255,.6);margin-bottom:20px;max-width:42ch}
.sz-body:last-child{margin-bottom:0}
.sz-body b{color:#fff;font-weight:500}
.sz-pointe{font-size:clamp(18px,1.6vw,21px);line-height:1.5;color:rgba(255,255,255,.85);max-width:38ch;margin-bottom:20px}
.sz-pointe b{color:#fff;font-weight:500}

/* ============ Grafik 1A — vier gleiche Karten, die Wahl fällt ============ */
.pick{position:relative}
.pick__grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.pick__card{position:relative;border:1px solid var(--wline);border-radius:2px;background:rgba(255,255,255,.03);
  padding-bottom:38px;opacity:0;transform:translateY(9px);
  transition:opacity .6s var(--ease),transform .6s var(--ease),background .5s var(--ease),border-color .5s var(--ease)}
.pick.in .pick__card{opacity:.62;transform:none}
.pick.in .pick__card:nth-child(2){transition-delay:.08s}
.pick.in .pick__card:nth-child(3){transition-delay:.16s}
.pick.in .pick__card:nth-child(4){transition-delay:.24s}

.pick__bar{display:flex;align-items:center;gap:8px;padding:9px 11px;border-bottom:1px solid var(--wline)}
.pick__dots{display:flex;gap:4px}
.pick__dots i{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.18)}
.pick__url{font-size:11px;color:rgba(255,255,255,.42)}
.pick__page{padding:15px 13px 13px;display:flex;flex-direction:column;gap:7px}
.pick__ln{height:7px;border-radius:2px;background:rgba(255,255,255,.10);width:88%;transition:background .5s var(--ease)}
.pick__ln--h{height:11px;width:56%;background:rgba(255,255,255,.16)}
.pick__ln--s{width:68%}
.pick__tag{position:absolute;left:13px;bottom:13px;font-size:12px;font-weight:500;color:rgba(255,255,255,.55);transition:color .5s var(--ease)}
.pick__tag--you{color:rgba(255,255,255,.72)}

/* Kontrast-Umkehr: der Gewinner wird hell, Sie fallen zurück */
.pick__win{position:absolute;right:12px;bottom:12px;font-size:11.5px;font-weight:600;letter-spacing:.02em;
  color:#8FB2FF;opacity:0;transform:translateX(-4px);
  transition:opacity .5s var(--ease),transform .5s var(--ease)}
.pick.decided .pick__card--win{opacity:1;background:rgba(24,91,237,.20);border-color:#185BED}
.pick.decided .pick__card--win .pick__tag{color:#fff}
.pick.decided .pick__card--win .pick__url{color:rgba(255,255,255,.62)}
.pick.decided .pick__card--win .pick__win{opacity:1;transform:none;transition-delay:.18s}
.pick.decided .pick__card:not(.pick__card--win){opacity:.34}
.pick.decided .pick__card--you:not(.pick__card--win){opacity:.20}

/* Cursor — fährt zur gewählten Karte */
.pick__cursor{position:absolute;left:46%;top:38%;opacity:0;
  transition:opacity .4s var(--ease),left .8s var(--ease),top .8s var(--ease)}
.pick.in .pick__cursor{opacity:1}
.pick.moved .pick__cursor{left:78%;top:76%}

/* ============ Grafik 2A — Suche, in der Sie fehlen ============ */
.miss{border:1px solid var(--wline);border-radius:2px;background:rgba(255,255,255,.02);padding:18px}
.miss__field{display:flex;align-items:center;gap:10px;padding:13px 15px;border:1px solid var(--wline);border-radius:2px;margin-bottom:16px;color:rgba(255,255,255,.4)}
.miss__q{font-size:15px;color:#fff;white-space:pre}
.miss__caret{width:1.5px;height:17px;background:#5B8DF3;display:inline-block;animation:szBlink 1s steps(1,end) infinite}
@keyframes szBlink{50%{opacity:0}}

.miss__list{display:flex;flex-direction:column;gap:4px}
.miss__hit{position:relative;display:flex;flex-direction:column;padding:15px 16px;border:1px solid transparent;border-radius:2px;
  opacity:0;transform:translateY(8px);
  transition:opacity .6s var(--ease),transform .6s var(--ease),background .5s var(--ease),border-color .5s var(--ease)}
.miss__hit.in{opacity:.6;transform:none}
.miss__url{font-size:12px;color:#7FA8FF;margin-bottom:5px}
.miss__ttl{font-size:15.5px;color:#fff;line-height:1.3;margin-bottom:5px}
.miss__meta{font-size:12.5px;color:rgba(255,255,255,.45)}
.miss__badge{position:absolute;right:16px;top:16px;font-size:11.5px;font-weight:600;color:#8FB2FF;
  opacity:0;transform:translateX(-4px);transition:opacity .5s var(--ease),transform .5s var(--ease)}

/* Kontrast-Umkehr: der gewählte Treffer wird hell */
.miss.decided .miss__hit:first-child{opacity:1;background:rgba(24,91,237,.20);border-color:#185BED}
.miss.decided .miss__hit:first-child .miss__badge{opacity:1;transform:none;transition-delay:.18s}
.miss.decided .miss__hit--b{opacity:.34}

.miss__gap{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;
  padding:20px 16px;border:1px dashed rgba(255,255,255,.24);border-radius:2px;
  opacity:0;transition:opacity .7s var(--ease)}
.miss__gap.in{opacity:1}
.miss__gap-name{font-size:15.5px;color:rgba(255,255,255,.34)}
.miss__gap-tag{font-size:11px;font-weight:600;letter-spacing:.11em;text-transform:uppercase;color:rgba(255,255,255,.34);white-space:nowrap}

/* --- Brücke --- */
.sz-bridge{max-width:760px;margin:0 auto;text-align:center;font-size:clamp(20px,2vw,26px);
  line-height:1.45;font-weight:300;color:#fff;letter-spacing:-.01em;text-wrap:balance}

@media(max-width:900px){
  .sz-sec{padding:96px 0}
  .sz-head{margin-bottom:56px;padding-bottom:36px}
  .sz-sec .wmk{top:-24px;font-size:96px}
  .sz-head__row{grid-template-columns:1fr;gap:18px;align-items:start}
  .sz-text,.sz-viz,.sz-row--rev .sz-text,.sz-row--rev .sz-viz{grid-column:1/13;grid-row:auto}
  .sz-viz{margin-top:34px}
  .sz-row{margin-bottom:78px}
  .sz-body,.sz-pointe{max-width:none}
  .pick__cursor{display:none}
}
@media(prefers-reduced-motion:reduce){
  .pick__card,.miss__hit,.miss__gap{opacity:1;transform:none;transition:none}
  .pick__cursor{display:none}
  .miss__caret{display:none}
}

/* Grafik 1 — identische Merkmale, der Preis als einzige Differenz */
.pick__card{padding-bottom:34px}
.pick__page{padding:14px 13px 10px;gap:7px}
.pick__same{display:block;padding:0 13px 12px;font-size:10.5px;line-height:1.4;color:rgba(255,255,255,.34)}
.pick__price{display:flex;align-items:baseline;justify-content:space-between;gap:10px;
  margin:0 13px;padding-top:10px;border-top:1px solid var(--wline);
  opacity:0;transform:translateY(5px);
  transition:opacity .5s var(--ease),transform .5s var(--ease)}
.pick.priced .pick__price{opacity:1;transform:none}
.pick__pl{font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.36)}
.pick__pv{font-size:15px;font-weight:500;color:rgba(255,255,255,.72);transition:color .5s var(--ease)}
.pick.decided .pick__card--win .pick__pv{color:#fff}
.pick__tag{bottom:11px}
.pick__win{bottom:11px;right:13px}

/* Fokus V4 "Tunnel" — Eingang UND Ausgang sprechen dieselbe Sprache.
   --s: vorzeichenbehafteter Abstand zur Bildschirmmitte (-1 oben ... +1 unten)
   --f: 1 - |s|  (1 = mittig)
   Dadurch steigt die Szene beim Hereinkommen von unten auf und
   zieht beim Hinausgehen nach oben weiter — spiegelbildlich. */
.sz-row{--f:1;--s:0;
  transform:translateY(calc(var(--s) * 36px)) scale(calc(.966 + .034 * var(--f)));
  transform-origin:50% 50%;will-change:transform}
.sz-text{opacity:calc(.78 + .22 * var(--f))}
/* Textebenen nach ihrem Kontrast-Spielraum gestaffelt:
   Headline ist reines Weiss (viel Reserve) -> darf deutlich weiter verblassen.
   Fliesstext ist schon rgba(...,.6) -> bleibt am AA-Limit. */
.sz-title{opacity:calc(.62 + .38 * var(--f))}
.sz-pointe{opacity:calc(.84 + .16 * var(--f))}
.pick,.miss{opacity:calc(.13 + .87 * var(--f))}
@media(prefers-reduced-motion:reduce){
  .sz-row{--f:1;--s:0;transform:none}
  .sz-text,.sz-title,.sz-pointe,.pick,.miss{opacity:1}
}

/* ============================================================
   DAS ANGEBOT — Bento
   Rahmen = WebMount (kantig). ABGEBILDETE Software folgt ihrer
   eigenen Formensprache: runde Ecken, Schatten, Farbe. Sonst
   sieht eine Google-Suche aus wie ein Wireframe.
   ============================================================ */
.ob-sec{position:relative;background:#fff;padding:140px 0 150px;overflow:hidden}
.ob-head{position:relative;margin-bottom:56px;padding-bottom:44px;border-bottom:1px solid var(--line)}
.ob-sec .wmk{top:-46px}
.ob-sec .lbl{margin-bottom:22px}
.ob-head__row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;align-items:start}
.ob-sec .h2{color:var(--ink)}

.ob-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
/* Karte: Flaeche statt Rahmen — wie bei allen Referenzen */
.ob-card{position:relative;display:flex;flex-direction:column;overflow:hidden;
  background:var(--bg-alt);border-radius:2px;padding:34px 32px 0;min-height:430px}
.ob-card--wide{grid-column:span 3;min-height:380px}
.ob-card__t{font-size:clamp(20px,1.75vw,24px);font-weight:500;line-height:1.28;letter-spacing:-.015em;color:var(--ink);margin-bottom:12px;max-width:22ch}
.ob-card__p{font-size:14.5px;line-height:1.62;color:var(--ink-2);max-width:44ch}

/* Buehne: Raster im Hintergrund, Objekte schweben, unten angeschnitten */
.ob-stage{position:relative;flex:1;margin:26px -32px 0;padding:0 32px;min-height:190px}
.ob-stage__grid{position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(rgba(10,23,48,.05) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(10,23,48,.05) 1px,transparent 1px);
  background-size:34px 34px;
  -webkit-mask-image:radial-gradient(120% 95% at 50% 25%,#000 25%,transparent 80%);
  mask-image:radial-gradient(120% 95% at 50% 25%,#000 25%,transparent 80%)}

/* gemeinsame Objektsprache */
.uiw{position:relative;background:#fff;border-radius:2px;border:1px solid rgba(10,23,48,.07);
  box-shadow:0 26px 60px rgba(10,23,48,.14),0 4px 14px rgba(10,23,48,.06);
  opacity:0;transform:translateY(24px);
  transition:opacity .75s var(--ease),transform .75s var(--ease)}
.ob-stage.in .uiw{opacity:1;transform:none}
.uiw__bar{display:flex;align-items:center;gap:11px;padding:11px 15px;background:#fbfbfc;
  border-bottom:1px solid rgba(10,23,48,.07);border-radius:2px 2px 0 0}
.uiw__dots{display:flex;gap:6px}
.uiw__dots i{width:10px;height:10px;border-radius:50%}
.uiw__dots i:nth-child(1){background:#FF5F57}
.uiw__dots i:nth-child(2){background:#FEBC2E}
.uiw__dots i:nth-child(3){background:#28C840}
.uiw__url{font-size:12px;color:var(--ink-3)}
.uiw__flag{margin-left:auto;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);border:1px solid var(--line);padding:3px 8px;border-radius:2px}

/* schwebende Zusatzebene */
.chip{position:absolute;display:flex;align-items:center;gap:9px;padding:11px 15px;background:#fff;
  border-radius:2px;border:1px solid rgba(10,23,48,.07);
  box-shadow:0 16px 36px rgba(10,23,48,.15),0 2px 8px rgba(10,23,48,.05);
  font-size:13px;font-weight:500;color:var(--ink);white-space:nowrap;
  opacity:0;transform:translateY(12px);
  transition:opacity .55s var(--ease),transform .55s var(--ease)}
.ob-stage.in .chip{opacity:1;transform:none;transition-delay:.85s}
.chip em{font-style:normal;font-weight:400;font-size:11.5px;color:var(--ink-3)}
.chip__dot{width:8px;height:8px;border-radius:50%;background:#185BED;flex:none}

/* --- Garantie als eigenes Band --- */
.ob-guarantee-band{margin-top:18px;background:var(--navy);border-radius:2px;padding:46px 48px;
  position:relative;overflow:hidden}
.ob-card__kick{display:block;font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:#8FB2FF;margin-bottom:16px}
.ob-guarantee{font-size:clamp(24px,2.8vw,38px);font-weight:300;line-height:1.22;letter-spacing:-.02em;color:#fff;margin-bottom:14px;max-width:28ch}
.ob-guarantee__p{font-size:15.5px;line-height:1.65;color:rgba(255,255,255,.62);max-width:52ch}

@media(max-width:1000px){
  .ob-grid{grid-template-columns:1fr 1fr}
  .ob-card--wide{grid-column:span 2}
}
@media(max-width:760px){
  .ob-sec{padding:90px 0}
  .ob-head{margin-bottom:40px;padding-bottom:30px}
  .ob-head__row{grid-template-columns:1fr;gap:16px;align-items:start}
  .ob-grid{grid-template-columns:1fr}
  .ob-card--wide{grid-column:span 1}
  .ob-card{padding:26px 22px 0;min-height:380px}
  .ob-stage{margin:22px -22px 0;padding:0 22px}
  /* Handy-Karten: einspaltig braucht die Buehne mehr Hoehe, sonst schneidet
     die Karte das iPhone vor dem Wesentlichen ab (Stellentitel, Button) */
  .ob-stage--phone{min-height:330px}
  .ob-guarantee-band{padding:32px 24px}
}
@media(prefers-reduced-motion:reduce){
  .uiw,.chip{opacity:1;transform:none;transition:none}
}

/* --- Karte 1: die Suche am Handy ------------------------------ */
.gsearch__logo{font-size:19px;font-weight:500;letter-spacing:-.5px;line-height:1}
.gsearch__logo b{font-weight:500}
.g1{color:#4285F4}.g2{color:#EA4335}.g3{color:#FBBC05}.g4{color:#34A853}
/* Choreografie: erst tippen, dann Treffer — die Reihenfolge des Textes.
   Der Cursor blinkt nur waehrend des Tippens und ist danach weg. */
.gm__q{display:inline-block;overflow:hidden;white-space:nowrap;vertical-align:bottom;max-width:20ch}
.ob-stage.in .gm__q{max-width:0;animation:obType .95s steps(21,end) .25s forwards}
@keyframes obType{to{max-width:120px}}

.gsearch__caret{width:1.5px;height:14px;background:#4285F4;display:inline-block;opacity:0}
.ob-stage.in .gsearch__caret{animation:obCaret .94s steps(1,end) .22s forwards}
@keyframes obCaret{
  0%,16%{opacity:1}  17%,33%{opacity:0}
  34%,50%{opacity:1} 51%,66%{opacity:0}
  67%,83%{opacity:1} 84%,100%{opacity:0}}

/* Geraet: steht auf der Buehne und wird von der Karte unten angeschnitten */
/* Proportionen nach iPhone 15/16 Pro, umgerechnet auf 252 x 430 px:
   Rahmen 7px (2,4% der Breite), Eckradius 14% der Breite, Tasten in mm skaliert */
.iph{position:absolute;top:0;left:50%;width:252px;height:430px;padding:7px;
  background:#08090C;border-radius:40px;
  box-shadow:0 44px 84px rgba(10,23,48,.30),0 12px 26px rgba(10,23,48,.13),
             inset 0 0 0 1px #454C59,
             inset 0 1px 0 1px rgba(255,255,255,.42),
             inset 0 -1px 0 1px rgba(255,255,255,.14);
  opacity:0;transform:translateX(-50%) translateY(28px);
  transition:opacity .8s var(--ease),transform .8s var(--ease)}
.ob-stage.in .iph{opacity:1;transform:translateX(-50%)}
.iph__screen{height:100%;background:#fff;border-radius:33px;overflow:hidden;
  display:flex;flex-direction:column;box-shadow:inset 0 0 2px rgba(0,0,0,.40)}

/* Seitentasten — links Action/Laut/Leise, rechts Power. Aussenkante faengt Licht. */
.iph__btn{position:absolute;width:2px;box-shadow:0 1px 1px rgba(0,0,0,.30)}
.iph__btn--act,.iph__btn--up,.iph__btn--dn{left:-2px;border-radius:2px 0 0 2px;
  background:linear-gradient(90deg,#5C6474,#2B313B)}
.iph__btn--act{top:97px;height:19px}
.iph__btn--up{top:129px;height:31px}
.iph__btn--dn{top:167px;height:31px}
.iph__btn--pw{right:-2px;top:135px;height:45px;border-radius:0 2px 2px 0;
  background:linear-gradient(270deg,#5C6474,#2B313B)}

.iph__island{position:absolute;top:15px;left:50%;transform:translateX(-50%);
  width:76px;height:22px;background:#07080B;border-radius:12px;z-index:2}
.iph__status{display:flex;align-items:center;justify-content:space-between;
  padding:13px 20px 4px;font-size:11.5px;font-weight:600;color:var(--ink);letter-spacing:.01em}
.iph__ind{display:flex;align-items:center;color:var(--ink)}
.iph__ind svg{width:41px;height:8px;fill:currentColor}

/* Mobile Google */
.gm{flex:1;display:flex;flex-direction:column;padding:16px 15px 0;min-height:0}
.gm .gsearch__logo{align-self:flex-start;margin-bottom:11px}
.gm__field{display:flex;align-items:center;gap:9px;width:100%;padding:10px 14px;
  border:1px solid rgba(10,23,48,.10);border-radius:22px;font-size:12.5px;color:var(--ink);
  box-shadow:0 1px 4px rgba(10,23,48,.05)}
.gm__field svg{width:14px;height:14px;flex:none}
.gm__tabs{display:flex;gap:15px;margin-top:14px;padding-bottom:9px;
  border-bottom:1px solid rgba(10,23,48,.08);font-size:11.5px;color:var(--ink-3);
  opacity:0}
.ob-stage.in .gm__tabs{animation:obRes .4s var(--ease) 1.22s forwards}
.gm__tabs .on{color:#1a73e8;font-weight:500;position:relative}
.gm__tabs .on::after{content:"";position:absolute;left:-1px;right:-1px;bottom:-10px;height:2px;background:#1a73e8;border-radius:2px}

.gres{padding:15px 0 0;display:flex;flex-direction:column;gap:14px}
.gres__row{display:flex;align-items:center;gap:10px;opacity:0;transform:translateY(7px)}
.ob-stage.in .gres__row{animation:obRes .5s var(--ease) forwards}
.ob-stage.in .gres__row:nth-child(1){animation-delay:1.34s}
.ob-stage.in .gres__row:nth-child(2){animation-delay:1.46s}
.ob-stage.in .gres__row:nth-child(3){animation-delay:1.55s}
.ob-stage.in .gres__row:nth-child(4){animation-delay:1.63s}
@keyframes obRes{to{opacity:1;transform:none}}
.gres__row--you{padding:10px 11px;margin:0 -11px;border-radius:8px;background:rgba(24,91,237,.07)}
.gres__fav{width:26px;height:26px;border-radius:50%;background:#185BED;color:#fff;flex:none;
  display:flex;align-items:center;justify-content:center}
.gres__fav svg{width:15px;height:15px}
.gres__txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.gres__txt b{font-size:12.5px;font-weight:500;color:#1a0dab}
.gres__txt em{font-style:normal;font-size:11px;color:#0a7c2f}
.gres__ph{height:9px;width:82%;border-radius:3px;background:rgba(10,23,48,.07)}
.gres__ph--s{width:62%}
@media(prefers-reduced-motion:reduce){
  .iph{opacity:1;transform:translateX(-50%);transition:none}
  .ob-stage.in .gm__q,.gm__q{max-width:none;animation:none}
  .gsearch__caret{display:none}
  .gm__tabs,.gres__row{opacity:1;transform:none;animation:none}
}

/* --- Karte 2: die Seite des Betriebs ---------------------------
   Nur drei Dinge sind lesbar: Bewertung, Kundenstimme, Anfrage.
   Alles andere ist Balken — sonst wird die Flaeche zu Rauschen. */
.uiw--r{margin:0 auto;max-width:330px}

/* Balken fuer alles, was nicht gelesen werden soll */
.rp__bar{display:block;height:5px;border-radius:2px;background:rgba(10,23,48,.11)}
.rp__bar--l{background:rgba(255,255,255,.3)}
.rp__bar--s{height:4px}

.rp__hero{position:relative;height:116px;overflow:hidden;
  background:#0d1a2b url('assets/dachstuhl.jpg') center/cover no-repeat}
.rp__sh{position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(8,15,28,.9) 0%,rgba(8,15,28,.6) 48%,rgba(8,15,28,.08) 100%)}
.rp__mark{position:absolute;left:15px;top:13px;display:flex;gap:6px;align-items:center}
.rp__mark i{width:11px;height:11px;border-radius:2px;background:#185BED;flex:none}
.rp__mark .rp__bar{width:34px}
.rp__nav{position:absolute;right:14px;top:14px;display:flex;gap:9px}
.rp__nav .rp__bar{width:20px}
.rp__c{position:absolute;left:15px;top:28px;right:112px}
.rp__k{display:block;font-size:7.5px;font-weight:600;letter-spacing:.16em;
  color:#185BED;margin-bottom:7px}
.rp__t{font-size:17px;font-weight:600;line-height:1.14;letter-spacing:-.01em;color:#fff;margin:0}
.rp__t em{font-style:normal;color:#185BED}

/* Beweis 1: Bewertung — gross genug, dass man sie liest */
.rp__pr{display:flex;align-items:flex-start;gap:15px;padding:14px 16px 15px;
  border-bottom:1px solid rgba(10,23,48,.07)}
.rp__stars{display:flex;gap:2.5px;margin-bottom:5px}
.rp__stars svg{width:13px;height:13px;fill:#F5A623}
.rp__score{display:block;font-size:30px;font-weight:500;line-height:.95;
  letter-spacing:-.025em;color:var(--ink)}
.rp__n{display:block;font-size:10px;color:var(--ink-3);margin-top:5px}
.rp__q{flex:1;margin:2px 0 0;padding-left:15px;border-left:1px solid var(--line);
  font-size:11.5px;line-height:1.5;color:var(--ink-2)}
.rp__q b{display:block;margin-top:7px;font-size:10.5px;font-weight:500;color:var(--ink)}

/* Angeschnittener Fuss: eine Bildzeile laeuft unten aus der Karte heraus, damit der
   Rahmen abgeschnitten endet statt kurz vor der Kante aufzuhoeren. Der negative
   Aussenabstand nimmt dieselbe Hoehe wieder heraus — die Karten bleiben bei 571px.
   Die frueheren Projektkacheln mit Beschriftung sind bewusst raus: 135px Hoehe auf
   allen drei Karten, und sie machten unklar, worauf sich der Chip bezieht. */
.uiw--r{margin-bottom:-55px}
.rp__rf{padding:14px 16px 0}
.rp__row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.rp__im{display:block;height:76px;border:1px solid rgba(10,23,48,.08);border-radius:2px;
  background:#dfe3ea url('assets/dachstuhl.jpg') center/cover no-repeat}
.rp__im:nth-child(2){background-position:22% 62%}
.rp__im:nth-child(3){background-position:88% 34%}

/* Chip haengt am Fenster, nicht an der Buehne — sonst driftet er im
   einspaltigen Layout vom Fenster weg. Sitzt auf der Kante Foto/Bewertung. */
.chip--r{right:-8px;bottom:172px}
@media(max-width:900px){.chip--r{right:-6px}}

/* --- Karte 3: Karriereseite im iPhone --------------------------
   Gleiches Geraet wie Karte 01 — Handy, Fenster, Handy, Fenster.
   Teamfoto ist Platzhalter (Dachstuhl-Bild), bis echtes Material da ist. */
.kj__url{display:block;text-align:center;font-size:9px;color:var(--ink-3);
  padding:2px 0 7px;flex:none}
.kj__hero{position:relative;height:104px;flex:none;
  background:#0d1a2b url('assets/dachstuhl.jpg') 62% 42%/cover no-repeat}
.kj__sh{position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(8,15,28,.05) 40%,rgba(8,15,28,.5) 100%)}
.kj__mark{position:absolute;left:13px;top:11px;display:flex;gap:6px;align-items:center}
.kj__mark i{width:10px;height:10px;border-radius:2px;background:#185BED;flex:none}
.kj__mark .rp__bar{width:30px}
.kj__job{padding:13px 15px 15px;border-bottom:1px solid rgba(10,23,48,.07);
  display:flex;flex-direction:column;gap:5px}
.kj__h{font-size:14px;font-weight:600;color:var(--ink)}
.kj__m{font-size:10.5px;color:var(--ink-3)}
.kj__btn{align-self:flex-start;margin-top:8px;padding:8px 15px;border-radius:2px;
  background:#185BED;color:#fff;font-size:11.5px;font-weight:500}
.kj__job--ph{gap:7px;border-bottom:0}
.chip--k{right:-4px;bottom:158px}
/* einspaltig haengt der Chip an der Handymitte, nicht an der Buehnenkante —
   sonst schwebt er frei im leeren Raster */
@media(max-width:900px){.chip--k{right:auto;left:50%;margin-left:-26px;bottom:150px}}

/* --- Karte 3: Seitenliste ------------------------------------- */
.uiw--s{margin:0 auto;max-width:320px}
.uiw__bar--dark{background:var(--navy);border-bottom-color:var(--navy);justify-content:space-between}
.uiw__t{font-size:12.5px;font-weight:500;color:#fff}
.uiw__b{font-size:11px;font-weight:500;color:#fff;background:#185BED;padding:4px 9px;border-radius:6px}
.slist{padding:6px 0}
.slist__r{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 16px;
  font-size:12.5px;color:var(--ink)}
.slist__r+.slist__r{border-top:1px solid rgba(10,23,48,.05)}
.ok{width:16px;height:16px;border-radius:50%;background:#E8F3EC;position:relative;flex:none}
.ok::after{content:"";position:absolute;left:5px;top:4px;width:4px;height:7px;
  border:solid #1B8A4B;border-width:0 1.6px 1.6px 0;transform:rotate(45deg)}
.chip--s{left:-6px;bottom:26px}

/* --- Karte 4: Dashboard --------------------------------------- */
.ob-card--wide{flex-direction:row;align-items:flex-start;gap:44px;padding-right:0}
.ob-card__col{flex:0 0 34%;padding-top:4px}
.ob-stage--wide{flex:1;margin:0;padding:26px 32px 0;min-height:300px}
.uiw--d{max-width:none}
.dash{padding:18px 20px 22px}
.dash__kpis{display:flex;gap:40px;margin-bottom:6px}
.dash__k span{display:block;font-size:11px;color:var(--ink-3);margin-bottom:7px}
.dash__k b{font-size:30px;font-weight:400;line-height:1;letter-spacing:-.03em;color:var(--ink);font-variant-numeric:tabular-nums;margin-right:8px}
.dash__k em{font-style:normal;font-size:12px;font-weight:500;color:#185BED}
.dash__svg{display:block;width:100%;height:auto;margin-top:8px}
.dgl{stroke:rgba(10,23,48,.06);stroke-width:1}
.dln{fill:none;stroke:#185BED;stroke-width:2.4;stroke-linecap:round;pathLength:1;stroke-dasharray:1;stroke-dashoffset:1}
.ob-stage.in .dln{animation:obDraw 1.5s var(--ease) .3s forwards}
@keyframes obDraw{to{stroke-dashoffset:0}}
.dar{opacity:0;transition:opacity .9s var(--ease) .85s}
.ob-stage.in .dar{opacity:1}
.dpt{fill:#fff;stroke:#185BED;stroke-width:3;opacity:0;transition:opacity .4s var(--ease) 1.5s}
.ob-stage.in .dpt{opacity:1}
.chip--d{right:34px;bottom:52px}

@media(max-width:1000px){
  .ob-card--wide{flex-direction:column;gap:0;padding-right:32px}
  .ob-card__col{flex:none}
  .ob-stage--wide{margin:26px -32px 0;padding:0 32px}
}
@media(max-width:760px){
  .chip{font-size:12px;padding:9px 12px}
  .chip--q1,.chip--s{left:-2px}
  .chip--q2{right:-2px}
  .ob-card--wide{padding-right:22px}
  .ob-stage--wide{margin:22px -22px 0;padding:0 22px}
}
@media(prefers-reduced-motion:reduce){
  .dln{stroke-dashoffset:0;animation:none}
  .dar,.dpt{opacity:1;transition:none}
  .gsearch__caret{display:none}
}

/* Karte 3 — "Sie"-Zeile hervorheben: der einzige Punkt, der beim Kunden liegt */
.obp__s--you{color:#0F49C8;border-color:rgba(24,91,237,.4);background:rgba(24,91,237,.08);font-weight:600}

/* Abschluss: eigene Ebene ueber dem CTA — groesser als Kartentext, ruhiger als die H2 */
.ob-close{margin-top:44px;padding-top:30px;border-top:1px solid var(--line-soft);
  font-size:17px;line-height:1.62;color:var(--ink-2);max-width:62ch}

/* CTA am Ende des Angebots — faengt den Hoehepunkt ab, statt ihn zu verschenken */
.ob-cta{display:flex;align-items:center;gap:24px;flex-wrap:wrap;margin-top:28px}
.ob-cta__note{font-size:14px;color:var(--ink-3)}
@media(max-width:560px){.ob-cta{gap:14px}.ob-cta .btn{width:100%;justify-content:center}}

/* Struktur-Zeile ueber dem Raster */
.ob-intro{font-size:clamp(16.5px,1.4vw,19px);line-height:1.6;color:var(--ink);margin:0 0 26px;font-weight:500}
@media(max-width:760px){.ob-intro{margin:0 0 20px}}

/* Damaging Admission — in der rechten Kopfspalte, ruhig statt Zitat-Balken */
.ob-admission{margin-top:18px;padding-top:16px;border-top:1px solid var(--line);
  font-size:14.5px;line-height:1.6;color:var(--ink-3);max-width:52ch}
.ob-admission strong{color:var(--ink-2);font-weight:500}
/* Kopf: Headline links, Lede + Zugestaendnis gestapelt rechts */
.ob-head__row .h2{grid-column:1;grid-row:1 / span 2}
.ob-head__row .lede{grid-column:2;grid-row:1}
.ob-head__row .ob-admission{grid-column:2;grid-row:2}
@media(max-width:760px){
  .ob-head__row .h2,.ob-head__row .lede,.ob-head__row .ob-admission{grid-column:1;grid-row:auto}
}

/* ===== Variante B: drei nummerierte Wirk-Karten + der vierte Punkt als dunkles Band ===== */
.ob-card__no{display:block;font-size:12px;font-weight:600;letter-spacing:.18em;color:var(--blue);margin-bottom:14px;font-variant-numeric:tabular-nums}

.ob-band{margin-top:18px;background:var(--navy);border-radius:2px;padding:56px;position:relative;overflow:hidden}
.ob-band__grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:64px;align-items:center}
.ob-band__t{font-size:clamp(24px,2.3vw,33px);font-weight:300;line-height:1.2;letter-spacing:-.02em;color:#fff;margin:0 0 14px}
.ob-band__p{font-size:15px;line-height:1.65;color:rgba(255,255,255,.66);max-width:54ch}
.ob-band__p b{font-weight:600;color:rgba(255,255,255,.92)}
.ob-band__close{margin-top:24px;padding-top:24px;border-top:1px solid var(--wline-soft);font-size:15.5px;line-height:1.62;color:rgba(255,255,255,.78);max-width:54ch}
.ob-band__close b{font-weight:600;color:#fff}
.ob-band__cta{display:flex;align-items:center;gap:22px;flex-wrap:wrap;margin-top:28px}
.ob-band__note{font-size:13.5px;color:rgba(255,255,255,.5)}

.ob-stage--band{flex:none;margin:0;padding:0;min-height:0}
.ob-stage--band .uiw{box-shadow:0 30px 70px rgba(0,0,0,.45)}
.ob-stage--band .chip{right:-10px;bottom:-16px}

@media(max-width:1000px){
  .ob-band__grid{grid-template-columns:1fr;gap:44px}
}
@media(max-width:760px){
  .ob-band{padding:36px 24px}
  .ob-band__cta .btn{width:100%;justify-content:center}
  .ob-stage--band .chip{right:6px;bottom:-10px}
}

/* ===== Abschluss + Garantie + CTA — offen auf hellem Grund, keine Box ===== */
.ob-final{margin-top:64px;padding-top:46px;border-top:1px solid var(--line);
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.8fr);gap:64px;align-items:start}
.ob-final__close{grid-column:1;font-size:17px;line-height:1.62;color:var(--ink-2);max-width:56ch;margin:0}
.ob-final__close b{font-weight:600;color:var(--ink)}

.ob-final .ob-gar{grid-column:2;display:flex;gap:11px;align-items:flex-start;margin:0 0 24px}
.ob-final .ob-gar__ic{flex:none;margin-top:3px;color:var(--blue);line-height:0}
.ob-final .ob-gar__txt{display:block;font-size:14.5px;line-height:1.55;color:var(--ink-2)}
.ob-final .ob-gar__txt b{font-weight:600;color:var(--ink)}

.ob-final__cta{grid-column:2;display:flex;flex-direction:column;align-items:flex-start;gap:14px}
.ob-final__note{font-size:13.5px;color:var(--ink-3)}

@media(max-width:1000px){
  .ob-final{grid-template-columns:1fr;gap:30px}
  .ob-final__close,.ob-final .ob-gar,.ob-final__cta{grid-column:1}
  .ob-final .ob-gar{margin-bottom:0}
}
@media(max-width:560px){
  .ob-final__cta .btn{width:100%;justify-content:center}
}

/* ============================================================
   ABSCHLUSS 03 — Display links, Garantie als markiertes Objekt rechts
   Ersetzt .ob-final: dort fehlte jedes Display-Element, dadurch
   lag alles auf einer Stufe. Hier tragen drei Ebenen die Hierarchie:
   Display 29px / Fliesstext 16px / Garantie als eigenes Objekt.
   ============================================================ */
.obc{position:relative;margin-top:76px;padding-top:38px;border-top:1px solid var(--line);
  display:grid;grid-template-columns:repeat(12,1fr);gap:24px;align-items:end}
.obc__col{grid-column:1/7}

/* Display-Zeile: H2-Behandlung, eine Stufe kleiner */
.obc__lead{margin:0;font-size:clamp(22px,2.05vw,29px);font-weight:300;line-height:1.22;
  letter-spacing:-.02em;color:var(--ink);max-width:30ch}
.obc__rest{margin-top:22px;font-size:16px;line-height:1.62;color:var(--ink-2);max-width:46ch}
.obc__cta{margin-top:38px;display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.obc__note{font-size:14px;color:var(--ink-3)}

/* Garantie: Eckmarker wie bei .tick, Geister-Ziffer wie bei .wmk, unten buendig */
.obc__g{grid-column:7/13;position:relative;align-self:end;overflow:hidden;
  padding:38px 36px 40px;border:1px solid var(--line-soft);border-radius:2px;background:var(--bg-alt)}
.obc__g .tick{border-color:rgba(24,91,237,.55)}
.tick--bl{bottom:-1px;left:-1px;border-width:0 0 2px 2px}
.tick--br{bottom:-1px;right:-1px;border-width:0 2px 2px 0}
.obc__gnum{position:absolute;right:24px;top:-16px;z-index:0;pointer-events:none;user-select:none;
  font-size:150px;font-weight:300;line-height:1;letter-spacing:-.05em;color:rgba(11,37,87,.055)}
.obc__g .lbl,.obc__gtext{position:relative;z-index:1}
.obc__gtext{margin-top:20px;font-size:clamp(19px,1.6vw,22px);font-weight:300;line-height:1.42;
  letter-spacing:-.01em;color:var(--ink)}
.obc__gtext strong{font-weight:500}

@media(max-width:1000px){
  .obc{grid-template-columns:1fr;gap:0}
  .obc__col,.obc__g{grid-column:1}
  .obc__g{margin-top:40px}
  .obc__lead{max-width:none}
}
@media(max-width:560px){.obc__cta .btn{width:100%;justify-content:center}}


/* ===== Platzhalter-Grafiken (Duplikat zur Konzeptpruefung) ===== */
.ph-graf{position:absolute;inset:8px 32px 24px;border:1px dashed rgba(10,23,48,.3);
  border-radius:2px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.4)}
.ph-graf span{font-size:64px;font-weight:300;letter-spacing:-.02em;color:rgba(10,23,48,.4)}
.lb__viz .ph-graf{position:relative;inset:auto;min-height:280px}
.ob-band .ph-graf{border-color:rgba(255,255,255,.4);background:rgba(255,255,255,.05)}
.ob-band .ph-graf span{color:rgba(255,255,255,.55)}


/* ==============================================================
   DAS ANGEBOT — Grafiken der Karten 01 / 02 / 03
   --------------------------------------------------------------
   Gemeinsame Sprache: keine Metaphern, keine Icons. Jede Karte
   zeigt einen echten Bildschirmmoment in Lesegroesse — und nur
   Text, den es dort auch gaebe. Alle drei haengen an derselben
   Grundlinie (Kartenunterkante) und laufen unten aus der Karte
   heraus: so gibt es keine Restflaeche und die Reihe steht ruhig,
   obwohl die Textblocke unterschiedlich lang sind.
   Ausloeser ist [data-obp] (Beobachter in script.js) -> .in
   ============================================================== */
.obg{position:absolute;left:32px;right:32px;bottom:-48px;height:238px;
  font-family:var(--f)}

.obg__kick{display:block;font-size:9.5px;font-weight:600;letter-spacing:.17em;
  text-transform:uppercase;color:rgba(255,255,255,.72)}
.obg__kick--d{color:var(--blue)}

/* Auftritt: alles steigt leicht auf, nichts blinkt */
@keyframes obgRise{from{opacity:0;transform:translateY(13px)}to{opacity:1;transform:none}}
@keyframes obgIn{from{opacity:0}to{opacity:1}}

/* --------------------------------------------------------------
   01 — Die Suche, in der Sie oben stehen
   Reihenfolge der Bewegung = Reihenfolge des Vorgangs: erst tippt
   er, dann kommen die Treffer. Ihr Eintrag ist der erste und der
   einzige scharfe; der zweite laeuft unten aus der Karte.
   -------------------------------------------------------------- */
.obg--find{display:flex;flex-direction:column}
.obg__q{display:flex;align-items:center;gap:10px;height:36px;padding:0 15px;flex:none;
  background:#fff;border:1px solid rgba(10,23,48,.09);border-radius:2px;
  box-shadow:0 8px 18px rgba(10,23,48,.07),0 1px 4px rgba(10,23,48,.04);
  color:var(--ink-3);margin-bottom:10px;
  opacity:0;animation:obgRise .6s var(--ease) forwards paused}
.obg__mag{flex:none}
.obg__qt{display:inline-block;overflow:hidden;white-space:nowrap;vertical-align:bottom;
  font-size:13.5px;color:var(--ink);letter-spacing:-.005em}
.obg__caret{width:1.5px;height:15px;background:var(--blue);display:inline-block;
  margin-left:-6px;opacity:0}

.obg__res{flex:1;padding:10px 15px 0;overflow:hidden;
  background:#fff;border:1px solid rgba(10,23,48,.07);border-radius:2px;
  box-shadow:0 22px 48px rgba(10,23,48,.13),0 3px 10px rgba(10,23,48,.05)}
.obg__hit{display:block;padding-bottom:8px;opacity:0;
  animation:obgRise .55s var(--ease) forwards paused}
.obg__hit+.obg__hit{border-top:1px solid rgba(10,23,48,.07)}
.obg__url{display:block;font-size:10.5px;line-height:1.4;color:var(--ink-2);margin-bottom:2px}
.obg__ttl{font-size:13.5px;line-height:1.26;font-weight:500;letter-spacing:-.01em;
  color:var(--blue);margin-bottom:3px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.obg__desc{display:block;font-size:11px;line-height:1.4;color:var(--ink-2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Die Unterlinks sind der eigentliche Beleg: je Leistung eine eigene Seite. */
.obg__links{display:flex;flex-wrap:wrap;gap:5px 14px;margin-top:6px}
.obg__links i{font-style:normal;font-size:11px;color:var(--blue);
  border-bottom:1px solid rgba(24,91,237,.28);padding-bottom:1px}
/* der zweite Treffer tritt zurueck — Rang zeigt sich durch Platz, nicht durch Etikett */
.obg__hit:not(.obg__hit--top){padding-top:7px;opacity:0}
.obg__hit:not(.obg__hit--top) .obg__url{margin-bottom:1px;line-height:1.3}
.obg__hit:not(.obg__hit--top) .obg__ttl{color:var(--ink-2)}

.obg--find.in .obg__q{animation-play-state:running;animation-delay:.05s}
.obg--find.in .obg__qt{max-width:0;animation:obgType .9s steps(21,end) .3s forwards}
@keyframes obgType{to{max-width:23ch}}
.obg--find.in .obg__caret{animation:obgCaret .9s steps(1,end) .28s forwards}
@keyframes obgCaret{
  0%,16%{opacity:1}  17%,33%{opacity:0}
  34%,50%{opacity:1} 51%,66%{opacity:0}
  67%,83%{opacity:1} 84%,100%{opacity:0}}
.obg--find.in .obg__hit--top{animation-play-state:running;animation-delay:1.28s}
.obg--find.in .obg__hit:not(.obg__hit--top){animation:obgFade2 .55s var(--ease) 1.44s forwards}
@keyframes obgFade2{from{opacity:0;transform:translateY(13px)}to{opacity:.42;transform:none}}

/* --------------------------------------------------------------
   02 — Der Beweis, den er vorfindet
   Ein grosses Foto echter Arbeit, darauf die Bewertung als eigenes
   Objekt. Das Foto laeuft unten weiter aus der Karte heraus.
   -------------------------------------------------------------- */
.obg--proof{overflow:visible}
.obg__shot{position:absolute;inset:0;margin:0;border-radius:2px;overflow:hidden;
  background:#0d1a2b url('assets/projekt-dachstuhl.jpg') 50% 44%/cover no-repeat;
  box-shadow:0 22px 48px rgba(10,23,48,.16),0 3px 10px rgba(10,23,48,.06);
  opacity:0;animation:obgIn .8s var(--ease) forwards paused}
.obg__shot::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(8,15,28,.78) 0%,rgba(8,15,28,.34) 38%,rgba(8,15,28,0) 66%)}
.obg--proof .obg__kick{position:absolute;left:16px;top:15px;z-index:2}
.obg__cap{position:absolute;left:16px;top:33px;right:16px;z-index:2;
  font-size:14px;font-weight:500;line-height:1.3;letter-spacing:-.01em;color:#fff}

.obg__rate{position:absolute;left:16px;top:112px;display:flex;align-items:center;gap:13px;
  padding:12px 16px 13px;background:#fff;border-radius:2px;
  box-shadow:0 18px 40px rgba(10,23,48,.24),0 3px 10px rgba(10,23,48,.10);
  opacity:0;animation:obgRise .6s var(--ease) forwards paused}
.obg__score{font-size:29px;font-weight:500;line-height:.9;letter-spacing:-.03em;color:var(--ink)}
.obg__ratec{display:flex;flex-direction:column;gap:5px}
.obg__stars{position:relative;display:block;height:12px}
.obg__starrow{display:flex;gap:3px}
.obg__starrow svg{width:12px;height:12px;fill:rgba(10,23,48,.14);display:block}
.obg__starrow--f svg{fill:#F5A623}
.obg__starfill{position:absolute;left:0;top:0;height:100%;overflow:hidden;width:0}
.obg__starfill .obg__starrow{width:72px}
.obg__cnt{font-size:10.5px;line-height:1;color:var(--ink-2);white-space:nowrap}

.obg--proof.in .obg__shot{animation-play-state:running}
.obg--proof.in .obg__rate{animation-play-state:running;animation-delay:.5s}
.obg--proof.in .obg__starfill{animation:obgFill .85s var(--ease) 1.05s forwards}
@keyframes obgFill{to{width:100%}}

/* --------------------------------------------------------------
   03 — Die Stelle, auf die er sich bewirbt
   Bild von der Baustelle + Stellentitel + Knopf. Zum Schluss faehrt
   der Zeiger auf „Jetzt bewerben“ — das ist die Aussage der Karte.
   Die zweite Stelle laeuft angeschnitten aus der Karte.
   -------------------------------------------------------------- */
.obg--job{display:flex;flex-direction:column;gap:9px}
.obg__job{display:flex;gap:14px;flex:none;padding:14px;
  background:#fff;border:1px solid rgba(10,23,48,.07);border-radius:2px;
  box-shadow:0 22px 48px rgba(10,23,48,.13),0 3px 10px rgba(10,23,48,.05);
  opacity:0;animation:obgRise .6s var(--ease) forwards paused}
.obg__jimg{width:64px;height:64px;flex:none;border-radius:2px;
  background:#0d1a2b url('assets/team-zimmerer.jpg') center/cover no-repeat}
.obg__jtxt{display:flex;flex-direction:column;min-width:0}
.obg__jttl{font-size:14px;font-weight:500;line-height:1.25;letter-spacing:-.012em;
  color:var(--ink);margin-top:6px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.obg__jmeta{display:block;font-size:11px;line-height:1.4;color:var(--ink-2);margin-top:4px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.obg__jbtn{position:relative;align-self:flex-start;margin-top:11px;padding:8px 15px;border-radius:2px;
  background:var(--blue);color:#fff;font-size:11.5px;font-weight:500;letter-spacing:.01em}
.obg__job--next{padding:12px 14px;align-items:center}
.obg__job--next .obg__jimg{width:46px;height:46px;
  background-image:url('assets/team-lehrling.jpg');background-position:center}
.obg__job--next .obg__jttl{margin-top:0;font-size:13px}

.obg__cur{position:absolute;right:-8px;bottom:-13px;z-index:3;opacity:0;line-height:0;
  filter:drop-shadow(0 4px 8px rgba(10,23,48,.28))}

.obg--job.in .obg__job{animation-play-state:running;animation-delay:.1s}
.obg--job.in .obg__job--next{animation:obgFade2 .6s var(--ease) .26s forwards}
.obg--job.in .obg__cur{animation:obgCur 1.5s var(--ease) .95s forwards}
@keyframes obgCur{
  0%{opacity:0;transform:translate(26px,26px)}
  22%{opacity:1;transform:translate(14px,14px)}
  62%{opacity:1;transform:translate(0,0)}
  70%{opacity:1;transform:translate(0,2px)}
  100%{opacity:1;transform:translate(0,0)}}
.obg--job.in .obg__jbtn{animation:obgPress .18s var(--ease) 1.98s forwards}
@keyframes obgPress{to{background:var(--blue-press)}}

/* --- schmalere Karten: Innenabstand der Karte folgt --- */
@media(max-width:760px){
  .obg{left:50%;right:auto;width:min(100% - 44px,400px);transform:translateX(-50%)}
}

/* --- ohne Bewegung: Endzustand sofort --- */
@media(prefers-reduced-motion:reduce){
  .obg__q,.obg__hit,.obg__shot,.obg__rate,.obg__job{opacity:1;animation:none}
  .obg__hit:not(.obg__hit--top),.obg__job--next{opacity:.42}
  .obg__qt{max-width:none}
  .obg__caret{display:none}
  .obg__starfill{width:100%;animation:none}
  .obg__cur{opacity:1;animation:none}
  .obg__jbtn{animation:none}
}


/* --- FOTOTEST: Karte 01 stammt 1:1 aus loesung-cta (4676). Dort sind die
   Karten 600px hoch, weil die Grafik von Karte 02 im Fluss steht; nur dann
   zeigt das Handy denselben Ausschnitt (288px statt 213px). Hier stehen die
   Grafiken 02/03 absolut, tragen also keine Hoehe bei — deshalb die Buehne
   direkt auf dieselbe Hoehe setzen. --- */
.ob-grid .ob-stage{min-height:292px}


/* ==============================================================
   VERSIONSTEST — Karte 02 als mobile Referenzseite im Handyrahmen
   Gehaeuse und Statusleiste sind identisch mit Karte 01; im
   Bildschirm steht dieselbe Aussage wie vorher: echtes Projekt im
   Bild, Bewertung darunter, weitere Projekte laufen unten raus.
   ============================================================== */
.rf__hero{position:relative;height:116px;flex:none;
  background:#0d1a2b url('assets/projekt-dachstuhl.jpg') 50% 46%/cover no-repeat}
.rf__hero::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(8,15,28,.76) 0%,rgba(8,15,28,.3) 46%,rgba(8,15,28,0) 76%)}
.rf__kick{position:absolute;left:13px;top:11px;z-index:2;font-size:8.5px;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.75)}
.rf__cap{position:absolute;left:13px;top:26px;right:13px;z-index:2;font-size:12.5px;font-weight:500;
  line-height:1.25;letter-spacing:-.01em;color:#fff}

.rf__rate{display:flex;align-items:center;gap:11px;flex:none;padding:12px 14px 13px;
  border-bottom:1px solid rgba(10,23,48,.07)}
.rf__score{font-size:25px;font-weight:500;line-height:.9;letter-spacing:-.03em;color:var(--ink)}
.rf__rc{display:flex;flex-direction:column;gap:5px}
.rf__cnt{font-size:9.5px;line-height:1;color:var(--ink-2);white-space:nowrap}
.rf__rate .obg__stars{height:10px}
.rf__rate .obg__starrow{gap:2.5px}
.rf__rate .obg__starrow svg{width:10px;height:10px}
.rf__rate .obg__starfill .obg__starrow{width:60px}
.ob-stage.in .rf__rate .obg__starfill{animation:obgFill .8s var(--ease) .95s forwards}

/* weitere Projekte — laufen unten aus dem Bildschirm */
.rf__more{display:grid;grid-template-columns:1fr 1fr;gap:7px;flex:none;padding:11px 14px 0}
.rf__thumb{display:block;height:66px;border-radius:2px;
  background:#dfe3ea url('assets/projekt-dachstuhl.jpg') 22% 70%/cover no-repeat}
.rf__thumb:nth-child(2){background-position:82% 40%}
@media(prefers-reduced-motion:reduce){
  .rf__rate .obg__starfill{width:100%;animation:none}
}

/* Version A — echtes Teamfoto auf der Karriereseite (Karte 03) */
.kj__hero{background-image:url('assets/team-karriere.jpg');background-position:center 46%}

/* Alle Handys der Reihe auf dieselbe Grundlinie — sonst stehen sie je nach
   Textlaenge unterschiedlich hoch, und genau das faellt bei gleichen
   Geraeten sofort auf. Sichtbar bleiben 288px wie in loesung-cta. */
.ob-grid .iph{top:auto;bottom:-142px}

/* ==============================================================
   Karte 02 — Inhalt aus loesung-cta, auf Handybreite gebracht
   ============================================================== */
.iph .rp__hero{height:100px;flex:none}
.iph .rp__mark{left:13px;top:10px}
.iph .rp__mark i{width:9px;height:9px}
.iph .rp__mark .rp__bar{width:28px}
.iph .rp__c{left:13px;top:34px;right:13px}
.iph .rp__k{font-size:7px;margin-bottom:5px}
.iph .rp__t{font-size:14.5px;line-height:1.15}
.iph .rp__sh{background:linear-gradient(180deg,rgba(8,15,28,.28) 0%,rgba(8,15,28,.62) 55%,rgba(8,15,28,.88) 100%)}

.iph .rp__pr{display:flex;flex-direction:column;align-items:stretch;gap:9px;padding:11px 13px 12px}
.iph .rp__prtop{display:flex;align-items:baseline;gap:8px}
.iph .rp__stars svg{width:11px;height:11px}
.iph .rp__score{font-size:20px;line-height:1}
.iph .rp__n{margin-top:0;font-size:9px}
.iph .rp__q{margin:0;padding-left:0;border-left:0;font-size:10.5px;line-height:1.45}
.iph .rp__q b{margin-top:5px;font-size:9.5px}

.iph .rp__rf{padding:10px 13px 0;flex:none}
.iph .rp__row{gap:6px}
.iph .rp__im{height:54px}

/* Chip haengt am Handy, nicht an der Buehne */
.chip--p{right:-6px;bottom:132px}
@media(max-width:900px){.chip--p{right:auto;left:50%;margin-left:-30px;bottom:124px}}

/* Karte 03 — Teamfoto wie ein Seitenkopf: Verlauf oben und unten,
   Kicker links oben, Zeile darunter. Blau auf dunklem Grund ist
   #8FB2FF, dieselbe Farbe wie der Kicker im dunklen Band. */
.kj__hero{height:112px}
.kj__sh{background:
  linear-gradient(180deg,rgba(8,15,28,.72) 0%,rgba(8,15,28,.22) 42%,rgba(8,15,28,.10) 62%,rgba(8,15,28,.78) 100%)}
.kj__kick{position:absolute;left:13px;top:11px;z-index:2;
  font-size:8px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:#8FB2FF}
.kj__ht{position:absolute;left:13px;bottom:11px;right:13px;z-index:2;
  font-size:15px;font-weight:500;line-height:1.15;letter-spacing:-.01em;color:#fff}

/* ==============================================================
   Fassung "drei Handys" — Nacharbeiten an den Grafiken 01-03
   ============================================================== */

/* Karte 01 — die anderen Treffer stehen als echte Eintraege da, matt.
   Graue Balken lasen sich als Ladezustand, nicht als Konkurrenz. */
.gres__row--o{opacity:.5}
.gres__row--o .gres__txt b{font-weight:400;color:#5f6368}
.gres__row--o .gres__txt em{color:#7b8794}
.gres__fav--o{background:rgba(10,23,48,.12);color:transparent}

/* Karte 02 — Fotoreihe raus. Ein Beweis gross statt fuenf klein:
   die Bewertung traegt die Karte, das Zitat wird lesbar. */
.iph .rp__pr{gap:11px;padding:13px 13px 14px}
.iph .rp__q{font-size:11.5px;line-height:1.5}
.iph .rp__q b{margin-top:6px;font-size:10px}


/* Beide Fassungen mussten am Anschnitt nachjustiert werden: was zaehlt,
   steht ueber der Schnittkante, was laeuft, laeuft darunter raus. */
.gm{padding-top:12px}
.gm .gsearch__logo{margin-bottom:8px}
.gm__tabs{margin-top:11px}
.kj__hero{height:96px}

/* Mobil laufen die Kacheln ueber die Handy-Inhalte: "Neue Anfrage" deckt
   die Headline der Beispielseite ab, "Neue Bewerbung" stoesst an
   "Arbeiten bei uns". Auf schmalem Schirm zaehlt der Screen, nicht die
   Kachel — deshalb faellt sie dort weg. */
@media(max-width:1000px){
  .chip--p,.chip--k{display:none}
}


/* ==================================================================
   SEKTION 03 — DAS SYSTEM (sechs Bausteine) · integriert 20.08.2026
   Quelle: wireframe-03g · Klassen kollisionsfrei geprüft
   ================================================================== */
/* ===== Sektion 03 · Kachelraster (Maße an netfame gemessen) ===== */
.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.t{position:relative;border:1px solid var(--line);border-radius:2px;background:var(--bg-alt);padding:40px 40px 0;
   min-height:435px;display:flex;flex-direction:column;
   transition:border-color .25s var(--ease)}
.t:hover{border-color:rgba(24,91,237,.4)}

/* Nummer absolut, damit sie die netfame-Proportionen nicht verschiebt */
.t__no{position:absolute;top:40px;right:40px;font-size:11.5px;font-weight:600;letter-spacing:.1em;color:var(--blue);margin:0}

/* Überschrift: 28/33.6, wie gemessen */
.t__h{margin:0 34px 0 0;font-size:28px;line-height:33.6px;font-weight:500;
      letter-spacing:-.015em;color:var(--ink)}

/* Text: 16/24, wie gemessen */
.t__p{margin:14px 0 32px;font-size:16px;line-height:24px;color:var(--ink-2)}

/* Grafikfläche: volle Kachelbreite, unten bündig — wie bei netfame */
.t__g{margin:auto -40px 0;border-top:1px dashed rgba(10,23,48,.22);background:#fff;
      height:246px;flex:none;display:flex;align-items:center;justify-content:center}
.t__g>span{font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}

/* Grafikfläche im UI-Modus: gezeichneter Screen, unten angeschnitten */
.t__g--ui{display:block;position:relative;padding:18px 50px 0;overflow:hidden;
          border-top:0;background:var(--bg-alt)}
/* Rasterpapier — fein und schwach, wie bei netfame gemessen */
.t__g--ui::before{content:'';position:absolute;inset:0;
  background-image:linear-gradient(rgba(11,37,87,.045) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(11,37,87,.045) 1px,transparent 1px);
  background-size:22px 22px;
  -webkit-mask-image:linear-gradient(transparent 0,#000 8%);
  mask-image:linear-gradient(transparent 0,#000 8%)}
.t__g--ui>*{position:relative;z-index:1}
/* Fenster laufen unten weich aus statt hart geschnitten — netfame-Muster; 05 (Figur) ausgenommen */
.t__g--ui:not(:has(.b5)){-webkit-mask-image:linear-gradient(#000 calc(100% - 54px),transparent 100%);
                         mask-image:linear-gradient(#000 calc(100% - 54px),transparent 100%)}
/* dunkles Fenster: Inhalt läuft erst in sattes Navy aus, dann löst sich nur die Farbfläche auf —
   verhindert den Weißnebel über dunklem Grund */
/* dunkles Fenster: gleiche sanfte Rampe wie die hellen, als Farbverlauf ÜBER dem Inhalt —
   Ring und Kontur bleiben erhalten (eine Maske würde sie kappen).
   Fenster hängt 98px unter die Sichtkante; der Verlauf endet exakt dort. */
.t__g--ui:has(.scr--dark){-webkit-mask-image:none;mask-image:none}
.scr--dark{position:relative}
.scr--dark::after{content:'';position:absolute;left:0;right:0;bottom:98px;height:58px;z-index:3;
    pointer-events:none;
    background:linear-gradient(to bottom,
      rgba(245,246,248,0) 0%,
      rgba(245,246,248,.03) 22%,
      rgba(245,246,248,.10) 42%,
      rgba(245,246,248,.24) 60%,
      rgba(245,246,248,.48) 76%,
      rgba(245,246,248,.74) 88%,
      #F5F6F8 100%)}

/* ===== Kachel 01 · echte Seite statt Attrappe (02.09.2026) =====
   Eigene Klasse statt `t__g--ui`, weil diese Grafik weder das
   Rasterpapier noch die untere Ausblendmaske will: Sie bringt ihre
   Flaeche selbst mit, und der Schnitt unten ist gewollt.

   Hintergrund = `--bg-alt`, also derselbe Ton wie die Textflaeche
   darueber. Das ist eine PARKPOSITION, keine Entscheidung — Hintergrund,
   Rahmen und Kartenfarbe werden am Ende fuer alle sechs Kacheln in einem
   Zug durchgegangen. */
.t__g--foto{display:block;position:relative;padding:0;overflow:hidden;
    border-top:0;background:var(--bg-alt);height:246px}

/* fertige Kacheln zeigen die 435-Messmarke nicht mehr */
.t--done::after{display:none}

/* ===== Fensterrahmen — gemeinsam für alle Grafiken =====
   Heller Ring statt Schatten. Maß und Deckkraft aus netfames Originalbild gemessen:
   Fenster 75,6 % der Fläche, Rand 12,3 %, Ring 2,5 %. */
.scr{background:#fff;border-radius:16px 16px 0 0;overflow:hidden;
     box-shadow:0 0 0 1px rgba(10,23,48,.13),
                0 0 0 10px rgba(255,255,255,.55),
                0 0 14px 12px rgba(255,255,255,.4),
                0 6px 22px rgba(11,37,87,.10)}

/* ===== 02 · Google-Suche „Stellenangebote" ===== */
.gg{padding:0 18px 0;font-family:Roboto,Arial,system-ui,sans-serif;color:#202124}
/* Kopfbereich getönt — gibt dem Fenster oben eine sichtbare Kante, wie die Browserleiste in 01 */
.gg__top{display:flex;align-items:center;gap:13px;background:#F7F8FA;margin:0 -18px;
         padding:14px 18px;border-bottom:1px solid #EDEFF3}
.gg__logo{width:24px;height:24px;flex:none}
.gg__q{flex:1;display:flex;align-items:center;gap:8px;min-width:0;background:#fff;white-space:nowrap;
       border:1px solid #dfe1e5;border-radius:22px;padding:10px 14px;font-size:15px;color:#202124}
.gg__q svg{width:15px;height:15px;flex:none;fill:#9aa0a6;margin-left:auto}

.gg__h{display:flex;align-items:center;justify-content:space-between;margin:15px 0 5px}
.gg__h b{font-size:17px;font-weight:400;color:#202124}
.gg__f{background:#1a73e8;color:#fff;font-size:12px;border-radius:14px;padding:5px 13px}

.gj{display:flex;align-items:flex-start;gap:14px;padding:13px 0;border-bottom:1px solid #f1f1f1}
.gj__ic{width:40px;height:40px;border-radius:7px;flex:none;display:flex;align-items:center;
        justify-content:center;background:#F1F3F4}
.gj__ic svg{width:19px;height:19px;fill:#5f6368}
.gj__t{margin:0;font-size:15px;font-weight:500;color:#202124;line-height:1.3}
.gj__c{margin:3px 0 0;font-size:13.5px;color:#5f6368;line-height:1.3}
.gj__m{margin:2px 0 0;font-size:13px;color:#5f6368;line-height:1.3}
.gj__m em{font-style:normal;color:#202124}

/* angedeutete Folgeeinträge — wie netfame: Masse statt Text */
.gj__r{padding:16px 0 0;display:flex;flex-direction:column;gap:13px}
.gj__r i{display:block;height:11px;border-radius:6px;background:#F0F1F4}
/* ===== 03 · Local Pack — Karte und drei Betriebe ===== */
.mp{display:block;width:calc(100% + 36px);margin:0 -18px;height:31px}
.gg__h--sm{margin:5px 0 0}
.gg__h--sm b{font-size:13px;font-weight:500;color:#5f6368}
.lp{display:flex;align-items:center;gap:12px;padding:6px 0;border-bottom:1px solid #f1f1f1}
.lp__t{margin:0;font-size:13.5px;font-weight:500;color:#202124;line-height:1.35}
.lp__s{display:flex;gap:2px;margin-top:2px}
.lp__s svg{width:10px;height:10px;fill:#F4B400}
.lp__call{margin-left:auto;width:30px;height:30px;border-radius:50%;background:#E8F0FE;flex:none;
          display:flex;align-items:center;justify-content:center}
.lp__call svg{width:14px;height:14px;fill:#1a73e8}
.lp--m i{display:block;border-radius:5px;background:#F0F1F4}
.lp--m .lp__call{background:#F3F4F6}
/* ===== 05 · Ein Ansprechpartner — Figur über den Bereichen, alles abgehakt ===== */
.b5{position:relative;height:246px;margin:0 -50px;overflow:hidden}
.fc{position:absolute;display:inline-flex;align-items:center;gap:8px;background:#fff;
    border:1px solid rgba(10,23,48,.09);border-radius:3px;padding:11px 15px;
    font-size:12.5px;font-weight:500;color:var(--ink);white-space:nowrap;
    box-shadow:0 2px 6px rgba(11,37,87,.05);z-index:1}
.fc svg{width:15px;height:15px;fill:#185BED;opacity:.8}
.fc--main{font-weight:600;font-size:14px;padding:13px 19px;z-index:2;
          border-color:rgba(10,23,48,.14);box-shadow:0 10px 26px rgba(11,37,87,.16)}
.fc__bust{position:absolute;left:-4px;bottom:-2px;height:124px;width:auto;
          filter:drop-shadow(0 2px 5px rgba(11,37,87,.12))}
.v5w{position:relative;display:inline-flex}
.bd{position:absolute;top:-7px;right:-7px;width:18px;height:18px;border-radius:50%;
    background:#fff;border:1px solid rgba(10,23,48,.12);display:flex;align-items:center;justify-content:center;
    box-shadow:0 2px 6px rgba(11,37,87,.14);z-index:2}
.bd svg{width:10px;height:10px;fill:#185BED;opacity:1}

/* ===== 06 · Anzeige über den Ergebnissen ===== */
.ad__lbl{margin:9px 0 7px;font-size:12px;font-weight:700;color:#202124}
.ad__row{display:flex;align-items:center;gap:9px}
.ad__fav{width:24px;height:24px;border-radius:50%;background:#E8F0FE;flex:none;
         display:flex;align-items:center;justify-content:center}
.ad__fav svg{width:12px;height:12px;fill:#1a73e8}
.ad__site{font-size:12.5px;font-weight:500;color:#202124;line-height:1.2}
.ad__url{font-size:11px;color:#5f6368;line-height:1.2}
.ad__h{display:block;margin:8px 0 0;height:13px;border-radius:4px;background:#A8C7FA}
.ad__d{display:block;margin-top:6px;height:8px;border-radius:4px;background:#F0F1F4}
/* organische Treffer darunter — reine Masse */
.og{margin-top:12px;padding-top:0}
.og__row{display:flex;align-items:center;gap:9px;margin-top:10px}
.og__fav{width:24px;height:24px;border-radius:50%;background:#F1F3F4;flex:none}
.og__l i{display:block;border-radius:4px;background:#F0F1F4}
.og__h{display:block;margin-top:9px;height:12px;border-radius:4px;background:#E4E7EC}


/* ===== 01 · Die Website im Browser ===== */
.br__bar{display:flex;align-items:center;gap:12px;padding:8px 14px;background:#F7F8FA;
         border-bottom:1px solid #EDEFF3}
.br__dots{display:flex;gap:5px;flex-none}
.br__dots i{width:8px;height:8px;border-radius:50%;background:#E1E4EA}
.br__url{flex:1;display:flex;align-items:center;gap:7px;min-width:0;background:#fff;
         border-radius:14px;padding:5px 12px;font-size:12px;color:var(--ink-2)}
.br__url svg{width:11px;height:11px;flex:none;fill:#9AA2B4}

/* Kopfzeile der gezeigten Seite */
.si__nav{display:flex;align-items:center;gap:9px;padding:8px 16px;border-bottom:1px solid #F0F1F5}
.si__name{font-size:13.5px;font-weight:600;color:var(--ink);letter-spacing:-.01em}
.si__menu{margin-left:auto;display:flex;gap:9px;align-items:center}
.si__menu i{display:block;width:22px;height:6px;border-radius:3px;background:#EFF1F5}
.si__call{background:var(--blue);color:#fff;font-size:11px;font-weight:500;
          border-radius:2px;padding:6px 11px;white-space:nowrap}

/* Hero — im Ton der Browserleiste, damit kein weiterer Grauton dazukommt */
.si__hero{background:#F7F8FA;padding:14px 16px 17px}
.si__hb{display:flex;flex-direction:column;gap:8px}
.si__hb i{display:block;border-radius:4px}
.si__hb i:first-child{height:18px;width:70%;background:#B4C0D2}
.si__hb i:last-child{height:11px;width:58%;background:#DFE4EC}
.si__cta{display:flex;align-items:center;gap:15px;margin:15px 0 0}
.si__btn{background:var(--blue);color:#fff;font-size:12px;font-weight:500;border-radius:2px;padding:9px 16px}
.si__link{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:500;color:var(--ink)}
.si__link svg{width:10px;height:10px;fill:var(--ink-2)}

/* darunter wieder weiß */
.si__rest{margin:15px 0 0;padding:0 16px;display:flex;flex-direction:column;gap:11px}
.si__rest i{display:block;height:12px;border-radius:6px;background:#EFF1F5}

/* ===== 04 · Dunkles Produkt ===== */
.scr--dark{background:linear-gradient(180deg,#0E2B63 0%,#0A1F4B 100%);
    box-shadow:0 0 0 1px rgba(10,23,48,.13),
               0 0 0 10px rgba(255,255,255,.55),
               0 0 14px 12px rgba(255,255,255,.4),
               0 6px 22px rgba(11,37,87,.10)}
.dkh{display:flex;align-items:center;justify-content:space-between;background:#F7F8FA;
     padding:10px 16px;border-bottom:1px solid #EDEFF3}
.dkh__t{font-size:12.5px;font-weight:600;color:var(--ink);letter-spacing:-.01em}
.dkh__p{font-size:11px;color:var(--ink-3)}
.dke{padding:15px 16px 0}
.dke__l{display:block;font-size:11px;color:rgba(255,255,255,.55)}
.dke__row{display:flex;align-items:baseline;gap:9px}
.dke__n{font-size:42px;font-weight:600;color:#fff;letter-spacing:-.035em;line-height:1.05;
        font-variant-numeric:tabular-nums}
.dke__b{font-size:10.5px;font-weight:500;color:#9DB9F2;background:rgba(111,161,255,.14);
        border-radius:10px;padding:3px 9px}
.dkw{position:relative;margin-top:8px}
.dkw svg{display:block;width:100%}
.dkt{position:absolute;left:116px;top:0;background:#fff;border-radius:3px;padding:7px 11px;
     box-shadow:0 10px 26px rgba(0,0,0,.38)}
.dkt__n{display:block;font-size:12.5px;font-weight:600;color:var(--ink);white-space:nowrap}
.dkt__s{display:block;margin-top:1px;font-size:10.5px;color:var(--ink-3);white-space:nowrap}
/* Chip-Variante */
.dkc{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:13px 16px 0}
.dkc>div{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);
         border-radius:3px;padding:8px 11px}
.dkc b{display:block;font-size:18px;font-weight:600;color:#fff;letter-spacing:-.02em;
       font-variant-numeric:tabular-nums}
.dkc span{display:block;margin-top:1px;font-size:10px;color:rgba(255,255,255,.5)}

/* ===== Abschlussband ===== */
.band{margin-top:80px;background:var(--navy);border-radius:2px;padding:64px}
.band__grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:64px;align-items:center}
.band__t{font-size:clamp(24px,2.3vw,33px);font-weight:300;line-height:1.2;letter-spacing:-.02em;color:#fff;margin:0 0 14px}
.band__p{font-size:15px;line-height:1.65;color:rgba(255,255,255,.66);max-width:52ch;margin:0}
.cta{display:flex;align-items:center;gap:22px;flex-wrap:wrap;margin-top:28px}
.btnw{display:inline-flex;align-items:center;gap:10px;background:#fff;color:var(--ink);padding:16px 26px;border-radius:2px;
      font-weight:500;font-size:15px;text-decoration:none;transition:.25s var(--ease)}
.btnw .ar{transition:transform .25s var(--ease)}
.btnw:hover .ar{transform:translateX(5px)}
.ctanote{font-size:13.5px;color:rgba(255,255,255,.5)}
.gar{border:1px solid var(--wline);border-radius:2px;padding:34px;position:relative}
.gar__lbl{font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.55);margin:0 0 16px}
.gar__t{font-size:19px;font-weight:300;line-height:1.4;color:#fff;margin:0}
.gar__t strong{font-weight:500}
.tick{position:absolute;width:9px;height:9px;border:1px solid rgba(255,255,255,.4)}
.tick--tl{top:-1px;left:-1px;border-right:0;border-bottom:0}
.tick--br{bottom:-1px;right:-1px;border-left:0;border-top:0}


@media(max-width:1100px){ .tiles{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media(max-width:900px){
  .tiles{grid-template-columns:1fr}
  .t{min-height:0;padding-bottom:0}
  .t__g{height:246px;margin-top:32px}
  .band{padding:36px 24px}
}

/* Sektion 03 · Übergangs-CTA (Band entfernt 20.08. — künftige Richtung: helles Band mit Personen-Bild) */
.s3cta{display:flex;justify-content:center;margin-top:72px}


/* ==================================================================
   ERFOLGSFORMEL — Struktur 1:1 nach netfame, Tokens WebMount
   (Copy vorerst netfame-Wortlaut — wird ersetzt) · 20.08.2026
   ================================================================== */
.fx__head{text-align:center;max-width:720px;margin:0 auto 72px}
.fx__kick{display:block;font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--blue);margin:0 0 18px}
.fx__head .h2{margin:0 0 18px}
.fx__head .lede{margin:0 auto;max-width:56ch}
.fx__row{display:flex;gap:55px}
.fx__col{flex:1;position:relative;background:var(--bg-alt);border:1px solid var(--line);
         border-radius:2px;padding:20px}
/* Glow der Erfolgsformel halbiert (04.09.). Nicht weg, nur weniger:
   Bei den Vorteilen liegt derselbe Gedanke als grosse, diffuse
   Flaeche und liest als Lichtstimmung. Hier sass er mit 24px
   Streuung direkt unter einem 75px-Symbol — konzentriert, dadurch
   als Effekt erkennbar. Deckkraft .22->.10 und .28->.12,
   Streuung 24->15, Badges .30->.14 und .35->.16. */
/* Verbinder exakt wie netfame: 75px-Kreis, überlappt beide Kartenkanten um 10px,
   Symbol ist aus dem Kreis ausgestanzt, weicher farbiger Glow statt Box-Shadow */
.fx__col:nth-child(1)::after,.fx__col:nth-child(2)::after{content:'';
  position:absolute;top:50%;right:-65px;transform:translateY(-50%);
  width:75px;height:75px;border-radius:50%;z-index:0;
  background:url('assets/formel-plus.svg') center / contain no-repeat;
  filter:drop-shadow(0 4px 15px rgba(78,147,241,.10))}
/* Ebenen wie netfame: + liegt ÜBER P1, aber UNTER P2 — = über P2, unter Resultat */
.fx__col:nth-child(1){z-index:1}
.fx__col:nth-child(2){z-index:2}
.fx__col:nth-child(3){z-index:3}
.fx__col:nth-child(2)::after{
  background-image:url('assets/formel-gleich.svg');
  filter:drop-shadow(0 4px 15px rgba(24,91,237,.12))}
/* Resultat-Karte: dunkler Anker statt netfames Mint */
.fx__col--res{background:linear-gradient(180deg,#0E2B63 0%,#0A1F4B 100%);border-color:var(--navy)}
.fx__phase{display:flex;align-items:center;gap:8px;min-height:31px;padding:4px;border-radius:2px;
           background:#fff;
           font-size:14px;font-weight:500;color:var(--ink);letter-spacing:-.01em}
.fx__num{flex:none;padding:3px 8px;border-radius:2px;background:#fff;
         box-shadow:0 0 3px rgba(24,91,237,.14);
         font-size:13px;font-weight:400;letter-spacing:.03em;text-transform:uppercase;color:var(--blue)}
.fx__col--res .fx__phase{background:rgba(255,255,255,.1);color:#fff}
.fx__col--res .fx__num{background:#fff;box-shadow:0 0 3px rgba(255,255,255,.16);color:var(--navy)}
.fx__sub{margin:16px 2px 6px;font-size:15.5px;line-height:1.5;font-weight:500;color:var(--ink)}
.fx__col--res .fx__sub{color:#fff}
.fx__list{list-style:none;margin:12px 0 0;padding:0}
.fx__list li{position:relative;padding:7px 0 7px 30px;font-size:15px;line-height:1.5;color:var(--ink-2)}
.fx__list li::before{content:'';position:absolute;left:2px;top:10px;width:17px;height:17px;border-radius:50%;
  background:#fff;border:1px solid rgba(10,23,48,.12);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23185BED' d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E");
  background-size:10px 10px;background-position:center;background-repeat:no-repeat}
.fx__col--res .fx__list li{color:rgba(255,255,255,.78)}
.fx__col--res .fx__list li::before{border-color:rgba(255,255,255,.2)}
@media(max-width:1100px){
  .fx__row{gap:30px}
  .fx__col:nth-child(1)::after,.fx__col:nth-child(2)::after{right:-45px;width:60px;height:60px}
}
@media(max-width:820px){
  .fx__row{flex-direction:column;gap:40px;max-width:560px;margin:0 auto}
  .fx__col:nth-child(1)::after,.fx__col:nth-child(2)::after{
    top:auto;right:auto;bottom:-50px;left:50%;transform:translate(-50%,0);width:60px;height:60px}
}


/* ==================================================================
   TEST · Monochromer Glow — Atmosphäre-Layer, erst nur an #formel
   (bei Freigabe site-weit ausrollen) · 20.08.2026
   ================================================================== */
/* Der Glow lag als background-image direkt auf der Sektion. Ein
   Hintergrundbild endet an der Kastenkante — die Farbwolke wurde
   unten hart abgeschnitten, sichtbar als Kante quer ueber die Seite.
   Jetzt liegt er auf einer eigenen Ebene mit weicher Maske: oben
   blendet er ueber die ersten 20 %, unten ueber die letzten 26 % aus,
   sodass die Wolke ausläuft statt zu enden. Der Inhalt sitzt in
   .container darueber (z-index:1). */
#formel{position:relative;overflow:hidden;background:#fff}
#formel::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:url('assets/formel-bg.svg') center / cover no-repeat;
  -webkit-mask-image:linear-gradient(180deg,transparent 0,#000 20%,#000 74%,transparent 100%);
  mask-image:linear-gradient(180deg,transparent 0,#000 20%,#000 74%,transparent 100%)}
#formel .container{position:relative;z-index:1}


/* ==================================================================
   ZÄHLER-SYSTEM ENTFERNT (Entscheidung Melvin, 21.08.2026):
   keine Wasserzeichen-Nummern, keine Nummern-Präfixe in Labels
   ================================================================== */
.wmk{display:none}
.lbl i{display:none}


/* ==================================================================
   VORTEILE — Struktur nach netfame (Karten mit Verlaufs-Rahmen),
   Tokens WebMount; Copy 1:1 Interim · 21.08.2026
   ================================================================== */
.vt__head{text-align:center;max-width:820px;margin:0 auto 72px}
.vt__kick{display:block;font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--blue);margin:0 0 18px}
.vt__head .h2{margin:0}
/* Weiße Karten mit Schatten, statischem Blau-Rahmen und Häkchen-Chip am Rand;
   Flecken im Sektionshintergrund geben den Karten Grund */
#vorteile{background:#fff url('assets/fleck-vorteile.svg') center / cover no-repeat}
.vt__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:28px}
.vt__card{position:relative;background:#fff;border:1px solid rgba(24,91,237,.28);border-radius:2px;
  padding:30px 32px 30px 42px;
  box-shadow:0 18px 44px rgba(11,37,87,.09);
  transition:transform .3s var(--ease),border-color .3s var(--ease),box-shadow .3s var(--ease)}
/* Hover: ruhiges Aufglimmen — kein Lift (Flacker-Falle), nichts fährt.
   Schimmer blendet nur ein, Rahmen zieht an, Chip-Glow verstärkt sich */
.vt__card::before{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(115deg,rgba(24,91,237,.05) 0%,transparent 45%);
  opacity:0;transition:opacity .35s var(--ease)}
/* Konturzahl aus der Pain-Sektion, hierher umgezogen — Verlaufsschrift,
   wird von der Karte oben links angeschnitten. Kleiner skaliert als
   das Original, weil die Karte hier deutlich niedriger ist. */
.vt__card::after{content:attr(data-nr);position:absolute;
  top:-8px;left:-16px;pointer-events:none;user-select:none;
  font:900 46px/1 'Inter Tight',system-ui,sans-serif;color:transparent;
  background-image:linear-gradient(90deg,rgba(24,91,237,0) 0,
    rgba(24,91,237,0) 30%,rgba(24,91,237,.13) 40%,
    rgba(24,91,237,.16) 52%,rgba(24,91,237,.36) 70%);
  -webkit-background-clip:text;background-clip:text}
.vt__card.in{transition:border-color .3s var(--ease),box-shadow .3s var(--ease)}
.vt__card:hover{border-color:rgba(24,91,237,.55);box-shadow:0 24px 52px rgba(11,37,87,.13)}
.vt__card:hover::before{opacity:1}
.vt__card:hover .vt__chip{box-shadow:0 8px 22px rgba(24,91,237,.5)}
.vt__chip{position:absolute;left:-16px;top:50%;transform:translateY(-50%);
  width:32px;height:32px;border-radius:2px;background:var(--blue);
  display:grid;place-items:center;
  box-shadow:0 6px 16px rgba(24,91,237,.35);transition:box-shadow .3s var(--ease)}
.vt__chip svg{width:16px;height:16px;display:block}
.vt__card p{margin:0;font-size:16.5px;line-height:1.62;color:var(--ink-2)}
@media(max-width:900px){.vt__grid{grid-template-columns:1fr;max-width:600px;margin:0 auto}}


/* ==================================================================
   GARANTIE — Struktur nach netfame: zentrierter Kopf, darunter EIN
   Beweis-Panel (Bürgschaft + 2 Karten); Copy 1:1 Interim · 21.08.2026
   ================================================================== */
.gt__head{text-align:center;max-width:900px;margin:0 auto 56px}
.gt__kick{display:block;font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--blue);margin:0 0 18px}
.gt__head .h2{margin:0 0 18px;font-size:clamp(30px,3.2vw,46px)}
.gt__note{margin:0;font-size:17.5px;line-height:1.6;color:var(--ink-2)}
.gt__panel{display:flex;gap:56px;align-items:center;
  background:var(--bg-alt);border:1px solid var(--line-soft);border-radius:2px;padding:96px 48px 44px}
.gt__vouch{flex:0 0 32%}
.gt__vouch-txt{margin:0 0 26px;font-size:19.5px;line-height:1.62;color:var(--ink);letter-spacing:-.012em}
.gt__signature{width:232px;height:auto;display:block;margin:0 0 14px 2px}

/* Portraet als Modul in Plakettengroesse: 163 x 212 sind die Masse der SICHTBAREN
   Plakette bei 200px Kastenbreite (die SVG hat Rand). Damit stehen Portraet und
   beide Siegel als drei gleich grosse Module in einer Reihe. */
.gt__ava{width:163px;height:212px;border-radius:2px;border:3px solid #fff;margin:0 0 26px;
  background:linear-gradient(180deg,#E9EEF7 0%,#DCE4F2 100%);
  box-shadow:0 0 0 1px var(--line);display:block;object-fit:cover}
.gt__sig-txt{display:flex;flex-direction:column;gap:2px}
.gt__sig-name{font-size:16px;font-weight:500;color:var(--ink);letter-spacing:-.01em}
.gt__sig-role{font-size:13px;color:var(--ink-3)}
.gt__cards{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:24px}
.gt__card{background:#fff;border:1px solid var(--line);border-radius:2px;padding:30px 30px 32px;
  box-shadow:0 30px 40px -22px rgba(11,27,43,.18)}
/* Prüfsiegel: Gold/Navy-Medaillon (Workflow-Abnahme 21.08.); Schatten via CSS statt eingebacken */
/* Garantie-Plakette: Edelstahl auf Navy, Lorbeer. Einsatzgroesse 200px. */
/* Plakette ragt 44px ueber die Kartenkante: sie liest sich als aufgesetztes
   Objekt statt als Bildinhalt und bricht die Schachtelung Rechteck-in-Rechteck. */
.gt__sealg{width:200px;height:auto;display:block;margin:-74px 0 24px}
.gt__card h3{margin:0 0 12px;font-size:19px;font-weight:500;letter-spacing:-.01em;color:var(--ink);max-width:16em}
.gt__card p{margin:0;font-size:15px;line-height:1.66;color:var(--ink-2)}
@media(max-width:1080px){
  /* gestapelt: Ueberstand zuruecknehmen, sonst haengt die Plakette im Nichts */
  .gt__panel{flex-direction:column;gap:40px;padding:36px}
  .gt__sealg{margin-top:0}
  .gt__vouch{flex:none;max-width:560px}
}
@media(max-width:680px){.gt__cards{grid-template-columns:1fr}.gt__panel{padding:26px}}

/* ===== ABLAUF (#ablauf) — Layout 1:1 nach netfame nachgebaut =======================
   Ausgemessen an netfame.de bei 1440px Viewport:
     grauer Container #F5F6F9  (bei uns var(--bg-alt) #F5F6F8 — praktisch identisch)
     weisse Karten mit 40px Einzug im Container, ~21px Abstand untereinander
     Karte 1 ragt 39px ueber die Oberkante des Containers hinaus
     Konturzahl laeuft links ueber die Kartenkante hinaus und wird dort beschnitten
     Textspalte beginnt bei 50 % der Kartenbreite
   Bewusst abweichend, jeweils mit Markengrund:
     * border-radius 2px statt netfames Rundung — die Kante ist unser Erkennungsmerkmal
     * Konturzahl in Weight 300 mit negativem Tracking statt fett — Ueberschriften-Signatur
     * Blau nur als Akzent (Zahl sehr blass, Haekchen, Button), keine blauen Flaechen
   ================================================================================== */
.ab__head{text-align:center;max-width:820px;margin:0 auto 76px}
.ab__kick{display:block;font-size:12px;font-weight:600;letter-spacing:.18em;
  text-transform:uppercase;color:var(--blue);margin:0 0 18px}
.ab__head .h2{margin:0 0 18px}
.ab__note{margin:0;font-size:clamp(16.5px,1.4vw,19px);line-height:1.65;color:var(--ink-2)}

.ab__panel{background:var(--bg-alt);border:1px solid var(--line-soft);border-radius:2px;
  padding:40px}
.ab__steps{display:flex;flex-direction:column;gap:21px}

.ab__step{position:relative;overflow:hidden;background:#fff;border:1px solid var(--line);
  border-radius:2px;display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center;
  padding:40px 48px;box-shadow:0 30px 40px -22px rgba(11,27,43,.16)}
.ab__step > .ab__body{grid-column:2}
.ab__media{grid-column:1;grid-row:1}
/* Karten ohne eigene Grafik: Text bleibt in Spalte 2, Spalte 1 traegt nur die Konturzahl */
.ab__step:not(:has(.ab__media)) > .ab__body{grid-column:2}
/* Karte 1 ragt ueber die Containerkante — der Kniff aus dem Vorbild */
.ab__step:first-child{margin-top:-79px}

/* Konturzahl: laeuft links aus der Karte heraus und wird von ihr beschnitten */
.ab__no{position:absolute;left:-30px;top:18px;line-height:.82;
  font-size:clamp(88px,9vw,124px);font-weight:300;letter-spacing:-.02em;
  color:rgba(24,91,237,.13);pointer-events:none;user-select:none}

.ab__t{margin:0 0 10px;font-size:clamp(22px,2vw,28px);font-weight:300;letter-spacing:-.02em;
  line-height:1.2;color:var(--ink)}
.ab__sub{margin:0 0 22px;font-size:17px;line-height:1.6;color:var(--ink-2)}
.ab__list{list-style:none;margin:0 0 22px;padding:0;display:flex;flex-direction:column;gap:11px}
.ab__list li{display:flex;align-items:flex-start;gap:12px;font-size:15.5px;line-height:1.55;color:var(--ink-2)}
.ab__list svg{flex:none;width:18px;height:18px;margin-top:2px;color:var(--blue)}
.ab__cta{margin:0 0 20px}
.ab__effort{margin:0;font-size:15px;color:var(--ink-2)}
.ab__effort strong{font-weight:500;color:var(--ink)}


/* --- Grafik Karte 01: kleiner Aufwand vorne, grosse Auswertung dahinter ------------
   Bildsprache aus Sektion 03 uebernommen: flache UI-Nachbauten auf feinem Raster,
   Google-Logo als Inline-SVG, graue Balken als Textandeutung, Blau nur fuer Aktionen. */
.abg{position:relative;width:100%;max-width:430px;margin:0 auto;aspect-ratio:4/3;
  border:1px solid var(--line-soft);border-radius:2px;overflow:hidden;background:#FBFCFD;
  background-image:linear-gradient(rgba(11,37,87,.045) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(11,37,87,.045) 1px,transparent 1px);
  background-size:26px 26px}
/* hinten: die Auswertung, rechts angeschnitten */
.abg__scan{position:absolute;left:64px;top:24px;right:-34px;background:#fff;
  border:1px solid var(--line);border-radius:2px;padding:11px 13px 13px;
  box-shadow:0 18px 30px -18px rgba(11,27,43,.24)}
.abg__bar{display:flex;align-items:center;gap:8px;padding:6px 9px;margin:0 0 11px;
  border:1px solid var(--line);border-radius:2px}
.abg__g{width:13px;height:13px;flex:none}
.abg__bar span{font-size:10.5px;color:var(--ink-3);white-space:nowrap}
.abg__row{display:flex;align-items:center;gap:9px;padding:5px 0}
.abg__row b{font-size:10px;font-weight:500;color:var(--ink-3);width:11px;flex:none}
.abg__row i{height:6px;border-radius:1px;background:rgba(10,23,48,.11);display:block}
.abg__row--me b{color:var(--blue)}
.abg__row--me i{background:rgba(24,91,237,.3)}
.abg__row--me span{font-size:10px;color:var(--blue);white-space:nowrap}
/* vorne: das kurze Formular */
.abg__form{position:absolute;left:20px;bottom:22px;width:184px;background:#fff;
  border:1px solid var(--line);border-radius:2px;padding:13px 14px 14px;
  box-shadow:0 20px 34px -16px rgba(11,27,43,.3)}
.abg__lbl{display:block;font-size:10px;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-3);margin:0 0 10px}
.abg__form i{display:block;height:19px;margin:0 0 7px;border:1px solid var(--line);
  border-radius:2px;background:#FCFDFE}
.abg__btn{display:block;margin-top:10px;padding:7px 0;text-align:center;font-size:10.5px;
  font-weight:500;color:#fff;background:var(--blue);border-radius:2px}

@media(max-width:900px){
  .ab__step{grid-template-columns:1fr;gap:26px}
  .ab__step > .ab__body,.ab__step:not(:has(.ab__media)) > .ab__body{grid-column:1}
  .abg{max-width:340px}
}

@media(max-width:1080px){
  .ab__step{padding:34px 34px}
  .ab__no{font-size:clamp(72px,8vw,96px);left:-22px}
}
@media(max-width:760px){
  .ab__panel{padding:22px}
  .ab__step{padding:96px 24px 30px;box-shadow:none}
  .ab__step:first-child{margin-top:-58px}
  .ab__no{font-size:74px;left:18px;top:24px}
  .ab__head{margin-bottom:48px}
}

/* Grafiken der Ablauf-Karten: feste Zeichenflaeche 430x340,
   nach rechts eingerueckt, damit die Konturzahl links frei steht */
/* Nach rechts eingerueckt, damit die Konturzahl 01 links frei steht */
/* Gemessen: Konturzahl endet je nach Ziffernpaar bei x 92-115,
   Grafikzone begann bei 101 — 14 px Ueberlappung. Zone deckt die
   Zahl mit ihrem weissen Grund zu. 80 statt 52 setzt sie auf 129,
   also 14 px frei, und bleibt mit Rechtskante 559 in der 569 breiten
   Spalte. Keine Hoehenaenderung, Grafik bleibt mittig zum Text. */
.gfx{width:430px;max-width:100%;flex:none;margin-left:80px}
.gfx > div{max-width:100%}
@media(max-width:1080px){.gfx{width:100%;max-width:430px;margin:0 auto}}


/* ============ NACH DEM LAUNCH — SEO und Google Ads ============
   Eine Reihe, zwei Spalten: Text links, Bild rechts. Der Hintergrund
   liegt als eigene Ebene unter dem Container, damit die
   weichgezeichneten Kreise an der Sektionskante beschnitten werden,
   ohne den Inhalt zu beschneiden. */
.nl{position:relative;overflow:hidden;background:#fff}
.nl__bg{position:absolute;inset:0;pointer-events:none;z-index:0}
.nl .container{position:relative;z-index:1}
.nl__grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;
  align-items:center}
.nl__txt{max-width:520px}
.nl__kick{display:block;font-size:12px;font-weight:600;letter-spacing:.18em;
  text-transform:uppercase;color:var(--blue);margin:0 0 18px}
.nl__txt .h2{margin:0}
.nl__lede{margin:22px 0 0;font-size:clamp(16.5px,1.4vw,19px);
  line-height:1.65;color:var(--ink-2)}
.nl__note{margin:22px 0 0;font-size:16px;line-height:1.62;color:var(--ink-2)}
.nl__fig{margin:0;display:flex;justify-content:flex-end;min-width:0}
.nl__fig > div{max-width:100%}
@media(max-width:900px){
  .nl__grid{grid-template-columns:1fr;gap:38px}
  .nl__txt{max-width:none}
  .nl__fig{justify-content:center}
}

/* ==================================================================
   KAPITELKANTEN — wo eine Trennlinie steht und wo nicht (01.09.2026)
   ------------------------------------------------------------------
   Eine Haarlinie in Containerbreite steht NUR dort, wo zwei weisse
   Sektionen aneinanderstossen. Wo die Flaeche die Farbe wechselt,
   trennt die Farbe, und eine Linie waere die doppelte Aussage:

     #pain (navy)  -> #angebot        keine Linie
     #ablauf       -> #kontakt (grau) keine Linie
     #kontakt      -> #fragen         keine Linie
     #fragen       -> #gespraech(grau)keine Linie

   Jede Linie ist symmetrisch gepolstert: 96px darueber, 96px
   darunter. Vorher standen die weissen Sektionen mit 2x150px Luft
   nebeneinander, ohne dass irgendetwas den Wechsel markiert haette —
   die Kante zu #formel war die einzige, die es schon richtig machte
   (20.08., damals als Ersatz fuer einen entfallenen CTA gebaut).

   Kanten mit Linie, von oben nach unten:
     #angebot -> #formel
     #formel  -> #vergleich   (Linie sitzt im ersten Kopf von #vergleich)
     #vergleich -> #vorteile
     #vorteile  -> #garantie
     #garantie  -> #ablauf

   #ablauf behaelt unten sein eigenes Mass (130px), weil dort der
   Farbwechsel auf das graue Band folgt — siehe Kommentar bei .contact.
   ================================================================== */
#angebot,#formel,#vorteile,#garantie{padding-bottom:96px}
#formel,#vorteile,#garantie,#ablauf{padding-top:0}
#formel > .container::before,
#vorteile > .container::before,
#garantie > .container::before,
#ablauf > .container::before{content:"";display:block;
  border-top:1px solid var(--line);margin-bottom:96px}
#formel .fx__head{margin-bottom:56px}
@media(max-width:900px){
  #angebot,#formel,#vorteile,#garantie{padding-bottom:64px}
  #formel > .container::before,
  #vorteile > .container::before,
  #garantie > .container::before,
  #ablauf > .container::before{margin-bottom:64px}
  #formel .fx__head{margin-bottom:40px}
}

/* Gewinnpunkte: 18px blaues Quadrat mit weissem Haekchen — dieselbe
   Marke wie .vt__chip in der Vorteile-Sektion, nur kleiner und
   ohne den blauen Glow (Schlagschatten sind im Designsystem
   ausgeschlossen; bei 18px waere er ohnehin Matsch).
   Verworfene Zwischenschritte: blaues 7px-Quadrat ohne Haken
   (formgleich mit den Trennern der Betriebszeile), Kreis mit
   Haken wie .fx__list (Haken darin zu klein, und rund gegen
   eckig ist keine Unterscheidung, die jemand liest), blankes
   Haekchen ohne Traeger (gut lesbar, aber duenn und billig).
   Der Trenner bleibt ein 5px-Quadrat: 18 gegen 5 ist ein klarer
   Groessenunterschied, kein Beinahe-Treffer, und nur eines der
   beiden traegt ein Symbol. */
.cmp__points--wins li::before{width:18px;height:18px;border:0;border-radius:2px;background:var(--blue) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E") center/11px 11px no-repeat;transform:translateY(2px)}
.cmp__points--wins li{gap:10px}

/* Gewinnpunkte nebeneinander statt gestapelt. Gestapelt standen sie
   nur, solange der CTA rechts daneben die Breite gefuellt hat.
   netfame legt Positivpunkte in gleich breite Spalten. */
.cmp__points--row{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;align-items:start}
.cmp__points--row li{align-items:flex-start}
@media(max-width:900px){.cmp__points--row{grid-template-columns:1fr;gap:10px}}

/* --- Bewertungswand (netfame-Bauart, siehe _trust_nf.py) ---
   column-count gehoert hierher und NICHT inline: eine Inline-Angabe
   schlaegt jede Media-Query, dann bleibt die Wand auf 375px
   dreispaltig mit 97px breiten Karten. */
.nfwall{column-count:3;column-gap:20px}
@media(max-width:1100px){.nfwall{column-count:2}}
@media(max-width:760px){.nfwall{column-count:1}}

/* ==================================================================
   SEKTIONSKOEPFE — ein Abstand zum Inhalt (01.09.2026)
   ------------------------------------------------------------------
   Die Koepfe sind bewusst unterschiedlich komponiert: zentriert
   (.head-mitte, .fx__head, .vt__head, .gt__head, .ab__head),
   linksbuendig (.head-left), zweispaltig (.head-split). Der Abstand
   DARUNTER war nie eine Gestaltungsentscheidung, sondern ueber die
   Zeit auseinandergelaufen: 56 / 72 / 76 / 84px auf sechs Sektionen,
   mobil 40 / 48 / 56. Das liest sich als Unruhe, nicht als Rhythmus.

   Steht bewusst am Dateiende: #formel .fx__head trug einen eigenen
   ID-Override (56px), der jede Klassenregel weiter oben geschlagen
   haette. Der Selektor ist hier mit aufgefuehrt, damit er faellt.
   ================================================================== */
.head-mitte,.fx__head,.vt__head,.gt__head,.ab__head,.head-left,
#formel .fx__head{margin-bottom:72px}
@media(max-width:900px){
  .head-mitte,.fx__head,.vt__head,.gt__head,.ab__head,.head-left,
  #formel .fx__head{margin-bottom:52px}
}

/* Die beiden Kopf- und Blockpolster in #vergleich stehen inline (sie
   kommen aus dem Generator) und schlagen dadurch jede Klassenregel.
   Auf Mobil brauchen sie dasselbe 64px-Mass wie die uebrigen
   Kapitelkanten, sonst steht ueber der Linie 96 und darunter 64. */
@media(max-width:900px){
  .vgl-kopf{padding-top:64px!important}
  .vgl-block{padding-bottom:64px!important}
}


/* ==================================================================
   Sektion „Woran es hängt" — ersetzt Marktlage (#zahlen) und
   Die unsichtbaren Kosten (#pain).

   Grau statt Navy (Melvin, 03.09.). Damit läuft die Seite Hero dunkel
   -> hier grau -> #angebot weiß: eine Stufe statt einer Kante.
   --bg-alt ist kein neuer Wert, #kontakt und #gespraech tragen ihn auch.

   Trennung ausschließlich über 1px-Linien, kein einziger Schatten.
   Blau nur als Akzent: Label, Blocknummer, Strichmarke.
   ================================================================== */
.lg{background:var(--bg-alt)}
.lg-head{max-width:920px;margin:0 auto;text-align:center}
.lg-head .lbl{margin-bottom:20px}
.lg-head .h2{margin:0 auto;max-width:15ch;text-wrap:balance}
.lg-head .lede{margin:20px auto 0;max-width:64ch;text-wrap:balance}

.lg-bridge{margin:52px 0 0;text-align:center;font-size:17px;font-weight:500;
  color:var(--ink)}

/* Vier Blöcke: getrennt durch 1px-Linien, keine Kästen, keine Schatten */
.lg-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:0;margin-top:40px;border-top:1px solid var(--line)}
.lg-item{padding:32px 30px 34px;border-left:1px solid var(--line-soft)}
.lg-item:first-child{border-left:0;padding-left:0}
.lg-item:last-child{padding-right:0}
.lg-no{margin:0 0 16px;font-size:11.5px;font-weight:600;letter-spacing:.1em;
  color:var(--blue)}
.lg-t{margin:0 0 12px;font-size:19px;line-height:1.3;font-weight:500;
  letter-spacing:-.015em;color:var(--ink)}
.lg-p{margin:0;font-size:15.5px;line-height:1.6;color:var(--ink-2)}
.lg-src{margin:14px 0 0;font-size:12.5px;line-height:1.5;color:var(--ink-3)}

/* Vertrauensblock: weiß auf grau — der Ton trennt, nicht ein Schatten */
.lg-trust{margin-top:64px;background:#fff;border:1px solid var(--line);
  border-radius:2px;display:grid;grid-template-columns:minmax(0,1fr) 300px;
  align-items:end;overflow:hidden}
.lg-trust__txt{padding:44px 48px 44px}
.lg-trust__h{margin:0 0 18px;font-size:clamp(26px,2.4vw,34px);line-height:1.15;
  font-weight:300;letter-spacing:-.02em;color:var(--ink)}
.lg-trust__p{margin:0 0 14px;font-size:16.5px;line-height:1.62;
  color:var(--ink-2);max-width:56ch}
.lg-trust__p:last-of-type{margin-bottom:0}
.lg-trust__who{margin:24px 0 0;font-size:14px;line-height:1.5;
  color:var(--ink-3)}
.lg-trust__who b{display:block;font-weight:500;color:var(--ink);
  font-size:15px}
.lg-trust__img{align-self:end;justify-self:end;line-height:0}
.lg-trust__img img{display:block;width:300px;height:auto}

@media (max-width:1100px){
  .lg-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lg-item{padding:30px 26px 32px}
  .lg-item:first-child{padding-left:26px;border-left:1px solid var(--line-soft)}
  .lg-item:nth-child(odd){border-left:0;padding-left:0}
  .lg-item:nth-child(n+3){border-top:1px solid var(--line-soft)}
  .lg-item:last-child{padding-right:26px}
}
@media (max-width:760px){
  .lg-grid{grid-template-columns:1fr}
  .lg-item{padding:26px 0 28px;border-left:0!important;
    border-top:1px solid var(--line-soft)}
  .lg-item:first-child{border-top:0;padding-top:26px}
  .lg-trust{grid-template-columns:1fr;margin-top:48px}
  .lg-trust__txt{padding:32px 26px}
  .lg-trust__img{justify-self:center}
  .lg-trust__img img{width:240px}
}


/* ==================================================================
   Sektion „Woran es hängt" — fertige Fassung.

   KONZEPT: Der Schmerz hat keine Farbe. Sektion 03 zeigt Oberflächen in
   voller Farbe (Google-Blau, Fotos, blaue Knöpfe) — das ist die Lösung.
   Hier ist dieselbe Bildsprache entfärbt: graue Flächen, graue Balken,
   kein Google-Bunt. Die Farbe kommt erst mit der Lösung. Einziger
   Akzent im Block sind Label und Blocknummer.

   Vier gebaute Flächen, jede eine andere Bauart — dieselbe Regel wie
   bei den sechs Kacheln in Sektion 03. Grafik OBEN am Kartenkopf, nicht
   unten wie dort: gleiche Sprache, anderer Satz.
   ================================================================== */
/* ── VERWAIST ab 03.09.: .lg2-* gehoerte zur alten Pain-Sektion
   und wird von _arbeit.html nicht mehr benutzt. Die Regeln bleiben,
   weil die Vergleichsseiten dasselbe Stylesheet laden. ── */
.lg2{background:var(--bg-alt)}
/* Ohne Lede traegt die Headline allein. Sie ist eine Frage und steht
   deshalb auf EINER Zeile — eine umgebrochene Frage verliert ihren
   Ton. max-width raus, dafuer white-space:nowrap ab der Breite, wo es
   passt. */
.lg2-head{max-width:none;margin:0 auto;text-align:center}
.lg2-head .lbl{margin-bottom:22px}
.lg2-head .h2{margin:0 auto;max-width:none}
/* Test (Melvin, 03.09.): komplette Headline fett statt duenn+Teil-Fett.
   Nur diese eine Headline, kein systemweiter Wechsel. Groesse leicht
   reduziert (54 -> 48px Maximum, ca. 11%) — mehr Tinte pro Zeichen bei
   Fett wirkt bei gleicher px-Groesse optisch groesser als bei Duenn. */
.h2--fett-test{font-weight:600;letter-spacing:-.01em;
  font-size:clamp(30px,3.5vw,48px)}

/* Erkennungs-Zone zwischen Frage-Headline und Ursachen-Karten (Melvin,
   03.09., dritter Durchgang). Ein Fliesstext-Satz wurde in Sekunden
   ueberflogen. Jetzt drei Symptome als eigene, weit auseinander
   stehende Punkte — fast eine eigene Sektion. Der Raum selbst erzwingt
   die Reihenfolge: Symptom -> Pause -> Bruecke -> Ursache. */
.lg2-erk-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:32px;max-width:940px;margin:56px auto 0}
.lg2-erk{display:flex;flex-direction:column;align-items:center;gap:14px}
.lg2-erk__x{color:var(--ink-3);flex:none}
.lg2-erk__x circle{stroke:currentColor;stroke-width:1.4}
.lg2-erk__x path{stroke:currentColor;stroke-width:1.7;stroke-linecap:square}
.lg2-erk p{margin:0;white-space:nowrap;
  font:400 17px/1.5 'Inter Tight',system-ui,sans-serif;color:var(--ink-2)}

/* Bruecke: isolierte, fette Zeile — zieht den Blick zu den Karten
   runter. Deutlich mehr Abstand nach oben als vorher, damit die
   Erkennungs-Zone Zeit zum Wirken hat, bevor die Ursache kommt. */
.lg2-bruecke{margin:64px auto 0;text-align:center;
  font:600 clamp(16.5px,1.4vw,19px)/1.5 'Inter Tight',system-ui,sans-serif;
  color:var(--blue)}

/* Bodenlinie unter der Reihe (Melvin, 03.09., Fassung R1).
   Die zwei Senkrechten fingen im Nichts an und hörten im Nichts auf.
   Mit dem Boden enden sie auf etwas, und die drei Spalten lesen als ein
   Block mit drei Teilen statt als drei schwebende Säulen. Nebeneffekt:
   Karte 01 ist wegen der Quellzeile länger als 02 und 03 — ohne Linie
   sieht das nach Zufall aus, mit Linie nach Absicht. */
.lg2-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:48px;margin-top:46px;padding-bottom:38px;
  border-bottom:1px solid var(--line)}
/* ── Melvin, 03.09.: „Dadurch dass die Pain-Blöcke grau sind, ist der
   Personen-Block ein anderes Element, das heraussticht. Alles weiß macht
   es zu einem Einheitsbrei."

   Er hat recht, und die Diagnose ist genau: In der Textfassung waren die
   vier Blöcke transparent auf Grau — der weiße Personenblock war das
   EINZIGE weiße Element der Sektion. Mit den Grafiken kamen vier weitere
   weiße Kästen dazu, und die Hierarchie war weg.

   Lösung: Die Karten verlieren ihr Weiß. Die Grafik steht auf einem
   eigenen, leicht dunkleren Feld, der Text darunter direkt auf dem
   Sektionsgrund, Trennung über 1px-Linien wie in der Textfassung.
   Weiß bleibt genau einem Element vorbehalten: dem Personenblock.
   Die weißen Flächen INNERHALB der Grafiken bleiben — die sind
   dargestellte Bildschirme, keine Karten. ── */
/* Trennlinie als Pseudo-Element MITTIG IM ABSTAND, nicht als
   border-left mit Innenrand. Vorher schrumpfte das padding-left die
   Karten 2 und 3 um 21 px — ungleiche Textspalten, und die 408 px
   breiten Grafiken liefen rechts aus ihrem Feld. */
.lg2-card{position:relative;background:transparent;border:0;
  border-radius:0;overflow:visible;display:flex;flex-direction:column}
.lg2-card:not(:first-child)::before{content:'';position:absolute;
  left:-24px;top:0;bottom:0;width:1px;background:var(--line-soft)}
.lg2-viz{border:1px solid var(--line-soft);border-radius:2px;
  overflow:hidden;background:#EAECF0}
.lg2-body{padding:22px 0 0}
.lg2-viz{height:220px;flex:none}
.lg2-viz>div{margin:0 auto}

.lg2-no{margin:0 0 14px;font-size:11.5px;font-weight:600;letter-spacing:.1em;
  color:var(--blue)}
.lg2-t{margin:0 0 11px;font-size:18.5px;line-height:1.28;font-weight:500;
  letter-spacing:-.015em;color:var(--ink)}
.lg2-p{margin:0;font-size:15px;line-height:1.6;color:var(--ink-2)}
.lg2-src{margin:13px 0 0;font-size:12.5px;line-height:1.5;color:var(--ink-3)}

/* Vertrauensblock: weiß auf grau, Bild an der Kartenkante geschnitten */
.lg2-trust{margin-top:44px;background:#fff;border:1px solid var(--line);
  border-radius:2px;display:grid;
  grid-template-columns:minmax(0,1fr) 330px;align-items:end;overflow:hidden}
.lg2-trust__txt{padding:52px 52px 56px}
.lg2-trust__h{margin:0 0 18px;font-size:clamp(26px,2.4vw,34px);line-height:1.15;
  font-weight:300;letter-spacing:-.02em;color:var(--ink)}
.lg2-trust__p{margin:0 0 14px;font-size:16.5px;line-height:1.62;
  color:var(--ink-2);max-width:56ch}
.lg2-trust__p:last-of-type{margin-bottom:0}
.lg2-trust__who{margin:26px 0 0;font-size:14px;line-height:1.5;
  color:var(--ink-3)}
.lg2-trust__who b{display:block;font-weight:500;color:var(--ink);font-size:15px}
.lg2-trust__img{align-self:start;justify-self:end;line-height:0;
  margin-bottom:-1px}
.lg2-trust__img img{display:block;width:330px;height:auto}

@media (max-width:1100px){
  .lg2-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lg2-trust{grid-template-columns:minmax(0,1fr) 280px}
  .lg2-trust__img img{width:280px}
}
@media (max-width:760px){
  .lg2-grid{grid-template-columns:1fr;gap:16px}
  .lg2-trust{grid-template-columns:1fr}
  .lg2-trust__txt{padding:34px 26px 28px}
  .lg2-trust__img{justify-self:center}
  .lg2-trust__img img{width:250px}
}
/* Erkennungs-Zone fehlte im Breakpoint-Umbau: "nowrap" auf drei festen
   Spalten lief auf Mobil seitlich aus dem Container (Melvin, 03.09.,
   nach dem hässlichen Umbruch bei "passende Anfragen" gefunden). */
@media (max-width:760px){
  .lg2-erk-row{grid-template-columns:1fr;gap:28px;margin-top:44px}
  .lg2-erk p{white-space:normal;max-width:280px}
}


/* Sektion 03: Lede unter der Headline entfernt (Melvin, 03.09.),
   analog zur Pain-Sektion. Ohne Fließtext steht die H2 allein — der
   Abstand zu den Kacheln war gegen die Lede gemessen und wird sonst
   zu knapp. */
.head-mitte:not(:has(.lede)){margin-bottom:64px}


/* ==================================================================
   Pain-Sektion — Fassung C2 (Melvin, 03.09.)

   Aufbau nach netfame, aus deren DOM gemessen: Label · Headline ·
   Lede · Brueckenzeile · drei Karten · Wendung mit Person.

   DIE ENTSCHEIDUNG DAHINTER: „Modern" entsteht in flachem Design aus
   Rundung ODER Tiefe. Das Designsystem sperrt die Rundung („die Kante
   ist das Erkennungsmerkmal", Radius maximal 2) — also traegt hier die
   TIEFE. Radius bleibt bei 2, der Schatten kauft die Modernitaet
   zurueck. Damit ist der Schatten hier kein Verstoss aus Bequemlichkeit,
   sondern der Ersatz fuer das Mittel, das die Marke sich verbietet.

   Der Schatten ist ZWEISTUFIG: 1 px eng fuer die Kante, 30 px weit fuer
   die Tiefe. Ein einzelner weicher Schatten wirkt wattig.
   ================================================================== */
/* TONWECHSEL (Melvin, 03.09.): Grund grau, damit der Uebergang zu
   Sektion 03 (weiss) VORBEWUSST liest — man sieht ihn, bevor man
   liest. Der Wechsel war urspruenglich da (.lg2 war --bg-alt) und
   ging beim netfame-Nachbau verloren. Problem grau, Loesung weiss. */
.pm{background:var(--bg-alt)}
.pm-head{text-align:center;max-width:860px;margin:0 auto}
.pm-head .lbl{margin-bottom:16px}  /* 16px = Hausstandard (.head-mitte .lbl), war 20px */
.pm-h2{margin:0 auto;max-width:780px;font-weight:600;letter-spacing:-.015em;
  font-size:clamp(30px,3.4vw,46px);text-wrap:balance}
.pm-lede{margin:20px auto 0;max-width:700px;
  font:400 17px/1.62 'Inter Tight',system-ui,sans-serif;
  color:var(--ink-2);text-wrap:balance}
.pm-bruecke{margin:30px auto 0;
  font:600 17px/1.4 'Inter Tight',system-ui,sans-serif;color:var(--ink)}

.pm-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:44px}
/* Verlaufsrand: oben links am staerksten, nach rechts unten auslaufend.
   Zwei Ebenen — Fuellung ueber padding-box, Rand ueber border-box. */
.pm-card{position:relative;display:flex;flex-direction:column;
  padding:28px 22px 26px;border-radius:2px;
  border:1px solid transparent;
  /* Fuellung und Grund tauschen die Plaetze — auf grauem Grund
     wuerde eine graue Karte verschwinden. Verlaufsrand und
     Schatten bleiben unveraendert. */
  background:linear-gradient(#fff,#fff) padding-box,
    linear-gradient(150deg,rgba(24,91,237,.42),rgba(24,91,237,0) 68%)
    border-box;
  box-shadow:0 1px 2px rgba(10,23,48,.05),
    0 18px 30px -12px rgba(10,23,48,.16)}
.pm-lbl{display:block;margin:0 0 14px}
.pm-t{margin:0 0 22px;font:600 clamp(21px,1.7vw,25px)/1.32 'Inter Tight',
  system-ui,sans-serif;letter-spacing:-.015em;color:var(--ink)}
/* Platzhalter fuer die spaetere Grafik — Groesse steht schon fest,
   Inhalt kommt zuletzt. flex:1 zieht ihn auf die restliche Kartenhoehe,
   damit der Fliesstext trotz unterschiedlich langer Headlines unten
   auf gleicher Linie sitzt. */
.pm-graphic{flex:1 1 auto;min-height:150px;margin:0 0 24px;
  border:1px dashed var(--line);border-radius:2px;background:var(--bg-alt)}
/* text-wrap:pretty verhindert Einzelwort-Zeilen am Absatzende ("warum." / "spaet."
   allein auf der letzten Zeile) — ohne die Copy anzutasten. */
.pm-p{margin:0;font:400 16px/1.6 'Inter Tight',system-ui,sans-serif;
  color:var(--ink-2);text-wrap:pretty}

/* Die Wendung ist eine Stufe DUNKLER als die Karten (#EAECF0 — der Ton
   der Grafikflaechen in Sektion 03). Sie sticht damit ueber den Ton
   heraus und nicht ueber ein zusaetzliches Mittel. */
.pm-wende{margin-top:64px;display:grid;
  grid-template-columns:minmax(0,1fr) 360px;align-items:end;
  border-radius:2px;overflow:hidden;background:#EAECF0;
  /* eine Stufe dunkler als der Grund — sticht jetzt nach unten
     heraus statt nach oben */
  box-shadow:0 1px 2px rgba(10,23,48,.05),
    0 18px 30px -12px rgba(10,23,48,.16)}
.pm-wende__txt{padding:52px 48px 54px}
.pm-wende__h{margin:0 0 16px;font:600 clamp(24px,2.1vw,28px)/1.2
  'Inter Tight',system-ui,sans-serif;letter-spacing:-.02em;color:var(--ink)}
.pm-wende__p{margin:0;font:400 17px/1.62 'Inter Tight',system-ui,sans-serif;
  color:var(--ink-2);max-width:58ch}
.pm-wende__p + .pm-wende__p{margin-top:14px}
.pm-wende__who{margin:24px 0 0;font:400 14px/1.5 'Inter Tight',system-ui,
  sans-serif;color:var(--ink-3)}
.pm-wende__who b{display:block;font-weight:500;color:var(--ink);font-size:15px}
.pm-wende__img{line-height:0;justify-self:end}
.pm-wende__img img{display:block;width:360px;height:auto;margin-bottom:-1px}

@media (max-width:1040px){
  .pm-grid{grid-template-columns:1fr}
  .pm-card{padding:28px 26px 28px}
  .pm-graphic{min-height:120px;margin-bottom:20px}
  .pm-wende{grid-template-columns:1fr}
  .pm-wende__img{justify-self:start}
  .pm-wende__img img{width:300px}
}
@media (max-width:760px){
  .pm-wende__txt{padding:34px 26px 30px}
  .pm-wende__img img{width:260px}
}


/* ==============================================================
   HERO V2 — Prototyp der Idee vom 22.08.2026
   Berg raus. Rechts die Grafik: Handy, Google, eingehende Anfragen.
   Alles unter .hero--v2, damit der bestehende Hero unberuehrt bleibt.
   ============================================================== */

/* Der Grund. Kein Foto mehr, aber auch nicht nackt: Raster plus
   Lichtkegel hinter der Grafik. Die dunkle Flaeche muss die
   Seriositaet weiter tragen, die vorher das Bild getragen hat. */
.hero--v2{background:#0B2557}
/* ENTSCHIEDEN AM 04.09.: DER BERG IST RAUS.

   Vier Gruende, alle nachgemessen oder von Melvin selbst formuliert:

   1 Er kostet optisch nichts. Der Vergleich K1 gegen K4 zeigt im
     sichtbaren Bereich kaum einen Unterschied — er sass genau dort,
     wo die Fotospalte liegt. Schon im Original war er sehr
     zurueckgenommen: lokale Struktur 0,8 bis 17 von 255, in der
     linken Bildhaelfte gar keine.
   2 Er blockiert die weiche Ueberblendung. Eine lange Maske macht das
     Foto ueber die halbe Spaltenbreite durchscheinend — der Grat lief
     dadurch quer durch die Fahrzeugtuer und durch den Mann.
   3 WebMount -> Mount -> Berg ist ein Wortspiel auf den eigenen
     Firmennamen auf der teuersten Flaeche der Seite.
   4 Er bleibt im Footer: dort steht er gespiegelt auf 28 Prozent.

   Was bleibt, ist das, was Melvin am alten Hero tatsaechlich gefallen
   hat — das Muster. Die vier Stufen und die Abdunklung sind aus dem
   alten PNG ausgemessen (Kanten bei 15,0 / 31,0 / 46,1 / 60,3 der
   135deg-Achse; Abdunklungsachse 10 Grad geneigt, gefittet).
   Zurueckholen waeren zwei Zeilen — der Berg ist jetzt eine Ebene im
   Code, kein eingebranntes PNG mehr. */
.hero--v2::before{content:none}
.hero--v2::after{
  background:
    linear-gradient(rgba(11,37,87,.26),rgba(11,37,87,.26)),
    linear-gradient(190deg,
      #ffffff 11.0%,#fcfcfc 16.3%,#f4f4f4 21.5%,#e7e7e7 26.7%,
      #d5d5d5 31.8%,#c6c6c6 37.1%,#b7b7b7 42.3%,#a5a5a5 47.5%,
      #8e8e8e 52.7%,#787878 57.9%,#676767 63.1%,#5b5b5b 68.3%,
      #515151 73.5%,#4a4a4a 78.8%,#414141 84.0%,#3b3b3b 89.1%,
      #353535 94.3%,#303030 99.6%),
    linear-gradient(135deg,
      rgb(4,20,48) 0.96%,
      rgb(5,20,49) 1.97%,
      rgb(4,20,49) 2.97%,
      rgb(3,20,49) 3.98%,
      rgb(5,22,51) 4.98%,
      rgb(6,23,53) 5.99%,
      rgb(6,23,53) 6.99%,
      rgb(7,24,55) 8.00%,
      rgb(7,25,56) 9.00%,
      rgb(8,26,58) 10.00%,
      rgb(8,25,58) 11.01%,
      rgb(8,27,60) 12.01%,
      rgb(8,26,59) 13.02%,
      rgb(8,26,60) 14.02%,
      rgb(8,27,60) 15.03%,
      rgb(20,39,74) 15.03%,
      rgb(11,30,64) 15.03%,
      rgb(20,39,74) 16.03%,
      rgb(22,41,77) 17.03%,
      rgb(24,44,80) 18.04%,
      rgb(25,45,82) 19.04%,
      rgb(26,46,83) 20.05%,
      rgb(28,49,87) 21.05%,
      rgb(29,50,88) 22.06%,
      rgb(30,51,89) 23.06%,
      rgb(31,53,92) 24.07%,
      rgb(33,54,95) 25.07%,
      rgb(34,56,96) 26.07%,
      rgb(35,57,98) 27.08%,
      rgb(35,58,98) 28.08%,
      rgb(36,59,99) 29.09%,
      rgb(38,60,100) 30.09%,
      rgb(37,61,100) 30.98%,
      rgb(51,73,112) 30.98%,
      rgb(44,67,107) 31.10%,
      rgb(52,74,113) 32.10%,
      rgb(54,77,117) 33.11%,
      rgb(54,77,118) 34.11%,
      rgb(57,80,120) 35.11%,
      rgb(59,81,121) 36.12%,
      rgb(61,83,123) 37.12%,
      rgb(62,85,125) 38.13%,
      rgb(63,86,126) 39.13%,
      rgb(63,86,126) 40.14%,
      rgb(64,87,127) 41.14%,
      rgb(64,87,128) 42.15%,
      rgb(65,88,128) 43.15%,
      rgb(65,88,129) 44.15%,
      rgb(64,88,128) 45.16%,
      rgb(63,86,127) 46.08%,
      rgb(70,94,135) 46.08%,
      rgb(66,90,130) 46.16%,
      rgb(71,95,135) 47.17%,
      rgb(73,96,138) 48.17%,
      rgb(73,96,136) 49.18%,
      rgb(75,98,139) 50.18%,
      rgb(76,99,140) 51.19%,
      rgb(76,100,141) 52.19%,
      rgb(77,101,142) 53.19%,
      rgb(78,101,143) 54.20%,
      rgb(79,103,144) 55.20%,
      rgb(79,103,144) 56.21%,
      rgb(81,104,146) 57.21%,
      rgb(81,105,146) 58.22%,
      rgb(82,105,147) 59.22%,
      rgb(84,107,148) 60.22%,
      rgb(82,106,148) 60.35%,
      rgb(89,112,154) 60.35%,
      rgb(88,112,153) 61.23%,
      rgb(90,114,155) 62.23%,
      rgb(89,113,154) 63.24%,
      rgb(90,114,155) 64.24%,
      rgb(89,113,154) 100%);
  background-blend-mode:multiply,multiply,normal;
}

/* Zwei Spalten. Der Text behaelt seine Breite, rechts entsteht die
   Buehne. */
.hero--v2 .hero__inner{
  display:grid;grid-template-columns:minmax(0,1fr) 520px;
  gap:56px;align-items:center;padding-top:56px;
}
.hero--v2 .hero__txt{min-width:0}
/* Gewicht 600 und Tracking -.015em wie .pm-h2 in der Pain-Sektion,
   dafuer die Spitze von 57 auf 54 px. Fett traegt bei gleicher
   Groesse deutlich mehr Flaeche. */
.hero--v2 h1{font-size:clamp(37px,3.4vw,54px);font-weight:600;
  letter-spacing:-.015em;max-width:100%}
.hero--v2 h1 .acc{font-weight:600}
.hero--v2 .hero__lede{max-width:470px}

.anim [data-d="4"]{transition-delay:.40s}
.anim [data-d="5"]{transition-delay:.52s}
.anim [data-d="6"]{transition-delay:.64s}

/* ---- Die Buehne ---- */
.hv{position:relative;width:520px;height:556px;margin-left:auto;
  /* Die Fotospalte waechst nach links, weil ihre rechte Kante am
     Bildschirmrand klebt. Die Buehne haengt dagegen rechtsbuendig im
     Raster — sie muss um die halbe Breitenaenderung mitwandern,
     sonst stimmt der Abstand der Meldungen zum Mann nicht. */
  transform:translateX(calc((min(34vw,520px) - min(42vw,640px)) / 2))}

/* Fotokachel. Radius 2 wie jede Flaeche der Seite. Der Verlauf unten
   rechts setzt sie in den Grund, damit sie nicht ausgeschnitten
   wirkt. */
/* Randlos statt Kachel. Vorher war es ein Rechteck mit einem Foto
   darin — es sah aus wie ein Bild, das man irgendwo hergenommen und
   hineingestellt hat. Jetzt laeuft es oben und unten aus dem Hero
   heraus und wird links weich in den Grund geblendet: keine Kante,
   die es als Fremdkoerper markiert, und der Berg laeuft dahinter
   durch. */
/* Die Fotospalte haengt an der Sektion, nicht an der Buehne. Nur so
   reicht sie wirklich von Oberkante bis Unterkante und bis an den
   rechten Bildschirmrand — vorher blieben rechts 68 px Navy stehen
   und oben wurde der Kopf beschnitten.
   Bei voller Hoehe wird das Bild NUR waagrecht beschnitten
   (Kasten 470x950 = 0,49; Bild 880x1229 = 0,72), der Mann ist also
   vom Scheitel abwaerts vollstaendig zu sehen. */
.hv__foto{
  /* z-index 2, nicht 1: Der Hero-Grund liegt als ::after auf 1 und
     wird nach den Kindern gezeichnet — bei gleichem z-index lag das
     Foto darunter und war komplett unsichtbar. Der Inhalt steht auf
     3, dazwischen ist der Platz fuer das Bild. */
  position:absolute;inset:0 0 0 auto;z-index:2;
  /* K7-Geometrie: breiter und lang ueberblendet. Die lange Maske
     geht nur, weil der Berg raus ist — sonst schiene er durch. */
  width:min(42vw,640px);overflow:hidden;pointer-events:none;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 55%);
  mask-image:linear-gradient(90deg,transparent 0,#000 55%);
}
.hv__foto img{width:100%;height:100%;object-fit:cover;
  object-position:50% 50%;display:block}
/* Nur die obere linke Ecke: Dort steht die helle Fahrzeugwand ueber
   die Tuerkante hinaus. Gemessen im Quellbild reicht sie bis y = 250
   und x = 250, darunter nicht. Statt die Maske zu aendern — die
   verschiebt den Schnitt ueber die ganze Hoehe — liegt hier nur an
   dieser Stelle etwas mehr Blau. Die Tuer bleibt dadurch die Kante,
   unten aendert sich nichts. */
.hv__foto::before{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  /* Reicht weiter nach unten (46 statt 30 Prozent der Hoehe) und
     deckt kraeftiger: Der helle Streifen der Fahrzeugwand laeuft
     schraeg bis etwa auf halbe Bildhoehe, die erste Fassung endete
     zu frueh. */
  /* Zwischenstufe: kraeftiger als die erste Fassung (30 Prozent
     Hoehe, .88/.62), aber weniger als die zweite (46 Prozent,
     .95/.78/.42). Melvin, 04.09.: „so wie bei der neuen, aber noch
     etwas weniger." */
  background:radial-gradient(74% 39% at -5% -3%,
    rgba(12,33,72,.91) 0%,rgba(12,33,72,.70) 40%,
    rgba(12,33,72,.30) 70%,rgba(12,33,72,0) 100%);
}
.hv__foto::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(202deg,rgba(11,37,87,0) 40%,rgba(6,19,45,.46) 100%);
}

/* Google-Suchfeld. Pillenform, weil das die Bauform des echten
   Feldes ist — abgebildete Oberflaechen behalten ihren Radius. */
.hv__such{
  position:absolute;left:148px;top:12px;z-index:3;
  display:flex;align-items:center;gap:13px;
  width:306px;height:48px;padding:0 17px;box-sizing:border-box;
  background:rgba(11,23,44,.92);border-radius:24px;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.14);
}
/* Platzhalterbalken statt Suchbegriff: der Hero ist gewerkneutral,
   und gesucht wird nie nach „Handwerker“. */
.hv__such .bar{flex:1;height:9px;border-radius:5px;
  background:rgba(255,255,255,.15)}

/* Die eingehenden Meldungen. Sie ragen ueber die linke Fotokante —
   daher kommt die Bewegung nach aussen. */
/* Die Meldungen liegen jetzt AUF dem Bild statt daneben — vorher
   hingen sie halb im Navy und gehoerten zu nichts. Und sie sind Glas:
   durchscheinend mit Unschaerfe dahinter, so wie eine echte
   Benachrichtigung ueber dem Hintergrundbild eines Handys liegt.
   Der Radius ist 16 px statt 2 — das ist der Radius, den eine echte
   Benachrichtigung hat. Die 2px-Regel gilt fuer Bauteile der Seite,
   nicht fuer abgebildete Oberflaechen. */
.hv__k{
  position:absolute;z-index:4;width:296px;
  display:flex;gap:12px;align-items:flex-start;
  padding:14px 16px;box-sizing:border-box;
  background:rgba(9,17,32,.58);border-radius:16px;
  -webkit-backdrop-filter:blur(18px) saturate(1.25);
  backdrop-filter:blur(18px) saturate(1.25);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.16),
             0 18px 40px -18px rgba(2,8,20,.70);
}
/* Sie ragen ueber die linke Bildkante hinaus und in die Spalte
   hinein — daher kommt die Bewegung nach aussen. Ueberlappung mit
   dem Foto: 64 / 94 / 54 px. */
.hv__k--a{left:118px;top:136px}
.hv__k--b{left:100px;top:266px}
.hv__k--c{left:140px;top:396px}

.hv__k .ic{
  flex:none;width:30px;height:30px;border-radius:7px;
  display:flex;align-items:center;justify-content:center;
}
/* Die Textspalte muss wachsen. Ohne flex:1 richtet sich ihre Breite
   nach dem laengsten Wort — bei „Telefon / vor 4 Min.“ klebten die
   beiden dann aneinander (gemessen: 0 px Luecke). */
.hv__k .tx{flex:1 1 auto;min-width:0;display:block}
.hv__k .app{
  display:flex;align-items:baseline;
  font-size:10px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;
  color:rgba(255,255,255,.48);line-height:1;
}
.hv__k .app i{margin-left:auto;font-style:normal;font-weight:500;
  letter-spacing:.04em;color:rgba(255,255,255,.40)}
.hv__k .ti{
  margin:5px 0 0;font-size:13.5px;font-weight:600;letter-spacing:-.012em;
  line-height:1.28;color:#fff;
}
.hv__k .su{margin:2px 0 0;font-size:12px;line-height:1.3;
  color:rgba(255,255,255,.60)}

/* ---- Google-Treffer ----
   Gleicher Bau wie die Meldungen: dunkle Flaeche, Haarlinie statt
   Schatten. Die beiden Knoepfe sind die, die im echten Eintrag
   stehen — Rudolf erkennt seinen eigenen wieder. */
.hv__tr{
  position:absolute;z-index:4;width:296px;
  padding:13px 15px 15px;box-sizing:border-box;
  background:rgba(11,23,44,.92);border-radius:2px;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.14);
}
.hv__tr .bar{flex:1;height:9px;border-radius:5px;
  background:rgba(255,255,255,.16)}
.tr-kopf{display:flex;align-items:center;gap:11px;padding-bottom:12px;
  border-bottom:1px solid rgba(255,255,255,.12)}
.tr-zeile{display:flex;gap:11px;align-items:flex-start}
.tr-mark{flex:none;width:30px;height:30px;border-radius:2px;
  background:rgba(255,255,255,.94);
  display:flex;align-items:center;justify-content:center}
.tr-tx{min-width:0}
.tr-tx b{display:block;font-size:14px;font-weight:600;letter-spacing:-.01em;
  color:#fff;line-height:1.2}
.tr-st{display:flex;align-items:center;gap:7px;margin-top:5px}
.tr-st i{font-style:normal;font-size:11.5px;color:rgba(255,255,255,.58)}
.tr-akt{display:flex;gap:8px;margin-top:14px}
.tr-btn{display:inline-flex;align-items:center;gap:6px;height:30px;
  padding:0 13px;border-radius:2px;font-size:12px;font-weight:500;
  color:rgba(255,255,255,.78);border:1px solid rgba(255,255,255,.20)}
.tr-btn--p{background:var(--blue);color:#fff;border-color:var(--blue)}

/* ---- Trust: die Zeilen-Variante ohne Gesichter. Bleibt stehen,
   falls wir zurueckwollen — aktiv sind die Avatare. ---- */
.hero--v2 .hero__trust--zeile{
  display:block;max-width:470px;margin-top:36px;padding-top:19px;
  border-top:1px solid rgba(255,255,255,.18)}
.hero--v2 .hero__trust--zeile p{margin:0;font-size:14.5px;
  letter-spacing:.005em;color:rgba(255,255,255,.60)}
.hero--v2 .hero__trust--zeile b{color:#fff;font-weight:600}

/* Unter 1180px hat die zweite Spalte keinen Platz mehr. Die Grafik
   sitzt dann unter dem Text statt daneben. */
@media(max-width:1180px){
  .hero--v2 .hero__inner{grid-template-columns:1fr;gap:48px}
  .hero--v2 .hero__viz{display:flex;justify-content:center}
  .hero--v2{min-height:0;padding:150px 0 110px}
}
/* Handy: die Buehne ist 520 breit gebaut und wird als Ganzes
   herunterskaliert. Gemessen bei 390 px Viewport — ohne das ragte sie
   105 px ueber den Rand. Der Versatz nach rechts faengt die Karten
   ab, die um 56 px nach links herausragen (56 x .58 = 32). */
@media(max-width:760px){
  .hero--v2 .hero__viz{display:block;height:323px}
  .hv{width:520px;height:556px;margin:0 0 0 34px;
      transform:scale(.58);transform-origin:0 0}
}
