/* ============================================================
   BU-Rechte – gemeinsames Stylesheet
   Branche: Kanzlei für Versicherungsrecht (Berufsunfähigkeit)
   Paradigma: Direct-Response-Landingpage – ein Ziel, der
   kostenfreie Erstcheck. Hell, ruhig, vertrauenswürdig.
   Farbwelt: tiefes Kanzlei-Blau auf Off-White, Layout und
   Abstände identisch zur freigegebenen Agrar-Rechte-Blaupause.
   ============================================================ */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}

/* Outfit selbst gehostet (variable Schrift, 300–800, Latin) – nie remote von
   Google laden, sonst geht die Besucher-IP an Google (CLAUDE.md). Die URL muss
   bytegleich zum <link rel="preload"> in den Seiten sein. */
@font-face{font-family:'Outfit';font-style:normal;font-weight:300 800;font-display:swap;
  src:url(assets/fonts/outfit-latin.woff2) format('woff2');}

:root{
  --bg:#ffffff;
  --bg-soft:#F2F4F9;         /* zartes Blau-Grau */
  --bg-accent:#E9EEF7;       /* helle Blaufläche */
  --ink:#131A2B;             /* tiefes Blau-Schwarz */
  --ink-2:#4B5468;
  --ink-3:#7C8496;
  --line:#E3E7F0;
  --accent:#0D3073;          /* Primär – Kanzlei-Blau (CD) */
  --accent-d:#0A2559;        /* Hover/dunkler */
  --accent-l:#E7ECF6;        /* Tint */
  --accent-deep:#081C44;     /* dunkles Band-Blau */
  --amber:#E7A008;          /* warmer Signal-Akzent (sparsam) */
  --amber-l:#FBEFD2;
  --white:#fff;

  --disp:'Manrope',system-ui,-apple-system,sans-serif;
  --body:'Inter',system-ui,-apple-system,sans-serif;

  --t:.32s cubic-bezier(.22,1,.36,1);
  --pad:clamp(3.5rem,7vw,6.5rem);
  --gut:clamp(1.15rem,4vw,2rem);
  --r:14px;
  --r-lg:20px;
  --r-xl:26px;
  --shadow:0 20px 55px -22px rgba(13,22,45,.35);
  --shadow-sm:0 10px 26px -14px rgba(13,22,45,.22);
  --shadow-card:0 30px 70px -30px rgba(13,22,45,.45);
}

html{scroll-behavior:smooth;scroll-padding-top:92px;overflow-x:clip;}
body{font-family:var(--body);background:var(--bg);color:var(--ink);line-height:1.62;overflow-x:clip;-webkit-font-smoothing:antialiased;}
body.menu-open{overflow:hidden;}
img{display:block;max-width:100%;height:auto;}
[hidden]{display:none!important;}
a{color:inherit;text-decoration:none;}
::selection{background:var(--accent);color:#fff;}
h1,h2,h3,h4{overflow-wrap:break-word;letter-spacing:-.02em;line-height:1.1;font-family:var(--disp);}

.wrap{width:100%;max-width:1160px;margin-inline:auto;padding-inline:var(--gut);}
.wrap-narrow{max-width:900px;}
.thin{font-weight:300;}
.accent{color:var(--accent);}
.section{padding-block:var(--pad);}
.section.bg-soft{background:var(--bg-soft);}
.section.bg-accent{background:var(--bg-accent);}

/* Chips / Eyebrow */
.eyebrow{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--disp);font-size:.78rem;font-weight:700;letter-spacing:.02em;color:var(--accent-d);background:var(--accent-l);padding:.42rem .85rem;border-radius:99px;margin-bottom:1.2rem;}
.eyebrow .dot{width:7px;height:7px;border-radius:50%;background:var(--accent);}

.s-head{max-width:44rem;margin-bottom:clamp(2rem,4vw,3rem);}
.s-head.center{margin-inline:auto;text-align:center;}
.s-head h2{font-size:clamp(1.8rem,4vw,2.7rem);font-weight:800;margin-bottom:.9rem;}
.s-head h2 .thin{font-weight:300;}
.s-head p{font-size:clamp(1rem,1.4vw,1.1rem);color:var(--ink-2);max-width:44ch;}
.s-head.center p{margin-inline:auto;}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.55rem;font-family:var(--disp);font-weight:700;border-radius:99px;cursor:pointer;border:1.5px solid transparent;transition:var(--t);white-space:nowrap;line-height:1;text-align:center;}
.btn-sm{padding:.6rem 1.1rem;font-size:.86rem;}
.btn-md{padding:.85rem 1.45rem;font-size:.95rem;}
.btn-lg{padding:1.05rem 1.8rem;font-size:1.02rem;}
.btn-accent{background:var(--accent);color:#fff;}
.btn-accent:hover{background:var(--accent-d);transform:translateY(-2px);box-shadow:0 14px 28px -10px rgba(13,48,115,.6);}
.btn-amber{background:var(--amber);color:#241a02;}
.btn-amber:hover{background:#cf8f06;transform:translateY(-2px);box-shadow:0 14px 28px -10px rgba(231,160,8,.5);}
.btn-ink{background:var(--ink);color:#fff;}
.btn-ink:hover{transform:translateY(-2px);box-shadow:var(--shadow);}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line);}
.btn-ghost:hover{border-color:var(--ink);background:var(--ink);color:#fff;}
.btn-white{background:#fff;color:var(--ink);border-color:var(--line);}
.btn-white:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm);}
.btn-block{display:flex;width:100%;}
.btn .ar{transition:transform var(--t);}
.btn:hover .ar{transform:translateX(4px);}
.btn-link{font-family:var(--disp);font-weight:700;color:var(--accent-d);display:inline-flex;align-items:center;gap:.4rem;font-size:.95rem;}
.btn-link .ar{transition:transform var(--t);}
.btn-link:hover .ar{transform:translateX(4px);}

/* ---------- Header ---------- */
/* Kopfzeile: ueber dem Hero unsichtbar, ab dem ersten Scrollen eine
   schwebende Rundleiste. Der Hintergrund sitzt an der INNEREN Leiste, nicht
   an #nav – sonst waere es wieder ein Band ueber die volle Breite. */
#nav{--nav-pad:clamp(.7rem,2.5vw,1.1rem);
  position:fixed;top:0;left:0;right:0;z-index:200;background:none;
  padding-top:0;transition:padding-top var(--t);}
.nav-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  /* Die Pille waechst per negativem Margin nach AUSSEN. So stehen Logo und
     Button weiter exakt auf der Inhaltskante, statt gegenueber dem Rest der
     Seite um das Innenabstandsmass einzuruecken. */
  margin-inline:calc(-1 * var(--nav-pad));
  padding:.72rem var(--nav-pad);
  border:1px solid transparent;border-radius:99px;
  transition:background var(--t),border-color var(--t),box-shadow var(--t);}
#nav.scrolled{padding-top:10px;}
/* Bei offenem Menue derselbe Zustand – sonst stuende die Leiste konturlos
   auf der Menueflaeche, und zwar genau dann, wenn man sie zum Schliessen
   braucht. */
#nav.scrolled .nav-bar,body.menu-open .nav-bar{
  background:rgba(255,255,255,.94);border-color:var(--line);
  box-shadow:0 14px 38px -14px rgba(13,22,45,.28);}
@supports (backdrop-filter:blur(12px)){
  #nav.scrolled .nav-bar,body.menu-open .nav-bar{
    background:rgba(255,255,255,.8);backdrop-filter:saturate(140%) blur(12px);}
}
.logo{font-family:var(--disp);font-weight:800;font-size:1.22rem;letter-spacing:-.03em;display:flex;align-items:center;gap:.55rem;color:var(--ink);}
.logo-mark{width:36px;height:36px;border-radius:11px;background:var(--accent);display:grid;place-items:center;box-shadow:0 6px 16px -5px rgba(13,48,115,.65);flex-shrink:0;}
.logo-mark svg{width:21px;height:21px;}
.logo b{font-weight:800;}
/* Bildlogo (Wortmarke „BU-Rechte.de") statt der gesetzten Schrift */
.logo-img{gap:0;}
/* Kopfzeile traegt bur-logo-kopf.png (neues Logo vom 25.09.2026, ohne Claim) –
   im Footer steht noch die alte volle Marke mit Claim. */
.logo-img img{display:block;height:46px;width:auto;}
nav.menu{display:flex;gap:.1rem;align-items:center;}
.nav-link{font-family:var(--body);font-size:.92rem;font-weight:500;color:var(--ink-2);padding:.5rem .8rem;border-radius:99px;transition:var(--t);background:none;border:none;cursor:pointer;}
.nav-link:hover,.nav-link.active{color:var(--ink);background:var(--bg-soft);}
.nav-r{display:flex;align-items:center;gap:1rem;}
.nav-tel{font-family:var(--disp);font-size:.92rem;font-weight:700;color:var(--ink);display:inline-flex;align-items:center;gap:.45rem;transition:var(--t);}
.nav-tel svg{width:16px;height:16px;color:var(--accent);}
.nav-tel:hover{color:var(--accent);}
.burger{display:none;width:46px;height:46px;border:1.5px solid var(--line);border-radius:12px;background:#fff;cursor:pointer;flex-direction:column;align-items:center;justify-content:center;gap:5px;}
.burger span{width:18px;height:2px;background:var(--ink);border-radius:2px;transition:var(--t);}
body.menu-open .burger span:nth-child(1){transform:translateY(7px) rotate(45deg);}
body.menu-open .burger span:nth-child(2){opacity:0;}
body.menu-open .burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}
@media(max-width:900px){
  nav.menu,.nav-r .nav-hide{display:none;}
  .burger{display:flex;}
  /* Etwas mehr Luft zwischen Logo/Burger und der Kante der Leiste. Weil die
     Leiste per negativem Margin nach aussen waechst, ruecken Logo und Burger
     dabei NICHT ein – die Pille wird nur breiter. */
  #nav{--nav-pad:calc(clamp(.7rem,2.5vw,1.1rem) + 4px);}
  /* Sobald gescrollt wird, faellt die Leiste etwas flacher aus. */
  .logo-img img,.burger{transition:width var(--t),height var(--t);}
  #nav.scrolled .logo-img img{height:32px;}
  #nav.scrolled .burger{width:40px;height:40px;}
}

#mob{position:fixed;inset:0;z-index:199;background:var(--bg);padding:5.5rem var(--gut) 2.5rem;display:flex;flex-direction:column;transform:translateX(100%);transition:transform var(--t);overscroll-behavior:contain;overflow-y:auto;}
body.menu-open #mob{transform:none;}
#mob a.ml{font-family:var(--disp);font-weight:700;font-size:1.5rem;padding:.85rem 0;border-bottom:1px solid var(--line);letter-spacing:-.02em;color:var(--ink);}
#mob .mob-cap{display:block;font-family:var(--disp);font-weight:700;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin:1.2rem 0 .2rem;}
#mob a.ml.sub{font-size:1.08rem;font-weight:500;padding:.5rem 0;color:var(--ink-2);letter-spacing:0;}
#mob .mob-cta{margin-top:auto;display:flex;flex-direction:column;gap:.7rem;padding-top:2rem;}

/* ============================================================
   HERO – Konversions-Split (Text + Erstcheck-Karte)
   ============================================================ */
