/* ==========================================================================
   zoehrer.legal — Stylesheet
   Schriften: Source Serif 4 (Display) / Inter (Text), self-hosted
   ========================================================================== */

@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/source-serif-4.woff2) format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/inter.woff2) format('woff2')}

/* --- Tokens ------------------------------------------------------------- */
:root{
  --ink:#17252b;
  --ink-deep:#0e1a1f;
  --paper:#f4f0e8;
  --paper-light:#faf8f3;
  --white:#fffefa;
  --copper:#b56f4c;          /* Zierlinien auf hellem Grund */
  --copper-solid:#a66544;    /* Flaeche unter weisser Schrift, 4.56:1 */
  --copper-solid-hover:#93583a;
  --copper-on-dark:#bb7b5a;  /* Kupferschrift auf dunklem Grund, 4.56:1 */
  --copper-text:#9a5e40;     /* Kupferschrift auf hellem Grund, 4.56:1 */
  --brand-blue:#314b78;
  --brand-blue-light:#3d5c90;
  --line:#17252b2e;
  --muted:#57666a;
  --muted-soft:#5f6e73;

  --serif:'Source Serif 4',Georgia,'Times New Roman',serif;
  --sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;
}

/* --- Reset --------------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box}
/* `color-scheme:light` ist keine Formsache. Ohne diese Angabe haelt Chrome
   auf Android die Seite fuer eine, die noch nichts von Farbschemata weiss,
   und faerbt sie unter „Automatisches dunkles Design" eigenmaechtig um —
   Papierton, Kupfer und Petrol kommen dabei verzerrt heraus. Die Angabe
   sagt: diese Seite ist bewusst hell und vollstaendig durchgestaltet.
   Sie richtet ausserdem Rollbalken und die Bedienelemente von Formularen
   auf helle Umgebung aus. */
