/* ============================================================
   RUHESTANDS-CASHFLOW-CHECK — seitenspezifische Ergänzungen
   ------------------------------------------------------------
   Ergänzt /assets/subpages.css. Definiert bewusst KEINE Farb-Tokens
   (Konvention aus theme.css) — Ausnahme: die drei semantischen
   Ampelfarben, die es im Markensystem noch nicht gibt. Sie sind
   hell/dunkel getrennt gesetzt und werden nur als Punkt und Label
   verwendet, nie als Fläche.
   ============================================================ */

/* ------------------------------------------------------------
   Bruecke auf das Design-System dieser Seite

   Diese Datei stammt aus dem Check-Repo und wurde fuer hellermann.vc
   geschrieben. Sie greift auf deren Token zu (--bg, --text-strong,
   --gold und weitere). Statt 467 Zeilen umzuschreiben, werden die
   alten Namen hier einmal auf die Token von seite.css gelegt.

   Vorteil: Der Check bleibt Zeile fuer Zeile mit dem Original
   vergleichbar, und eine neue Fassung aus dem Check-Repo laesst sich
   weiterhin einfach daruebersetzen. Nur dieser Block gehoert dann neu
   geschrieben.

   Der Dunkelmodus ist ersatzlos entfallen: Die Personenmarke ist fest
   hell, es gibt keinen Umschalter.
   ------------------------------------------------------------ */
:root{
  --bg:            var(--paper);
  --bg-2:          var(--paper-2);
  --header-bg:     var(--paper);
  --text-strong:   var(--ink);
  --text-2:        var(--ink-soft);
  --text-3:        var(--ink-mute);
  --gold:          var(--lila);
  --gold-line:     var(--line);
  --font-primary:   var(--font-body);
  --font-secondary: var(--font-mono);

  /* Die drei Ergebnistoene bleiben farbig: Sie tragen eine Aussage
     (komfortabel, angespannt, kritisch) und sind keine Verzierung.
     Gedeckt gehalten, damit sie neben dem Lila nicht schreien.
     --warn hing frueher am Gold, das es nicht mehr gibt. */
  --ok:   #3f6b4d;
  --warn: #8a6d1f;
  --bad:  #9c4030;
}

/* ============================================================
   Lesbarkeit
   ------------------------------------------------------------
   Laut YouTube-Analytics 2026 sind 41,8 % des Publikums 55 Jahre
   oder älter, 71 % sind 45+. Die Fließtextgrößen des Markensystems
   (14,5 px) sind dafür zu klein — auf dieser Seite deshalb bewusst
   angehoben. Farben, Schriften und Abstände bleiben unverändert.
   ============================================================ */
.card > p,
.faq .faq-body p,
.faq .faq-body ul{ font-size:15.5px; }
.faq summary{ font-size:16.5px; }

/* Auf dieser Seite gibt es kein Scroll-Skript — Header dauerhaft abgesetzt. */
header{
  background:var(--header-bg);
  backdrop-filter:saturate(140%) blur(14px);
  -webkit-backdrop-filter:saturate(140%) blur(14px);
  border-bottom:1px solid var(--line-soft);
}

/* ---------- Kopf folgt dem Zustand der Seite ----------
   Der Kopf gehört der Landingpage. Sobald der Check läuft, führen „#faq" &
   Co. auf ausgeblendete Abschnitte und „Check starten" ist bereits geklickt —
   beides verschwindet, Marke und Umschalter bleiben. Der Ausgangswert steht
   im HTML (<body data-stand="lp">), sonst wäre die Navigation weg, bis
   check.js geladen hat; gepflegt wird er danach in zeige(). */
body:not([data-stand="lp"]) .nav-links .lnk,
body:not([data-stand="lp"]) .nav-cta{ display:none; }

/* ---------- Gate: Telefonzeile ----------
   subpages.css legt .frm .row zweispaltig an. Die Telefonnummer steht
   allein in ihrer Zeile und bekommt deshalb die volle Breite, statt
   neben einer leeren Zelle zu hängen. */
.frm .row--voll{ grid-template-columns:1fr; }

.feld-hilfe{
  margin:8px 0 0;
  font-size:12.5px; line-height:1.6;
  color:var(--text-3);
}