.hero{position:relative;padding-top:clamp(6.5rem,12vh,8.5rem);padding-bottom:clamp(2.5rem,5vw,4rem);background:
  radial-gradient(60rem 40rem at 85% -10%,var(--accent-l),transparent 60%),
  radial-gradient(50rem 40rem at -10% 10%,#EDF1F9,transparent 55%),
  var(--bg-soft);overflow:hidden;}
.hero-grid{display:grid;grid-template-columns:1.02fr .98fr;gap:clamp(2rem,4vw,3.5rem);align-items:center;}
.hero-copy{max-width:34rem;}
.hero h1{font-size:clamp(2.1rem,4.8vw,3.5rem);font-weight:800;line-height:1.05;margin-bottom:1.2rem;text-wrap:balance;}
.hero h1 .hl{color:var(--accent);}
.hero-lead{font-size:clamp(1.02rem,1.5vw,1.18rem);color:var(--ink-2);margin-bottom:1.6rem;max-width:40ch;}
.hero-lead b{color:var(--ink);font-weight:600;}
.hero-bullets{display:grid;gap:.7rem;margin-bottom:1.8rem;}
.hero-bullets li{display:flex;align-items:flex-start;gap:.65rem;font-size:1rem;color:var(--ink);font-weight:500;list-style:none;}
.hero-bullets .ck{width:22px;height:22px;border-radius:50%;background:var(--accent-l);color:var(--accent-d);display:grid;place-items:center;flex-shrink:0;margin-top:.05rem;}
.hero-bullets .ck svg{width:13px;height:13px;}
.hero-callrow{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem 1.1rem;}
.hero-tel{font-family:var(--disp);font-weight:700;font-size:1.08rem;color:var(--ink);display:inline-flex;align-items:center;gap:.55rem;}
.hero-tel svg{width:19px;height:19px;color:var(--accent);}
.hero-tel:hover{color:var(--accent);}
.hero-tel small{display:block;font-family:var(--body);font-weight:400;font-size:.78rem;color:var(--ink-3);letter-spacing:0;}

/* Vertrauens-Leiste unter dem Hero */
.trustbar{margin-top:clamp(2rem,4vw,3.2rem);border-top:1px solid var(--line);padding-top:1.4rem;display:flex;flex-wrap:wrap;gap:.7rem 2rem;justify-content:center;}
.trustbar span{display:inline-flex;align-items:center;gap:.5rem;font-size:.9rem;font-weight:600;color:var(--ink-2);}
.trustbar .ti{color:var(--accent);display:inline-flex;}
.trustbar .ti svg{width:18px;height:18px;}

/* ============================================================
   ERSTCHECK-WIZARD (Hero-Karte)
   ============================================================ */
.check{background:#fff;border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow-card);overflow:hidden;position:relative;}
.check-head{background:var(--accent-deep);color:#fff;padding:1.3rem clamp(1.3rem,3vw,1.8rem);}
.check-head .ch-top{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.9rem;}
.check-head .ch-t{font-family:var(--disp);font-weight:700;font-size:1.12rem;display:flex;align-items:center;gap:.55rem;}
.check-head .ch-t svg{width:20px;height:20px;color:#8FB3EE;}
.check-head .ch-count{font-size:.82rem;color:rgba(255,255,255,.72);font-weight:600;white-space:nowrap;}
.wz-progress{height:6px;border-radius:99px;background:rgba(255,255,255,.18);overflow:hidden;}
.wz-progress i{display:block;height:100%;width:25%;background:var(--amber);border-radius:99px;transition:width .4s var(--t);}
.check-body{padding:clamp(1.3rem,3vw,1.9rem);}

.wz-step{display:none;animation:wzIn .4s var(--t);}
.wz-step.active{display:block;}
@keyframes wzIn{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
.wz-q{font-family:var(--disp);font-weight:700;font-size:1.18rem;color:var(--ink);margin-bottom:.35rem;}
.wz-sub{font-size:.9rem;color:var(--ink-2);margin-bottom:1.2rem;}

/* Option-Buttons (Radios, tap-optimiert) */
.wz-opts{display:grid;gap:.6rem;}
.wz-opt{position:relative;display:flex;align-items:center;gap:.85rem;padding:.95rem 1.05rem;border:1.5px solid var(--line);border-radius:14px;cursor:pointer;transition:var(--t);background:var(--bg-soft);}
.wz-opt:hover{border-color:var(--accent);background:var(--accent-l);}
.wz-opt input{position:absolute;opacity:0;width:0;height:0;}
.wz-opt .wo-tick{width:24px;height:24px;border-radius:50%;border:2px solid var(--ink-3);flex-shrink:0;display:grid;place-items:center;transition:var(--t);}
.wz-opt .wo-tick svg{width:13px;height:13px;color:#fff;opacity:0;transition:var(--t);}
.wz-opt .wo-t{font-family:var(--disp);font-weight:600;font-size:.98rem;color:var(--ink);line-height:1.25;}
.wz-opt:has(input:checked){border-color:var(--accent);background:var(--accent-l);box-shadow:0 0 0 3px var(--accent-l);}
.wz-opt:has(input:checked) .wo-tick{background:var(--accent);border-color:var(--accent);}
.wz-opt:has(input:checked) .wo-tick svg{opacity:1;}
.wz-opt input:focus-visible ~ .wo-tick{box-shadow:0 0 0 3px var(--accent-l);}

/* Kontakt-Schritt (Felder) */
.wz-fields{display:grid;gap:.85rem;}
.field label{display:block;font-family:var(--disp);font-size:.84rem;font-weight:600;color:var(--ink);margin-bottom:.35rem;}
.field label .opt{color:var(--ink-3);font-weight:400;}
.field input,.field textarea{width:100%;font-family:var(--body);font-size:16px;color:var(--ink);background:var(--bg-soft);border:1.5px solid var(--line);border-radius:12px;padding:.8rem .95rem;transition:var(--t);}
.field textarea{resize:vertical;min-height:90px;line-height:1.5;}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--accent);background:#fff;box-shadow:0 0 0 3px var(--accent-l);}
.field input::placeholder,.field textarea::placeholder{color:var(--ink-3);}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}

.wz-nav{display:flex;align-items:center;gap:.8rem;margin-top:1.4rem;}
.wz-back{background:none;border:none;cursor:pointer;font-family:var(--disp);font-weight:600;font-size:.9rem;color:var(--ink-2);display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .2rem;transition:var(--t);}
.wz-back:hover{color:var(--ink);}
.wz-back svg{width:15px;height:15px;}
.wz-nav .btn{margin-left:auto;}
.wz-hint{margin-top:1rem;font-size:.78rem;color:var(--ink-3);line-height:1.5;text-align:center;}
.wz-hint a{color:var(--accent-d);text-decoration:underline;text-underline-offset:2px;}
.wz-hint svg{width:13px;height:13px;vertical-align:-2px;margin-right:.2rem;}

.check-done{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.7rem;padding:2.6rem 1.5rem;}
.check-done .cd-ic{width:64px;height:64px;border-radius:50%;background:var(--accent-l);color:var(--accent);display:grid;place-items:center;}
.check-done .cd-ic svg{width:34px;height:34px;}
.check-done h3{font-family:var(--disp);font-size:1.35rem;font-weight:800;}
.check-done p{color:var(--ink-2);max-width:34ch;}

/* ============================================================
   RECHTSGEBIETE – nummerierter Index (leichter als Kacheln)
   ============================================================ */
.rg-list{display:grid;gap:0;border-top:1px solid var(--line);}
.rg-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:clamp(1rem,3vw,2.5rem);padding:clamp(1.4rem,2.6vw,2rem) .25rem;border-bottom:1px solid var(--line);transition:var(--t);}
.rg-row:hover{background:var(--bg-soft);}
.rg-num{font-family:var(--disp);font-weight:800;font-size:clamp(1.4rem,2.5vw,1.9rem);color:var(--accent);opacity:.55;min-width:2.4rem;}
.rg-main{display:flex;align-items:flex-start;gap:1.1rem;}
.rg-ic{width:46px;height:46px;border-radius:12px;background:var(--accent-l);color:var(--accent-d);display:grid;place-items:center;flex-shrink:0;margin-top:.1rem;}
.rg-ic svg{width:24px;height:24px;}
.rg-txt h3{font-family:var(--disp);font-size:1.16rem;font-weight:700;margin-bottom:.25rem;}
.rg-txt p{font-size:.95rem;color:var(--ink-2);max-width:52ch;}
.rg-go{flex-shrink:0;}
.rg-go .btn-link .ar{transition:transform var(--t);}
.rg-row:hover .rg-go .btn-link .ar{transform:translateX(4px);}

/* ============================================================
   ABLAUF – 4 Schritte, leichte Karten
   ============================================================ */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(.9rem,2vw,1.3rem);counter-reset:step;}
.step{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(1.3rem,2.4vw,1.7rem);position:relative;transition:var(--t);}
.step:hover{transform:translateY(-3px);box-shadow:var(--shadow-sm);}
.step .st-n{counter-increment:step;font-family:var(--disp);font-weight:800;font-size:.82rem;color:var(--accent);letter-spacing:.05em;margin-bottom:.9rem;display:flex;align-items:center;gap:.5rem;}
.step .st-n::before{content:counter(step,decimal-leading-zero);}
.step .st-n i{flex:1;height:1px;background:var(--line);}
.step .st-ic{color:var(--accent-d);margin-bottom:.7rem;}
.step .st-ic svg{width:26px;height:26px;}
.step h3{font-family:var(--disp);font-size:1.06rem;font-weight:700;margin-bottom:.4rem;}
.step p{font-size:.92rem;color:var(--ink-2);}
.step-note{margin-top:1.8rem;display:flex;flex-wrap:wrap;align-items:center;gap:.7rem 1.2rem;background:var(--accent-l);border-radius:var(--r-lg);padding:1.2rem 1.5rem;font-size:.96rem;color:var(--accent-d);font-weight:500;}
.step-note svg{width:22px;height:22px;flex-shrink:0;color:var(--accent);}

/* ============================================================
   WARUM WIR – Bild + Punkte (Foto als Support, nicht Hero)
   ============================================================ */
.why{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4rem);align-items:center;}
.why-photo{position:relative;border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--shadow);aspect-ratio:4/3;}
.why-photo img{width:100%;height:100%;object-fit:cover;}
.why-photo .wp-badge{position:absolute;left:1.1rem;bottom:1.1rem;right:1.1rem;background:rgba(255,255,255,.94);backdrop-filter:blur(6px);border-radius:14px;padding:.9rem 1.1rem;display:flex;align-items:center;gap:.8rem;box-shadow:var(--shadow-sm);}
.why-photo .wp-badge .wpb-ic{width:40px;height:40px;border-radius:11px;background:var(--accent);color:#fff;display:grid;place-items:center;flex-shrink:0;}
.why-photo .wp-badge .wpb-ic svg{width:22px;height:22px;}
.why-photo .wp-badge .wpb-t{font-family:var(--disp);font-weight:700;font-size:.98rem;color:var(--ink);line-height:1.2;}
.why-photo .wp-badge .wpb-d{font-size:.82rem;color:var(--ink-2);}
.why-list{display:grid;gap:1.3rem;}
.why-item{display:flex;gap:1rem;align-items:flex-start;}
.why-item .w-ic{width:46px;height:46px;border-radius:12px;background:var(--accent-l);color:var(--accent-d);display:grid;place-items:center;flex-shrink:0;}
.why-item .w-ic svg{width:23px;height:23px;}
.why-item h3{font-family:var(--disp);font-size:1.05rem;font-weight:700;margin-bottom:.25rem;}
.why-item p{font-size:.94rem;color:var(--ink-2);}

/* ============================================================
   ÜBERZEUGUNGS-BAND (dunkelblau)
   ============================================================ */
.conviction{background:var(--accent-deep);color:#fff;}
.conviction .wrap{max-width:52rem;text-align:center;}
.conviction .qmark{font-family:var(--disp);font-size:3.4rem;line-height:.6;color:#8FB3EE;display:block;margin-bottom:.3rem;}
.conviction blockquote{font-family:var(--disp);font-weight:300;font-size:clamp(1.35rem,3vw,2rem);line-height:1.35;letter-spacing:-.01em;text-wrap:balance;}
.conviction blockquote b{font-weight:700;}
.conviction .sig{margin-top:1.6rem;font-size:.92rem;color:rgba(255,255,255,.72);}
.conviction .sig b{display:block;font-family:var(--disp);font-weight:700;color:#fff;font-size:1rem;margin-bottom:.1rem;}

/* ============================================================
   FAQ
   ============================================================ */
.faq{max-width:48rem;margin-inline:auto;}
.fitem{border-bottom:1px solid var(--line);}
.fq{width:100%;background:none;border:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:1.25rem 0;text-align:left;font-family:var(--disp);font-weight:700;font-size:1.04rem;color:var(--ink);}
.fq .fic{width:24px;height:24px;flex-shrink:0;position:relative;}
.fq .fic::before,.fq .fic::after{content:'';position:absolute;top:50%;left:50%;width:12px;height:2px;background:var(--accent);border-radius:2px;transform:translate(-50%,-50%);transition:var(--t);}
.fq .fic::after{transform:translate(-50%,-50%) rotate(90deg);}
.fitem.open .fq .fic::after{transform:translate(-50%,-50%) rotate(0);}
.fa{max-height:0;overflow:hidden;transition:max-height .35s var(--t);}
.fa p{padding:0 0 1.25rem;color:var(--ink-2);font-size:.96rem;max-width:62ch;}

/* ============================================================
   FINALE CTA
   ============================================================ */
.cta-final{text-align:center;}
.cta-final h2{font-size:clamp(1.9rem,4vw,2.8rem);font-weight:800;margin-bottom:1rem;}
.cta-final h2 .thin{font-weight:300;}
.cta-final p{color:var(--ink-2);font-size:1.08rem;max-width:44ch;margin:0 auto 2rem;}
.cta-actions{display:flex;flex-wrap:wrap;gap:.8rem;justify-content:center;align-items:center;}
.cta-actions .hero-tel{font-size:1.15rem;}

/* ============================================================
   FOOTER
   ============================================================ */
.footer{background:var(--ink);color:rgba(255,255,255,.72);padding-block:clamp(3rem,6vw,4.5rem) 2rem;}
.footer .f-cols{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:2.5rem;}
.footer .f-brand .logo{color:#fff;margin-bottom:1rem;}
/* .footer a{display:block} (unten) überschreibt sonst .logo{display:flex} –
   Logo-Icon und Schriftzug stünden dann untereinander statt nebeneinander. */
.footer .logo{display:inline-flex;}
.footer .f-brand p{font-size:.92rem;max-width:34ch;line-height:1.6;}
.footer h4{font-family:var(--disp);font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.55);margin-bottom:1rem;}
.footer a{display:block;font-size:.93rem;color:rgba(255,255,255,.72);padding:.3rem 0;transition:var(--t);}
.footer a:hover{color:#fff;}
.footer .f-contact span{display:block;font-size:.93rem;padding:.3rem 0;}
.footer-bottom{border-top:1px solid rgba(255,255,255,.12);margin-top:2.6rem;padding-top:1.5rem;display:flex;flex-wrap:wrap;gap:.6rem 1.4rem;justify-content:space-between;font-size:.85rem;color:rgba(255,255,255,.5);}
.footer-bottom a{display:inline;color:rgba(255,255,255,.6);}
.footer-todo{font-size:.79rem;color:rgba(255,255,255,.4);margin-top:.6rem;}

/* ---------- FAB ---------- */
#fab{position:fixed;right:clamp(1rem,3vw,1.6rem);bottom:clamp(1rem,3vw,1.6rem);z-index:180;}
#fabBtn{display:flex;align-items:center;gap:.55rem;background:var(--accent);color:#fff;border:none;cursor:pointer;font-family:var(--disp);font-weight:700;font-size:.93rem;padding:.8rem 1.25rem;border-radius:99px;box-shadow:0 12px 30px -8px rgba(13,48,115,.6);transition:var(--t);}
#fabBtn:hover{background:var(--accent-d);transform:translateY(-2px);}
#fabBtn svg{width:19px;height:19px;}
.fab-panel{position:absolute;right:0;bottom:calc(100% + .8rem);width:min(84vw,280px);background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:1.25rem;opacity:0;visibility:hidden;transform:translateY(10px);transition:var(--t);}
#fab.open .fab-panel{opacity:1;visibility:visible;transform:none;}
.fab-panel .fp-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.3rem;}
.fab-panel h4{font-family:var(--disp);font-size:1.02rem;font-weight:700;color:var(--ink);}
.fab-panel p{font-size:.85rem;color:var(--ink-2);margin-bottom:1rem;}
.fab-panel .fp-close{background:none;border:none;cursor:pointer;color:var(--ink-3);font-size:1.4rem;line-height:1;padding:0 .2rem;}
.fab-panel .btn{width:100%;margin-bottom:.5rem;}

/* ---------- Mobile Sticky-Leiste (Startseite, nur ≤760px) ----------
   Vorbild webabo.de. Eingeblendet per .show aus app.js. */
.mobile-bar{display:none;}
@media (max-width:760px){
  .mobile-bar{
    display:flex;align-items:center;justify-content:space-between;gap:.8rem;
    position:fixed;left:0;right:0;bottom:0;z-index:150;
    padding:.7rem var(--gut);
    padding-bottom:calc(.9rem + env(safe-area-inset-bottom));
    background:var(--white);border-top:1px solid var(--line);
    /* zweiter Schatten (weiß, nach unten) schließt den 1–2px-Spalt am Viewport-Rand */
    box-shadow:0 -10px 28px -14px rgba(13,22,45,.3),0 8px 0 8px var(--white);
    transform:translateY(115%);transition:transform var(--t);
  }
  .mobile-bar.show{transform:translateY(0);}
  /* Offenes Menü liegt darüber – die Leiste darf dort nicht durchscheinen. */
  body.menu-open .mobile-bar{transform:translateY(115%);}
  .mb-proof{display:flex;flex-direction:column;gap:.3rem;min-width:0;}
  .mb-proof-img{height:24px;width:auto;align-self:flex-start;}
  .mb-proof-t{font-family:var(--disp);font-weight:700;font-size:.74rem;line-height:1.25;color:var(--ink-2);}
  .mb-cta{flex:0 0 auto;}
}

/* ---------- Toast ---------- */
#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(20px);background:var(--ink);color:#fff;padding:14px 20px;border-radius:12px;font-size:.92rem;box-shadow:var(--shadow);opacity:0;transition:opacity .3s,transform .3s;z-index:9999;max-width:90vw;pointer-events:none;}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0);}

/* ---------- Reveal ---------- */
.rv{opacity:0;transform:translateY(20px);transition:opacity .7s var(--t),transform .7s var(--t);}
.rv.in{opacity:1;transform:none;}
.rv.d1{transition-delay:.08s;}.rv.d2{transition-delay:.16s;}.rv.d3{transition-delay:.24s;}
@media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none;}html{scroll-behavior:auto;}.wz-step{animation:none;}}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media(max-width:920px){
  .hero-grid{grid-template-columns:1fr;gap:2.2rem;}
  .hero-copy{max-width:38rem;}
  .check{max-width:34rem;}
  .steps{grid-template-columns:1fr 1fr;}
  .why{grid-template-columns:1fr;}
  .why-photo{order:-1;}
  .footer .f-cols{grid-template-columns:1fr 1fr;}
  .footer .f-brand{grid-column:span 2;}
}
@media(max-width:560px){
  /* Ansprechpartner-Karte auf schmalen Screens kompakter. */
  .exp-badge{gap:.7rem;padding:.45rem 1.1rem .45rem .45rem;}
  .exp-badge>img{width:52px;height:52px;flex-basis:52px;}
  .exp-badge b{font-size:.93rem;}
  .exp-badge span{font-size:.78rem;}

  .steps{grid-template-columns:1fr;}
  .rg-row{grid-template-columns:auto 1fr;gap:.9rem 1rem;}
  .rg-go{grid-column:1 / -1;padding-left:calc(2.4rem + 1rem);}
  .footer .f-cols{grid-template-columns:1fr;}
  .footer .f-brand{grid-column:span 1;}
  .cta-actions{flex-direction:column;}
  .cta-actions .btn{width:100%;}
}

/* ============================================================
   ============================================================
   LANDINGPAGE (body.lp) – eigenständiger Funnel, z. B.
   kaufrecht-traktor.html. Nutzt dieselben Tokens/Bausteine wie
   die Hub-Seite; nur die LP-eigenen Muster stehen hier.
   ============================================================
   ============================================================ */

/* Schrift der LP: durchgängig Outfit (wie autokauf-rechte.de) – Display UND Body.
   Bewusst auf .lp begrenzt: die Hub-Startseite bleibt auf Manrope/Inter, bis
   der Umstieg dort abgestimmt ist. */
body.lp{--disp:'Outfit',system-ui,-apple-system,sans-serif;--body:'Outfit',system-ui,-apple-system,sans-serif;
  --cta-overlap:clamp(3rem,8vw,7rem);}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}
/* Nur auf dem Handy ausblenden (z. B. „Spezialisierte" im Hero-Eyebrow,
   damit die Zeile nicht umbricht) */
@media(max-width:560px){.hide-mob{display:none;}}

/* Mittige CTA zwischen den Abschnitten (Referenz wiederholt den CTA) */
.mid-cta{display:flex;justify-content:center;margin-top:clamp(2rem,4vw,3rem);}

/* Überschriften der LP dürfen die Zeile ausbalancieren; der Vergleichs-Titel
   braucht zusätzlich Platz, sonst bricht „Agrar-Rechte" am Bindestrich um. */
.lp .s-head h2{text-wrap:balance;}
/* Fließtext der Sektionsköpfe: verhindert einzelne Wörter in der letzten
   Zeile (z. B. „es." allein unter einem zentrierten Absatz). */
.lp .s-head p{text-wrap:pretty;}
#vergleich .s-head{max-width:52rem;}

/* ---------- LP-Hero ---------- */
/* Struktur wie Referenz: leicht bläulicher BG · oben Bild + Copy ·
   darunter weiße Kachel (CTA + Social-Proof + „bekannt aus").
   Anders als die Referenz: unser Visual ist ein VOLLBILD-Foto, kein
   Freisteller – es taucht deshalb nicht in die Kachel ein, sondern steht
   mittig zur Copy. */
/* Vollbild-Hero: das Blau reicht bis zur Unterkante des ersten Screens.
   - `min-height`, NICHT `height`: der Inhalt (Bild + Copy + weiße Kachel) ist
     ~850px hoch und liefe bei fester Höhe aus der Sektion. So füllt er hohe
     Screens und wächst auf niedrigen mit, statt zu überlaufen.
   - `svh` statt `vh`: sonst springt die Höhe auf iOS, wenn die Adressleiste
     ein-/ausblendet.
   - Die Kopfzeile wird NICHT abgezogen: sie ist `position:fixed` und oben
     transparent, liegt also ÜBER dem Hero – der beginnt bereits bei y=0 und
     hält den Inhalt nur per padding-top frei. Ein Abzug von --nav-h würde das
     Blau 73px VOR der Unterkante enden lassen (= der weiße Streifen).
   - Flex + justify-content:center verteilt die Restfläche auf hohen Screens
     gleichmäßig über und unter den Inhalt, statt sie unten anzuhängen. */
.lp-hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:center;
  padding-top:clamp(6.5rem,12vh,8.5rem);padding-bottom:var(--pad);background:
  radial-gradient(65rem 45rem at 100% -5%,var(--accent-l),transparent 60%),
  radial-gradient(55rem 45rem at -12% 4%,#E8EEF8,transparent 55%),
  var(--bg-accent);overflow:hidden;}
.lp-hero>.wrap{width:100%;}
.lph-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(2rem,4vw,3.5rem);align-items:center;}
/* Grid-Kinder dürfen unter ihre min-content-Breite schrumpfen, sonst zwingt
   ein langes Kompositum die Spalte breit + Sektion ragt über den Rand. */
