/* Stilvergnügen — Gestaltung und selbst gehostete Schriften.
   Keine Verbindung zu Google beim Seitenaufruf. */

@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/SourceSans3-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: 'Source Sans 3';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/SourceSans3-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: 'Source Sans 3';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('../fonts/SourceSans3-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: 'Source Sans 3';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('../fonts/SourceSans3-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: 'Source Sans 3';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/SourceSans3-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: 'Source Sans 3';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/SourceSans3-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;
}

:root{
    --ink:#004b65;          /* Markenblau – Überschriften & Text */
    --ink-soft:#3d6a7d;     /* abgesetzter Fließtext */
    --ink-faint:#54707d;    /* Labels, Meta */
    --violett:#9e52d5;   /* Hauptaktion, 4,54:1 auf Weiß */
    --rose:#d2719e;         /* Markenrosé – Buttons */
    --rose-deep:#cf3173;    /* Akzent, Hover */
    --teal:#309fa4;          /* dekorativ */
    --teal-aktion:#278286;   /* Zweitaktion, 4,54:1 auf Weiß */ --teal-text:#25797e;         /* Sekundärakzent */
    --teal-pale:#6fb3bf;
    --paper:#ffffff;
    --paper-warm:#f7f5f3;   /* leicht rosé gebrochenes Neutral */
    --paper-cool:#eef3f4;   /* leicht teal gebrochenes Neutral */
    --line:#dde5e8;
    --shadow:0 1px 2px rgba(0,75,101,.05), 0 8px 24px rgba(0,75,101,.06);
    --maxw:1120px;
    --serif:"Source Sans 3", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
    --sans:"Source Sans 3", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
  }

*{box-sizing:border-box;}

/* Der Kopf bleibt beim Scrollen oben stehen. Ohne diesen Abstand landen
   Sprungziele (#leistungen, #preise, #kontakt …) dahinter, und die Kundin
   sieht mitten in einen Absatz statt auf die Überschrift.
   Kopfhöhe gemessen: 95 px breit, 161 px schmal — plus etwas Luft. */
html{scroll-padding-top:112px;}

/* Sanft zum Ziel gleiten statt hart dorthin springen — beim Klick auf „Über mich",
   „Preise", „Kontakt" und die anderen Ankerlinks im Menü.

   Nur, wenn im Betriebssystem nichts dagegen spricht: Wer „Bewegung reduzieren"
   eingeschaltet hat, tut das meist aus gutem Grund — animiertes Scrollen löst bei
   manchen Menschen Schwindel oder Übelkeit aus. Für die bleibt es beim Sprung. */
@media (prefers-reduced-motion: no-preference){
  html{scroll-behavior:smooth;}
}

body{
    margin:0; background:var(--paper); color:var(--ink);
    font-family:var(--sans); font-size:17px; line-height:1.62;
    font-weight:400; -webkit-font-smoothing:antialiased;
  }

.wrap{max-width:var(--maxw); margin-inline:auto; padding-inline:24px;}

h1,h2,h3{font-family:var(--serif); font-weight:400; color:var(--ink); text-wrap:balance; margin:0;}

h1{font-size:clamp(2.6rem,6vw,4.1rem); line-height:1.06; letter-spacing:-.015em;}

h2{font-size:clamp(1.9rem,3.6vw,2.7rem); line-height:1.15;}

h3{font-size:1.3rem; line-height:1.3;}

p{margin:0;}

a{color:inherit;}

img{max-width:100%; height:auto; display:block;}

.eyebrow{
    font-family:var(--sans); font-size:.72rem; font-weight:700;
    letter-spacing:.14em; text-transform:uppercase; color:var(--ink);
  }

.lede{font-size:1.12rem; color:var(--ink-soft);}
.lede p + p{margin-top:.9em;}

.measure{max-width:62ch;}

.btn{
    /* inline-flex statt inline-block: min-height streckt die Fläche auf die
       44 px Tippziel, der Text säße sonst oberhalb der Mitte. */
    display:inline-flex; align-items:center; justify-content:center;
    text-align:center;
    font-family:var(--sans); font-size:.875rem; font-weight:600;
    text-transform:uppercase; letter-spacing:.107em;
    padding:1em 2em; border-radius:9999px; border:1.5px solid transparent;
    text-decoration:none; cursor:pointer; min-height:44px;
    transition:background .18s, color .18s, border-color .18s;
  }