/* ---------- Vierer-Kachelreihe ----------
   Wie .grid-3 in subpages.css, nur mit vier Spalten — und mit einem eigenen
   Umbruchpunkt: Vier Kacheln à ~270 px werden vor 1180 px zu schmal für
   deutschen Fließtext, deshalb ab 1024 px zwei über zwei statt drei plus eine
   allein. Innenabstand eine Stufe kleiner, sonst bleibt in der schmalsten
   Spalte kaum Textbreite übrig. */
.grid-4{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; }
.grid-4 .card{ padding:32px 26px 26px; }
/* Eine Stufe kleiner als .card h3 (19–23 px): In 210 px Textbreite brach jede
   Überschrift sonst dreizeilig um und schob die Kacheln auseinander. */
.grid-4 .card h3{ font-size:17.5px; line-height:1.3; }
.grid-4 .card .watermark{ font-size:110px; }
@media (max-width:1024px){
  .grid-4{ grid-template-columns:1fr 1fr; gap:24px; }
  .grid-4 .card{ padding:40px 36px 34px; }
  .grid-4 .card h3{ font-size:clamp(19px,1.8vw,23px); line-height:1.25; }
  .grid-4 .card .watermark{ font-size:150px; }
}
@media (max-width:640px){
  .grid-4{ grid-template-columns:1fr; }
}

/* ---------- Ergebnisliste auf der Landingpage ---------- */
.ergebnisliste{
  list-style:none; margin:56px 0 0; padding:0;
  border-top:1px solid var(--line-soft);
  counter-reset:erg;
}
.ergebnisliste li{
  counter-increment:erg;
  display:grid; grid-template-columns:56px 1fr; gap:0 26px;
  padding:28px 4px; border-bottom:1px solid var(--line-soft);
}
.ergebnisliste li::before{
  content:counter(erg,decimal-leading-zero);
  grid-column:1; grid-row:1;
  font-family:var(--font-secondary); font-size:12.5px; letter-spacing:.14em;
  color:var(--gold); padding-top:5px;
}
/* Titel und Text gehören beide in die zweite Spalte — sonst rutscht der
   Absatz in die schmale Ziffernspalte. */
.ergebnisliste li > *{ grid-column:2; }
.ergebnisliste h3{
  font-family:var(--font-primary); font-weight:500; font-size:18px;
  color:var(--text-strong); margin:0 0 8px; letter-spacing:-.005em;
}
.ergebnisliste p{ font-size:15.5px; color:var(--text-2); line-height:1.75; margin:0; max-width:680px; }

/* ============================================================
   CHECK
   ============================================================ */
.check-shell{ padding:150px 0 clamp(70px,10vh,120px); min-height:100vh; }

/* ---------- Rückweg auf die Landingpage ----------
   Muster und Maße vom Rücklink der Formularseiten (.nav .back in
   subpages.css), nur eine Stufe leiser: Er soll auffindbar sein, wenn man ihn
   sucht, und nicht mit „Weiter" konkurrieren. Linksbündig über dem Balken,
   auf derselben Kante wie die Fragen (max-width wie #check-form). */
/* Die Zeile ist auf dieselbe Spalte begrenzt wie Balken und Formular, damit
   der Link auf deren linker Kante sitzt. Klickbar ist nur der Text, nicht die
   ganze Breite — ein Fehlklick würde hier aus dem Check herausführen. */
.check-kopf{ max-width:760px; margin:0 auto 26px; }
.check-zurueck{
  display:inline-flex; align-items:center; gap:9px;
  font-family:var(--font-secondary); font-size:12px;
  letter-spacing:.14em; text-transform:uppercase; color:var(--text-3);
  transition:color .3s var(--ease);
}
.check-zurueck .arr{ color:var(--gold); transition:transform .35s var(--ease); }
.check-zurueck:hover{ color:var(--text-strong); }
.check-zurueck:hover .arr{ transform:translateX(-4px); }
/* Am Gate steht derselbe Rückweg („Antworten ändern"), dort aber über der
   breiteren .gate-grid. Ohne die Ausnahme säße der Link 170 px weiter innen
   als die Teaser-Kachel darunter und sähe aus wie eingerückt. Maß deshalb
   von .gate-grid übernommen, nicht neu erfunden. */