.lph-grid>*,.ec-grid>*,.kanzlei>*,.rechte-grid>*,.szen>*{min-width:0;}
/* Freigestelltes PNG: kein Rahmen, keine Rundung, kein overflow:hidden – das
   Motiv steht frei auf dem Hero-Verlauf. Der Schatten kommt per drop-shadow,
   weil der dem Alphakanal folgt und nicht dem (unsichtbaren) Bildrechteck. */
.lph-visual{position:relative;}
/* Kind-Kombinator: die Ansprechpartner-Karte darunter hat ein eigenes <img>,
   das NICHT formatfuellend werden darf. */
.lph-visual>img{display:block;width:100%;height:auto;
  filter:drop-shadow(0 26px 30px rgba(13,22,45,.20));}

/* Ansprechpartner-Karte auf dem Hero-Bild: Gesicht + Fachanwaltstitel stehen
   damit im sofort sichtbaren Bereich, ohne die Hero-Spalten zu verschieben. */
/* Ansprechpartner-Kachel – liegt unten links AUF dem Bild. Wird zweimal
   genutzt: Hero-Motiv und Kanzlei-Foto im Abschnitt „Über uns".
   Hell gehalten (Kundenwunsch); weil sie teils auf weissem Papier sitzt,
   trennen Haarlinie + Schlagschatten sie vom Untergrund. Der Schatten darf
   hier stehen: .lph-visual clippt nichts mehr (kein overflow:hidden). */
.exp-badge{position:absolute;left:0;bottom:clamp(0rem,2%,1rem);
  display:inline-flex;align-items:center;gap:.9rem;
  max-width:100%;text-align:left;
  background:#fff;border:1px solid var(--line);border-radius:99px;
  padding:.5rem 1.5rem .5rem .5rem;
  box-shadow:0 20px 40px -18px rgba(13,22,45,.45);}
.exp-badge>img{width:60px;height:60px;flex:0 0 60px;border-radius:50%;object-fit:cover;aspect-ratio:1;}
.exp-badge figcaption{display:flex;flex-direction:column;line-height:1.3;min-width:0;}
.exp-badge b{font-family:var(--disp);font-weight:700;font-size:1rem;color:var(--ink);}
.exp-badge span{font-size:.85rem;font-weight:600;color:var(--accent-d);}
.lph-copy{max-width:38rem;}
/* Eyebrow im Hero: --accent-l (#E7ECF6) liegt zu nah am Hero-BG (#E9EEF7) und
   wäre praktisch unsichtbar -> hier weiß absetzen. Nur im Hero, damit die
   Eyebrows auf weißen Sektionen ihren blauen Tint behalten. */
.lp-hero .eyebrow{background:#fff;box-shadow:0 2px 10px -4px rgba(13,22,45,.18);}
.lp-hero h1{font-size:clamp(1.95rem,3.9vw,3.05rem);font-weight:800;line-height:1.08;margin-bottom:1.05rem;text-wrap:balance;}
.lph-lead{font-size:clamp(1rem,1.35vw,1.1rem);color:var(--ink-2);margin-bottom:1.5rem;max-width:44ch;}
.lph-bullets{display:grid;gap:.7rem;}
.lph-bullets li{display:flex;align-items:flex-start;gap:.65rem;font-size:1rem;color:var(--ink);font-weight:500;list-style:none;}
.lph-bullets .ck{width:22px;height:22px;border-radius:50%;background:var(--accent-l);color:var(--accent-d);display:grid;place-items:center;flex-shrink:0;margin-top:.05rem;}
.lph-bullets .ck svg{width:12px;height:12px;}

/* Weiße Kachel unter dem Hero */
.lph-card{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow-card);margin-top:clamp(1.8rem,4vw,3rem);padding:clamp(1.4rem,2.6vw,1.9rem) clamp(1.5rem,3vw,2.6rem) 0;}
.lph-card-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:1rem 1.8rem;}

/* Social Proof (Avatar-Bild + Zahl) */
.proof{display:flex;align-items:center;gap:.85rem;flex-wrap:wrap;}
.proof-img{height:42px;width:auto;flex-shrink:0;}
.proof-t{font-family:var(--disp);font-weight:700;font-size:.95rem;color:var(--ink-2);}

/* „Wir sind bekannt aus"-Leiste – echte Logos, optisch auf gleiche Höhe
   getrimmt (reine Wortmarken niedriger als Logos mit Bildmarke/Kasten). */
.press{margin-top:clamp(1.2rem,2.6vw,1.7rem);border-top:1px solid var(--line);padding:1.15rem 0 1.35rem;display:flex;flex-wrap:wrap;align-items:center;gap:.8rem clamp(1rem,2.5vw,2rem);}
.press-label{font-family:var(--disp);font-style:italic;font-weight:500;font-size:.9rem;color:var(--ink-3);flex-shrink:0;}
.press-viewport{flex:1;min-width:0;}
.press-track{display:flex;}
.press-logos{list-style:none;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.8rem clamp(.9rem,2vw,1.8rem);flex:1;min-width:0;}
/* Doppelte Klasse: muss .press-logos{display:flex} schlagen (gleiche
   Spezifität würde sonst nach Reihenfolge entscheiden). */
.press-logos.press-dup{display:none;}   /* Desktop: zweite Kopie unnötig */
.press-logos li{display:flex;align-items:center;}
.press-logos img{width:auto;object-fit:contain;display:block;}
.press-logos .pl-tagesschau{height:21px;}
.press-logos .pl-ndr{height:26px;}
.press-logos .pl-faz{height:16px;}
.press-logos .pl-spiegel{height:14px;}
.press-logos .pl-mdr{height:19px;}
.press-logos .pl-handelsblatt{height:15px;}
.press-logos .pl-sz{height:14px;}

/* ---------- Ihre Rechte – 4 Karten ---------- */
.rechte-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(1rem,2.2vw,1.5rem);}
.rk{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(1.4rem,2.6vw,2rem);transition:var(--t);}
.rk:hover{transform:translateY(-3px);box-shadow:var(--shadow-sm);}
.rk-ic{width:52px;height:52px;border-radius:14px;background:var(--accent-l);color:var(--accent-d);display:grid;place-items:center;margin-bottom:1rem;}
/* Quellenangabe unter einer Rechte-Karte – bewusst leise, aber lesbar:
   Zahlen ohne Quelle sind auf einer Kanzleiseite ein Wettbewerbsrisiko. */
.rk-src{margin-top:.9rem;padding-top:.7rem;border-top:1px solid var(--line);font-size:.78rem;line-height:1.5;color:var(--ink-3);}
.rk-ic svg{width:26px;height:26px;}
.rk h3{font-family:var(--disp);font-size:1.2rem;font-weight:700;margin-bottom:.55rem;}
.rk p{font-size:.95rem;color:var(--ink-2);}
.rk p b{color:var(--ink);font-weight:600;}

/* ---------- Typische Ablehnungen (LP Traktorbrand) ----------
   Zweigeteilte Karte: oben im Ton des Ablehnungsschreibens (roter Marker,
   kursives Zitat), unten unser Klartext. Bewusst anders geschnitten als die
   .rk-Karten, damit die beiden Abschnitte nicht gleich aussehen. */