.btn-primary{background:var(--violett); color:#fff;}

.btn-primary:hover{background:#8a42c0;}

.btn-ghost{background:var(--teal-aktion); color:#fff; border-color:transparent;}

.btn-ghost:hover{background:#1f6b6e;}

/* Fokusring in zwei Ringen — siehe die ausführliche Begründung weiter unten
   bei der allgemeinen :focus-visible-Regel. */
a:focus-visible,button:focus-visible{outline:2.5px solid var(--rose-deep); outline-offset:3px; border-radius:4px; box-shadow:0 0 0 3px #fff;}

header.site{
    position:sticky; top:0; z-index:20; background:rgba(255,255,255,.93);
    backdrop-filter:blur(10px); border-bottom:1px solid var(--line);
  }

header.site .wrap{display:flex; align-items:center; gap:24px; padding-block:14px;}

.brand{display:flex; align-items:center; gap:11px; text-decoration:none; margin-right:auto;}

/* Breite stand früher als style-Attribut im Markup; von dort hierher
   geholt, damit schmale Geräte sie überschreiben können. */
.brand img{width:132px; height:auto;}

.brand-name{font-family:var(--serif); font-size:1.42rem; line-height:1; color:var(--ink);}

.brand-name i{font-style:italic; font-size:.82em; color:var(--ink-soft);}

nav.main{display:flex; gap:26px; align-items:center;}

nav.main a{
    font-size:.93rem; text-decoration:none; color:var(--ink-soft);
    padding-block:4px; border-bottom:1.5px solid transparent; transition:color .15s, border-color .15s;
  }

nav.main a:hover{color:var(--ink); border-bottom-color:var(--rose);}

.hero{padding-block:clamp(48px,7vw,86px);}

.hero .wrap{display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(32px,5vw,64px); align-items:center;}

.hero-sub{font-family:var(--serif); font-style:italic; font-size:1.5rem; color:var(--teal); margin-top:.55em;}

.hero p.lede{margin-top:1.1em;}

.hero-cta{display:flex; flex-wrap:wrap; gap:12px; margin-top:2em;}

.hero-figure{position:relative;}

.hero-figure img{border-radius:4px 96px 4px 4px; box-shadow:var(--shadow);}

.hero-stamp{
    position:absolute; left:-14px; bottom:26px; background:var(--paper);
    border:1px solid var(--line); border-left:4px solid var(--rose);
    padding:.7em 1.1em; box-shadow:var(--shadow); max-width:14em;
    font-size:.86rem; color:var(--ink-soft); line-height:1.45;
  }

.hero-stamp b{color:var(--ink); font-weight:600;}

section{padding-block:clamp(52px,7vw,88px);}

.band-warm{background:var(--paper-warm);}

.band-cool{background:var(--paper-cool);}

.band-ink{background:var(--ink); color:#fff;}

.band-ink h2,.band-ink h3{color:#fff;}

.sec-head{max-width:60ch; margin-bottom:2.6em;}

.sec-head h2{margin-top:.3em;}

.sec-head p{margin-top:.85em; color:var(--ink-soft);}

.about{display:grid; grid-template-columns:.82fr 1.18fr; gap:clamp(28px,5vw,58px); align-items:start;}

.about img{border-radius:3px; box-shadow:var(--shadow);}

.credential{
    display:inline-block; margin-top:1.4em; padding:.3em .9em;
    background:var(--paper-cool); border-radius:2em;
    font-size:.82rem; font-weight:600; color:var(--teal); letter-spacing:.02em;
  }

blockquote.pull{
    margin:1.5em 0 0; padding-left:1.3em; border-left:2px solid var(--rose);
    font-family:var(--serif); font-size:1.28rem; font-style:italic;
    line-height:1.5; color:var(--ink-soft);
  }

.pillars{
    display:grid; grid-template-columns:repeat(4,1fr); gap:20px;
    margin-top:3.2em; border-top:1px solid var(--line); padding-top:2em;
  }

.pillar h3{font-size:1.05rem; font-family:var(--sans); font-weight:700; letter-spacing:.01em;}

.pillar p{font-size:.94rem; color:var(--ink-soft); margin-top:.3em;}

.services{display:grid; grid-template-columns:repeat(2,1fr); gap:1px; background:var(--line); border:1px solid var(--line);}

.service{background:var(--paper); padding:clamp(24px,3vw,34px);}

.service-n{
    font-family:var(--serif); font-size:2.5rem; line-height:1;
    color:var(--rose); display:block; margin-bottom:.18em;
  }

.service h3{margin-bottom:.5em;}

.service > p{color:var(--ink-soft); font-size:.97rem;}

.service ul{list-style:none; margin:1.2em 0 0; padding:0; display:flex; flex-direction:column; gap:.42em;}

.service li{font-size:.92rem; color:var(--ink-soft); padding-left:1.15em; position:relative;}

.service li::before{content:"—"; position:absolute; left:0; color:var(--teal-pale);}

.service li b{color:var(--ink); font-weight:600;}

.price-grid{display:grid; grid-template-columns:1fr 1fr; gap:clamp(24px,4vw,48px); align-items:center;}

.price-cards{display:grid; grid-template-columns:1fr 1fr; gap:16px;}

.price-card{
    background:var(--paper); border:1px solid var(--line); border-radius:3px;
    padding:1.5em 1.4em; box-shadow:var(--shadow);
  }

.price-card .label{font-size:.78rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-faint);}

.price-card .amount{font-family:var(--serif); font-size:2.9rem; line-height:1; color:var(--ink); margin:.22em 0 .1em;}

.price-card .amount span{font-size:.9rem; font-family:var(--sans); color:var(--ink-faint); letter-spacing:.04em;}

.price-card p{font-size:.9rem; color:var(--ink-soft);}

.trust{list-style:none; margin:1.8em 0 0; padding:0; display:flex; flex-direction:column; gap:.75em;}

.trust li{display:flex; gap:.7em; align-items:flex-start; font-size:1rem;}

.trust svg{flex:none; margin-top:.32em;}

.trust b{font-weight:600;}

.trust span{color:var(--ink-soft);}

/* Punkte auf der Gutscheinseite: wie der Einleitungstext, nur mit Zeichen davor.
   Eigene Klasse, weil .trust kleiner setzt und ein Haken-SVG je Zeile erwartet. */
.punkteliste{list-style:none; margin:1.3em 0 0; padding:0;
    display:flex; flex-direction:column; gap:.55em; max-width:46ch;}
.punkteliste li{font-size:1.12rem; color:var(--ink-soft);
    padding-left:1.15em; position:relative;}
.punkteliste li::before{content:"\2022"; position:absolute; left:0;
    color:var(--rose-deep); font-weight:700;}

.faq{display:grid; grid-template-columns:repeat(2,1fr); gap:0 clamp(28px,5vw,56px);}

.faq details{border-bottom:1px solid var(--line); padding:1.05em 0;}

.faq summary{
    font-family:var(--serif); font-size:1.18rem; color:var(--ink);
    cursor:pointer; list-style:none; display:flex; gap:.8em; align-items:baseline;
  }

.faq summary::-webkit-details-marker{display:none;}

.faq summary::after{
    content:"+"; margin-left:auto; color:var(--rose); font-family:var(--sans);
    font-size:1.3rem; line-height:1; transition:transform .2s;
  }

.faq details[open] summary::after{content:"−";}

.faq details p{margin-top:.7em; color:var(--ink-soft); font-size:.98rem; max-width:54ch;}

.aktion{display:grid; grid-template-columns:1fr 1fr; gap:clamp(28px,5vw,60px); align-items:center;}

.aktion img{border-radius:3px; box-shadow:var(--shadow);}

.aktion .eyebrow{color:var(--rose);}

.aktion ul{list-style:none; padding:0; margin:1.5em 0 0; display:flex; flex-direction:column; gap:.5em;}

.aktion li{padding-left:1.5em; position:relative; color:var(--ink-soft); font-size:.98rem;}

/* Der Aktionsabschnitt war ursprünglich für eine helle Fläche gebaut und steht
   inzwischen auf dem pinken Band. Dort kam der dunkelblaue Fließtext auf
   1,16:1 und das türkise Häkchen war praktisch unsichtbar. Beides jetzt weiß.
   Das Band ist derzeit abgeschaltet (Aktionaktiv: false) — damit es beim
   Einschalten nicht erst auffällt, steht die Korrektur schon hier. */
.band-pink .aktion li{color:#fff;}
.band-pink .aktion li::before{color:#fff;}
.band-pink .aktion .eyebrow{color:#fff;}

.aktion li::before{content:"✓"; position:absolute; left:0; color:var(--teal); font-weight:700;}

.voices{display:grid; grid-template-columns:repeat(4,1fr); gap:22px;}

.voice{display:flex; flex-direction:column; gap:.9em;}

.voice p{font-size:.95rem; line-height:1.58; color:rgba(255,255,255,.85);}

.voice .who{
    font-size:.76rem; font-weight:700; letter-spacing:.18em; text-transform:uppercase;
    color:#f0a9c8; margin-top:auto; padding-top:.4em;
  }

.voice .quotemark{font-family:var(--serif); font-size:2.6rem; line-height:.6; color:var(--rose); height:.6em;}

.voices-foot{
    margin-top:2.6em; padding-top:1.6em; border-top:1px solid rgba(255,255,255,.18);
    display:flex; flex-wrap:wrap; gap:14px 26px; align-items:center; justify-content:space-between;
  }

.voices-foot p{color:rgba(255,255,255,.78); font-size:.95rem;}

.btn-onink{border-color:rgba(255,255,255,.5); color:#fff;}

.btn-onink:hover{background:#fff; color:var(--ink); border-color:#fff;}

.ebook{display:grid; grid-template-columns:.9fr 1.1fr; gap:clamp(28px,5vw,58px); align-items:center;}

.ebook img{border-radius:3px; box-shadow:var(--shadow);}

.ebook ul{list-style:none; padding:0; margin:1.4em 0 0; display:grid; gap:.45em;}

/* Auf dem türkisen Grund kommt das übliche Dunkelblau nur auf 1,84:1 — die
   vier Punkte waren praktisch unlesbar. Weiß wie die Absätze daneben.
   Gemessen am 11.10.2026. */
.ebook li{padding-left:1.5em; position:relative; font-size:.97rem; color:#fff;}

/* Der Haken in Rosé erreichte 1,01:1, war also gar nicht zu sehen. */
.ebook li::before{content:"✓"; position:absolute; left:0; color:#fff; font-weight:700;}

form.signup{display:flex; flex-wrap:wrap; gap:10px; margin-top:1.8em;}

form.signup input[type="text"], form.signup input[type="email"]{
    flex:1 1 190px; min-width:0; padding:.8em 1em; font-family:var(--sans); font-size:1rem;
    border:1px solid var(--line); border-radius:3px; background:var(--paper); color:var(--ink);
  }

form.signup input:focus{outline:2px solid var(--rose); outline-offset:0; border-color:transparent;}

/* Das Datenschutz-Häkchen steht im Formular, braucht aber eine eigene Zeile.
   Auf dem türkisen Band muss es weiß sein — das sonst übliche Dunkelblau
   käme dort nur auf 1,9:1 Kontrast und wäre nicht zu lesen. */
.feld-check-breit{flex:1 1 100%; margin-top:.2em;}
.band-tuerkis .feld-check-breit label{color:#fff; font-size:.9rem;}
.band-tuerkis .feld-check-breit label a{color:#fff; text-decoration-thickness:1px; text-underline-offset:2px;}
.band-tuerkis .feld-check-breit input{accent-color:var(--violett, #9e52d5);}

.fineprint{font-size:.82rem; color:var(--ink-faint); margin-top:1em; max-width:52ch;}

.contact{display:grid; grid-template-columns:1fr 1fr; gap:clamp(28px,5vw,58px);}

.contact-list{list-style:none; padding:0; margin:1.6em 0 0; display:flex; flex-direction:column; gap:1.05em;}

.contact-list li{display:flex; gap:.85em; align-items:flex-start;}

.contact-list .k{font-size:.74rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-faint); display:block;}

.contact-list a{color:var(--ink); text-decoration:none; border-bottom:1px solid var(--rose);}

.contact-list a:hover{color:var(--rose-deep);}

.form-card{background:var(--paper); border:1px solid var(--line); border-radius:3px; padding:clamp(22px,3vw,32px); box-shadow:var(--shadow);}

.field{display:flex; flex-direction:column; gap:.35em; margin-bottom:1em;}

.field label{font-size:.8rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-faint);}

.field input,.field textarea,.field select{
    padding:.75em .95em; font-family:var(--sans); font-size:1rem; color:var(--ink);
    border:1px solid var(--line); border-radius:3px; background:var(--paper); width:100%;
  }

.field textarea{min-height:120px; resize:vertical;}

.field input:focus,.field textarea:focus,.field select:focus{outline:2px solid var(--rose); outline-offset:0; border-color:transparent;}

footer.site{background:var(--ink); color:rgba(255,255,255,.8); padding-block:48px 32px; font-size:.93rem;}

footer.site .cols{display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:32px;}

footer.site h4{
    font-family:var(--sans); font-size:.74rem; font-weight:700; letter-spacing:.18em;
    text-transform:uppercase; color:#f0a9c8; margin:0 0 1em;
  }

footer.site a{color:rgba(255,255,255,.8); text-decoration:none;}

footer.site a:hover{color:#fff; text-decoration:underline; text-underline-offset:3px;}

footer.site ul{list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:.5em;}

.foot-brand{font-family:var(--serif); font-size:1.6rem; color:#fff; line-height:1;}

.foot-brand i{font-style:italic; font-size:.8em; color:rgba(255,255,255,.7);}

.foot-bottom{
    margin-top:34px; padding-top:18px; border-top:1px solid rgba(255,255,255,.15);
    display:flex; flex-wrap:wrap; gap:10px 22px; justify-content:space-between;
    font-size:.84rem; color:rgba(255,255,255,.6);
  }

.proto-note{
    background:#fff8e6; border-bottom:1px solid #e8d9ae; color:#6b5320;
    font-size:.86rem; padding-block:.7em;
  }

.proto-note .wrap{display:flex; gap:.7em; align-items:flex-start;}

.proto-note b{color:#4a3814;}

/* Der Fokusring besteht aus zwei Ringen, innen weiß, außen das Markenrosé.
   Grund: Rosé #cf3173 ist auf hellen Flächen gut sichtbar (4,84:1 auf Weiß),
   auf den farbigen Bändern, den Servicekarten und im Fuß kommt es aber nur
   auf 1,07–1,98:1 — dort wäre der Ring praktisch unsichtbar. Weiß deckt
   genau diese Fälle (4,5–9,6:1) und verschwindet dafür auf hellem Grund.
   So ist auf jeder Fläche mindestens einer der beiden Ringe deutlich zu
   sehen. Gefordert sind 3:1 (WCAG 1.4.11, Kontrast von Bedienelementen). */
:focus-visible{outline:2.5px solid var(--rose-deep); outline-offset:3px; border-radius:4px; box-shadow:0 0 0 3px #fff;}

/* Das Broschürencover trägt einen eigenen Schlagschatten. Ohne diese Regel
   würde ihn der Fokusring überschreiben und das Bild beim Antabben flach
   wirken. */
.broschuere-bild:focus-visible{box-shadow:0 0 0 3px #fff, 0 1px 2px rgba(0,60,82,.10), 0 18px 34px -10px rgba(0,60,82,.34);}

.ctas{display:flex; flex-wrap:wrap; gap:12px; margin-top:1.9em;}

.brand-mark{width:34px; height:34px; border-radius:6px; background:var(--ink); color:#fff;
    display:grid; place-items:center; font-family:var(--serif); font-size:1.15rem;}

.crumb{padding-block:14px; font-size:.84rem; color:var(--ink-faint); border-bottom:1px solid var(--line);}

.crumb a{color:var(--ink-soft); text-decoration:none;}

.crumb a:hover{text-decoration:underline; text-underline-offset:3px;}

.crumb b{color:var(--ink); font-weight:600;}

.band-ink h2{color:#fff;}

.lead-grid{display:grid; grid-template-columns:1.1fr .9fr; gap:clamp(28px,5vw,56px); align-items:center;}

.lead-grid img{border-radius:4px 80px 4px 4px; box-shadow:var(--shadow);}

.facts{display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line);
    border:1px solid var(--line); border-radius:4px; overflow:hidden; margin-top:2.4em;}

.fact{background:var(--paper); padding:15px 17px;}

.fact .k{font-size:.68rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-faint);}

.fact .v{font-family:var(--serif); font-size:1.3rem; color:var(--ink); line-height:1.2; margin-top:.15em;}

.fact .s{font-size:.83rem; color:var(--ink-soft);}

.two{display:grid; grid-template-columns:1fr 1fr; gap:clamp(26px,4.5vw,52px);}

.where{display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-top:1.9em;}

.where-card{background:var(--paper); border:1px solid var(--line); border-radius:4px; padding:18px 19px; box-shadow:var(--shadow);}

.where-card .tag{display:inline-block; font-size:.66rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
    /* Nicht var(--teal): der helle Tuerkiston kam auf dem hellen Grund nur auf
       2,83:1. Dieser Ton liegt bei rund 5,9:1. */
    padding:.25em .75em; border-radius:2em; background:var(--paper-cool); color:#1f666b; margin-bottom:.75em;}

/* Wie beim tuerkisen Etikett: der Grundton kam auf dem hellen Rosa nur auf
   4,37:1. Dieser Ton liegt bei rund 5,9:1. */
.where-card .tag.hier{background:#fdf0f6; color:#ad2760;}

.where-card h3{margin-bottom:.35em;}

.where-card p{font-size:.94rem; color:var(--ink-soft);}

.steps{list-style:none; padding:0; margin:1.5em 0 0; display:flex; flex-direction:column; gap:1.15em;}

.steps li{display:flex; gap:.95em;}

.steps .n{flex:none; width:26px; height:26px; border-radius:50%; background:var(--teal); color:#fff;
    display:grid; place-items:center; font-size:.82rem; font-weight:700; margin-top:.15em;}

.steps b{display:block; font-weight:600;}

.steps span{font-size:.95rem; color:var(--ink-soft);}

.svc{list-style:none; padding:0; margin:1.4em 0 0; display:flex; flex-direction:column; gap:.6em;}

.svc li{padding-left:1.5em; position:relative; color:var(--ink-soft); font-size:.97rem;}

.svc li::before{content:"✓"; position:absolute; left:0; color:var(--teal); font-weight:700;}

.svc b{color:var(--ink); font-weight:600;}



.faq-cols{display:grid; grid-template-columns:1fr 1fr; gap:0 clamp(26px,5vw,52px);}

.voice .qm{font-family:var(--serif); font-size:3rem; line-height:.5; color:var(--rose); display:block; margin-bottom:.35em;}

.places{display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-top:1.6em;}

.place{display:block; background:var(--paper); border:1px solid var(--line); border-radius:4px;
    padding:14px 16px; text-decoration:none; transition:border-color .15s, transform .15s;}

.place:hover{border-color:var(--rose); transform:translateY(-2px);}

.place .n{font-family:var(--serif); font-size:1.2rem; color:var(--ink); display:block;}

.place .r{font-size:.82rem; color:var(--ink-faint);}

.place[aria-current="page"]{border-color:var(--rose); background:#fdf3f7;}

.cta-box{background:var(--paper); border:1px solid var(--line); border-left:4px solid var(--rose);
    border-radius:3px; padding:clamp(22px,3vw,32px); box-shadow:var(--shadow);}

footer.site .wrap{display:flex; flex-wrap:wrap; gap:14px 26px; justify-content:space-between;}

@media (max-width:900px){
  .voices{grid-template-columns:repeat(2,1fr);}
}

@media (max-width:860px){
  /* nav.main wird NICHT mehr hier versteckt, sondern im Menüknopf-Block
     weiter unten ab 960 px — eine Schwelle, eine Stelle. */
  .about{grid-template-columns:1fr;}
  .pillars{grid-template-columns:repeat(2,1fr);}
  .price-grid{grid-template-columns:1fr;}
  .lead-grid{grid-template-columns:1fr;}
}

@media (max-width:820px){
  .hero .wrap{grid-template-columns:1fr;}
  .hero-figure{order:-1;}
  .hero-stamp{left:auto; right:12px;}
  .two{grid-template-columns:1fr;}
}

@media (max-width:760px){
  .services{grid-template-columns:1fr;}
  .faq{grid-template-columns:1fr;}
  .aktion{grid-template-columns:1fr;}
  .ebook{grid-template-columns:1fr;}
  .contact{grid-template-columns:1fr;}
  footer.site .cols{grid-template-columns:1fr 1fr;}
  .facts{grid-template-columns:repeat(2,1fr);}
  .where{grid-template-columns:1fr;}
  .faq-cols{grid-template-columns:1fr;}
  .places{grid-template-columns:repeat(2,1fr);}
}

@media (max-width:520px){
  .pillars{grid-template-columns:1fr;}
  .voices{grid-template-columns:1fr;}
}

@media (max-width:480px){
  footer.site .cols{grid-template-columns:1fr;}
}

@media (max-width:440px){
  .price-cards{grid-template-columns:1fr;}
}

@media (prefers-reduced-motion:reduce){
  *{animation:none !important; transition:none !important;}
  .btn:hover{transform:none;}
}


/* ===== Barrierefreiheit und Bedienung auf dem Handy ===== */

/* Tippziele: WCAG 2.2 AA verlangt 24x24 px, Hauptaktionen bekommen 44 px */
footer.site a{display:inline-block; padding-block:.32em;}
.contact-list a{display:inline-block; padding-block:.2em;}
.faq summary{padding-block:.3em;}
.btn{min-height:44px;}

/* Fuß-Zwischenüberschriften als Absatz — vermeidet den Sprung von h2 auf h4 */
footer.site .foot-head{
  font-family:var(--sans); font-size:.74rem; font-weight:700; letter-spacing:.18em;
  text-transform:uppercase; color:#f0a9c8; margin:0 0 1em;
}

.nav-toggle{display:none;}

/* Ab hier klappt das Menü hinter den Menüknopf. Die Schwelle lag bis zum
   26.10.2026 bei 860 px; dort brach die Menüleiste auf Tablets im Querformat
   und kleinen Laptops aber schon auf zwei Zeilen um, und der Kopf wurde 105
   statt 73 px hoch. Gemessen: einzeilig passt die Leiste ab rund 950 px, also
   ist 960 der sichere Wert.

   Nur dieser Block wandert mit. Die Gitter weiter oben (.about, .pillars,
   .price-grid, .lead-grid) bleiben bei 860 px — sie haben mit dem Kopf
   nichts zu tun. */
@media (max-width:960px){
  /* Logo, Buchungsknopf und Menüknopf bleiben in EINER Zeile — sonst
     rutscht der Knopf darunter und der mitlaufende Kopf wird 161 statt
     95 px hoch, also rund ein Fünftel des Handybildschirms. Dafür ist der
     Knopf hier kleiner gesetzt; die 44 px Tippfläche bleiben erhalten. */
  header.site .wrap > .btn{
    margin-left:0;
    font-size:.75rem; letter-spacing:.07em; padding:.6em 1.15em;
  }
  .nav-toggle{
    display:flex; flex-direction:column; justify-content:center; gap:5px;
    /* margin-left bleibt 0: .brand schiebt mit margin-right:auto bereits
       alles nach rechts, Knopf und Menü stehen dann beieinander. */
    width:44px; height:44px; padding:0 10px;
    background:transparent; border:1px solid var(--line); border-radius:6px; cursor:pointer;
  }
  .nav-toggle span{display:block; height:2px; background:var(--ink); border-radius:2px; transition:transform .2s, opacity .2s;}
  .nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg);}
  .nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0;}
  .nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}
  header.site .wrap{flex-wrap:wrap; gap:12px;}
  /* Höhe der klebenden Kopfzeile. Der Kopfbereich der Startseite rechnet
     damit seine Bildschirmhöhe aus — siehe .hero-federn weiter unten. */
  :root{--kopf-h:95px;}
  nav.main{
    display:none; order:4; flex-basis:100%; flex-direction:column; gap:0;
    border-top:1px solid var(--line); padding-top:6px;
  }
  /* Im Querformat ist der Bildschirm nur rund 375 px hoch; das offene Menue
     wurde 440 px lang, und "Kontakt" und "Gutschein" lagen darunter, ohne
     Scrollmoeglichkeit. Deshalb begrenzt und scrollbar. */
  nav.main.offen{display:flex; max-height:calc(100dvh - 130px); overflow-y:auto;}
  /* Volle Zeilenbreite als Tippflaeche — sonst reagiert nur das Wort selbst,
     und "Preise" blieb mit 41 px unter den geforderten 44 px. */
  nav.main{align-items:stretch;}
  nav.main a{
    padding-block:.7em; border-bottom:1px solid var(--line);
    font-size:1rem; min-height:44px; display:flex; align-items:center;
  }
  nav.main a:last-child{border-bottom:none;}
}

/* Unter 400 px reichen 132 px Logo plus Knopf plus Menü nicht mehr
   nebeneinander — der Menüknopf fiele in die zweite Zeile und der Kopf
   würde wieder 151 px hoch. Deshalb beides etwas kleiner. */
@media (max-width:400px){
  .brand img{width:104px;}
  header.site .wrap > .btn{font-size:.7rem; letter-spacing:.05em; padding:.55em .85em;}
  header.site .wrap{gap:8px;}
  /* Der kleinere Knopf drückt die Kopfzeile auf 81px. */
  :root{--kopf-h:81px;}
}

/* Sehr schmale Geräte: alles einspaltig, nichts darf überlaufen */
@media (max-width:420px){
  .price-grid, .contact, .two, .about, .aktion, .ebook, .lead-grid{grid-template-columns:1fr !important;}
  .price-cards, .pillars, .where, .places, .voices, .faq, .faq-cols, .services{grid-template-columns:1fr !important;}
  .facts{grid-template-columns:1fr 1fr !important;}
  .wrap{padding-inline:18px;}
}

/* Rechtstexte */
/* Lange Rechtsbegriffe ("Verbraucherstreitbeilegung/Universalschlichtungsstelle")
   und ausgeschriebene URLs sprengten auf dem Handy die Breite — die Seite liess
   sich dann seitlich wegschieben. */
.rechtstext{overflow-wrap:anywhere;}
/* Die Grundgroesse der h1 (bis 4,1rem) ist fuer das Wort "Datenschutzerklaerung"
   auf 320 px zu gross. */
.rechtstext-seite h1{font-size:clamp(1.9rem,8vw,3.2rem);}
.rechtstext h2{font-size:1.35rem; margin:1.8em 0 .5em;}
.rechtstext h3{font-size:1.1rem; margin:1.4em 0 .4em;}
.rechtstext p{margin-bottom:.9em; color:var(--ink-soft);}
.rechtstext ul{margin:0 0 1em 1.2em; padding:0; color:var(--ink-soft);}
.rechtstext li{margin-bottom:.35em;}
.rechtstext a{color:var(--ink); text-decoration:underline; text-underline-offset:3px;}

/* Rückweg — steht unter dem Kopfbereich auf jeder Seite außer der Startseite.
   Je nach Herkunft erscheint ein Zurück-Knopf oder, wer aus dem eTermin-
   Buchungsformular kommt, der Hinweis dass die Buchung nebenan weiterläuft.
   Beides blendet das Skript in site/snippets/rueckweg.php ein; ohne
   JavaScript bleibt die Leiste verborgen. */
/* Gesetzt wie die Brotkrumen — gleiche Größe, gleiche Farbe, keine Pille.
   Als Rahmen-Knopf nahm er eine eigene Zeile ein und wirkte wie ein
   Fremdkörper über der Seite; Stefan fand die Seite davor eleganter. */
.rueckweg{border-bottom:1px solid var(--line);}
/* Folgen Brotkrumen, teilen sich beide eine Linie statt zwei Streifen
   übereinander zu bilden. Der allgemeine Geschwister-Selektor (~), nicht der
   direkte (+): Zwischen beiden steht das <script> des Snippets. */
.rueckweg:has(~ .crumb){border-bottom:0; padding-bottom:0;}
.rueckweg-knopf{
  display:inline-flex; align-items:center; gap:.45em;
  font:inherit; font-size:.84rem; color:var(--ink-soft); text-decoration:none;
  background:none; border:0; cursor:pointer;
  /* Die Tippfläche bleibt 44px hoch — Daumengröße —, obwohl die Schrift
     klein ist. Das Polster trägt der Link selbst, nicht die Leiste. */
  padding:13px 0; min-height:44px; box-sizing:border-box;
}
.rueckweg-knopf::before{content:"\2190"; font-size:1.05em; line-height:1;}
.rueckweg-knopf:hover{color:var(--ink); text-decoration:underline; text-underline-offset:3px;}
.rueckweg-knopf:focus-visible{outline:2px solid var(--ink); outline-offset:2px;}
.rueckweg-hinweis{
  margin:0; padding:.85em 1.1em; border-radius:10px;
  background:#f1f7f7; border-left:3px solid var(--teal);
  color:var(--ink); font-size:.95rem; line-height:1.45; max-width:52ch;
}





/* ============================================================
   Farbflächen nach Vorbild der Live-Seite
   Aufbau dort: Grundfarbe + Streifenbild + halbtransparente Deckschicht
   ============================================================ */

.band-lila, .band-pink, .band-tuerkis{position:relative; color:#fff; overflow:hidden;}
.band-lila > *, .band-pink > *, .band-tuerkis > *{position:relative; z-index:2;}
.band-lila::before, .band-pink::before, .band-tuerkis::before{
  content:""; position:absolute; inset:0; z-index:1;
}

/* „Über mich" — Violett mit Streifen */
.band-lila{background:#4c4a81 url('../../img/live-3.jpg') center/cover;}
.band-lila::before{background:rgba(110,103,143,.4);}

/* „Aktion" — Violett mit Streifen, magentafarbene Deckschicht.
   Deckschicht von 42 auf 85 % erhöht: Über der hellsten Stelle des Fotos
   kam weißer Text sonst nur auf 3,76:1, jetzt sind es 4,58:1 (WCAG AA).
   Die Markenfarbe #cf3173 bleibt, das Foto scheint schwächer durch. */
.band-pink{background:#6e678f url('../../img/live-2.jpg') center/cover;}
.band-pink::before{background:rgba(207,49,115,.85);}

/* „E-Book" — Türkis mit Streifen.
   Tieferes Türkis als die Markenfarbe #309fa4, und die Deckschicht ist dichter.
   Grund: Auf diesem Band stehen zehn Kleintexte — Häkchen, Feintext, Aufzählung.
   Über den hellen Streifen des Bildes kam weißer Text auf nur 2,59:1; mit
   #1f6b6e bei 70 % sind es 4,52:1 (WCAG AA). Die Streifen bleiben sichtbar.
   Gemessen am Bild selbst, nicht an der Grundfarbe — die hellen Streifen
   (#6fb3bf) sind der kritische Fall, nicht der Grundton. */
.band-tuerkis{background:#1f6b6e url('../../img/live-bg-stripes-green2.png') center/cover;}
.band-tuerkis::before{background:rgba(31,107,110,.70);}

.band-lila h1,.band-lila h2,.band-lila h3,
.band-pink h1,.band-pink h2,.band-pink h3,
.band-tuerkis h1,.band-tuerkis h2,.band-tuerkis h3{color:#fff;}
.band-lila .eyebrow,.band-pink .eyebrow,.band-tuerkis .eyebrow{color:rgba(255,255,255,.9);}
/* Voll weiß statt 95 %: Die fehlenden 5 % kosteten auf dem Türkis spürbar
   Kontrast, ohne optisch etwas zu gewinnen. */
.band-lila p,.band-pink p,.band-tuerkis p{color:#fff;}
.band-lila a,.band-pink a,.band-tuerkis a{color:#fff;}

/* Helle Flächen wie live */
.band-hell{background:rgba(111,179,191,.08);}
.band-grau{background:#f7f7f7;}

/* ------------------------------------------------ Servicebroschüre
   Das Cover trägt den Abschnitt, der Knopf steht darunter — wie auf der
   alten Seite. Schatten und Rundung macht das CSS, damit das Bild selbst
   eine schlichte, kleine Datei bleibt. */
.sec-head-mittig{margin-left:auto; margin-right:auto; text-align:center;}
.sec-head-mittig .sec-text{margin-left:auto; margin-right:auto;}

.broschuere{display:flex; flex-direction:column; align-items:center; gap:2.2em;}

.broschuere-bild{display:block; width:min(300px, 72vw); line-height:0;
    border-radius:4px; overflow:hidden; background:var(--paper);
    box-shadow:0 1px 2px rgba(0,60,82,.10), 0 18px 34px -10px rgba(0,60,82,.34);
    transform:translateZ(0); transition:transform .25s ease, box-shadow .25s ease;}

.broschuere-bild img{width:100%; height:auto; display:block;}

.broschuere-bild:hover{transform:translateY(-5px);
    box-shadow:0 2px 4px rgba(0,60,82,.12), 0 26px 46px -10px rgba(0,60,82,.40);}

.broschuere p{margin:0;}

@media (prefers-reduced-motion: reduce){
  .broschuere-bild{transition:none;}
  .broschuere-bild:hover{transform:none;}
}

/* Bild mit runden Ecken auf Farbfläche — 14 px wie die Service-Karten.

   Der Selektor heißt bewusst `img.bild-rund` und nicht nur `.bild-rund`: Weiter oben
   steht `.about img{border-radius:3px}`, und das ist genauer als eine Klasse allein.
   Die Klasse wäre also wirkungslos geblieben — das Bild von Judith sah eckig aus,
   obwohl die Klasse dranstand. Mit `img` davor sind beide gleich genau, und weil diese
   Regel weiter unten steht, gewinnt sie. */
img.bild-rund{border-radius:14px; box-shadow:0 18px 44px rgba(0,0,0,.18);}

/* ---------- Vier Stichworte mit Strichgrafik ---------- */
.saeulen-live{
  display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(20px,3vw,40px);
  margin-top:clamp(32px,5vw,58px); text-align:center;
}
/* Höchstwert von 96 auf 112 px (Stefan, 13.10.2026, an der Vorschau entschieden).
   Betrifft nur breite Monitore: Bis rund 1370 px Fensterbreite greift weiterhin
   der 7vw-Wert, erst darüber macht sich der höhere Deckel bemerkbar. Anlass war
   der Vergleich mit der Live-Seite, deren Icons dort größer stehen. */
.saeulen-live .saeule img{width:clamp(64px,7vw,112px); height:auto; margin:0 auto .9em;}
.saeulen-live h3{font-size:1.35rem; font-weight:400; color:var(--teal-aktion); margin-bottom:.35em;}
.saeulen-live p{font-size:1rem; color:var(--ink-soft);}
@media (max-width:820px){ .saeulen-live{grid-template-columns:repeat(2,1fr);} }
@media (max-width:460px){ .saeulen-live{grid-template-columns:1fr;} }

/* ---------- Servicebereiche als Farbkarten ---------- */
.service-karten{display:grid; grid-template-columns:repeat(2,1fr); gap:clamp(20px,2.6vw,32px); margin-top:clamp(28px,4vw,48px);}
@media (max-width:760px){ .service-karten{grid-template-columns:1fr;} }
.service-karte{
  border-radius:14px; padding:clamp(26px,3.2vw,44px); color:#fff;
  display:flex; flex-direction:column; gap:.2em;
}
/* Dieselbe Begründung wie beim türkisen Band: #309fa4 trägt keinen weißen
   Kleintext (3,17:1). #278286 ist die bereits vorhandene Markenfarbe
   --teal-aktion und kommt auf 4,54:1. Die drei anderen Karten sind in
   Ordnung (4,84 / 5,25 / 8,07:1). */
.service-karte.c1{background:#278286;}
.service-karte.c2{background:#cf3173;}
.service-karte.c3{background:#6e678f;}
.service-karte.c4{background:#4c4a81;}
/* Icongröße an der Live-Seite ausgerichtet (Stefan, 13.10.2026): Dort nehmen
   die Icons rund 18 % der Kartenbreite ein, bei uns waren es 12,9 %. Es sind
   dieselben Bilddateien, der Vergleich stimmt also. Die drei Werte halten die
   18 % über alle Breiten: unten greift der Mindestwert aufs Handy, oben der
   Höchstwert, weil die Karte bei 1120 px Seitenbreite nicht weiterwächst. */
.service-karte img{width:clamp(60px,8.3vw,96px); height:auto; margin-bottom:1.1em;}
.service-karte h3{color:#fff; font-size:clamp(1.5rem,2.2vw,2rem); font-weight:400; margin-bottom:.6em;}
.service-karte > p{color:#fff; font-weight:600; font-size:1rem;}
.service-karte .leistungen{margin-top:1.2em; font-size:.97rem; color:#fff;}
.service-karte .leistungen .lab{font-style:italic; display:block; margin-bottom:.3em;}
.service-karte .leistungen ol{margin:0; padding-left:1.3em;}
.service-karte .leistungen li{margin-bottom:.22em;}
.service-karte .leistungen b{font-weight:700;}
.service-karte .leistungen i{font-style:italic;}
/* Jede Leistung führt zu ihrer eigenen Seite — dezent unterstrichen, damit die Karte ruhig bleibt */
.service-karte .leistungen a{text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:3px; text-decoration-color:rgba(255,255,255,.5);}
.service-karte .leistungen a:hover{text-decoration-color:#fff;}
.svc a{text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:3px; text-decoration-color:rgba(0,75,101,.35);}
.svc a:hover{text-decoration-color:var(--teal-aktion);}

/* ---------- Mittig gesetzte Abschnitte wie live ---------- */
.mittig{text-align:center; max-width:62ch; margin-inline:auto;}
.mittig .eyebrow{color:var(--teal-aktion);}
.mittig h2{font-weight:400; margin:.5em 0;}
.mittig p{color:var(--ink-soft);}

/* Die früheren .broschuere-Regeln standen hier und haben nie gegriffen —
   es gab kein Element mit dieser Klasse. Seit dem Broschüren-Abschnitt gibt
   es eines; die gültigen Regeln stehen weiter oben bei .broschuere-bild. */



/* Auf schmalen Geräten liegt der Text wie live ebenfalls auf dem Bild.
   Ein sehr sanfter heller Verlauf von links sichert die Lesbarkeit,
   ohne das Bild sichtbar zu verändern. */
@media (max-width:820px){
  .hero-federn{
    background-position:72% center;
    min-height:auto;
    position:relative;
  }
  .hero-federn::after{
    content:""; position:absolute; inset:0; pointer-events:none;
    background:linear-gradient(100deg, rgba(255,255,255,.88) 0%, rgba(255,255,255,.72) 42%, rgba(255,255,255,0) 78%);
  }
  .hero-federn .hero-text{max-width:100%; position:relative; z-index:2; padding-block:clamp(32px,9vw,56px);}
}


/* ---------- Kopfbereich: Bild über die volle Breite, Text darauf ---------- */
.hero-federn{
  position:relative;
  background:#f7fafa url('../../img/hero-federn.jpg') no-repeat right center;
  background-size:cover;
  display:flex; align-items:center;
  min-height:clamp(340px,34vw,480px);
}
/* Sanfter heller Verlauf von links — hält den Text lesbar, ohne das Bild zu verändern */
.hero-federn::after{
  content:""; position:absolute; inset:0; pointer-events:none; z-index:1;
  background:linear-gradient(100deg, rgba(250,252,252,.95) 0%, rgba(250,252,252,.88) 34%, rgba(250,252,252,.70) 58%, rgba(250,252,252,.34) 78%, rgba(250,252,252,.12) 92%);
}
/* width:100% — sonst schrumpft .wrap als Flex-Kind auf die Textbreite und wird
   mittig gesetzt. Der Text rutscht dann nach rechts in die Federn, wo der
   aufhellende Verlauf schon ausgelaufen ist, und wird unlesbar. */
.hero-federn > .wrap{position:relative; z-index:2; width:100%;}
.hero-federn .hero-text{
  max-width:min(74ch, 88%);
  padding-block:clamp(36px,5vw,68px);
}
.hero-federn h1{
  font-size:clamp(1.75rem,3.05vw,2.7rem);
  font-weight:400; line-height:1.18;
}
.hero-federn .eyebrow{margin-bottom:.8em;}
/* Auf dem Bild braucht der Einleitungstext die volle Textfarbe — der
   abgesetzte Ton kam ueber den Federn nur auf 2:1 statt der geforderten 4,5:1. */
.hero-federn .lede{max-width:64ch; color:var(--ink);}

@media (max-width:820px){
  .hero-federn{background-position:74% center; min-height:auto;}
  .hero-federn::after{
    /* Der Verlauf laeuft rechts bewusst auf null aus — Stefans Entscheidung vom
       24.10.2026, damit die Federn ihre Wirkung behalten.
       Hintergrund: Gemessen liegen damit rund 17 % der Textflaeche unter den
       geforderten 4,5:1 (vor der dunkleren Schrift waren es 44 %). Ein Verlauf,
       der rechts bei .68 endet, kaeme auf 0 % — die Federn wirken dann aber
       deutlich blasser. Abgewogen und so entschieden: nicht erneut aendern,
       ohne zu fragen. Den groessten Teil traegt ohnehin die Schriftfarbe
       (--ink statt --ink-soft, siehe .hero-federn .lede weiter unten). */
    background:linear-gradient(105deg, rgba(250,252,252,.93) 0%, rgba(250,252,252,.84) 46%, rgba(250,252,252,.30) 80%, rgba(250,252,252,0) 100%);
  }
  .hero-federn .hero-text{max-width:100%; padding-block:clamp(30px,8vw,52px);}
}

/* Auf dem Telefon füllt der Kopfbereich den Bildschirm. Vorher ergab sich
   seine Höhe allein aus dem Text, und vom nächsten Abschnitt lugte unten ein
   violetter Sockel herein — Stefans Fund am 26.10.2026.
   dvh statt vh, weil Safari auf dem iPhone die Adressleiste ein- und ausfährt
   und vh dann zu groß rechnet. min-height, nicht height: Auf sehr kleinen
   Geräten ist der Text höher als der Bildschirm, dann wächst der Bereich mit.
   Nur bis 560px — auf dem Tablet bleibt der Kopfbereich kompakt wie bisher. */
@media (max-width:560px){
  .hero-federn{min-height:calc(100dvh - var(--kopf-h, 95px));}
}

/* Ortsübersicht mit Foto */
.places{grid-template-columns:repeat(3,1fr);}
/* 14 px wie die Service-Karten und Judiths Bild — die Kacheln hatten als einzige
   Flächen auf der Seite noch die kantigen 4 px aus der Grundregel .place. */
.place-foto{padding:0; overflow:hidden; display:flex; flex-direction:column; border-radius:14px;}
/* Die Fotos sind durchweg 3:2 (1600x1067). Eine feste Höhe von 150 px ergab bei der
   Kachelbreite ein Verhältnis von etwa 2,1:1 — der Browser schnitt also 28 % der
   Bildhöhe weg, je zur Hälfte oben und unten. Auf Porträtfotos traf das die Köpfe.

   Mit aspect-ratio bekommt die Kachel dasselbe Verhältnis wie die Bilder: 23 der 26
   Fotos werden damit vollständig gezeigt. Die drei Ausreißer (ein 4:3, ein 1,64:1 und
   ein Hochformat bei der Online-Beratung) werden weiterhin beschnitten — deshalb sitzt
   der Ausschnitt weit oben statt mittig.

   Warum ausgerechnet 15 %: Das Hochformat der Online-Beratung zeigt Judith in voller
   Länge, der Kopf liegt zwischen 13 % und 32 % der Bildhöhe. Weil dort 56 % weggeschnitten
   werden, beginnt der sichtbare Bereich bei 15 % Position erst bei etwa 8 % — der Kopf
   bleibt also vollständig. Bei 35 % hätte der Schnitt mitten durch die Stirn gelegen.
   Für die 3:2-Fotos spielt der Wert keine Rolle, dort wird nichts beschnitten. */
.place-foto img{
  width:100%; aspect-ratio:3/2; height:auto;
  object-fit:cover; object-position:50% 15%;
  display:block;
}
.place-foto .txt{display:block; padding:14px 16px;}
.place-foto .h{display:block; margin-top:.5em; font-size:.9rem; color:var(--ink-soft, #3d6f83); line-height:1.35;}
@media (max-width:900px){ .places{grid-template-columns:repeat(2,1fr);} }

/* Kontaktformular */
.honigtopf{position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden;}
.hinweis{padding:.8em 1em; border-radius:4px; margin-bottom:1.1em; font-size:.95rem; line-height:1.45;}
.hinweis-gut{background:#e8f3f3; border-left:4px solid #278286; color:#174c4f;}
.hinweis-fehler{background:#fdeef3; border-left:4px solid #cf3173; color:#7a1d43;}
.hinweis p{margin:0 0 .3em;}
.hinweis p:last-child{margin-bottom:0;}
.feld-check{display:grid; grid-template-columns:auto 1fr; gap:.6em; align-items:start; font-size:.88rem; line-height:1.45;}
.feld-check input{margin-top:.25em; width:18px; height:18px;}
.feld-check label{color:var(--ink-soft, #3d6f83); text-transform:none; letter-spacing:normal; font-weight:400; font-size:.86rem;}

/* Ortsliste auf der Startseite */
.ortsliste{display:flex; flex-wrap:wrap; gap:10px; justify-content:center; margin-top:1.8em;}
.ortsliste a{display:flex; flex-direction:column; gap:.15em; padding:.7em 1.2em; border:1px solid var(--line);
    border-radius:999px; text-decoration:none; color:var(--ink); background:var(--paper); transition:border-color .15s, transform .15s;}
.ortsliste a:hover{border-color:var(--rose); transform:translateY(-2px);}
.ortsliste a span{font-size:.78rem; color:var(--ink-faint);}

/* Autorenkasten */
.autorin{display:flex; gap:16px; align-items:center; padding:16px 18px; border:1px solid var(--line);
    border-left:4px solid var(--rose); border-radius:4px; background:var(--paper);}
.autorin img{width:80px; height:80px; border-radius:50%; object-fit:cover; flex:none;}
.autorin p{margin:0;}
.autorin-name{font-family:var(--serif); font-size:1.15rem; color:var(--ink);}
.autorin-rolle{font-size:.9rem; color:var(--ink-soft, #3d6f83); margin-top:.15em;}
.autorin-datum{font-size:.82rem; color:var(--ink-faint); margin-top:.35em;}
@media (max-width:520px){ .autorin{flex-direction:column; text-align:center;} }

/* Ablauf einer Leistung */
.ablauf{list-style:none; margin:2em 0 0; padding:0; display:grid; gap:18px; max-width:58ch;}
.ablauf li{display:grid; grid-template-columns:44px 1fr; gap:16px; align-items:start;}
.ablauf .nr{display:flex; align-items:center; justify-content:center; width:38px; height:38px; border-radius:50%;
    background:var(--ink); color:#fff; font-weight:700; font-size:1rem;}
.ablauf h3{font-family:var(--sans); font-size:1.02rem; font-weight:700; color:var(--ink); margin:.35em 0 .2em;}
.ablauf p{margin:0; color:var(--ink-soft, #3d6f83);}
.trust-gross{max-width:62ch; margin-left:auto; margin-right:auto;}

/* Auf dunklem Grund bleibt Text weiß, auch mittig gesetzt */
.band-ink .mittig p, .band-ink p{color:#fff;}
.band-ink .mittig .eyebrow{color:#fff; opacity:.75;}

/* Gutscheinformular: Hilfsklassen, die es sonst nirgends gibt.
   [hidden] muss hier stehen, weil .field ein eigenes display setzt und das
   Attribut sonst wirkungslos bliebe. */
[hidden]{display:none !important;}
.feld-wahl{border:0; padding:0; margin:0 0 1.1em;}
.feld-wahl legend{font-size:.82rem; font-weight:700; letter-spacing:.04em; color:var(--ink); margin-bottom:.5em; padding:0;}
.feld-wahl .feld-check{margin-bottom:.35em;}
.freiwillig{font-weight:400; color:var(--ink-faint);}
.formhinweis{margin:1em 0 0; font-size:.86rem; color:var(--ink-faint);}

/* Mitgliedslogo im Fuß: heller Grund, damit das mehrfarbige Logo lesbar bleibt */
.siegel{margin-top:1.1em;}
.siegel img{width:150px; height:auto; display:block;
            background:#fff; border-radius:4px; padding:8px 10px;}

/* Auswahlfelder sehen sonst nach Systemvorgabe aus — schmal und blass.
   Hier etwas kräftiger als die Textfelder, weil die Wahl der Beratung
   der entscheidende Schritt im Gutscheinformular ist. */
.field select{
  appearance:none; -webkit-appearance:none;
  font-size:1.05rem; font-weight:600; padding-right:2.6em; cursor:pointer;
  border-width:2px; border-color:var(--teal-pale);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%23004b65' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 1em center;
}
.field select:hover{border-color:var(--teal-aktion);}