.check-kopf--breit{ max-width:1100px; }

/* ---------- Fortschritt ----------
   Bewusst kräftiger als die übrigen Linien der Seite: Bei 2 px in
   --line-soft (7 % Deckkraft) hat selbst ein aufmerksamer Leser den
   Balken übersehen und einen Fortschrittsbalken angeregt, den es
   längst gab. Jetzt 5 px, die Spur in --line, die Beschriftung eine
   Stufe dunkler und größer. Keine neuen Farben — der gefüllte Teil
   bleibt das eine Gold des Systems. */
.fortschritt{ max-width:760px; margin:0 auto 44px; }
.fortschritt-bar{
  height:5px; background:var(--line); border-radius:999px; overflow:hidden;
}
.fortschritt-bar span{
  display:block; height:100%; width:0%; border-radius:999px; background:var(--gold);
  transition:width .5s var(--ease);
}
/* Restzeit links, Schrittzahl rechts. Die Schrittzahl bleibt als
   Orientierung erhalten — wer zurückgeht, will wissen, wo er ist —,
   aber kleiner und blasser: Sie soll lesbar sein, nicht das Erste,
   was ins Auge fällt. */
.fortschritt-txt{
  display:flex; align-items:baseline; gap:5px 20px; flex-wrap:wrap;
  margin-top:14px; font-family:var(--font-secondary); font-size:12px;
  letter-spacing:.18em; text-transform:uppercase; color:var(--text-2);
}
/* margin-left:auto statt justify-content:space-between — bricht die Zeile auf
   sehr schmalen Schirmen doch einmal um, bleibt die Schrittzahl rechts
   stehen, statt die zweite Zeile anzuführen und damit lauter zu werden. */
.fortschritt-nr{
  margin-left:auto; font-size:11px; letter-spacing:.14em; color:var(--text-3);
}

/* ---------- Schritt ---------- */
#check-form{ max-width:760px; margin:0 auto; }
.schritt{ animation:auf .45s var(--ease) both; }
@keyframes auf{ from{ opacity:0; transform:translateY(14px); } to{ opacity:1; transform:none; } }

.schritt > h2{
  font-family:var(--font-primary); font-weight:300;
  font-size:clamp(26px,3.4vw,40px); line-height:1.18; letter-spacing:-.01em;
  color:var(--text-strong); margin:18px 0 0;
}
.schritt > h2 b{ font-weight:600; }
.schritt > p.hinweis{
  font-size:15.5px; color:var(--text-2); line-height:1.75;
  margin:16px 0 0; max-width:640px;
}

/* .frage ist je nach Fragetyp <fieldset> oder <div> — Browser-Defaults des
   fieldset (Rahmen, Innenabstand, min-width) müssen zurückgesetzt werden. */
.frage{
  margin:40px 0 0; padding:34px 0 0; border:0; min-width:0;
  border-top:1px solid var(--line-soft);
}
.frage:first-of-type{ border-top:0; padding-top:0; }
.frage > .f-label{
  display:block; float:left; width:100%; padding:0;
  font-family:var(--font-primary); font-weight:500;
  font-size:17px; color:var(--text-strong); line-height:1.5; margin:0 0 6px;
}
/* float löst das legend-Layoutverhalten auf; danach den Fluss wiederherstellen */
.frage > .f-label + *{ clear:both; }
.frage > .f-hilfe{
  font-size:15px; color:var(--text-3); line-height:1.7; margin:0 0 18px; max-width:620px;
}
.frage > .f-label + .f-optionen, .frage > .f-label + .euro{ margin-top:18px; }

/* ---------- Optionen: größere Klickflächen als im Standardsystem.
     Begründung: primäre Interaktion, Zielgruppe 50+. ---------- */
.f-optionen{ display:grid; grid-template-columns:1fr 1fr; gap:11px; }
.f-optionen.eng{ grid-template-columns:1fr; }
.f-optionen .chipbox label{
  font-size:16.5px; padding:17px 19px; line-height:1.4; min-height:62px;
}
.f-optionen .chipbox label::before{ width:17px; height:17px; }