/* ---------- Aufklapper „Mehr dazu" ----------------------------------------
   Verdichtet textlastige Karten: sichtbar bleibt der Kern, die Begründung
   klappt auf. Native <details> – kein JS, funktioniert auch ohne Skript und
   der Text bleibt für Suche/KI im Dokument. */
.more{margin-top:.75rem;}
.more>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:.45rem;
  font-family:var(--disp);font-weight:700;font-size:.88rem;color:var(--accent-d);
  padding:.15rem 0;transition:var(--t);}
.more>summary::-webkit-details-marker{display:none;}
.more>summary:hover{color:var(--accent);}
.more>summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px;}
/* Chevron: eigenes Kästchen, damit die Drehung um die MITTE läuft und der
   Pfeil beim Aufklappen nicht verspringt. */
.more>summary::after{content:'';width:9px;height:9px;border-right:2px solid currentColor;
  border-bottom:2px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform var(--t);}
.more[open]>summary::after{transform:translateY(1px) rotate(-135deg);}
.more>*:not(summary){margin-top:.65rem;}

/* align-items:start ist hier Pflicht, nicht Geschmack: Grid-Zellen strecken
   sich sonst auf die hoechste Karte der Reihe. Klappt eine Karte auf, zieht
   sie die Nachbarin mit in die Laenge – dort steht dann nur Leerraum. */
.szen{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(1rem,2.2vw,1.5rem);align-items:start;}
.sz{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;transition:var(--t);}
.sz:hover{transform:translateY(-3px);box-shadow:var(--shadow-sm);}
/* Die Trennkante zwischen Zitat und Text lag frueher ueber ein subgrid
   (grid-row:span 2) auf gleicher Hoehe. Das ging nicht mehr, seit die Karten
   aufklappen: ein subgrid FUELLT seinen Bereich immer, also zog die
   aufgeklappte Karte die Nachbarin derselben Reihe mit in die Laenge –
   dort stand dann nur Leerraum, und align-items konnte nichts dagegen tun.
   Jetzt haelt eine Mindesthoehe am Zitat die Kanten zusammen: drei Zeilen
   passen in jedes der Zitate, damit stehen die Kaesten praktisch gleich hoch,
   ohne dass die Karten aneinander gekoppelt sind. */
.sz-q blockquote p{min-height:calc(3 * 1.06rem * 1.5);}
.sz-q{position:relative;background:var(--bg-soft);border-bottom:1px solid var(--line);padding:clamp(1.25rem,2.4vw,1.7rem);}
.sz-tag{display:inline-flex;align-items:center;gap:.45rem;font-family:var(--disp);font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--accent-d);margin-bottom:.55rem;}
.sz-tag svg{width:14px;height:14px;flex-shrink:0;}
/* Aufrecht statt kursiv und in derselben Groesse wie die Ueberschrift
   darunter – kursive Blocksaetze lesen sich ueber sechs Karten hinweg
   anstrengend. Unterschieden wird nur noch ueber das Schriftgewicht. */
.sz-q blockquote p{font-family:var(--disp);font-weight:500;font-size:1.06rem;line-height:1.5;color:var(--ink);}
/* Einordnung neben dem Zitat (z. B. der ursprüngliche Kaufpreis) – bewusst
   nicht kursiv, damit sie nicht als Teil des Briefes gelesen wird. */
.sz-note{margin-top:.6rem;font-size:.88rem;color:var(--ink-2);}
.sz-note b{color:var(--ink);font-weight:600;}
/* .sz-b ist ein <details>: sichtbar bleibt nur die Ueberschrift als <summary>,
   die Begruendung klappt auf. Ein Aufklapper braucht einen inhaltlichen
   Anfasser – deshalb steht die h3 IM summary und nicht ein blosses „Mehr". */
.sz-b{padding:clamp(1.25rem,2.4vw,1.7rem);}
.sz-b>summary{list-style:none;cursor:pointer;display:flex;align-items:flex-start;
  justify-content:space-between;gap:.9rem;}
.sz-b>summary::-webkit-details-marker{display:none;}
.sz-b>summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px;}
.sz-b>summary h3{font-family:var(--disp);font-size:1.06rem;font-weight:700;transition:var(--t);}
.sz-b>summary:hover h3{color:var(--accent-d);}
/* Chevron in eigenem Kaestchen, damit die Drehung um die Mitte laeuft. */
.sz-b>summary::after{content:'';flex:0 0 auto;width:9px;height:9px;margin-top:.35rem;
  border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);
  transform:translateY(-1px) rotate(45deg);transition:transform var(--t);}
.sz-b[open]>summary::after{transform:translateY(2px) rotate(-135deg);}
.sz-b p{font-size:.95rem;color:var(--ink-2);}
.sz-b>p{margin-top:.75rem;}
.sz-b p b{color:var(--ink);font-weight:600;}