html{color-scheme:light;scroll-behavior:smooth;scroll-padding-top:88px;-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:var(--paper-light);
  color:var(--ink);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.5;
  font-feature-settings:"cv05" 1,"ss01" 1;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
img,svg{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
a,button{-webkit-tap-highlight-color:transparent}
h1,h2,h3,p{margin-top:0}
ul,ol,menu{list-style:none;margin:0;padding:0}
button,input,textarea{font:inherit;color:inherit}

/* Sichtbarer, konsistenter Fokusring für Tastaturbedienung */
:focus-visible{outline:2px solid var(--brand-blue);outline-offset:3px;border-radius:1px}
.hero :focus-visible,.approach :focus-visible,footer :focus-visible{outline-color:#d4c5ad}

.shell{width:min(1180px,100% - 48px);margin-inline:auto}

/* Pfeil-Icons als Inline-SVG statt Unicode-Zeichen:
   unabhängig von der Schrift, auf allen Systemen identisch. */
.icon{display:inline-block;width:1em;height:1em;flex:0 0 auto;vertical-align:-.08em}

/* Skip-Link */
.skip-link{
  position:absolute;left:-9999px;top:0;z-index:100;
  background:var(--ink);color:var(--white);
  padding:14px 20px;font-size:13px;font-weight:600;
}
.skip-link:focus{left:12px;top:12px}

/* --- Rueckmeldung beim Antippen -------------------------------------------
   Auf einem Touchgeraet gibt es kein :hover. Die Zeile weiter oben schaltet
   zusaetzlich das graue Kaestchen ab, das Android und iOS von sich aus ueber
   ein angetipptes Element legen. Ohne die folgenden Regeln bleibt ein Tipp
   voellig unbeantwortet — der Finger verdeckt die Stelle, und bis die naechste
   Seite kommt, weiss niemand, ob der Tipp angekommen ist. Deshalb hier zu
   jedem Hover-Zustand der passende :active-Zustand.
   Bewusst ohne Uebergang: eine Rueckmeldung, die erst einblendet, kommt zu
   spaet. Alle Werte sind vorhandene Token, keine neuen Farben. */
.button:active,.form-submit-row button:active{transform:none}
.button-primary:active,.form-submit-row button:active{background:var(--copper-solid-hover)}
.header-contact:active{background:var(--brand-blue);border-color:var(--brand-blue);color:var(--white)}
.header-contact:active .icon{color:var(--white)}
.nav-toggle:active{background:#314b781f;border-color:var(--brand-blue)}
.site-header nav a:active{color:var(--brand-blue)}
.js .site-header nav a:active{background:#314b7817}
.lang-switch a:active,.artikel .zurueck:active{color:var(--copper-text)}
.service-mehr:active,.aktuell-mehr:active{border-color:var(--copper-text)}
.mehr-dazu a:active{border-color:var(--copper)}
.legal-grid aside a:active{color:var(--brand-blue)}
.text-link:active,.footer-links a:active,.address-block a:active,
.form-submit-row a:active,.legal-grid article a:active{opacity:.6}
.service-row:active{background:#17252b0f}
.contact-main:active{transform:translateX(6px)}
.gb-phasen button:active,.treuhand button:active{background:#17252b0f}

/* --- Header -------------------------------------------------------------- */
.site-header{
  position:sticky;top:0;z-index:20;
  background:#faf8f3f5;
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  border-bottom:1px solid #17252b21;
}
.header-inner{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;min-height:82px}
.brand{display:inline-flex;align-items:center;justify-self:start}

/* --- Wortmarke -----------------------------------------------------------
   Echter Text statt Bilddatei: scharf in jeder Auflösung, im Fußbereich ohne
   Filter umkehrbar, kein zusätzlicher Request, für Vorlesesoftware lesbar.
   Bezugsgröße S = font-size von .brand-name, alles andere ein Vielfaches.

   Das Ö steht in Kupfer. Es ist der einzige Buchstabe des Namens mit einem
   eigenen Zeichen darüber und trägt die Farbe der Marke deshalb, ohne dass
   etwas hinzugezeichnet werden müsste. Beide Kupfertöne sind die geprüften
   Token: 4,56:1 auf hellem Grund, 5,14:1 auf dem Ton des Fußbereichs. Der
   Farbwechsel ist reine Auszeichnung, die Bedeutung hängt nicht an ihm — wer
   Farben nicht unterscheidet, liest ZÖHRER unverändert. */
.brand-mark{display:inline-flex;align-items:center;gap:14px}
.brand-name{
  font-family:var(--serif);font-weight:400;font-size:25px;
  letter-spacing:.14em;line-height:1;color:var(--ink);white-space:nowrap;
}
/* Der Name steht ganz in Tinte, das Kupfer traegt allein der Zusatz LEGAL.
   Damit hat jede der beiden Farben genau eine Bedeutung, und die Regel laesst
   sich in einem Satz sagen. Vom 04. bis 05.09.2026 stand das Ö in Kupfer.
   Drei unabhaengige Beurteilungen haben davon abgeraten, zwei davon mit
   Messwerten: der Kupferton traegt gegen den Papierton nur 4,56:1 gegen die
   14,4:1 der Tinte, das Ö verliert damit rund 15 Prozent seiner optischen
   Masse — und im Fussbereich gegen Creme rund drei Viertel. In einem
   gesperrten Versalienwort haelt gerade die gleichmaessige Tonwertdichte den
   Namen zusammen. Dazu zwei Zustaende, in denen die Begruendung ganz wegfiel:
   unter 375 px entfaellt LEGAL, das Kupfer stand dann allein mitten im Namen,
   und im Druck ist der Kopfbereich ohnehin ausgeblendet.
   **Das Signet fuer Tab und Profilbild bleibt das kupferne Ö.** Es steht dort
   allein, ohne Wort, das es aufreissen koennte, und ohne Zusatz, der die Farbe
   schon traegt. Wortmarke und Signet duerfen sich unterscheiden. */
.brand-rule{width:1px;height:24px;background:#17252b52;flex:0 0 auto}
.brand-suffix{
  font-family:var(--sans);font-weight:600;font-size:10px;
  letter-spacing:.3em;line-height:1;padding-top:2px;
  color:var(--copper-text);white-space:nowrap;
}
/* Fußbereich: Umkehrung über eigene Farbwerte, ohne CSS-Filter */
.footer-grid .brand-name{color:var(--white)}
.footer-grid .brand-rule{background:#fffefa66}
.footer-grid .brand-suffix{color:var(--copper-on-dark)}

/* Auf den Kopfbereich eingegrenzt. Ohne `.site-header` trafen diese Regeln
   jedes <nav> der Seite, also auch <nav class="mehr-dazu"> am Fuss der
   Fachbeitraege — dort schlugen Schriftgrad, Abstand und die blaue
   Hover-Farbe durch, und die Klapptafel-Regel unten blendete den Block auf
   schmalen Bildschirmen sogar ganz aus. (Neunter Audit, 04.09.2026.) */
.site-header nav{display:flex;align-items:center;gap:36px;font-size:13px;color:#17252bb8}
.site-header nav a{transition:color .18s}
.site-header nav a:hover,.site-header nav a:focus-visible{color:var(--brand-blue)}
.header-contact{
  display:inline-flex;align-items:center;justify-content:center;justify-self:end;gap:10px;
  padding:12px 14px;border:1px solid #314b78c7;border-radius:2px;
  font-size:11px;font-weight:700;line-height:1;letter-spacing:.08em;text-transform:uppercase;
  transition:border-color .18s,background-color .18s,color .18s;
}
.header-contact .icon{color:var(--brand-blue);font-size:14px;transition:color .18s}

/* --- Sprachwechsel DE | EN -----------------------------------------------
   Rechts im Kopf neben dem Kontaktknopf, auf jeder Seite. Die aktive Sprache
   steht fest, die andere ist der Link. Kein Schieberegler: Englisch sind zwei
   Seiten, Deutsch neun — ein Umschalter wuerde Gleichwertigkeit behaupten. */
.header-right{display:flex;align-items:center;gap:18px;justify-self:end}
.lang-switch{
  display:inline-flex;align-items:center;gap:8px;
  font-size:11.5px;font-weight:600;letter-spacing:.12em;color:var(--muted-soft);
}
.lang-switch .ist{color:var(--ink)}
.lang-switch .trenn{color:#17252b40;font-weight:400}
.lang-switch a{position:relative;display:inline-flex;align-items:center;min-height:44px;transition:color .18s}
/* Tippflaeche vergroessern, ohne das Layout zu verschieben — dasselbe
   Muster wie bei .service-mehr. Waagrecht nur 6 px je Seite: der Abstand
   zum Kontakt- und zum Menueknopf betraegt ab 720 px nur 10 px, ein volles
   44-px-Quadrat ueber dem 18 px breiten Link hat sie ueberlappt und deren
   Klicks abgefangen (Audit 03.09.2026). So bleiben rund 30x44 px, deutlich
   ueber den 24x24 aus WCAG 2.5.8, ohne fremde Ziele zu verdecken. */
.lang-switch a::after{content:"";position:absolute;top:50%;left:-6px;right:-6px;
  transform:translateY(-50%);height:44px}
.lang-switch a:hover,.lang-switch a:focus-visible{color:var(--copper-text)}
.header-contact:hover,.header-contact:focus-visible{background:var(--brand-blue);border-color:var(--brand-blue);color:var(--white)}
.header-contact:hover .icon,.header-contact:focus-visible .icon{color:var(--white)}

/* --- Menüknopf ------------------------------------------------------------
   In der breiten Ansicht nicht vorhanden. Er erscheint erst unter 941px und
   auch dort nur, wenn JavaScript läuft — sonst steht die Navigation ohnehin
   sichtbar da und ein Knopf ohne Funktion wäre eine Falle. */
.nav-toggle{
  display:none;align-items:center;gap:9px;
  min-height:44px;min-width:44px;padding:0 12px;
  background:none;border:1px solid #17252b3d;border-radius:2px;
  color:var(--ink);font-family:inherit;
  font-size:11px;font-weight:700;line-height:1;letter-spacing:.08em;
  text-transform:uppercase;cursor:pointer;
  transition:border-color .18s,background-color .18s;
}
.nav-toggle:hover{border-color:var(--brand-blue);background:#314b780f}
.nav-toggle-strich{
  position:relative;display:block;width:16px;height:2px;flex:0 0 auto;
  background:currentColor;
}
.nav-toggle-strich::before,.nav-toggle-strich::after{
  content:"";position:absolute;left:0;width:16px;height:2px;background:currentColor;
}
.nav-toggle-strich::before{top:-5px}
.nav-toggle-strich::after{top:5px}
.js .nav-toggle-strich,.js .nav-toggle-strich::before,.js .nav-toggle-strich::after{
  transition:transform .18s ease,opacity .18s ease;
}
.nav-offen .nav-toggle-strich{background:transparent}
.nav-offen .nav-toggle-strich::before{transform:translateY(5px) rotate(45deg)}
.nav-offen .nav-toggle-strich::after{transform:translateY(-5px) rotate(-45deg)}

/* --- Hero ---------------------------------------------------------------- */
.hero{position:relative;overflow:hidden;background:var(--ink-deep);color:var(--white)}
.hero::before{
  content:"";position:absolute;inset:0;
  background-image:linear-gradient(#ffffff09 1px,#0000 1px),linear-gradient(90deg,#ffffff09 1px,#0000 1px);
  background-size:92px 92px;
  -webkit-mask-image:linear-gradient(90deg,#000,#0000 72%);mask-image:linear-gradient(90deg,#000,#0000 72%);
}
.hero-grid{position:relative;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(380px,.92fr);min-height:710px}
.hero-copy{display:flex;flex-direction:column;justify-content:center;padding:96px 70px 110px 0}

.eyebrow{
  margin:0 0 24px;font-size:11px;font-weight:700;
  letter-spacing:.19em;text-transform:uppercase;color:#60716b;
}
.hero .eyebrow,.eyebrow-light{color:#b6c0b9}

h1,h2{font-family:var(--serif);font-weight:400}
h1{
  margin-bottom:32px;max-width:720px;
  font-size:clamp(52px,6.3vw,92px);line-height:1;letter-spacing:-.038em;
}
h1 em{color:#d4c5ad;font-style:italic;font-weight:400}
.hero-lead{max-width:590px;margin-bottom:42px;font-size:18px;line-height:1.68;color:#fffefab8}

.hero-actions{display:flex;align-items:center;gap:34px;flex-wrap:wrap}
.button{
  display:inline-flex;align-items:center;justify-content:space-between;gap:28px;
  min-width:225px;padding:18px 20px;font-size:13px;font-weight:600;letter-spacing:.01em;
  transition:background .18s,color .18s,transform .18s;
}
.button:hover,.button:focus-visible{transform:translateY(-2px)}
.button-primary{background:var(--copper-solid);color:var(--white)}
.button-primary:hover,.button-primary:focus-visible{background:var(--copper-solid-hover)}
.text-link{
  display:inline-flex;align-items:center;gap:14px;padding-block:7px;
  font-size:13px;border-bottom:1px solid #ffffff5c;
}

.hero-visual{position:relative;align-self:stretch;min-height:650px;background:#ccd1ca}
.image-frame{position:absolute;inset:0;overflow:hidden}
/* Der Studiogrund ist heller als das Heldenfeld. Ohne diesen Verlauf steht
   das Bild als Rechteck mit sichtbarer Naht darin; so laeuft der linke Rand
   ins Dunkle der Seite aus. Der zweite Verlauf nimmt oben und unten zurueck. */
.image-frame::after{content:"";position:absolute;inset:0;background:
  linear-gradient(90deg,#0e1a1f 0%,#0e1a1fdb 7%,#0e1a1f00 27%),
  linear-gradient(#0e1a1f8c 0%,#0000 22%,#0000 58%,#0e1a1f66 100%)}
.image-frame img{width:100%;height:100%;object-fit:cover;object-position:center 18%;filter:saturate(.78) contrast(1.02)}
.experience-card{
  position:absolute;right:0;bottom:0;width:min(340px,76%);
  display:flex;align-items:flex-start;gap:18px;padding:28px 30px;
  background:var(--paper);color:var(--ink);
}
.experience-card p{margin:0;font-family:var(--serif);font-size:18px;line-height:1.45}
.experience-rule{flex:0 0 30px;height:1px;margin-top:11px;background:var(--copper)}

/* --- Grundsätze ---------------------------------------------------------- */
.principles{background:var(--paper);border-bottom:1px solid var(--line)}
.principle-grid{display:grid;grid-template-columns:repeat(3,1fr)}
.principle-grid>div{display:flex;align-items:center;gap:28px;min-height:104px;padding:0 36px;border-right:1px solid var(--line)}
.principle-grid>div:first-child{padding-left:0}
.principle-grid>div:last-child{border-right:0}
.principle-grid p{margin:0;font-family:var(--serif);font-size:17px}

/* --- Sektionen ----------------------------------------------------------- */
.section{padding:100px 0}
.section-heading{display:grid;grid-template-columns:1.3fr .7fr;align-items:end;gap:90px;margin-bottom:60px}
.section-heading h2,.profile h2,.approach h2,.pricing h2,.contact h2{
  margin-bottom:0;font-size:clamp(42px,5vw,66px);line-height:1.06;letter-spacing:-.03em;
}
.section-heading>p{margin:0;font-size:15px;line-height:1.75;color:var(--muted)}

/* --- Leistungen ---------------------------------------------------------- */
.service-list{border-top:1px solid var(--line)}
.service-row{
  display:grid;grid-template-columns:1fr 1.15fr;align-items:center;gap:26px;
  padding:30px 0;border-bottom:1px solid var(--line);
  transition:background .18s;
}
.service-row:hover{background:#17252b06}
.service-row h3{margin:0;font-family:var(--serif);font-size:26px;font-weight:400;letter-spacing:-.012em}
.service-row p{margin:0;font-size:14px;line-height:1.65;color:#627074}
.service-mehr{
  grid-column:2;display:inline-flex;align-items:center;gap:9px;margin-top:9px;
  font-size:13.5px;color:var(--copper-text);
  border-bottom:1px solid #a6654445;padding-bottom:2px;justify-self:start;
  position:relative;
}
/* Tippflaeche auf 44px vergroessern, ohne die Grundlinie zu verschieben */
.service-mehr::after{content:"";position:absolute;left:0;right:0;top:50%;
  transform:translateY(-50%);height:44px}
.service-mehr:hover,.service-mehr:focus-visible{border-color:var(--copper-text)}
/* Die Regeln der fuenf Pfeilquadrate standen hier noch, obwohl die Quadrate
   am 29.08.2026 entfernt wurden. Die Grundregel traf nichts mehr, ihr
   Hover-Partner hatte den `:not()`-Schutz nicht — und machte damit den
   Textlink `.service-mehr` beim Ueberfahren zum dunklen Block mit weisser
   Schrift, statt der dafuer geschriebenen Kupfer-Unterstreichung.
   Beide entfernt. (Neunter Audit, 04.09.2026.) */

/* --- Fallbeispiele -------------------------------------------------------
   Bewusst ohne Nummerierung: die Beispiele sind keine Abfolge, sondern
   nebeneinanderstehende Belege. Ruhige Karten, damit sie den Leistungen
   nicht die Aufmerksamkeit nehmen. */
/* Keine eigene Oberkante: die Leistungsliste darueber endet bereits mit einer
   Linie (breite Ansicht) bzw. mit dem Kartenrahmen (schmale Ansicht). Beides
   zusammen ergab zwei Linien mit 132px Leere dazwischen. */
.case-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line)}
.case{display:flex;flex-direction:column;gap:14px;padding:34px 36px;background:var(--paper-light)}
/* Ungerade Anzahl: letzte Karte über die volle Breite, damit keine Lücke bleibt. */
.case:last-child:nth-child(odd){grid-column:1/-1}
.case-label{
  margin:0;padding-bottom:14px;border-bottom:2px solid var(--copper);align-self:flex-start;
  font-size:10px;font-weight:700;letter-spacing:.17em;text-transform:uppercase;color:var(--ink);
}
.case p:not(.case-label):not(.case-result){margin:0;font-size:14px;line-height:1.72;color:var(--muted)}
.case-result{
  margin:auto 0 0;padding-top:16px;border-top:1px solid var(--line);
  font-family:var(--serif);font-size:18px;line-height:1.45;color:var(--ink);
}


/* --- Blocksatz für den Fließtext -----------------------------------------
   Nur für echte mehrzeilige Absätze, nicht für kurze Zeilen und Listen.
   Silbentrennung ist zwingend dazu, sonst reißen im Deutschen große
   Lücken zwischen den Wörtern auf. Sie greift über lang="de-AT". */
.section-heading > p,
.case p:not(.case-label):not(.case-result),
.profile-copy p,
.pricing-copy p,
.contact-intro,
.legal-grid article p,
.legal-grid article dd{
  text-align:justify;
  hyphens:auto;
  -webkit-hyphens:auto;
  hyphenate-limit-chars:6 3 3;
}
/* Auf schmalen Spalten wird Blocksatz unruhig – dort wieder linksbündig. */
@media (max-width:720px){
  .section-heading > p,
  .case p:not(.case-label):not(.case-result),
  .profile-copy p,
  .pricing-copy p,
  .contact-intro,
  .legal-grid article p,
  .legal-grid article dd{
    text-align:left;
  }
}

/* Nur auf der englischen Startseite: der Austria-Block steht unmittelbar
   hinter den Fallbeispielen und nutzt dasselbe Kartengitter. Eigener Grund,
   damit die beiden Gitter nicht als eines gelesen werden. */
.section.austria{background:var(--paper);border-block:1px solid var(--line)}
.section.austria .case{background:var(--paper)}

/* --- Kanzlei ------------------------------------------------------------- */
.profile{background:var(--paper);border-top:1px solid var(--line)}
.profile-grid{display:grid;grid-template-columns:minmax(0,.62fr) 1fr .8fr;align-items:start;gap:64px}
.profile-figure{margin:0}
.profile-figure img{width:100%;height:auto;aspect-ratio:3/4;object-fit:cover;object-position:center 30%;filter:saturate(.78) contrast(1.02)}
.profile-intro{align-self:start}
.profile h2{max-width:690px}
.profile-copy{border-top:3px solid var(--copper);padding-top:30px}
.profile-copy p{margin:0;font-size:15px;line-height:1.78;color:var(--muted)}
.profile-copy p+p{margin-top:20px}

/* --- Arbeitsweise -------------------------------------------------------- */
.approach{background:var(--ink);color:var(--white)}
.approach-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:110px}
.approach-intro{position:sticky;top:130px;align-self:start}
.approach-intro>p:last-child{max-width:480px;margin:34px 0 0;font-size:15px;line-height:1.75;color:#fffefaa8}
.steps li{display:grid;grid-template-columns:62px 1fr;gap:18px;padding:36px 0 46px;border-top:1px solid #ffffff2e}
.steps li:last-child{border-bottom:1px solid #ffffff2e}
.steps>li>span{color:var(--copper-on-dark);font-size:11px;font-weight:600}
.steps h3{margin:0 0 14px;font-family:var(--serif);font-size:30px;font-weight:400;letter-spacing:-.015em}
.steps p{max-width:500px;margin:0;font-size:14px;line-height:1.7;color:#fffefa9e}

/* --- Honorar ------------------------------------------------------------- */
.pricing{background:var(--paper)}
.pricing-grid{display:grid;grid-template-columns:1fr .68fr;align-items:start;gap:72px}
.pricing-copy h2{margin-bottom:32px}
.pricing-copy p{max-width:620px;line-height:1.75;color:var(--muted)}
.pricing-copy .large-copy{font-family:var(--serif);font-size:26px;line-height:1.45;color:var(--ink)}
.dark-link{border-color:var(--line);margin-top:16px}
.pricing-note{background:var(--white);border-top:3px solid var(--copper);padding:32px}
.pricing-note>h3{margin:0;font-size:10px;font-weight:700;letter-spacing:.17em;text-transform:uppercase}
.pricing-note ul{margin:24px 0 0}
.pricing-note li{padding:16px 0;border-top:1px solid var(--line);font-size:13px;line-height:1.5;color:#59666a}

/* --- Kontakt ------------------------------------------------------------- */
.contact{position:relative;overflow:hidden;background:var(--paper);color:var(--ink);padding:112px 0}
.contact::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(#314b780b 1px,#0000 1px),linear-gradient(90deg,#314b780b 1px,#0000 1px);
  background-size:92px 92px;
  -webkit-mask-image:linear-gradient(270deg,#000,#0000 80%);mask-image:linear-gradient(270deg,#000,#0000 80%);
}
.contact-grid{
  position:relative;display:grid;
  grid-template-columns:minmax(0,.88fr) minmax(420px,1.12fr);
  grid-template-areas:"introduction form" "details form";
  align-items:start;gap:40px 84px;
}
.contact-introduction{grid-area:introduction}
.contact h2{max-width:520px}
.contact .eyebrow{color:var(--brand-blue)}
.contact-intro{max-width:510px;margin:30px 0 0;font-size:14px;line-height:1.72;color:#536267}
.response-time{max-width:510px;margin:24px 0 0;padding-top:20px;border-top:1px solid var(--line);font-size:13px;line-height:1.65}
.contact-details{grid-area:details}
.contact-actions{border-top:1px solid var(--line)}
.contact-main{
  display:grid;grid-template-columns:150px 1fr auto;align-items:center;gap:18px;
  padding:27px 0;border-bottom:1px solid var(--line);transition:transform .18s;
}
.contact-main:hover,.contact-main:focus-visible{transform:translateX(12px)}
.contact-main>span{font-size:12px;color:var(--muted-soft)}
/* `overflow-wrap:anywhere` ist hier mehr als eine Notbremse: es setzt auch
   die Mindestbreite des Elements auf ein Zeichen herab. Ohne das konnte
   die Gitterspur nicht unter die Breite von „office@zoehrer.legal" (207 px)
   schrumpfen, und die Adresse lief bei 721 px aus ihrer Zeile heraus.
   Jetzt bricht sie im Notfall um, statt zu ueberlaufen. */
.contact-main strong{font-family:var(--serif);font-size:23px;font-weight:400;overflow-wrap:anywhere}
.address-block{display:grid;grid-template-columns:150px 1fr auto;align-items:start;gap:18px;margin-top:26px}
.address-block>span{font-size:12px;color:var(--muted-soft)}
.address-block p,.address-block a{margin:0;font-size:13px;line-height:1.7}
.address-block a{border-bottom:1px solid #314b787a}

/* --- Formular ------------------------------------------------------------ */
.contact-form{grid-area:form;background:#fffefab8;border:1px solid #314b7885;padding:30px}
.form-heading{display:flex;justify-content:space-between;align-items:baseline;gap:20px;margin-bottom:20px}
.form-heading>h3{margin:0;font-family:var(--serif);font-size:25px;font-weight:400}
.form-heading p,.form-submit-row p{margin:0;font-size:12px;line-height:1.6;color:var(--muted-soft)}
.form-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.45fr) minmax(0,.95fr);gap:16px}
.form-grid label{display:grid;gap:9px}
.form-grid label>span{font-size:12px;color:#536267}
.form-message{grid-column:1/-1}
.form-grid input,.form-grid textarea{
  width:100%;padding:12px 14px;background:var(--white);
  /* 1.4.11 verlangt fuer die Umrandung von Bedienelementen 3:1. Mit dem
     frueheren #314b784d waren es 1,61:1 — die Felder waren kaum als solche
     zu erkennen. #314b78b3 liegt auf der deckenden Feldflaeche auf und
     ergibt 3,93:1 gegen diese sowie 3,22:1 gegen den getoenten
     Formulargrund unter 720 px. Beides ueber den 3:1 aus WCAG 1.4.11. */
  border:1px solid #314b78b3;border-radius:0;
  font-size:16px;transition:border-color .18s,box-shadow .18s;
}
.form-grid textarea{min-height:104px;line-height:1.5;resize:vertical}
.form-grid input:focus,.form-grid textarea:focus{border-color:var(--brand-blue);box-shadow:0 0 0 3px #314b781f}
.form-grid input:user-invalid,.form-grid textarea:user-invalid{border-color:#a5402f}
.form-warning{max-width:800px;margin:16px 0 0;font-size:12px;line-height:1.65;color:var(--muted-soft)}
/* Flex mit Umbruch, nicht Gitter: die zweite Gitterspur liess sich nicht
   unter die Mindestbreite ihres Inhalts druecken, und „Datenschutz-
   informationen" ist ein einziges Wort von 150 px. Zwischen 721 und
   800 px ragte es damit aus dem Formular heraus (Playwright, 04.09.2026).
   Passt es nicht mehr neben den Knopf, rutscht es jetzt darunter. */
.form-submit-row{display:flex;flex-wrap:wrap;align-items:center;gap:18px;margin-top:18px}
.form-submit-row button{
  display:inline-flex;align-items:center;justify-content:space-between;
  min-width:190px;padding:15px 18px;border:0;cursor:pointer;
  background:var(--copper-solid);color:var(--white);
  font-size:13px;font-weight:600;transition:background .18s,transform .18s;
}
.form-submit-row button:hover,.form-submit-row button:focus-visible{background:var(--copper-solid-hover);transform:translateY(-2px)}
.form-submit-row button[disabled]{cursor:wait;opacity:.72;transform:none}
.form-submit-row a{position:relative;border-bottom:1px solid #314b7873}
.address-block a{position:relative}
/* 44px Tippflaeche fuer die beiden kurzen Textlinks, ohne Layoutwirkung */
.form-submit-row a::after,.address-block a::after{content:"";position:absolute;
  left:0;right:0;top:50%;transform:translateY(-50%);height:44px}

/* Statusmeldung nach dem Absenden */
.form-status{margin:16px 0 0;padding:14px 16px;font-size:13px;line-height:1.6;border-left:3px solid}
.form-status[hidden]{display:none}
.form-status.is-success{border-color:#3f7a4f;background:#3f7a4f14;color:#2c5738}
.form-status.is-error{border-color:#a5402f;background:#a5402f12;color:#8c3325}
.form-status a{text-decoration:underline;text-underline-offset:2px}
/* Honeypot gegen Spam-Bots */
.hp-field{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* --- Rechtsseiten -------------------------------------------------------- */
.legal-header .header-inner{grid-template-columns:1fr auto}
.legal-hero{background:var(--ink-deep);color:var(--white);padding:96px 0 82px}
.legal-hero .eyebrow{margin-bottom:22px}
.legal-hero h1{max-width:none;margin:0;font-size:clamp(52px,7vw,86px)}
.legal-updated{margin:24px 0 0;font-size:12px;color:#ffffff9e}
.legal-content{background:var(--paper-light);padding:100px 0 120px}
.legal-grid{display:grid;grid-template-columns:230px minmax(0,760px);align-items:start;gap:90px}
.legal-grid aside{display:grid;gap:14px;position:sticky;top:120px;border-top:2px solid var(--copper);padding-top:20px}
.legal-grid aside a{display:inline-flex;align-items:center;min-height:44px;font-size:12px;color:#637075}
.legal-grid aside a:hover,.legal-grid aside a:focus-visible{color:var(--brand-blue)}
.legal-grid aside a[aria-current="page"]{color:var(--ink);font-weight:600}
.legal-grid article section{border-top:1px solid var(--line);padding:34px 0 12px}
.legal-grid article section:first-child{border-top:0;padding-top:0}
.legal-grid article h2{margin:0 0 18px;font-size:30px;letter-spacing:-.02em}
.legal-grid article h3{margin:26px 0 8px;font-family:var(--sans);font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink)}
.legal-grid article section > h3:first-of-type{margin-top:0}
.legal-grid article p,.legal-grid article dd{font-size:15px;line-height:1.78;color:#536267}
.legal-grid article p+p{margin-top:16px}
.legal-grid article strong{color:var(--ink);font-weight:600}
.legal-grid article a{color:var(--brand-blue);text-decoration:underline;text-decoration-color:#314b7852;text-underline-offset:3px}
.legal-grid dl{margin:0}
.legal-grid dl>div{display:grid;grid-template-columns:220px 1fr;gap:22px;padding:16px 0;border-top:1px solid var(--line)}
.legal-grid dt{font-size:12px;font-weight:700;line-height:1.55;color:#657277}
.legal-grid dd{margin:0}
.legal-footer{display:flex;justify-content:space-between;align-items:center;gap:30px}
.legal-footer p{margin:0;font-size:12px;color:#ffffff9e}

/* --- 404 ----------------------------------------------------------------- */
.error-page{display:grid;place-items:center;min-height:70vh;background:var(--ink-deep);color:var(--white);text-align:center;padding:80px 0}
.error-page h1{margin-bottom:20px}
.error-page p{max-width:520px;margin:0 auto 34px;color:#fffefab8;line-height:1.7}
/* Ersetzt das fruehere style="justify-content:center" — ein Inline-Stil
   verlangt in der CSP von Vercel `style-src unsafe-inline`. */
.hero-actions.zentriert{justify-content:center}

/* --- Footer -------------------------------------------------------------- */
footer{background:var(--ink-deep);color:var(--white);padding:48px 0}
.footer-grid{display:grid;grid-template-columns:1.35fr 1fr auto;align-items:start;gap:42px}
.footer-grid>p{font-size:12px;line-height:1.7;color:#ffffff9e}
.footer-links{display:flex;gap:24px;font-size:12px}
.footer-links a{display:inline-flex;align-items:center;min-height:44px;transition:color .18s}
.footer-links a:hover,.footer-links a:focus-visible{color:var(--white)}
.copyright{grid-column:2;margin:-10px 0 0 !important}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width:940px){
  /* Wortmarke | Menüknopf | Kontakt. Die Navigation liegt entweder als
     zweite Zeile darunter (ohne JavaScript) oder als Klapptafel darüber. */
  .header-inner{grid-template-columns:minmax(0,1fr) auto auto;column-gap:10px}
  .header-inner>.brand{grid-column:1;grid-row:1}
  .nav-toggle{grid-column:2;grid-row:1}
  .header-inner>.header-right{grid-column:3;grid-row:1}

  /* Ohne JavaScript: sichtbare Zeile unter der Wortmarke */
  .site-header nav{grid-column:1/-1;grid-row:2;flex-wrap:wrap;gap:14px 22px;padding-bottom:14px;font-size:14px}
  .legal-header .header-inner{grid-template-columns:minmax(0,1fr) auto}
  /* Beschriftungsspalte der Definitionsliste von 220 auf 180 px. Bei 768 px
     war die Zeile 402 px breit bei 400 px Platz — „Rechtsanwaltskammer" ist
     ein unteilbares Wort von 160 px, die feste Spalte davor liess ihm zwei
     Pixel zu wenig (Playwright, 04.09.2026). */
  .legal-grid dl>div{grid-template-columns:180px 1fr}

  /* Mit JavaScript: Knopf sichtbar, Navigation als Klapptafel */
  .js .nav-toggle{display:inline-flex}
  .js .site-header nav{
    position:absolute;top:100%;left:0;right:0;z-index:5;
    display:none;flex-direction:column;align-items:stretch;gap:0;
    padding:0 0 8px;font-size:15px;
    background:var(--paper-light);
    border-bottom:1px solid var(--line);
    box-shadow:0 20px 34px -24px #17252b73;
  }
  .js .site-header.nav-offen nav{display:flex}
  .js .site-header nav a{
    display:flex;align-items:center;min-height:50px;
    padding:0 24px;color:var(--ink);border-top:1px solid var(--line);
  }
  .js .site-header nav a:hover,.js .site-header nav a:focus-visible{background:#314b780f;color:var(--brand-blue)}

  .hero-grid{grid-template-columns:1fr .78fr}
  .hero-copy{padding-right:42px}
  .section-heading,.approach-grid,.pricing-grid{gap:50px}
  /* Unter 940px zwei Spalten: Bild links über beide Zeilen, Text rechts. */
  .profile-grid{grid-template-columns:minmax(0,.85fr) 1fr;gap:40px}
  .profile-figure{grid-row:1/span 2}
  .pricing-grid{grid-template-columns:1fr .8fr}
  .contact-grid{grid-template-columns:minmax(0,.8fr) minmax(380px,1.2fr);column-gap:50px}
  /* Beschriftung auf eine eigene Zeile. Bis 940 px ist die linke Spalte zu
     schmal fuer „E-Mail schreiben" plus die Adresse nebeneinander — die
     Adresse lief aus ihrer Zeile heraus und bei 768 px 57 px weit unter das
     Formular (Playwright, 04.09.2026). Die Regel stand bisher erst im
     720er-Block. */
  .contact-main,.address-block{grid-template-columns:1fr auto}
  .contact-main>span,.address-block>span{grid-column:1/-1}
  .form-grid{grid-template-columns:1fr 1fr}
  .form-grid label:nth-child(3),.form-message{grid-column:1/-1}
}

@media (max-width:720px){
  html{scroll-padding-top:72px}
  body{overflow-x:hidden}
  .shell{width:min(100% - 36px,580px)}
  .header-inner{grid-template-columns:minmax(0,1fr) auto auto;column-gap:8px;min-height:68px}
  .legal-header .header-inner{grid-template-columns:minmax(0,1fr) auto}
  .nav-toggle{padding:0 10px;gap:8px}
  .js .site-header nav a{padding:0 18px}
  .brand-mark{gap:11px}
  .brand-name{font-size:21px}
  .brand-rule{height:20px}
  .brand-suffix{font-size:8.5px}
  .header-contact{gap:9px;padding:11px 13px}
  .header-right{gap:10px}
  .lang-switch{gap:6px;font-size:11px}

  .hero::before{background-size:68px 68px;-webkit-mask-image:linear-gradient(#000,#0000 58%);mask-image:linear-gradient(#000,#0000 58%)}
  .hero-grid{display:flex;flex-direction:column;min-height:0}
  .hero-copy{padding:58px 0 54px}
  h1{max-width:520px;margin-bottom:26px;font-size:clamp(46px,13vw,60px);line-height:1.02}
  .hero-lead{max-width:520px;margin-bottom:32px;font-size:16px;line-height:1.62}
  /* CTA bleibt auf dem Handy sichtbar (war zuvor ausgeblendet) */
  .hero-actions{display:grid;gap:18px;justify-items:stretch}
  .hero-actions .button{width:100%;min-width:0}
  .hero-actions .text-link{justify-content:center;color:#fffefadb}

  .hero-visual{display:grid;grid-template-rows:390px auto;min-height:0;background:var(--paper)}
  .image-frame{position:relative;inset:auto;height:390px}
  .image-frame img{object-position:center 12%}
  .experience-card{position:relative;inset:auto;width:100%;padding:20px 22px}
  .experience-card p{font-size:16px}

  .principle-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .principle-grid>div,.principle-grid>div:first-child{
    flex-direction:column;align-items:flex-start;justify-content:center;
    gap:9px;min-height:98px;padding:14px;border-right:1px solid var(--line);border-bottom:0;
  }
  .principle-grid>div:last-child{border-right:0}
  .principle-grid p{font-size:14px;line-height:1.28}

  .section{padding:68px 0}
  .section-heading,.profile-grid,.approach-grid,.pricing-grid{grid-template-columns:1fr}
  .section-heading{align-items:start;gap:22px;margin-bottom:38px}
  .section-heading h2,.profile h2,.approach h2,.pricing h2,.contact h2{font-size:clamp(34px,10vw,42px);line-height:1.1}
  .section-heading>p{font-size:14px;line-height:1.68}

  .service-list{border-top:0}
  .service-row{
    grid-template-columns:minmax(0,1fr);gap:12px;padding:24px 18px;
    background:#ffffff59;border:1px solid var(--line);
  }
  .service-row+.service-row{margin-top:10px}
  .service-row h3{font-size:22px;line-height:1.18}
  .service-row p{grid-column:1/-1;font-size:13px;line-height:1.58}
  .service-mehr{grid-column:1/-1;margin-top:4px}
  /* Tippziele mindestens 44px hoch (Fingerbedienung) */
  .header-contact{min-height:44px}
  .text-link{min-height:44px}
  .brand{min-height:44px}

  .case-grid{grid-template-columns:1fr}
  .case{padding:26px 22px;gap:12px}
  .case-result{font-size:17px}

  .profile-grid{gap:26px}
  /* Am Telefon das Bild vollstaendig zeigen: sein eigenes Hochformat (640x851)
     statt des erzwungenen 4/3-Ausschnitts. Das Verhaeltnis steht explizit da,
     damit der Platz auch vor dem Laden reserviert ist (lazy) und nichts springt. */
  .profile-figure img{aspect-ratio:640/851;object-fit:contain;object-position:center;max-width:240px}
  .profile-copy{border-top-width:2px;padding-top:22px}
  .profile-copy p{font-size:14px;line-height:1.68}

  .approach-grid{gap:40px}
  .approach-intro{position:static}
  .approach-intro>p:last-child{margin-top:24px;font-size:14px;line-height:1.68}
  .steps li{grid-template-columns:40px 1fr;gap:10px;padding:28px 0 32px}
  .steps h3{margin-bottom:10px;font-size:26px}
  .steps p{font-size:13px;line-height:1.62}

  .pricing-grid{gap:24px}
  .pricing-copy h2{margin-bottom:24px}
  .pricing-copy .large-copy{font-size:22px}
  .pricing-copy p{font-size:14px;line-height:1.68}
  .pricing-note{padding:24px}

  .contact{padding:64px 0}
  .contact-grid{grid-template-columns:1fr;grid-template-areas:"introduction" "form" "details";gap:28px}
  .contact-intro{margin-top:22px;font-size:14px;line-height:1.68}
  .response-time{margin-top:18px;padding-top:16px}
  .contact-main{gap:8px 14px;padding:20px 0}
  .contact-main strong{font-size:19px}
  .address-block{margin-top:22px}

  .contact-form{background:#0e1a1f0a;padding:24px 20px}
  /* Auf diesem getoenten Grund (rgb 235,232,224) kommt --muted-soft nur auf
     4,33:1. --muted ergibt 4,88:1. Betrifft die Pflichtfeldzeile, die beiden
     Warnhinweise und den Datenschutzlink. Auf dem Desktop steht derselbe Text
     auf #fffefab8 und ist mit 5,08:1 in Ordnung. */
  .contact-form .form-heading p,
  .contact-form .form-submit-row p,
  .contact-form .form-warning{color:var(--muted)}
  .form-heading{flex-direction:column;align-items:flex-start;gap:5px;margin-bottom:18px}
  .form-heading>h3{font-size:23px}
  .form-grid{grid-template-columns:1fr;gap:13px}
  .form-grid label{gap:6px}
  .form-grid label:nth-child(3),.form-message{grid-column:auto}
  .form-grid input,.form-grid textarea{padding:11px 12px}
  .form-grid textarea{min-height:92px}
  .form-warning{margin-top:14px}
  .form-submit-row{flex-direction:column;align-items:flex-start;gap:12px;margin-top:16px}
  .form-submit-row button{width:100%;min-width:0;padding:14px 16px}

  .legal-hero{padding:72px 0 62px}
  /* „Datenschutzerklärung" ist 20 Zeichen lang und passte bei 52px nicht mehr
     in die Zeile — der Rest stand außerhalb des Bildschirms. Kleinerer Grad,
     dazu Silbentrennung; break-word greift, falls der Browser keine deutschen
     Trennregeln mitbringt. */
  .legal-hero h1{font-size:clamp(34px,8.5vw,52px);hyphens:auto;overflow-wrap:break-word}
  .legal-content{padding:72px 0 88px}
  .legal-grid{grid-template-columns:1fr;gap:54px}
  .legal-grid aside{position:static}
  .legal-grid article h2{font-size:26px}
  .legal-grid dl>div{grid-template-columns:1fr;gap:5px}
  .legal-footer{flex-direction:column;align-items:flex-start}

  footer{padding:38px 0}
  .footer-grid{grid-template-columns:1fr 1fr;gap:28px 22px}
  .footer-grid>.brand{grid-column:1/-1}
  .copyright{grid-column:1;margin:0 !important}
}

/* Unter 375 px reicht der Platz im Kopf nicht mehr fuer die volle Wortmarke.
   Gemessen bei 320 px: die Wortmarke war 141 px breit, ihre Gitterspur nur
   92 px — sie lag 41 px unter dem Menueknopf, und ein Tipp auf das rechte
   Drittel des Namens oeffnete das Menue statt zur Startseite zu fuehren
   (Playwright, 04.09.2026). Trennstrich und „LEGAL" entfallen deshalb hier,
   „ZÖHRER" allein passt. Der Link behaelt seinen vollen Namen ueber
   aria-label, fuer Vorlesesoftware aendert sich nichts. */
@media (max-width:374px){
  .brand-rule,.brand-suffix{display:none}
}

@media (max-width:430px){
  .shell{width:calc(100% - 32px)}
  .header-inner{min-height:64px}
  .brand-mark{gap:9px}
  .brand-name{font-size:18px}
  .brand-rule{height:17px}
  .brand-suffix{font-size:7.5px;padding-top:1px}
  .header-contact{gap:8px;padding:11px 12px}
  /* Am schmalen Telefon nur die andere Sprache zeigen, sonst bricht der Kopf */
  .lang-switch .ist,.lang-switch .trenn{display:none}
  .nav-toggle{padding:0 11px;gap:0}
  .nav-toggle-text{
    position:absolute;width:1px;height:1px;overflow:hidden;
    clip-path:inset(50%);white-space:nowrap;
  }
  .js .site-header nav a{padding:0 16px}
  .hero-copy{padding:48px 0 42px}
  h1{font-size:44px}
  .hero-lead{font-size:15px}
  .hero-visual{grid-template-rows:330px auto}
  .image-frame{height:330px}
  .experience-card{padding:17px 18px}
  .experience-card p{font-size:15px}
  .experience-rule{flex-basis:22px}
  .principle-grid>div,.principle-grid>div:first-child{min-height:92px;padding:12px 9px}
  .principle-grid p{font-size:12px}
  .section{padding:60px 0}
  .section-heading h2,.profile h2,.approach h2,.pricing h2,.contact h2{font-size:36px}
  .service-row{padding:21px 15px}
  .service-row h3{font-size:20px}
  .steps li{grid-template-columns:34px 1fr}
  .contact{padding:58px 0}
  .contact-form{padding:21px 16px}
  .footer-grid{grid-template-columns:1fr}
  .footer-links,.copyright{grid-column:1}
}

@media print{
  .site-header,.contact-form,.hero-visual,.skip-link{display:none}
  body{background:#fff;color:#000}
  /* Jede Flaeche mit dunklem Grund und heller Schrift gehoert hier hinein —
     Browser drucken Hintergruende standardmaessig nicht, helle Schrift waere
     sonst unsichtbar. Zwei Fehler steckten darin (zehnter Audit, 04.09.2026):
     `.beitrag-hero` und `.error-page` fehlten ganz, und die Regel griff nur auf
     die Sektion selbst — Kinder mit eigener heller Farbe (`.hero-lead`,
     `.beitrag-lead`, `.eyebrow-light`, `.steps p`, die Fusszeilentexte) blieben
     weiss auf weiss. Deshalb der Nachfahrenselektor mit `!important`: im Druck
     gibt es keine Gestaltung zu bewahren, nur Lesbarkeit. Bei einer neuen
     dunklen Sektion hier mitziehen. */
  .hero,.approach,footer,.legal-hero,.beitrag-hero,.error-page,
  .hero *,.approach *,footer *,.legal-hero *,.beitrag-hero *,.error-page *{
    background:#fff !important;color:#000 !important;border-color:#0000004d !important;
  }
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition-duration:.01ms !important;animation-duration:.01ms !important}
}

/* ==========================================================================
   Fachbeiträge — Ablaufseiten (Wohnungskauf, Zivilverfahren)
   Bewegung ist Zugabe: ohne JavaScript ist alles sichtbar, nur ohne Übergang.
   Die Klasse "js" setzt ein kurzes Inline-Skript im Kopf der Seite.
   ========================================================================== */
.beitrag-hero{background:var(--ink-deep);color:var(--white);padding:76px 0 66px;position:relative;overflow:hidden}
.beitrag-hero::before{
  content:"";position:absolute;inset:0;
  background-image:linear-gradient(#ffffff09 1px,#0000 1px),linear-gradient(90deg,#ffffff09 1px,#0000 1px);
  background-size:92px 92px;
  -webkit-mask-image:linear-gradient(90deg,#000,#0000 74%);mask-image:linear-gradient(90deg,#000,#0000 74%);
}
.beitrag-hero .shell{position:relative}
.beitrag-hero h1{max-width:17ch;margin:0 0 22px;font-size:clamp(38px,5.6vw,64px);line-height:1.04}
.beitrag-hero h1 em{color:#d4c5ad;font-style:normal}
.beitrag-lead{max-width:52ch;margin:0;font-size:17px;line-height:1.7;color:#fffefab8}

/* --- Auftakt: Schaubild auf hellem Grund ---------------------------------- */
.beitrag-auftakt{padding:54px 0 10px}
.beitrag-auftakt .schau{margin:0}

/* --- Schaubild ------------------------------------------------------------ */
.schau{position:relative;max-width:560px;background:var(--white);border:1px solid var(--line)}
.schau-kopf{
  display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;
  padding:9px 15px;border-bottom:1px solid var(--line);
  font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--muted-soft);
}
/* --- Grundbuch-Schaubild (Wohnungskauf) ----------------------------------
   Nachbau eines Auszugs aus dem Hauptbuch in Festbreitenschrift. Drei
   Zeitpunkte ueber data-phase: 0 vorher, 1 Gesuch eingebracht (Plombe),
   2 eingetragen. Im Markup steht data-phase="2": ohne JavaScript ist alles
   sichtbar, die alte Zeile durchgestrichen. Die Knoepfe gibt es nur mit JS.
   Die Schrift kommt vom System — der echte Auszug ist ebenfalls Courier. */
.gb{max-width:640px}
.gb-blatt{
  margin:0;padding:16px 16px 18px;overflow-x:auto;
  font-family:ui-monospace,"Cascadia Mono",Consolas,"Courier New",monospace;
  font-size:12.5px;line-height:1.5;color:var(--ink);white-space:pre;
  /* Schattenkante als Hinweis, dass seitlich noch etwas steht — am Telefon ist
     der Auszug breiter als der Bildschirm und wurde vorher hart abgeschnitten.
     Die beiden ersten Verlaeufe haengen am Inhalt (local) und decken die
     beiden hinteren (scroll) genau dann zu, wenn das jeweilige Ende erreicht
     ist. Passt der Auszug ganz hinein, decken beide zu und man sieht nichts. */
  background:
    linear-gradient(90deg,var(--white) 55%,#fffefa00) left center/22px 100% no-repeat local,
    linear-gradient(270deg,var(--white) 55%,#fffefa00) right center/22px 100% no-repeat local,
    linear-gradient(90deg,#17252b13,#17252b00) left center/13px 100% no-repeat scroll,
    linear-gradient(270deg,#17252b13,#17252b00) right center/13px 100% no-repeat scroll,
    var(--white);
}
.gb-stern{color:#17252b52}
.gb-tz{font-weight:700}
.gb-plombe,.gb-neu{display:grid;grid-template-rows:0fr;opacity:0}
.js .gb-plombe,.js .gb-neu{transition:grid-template-rows .45s ease,opacity .35s ease}
.gb-plombe>span,.gb-neu>span{display:block;min-height:0;overflow:hidden}
.gb[data-phase="1"] .gb-plombe{grid-template-rows:1fr;opacity:1}
.gb[data-phase="2"] .gb-neu{grid-template-rows:1fr;opacity:1}
/* Kein Farbschleier hinter dem Text und der kraeftigere Kupferton: unter der
   Schattenkante am Rand kam --copper-text auf einem #b56f4c14-Grund nur auf
   4,10:1. So sind es 4,88:1, ohne Kupfer als Bedeutungstraeger aufzugeben. */
.gb-plombe>span{
  margin-left:-11px;padding-left:8px;border-left:3px solid var(--copper);
  color:var(--copper-solid-hover);font-weight:700;
}
/* Schaltet die Uebergaenge fuer einen Frame ab, siehe sofort() in beitrag.js */
.gb-sofort .gb-plombe,.gb-sofort .gb-neu,.gb-sofort .gb-alt{transition:none}
.gb-alt{display:block;transition:color .4s ease}
.gb[data-phase="2"] .gb-alt{color:var(--muted);text-decoration:line-through;text-decoration-color:#17252b59}
.gb-phasen{display:none;margin:0;border-top:1px solid var(--line)}
.js .gb-phasen{display:flex;flex-wrap:wrap}
.gb-phasen button{
  flex:1 1 auto;min-height:44px;padding:10px 12px;border:0;background:none;cursor:pointer;
  font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--muted-soft);
  border-right:1px solid var(--line);transition:color .18s,background .18s;
}
.gb-phasen button:last-child{border-right:0}
.gb-phasen button:hover,.gb-phasen button:focus-visible{color:var(--ink)}
.gb-phasen button[aria-pressed="true"]{color:var(--copper-text);background:#b56f4c12}

/* Gabelung im Zivilverfahren */
.gabel{display:grid;border-top:1px solid var(--line)}
@media(min-width:560px){.gabel{grid-template-columns:1fr 1fr}}
.gabel div{padding:13px 15px;font-size:11px;letter-spacing:.09em;text-transform:uppercase}
.gabel div:first-child{color:#2f6b45;border-bottom:1px solid var(--line)}
@media(min-width:560px){.gabel div:first-child{border-bottom:0;border-right:1px solid var(--line)}}
.gabel div:last-child{color:var(--copper-text)}
.gabel small{display:block;margin-top:5px;font-size:13.5px;letter-spacing:0;
  text-transform:none;color:var(--muted);line-height:1.5}

.deutung{max-width:52ch;margin:24px 0 0;font-size:14.5px;line-height:1.7;color:var(--muted)}
.deutung b{color:var(--ink);font-weight:600}

/* --- Hinweis vor den Schritten -------------------------------------------- */
.frueh{background:var(--paper);border-bottom:1px solid var(--line);padding:46px 0}
.frueh h2{margin:0 0 12px;font-size:clamp(28px,3.6vw,38px);line-height:1.15;letter-spacing:-.022em}
.frueh p{max-width:56ch;margin:0;font-size:15.5px;line-height:1.75;color:var(--muted)}

/* --- Ablauf --------------------------------------------------------------- */
.ablauf{padding:76px 0 40px}
.ablauf-titel{margin:0 0 40px;font-size:clamp(26px,3.2vw,34px);line-height:1.2;letter-spacing:-.022em}
.ablauf-rail{position:relative;padding-left:46px}
.ablauf-rail::before{content:"";position:absolute;left:13px;top:8px;bottom:34px;width:1px;background:var(--line)}
.ablauf-fuell{position:absolute;left:13px;top:8px;width:1px;height:0;background:var(--copper)}
.js .ablauf-fuell{transition:height .45s linear}
.schritt{position:relative;padding:0 0 40px}
.schritt-punkt{
  position:absolute;left:-40px;top:5px;width:19px;height:19px;
  border:1px solid var(--line);background:var(--paper-light);
  display:grid;place-items:center;font-size:9.5px;color:var(--muted);
}
/* Flaeche unter der Ziffer: --copper-solid, nicht --copper. Weiss auf --copper
   ergibt nur 3,70:1, auf --copper-solid 4,56:1. Siehe CLAUDE.md, Kupfertoene. */
.schritt-punkt::after{content:"";position:absolute;inset:3px;background:var(--copper-solid);opacity:0}
.js .schritt-punkt::after{transition:opacity .35s ease}
.schritt.aktiv .schritt-punkt{border-color:var(--copper-solid)}
.schritt.aktiv .schritt-punkt::after{opacity:1}
.schritt-punkt span{position:relative;z-index:1;font-variant-numeric:tabular-nums}
.schritt.aktiv .schritt-punkt span{color:var(--white)}
.schritt h3{margin:0;font-family:var(--serif);font-size:24px;font-weight:400;line-height:1.2;letter-spacing:-.014em}
.schritt>p{margin:9px 0 0;max-width:52ch;font-size:15.5px;line-height:1.72;color:var(--muted)}
.schritt-praxis{
  margin:14px 0 0;padding:11px 0 0;border-top:1px solid var(--line);
  max-width:52ch;font-size:13.5px;line-height:1.68;color:var(--muted);
}
.schritt-praxis b{display:block;margin-bottom:4px;font-size:10.5px;font-weight:700;
  letter-spacing:.11em;text-transform:uppercase;color:var(--copper-text)}

/* Nebenweg neben der Leiste */
.nebenweg{position:relative;margin:-18px 0 34px;max-width:52ch}
.nebenweg::before{content:"";position:absolute;left:-33px;top:10px;width:24px;height:1px;background:var(--copper)}
.nebenweg span{font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--copper-text);font-weight:700}
.nebenweg p{margin:6px 0 0;font-size:14.5px;line-height:1.7;color:var(--muted)}

/* --- Treuhand-Modul ------------------------------------------------------- */
.treuhand{margin:20px 0 0;max-width:52ch;border:1px solid var(--line);background:var(--white)}
/* Als Auftakt ueber dem Ablauf: Luft nach unten zur ersten Stufe */
.treuhand-auftakt{margin:0 0 46px}
.treuhand-kopf{display:flex;align-items:center;gap:14px;padding:16px;border-bottom:1px solid var(--line)}
.schloss{flex:0 0 auto;width:30px;height:34px}
.schloss .buegel{fill:none;stroke:#2f6b45;stroke-width:3.4;stroke-linecap:round;transform-origin:9px 12px}
.js .schloss .buegel{transition:transform .45s cubic-bezier(.3,1.4,.5,1)}
.schloss .korpus{fill:#2f6b45}
.treuhand.offen .schloss .buegel{transform:rotate(-32deg) translateX(-1px)}
.treuhand-status{font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:#2f6b45;font-weight:700}
.treuhand-status small{display:block;margin-top:5px;font-size:13.5px;letter-spacing:0;
  text-transform:none;font-weight:400;color:var(--muted);line-height:1.5}
.treuhand ul{padding:6px 0}
.treuhand button{
  width:100%;display:flex;gap:12px;align-items:flex-start;text-align:left;
  background:none;border:0;cursor:pointer;padding:9px 16px;
  font-size:14px;line-height:1.5;color:var(--muted);
}
/* Umrandung des ungesetzten Kaestchens: #17252b45 kam auf 1,74:1, WCAG
   1.4.11 verlangt 3:1 fuer Bedienelemente. #17252b8c ergibt 3,59:1. */
.haken{flex:0 0 auto;width:15px;height:15px;margin-top:3px;border:1px solid #17252b8c;
  background:var(--paper-light);position:relative}
.haken::after{content:"";position:absolute;left:4px;top:1px;width:5px;height:9px;
  border:solid var(--white);border-width:0 1.8px 1.8px 0;transform:rotate(45deg) scale(0)}
.js .haken::after{transition:transform .22s cubic-bezier(.3,1.5,.5,1)}
.treuhand button[aria-pressed="true"]{color:var(--ink)}
.treuhand button[aria-pressed="true"] .haken{background:#2f6b45;border-color:#2f6b45}
.treuhand button[aria-pressed="true"] .haken::after{transform:rotate(45deg) scale(1)}
.treuhand-fuss{padding:12px 16px 15px;border-top:1px solid var(--line);
  font-size:12.5px;color:var(--muted);line-height:1.6}

/* --- Aktuelles: Übersicht und einzelner Beitrag ---------------------------- */
.aktuell{padding:76px 0 40px}
.aktuell-liste{border-top:1px solid var(--line)}
.aktuell-eintrag{padding:34px 0;border-bottom:1px solid var(--line)}
.aktuell-datum{margin:0 0 8px;font-size:11px;font-weight:700;letter-spacing:.13em;
  text-transform:uppercase;color:var(--muted-soft)}
.aktuell-eintrag h3{margin:0 0 8px;font-family:var(--serif);font-weight:400;
  font-size:22px;line-height:1.25;letter-spacing:-.012em}
.aktuell-eintrag p{margin:0;max-width:62ch;font-size:14.5px;line-height:1.72;color:var(--muted)}
.aktuell-mehr{display:inline-flex;align-items:center;gap:9px;margin-top:12px;
  font-size:13.5px;color:var(--copper-text);
  border-bottom:1px solid #a6654445;padding-bottom:2px;position:relative}
.aktuell-mehr::after{content:"";position:absolute;left:0;right:0;top:50%;
  transform:translateY(-50%);height:44px}
.aktuell-mehr:hover,.aktuell-mehr:focus-visible{border-color:var(--copper-text)}
.aktuell-leer{margin:34px 0;font-size:15px;line-height:1.7;color:var(--muted)}

/* Einzelner Beitrag: eigener Fließtext-Abschnitt, teilt sich die Bausteine
   mit den Fachbeitragsseiten (.beitrag-hero, .beitrag-fuss, .mehr-dazu). */
.artikel{padding:12px 0 20px}
.artikel .shell{max-width:720px}
.artikel p{margin:0 0 20px;font-size:16px;line-height:1.8;color:var(--ink)}
.artikel h2{margin:44px 0 16px;font-size:clamp(22px,2.8vw,28px);line-height:1.25;letter-spacing:-.016em}
.artikel .zurueck{display:inline-flex;align-items:center;gap:9px;margin-bottom:8px;font-size:13.5px;color:var(--muted-soft)}
.artikel .zurueck:hover,.artikel .zurueck:focus-visible{color:var(--copper-text)}

/* --- Abschluss ------------------------------------------------------------ */
.beitrag-ende{background:var(--paper);border-top:1px solid var(--line);padding:64px 0 72px}
.beitrag-ende h2{margin:0 0 12px;font-size:clamp(26px,3.4vw,36px);line-height:1.15;letter-spacing:-.022em}
.beitrag-ende p{max-width:54ch;margin:0;font-size:15.5px;line-height:1.75;color:var(--muted)}
.beitrag-ende .button{margin-top:26px}
.beitrag-fuss{max-width:58ch;margin:30px 0 0;font-size:12.5px;line-height:1.7;color:var(--muted-soft)}

/* Verweise auf die Beiträge von der Startseite */
.mehr-dazu{margin:34px 0 0;padding-top:24px;border-top:1px solid var(--line);
  display:flex;flex-wrap:wrap;gap:10px 30px;align-items:baseline}
.mehr-dazu>span{font-size:10.5px;font-weight:700;letter-spacing:.17em;
  text-transform:uppercase;color:var(--muted-soft)}
.mehr-dazu a{display:inline-flex;align-items:center;gap:10px;font-size:14.5px;
  border-bottom:1px solid #17252b45;padding-bottom:2px}
.mehr-dazu a:hover,.mehr-dazu a:focus-visible{border-color:var(--copper)}

@media (max-width:720px){
  .beitrag-hero{padding:56px 0 50px}
  .beitrag-hero h1{font-size:clamp(30px,8.4vw,40px)}
  .beitrag-auftakt{padding:36px 0 6px}
  .gb-blatt{padding:12px;font-size:11px}
  .gb-phasen button{font-size:10px;padding:8px 6px}
  .frueh{padding:34px 0}
  .ablauf{padding:52px 0 26px}
  .aktuell{padding:52px 0 26px}
  .aktuell-eintrag{padding:26px 0}
  .artikel p{font-size:15px}
  .ablauf-rail{padding-left:34px}
  .ablauf-rail::before,.ablauf-fuell{left:8px}
  .schritt-punkt{left:-31px;width:17px;height:17px}
  .schritt h3{font-size:21px}
  .schritt>p{font-size:15px}
  .nebenweg::before{left:-26px;width:18px}
  .beitrag-ende{padding:48px 0 56px}
  .mehr-dazu{flex-direction:column;gap:12px}
}

/* Die Schattenkante ist bewusst blass — kraeftiger ginge auf Kosten des
   Textkontrasts darunter. Den Hinweis "hier geht es seitlich weiter" traegt
   deshalb ein dauerhaft sichtbarer, schmaler Rollbalken. Erst ab hier: bis
   etwa 513 px passt der Auszug ganz hinein, darueber waere es eine tote Spur.
   `scroll` statt `auto`, damit der Hinweis auch dann steht, wenn gerade nicht
   gerollt wird — auf Systemen mit Overlay-Rollbalken kostet das nichts. */
@media (max-width:512px){
  .gb-blatt{overflow-x:scroll;
    scrollbar-width:thin;scrollbar-color:#17252b52 #17252b0f}
  .gb-blatt::-webkit-scrollbar{height:6px}
  .gb-blatt::-webkit-scrollbar-track{background:#17252b0f}
  .gb-blatt::-webkit-scrollbar-thumb{background:#17252b52;border-radius:3px}
}

@media (prefers-reduced-motion:reduce){
  .gb-plombe,.gb-neu,.gb-alt{transition:none}
}