/* ---------- Betragsfeld ---------- */
.euro{ position:relative; max-width:340px; }
.euro input{
  width:100%; background:var(--bg); border:1px solid var(--line); border-radius:3px;
  color:var(--text-strong); font-family:var(--font-primary); font-weight:500;
  font-size:26px; letter-spacing:-.01em; padding:16px 88px 16px 18px;
  transition:border-color .3s var(--ease);
}
.euro input:focus{ outline:none; border-color:var(--gold-line); }
.euro input::placeholder{ color:var(--text-3); font-weight:400; }
.euro input::-webkit-outer-spin-button,
.euro input::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.euro .einheit{
  position:absolute; right:16px; top:50%; transform:translateY(-50%);
  font-family:var(--font-secondary); font-size:11px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--text-3); pointer-events:none;
}

/* ---------- Navigation ---------- */
.check-nav{
  display:flex; gap:14px; align-items:center; justify-content:space-between;
  margin-top:48px; padding-top:28px; border-top:1px solid var(--line-soft);
}
.check-nav .btn{ border:1px solid var(--line); }
.check-nav .js-zurueck[hidden]{ display:none; }
.check-nav .js-weiter{ min-width:200px; justify-content:center; }

.feldfehler{
  margin:22px 0 0; font-size:14.5px; color:var(--bad);
  border-left:2px solid var(--bad); padding-left:14px; line-height:1.6;
}
.feldfehler[hidden]{ display:none; }

.check-fuss{
  max-width:760px; margin:36px auto 0; text-align:center;
  font-family:var(--font-secondary); font-size:11.5px; color:var(--text-3);
  line-height:1.8; letter-spacing:.02em;
}

/* ============================================================
   GATE
   ============================================================ */
.gate-head{ max-width:760px; margin:0 auto 48px; text-align:center; }
.gate-head .kicker{ justify-content:center; margin-bottom:18px; }
.gate-head .kicker::before{ display:none; }
.gate-head h2{
  font-family:var(--font-primary); font-weight:300;
  font-size:clamp(28px,3.6vw,44px); line-height:1.18; letter-spacing:-.01em;
  color:var(--text-strong); margin:0;
}
.gate-head h2 b{ font-weight:600; }
.gate-head p.sub{ font-size:16px; color:var(--text-2); line-height:1.8; margin:18px auto 0; max-width:600px; }

.gate-grid{
  display:grid; grid-template-columns:1fr 1.05fr; gap:44px;
  align-items:start; max-width:1100px; margin:0 auto;
}

/* ---------- Unscharfe Vorschau ---------- */
.teaser{
  border:1px solid var(--line); border-radius:8px; padding:12px 26px 22px;
  background:linear-gradient(180deg,var(--surface) 0%,var(--bg-2) 100%);
}
.teaser-zeile{
  display:flex; align-items:baseline; justify-content:space-between; gap:20px;
  padding:20px 0; border-bottom:1px solid var(--line-soft);
}
.teaser-zeile:last-of-type{ border-bottom:0; }
.tz-label{
  font-family:var(--font-secondary); font-size:11px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--text-3);
}
.tz-wert{
  font-family:var(--font-primary); font-weight:500; font-size:22px;
  color:var(--text-strong); white-space:nowrap;
}
.teaser-zeile.scharf .tz-wert{ color:var(--gold); font-size:17px; }
.teaser-zeile.blur .tz-wert{
  filter:blur(7px); opacity:.55; user-select:none;
}
.teaser-hinweis{
  margin:20px 0 0; font-family:var(--font-secondary); font-size:11px;
  color:var(--text-3); line-height:1.7; letter-spacing:.02em;
}

/* ---------- Meldung unter dem Formular ----------
   subpages.css färbt bei .is-error nur den Kreis, und das in einem
   festen Rosé, das auf hellem Grund kaum trägt. Überschrift und Zeichen
   müssen den Fehler mittragen — sonst wirkt der Kasten trotz rotem Ring
   wie eine Bestätigung. --bad ist hell/dunkel getrennt gesetzt. */
.form-msg.is-error .ic{ color:var(--bad); }
.form-msg.is-error h3{ color:var(--bad); }