/* Hinweis-Band § 377 HGB */
.hgb-note{margin-top:clamp(1.4rem,3vw,2rem);display:flex;gap:1.1rem;align-items:flex-start;background:var(--accent-l);border:1px solid #ccd8ee;border-radius:var(--r-lg);padding:clamp(1.2rem,2.4vw,1.7rem);}
.hgb-note .hn-ic{width:44px;height:44px;border-radius:12px;background:var(--accent);color:#fff;display:grid;place-items:center;flex-shrink:0;}
.hgb-note .hn-ic svg{width:24px;height:24px;}
.hgb-note h3{font-family:var(--disp);font-size:1.08rem;font-weight:700;margin-bottom:.35rem;color:var(--ink);}
.hgb-note p{font-size:.94rem;color:var(--ink-2);max-width:78ch;}
.hgb-note p b{color:var(--accent-deep);font-weight:700;}

/* ---------- Ablauf: Zickzack-Treppe (Referenz-Layout) ----------
   Geometrie aus der Referenz: die rechte Karte sitzt um --zig-off tiefer,
   das nächste Paar startet unter der vorherigen Karte. Verbindungslinien
   hängen an den Karten (::after), wandern also bei jedem Umbruch mit. */
.zsteps{
  --zig-off:clamp(3rem,10.5vw,9.5rem);/* Versatz der rechten Karte nach unten (~150px wie Referenz) */
  --zig-gap:clamp(2rem,6vw,5.8rem);   /* Spaltenabstand = Länge der Querlinie */
  --zig-row:.4rem;                    /* Abstand zum nächsten Kartenpaar */
  display:grid;grid-template-columns:1fr 1fr;
  column-gap:var(--zig-gap);row-gap:var(--zig-row);align-items:start;
}
.zstep{position:relative;background:#fff;border:1.5px solid var(--accent-l);border-radius:20px;padding:clamp(1.3rem,2.3vw,1.85rem);box-shadow:0 18px 40px -26px rgba(13,22,45,.32);transition:var(--t);}
.zstep:hover{box-shadow:0 24px 50px -26px rgba(13,22,45,.4);transform:translateY(-2px);}
.zstep:nth-child(even){margin-top:var(--zig-off);}

/* links → rechts: waagerechte Linie durch den Spaltenabstand */
.zstep:nth-child(odd)::after{content:'';position:absolute;left:100%;top:calc(var(--zig-off) + 3.5rem);width:var(--zig-gap);border-top:1.5px solid var(--accent);}
/* rechts → links: Bogen nach links, dann runter auf die nächste Karte */
.zstep:nth-child(even):not(:last-child)::after{content:'';position:absolute;right:100%;top:calc(100% - 3.9rem);height:calc(3.9rem + var(--zig-row));width:calc(var(--zig-gap) + 42%);border-top:1.5px solid var(--accent);border-left:1.5px solid var(--accent);border-top-left-radius:14px;}

.zs-top{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.05rem;}
.zs-n{font-family:var(--disp);font-weight:700;font-size:1.15rem;color:var(--accent);letter-spacing:-.01em;}
.zs-ic{color:var(--accent);opacity:.9;flex-shrink:0;}
.zs-ic svg{width:38px;height:38px;}
.zs-pill{display:inline-block;background:var(--accent);color:#fff;font-family:var(--disp);font-weight:700;font-size:.95rem;line-height:1.25;padding:.5rem 1.05rem;border-radius:99px;margin-bottom:1rem;}
.zstep p{font-size:.95rem;color:var(--ink-2);margin-bottom:1.15rem;}
.zs-time{display:flex;align-items:center;gap:.5rem;font-family:var(--disp);font-weight:700;font-size:.9rem;color:var(--ink);}
.zs-time svg{width:17px;height:17px;color:var(--accent);flex-shrink:0;}

/* Breiter Intro-Text (Referenz: eine durchlaufende Zeile statt schmaler Block) */
.lp .s-head p.s-wide{max-width:70ch;}

/* ---------- Vergleichstabelle ---------- */
.cmp-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--r-lg);}
.cmp{width:100%;min-width:760px;border-collapse:separate;border-spacing:0;background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;}
.cmp th,.cmp td{padding:1rem 1.1rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--line);font-size:.92rem;}
.cmp thead th{font-family:var(--disp);font-weight:700;font-size:.95rem;color:var(--ink);background:var(--bg-soft);white-space:nowrap;}
.cmp thead th.cmp-us{background:var(--accent-deep);color:#fff;}
.cmp tbody th{font-family:var(--disp);font-weight:700;color:var(--ink);width:22%;background:var(--bg-soft);}
.cmp td{color:var(--ink-2);width:26%;}
.cmp td.cmp-us{background:var(--accent-l);color:var(--accent-d);font-weight:500;}
.cmp tbody tr:last-child th,.cmp tbody tr:last-child td{border-bottom:none;}
.cm-no,.cm-yes{display:inline;font-size:1.05rem;font-weight:700;margin-right:.4rem;}
/* Haengender Einzug ab der Tabellendarstellung: Haken bzw. Kreuz stehen neben
   der ERSTEN Zeile, der Text bleibt ueber alle Zeilen bündig darunter.
   Absolut positioniert, weil display:grid am <td> die Zelle aus dem
   Tabellenmodell nehmen und das Spaltenraster zerlegen wuerde.
   Mobil greift das nicht: dort stapelt die Tabelle zu Karten, und ueber dem
   Text steht das Spaltenlabel – da gehoert das Zeichen in den Textfluss. */
@media(min-width:921px){
  .cmp td{position:relative;padding-left:2.7rem;}
  .cmp td .cm-no,.cmp td .cm-yes{position:absolute;left:1.1rem;top:1rem;margin-right:0;}
}
.cm-no{color:#c0392b;}
.cm-yes{color:var(--accent);}

/* ---------- Kredo ---------- */
/* Zweispaltig: links der Text, rechts das Portrait als Vertrauensanker. */
.kredo{display:grid;grid-template-columns:1.3fr .7fr;gap:clamp(1.6rem,3.5vw,2.8rem);align-items:center;
  background:#fff;border:1px solid var(--line);border-radius:var(--r-xl);padding:clamp(1.6rem,4vw,3rem);max-width:62rem;margin-inline:auto;box-shadow:var(--shadow-sm);}
.kredo>*{min-width:0;}
.kredo-foto{display:flex;flex-direction:column;gap:.9rem;}
.kredo-foto img{width:100%;height:auto;border-radius:var(--r-lg);box-shadow:0 18px 40px -22px rgba(13,22,45,.5);}
.kredo-foto figcaption{font-size:.9rem;color:var(--ink-2);line-height:1.4;}
.kredo-foto b{display:block;font-family:var(--disp);font-weight:700;font-size:1.02rem;color:var(--ink);}
.kredo h3{font-family:var(--disp);font-size:clamp(1.25rem,2.4vw,1.6rem);font-weight:700;margin-bottom:1rem;text-wrap:balance;}
.kredo p{color:var(--ink-2);font-size:1rem;}
.ks-av{overflow:hidden;}
.ks-av img{width:100%;height:100%;object-fit:cover;display:block;}

/* ---------- Erstcheck-Sektion – Teaser + Button (Formular auf eigener Seite) ---------- */
.ec-box{max-width:44rem;margin-inline:auto;text-align:center;background:#fff;border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow-card);padding:clamp(1.8rem,4vw,3.2rem);}
.ec-box h2{font-size:clamp(1.8rem,3.6vw,2.5rem);font-weight:800;margin-bottom:1.6rem;}
.ec-qs{display:grid;gap:.8rem;margin-bottom:1.8rem;}
.ec-qs li{display:flex;align-items:flex-start;gap:.7rem;font-family:var(--disp);font-weight:600;font-size:1.05rem;color:var(--ink);list-style:none;text-align:left;}
.ec-qs .ck{width:24px;height:24px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;flex-shrink:0;margin-top:.1rem;}
.ec-qs .ck svg{width:13px;height:13px;}
/* Fragenliste mittig als Block, Text links – nie zentrierter Flattersatz */
.ec-box .ec-qs{max-width:30rem;margin-inline:auto;}
.ec-qs-center{max-width:32rem;margin:0 auto 2rem;text-align:left;}
/* Einstiegsfrage direkt auf der LP: Optionen sind Links, kein JS noetig. */
.ec-lead{font-family:var(--disp);font-weight:700;font-size:clamp(1.05rem,1.7vw,1.22rem);color:var(--ink);margin-bottom:1.3rem;}
.lpq{display:grid;gap:.65rem;max-width:34rem;margin-inline:auto;text-align:left;}
.lpq-opt{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  border:1.5px solid var(--line);border-radius:var(--r);background:#fff;
  padding:.95rem 1.1rem;font-family:var(--disp);font-weight:600;font-size:1rem;color:var(--ink);
  transition:var(--t);}
.lpq-opt:hover,.lpq-opt:focus-visible{border-color:var(--accent);background:var(--accent-l);color:var(--accent-d);transform:translateY(-2px);box-shadow:0 12px 26px -18px rgba(13,48,115,.75);}
.lpq-ar{flex-shrink:0;color:var(--accent);font-weight:700;transition:var(--t);}
.lpq-opt:hover .lpq-ar{transform:translateX(3px);}
.ec-sub{font-size:.9rem;color:var(--ink-3);margin-top:1.1rem;}
.trustbar.ec-trust{justify-content:center;margin-top:2rem;}

/* ---------- Kundenstimmen – Slider (nativer overflow-x, wisch-/tastaturfähig) ---------- */
.vslider{max-width:46rem;margin-inline:auto;}
.vs-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:clamp(1rem,2.2vw,1.5rem);scrollbar-width:none;-webkit-overflow-scrolling:touch;border-radius:var(--r-lg);}
.vs-track::-webkit-scrollbar{display:none;}
.vs-track:focus-visible{outline:2px solid var(--accent);outline-offset:3px;}
/* snap-align:start statt center – deterministisch: die Folie rastet an der
   Container-Kante ein. Bei center kann der Browser beim Re-Snap (z. B. nach
   einer Transform-Animation am Elternelement) auf die Nachbarfolie springen. */
.vs-track .voice{flex:0 0 100%;scroll-snap-align:start;}
/* Echtheits-Hinweis zum Rezensions-Block (§ 5b Abs. 3 UWG) – muss lesbar sein,
   darf den Stimmen aber nicht die Bühne nehmen. */
/* Sichtbarer Entwurfs-Hinweis MITTEN auf der Seite (heller Grund!).
   Nicht .footer-todo verwenden: das ist weiß auf 40 % und nur im dunklen
   Footer lesbar – auf einer hellen Sektion wäre der Hinweis unsichtbar. */
.entwurf-note{max-width:62rem;margin:0 auto clamp(1.6rem,3vw,2.4rem);padding:1rem 1.2rem;
  background:var(--amber-l);border:1px solid var(--amber);border-left-width:4px;border-radius:var(--r);
  font-size:.84rem;line-height:1.6;color:#5b4a1f;}
.entwurf-note b{color:#3d3114;}

.vs-note{max-width:60ch;margin:1.4rem auto 0;text-align:center;font-size:.78rem;line-height:1.55;color:var(--ink-3);}
.vs-nav{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1.4rem;}
.vs-btn{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--line);background:#fff;color:var(--ink);display:grid;place-items:center;cursor:pointer;transition:var(--t);flex-shrink:0;}
.vs-btn:hover:not(:disabled){border-color:var(--accent);background:var(--accent);color:#fff;}
.vs-btn:disabled{opacity:.35;cursor:default;}
.vs-btn svg{width:18px;height:18px;}
.vs-dots{display:flex;align-items:center;gap:.45rem;}
.vs-dot{width:8px;height:8px;border-radius:50%;border:none;padding:0;background:var(--line);cursor:pointer;transition:var(--t);}
.vs-dot.active{background:var(--accent);width:22px;border-radius:99px;}

.voice{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(1.3rem,2.4vw,1.8rem);}
.voice blockquote{font-size:.92rem;color:var(--ink-2);line-height:1.65;}
.voice blockquote::before{content:'“';font-family:var(--disp);font-size:2.6rem;line-height:.1;color:var(--accent);display:block;margin-bottom:1rem;}
.voice figcaption{display:flex;align-items:center;gap:.75rem;margin-top:1.2rem;padding-top:1.1rem;border-top:1px solid var(--line);font-size:.82rem;color:var(--ink-3);line-height:1.4;}
.voice .v-av{width:42px;height:42px;border-radius:50%;background:var(--accent-l);color:var(--accent-d);display:grid;place-items:center;font-family:var(--disp);font-weight:700;font-size:.82rem;flex-shrink:0;}
.voice figcaption b{display:block;font-family:var(--disp);font-weight:700;font-size:.95rem;color:var(--ink);}

/* ---------- Über die Kanzlei – Akkordeon + Foto (Referenz-Layout) ----------
   Nutzt bewusst die FAQ-Klassen (.fitem/.fq/.fa), damit die vorhandene
   Akkordeon-Logik in app.js ohne Zusatzcode greift. */
/* Überschrift steht in der linken Spalte über dem Akkordeon (linksbündig),
   damit die Spalte eingeklappt etwa die Höhe des Fotos erreicht. */
.ku-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2rem,4vw,3.5rem);align-items:start;}
.ku-head{margin-bottom:clamp(1.4rem,2.5vw,2rem);max-width:none;}
.ku-head h2{font-size:clamp(1.7rem,3.2vw,2.4rem);}
.ku-acc .fitem{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-sm);margin-bottom:.9rem;overflow:hidden;}
.ku-acc .fq{padding:1.05rem 1.25rem;gap:.85rem;justify-content:flex-start;font-size:1rem;}
.ku-acc .fq .fic{order:-1;width:18px;height:18px;}
.ku-acc .fq .fic::before,.ku-acc .fq .fic::after{width:14px;}
.ku-acc .fa{padding-inline:1.25rem;}
.ku-acc .fa p{padding:0 0 .9rem;font-size:.94rem;max-width:none;}
.ku-acc .fa>*:last-child{padding-bottom:1.35rem;}
.ku-acc .ka-lead{font-family:var(--disp);font-weight:700;color:var(--ink);}
.ku-acc .ka-list{margin:0 0 .9rem;padding-left:1.1rem;display:grid;gap:.35rem;}
.ku-acc .ka-list li{font-size:.94rem;color:var(--ink-2);}
.ku-acc .ka-list li::marker{color:var(--accent);}
/* Kein overflow:hidden: die Ansprechpartner-Kachel darf ueber die Bildkante
   ragen und braucht ihren Schatten. Rundung und Schatten sitzen deshalb am
   Bild selbst. position:sticky ist bereits ein Bezug fuer die Kachel. */
.ku-photo{position:sticky;top:6.5rem;}
/* Hier haengt die Kachel bewusst unten rechts aus dem Bild heraus. Die 40 px
   nach unten braucht die Sektion als zusaetzlichen Fussraum, sonst stiesse sie
   an den naechsten Abschnitt. */
.ku-photo .exp-badge{left:auto;right:40px;bottom:-40px;}
.ku-photo>img{display:block;width:100%;height:100%;object-fit:cover;aspect-ratio:4/3.1;
  border-radius:var(--r-xl);box-shadow:var(--shadow);}

/* ---------- Fallbeispiele – Tabs ---------- */
.tabs{max-width:56rem;margin-inline:auto;}
.tab-bar{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;margin-bottom:1.6rem;}
.tab{font-family:var(--disp);font-weight:700;font-size:.9rem;color:var(--ink-2);background:#fff;border:1.5px solid var(--line);border-radius:99px;padding:.6rem 1.1rem;cursor:pointer;transition:var(--t);}
.tab:hover{border-color:var(--accent);color:var(--accent-d);}
.tab.active{background:var(--accent);border-color:var(--accent);color:#fff;}
.tab-panel{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(1.4rem,3vw,2.2rem);animation:wzIn .4s var(--t);}
.tab-panel h3{font-family:var(--disp);font-size:1.25rem;font-weight:700;margin-bottom:.7rem;}
.tab-panel h4{font-family:var(--disp);font-size:.8rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-d);margin:1.4rem 0 .5rem;}
.tab-panel p{font-size:.95rem;color:var(--ink-2);}
.tab-panel p b{color:var(--ink);font-weight:600;}
.tp-case{background:var(--bg-soft);border-left:3px solid var(--accent);border-radius:0 10px 10px 0;padding:.9rem 1.1rem;}
.tp-out{margin-top:1.1rem;background:var(--accent-l);border-radius:10px;padding:.9rem 1.1rem;color:var(--accent-d);}
.tp-out b{color:var(--accent-deep);}

/* ---------- Unser Standort – Karte + Text ----------
   Karte ist eine EINMALIG bei uns gerenderte OSM-Grafik (werkzeuge/karte.py),
   kein iframe: keine Fremd-Requests/Cookies beim Besucher, kein Consent nötig. */
/* Die Ansprechpartner-Kachel haengt 40 px aus dem Foto – der Abschnitt
   braucht unten entsprechend mehr Luft, damit sie nicht an den naechsten
   stoesst. */
#kanzlei{padding-bottom:calc(var(--pad) + 40px);}
/* Ueber „Unser Standort" stand zu viel Weiss: der Abschnitt beginnt mit
   einer Karte statt einer Ueberschrift, dadurch wirkt der volle
   Standardabstand groesser als anderswo. */
/* Symmetrisch – und der Vorlauf des Banners darunter faellt weg, sonst
   addierte er sich auf den Fussraum dieses Abschnitts und unten stuende
   doppelt so viel Luft wie oben. */
#standort{padding-block:clamp(2.5rem,5vw,4.5rem);}
.st-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(2rem,4vw,3.5rem);align-items:center;}
.st-grid>*{min-width:0;}
.st-map{position:relative;border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--shadow);}
.st-map img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/3.2;}
.st-card{position:absolute;top:1rem;left:1rem;right:1rem;max-width:19rem;background:#fff;border-radius:12px;box-shadow:var(--shadow-sm);padding:.85rem 1rem;display:flex;align-items:flex-start;gap:.8rem;}
.st-card b{display:block;font-family:var(--disp);font-weight:700;font-size:.98rem;color:var(--ink);margin-bottom:.15rem;}
.st-card span{display:block;font-size:.8rem;color:var(--ink-2);line-height:1.4;}
.st-ext{width:32px;height:32px;border-radius:8px;background:var(--bg-soft);color:var(--ink-2);display:grid;place-items:center;flex-shrink:0;margin-left:auto;transition:var(--t);}
.st-ext:hover{background:var(--accent);color:#fff;}
.st-ext svg{width:15px;height:15px;}
/* Attribution ist von karte.py bereits ins Bild eingebrannt – kein zweites Label. */
.st-copy h2{font-size:clamp(1.7rem,3.2vw,2.4rem);font-weight:800;margin-bottom:1.1rem;text-wrap:balance;}
.st-copy p{color:var(--ink-2);font-size:1rem;margin-bottom:1rem;max-width:52ch;}
.st-copy .btn{margin-top:.8rem;}

/* ---------- Finale CTA – Banner, ragt zur Hälfte in den Footer ---------- */
/* Kein eigener Vorlauf: den Abstand zum Banner setzt der Fussraum des
   Abschnitts darueber. Beides zusammen ergaebe ein doppelt so breites
   weisses Band, wie es oberhalb des Abschnitts steht. */
.cta-final{padding-block:0;text-align:center;background:var(--bg);}
.cta-banner{position:relative;z-index:2;border-radius:var(--r-xl);overflow:hidden;padding:clamp(2.2rem,5vw,3.6rem) clamp(1.4rem,4vw,3rem);
  background:linear-gradient(rgba(13,22,45,.84),rgba(13,22,45,.84)),url('assets/img/kanzlei-standort.jpg') center/cover no-repeat;
  color:#fff;box-shadow:var(--shadow);
  /* halbe Höhe in den Footer schieben; der Footer gleicht das unten wieder aus */
  margin-bottom:calc(-1 * var(--cta-overlap));}
.cta-banner h2{font-size:clamp(1.6rem,3.4vw,2.4rem);font-weight:800;margin-bottom:1.2rem;color:#fff;text-wrap:balance;}
.cta-qs{list-style:none;display:grid;gap:.4rem;margin-bottom:1.8rem;}
.cta-qs li{font-size:1rem;color:rgba(255,255,255,.9);}
.btn-outline{background:transparent;color:#fff;border-color:rgba(255,255,255,.7);}
.btn-outline:hover{background:#fff;color:var(--ink);border-color:#fff;transform:translateY(-2px);}

/* ---------- LP-Footer ---------- */
/* Footer holt den vom Banner überlappten Bereich per padding-top wieder auf,
   sonst läge der Banner auf dem Footer-Inhalt. */
.lp-footer{padding-top:calc(var(--cta-overlap) + clamp(3rem,6vw,4.5rem));}
.lp-footer .lpf-top{display:flex;flex-wrap:wrap;gap:1.2rem;align-items:center;justify-content:space-between;}
.lp-footer .logo{color:#fff;}
/* Das Logo ist dunkelblau und waere im dunklen Footer unsichtbar.
   brightness(0) faerbt alles Sichtbare schwarz (Alpha bleibt), invert(1)
   macht daraus Weiss – aus dem zweifarbigen Logo wird die uebliche
   einfarbige Negativfassung. */
.lp-footer .logo-img img{height:56px;filter:brightness(0) invert(1);}
.lpf-badges{display:flex;flex-wrap:wrap;gap:.5rem 1.4rem;}
.lpf-badges span{display:inline-flex;align-items:center;gap:.45rem;font-size:.86rem;color:rgba(255,255,255,.6);}
.lpf-badges svg{width:16px;height:16px;}
.lp-footer .footer-todo{margin-top:1.4rem;}
.lp-footer .footer-bottom{margin-top:1.6rem;}

/* ---------- LP – Responsive ---------- */
@media(max-width:920px){
  /* Mobile Hero-Reihenfolge: Text → weiße Kachel → Foto. Das Motiv samt
     Ansprechpartner-Kachel kommt bewusst NACH „Bereits 5.000+ Fälle geprüft"
     (Kundenwunsch) – die Spaltenreihenfolge dreht sich also mobil um.
     display:contents löst das Grid auf, damit Foto und Kachel (verschiedene
     Eltern) in einer gemeinsamen Flex-Spalte sortiert werden können. */
  .lp-hero .wrap{display:flex;flex-direction:column;}
  .lph-grid{display:contents;}
  .lph-copy{order:1;max-width:38rem;align-self:auto;padding-bottom:0;}
  .lph-card{order:2;margin-top:2rem;padding-top:1.5rem;display:flex;flex-direction:column;}
  .lph-visual{order:3;margin-top:2.4rem;}
  /* Reihenfolge in der Kachel: CTA → „bekannt aus" → 5.000 Fälle.
     display:contents löst .lph-card-actions auf, damit CTA und .proof
     einzeln zwischen die Presse-Leiste sortiert werden können. */
  .lph-card-actions{display:contents;}
  .lph-card-actions .btn-lg{order:1;}
  .press{order:2;}
  .proof{order:3;justify-content:center;margin-bottom:1.5rem;}

  /* „Wir sind bekannt aus": zentriert + endlos laufende Logo-Leiste.
     Gekapselt in .press-viewport (overflow:hidden) → kein Seiten-Scroll. */
  .press{flex-direction:column;align-items:center;gap:.9rem;}
  .press-label{text-align:center;}
  .press-viewport{width:100%;overflow:hidden;}
  .press-track{width:max-content;animation:pressMarquee 34s linear infinite;}
  .press-logos.press-dup{display:flex;}
  /* Abstand liegt IM Listenelement (padding-right), damit translateX(-50%)
     exakt eine Listenbreite wandert und die Schleife nahtlos ist. */
  .press-logos{flex:0 0 auto;flex-wrap:nowrap;justify-content:flex-start;gap:1.8rem;padding-right:1.8rem;}
  .press-viewport:hover .press-track{animation-play-state:paused;}
  .rechte-grid{grid-template-columns:1fr;}
  .szen{grid-template-columns:1fr;}
  .kredo{grid-template-columns:1fr;}
  .kredo-foto img{max-height:60vh;object-fit:cover;object-position:top;}
  .st-grid{grid-template-columns:1fr;}
  .st-map img{aspect-ratio:16/11;}
  .ku-grid{grid-template-columns:1fr;}
  /* Foto ans ENDE des Abschnitts, unter den Text (Kundenwunsch). Damit ist
     unter der Kachel nichts mehr, was sie verdecken koennte – sie darf hier
     also genauso ueberhaengen wie auf dem Desktop, nur mittig statt rechts.
     Den Fussraum dafuer bringt #kanzlei bereits mit. */
  .ku-photo{order:1;position:relative;top:auto;}
  .ku-photo>img{aspect-ratio:16/10;}
  .ku-photo .exp-badge{right:auto;left:50%;bottom:-40px;transform:translateX(-50%);}
  /* Zickzack auflösen: gestapelt, ohne Versatz und ohne Verbindungslinien */
  .zsteps{grid-template-columns:1fr;row-gap:1rem;}
  .zstep:nth-child(even){margin-top:0;}
  .zstep::after{display:none!important;}

  /* Vergleich: Tabelle → gestapelte Karten je Kriterium, damit NICHT
     horizontal gescrollt werden muss. Spaltenkopf kommt per data-col. */
  .cmp-scroll{overflow:visible;}
  .cmp{min-width:0;border:none;background:none;border-radius:0;}
  .cmp thead{display:none;}
  .cmp tbody,.cmp tr,.cmp tbody th,.cmp td{display:block;width:auto;}
  .cmp tr{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);margin-bottom:1rem;overflow:hidden;}
  .cmp tbody th{width:auto;background:var(--bg-soft);font-size:1rem;padding:.95rem 1.1rem;border-bottom:1px solid var(--line);}
  .cmp td{width:auto;padding:.85rem 1.1rem;border-bottom:1px solid var(--line);}
  .cmp tr td:last-child{border-bottom:none;}
  .cmp td::before{content:attr(data-col);display:block;font-family:var(--disp);font-weight:700;font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3);margin-bottom:.25rem;}
}

/* Endlos-Laufschrift der Presse-Logos */
@keyframes pressMarquee{from{transform:translateX(0);}to{transform:translateX(-50%);}}
@media(prefers-reduced-motion:reduce){
  .press-track{animation:none!important;}
  .press-logos.press-dup{display:none!important;}
  /* ohne Laufschrift dürfen die Logos wieder umbrechen statt abgeschnitten zu werden */
  .press-track{width:100%!important;}
  .press-logos{flex-wrap:wrap!important;}
}
@media(max-width:560px){
  .hgb-note{flex-direction:column;gap:.8rem;}
  /* CTA-Beschriftung darf NICHT umbrechen: Button bleibt einzeilig und
     skaliert stattdessen Schrift/Innenabstand mit der Viewportbreite. */
  .btn-lg{font-size:clamp(.8rem,3.5vw,1.02rem);padding:1rem clamp(.9rem,3.5vw,1.8rem);white-space:nowrap;}
  .mid-cta .btn,.lph-card-actions .btn-lg,.ec-btn,.cta-actions .btn{display:flex;width:100%;}
  .lph-card-actions{gap:1rem;}
}

/* ============================================================
   ERSTCHECK-FORMULAR (body.ec, Seite /erstcheck)
   Eigener Funnel ohne Navigation: Schritt-Übersicht links,
   Formularkarte rechts. Alles unter body.ec gescopet, damit die
   gleichnamigen Teaser-Klassen der Landingpage unberührt bleiben.
   ============================================================ */
body.ec{background:var(--bg-soft);}

/* ---- Kopf ---- */
.ec-head{background:var(--white);border-bottom:1px solid var(--line);}
.ec-head-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:76px;}
.ec-head .logo{color:var(--ink);}
.ec-head-t{font-family:var(--disp);font-weight:700;font-size:clamp(.95rem,2.6vw,1.2rem);color:var(--ink);}

/* ---- Layout ---- */
.ec-main{padding-block:clamp(1.5rem,4vw,3rem) clamp(3rem,7vw,5rem);}
.ec-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:clamp(1.25rem,3vw,2.5rem);align-items:start;max-width:1040px;margin-inline:auto;}

/* ---- Schritt-Übersicht ---- */
.ec-side{position:sticky;top:1.5rem;}
.ec-steps{list-style:none;background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:1.6rem 1.4rem;display:grid;gap:1.5rem;}
.ec-st{display:flex;align-items:center;gap:.85rem;font-family:var(--disp);font-weight:700;font-size:.98rem;color:var(--ink-3);transition:var(--t);}
.ec-st.active,.ec-st.done{color:var(--ink);}
.ec-num{width:40px;height:40px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;border:1.5px solid var(--line);background:var(--white);color:var(--ink-3);font-size:.95rem;transition:var(--t);}
.ec-num-ck{width:18px;height:18px;display:none;}
.ec-st.active .ec-num{background:var(--accent);border-color:var(--accent);color:#fff;}
.ec-st.done .ec-num{background:var(--accent-deep);border-color:var(--accent-deep);color:#fff;}
.ec-st.done .ec-num-n{display:none;}
.ec-st.done .ec-num-ck{display:block;}

/* ---- Karte ---- */
.ec-card{background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:clamp(1.4rem,3.5vw,2.5rem);}
.ec-h{font-family:var(--disp);font-weight:700;font-size:clamp(1.5rem,3.5vw,1.9rem);color:var(--ink);margin-bottom:1.8rem;letter-spacing:-.01em;}

/* Zeile = Feldblock + Erklär-Button daneben. Die Button-Spalte steht auch
   dann, wenn die Zeile keinen Button hat – sonst wären die Felder
   unterschiedlich breit. */
.ec-row{display:grid;grid-template-columns:minmax(0,1fr) 28px;align-items:center;gap:.9rem;margin-bottom:1.5rem;}
/* Der Block wird aus dem Layout genommen, damit Frage und Feld eigene
   Grid-Zeilen bilden: die Frage läuft über beide Spalten, das Feld steht
   allein neben dem Erklär-Button. Nur so sitzt der Button mittig zum FELD –
   sonst zentriert er über Frage + Feld und rutscht bei mehrzeiligen Fragen
   (mobil die Regel) nach oben. */
.ec-block{display:contents;}
.ec-block>*{min-width:0;}
.ec-q{grid-column:1/-1;font-family:var(--body);font-size:.95rem;color:var(--ink-2);margin-bottom:.6rem;line-height:1.45;}
/* Folgefrage: Der Pfeil sagt, dass sie aus der Frage darüber folgt und keine
   neue Sache beginnt. Dekorativ als ::before – als Zeichen im Markup läse ihn
   ein Screenreader mit vor („Pfeil nach rechts Möchten Sie …“). Als SVG statt
   als „→“, damit er nicht von der geladenen Schrift abhängt.
   Der Text rückt mit ein: Sonst begänne die zweite Zeile – am Handy die Regel –
   unter dem Pfeil und die Einrückung wäre wieder weg. */
/* Untertext einer Frage (Hinweis „freiwillig“ o. Ä.): steht IN der .ec-q,
   damit er mobil mit ihr in Zeile 1 bleibt und nicht unter die Antworten rutscht. */
.ec-q-sub{display:block;margin-top:.2rem;font-size:.84rem;color:var(--ink-3);}
.ec-cond .ec-q{position:relative;padding-left:1.5rem;}
.ec-cond .ec-q::before{content:"";position:absolute;left:0;top:.3em;width:.95rem;height:.95rem;
  opacity:.6;background:no-repeat center/contain;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230D3073' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E");}

/* ---- Auswahl-Optionen ---- */
/* kein overflow:hidden – sonst kappt der Container den Gültigkeits-Balken.
   Die Ecken runden stattdessen die Optionen selbst ab. */
.ec-opts{position:relative;border:1.5px solid var(--line);border-radius:12px;background:var(--white);transition:var(--t);}
.ec-opts.stacked{display:grid;}
.ec-opts.stacked .ec-opt+.ec-opt{border-top:1.5px solid var(--line);}
.ec-opts.stacked .ec-opt:first-child{border-radius:11px 11px 0 0;}
.ec-opts.stacked .ec-opt:last-child{border-radius:0 0 11px 11px;}
/* grid-auto-flow:column statt fester Spalten: „Ja / Nein / Weiß nicht" steht
   damit in EINER Zeile, ohne dass die Spaltenzahl gepflegt werden muss. */
.ec-opts.inline{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;}
.ec-opts.inline .ec-opt+.ec-opt{border-left:1.5px solid var(--line);}
.ec-opts.inline .ec-opt:first-child{border-radius:11px 0 0 11px;}
.ec-opts.inline .ec-opt:last-child{border-radius:0 11px 11px 0;}
.ec-opt{display:flex;align-items:center;gap:.7rem;padding:.85rem 1rem;cursor:pointer;font-size:1rem;color:var(--ink);transition:var(--t);min-height:52px;}
.ec-opt:hover{background:var(--bg-soft);}
.ec-opt input{accent-color:var(--accent);width:17px;height:17px;flex-shrink:0;cursor:pointer;margin:0;}
.ec-opt:has(input:checked){background:var(--accent-l);font-weight:600;}

/* ---- Felder ---- */
.ec-f{position:relative;}
.ec-f input,.ec-f select,.ec-f textarea{width:100%;font-family:var(--body);font-size:16px;color:var(--ink);background:var(--white);border:1.5px solid var(--line);border-radius:12px;padding:1rem;transition:var(--t);}
.ec-f textarea{resize:vertical;min-height:110px;line-height:1.5;}
.ec-f input:focus,.ec-f select:focus,.ec-f textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(13,48,115,.13);}
.ec-f input::placeholder,.ec-f textarea::placeholder{color:var(--ink-3);}

/* Schwebendes Label: liegt auf dem Rahmen, sobald das Feld gefüllt ist */
/* Schwebendes Label: erscheint erst, wenn das Feld gefüllt ist – im leeren
   Feld steht der Platzhalter. Dadurch darf der Platzhalter ausführlich sein
   („Welche Erkrankung oder Beschwerden liegen vor?"), während das Label kurz
   bleibt: es liegt auf der Rahmenlinie und würde sonst auf schmalen Geräten
   die ganze obere Kante verdecken statt sie nur zu unterbrechen. */
.ec-f>input+label,.ec-f>textarea+label{position:absolute;left:.75rem;top:0;transform:translateY(-50%);padding-inline:.35rem;max-width:calc(100% - 1.5rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:var(--white);color:var(--ink-3);font-family:var(--body);font-size:.78rem;line-height:1;opacity:0;pointer-events:none;transition:var(--t);}
.ec-f>input:focus+label,.ec-f>input:not(:placeholder-shown)+label,
.ec-f>textarea:focus+label,.ec-f>textarea:not(:placeholder-shown)+label{opacity:1;}

/* Selects mit fest stehendem Label darüber */
.ec-sel>label:not(.sr-only){display:block;font-family:var(--body);font-size:.95rem;color:var(--ink-2);margin-bottom:.5rem;}
.ec-f select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237F8C84' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;background-size:18px;padding-right:2.8rem;}

/* Betragsfeld mit Währungszeichen */
.ec-money .ec-cur{position:absolute;right:1rem;top:1rem;color:var(--accent);font-weight:700;pointer-events:none;}
.ec-money input{padding-right:2.5rem;}

.ec-duo{display:grid;grid-template-columns:1fr 1fr;gap:.9rem;}

/* Gültig: blauer Balken direkt am rechten Feldrand. Bei den Eingabefeldern
   als innerer Schatten – so folgt er der Rundung des Feldes von allein und
   sitzt nur am Feld, nicht am Label darüber. */
.ec-f.valid input,.ec-f.valid select,.ec-f.valid textarea{box-shadow:inset -5px 0 0 var(--accent);}
.ec-f.valid input:focus,.ec-f.valid select:focus,.ec-f.valid textarea:focus{box-shadow:inset -5px 0 0 var(--accent),0 0 0 3px rgba(13,48,115,.13);}
/* Bei den Auswahl-Boxen überdecken die Optionen einen inneren Schatten –
   daher hier ein eigenes Element, das die Rundung nachzieht. */
.ec-opts.valid::after{content:"";position:absolute;right:0;top:0;height:100%;width:5px;border-radius:0 11px 11px 0;background:var(--accent);}
.ec-opts.valid{position:relative;}
.ec-f.invalid input,.ec-f.invalid select,.ec-f.invalid textarea,.ec-opts.invalid{border-color:#C0392B;}
.ec-f.invalid::before,.ec-opts.invalid::before{content:"Bitte ausfüllen";position:absolute;right:0;bottom:-1.15rem;font-size:.75rem;color:#C0392B;font-family:var(--disp);font-weight:600;}
.ec-f.invalid,.ec-opts.invalid{margin-bottom:.4rem;}

/* ---- Erklär-Tooltip ---- */
/* place-items statt Button-Textzentrierung: mit line-height allein sass das
   Fragezeichen sichtbar zu hoch im Kreis. */
.ec-help{position:relative;display:grid;place-items:center;width:28px;height:28px;flex-shrink:0;border-radius:50%;border:1.5px solid var(--ink-3);background:var(--white);color:var(--ink-3);font-family:var(--disp);font-weight:700;font-size:.9rem;line-height:1;cursor:pointer;transition:var(--t);padding:0;}
/* Steht über dem Feld noch ein sichtbares Label (Monat/Jahr des Vertrags,
   Versicherungspaket), zentriert die Zeile den Button über Label + Feld und
   er sitzt zu hoch. Hier am Feld-Ende ausrichten: halbe Feldhöhe (54px)
   minus halbe Buttonhöhe (28px) = 13px. */
.ec-row:has(.ec-sel>label:not(.sr-only)) .ec-help{align-self:end;margin-bottom:13px;}
.ec-help:hover,.ec-help.open{border-color:var(--accent);color:var(--accent);}
.ec-tip{position:absolute;left:calc(100% + 14px);top:50%;transform:translateY(-50%) scale(.96);width:250px;background:var(--white);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:1.5rem 1rem 1rem;font-family:var(--body);font-weight:400;font-size:.82rem;line-height:1.5;color:var(--ink-2);text-align:left;opacity:0;visibility:hidden;transition:var(--t);z-index:20;}
.ec-help.open .ec-tip{opacity:1;visibility:visible;transform:translateY(-50%) scale(1);}
.ec-tip::before{content:"";position:absolute;left:-6px;top:50%;width:11px;height:11px;margin-top:-5px;background:var(--white);border-left:1px solid var(--line);border-bottom:1px solid var(--line);transform:rotate(45deg);}
/* Zu wenig Platz rechts: Blase klappt auf die andere Seite (per JS gesetzt) */
.ec-help.flip .ec-tip{left:auto;right:calc(100% + 14px);}
.ec-help.flip .ec-tip::before{left:auto;right:-6px;border-left:0;border-bottom:0;border-right:1px solid var(--line);border-top:1px solid var(--line);}
.ec-help.flip .ec-tip-av{right:auto;left:12px;}
.ec-tip-av{position:absolute;top:-16px;right:12px;width:38px;height:38px;border-radius:50%;background:var(--accent-deep);color:#fff;display:grid;place-items:center;font-family:var(--disp);font-weight:700;font-size:.72rem;overflow:hidden;box-shadow:0 0 0 2px #fff;}
.ec-tip-av img{width:100%;height:100%;object-fit:cover;display:block;}
.ec-tip-t{display:block;}

/* ---- Sprechblase im Kontakt-Schritt ---- */
.ec-says{display:flex;align-items:flex-start;gap:.9rem;margin-bottom:1.8rem;}
.ec-says .ks-av{width:72px;height:72px;border-radius:50%;background:var(--accent-deep);color:#fff;display:grid;place-items:center;font-family:var(--disp);font-weight:700;font-size:1.05rem;flex-shrink:0;}
.ec-bubble{position:relative;background:var(--bg-soft);border:1px solid var(--line);border-radius:var(--r);padding:1rem 1.15rem;font-size:.9rem;line-height:1.6;color:var(--ink-2);}
.ec-bubble::before{content:"";position:absolute;left:-6px;top:20px;width:11px;height:11px;background:var(--bg-soft);border-left:1px solid var(--line);border-bottom:1px solid var(--line);transform:rotate(45deg);}

/* ---- Hinweis + Navigation ---- */
/* ---------- Einwilligung in die Verarbeitung von Gesundheitsdaten ----------
   Sonderfall Art. 9 DSGVO: Gesundheitsdaten sind besondere Kategorien und
   brauchen eine AUSDRÜCKLICHE Einwilligung (Art. 9 Abs. 2 lit. a) – also ein
   aktives, nicht vorbelegtes Häkchen. Das ist die dokumentierte Ausnahme von
   unserer Regel „Kontaktformular ohne Datenschutz-Checkbox"; die gilt nur,
   wo Art. 6 trägt. Bewusst NICHT .ec-f: die Textfeld-Regeln (Float-Label,
   Gültigkeitsbalken) passen auf eine Checkbox nicht. */
/* „Weiß nicht“ rechts neben Betragsfeldern (Feld wächst, Häkchen schrumpft nicht;
   auf schmalen Screens wandert das Häkchen unter das Feld). */
.ec-moneyrow{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap;}
.ec-moneyrow .ec-f{flex:1 1 11rem;min-width:0;}
.ec-nk{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.92rem;color:var(--ink-2);user-select:none;white-space:nowrap;flex:0 0 auto;}
.ec-nk input{width:1.05rem;height:1.05rem;accent-color:var(--accent);cursor:pointer;flex-shrink:0;}
/* Ist „Weiß nicht“ gesetzt, wird das Betragsfeld ausgegraut. */
.ec-f.nk input{opacity:.5;background:var(--bg-soft);}
.ec-f.nk .ec-cur{opacity:.4;}

.ec-consent{display:flex;align-items:flex-start;gap:.8rem;padding:1rem 1.1rem;margin:1.6rem 0 .4rem;
  background:var(--bg-soft);border:1px solid var(--line);border-radius:var(--r);transition:var(--t);}
.ec-consent input{flex-shrink:0;width:20px;height:20px;margin-top:.1rem;accent-color:var(--accent);cursor:pointer;}
.ec-consent span{font-size:.84rem;line-height:1.6;color:var(--ink-2);}
.ec-consent b{color:var(--ink);font-weight:600;}
.ec-consent.valid{border-color:var(--accent);background:var(--accent-l);}
.ec-consent.invalid{border-color:#c0392b;background:#FDECEA;}

/* ── Dokumenten-Auswahl (Erstcheck Schritt 3 + Danke-Seite) ─────────────────
   Flächenfolge: Formularkarte weiß → Upload-Block soft → Ablagefeld und
   Dateizeilen wieder weiß. Jede Fläche hat damit Kontrast zu ihrer
   Umgebung; ein weißer Block in der weißen Karte wäre kein Block mehr. */
.ec-up{background:var(--bg-soft);border:1px solid var(--line);border-radius:var(--r);
  padding:clamp(1rem,3vw,1.4rem);}
.ec-up-lead{font-size:.9rem;line-height:1.6;color:var(--ink-2);margin-bottom:1rem;}
.ec-up-lead b{color:var(--ink);font-weight:600;}

.ec-up-docs{list-style:none;display:grid;gap:.55rem;margin:0 0 1.2rem;}
.ec-up-docs li{position:relative;padding-left:1.1rem;font-size:.86rem;line-height:1.55;color:var(--ink-2);
  overflow-wrap:anywhere;}
.ec-up-docs li::before{content:"";position:absolute;left:0;top:.52em;width:5px;height:5px;
  border-radius:50%;background:var(--accent);opacity:.55;}
.ec-up-docs b{color:var(--ink);font-weight:600;}
/* Zwei Gruppen statt eines „falls vorhanden“-Etiketts je Zeile: Als Etikett
   hing es bei längeren Punkten hinter dem Umbruch allein in der nächsten Zeile
   und sah aus wie ein eigener Listenpunkt. Die Zweiteilung sagt dasselbe
   kürzer – und nimmt dem Nutzer die Sorge, er müsse alles fünf beibringen. */
.ec-up-sub{font-family:var(--disp);font-weight:700;font-size:.74rem;letter-spacing:.06em;
  text-transform:uppercase;color:var(--ink-3);margin-bottom:.5rem;}
.ec-up-docs+.ec-up-sub{margin-top:1rem;}

.ec-up-drop{display:grid;justify-items:center;gap:.5rem;padding:1.4rem 1rem;text-align:center;
  background:var(--white);border:1.5px dashed var(--line);border-radius:12px;transition:var(--t);}
.ec-up-drop.over{border-color:var(--accent);background:var(--accent-l);}
.ec-up-ic{width:30px;height:30px;color:var(--accent);opacity:.75;}
.ec-up-call{font-family:var(--disp);font-weight:600;font-size:.92rem;color:var(--ink);}
.ec-up-drop label{cursor:pointer;}
/* Das Dateifeld ist sr-only (1x1px), bleibt aber per Tab erreichbar – ohne
   diese Regel landet ein Tastaturnutzer auf einem unsichtbaren Element und
   sieht nicht, dass der Fokus beim Dateiknopf steht. Der Ring sitzt deshalb
   auf dem sichtbaren Label. */
.ec-up-drop:has(input:focus-visible) label{outline:2px solid var(--accent);outline-offset:3px;
  border-color:var(--ink);background:var(--ink);color:#fff;}
.ec-up-hint{font-size:.76rem;line-height:1.5;color:var(--ink-3);max-width:28rem;}
/* Format, Grenze und Anzahl je als Einheit – sonst steht „10“ am Zeilenende
   und „MB“ in der nächsten Zeile. Der Satz selbst bricht normal um. */
.ec-up-hint span{white-space:nowrap;}
/* Am Handy zieht niemand Dateien irgendwohin – dort nur der Knopf. */
@media (max-width:600px){
  .ec-up-call{display:none;}
  .ec-up-drop{padding:1.1rem .8rem;}
}

.ec-up-files{list-style:none;display:grid;gap:.5rem;margin:.9rem 0 0;}
.ec-up-file{display:grid;grid-template-columns:20px minmax(0,1fr) auto 26px;align-items:center;
  gap:.6rem;padding:.6rem .7rem;background:var(--white);border:1px solid var(--line);
  border-radius:10px;}
.ec-up-fic{display:grid;place-items:center;color:var(--accent);}
.ec-up-fic svg{width:17px;height:17px;}
/* Dateinamen sind oft lang („Scan_2026-10-02_Ablehnung_Allianz.pdf“) – kürzen,
   nicht umbrechen, sonst wächst die Zeile auf dem Handy auf drei Zeilen. */
.ec-up-fname{font-size:.86rem;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ec-up-fsize{font-size:.75rem;color:var(--ink-3);white-space:nowrap;}
.ec-up-del{display:grid;place-items:center;width:26px;height:26px;padding:0;border:0;border-radius:50%;
  background:transparent;color:var(--ink-3);cursor:pointer;transition:var(--t);}
.ec-up-del svg{width:13px;height:13px;}
.ec-up-del:hover{background:#FDECEA;color:#C0392B;}
/* Schmal: Größe unter den Namen. In einer Zeile frisst die Größenangabe die
   Spalte des Namens auf – auf 320px blieb von „Ablehnung_Allianz….pdf“ ein
   „A…“ übrig, und damit war nicht mehr erkennbar, welche Datei da liegt. */
@media (max-width:460px){
  .ec-up-file{grid-template-columns:20px minmax(0,1fr) 26px;row-gap:.1rem;}
  .ec-up-fic,.ec-up-del{grid-row:1/3;}
  .ec-up-fname{grid-column:2;grid-row:1;}
  .ec-up-fsize{grid-column:2;grid-row:2;}
}

.ec-up-err{margin-top:.7rem;font-size:.8rem;line-height:1.55;color:#C0392B;font-weight:600;}
/* Der Entwurfs-Hinweis sitzt INNEN im Upload-Block – .entwurf-note bringt
   eigene Außenabstände für ganze Sektionen mit, die hier nicht passen. */
.ec-up-todo{max-width:none;margin:1rem 0 0;}

.ec-legal{font-size:.84rem;line-height:1.6;color:var(--ink-2);margin:1.8rem 0 1.4rem;}
.ec-legal a{color:var(--accent);font-weight:600;}
/* Rechts bündig mit den Feldern – nicht mit der Erklär-Spalte daneben */
.ec-nav{display:flex;align-items:center;justify-content:flex-end;gap:1rem;margin-top:2rem;margin-right:calc(28px + .9rem);}
.ec-back{background:none;border:0;font-family:var(--disp);font-weight:600;font-size:.95rem;color:var(--ink-3);cursor:pointer;padding:.85rem .5rem;transition:var(--t);}
.ec-back:hover{color:var(--ink);}

/* ---- Bestätigung nach dem Absenden ---- */
.ec-done{text-align:center;padding:1.5rem 0;}
.ec-done-ic{width:64px;height:64px;border-radius:50%;background:var(--accent-l);color:var(--accent);display:grid;place-items:center;margin:0 auto 1.2rem;}
.ec-done-ic svg{width:30px;height:30px;}
.ec-done h2{font-family:var(--disp);font-weight:700;font-size:1.5rem;color:var(--ink);margin-bottom:.7rem;}
.ec-done p{font-size:.95rem;line-height:1.65;color:var(--ink-2);max-width:44ch;margin:0 auto 1.6rem;}

/* ---- Footer ---- */
.ec-footer{padding-block:2.5rem;}
.ec-foot-badges{display:flex;flex-wrap:wrap;gap:1.5rem;justify-content:center;margin-bottom:1rem;}
.ec-foot-badges span{display:inline-flex;align-items:center;gap:.5rem;font-size:.85rem;color:rgba(255,255,255,.72);}
.ec-foot-badges svg{width:16px;height:16px;}
.ec-footer .footer-todo{text-align:center;}
.ec-footer .footer-bottom{justify-content:center;gap:1rem;flex-wrap:wrap;text-align:center;}

/* ---- Tablet: Schritt-Übersicht wird zur Leiste über der Karte ---- */
@media (max-width:900px){
  /* minmax(0,1fr) statt 1fr: `1fr` ist kurz für `minmax(auto,1fr)`, und `auto`
     heißt hier min-content. Die Schrittleiste hat nebeneinander eine
     Mindestbreite von ~350px – damit zog sie auf 320px das ganze Grid auf 350
     und die Formularkarte ragte 48px über den Bildschirm. Sichtbar wurde das
     nur rechts abgeschnitten, ohne Scrollbalken (html{overflow-x:clip}). */
  .ec-layout{grid-template-columns:minmax(0,1fr);}
  .ec-side{position:static;}
  .ec-steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;padding:1.1rem .8rem;}
  .ec-st{flex-direction:column;text-align:center;gap:.5rem;font-size:.8rem;}
  /* Die Titel müssen jetzt in die enge Spalte passen – umbrechen statt den
     Container aufzudrücken. */
  .ec-st-t{min-width:0;overflow-wrap:anywhere;line-height:1.3;}
  .ec-num{width:34px;height:34px;font-size:.85rem;}
}

/* ---- Mobil ---- */
@media (max-width:640px){
  /* Kopf einzeilig halten: beide Texte schrumpfen, statt umzubrechen */
  .ec-head-bar{min-height:64px;gap:.6rem;}
  .ec-head .logo{gap:.5rem;}
  .logo-img img{height:38px;}
  .ec-head-t{font-size:.8rem;white-space:nowrap;}
  /* Erklär-Button bleibt neben dem Feld (spart Höhe); nur die Blase
     klappt unter den Button. Kein justify-items:start – sonst schrumpfen
     die Felder auf ihre Inhaltsbreite statt die Karte zu füllen. */
  .ec-row{gap:.6rem;}
  /* Mobil sitzt die Blase immer unter dem Button – schlägt das Flip-Muster */
  .ec-tip,.ec-help.flip .ec-tip{left:auto;right:0;top:calc(100% + 12px);transform:translateY(0) scale(.96);width:min(78vw,280px);}
  .ec-help.open .ec-tip{transform:translateY(0) scale(1);}
  .ec-tip::before,.ec-help.flip .ec-tip::before{left:auto;right:8px;top:-6px;margin-top:0;border-left:1px solid var(--line);border-bottom:0;border-top:1px solid var(--line);border-right:0;}
  .ec-tip-av,.ec-help.flip .ec-tip-av{top:-14px;right:auto;left:12px;width:34px;height:34px;}

  /* Erklär-Button mobil: weder Rahmen noch Fläche – sichtbar ist nur das
     Fragezeichen. Die Trefferfläche bleibt trotzdem 26 px gross. Die
     Rasterspalte der Zeile muss mitschrumpfen, sonst stünde der Button in
     einer 28-px-Spalte nicht mehr mittig. */
  .ec-row{grid-template-columns:minmax(0,1fr) 26px;}
  /* Ausnahme: Der Upload-Block hat keinen Erklär-Button. Auf dem Desktop
     bleibt die Spalte trotzdem frei, damit seine rechte Kante auf der Kante
     der Felder darüber sitzt – mobil wiegt der Platz schwerer: Spalte und
     Abstand kosteten 42 von 209px, und vom Dateinamen blieb „A…“ übrig.
     Muss NACH der Zeile darüber stehen, sonst gewinnt die (gleich spezifisch,
     aber später notiert). */
  .ec-up-row{grid-template-columns:minmax(0,1fr);}
  .ec-help{width:26px;height:26px;border:0;background:none;color:var(--accent-d);font-size:1rem;}
  .ec-help:hover,.ec-help.open{background:none;color:var(--accent);}
  .ec-duo{grid-template-columns:1fr;}
  .ec-opts.inline{grid-auto-flow:row;grid-auto-columns:auto;grid-template-columns:1fr;}

  /* Fragezeichen gehört mobil NEBEN die Frage, nicht neben das Feld – dadurch
     bekommt das Feld die volle Breite. Explizite Platzierung ist nötig, weil
     der Erklär-Button im Markup nach dem Feld steht und die automatische
     Platzierung ihn sonst in die zweite Zeile schiebt. */
  .ec-row:has(> .ec-block > .ec-q){align-items:start;}
  .ec-row:has(> .ec-block > .ec-q) .ec-q{grid-column:1;grid-row:1;margin-bottom:0;align-self:center;}
  .ec-row:has(> .ec-block > .ec-q) .ec-help{grid-column:2;grid-row:1;align-self:center;margin-bottom:0;}
  .ec-row:has(> .ec-block > .ec-q) .ec-block > *:not(.ec-q){grid-column:1/-1;grid-row:2;margin-top:.7rem;}

  /* Felder ohne eigenes Label bekommen mobil eines ÜBER der Box. Das Label
     steht im Markup NACH dem Eingabefeld (das braucht der
     :not(:placeholder-shown)-Trick auf dem Desktop), deshalb Raster mit
     expliziten Zeilen statt DOM-Umbau. Der Platzhalter bleibt im Ruhezustand
     sichtbar und wird beim Tippen einfach überschrieben – wie auf dem Desktop. */
  /* EINE Spalte erzwingen: sonst schiebt die automatische Platzierung das
     Währungszeichen in eine zweite Spalte neben das Feld. */
  .ec-f:has(> input + label),.ec-f:has(> textarea + label){display:grid;grid-template-columns:minmax(0,1fr);}
  .ec-f > input + label,.ec-f > textarea + label{grid-column:1;grid-row:1;position:static;transform:none;
    opacity:1;max-width:none;white-space:normal;overflow:visible;text-overflow:clip;
    background:none;padding:0;margin-bottom:.5rem;
    font-family:var(--body);font-size:.95rem;line-height:1.45;color:var(--ink-2);}
  /* Alle drei Kinder brauchen die feste Spalte 1: haette nur das
     Währungszeichen eine, legte die automatische Platzierung das
     Eingabefeld in eine zweite, implizite Spalte daneben. */
  .ec-f > input,.ec-f > textarea{grid-column:1;grid-row:2;}
  /* Währungszeichen liegt in derselben Rasterzelle wie das Feld, sonst säße es
     über dem neuen Label. */
  .ec-money .ec-cur{position:static;grid-column:1;grid-row:2;justify-self:end;align-self:center;
    top:auto;right:auto;margin-right:1rem;}
  /* „Weiß nicht" mobil unter das Betragsfeld, sonst bleiben beiden zu wenig
     Platz und der Platzhalter wird abgeschnitten. */
  .ec-moneyrow{flex-direction:column;align-items:flex-start;gap:.65rem;}
  .ec-moneyrow .ec-f{flex:0 0 auto;width:100%;}

  /* Zeilen ohne Frage, aber mit dem neuen Label über der Box: Fragezeichen
     oben rechts auf Höhe des Labels, Feld darunter über die volle Breite.
     Beide liegen in derselben Rasterzeile – das Label hält mit padding-right
     Abstand, damit sein Text nicht unter den Button läuft. */
  .ec-row:not(:has(> .ec-block > .ec-q)):has(.ec-f > input + label),
  .ec-row:not(:has(> .ec-block > .ec-q)):has(.ec-f > textarea + label){align-items:start;}
  .ec-row:not(:has(> .ec-block > .ec-q)):has(.ec-f > input + label) > .ec-block > *,
  .ec-row:not(:has(> .ec-block > .ec-q)):has(.ec-f > textarea + label) > .ec-block > *{grid-column:1/-1;grid-row:1;}
  .ec-row:not(:has(> .ec-block > .ec-q)):has(.ec-f > input + label) > .ec-help,
  .ec-row:not(:has(> .ec-block > .ec-q)):has(.ec-f > textarea + label) > .ec-help{grid-column:2;grid-row:1;align-self:start;margin-bottom:0;}
  .ec-row:not(:has(> .ec-block > .ec-q)) .ec-f > input + label,
  .ec-row:not(:has(> .ec-block > .ec-q)) .ec-f > textarea + label{padding-right:2.2rem;}
  .ec-opts.inline .ec-opt+.ec-opt{border-left:0;border-top:1.5px solid var(--line);}
  .ec-opts.inline .ec-opt:first-child{border-radius:11px 11px 0 0;}
  .ec-opts.inline .ec-opt:last-child{border-radius:0 0 11px 11px;}
  .ec-nav{gap:.5rem;margin-right:calc(28px + .6rem);}
  .ec-nav .btn{flex:1;}
  .ec-says{gap:.7rem;}
  .ec-says .ks-av{width:56px;height:56px;font-size:.9rem;}
}

/* Sehr schmale Geräte (≤380px): der Kopftitel würde neben dem Logo
   abgeschnitten – Marke hat Vorrang, den Kontext liefert der Stepper. */
@media (max-width:380px){
  body.ec .ec-head-t{display:none;}
}

/* ============================================================
   DANKE-SEITE (body.dk) – eigene URL nach dem Absenden (Tracking-Ziel).
   Nur hier Vollhöhe: Kopf/Inhalt/Footer teilen sich den Bildschirm, damit
   unter der kurzen Karte kein leerer Rest stehen bleibt.
   ============================================================ */
body.dk{display:flex;flex-direction:column;min-height:100vh;min-height:100svh;}
/* minmax(0,1fr) statt der impliziten auto-Spalte: Sonst nimmt die Spalte die
   min-content-Breite ihres Inhalts an und wächst über den Bildschirm hinaus –
   auf 320px ragte die Karte 32px heraus. Lange deutsche Komposita in den
   Dokumentenlisten („Rechtsschutzversicherung“) reichen dafür schon. */
body.dk .dk-main{flex:1 0 auto;display:grid;grid-template-columns:minmax(0,1fr);
  align-items:center;padding-block:clamp(2rem,6vw,4rem);}
body.dk .ec-footer{flex-shrink:0;}

.dk-card{background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:clamp(1.8rem,5vw,3.5rem);max-width:720px;margin-inline:auto;text-align:center;}
.dk-card .ec-done-ic{margin:0 auto 1.4rem;}
.dk-h{font-family:var(--disp);font-weight:700;font-size:clamp(1.6rem,4.2vw,2.2rem);color:var(--ink);letter-spacing:-.01em;margin-bottom:.6rem;text-wrap:balance;}
.dk-lead{font-family:var(--disp);font-weight:600;font-size:clamp(1rem,2.6vw,1.15rem);color:var(--ink-2);margin-bottom:1.8rem;}

/* Liste linksbündig – Fließtext liest sich zentriert schlecht */
.dk-list{list-style:none;display:grid;gap:.9rem;text-align:left;max-width:46rem;margin-inline:auto;}
.dk-list li{display:flex;align-items:flex-start;gap:.8rem;font-size:clamp(.92rem,2.4vw,1rem);line-height:1.6;color:var(--ink-2);}
.dk-ck{width:22px;height:22px;border-radius:50%;background:var(--accent-l);color:var(--accent);display:grid;place-items:center;flex-shrink:0;margin-top:.15rem;}
.dk-ck svg{width:12px;height:12px;}

.dk-out{font-size:clamp(.9rem,2.4vw,.98rem);line-height:1.65;color:var(--ink-2);max-width:46rem;margin:1.8rem auto 0;text-align:left;}
.dk-btn{margin-top:2rem;}

/* ── Danke-Seite: Unterlagen nachreichen ────────────────────────────────────
   Eigene Karte unter der Bestätigung, bewusst linksbündig: die Dankes-Karte
   ist zentriert, ein Formular mit Liste und Feldern liest sich zentriert nicht. */
.dk-up{margin-top:clamp(1.4rem,3.5vw,2.2rem);text-align:left;}
.dk-ende{margin-top:clamp(1.4rem,3.5vw,2.2rem);text-align:center;}
.dk-up-h{font-family:var(--disp);font-weight:700;font-size:clamp(1.25rem,3.2vw,1.55rem);
  color:var(--ink);letter-spacing:-.01em;margin-bottom:.5rem;}
.dk-up-lead{font-size:clamp(.9rem,2.4vw,.98rem);line-height:1.65;color:var(--ink-2);margin-bottom:1.5rem;}
/* Nachreichen per E-Mail. Der Knopf steht im Markup auf hidden und wird erst
   von app.js freigeschaltet – die Adresse wird dort zusammengesetzt, damit sie
   nicht im Quelltext steht. Ohne JS greift der noscript-Block. */
.dk-mail{margin-top:1.4rem;}
.dk-mail-alt{margin-top:1.4rem;font-size:.95rem;line-height:1.6;color:var(--ink-2);}
.dk-mail-alt b{color:var(--ink);}
.dk-mail-hint{margin-top:.9rem;font-size:.84rem;line-height:1.6;color:var(--ink-3);}
.dk-mail-hint b{color:var(--ink-2);font-weight:600;}
/* .footer-todo ist weiß auf 40 % – im hellen Karton unlesbar. Hier dunkel. */
.dk-mail-todo{margin-top:1.2rem;padding-top:1rem;border-top:1px solid var(--line);
  font-size:.78rem;line-height:1.55;color:var(--ink-3);opacity:1;text-align:left;}


@media (max-width:640px){
  .dk-btn{display:flex;width:100%;}
}

/* Versand-Fehler (Netz/Server) – erscheint nur im Fehlerfall über der Navigation */
.ec-err{background:#FDECEA;border:1px solid #F5C6C0;border-radius:var(--r);padding:.9rem 1.1rem;font-size:.88rem;line-height:1.55;color:#8E2A1D;margin-top:1.2rem;}

/* ============================================================
   Rechtstext-Seiten (Impressum / Datenschutz)
   Schmale Lesespalte, ruhige Typo – gleiche Tokens wie die LP.
   ============================================================ */
.legal{padding:3rem 0 4.5rem;}
.legal .wrap{max-width:820px;}
.legal h1{font-family:var(--disp);font-size:clamp(1.9rem,4vw,2.6rem);font-weight:800;letter-spacing:-.02em;margin-bottom:1.4rem;color:var(--ink);}
.legal h2{font-family:var(--disp);font-size:1.12rem;font-weight:700;margin:2rem 0 .5rem;color:var(--ink);}
.legal h3{font-family:var(--disp);font-weight:700;font-size:1rem;margin:1.3rem 0 .3rem;color:var(--ink);}
.legal p{color:var(--ink-2);line-height:1.7;margin-bottom:.65rem;}
.legal a{color:var(--accent);text-decoration:underline;word-break:break-word;}
.legal ul{margin:.2rem 0 .9rem;padding-left:1.3rem;color:var(--ink-2);line-height:1.7;}
.legal li{margin-bottom:.35rem;}
.legal .legal-lead{margin-bottom:1.8rem;}
/* Die beiden Widerspruchs-Absätze stehen in Versalien (Art. 21 DSGVO) –
   in Großbuchstaben braucht der Satz mehr Luft und darf kleiner sein. */
.legal p[style*="uppercase"]{font-size:.84rem;letter-spacing:.01em;line-height:1.75;color:var(--ink-3);}
/* Rechtstext-Fußzeile: ohne Badge-Zeile darüber braucht die Schlusszeile
   keine Trennlinie – sonst steht ein leerer dunkler Streifen über ihr. */
.legal-footer .footer-bottom{margin-top:0;padding-top:0;border-top:0;}
