@charset "utf-8";
/* ==========================================================================
   Naturheilpraxis Klettner — Stylesheet
   Farben und Typografie abgeleitet aus den Druckdateien (Briefpapier,
   Patientenfragebogen, Rezeptpapier, Rechnungen), Dezember 2024 / Januar 2025.
   Petrol #354547 und Grün #73CD89 stammen exakt aus den PDF-Druckdaten.
   ========================================================================== */

/* --- Schriften (lokal gehostet, keine Verbindung zu Fremdservern) --------- */

@font-face {
  font-family: "Barlow";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/barlow-400-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Barlow";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/barlow-400-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Barlow";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/barlow-500-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Barlow";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/barlow-500-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Barlow";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/barlow-600-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Barlow";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/barlow-600-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Barlow";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/barlow-700-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Barlow";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/barlow-700-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Newsreader";
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url("../fonts/newsreader-var-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Newsreader";
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url("../fonts/newsreader-var-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Newsreader";
  font-style: italic;
  font-weight: 200 800;
  font-display: swap;
  src: url("../fonts/newsreader-var-italic-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Newsreader";
  font-style: italic;
  font-weight: 200 800;
  font-display: swap;
  src: url("../fonts/newsreader-var-italic-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* --- Tokens --------------------------------------------------------------- */

:root {
  /* Aus den Druckdaten */
  --petrol:      #354547;
  --green:       #73cd89;
  --mint:        #e3f5e3;

  /* Abgeleitet */
  --petrol-deep: #232f31;
  --petrol-soft: #4b5c5e;
  --green-ink:   #2f7b4e;   /* 5,2:1 auf Weiß, 4,5:1 auf Mint — für Text und Links */
  --mint-line:   #c6e4cc;
  --paper:       #ffffff;
  --paper-off:   #f6faf6;
  --rule:        #dce5e3;
  --ink:         #253133;
  --ink-soft:    #5b6a6b;

  --sans: "Barlow", "Helvetica Neue", Arial, sans-serif;
  --serif: "Newsreader", Georgia, "Times New Roman", serif;

  --measure: 39rem;          /* ~66 Zeichen */
  --gutter: clamp(1.25rem, 5vw, 3.5rem);
  --shell: 60rem;

  --eyebrow: 600 0.75rem/1.2 var(--sans);
  --track: 0.16em;
}

/* --- Reset ---------------------------------------------------------------- */

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

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: 2rem;
}

body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font: 400 1.1875rem/1.68 var(--serif);
  font-synthesis-weight: none;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

img, svg { max-width: 100%; }
img { height: auto; border: 0; }

h1, h2, h3, h4, h5, h6 { margin: 0; font-weight: 600; }
p, ul, ol, figure, table, blockquote { margin: 0; }

a { color: var(--green-ink); text-decoration-thickness: 1px; text-underline-offset: 0.18em; }
a:hover { color: var(--petrol); }

:focus-visible {
  outline: 2px solid var(--green-ink);
  outline-offset: 3px;
  border-radius: 2px;
}

::selection { background: var(--mint); color: var(--petrol); }

/* --- Hilfsklassen --------------------------------------------------------- */

.shell {
  width: 100%;
  max-width: var(--shell);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

/* Ein Satzspiegel für alle Seiten. Nur einzelne Blöcke brechen bewusst aus —
   etwa die dreispaltige Wirbeltabelle. */
.shell--wide { max-width: 76rem; }

/* ==========================================================================
   Ergänzungen gegenüber der statischen Fassung

   Diese Datei ist die einzige Quelle der Gestaltung, und sie ist eine Kopie
   von statisch/assets/css/site.css. Jede Abweichung steht hier, jede mit
   Begründung. Es sind zwei Sorten:

   1. Der Satzspiegel (gleich unten). WordPress baut das Seitengerüst anders
      als die statische Vorlage.

   2. Klassenbasierte Entsprechungen zu Elementselektoren (weiter unten, je
      an ihrer Regel). site.css hängt an einigen Stellen an dt/dd/li/span —
      Elementen, die kein Kernblock erzeugt. Diese Stellen mussten deshalb
      als `core/html` stehenbleiben, und dort sieht die Praxis rohes HTML
      statt Text. Neben jeden dieser Elementselektoren tritt eine Klasse mit
      demselben Aussehen. Was der Konverter daraus baut, sind gewöhnliche
      Gruppen und Absätze: bearbeitbar, und weil `add_editor_style()` diese
      Datei lädt, im Editor genauso anzusehen wie auf der Seite.

      Die Elementselektoren bleiben stehen. Die statische Fassung unter
      statisch/ ist weiterhin die Vorlage und wird nicht angefasst.
   ========================================================================== */

/* Ergänzung 1 — der Satzspiegel:

   Statisch stehen .shell und .shell--wide als Geschwister nebeneinander, jedes
   Kapitel bringt seine Breite selbst mit. Unter WordPress umschließt page.php
   den gesamten Inhalt mit .shell. Das ist Absicht: Nur so landet auch das im
   Satzspiegel, was die Praxis später selbst in den Editor tippt — sonst liefe
   jeder neue Absatz randlos über die volle Fensterbreite.

   Damit steht .shell--wide nun *innerhalb* von .shell und muss ausbrechen
   statt danebenzustehen. left/transform zentriert unabhängig von der
   Elternbreite; min() verhindert, dass die Fläche auf schmalen Schirmen über
   den Rand hinausläuft.

   Der Selektor ist bewusst nicht auf `.shell >` festgelegt: Die breite Fläche
   kann auch tiefer liegen, etwa innerhalb von `.prose`, das der Konverter um
   den Fließtext legt. */
   Zur Breite: Das ausbrechende Element traegt `shell shell--wide`, hat also
   selbst `padding-inline: var(--gutter)`. Der Steg wird davon schon abgezogen —
   hier stand einmal zusaetzlich `- 2 * var(--gutter)`, und damit war die
   „breite" Flaeche unterhalb von 1328 px SCHMALER als der Fliesstext daneben:
   bei 700 px 560 statt 630. Gemessen an allen Breiten, `min(76rem, 100vw)`
   trifft die statischen Werte exakt (380→340, 700→630, 1400→1104). */
.shell .shell--wide {
  width: min(76rem, 100vw);
  max-width: none;
  position: relative;
  left: 50%;
  transform: translateX(-50%);
}

.visually-hidden {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

.skip-link {
  position: absolute;
  top: 0; left: 50%;
  transform: translate(-50%, -110%);
  z-index: 200;
  padding: 0.7rem 1.4rem;
  background: var(--petrol);
  color: #fff;
  font: 600 0.875rem/1 var(--sans);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: none;
}
.skip-link:focus { transform: translate(-50%, 0); color: #fff; }

.eyebrow {
  display: block;
  font: var(--eyebrow);
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: var(--green-ink);
}

/* --- Kopf: aufgebaut wie der Briefbogen ----------------------------------- */

.masthead {
  position: relative;
  z-index: 60;
  background: var(--paper);
  border-bottom: 1px solid var(--rule);
}

.masthead__inner {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 2rem;
  padding-block: clamp(1.25rem, 3vw, 2.25rem) 0;
}

.brand { display: inline-flex; text-decoration: none; }
.brand img { display: block; width: clamp(11rem, 22vw, 15.5rem); height: auto; }

.masthead__aside {
  display: none;
  padding-bottom: 0.5rem;
  text-align: right;
  font: 500 1.0625rem/1.35 var(--sans);
  color: var(--petrol);
  font-variant-numeric: tabular-nums;
}
.masthead__aside b {
  display: block;
  margin-bottom: 0.2rem;
  font-weight: 600;
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: var(--green-ink);
  font-size: 0.6875rem;
}
.masthead__aside a { color: inherit; text-decoration: none; }
.masthead__aside a:hover { color: var(--petrol); text-decoration: underline; }

@media (min-width: 60rem) { .masthead__aside { display: block; } }

/* --- Navigation ----------------------------------------------------------- */

.nav { border-top: 1px solid var(--rule); margin-top: clamp(1rem, 2.5vw, 1.75rem); }

.nav__toggle {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  width: 100%;
  padding: 0.9rem 0;
  background: none;
  border: 0;
  color: var(--petrol);
  font: 600 0.8125rem/1 var(--sans);
  letter-spacing: var(--track);
  text-transform: uppercase;
  cursor: pointer;
}
.nav__toggle svg { flex: none; }
.nav__toggle[hidden] { display: none; }
.nav__toggle[aria-expanded="true"] .nav__burger-open,
.nav__toggle[aria-expanded="false"] .nav__burger-close { display: none; }

.nav__list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.nav__link {
  display: block;
  padding: 0.7rem 0;
  color: var(--petrol);
  font: 600 0.8125rem/1.2 var(--sans);
  letter-spacing: var(--track);
  text-transform: uppercase;
  text-decoration: none;
}
.nav__link:hover { color: var(--green-ink); }
.nav__link[aria-current="page"] { color: var(--green-ink); }

.nav__sub {
  list-style: none;
  margin: 0 0 0.4rem;
  padding: 0 0 0.2rem 1.1rem;
  border-left: 2px solid var(--mint-line);
}
.nav__sub a {
  display: block;
  padding: 0.45rem 0;
  color: var(--ink-soft);
  font: 500 0.9375rem/1.3 var(--sans);
  text-decoration: none;
  letter-spacing: 0.01em;
}
.nav__sub a:hover { color: var(--green-ink); }
.nav__sub a[aria-current="page"] { color: var(--green-ink); font-weight: 600; }

/* mobil: Panel. Ohne JavaScript bleibt es dauerhaft offen, damit die Seite
   auch dann navigierbar ist — der Umschalter wird dann gar nicht erst
   eingeblendet (er trägt bis dahin das hidden-Attribut). */
@media (max-width: 59.999rem) {
  .nav__panel {
    padding-bottom: 1.25rem;
    border-top: 1px solid var(--rule);
  }
  html:not(.no-js) .nav__panel { display: none; }
  html:not(.no-js) .nav__panel.is-open { display: block; }
  .nav__item + .nav__item { border-top: 1px solid var(--rule); }
}

/* Desktop: waagerechte Leiste mit Klappmenüs */
@media (min-width: 60rem) {
  .nav__toggle { display: none; }
  .nav__panel { display: block !important; }
  .nav__list { display: flex; gap: clamp(1.25rem, 3.2vw, 2.75rem); }
  .nav__item { position: relative; }
  .nav__link { padding: 1.05rem 0; }

  .nav__item--has-sub > .nav__link::after {
    content: "";
    display: inline-block;
    width: 0.32em; height: 0.32em;
    margin-left: 0.55em;
    vertical-align: 0.18em;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg) translate(-0.08em, -0.08em);
  }

  .nav__sub {
    position: absolute;
    top: 100%;
    left: -1.15rem;
    z-index: 40;
    min-width: 15.5rem;
    margin: 0;
    padding: 0.55rem 0;
    background: var(--paper);
    border: 1px solid var(--rule);
    border-top: 2px solid var(--green);
    box-shadow: 0 18px 40px -22px rgba(35, 47, 49, 0.5);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-4px);
    transition: opacity 0.16s ease, transform 0.16s ease, visibility 0.16s;
  }
  .nav__item:hover > .nav__sub,
  .nav__item:focus-within > .nav__sub {
    opacity: 1;
    visibility: visible;
    transform: none;
  }
  .nav__sub a { padding: 0.5rem 1.15rem; font-size: 0.9375rem; }
  .nav__sub a:hover { background: var(--mint); }
}

/* --- Buttons -------------------------------------------------------------- */

.btn {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.85rem 1.5rem;
  background: var(--petrol);
  color: #fff;
  font: 600 0.8125rem/1 var(--sans);
  letter-spacing: var(--track);
  text-transform: uppercase;
  text-decoration: none;
  border: 1px solid var(--petrol);
  transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease;
}
.btn:hover { background: var(--petrol-deep); border-color: var(--petrol-deep); color: #fff; }

.btn--ghost { background: none; color: var(--petrol); border-color: var(--rule); }
.btn--ghost:hover { background: var(--mint); border-color: var(--mint-line); color: var(--petrol); }

/* --- Startseite --------------------------------------------------------------
   Der Auftakt zitiert den Briefbogen: gesperrte Versalien wie im Signet, dann
   ein langes ruhiges Feld, dann der Angabenblock mit gesperrten Marginalien.
   ---------------------------------------------------------------------------- */

.opener { padding-block: clamp(3.5rem, 9vw, 7rem) clamp(2.5rem, 5vw, 4rem); }

.opener__claim {
  margin: 1.75rem 0 0;
  max-width: 16ch;
  font-family: var(--sans);
  font-weight: 600;
  font-size: clamp(2rem, 5.6vw, 3.75rem);
  line-height: 1.06;
  letter-spacing: 0.055em;
  text-transform: uppercase;
  color: var(--petrol);
}

.opener__greeting {
  max-width: 34rem;
  margin-top: clamp(1.75rem, 3vw, 2.5rem);
  font-size: clamp(1.1875rem, 1.9vw, 1.4375rem);
  line-height: 1.55;
  color: var(--ink);
}

/* Angabenblock — Marginalie oben, Wert darunter, wie im Briefkopf */
.ledger {
  display: grid;
  gap: 2rem clamp(2rem, 5vw, 4.5rem);
  margin-top: clamp(2.5rem, 5vw, 4rem);
  padding-top: 1.5rem;
  border-top: 1px solid var(--petrol);
}
@media (min-width: 40rem) { .ledger { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 62rem) { .ledger { grid-template-columns: 1.25fr 1.15fr 0.85fr; } }

/* Ergänzung 2c — der Angabenblock als Gruppen und Absätze.

   Hier stehen Telefonnummer, Telefonzeiten und Anschrift der Praxis: die
   Angaben, die sich am ehesten ändern. Statisch hängen sie an dt/dd, und
   dafür gibt es keinen Kernblock — der ganze Block musste deshalb HTML
   bleiben. Neben jeden dt/dd-Selektor tritt darum eine Klasse:

     <dt>                    →  <p class="ledger__term">
     <dd>                    →  <p class="ledger__value">
     <dd class="ledger__…">  →  <p class="ledger__value ledger__…">
     <dd><div class="ledger__hours">
                             →  <div class="ledger__value ledger__hours">
     <b> in den Zeiten       →  <p class="ledger__day">

   Jede Klasse steht genau eine Klasse höher als ihr Elementselektor. Damit
   bleibt die Reihenfolge der Regeln untereinander dieselbe: `ledger__aside`
   sticht `ledger__value`, so wie `dd.ledger__aside` das `dd` sticht.

   Was dabei verloren geht, steht in docs/uebergabe-nicht-frei-bearbeitbar.md:
   die Beschreibungslisten-Semantik von dl/dt/dd. */
.ledger dt,
.ledger .ledger__term {
  font: 600 0.6875rem/1 var(--sans);
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: var(--green-ink);
}
.ledger dd,
.ledger .ledger__value {
  margin: 0.8rem 0 0;
  font: 400 1rem/1.65 var(--sans);
  color: var(--petrol);
  font-variant-numeric: tabular-nums;
}
.ledger dd a,
.ledger .ledger__value a { color: inherit; text-decoration-color: var(--mint-line); }
.ledger dd a:hover,
.ledger .ledger__value a:hover { text-decoration-color: currentColor; }

.ledger dd.ledger__phone,
.ledger .ledger__value.ledger__phone {
  font-size: clamp(1.5rem, 3.4vw, 2rem);
  font-weight: 500;
  letter-spacing: -0.01em;
  line-height: 1.1;
}
.ledger__phone a { text-decoration: none; }
.ledger__phone a:hover { text-decoration: underline; text-underline-offset: 0.14em; }

.ledger dd.ledger__aside,
.ledger .ledger__value.ledger__aside {
  margin-top: 0.55rem;
  font-size: 0.875rem;
  line-height: 1.5;
  color: var(--ink-soft);
}

.ledger__hours { display: grid; grid-template-columns: 2.4rem auto; gap: 0.3rem 0.5rem; }
.ledger__hours b,
.ledger__hours .ledger__day { font-weight: 600; color: var(--green-ink); }

/* --- Bildtafel: sitzt bündig zur Textkante und läuft rechts aus dem Satz --- */

.plate { margin-block: clamp(2.5rem, 6vw, 5rem); }
.plate img {
  display: block;
  width: 100%;
  height: clamp(11rem, 26vw, 19rem);
  object-fit: cover;
  object-position: 62% 55%;
  filter: saturate(0.6) brightness(0.9) contrast(0.95);
}
@media (min-width: 62rem) {
  .plate { margin-right: calc(50% - 50vw); }
}

/* --- Inhaltsverzeichnis wie im Praxisprospekt ------------------------------ */

.index { border-top: 1px solid var(--petrol); }

.index__row {
  display: grid;
  gap: 0.9rem clamp(1.5rem, 5vw, 4rem);
  padding-block: clamp(1.5rem, 3vw, 2.25rem);
  border-bottom: 1px solid var(--rule);
}
@media (min-width: 46rem) { .index__row { grid-template-columns: 14rem minmax(0, 1fr); } }

.index__topic {
  font: 600 0.75rem/1.4 var(--sans);
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: var(--green-ink);
}

/* Ergänzung 2d — das Inhaltsverzeichnis als Gruppen und Absätze.

   Jeder Eintrag ist statisch ein <li> aus einem <a> UND einem <span>.
   `core/list-item` speichert nur Fließtext und verwirft den <span> beim
   Sichern; das Verzeichnis musste deshalb HTML bleiben. Aus jedem Eintrag
   werden darum zwei Absätze:

     <li><a>Titel</a><span>Anreißer</span></li>
       →  <p class="index__title"><a>Titel</a></p>
          <p class="index__teaser">Anreißer</p>

   `.index__links a` greift unverändert — der <a> bleibt ein Nachfahre.

   Der Abstand zwischen zwei Einträgen hing an `li + li`. Zwischen Absätzen
   liegt jetzt ein Anreißer, `+` trägt also nicht mehr. `:not(:first-child)`
   trifft dieselben Elemente: jeden Titel außer dem ersten. Und es trägt auch
   dann, wenn die Praxis einen Eintrag ohne Anreißer anlegt.

   `.index` selbst ist rein klassenbasiert. Den <nav>-Landmark stellt
   inc/block-styles.php beim Ausliefern wieder her. */
.index__links { list-style: none; margin: 0; padding: 0; }
.index__links li + li,
.index__links .index__title:not(:first-child) { margin-top: 0.9rem; }
.index__links a {
  font-family: var(--sans);
  font-size: 1.1875rem;
  font-weight: 500;
  color: var(--petrol);
  text-decoration: none;
  text-underline-offset: 0.2em;
}
.index__links a:hover { color: var(--green-ink); text-decoration: underline; }
.index__links span,
.index__links .index__teaser {
  display: block;
  margin-top: 0.2rem;
  max-width: 46ch;
  font-size: 1rem;
  line-height: 1.5;
  color: var(--ink-soft);
}

/* --- Abschnitte ----------------------------------------------------------- */

.section { padding-block: clamp(2.75rem, 6vw, 4.5rem); }
.section + .section { padding-top: 0; }
.section--tint {
  margin-top: clamp(3rem, 7vw, 6rem);
  padding-block: clamp(3rem, 7vw, 5rem);
  background: var(--paper-off);
  border-block: 1px solid var(--rule);
}
.section--tint + .section { padding-top: clamp(2.75rem, 6vw, 4.5rem); }

.section__head { max-width: 41rem; }
.section__head h2 {
  font-family: var(--sans);
  font-size: clamp(1.625rem, 3.2vw, 2.125rem);
  line-height: 1.14;
  letter-spacing: -0.008em;
  color: var(--petrol);
}
.section__head .eyebrow + h2 { margin-top: 0.9rem; }
.section__head p { margin-top: 1.1rem; color: var(--ink); }

/* --- Die beiden Heilpraktiker: Bild und Namenszug wie in der Fußzeile ----- */

.signatures {
  display: grid;
  gap: clamp(2rem, 5vw, 3.5rem);
  margin-top: clamp(2rem, 4vw, 2.75rem);
}
@media (min-width: 40rem) { .signatures { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 44rem; } }

.signature img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  object-position: center 22%;
}
.signature h3 {
  margin-top: 1.1rem;
  font: 600 0.8125rem/1.3 var(--sans);
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: var(--green-ink);
}
.signature p {
  margin-top: 0.35rem;
  font-size: 1.0625rem;
  color: var(--petrol);
}

/* --- Seitenkopf der Inhaltsseiten ----------------------------------------- */

.pagehead {
  padding-block: clamp(2.5rem, 6vw, 4.5rem) clamp(1.75rem, 4vw, 2.75rem);
  border-bottom: 1px solid var(--rule);
}
.pagehead h1 {
  margin-top: 1rem;
  max-width: 22ch;
  font-family: var(--sans);
  font-size: clamp(2.125rem, 5.2vw, 3.375rem);
  line-height: 1.05;
  letter-spacing: -0.015em;
  color: var(--petrol);
  text-wrap: balance;
}
.pagehead__lead {
  margin-top: 1.35rem;
  max-width: var(--measure);
  font-size: 1.25rem;
  line-height: 1.6;
  color: var(--ink-soft);
}

.breadcrumb {
  font: 500 0.8125rem/1.5 var(--sans);
  letter-spacing: 0.04em;
  color: var(--ink-soft);
}
.breadcrumb ol { list-style: none; display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0; padding: 0; }
.breadcrumb li + li::before { content: "·"; margin-right: 0.5rem; color: var(--green); }
.breadcrumb a { color: inherit; text-decoration: none; }
.breadcrumb a:hover { color: var(--green-ink); text-decoration: underline; }

/* --- Fließtext ------------------------------------------------------------ */

.article { padding-block: clamp(2.5rem, 6vw, 4.5rem) clamp(3rem, 7vw, 5rem); }

.prose { max-width: var(--measure); }
.prose > * + * { margin-top: 1.35rem; }

.prose h2 {
  margin-top: 3.5rem;
  font-family: var(--sans);
  font-size: clamp(1.5rem, 3vw, 1.875rem);
  line-height: 1.2;
  letter-spacing: -0.005em;
  color: var(--petrol);
}
.prose h3 {
  margin-top: 2.5rem;
  font-family: var(--sans);
  font-size: 1.25rem;
  letter-spacing: 0.005em;
  color: var(--petrol);
}

.prose strong, .prose b { font-weight: 650; color: var(--petrol); }
.prose em, .prose i { font-style: italic; }

.prose ul, .prose ol { padding-left: 1.35rem; }
.prose li + li { margin-top: 0.6rem; }
.prose ul { list-style: none; padding-left: 0; }
.prose ul > li { position: relative; padding-left: 1.5rem; }
.prose ul > li::before {
  content: "";
  position: absolute;
  left: 0.15rem; top: 0.68em;
  width: 0.375rem; height: 0.375rem;
  border-radius: 50%;
  background: var(--green);
}
.prose ol { list-style: decimal; }
.prose ol::marker { font-family: var(--sans); }

.prose blockquote {
  padding: 0.2rem 0 0.2rem 1.5rem;
  border-left: 2px solid var(--green);
  font-size: 1.25rem;
  font-style: italic;
  color: var(--petrol);
}
.prose blockquote > * + * { margin-top: 0.95rem; }
.prose blockquote cite {
  display: block;
  margin-top: 0.7rem;
  font: 600 0.75rem/1 var(--sans);
  font-style: normal;
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: var(--green-ink);
}

.prose hr {
  height: 0; margin-block: 2.75rem;
  border: 0; border-top: 1px solid var(--rule);
}

.lead { font-size: 1.3125rem; line-height: 1.55; color: var(--petrol); }

/* Abbildungen */
.figure { margin-block: 2.5rem; }
.figure img { display: block; }
.figure figcaption {
  margin-top: 0.75rem;
  /* Der WordPress-Kern setzt `.wp-block-image :where(figcaption)
     { margin-bottom: 1em }`. Statisch gibt es diesen Abstand nicht — gemessen
     wuchs die seitliche Abbildung auf palmer.html dadurch von 270 auf 283 px,
     es floss eine Zeile mehr um sie herum, und die Seite wurde 31 px laenger.
     `:where()` hat Spezifitaet null, diese Zeile genuegt also. */
  margin-bottom: 0;
  font: 500 0.8125rem/1.55 var(--sans);
  color: var(--ink-soft);
}
.figure--wide { max-width: none; }
.figure--wide img { width: 100%; }
.figure--inline { max-width: 20rem; }
.figure--frame img { padding: 0.75rem; background: var(--paper-off); border: 1px solid var(--rule); }

.figure--side img { padding: 0.7rem; background: var(--paper-off); border: 1px solid var(--rule); }

@media (min-width: 62rem) {
  .figure--side {
    float: right;
    max-width: 15rem;
    margin: 0.4rem -7rem 1.75rem 2.25rem;
  }
  .figure--side.figure--left { float: left; margin: 0.4rem 2.25rem 1.75rem -7rem; }
}

/* Merkkasten */
.callout {
  padding: clamp(1.35rem, 3vw, 1.85rem);
  background: var(--mint);
  border-left: 3px solid var(--green);
}
.callout p { font-size: 1.0625rem; }
.callout > * + * { margin-top: 0.9rem; }
/* Ergänzung 2a — die Kleinzeile als Absatz.

   Statisch ist sie ein <span>, und dafür gibt es keinen Kernblock. Als
   <p class="callout__label"> wäre sie ein gewöhnlicher Absatz — aber gemessen
   NICHT gleich aussehend: `.callout p` (0-1-1) schlägt `.callout__label`
   (0-1-0), die Zeile käme in 17 statt 12 Pixeln und mit 2,72 statt 1,92 Pixel
   Laufweite. Der zweite Selektor hebt sie über `.callout p` (0-2-1) und stellt
   die gemessenen Werte des <span> wieder her. */
.callout__label,
.callout p.callout__label {
  display: block;
  font: var(--eyebrow);
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: var(--petrol);
}

/* Ergänzung 2b — die Lesebreite des Hinweiskastens der Startseite.

   Statisch steht sie als style="max-width:41rem" am Kasten. theme.json
   schaltet die Maßfelder bewusst ab, ein Kernblock kann den Wert also nicht
   tragen; der ganze Kasten musste deshalb HTML bleiben. Als Klasse steht der
   Wert dort, wo Gestaltung hingehört — und der Kasten wird ein Gruppenblock.

   Gemessen: ohne den Wert wächst er bei 1400 px von 656 auf 848 Pixel, die
   Zeile von rund 66 auf rund 86 Zeichen. Das ist jenseits der Lesebreite, für
   die diese Seite sonst überall gebaut ist. */
.callout--schmal { max-width: 41rem; }

.callout--dark { background: var(--petrol); border-left-color: var(--green); color: rgba(255,255,255,0.9); }
.callout--dark .callout__label { color: var(--green); }
.callout--dark strong { color: #fff; }

/* Signatur unter Texten */
.signoff {
  margin-top: 2.5rem;
  font-size: 1.1875rem;
  font-style: italic;
  color: var(--petrol);
}

/* --- Tabellen ------------------------------------------------------------- */

.table-wrap { overflow-x: auto; margin-block: 2rem; -webkit-overflow-scrolling: touch; }

.datatable {
  width: 100%;
  min-width: 34rem;
  border-collapse: collapse;
  font-family: var(--sans);
  font-size: 0.9375rem;
  line-height: 1.5;
}
.datatable caption {
  margin-bottom: 0.9rem;
  text-align: left;
  font: var(--eyebrow);
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: var(--green-ink);
}
.datatable th, .datatable td {
  padding: 0.7rem 0.9rem;
  text-align: left;
  vertical-align: top;
}
.datatable thead th {
  background: var(--petrol);
  color: #fff;
  font-weight: 600;
  font-size: 0.75rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  white-space: nowrap;
}
.datatable tbody tr:nth-child(even) { background: var(--mint); }
.datatable tbody th { font-weight: 600; color: var(--petrol); white-space: nowrap; }
.datatable tbody td { color: var(--ink); }
.datatable tbody tr.is-active { background: var(--green); }
.datatable tbody tr.is-active th, .datatable tbody tr.is-active td { color: var(--petrol); }

.table-hint {
  margin-top: 0.75rem;
  font: 500 0.8125rem/1.5 var(--sans);
  color: var(--ink-soft);
}

/* Definitionsliste (Lexikon) */
.deflist { border-top: 1px solid var(--rule); }
.deflist > div {
  display: grid;
  gap: 0.35rem 1.5rem;
  padding-block: 1.15rem;
  border-bottom: 1px solid var(--rule);
}
@media (min-width: 44rem) {
  .deflist > div { grid-template-columns: 12rem minmax(0, 1fr); }
}
.deflist dt {
  font: 600 0.9375rem/1.5 var(--sans);
  letter-spacing: 0.02em;
  color: var(--petrol);
}
.deflist dd { margin: 0; font-size: 1.0625rem; line-height: 1.6; }
.deflist dd > * + * { margin-top: 0.7rem; }

.minitable {
  border-collapse: collapse;
  font-family: var(--sans);
  font-size: 0.9375rem;
}
.minitable td { padding: 0.3rem 1.5rem 0.3rem 0; vertical-align: top; }
.minitable tr + tr td { border-top: 1px solid var(--rule); }
.minitable td:first-child { color: var(--petrol); font-weight: 500; }

/* --- Wirbelsäulen-Navigator (Signaturelement) ----------------------------- */

.spine {
  display: grid;
  gap: clamp(1.75rem, 4vw, 3rem);
  align-items: start;
  margin-block: clamp(2rem, 4vw, 3rem);
}
@media (min-width: 56rem) {
  .spine {
    grid-template-columns: minmax(12rem, 15rem) minmax(0, 34rem);
    justify-content: start;
  }
}

.spine__stage {
  display: flex;
  justify-content: center;
  padding: 1.25rem;
  background: var(--paper-off);
  border: 1px solid var(--rule);
}
.spine__svg { display: block; width: 100%; max-width: 13rem; height: auto; }

.spine__cord { fill: none; stroke: var(--mint-line); stroke-width: 2; }

.spine__zone text {
  font: 600 9px/1 var(--sans);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  fill: var(--ink-soft);
}
.spine__zone line { stroke: rgba(53, 69, 71, 0.28); stroke-width: 1; }

.vertebra { cursor: pointer; }
.vertebra__hit { fill: transparent; stroke: none; }
.vertebra__dot {
  fill: var(--green);
  stroke: var(--paper-off);
  stroke-width: 1.5;
  pointer-events: none;
  transition: fill 0.16s ease;
}
.vertebra:hover .vertebra__dot { fill: var(--green-ink); }
.vertebra.is-active .vertebra__dot { fill: var(--petrol); }
.vertebra:focus { outline: none; }
.vertebra:focus-visible .vertebra__dot { stroke: var(--petrol); stroke-width: 2.5; }
.vertebra text {
  font-family: var(--sans);
  font-weight: 600;
  fill: var(--petrol);
  text-anchor: middle;
  dominant-baseline: central;
  pointer-events: none;
  letter-spacing: 0.02em;
}
.vertebra:hover text, .vertebra.is-active text { fill: #fff; }

.spine__readout {
  position: sticky;
  top: 2rem;
  padding: clamp(1.35rem, 3vw, 1.85rem);
  background: var(--mint);
  border-top: 3px solid var(--green);
}
.spine__code {
  font: 600 0.75rem/1 var(--sans);
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: var(--green-ink);
}
.spine__name {
  margin-top: 0.85rem;
  font-family: var(--sans);
  font-size: clamp(1.35rem, 3vw, 1.75rem);
  line-height: 1.15;
  color: var(--petrol);
}
.spine__dl { margin-top: 1.35rem; }
.spine__dl dt {
  font: 600 0.6875rem/1 var(--sans);
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: var(--petrol-soft);
}
.spine__dl dd { margin: 0.45rem 0 0; font-size: 1.0625rem; line-height: 1.55; color: var(--ink); }
.spine__dl dd + dt { margin-top: 1.15rem; }
.spine__hint {
  margin-top: 1.35rem;
  padding-top: 1.1rem;
  border-top: 1px solid var(--mint-line);
  font: 500 0.8125rem/1.55 var(--sans);
  color: var(--petrol-soft);
}

/* Ohne JavaScript bleibt der Navigator verborgen — die Tabelle trägt alles. */
.no-js .spine { display: none; }

/* Auszug aus der Wirbeltabelle auf der Startseite */

.excerpt { margin-top: clamp(1.75rem, 3.5vw, 2.5rem); border-top: 1px solid var(--petrol); }
.excerpt__row {
  display: grid;
  gap: 0.35rem 1.5rem;
  padding-block: 1.1rem;
  border-bottom: 1px solid var(--rule);
  font-family: var(--sans);
}
@media (min-width: 44rem) {
  .excerpt__row { grid-template-columns: 10rem minmax(0, 1fr) minmax(0, 1fr); align-items: baseline; }
}
.excerpt__vertebra {
  font-weight: 600;
  font-size: 0.8125rem;
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: var(--green-ink);
}
.excerpt__organ { font-size: 1rem; color: var(--petrol); }
.excerpt__effect { font-size: 1rem; color: var(--ink-soft); }
.excerpt__more { margin-top: 1.5rem; }
.excerpt__more a {
  font: 600 0.8125rem/1 var(--sans);
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: var(--green-ink);
  text-decoration: none;
}
.excerpt__more a:hover { color: var(--petrol); text-decoration: underline; text-underline-offset: 0.35em; }

/* --- Telefonzeiten: gleiche Sprache wie der Angabenblock der Startseite ---- */

.hours { margin-top: 2rem; padding-top: 1.25rem; border-top: 1px solid var(--petrol); }
.hours h2 {
  font: 600 0.6875rem/1 var(--sans);
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: var(--green-ink);
}
.hours p { margin-top: 0.9rem; font-size: 1rem; line-height: 1.6; }

.hours__table {
  margin-top: 1.1rem;
  border-collapse: collapse;
  font: 400 1rem/1.6 var(--sans);
  font-variant-numeric: tabular-nums;
}
.hours__table th {
  padding: 0.3rem 1.25rem 0.3rem 0;
  text-align: left;
  font-weight: 600;
  color: var(--green-ink);
  vertical-align: top;
  white-space: nowrap;
}
.hours__table td { padding: 0.3rem 0; color: var(--petrol); vertical-align: top; }

.hours__note {
  margin-top: 1.1rem;
  font: 400 0.875rem/1.55 var(--sans);
  color: var(--ink-soft);
}


/* --- Kontaktseite --------------------------------------------------------- */

.contact-grid { display: grid; gap: clamp(2rem, 5vw, 3.5rem); }
@media (min-width: 56rem) { .contact-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }

.contact-block > * + * { margin-top: 1.75rem; }
.contact-block h2 {
  font: var(--eyebrow);
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: var(--green-ink);
}
.contact-block address {
  font-style: normal;
  font-size: 1.1875rem;
  line-height: 1.7;
}
.contact-block address strong { font-weight: 600; color: var(--petrol); }

.deflines {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 0.5rem 1.25rem;
  font: 500 1rem/1.6 var(--sans);
}
.deflines dt {
  font-weight: 600;
  font-size: 0.75rem;
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: var(--green-ink);
  padding-top: 0.28em;
}
.deflines dd { margin: 0; color: var(--petrol); }

/* Karte mit Zwei-Klick-Lösung */
.map {
  position: relative;
  aspect-ratio: 4 / 3;
  background: var(--mint);
  border: 1px solid var(--mint-line);
}
.map iframe { display: block; width: 100%; height: 100%; border: 0; }
.map__consent {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 1rem;
  padding: clamp(1.5rem, 4vw, 2.5rem);
  text-align: left;
}
.map__consent p { font-size: 1rem; line-height: 1.6; color: var(--petrol); }
.map__consent .btn { align-self: flex-start; }

/* --- Fußbereich: gesetzt wie der Fuß des Briefbogens ---------------------- */

.footer {
  padding-block: clamp(3rem, 6vw, 4.5rem) 2rem;
  background: var(--petrol-deep);
  color: rgba(255, 255, 255, 0.76);
  font-family: var(--sans);
  font-size: 0.9375rem;
  line-height: 1.7;
}
.footer a { color: rgba(255, 255, 255, 0.76); text-decoration: none; }
.footer a:hover { color: var(--green); text-decoration: underline; }

.footer__grid { display: grid; gap: clamp(2rem, 5vw, 3rem); }
@media (min-width: 44rem) { .footer__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 68rem) { .footer__grid { grid-template-columns: 1.3fr 1fr 1fr; } }

.footer h2 {
  margin-bottom: 1rem;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: var(--green);
}
.footer address { font-style: normal; }
.footer strong { color: #fff; font-weight: 600; }
.footer ul { list-style: none; margin: 0; padding: 0; }
.footer li + li { margin-top: 0.4rem; }

.footer__mark { display: block; width: 8.5rem; margin-bottom: 1.5rem; }
.footer__mark img { display: block; width: 100%; filter: brightness(0) invert(1); opacity: 0.9; }

.footer__bdc { margin-top: 1.5rem; }
.footer__bdc img { width: 8rem; height: auto; background: #fff; padding: 0.5rem; }

.footer__legal {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem 1.75rem;
  align-items: center;
  justify-content: space-between;
  margin-top: clamp(2.5rem, 5vw, 3.5rem);
  padding-top: 1.5rem;
  border-top: 1px solid rgba(255, 255, 255, 0.14);
  font-size: 0.8125rem;
  color: rgba(255, 255, 255, 0.55);
}
.footer__legal ul { display: flex; flex-wrap: wrap; gap: 1.5rem; }
.footer__legal li + li { margin-top: 0; }

/* --- Weiterlesen ---------------------------------------------------------- */

.pager {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem 3rem;
  justify-content: space-between;
  margin-top: clamp(3rem, 6vw, 4.5rem);
  padding-top: 1.25rem;
  border-top: 1px solid var(--petrol);
}
.pager a { text-decoration: none; }
.pager span {
  display: block;
  font: 600 0.6875rem/1 var(--sans);
  letter-spacing: var(--track);
  text-transform: uppercase;
  color: var(--green-ink);
}
.pager b {
  display: block;
  margin-top: 0.5rem;
  font: 500 1.0625rem/1.35 var(--sans);
  color: var(--petrol);
}
.pager a:hover b { color: var(--green-ink); text-decoration: underline; text-underline-offset: 0.2em; }
.pager a:last-child:nth-child(2) { text-align: right; }

/* --- Rechtstexte ---------------------------------------------------------- */

.legal { font-size: 1.0625rem; line-height: 1.65; }
.legal h2 { font-size: clamp(1.375rem, 2.6vw, 1.625rem); margin-top: 2.75rem; }
.legal h3 { font-size: 1.125rem; margin-top: 2rem; }
.legal h4 { margin-top: 1.5rem; font-family: var(--sans); font-size: 1rem; color: var(--petrol); }
.legal > * + * { margin-top: 1.1rem; }

/* --- Drucken -------------------------------------------------------------- */

@media print {
  .masthead, .footer, .pager, .plate, .spine, .skip-link, .map { display: none !important; }
  body { font-size: 11pt; color: #000; }
  .article, .pagehead { padding-block: 0; }
  a { color: #000; text-decoration: none; }
  .datatable thead th { background: none; color: #000; border-bottom: 1.5pt solid #000; }
  .prose { max-width: none; }
}

/* --- Bewegung reduzieren -------------------------------------------------- */

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