/* ---------- Danke ---------- */
.danke-wrap{ max-width:900px; text-align:center; }
.danke-wrap .kicker{ justify-content:center; margin-bottom:18px; }
.danke-wrap .kicker::before{ display:none; }
.danke-wrap h2{
  font-family:var(--font-primary); font-weight:300;
  font-size:clamp(28px,3.6vw,44px); line-height:1.18;
  color:var(--text-strong); margin:0;
}
.danke-wrap h2 b{ font-weight:600; }
.danke-wrap p.sub{ font-size:16px; color:var(--text-2); line-height:1.8; margin:18px auto 0; max-width:620px; }
.danke-grid{ margin-top:56px; text-align:left; }
/* Belegzahl am Kanal-Link der Karte — gleiche Rollenverteilung wie bei
   .p-links .p-meta oben: eine Stufe leiser als die Beschriftung, damit sie
   belegt statt mitzuwerben, und im Hover gemeinsam mit ihr eine Stufe heller.
   Keine neue Farbe, nur --text-3/--text-2 aus theme.css.
   .card .go ist inline-flex; flex-wrap lässt die Zeile auf schmalen Schirmen
   von selbst zwischen Beschriftung und Zahl umbrechen, statt sie erzwungen
   zu trennen oder aus der Karte laufen zu lassen. */
.danke-grid .go{ flex-wrap:wrap; row-gap:4px; }
.danke-grid .go-meta{ color:var(--text-3); }
.danke-grid .card:hover .go-meta{ color:var(--text-2); }

/* ---------- Footer-Disclaimer ---------- */
.disclaimer{
  margin:56px 0 0; padding:22px 0 0; border-top:1px solid var(--line-soft);
  font-size:12.5px; color:var(--text-3); line-height:1.8; max-width:900px;
}

/* ============================================================
   WER DAHINTER STEHT (Landingpage)
   ------------------------------------------------------------
   .person, .portrait, .p-body und .p-role kommen aus subpages.css —
   dieselbe Bildsprache wie der Abschnitt #christopher auf der
   Startseite. Hier nur die kompakte Variante: Der Block sitzt mitten
   im Lesefluss vor der FAQ und darf die Seite nicht spürbar strecken.
   Keine eigenen Farben — alles über die Tokens aus theme.css.
   ============================================================ */
.person--kurz{ grid-template-columns:200px 1fr; gap:44px; }
.person--kurz .p-body h2{ font-size:clamp(24px,2.6vw,31px); }
.person--kurz .p-role{ margin:0 0 20px; line-height:1.75; }
/* max-width wie bei .ergebnisliste p. Ohne Begrenzung laufen die Zeilen auf
   großen Schirmen über 110 Zeichen — für die Zielgruppe dieser Seite (71 %
   des Publikums 45+) deutlich zu lang. */
.person--kurz .p-body p{
  font-size:15.5px; line-height:1.8; margin:0 0 16px; max-width:680px;
}
.person--kurz .p-body p:last-of-type{ margin-bottom:0; }
/* Das Monogramm ist hier kleiner als auf der Startseite — 96 px würden
   in der schmaleren Kachel an den Rändern anstoßen. */
.person--kurz .portrait .monogram{ font-size:64px; }

/* Linkzeile. Auf der Startseite steht sie im Inline-CSS und kann von
   dort nicht importiert werden — deshalb hier nachgebildet. */
.p-links{ display:flex; gap:26px; flex-wrap:wrap; margin:24px 0 0; }
.p-links a{
  font-family:var(--font-secondary); font-size:12px; letter-spacing:.1em;
  text-transform:uppercase; color:var(--text-2);
  display:inline-flex; align-items:center; gap:9px;
  transition:color .3s var(--ease);
}
/* Belegzahl am Link — leiser als die Beschriftung, damit sie belegt statt
   wirbt. Bricht auf schmalen Schirmen zusammen mit dem Link um. */
.p-links .p-meta{ color:var(--text-3); }
.p-links a:hover .p-meta{ color:var(--text-2); }
.p-links a .arr{ color:var(--gold); transition:transform .35s var(--ease); }
.p-links a:hover{ color:var(--text-strong); }
.p-links a:hover .arr{ transform:translateX(4px); }

/* ============================================================
   ABSENDER (Block über dem E-Mail-Formular)
   ============================================================ */
/* Oben ausgerichtet, nicht mittig: Das Foto gehört zum Namen, nicht zum
   Fließtext — mittig zentriert rutscht es neben die zweite Textzeile. */
.absender{
  display:flex; align-items:flex-start; gap:15px;
  margin:0 0 26px; padding:0 0 24px;
  border-bottom:1px solid var(--line-soft);
}
/* Das Foto ist ein Hochformat-Porträt vom ganzen Oberkörper. Für den runden
   Ausschnitt wird es vergrößert und auf den Kopf ausgerichtet, statt Tisch
   und Hintergrund mitzuzeigen. Werte in Prozent der Kachel — sie bleiben
   damit auch bei geänderter Größe richtig.
   ⚠️ max-width:none ist Pflicht: subpages.css setzt global img{max-width:100%},
   sonst wird die Vergrößerung still auf 100 % gedeckelt und das Gesicht
   verschwindet in der Totale. */
.absender-foto{
  position:relative; display:block; flex:none;
  width:62px; height:62px; border-radius:50%; overflow:hidden;
  border:1px solid var(--gold-line); background:var(--bg-2);
}
.absender-foto img{
  position:absolute; left:50%; top:0;
  width:140%; max-width:none; height:auto; transform:translateX(-51%);
}
.absender-txt{ min-width:0; }
.absender-name{
  display:block; font-family:var(--font-primary); font-weight:500;
  font-size:15px; color:var(--text-strong); line-height:1.3;
}
.absender-rolle{
  display:block; margin-top:4px;
  font-family:var(--font-secondary); font-size:10.5px; letter-spacing:.1em;
  text-transform:uppercase; color:var(--gold); line-height:1.4;
}
.absender p{
  margin:10px 0 0; font-size:13px; line-height:1.65; color:var(--text-2);
}

/* ============================================================
   Ampeln (Ergebnisdarstellung, auch in der E-Mail-Vorlage genutzt)
   ============================================================ */
.ampel{
  display:inline-flex; align-items:center; gap:9px;
  font-family:var(--font-secondary); font-size:11px;
  letter-spacing:.14em; text-transform:uppercase;
}
.ampel::before{ content:""; width:7px; height:7px; border-radius:50%; flex:none; }
.ampel.gut::before{ background:var(--ok); }
.ampel.gut{ color:var(--ok); }
.ampel.mittel::before{ background:var(--warn); }
.ampel.mittel{ color:var(--warn); }
.ampel.kritisch::before{ background:var(--bad); }
.ampel.kritisch{ color:var(--bad); }

/* ============================================================
   Responsive
   ============================================================ */
@media (max-width:900px){
  .gate-grid{ grid-template-columns:1fr; gap:32px; }
  .danke-grid{ grid-template-columns:1fr; }
}
/* subpages.css stellt .person hier auf eine Spalte um. Weil check.css
   danach geladen wird, würde die dortige Media Query von .person--kurz
   überschrieben — der Umbruch muss deshalb hier wiederholt werden. */
@media (max-width:880px){
  .person--kurz{ grid-template-columns:1fr; gap:30px; }
  .person--kurz .portrait{ max-width:230px; }
}
@media (max-width:700px){
  .check-shell{ padding-top:120px; }
  /* Etwas enger gesetzt, damit Restzeit und Schrittzahl auf dem Telefon in
     einer Zeile bleiben — die Sperrung von .22em war dafür zu breit. */
  .fortschritt-txt{ font-size:11px; letter-spacing:.12em; }
  .fortschritt-nr{ font-size:10px; letter-spacing:.1em; }
  .f-optionen{ grid-template-columns:1fr; }
  .ergebnisliste li{ grid-template-columns:1fr; gap:10px; }
  .ergebnisliste li::before{ padding-top:0; }
  .check-nav{ flex-direction:column-reverse; align-items:stretch; }
  .check-nav .btn{ justify-content:center; }
  .euro{ max-width:none; }
  .euro input{ font-size:23px; }
  .form-card{ padding:32px 24px 26px; }
  .frm .row{ grid-template-columns:1fr; }
}

@media (prefers-reduced-motion:reduce){
  .schritt{ animation:none; }
  .fortschritt-bar span{ transition:none; }
}
