/*
 * RH Kontakt - gescoptes Stylesheet.
 *
 * WICHTIG: Diese Datei ist bewusst KOMPLETT ASCII (keine Umlaute/Sonderzeichen in
 * Kommentaren!). Grund: Wird die CSS vom Server/Optimierer nicht als UTF-8 behandelt,
 * verschluckt ein nicht-UTF-8-sicherer Minifier am kaputten Mehrbyte-Kommentar die
 * direkt folgende erste Regel (.rh-page{--tokens}) -> dann fehlen live ALLE Token-Styles.
 * Bitte ASCII-only halten. Die Seiten-Copy im HTML bleibt voll umlaut-korrekt (UTF-8).
 *
 * Aufbau analog rh-keramik.css (System: CLAUDE.md).
 *  - Design-Tokens auf ".rh-page" (nicht :root) -> Salient bleibt unberuehrt.
 *  - JEDER Selektor ist unter ".rh-page" gescopt.
 *  - Marken-Fonts per <link> im <head> (Template), NICHT per @import.
 *  - Seitenspezifisch: Termin-Buchung (Cal.com-Embed-Wrapper) + CF7-Formular-Styling.
 *
 * Desktop-first; Breakpoints am Dateiende (max-width).
 */

/* ============================================================
   Design Tokens (auf .rh-page gescopt, nicht :root)
   ============================================================ */
.rh-page{
  /* Brand */
  --rh-green-deep:#173528; --rh-green-deep-700:#1F4A37; --rh-green-deep-900:#0E2419;
  --rh-green:#A3F698; --rh-green-300:#C6F9BF; --rh-green-100:#E9FCE5; --rh-green-600:#7CE775;
  --rh-purple:#0C0533;
  /* Neutrals */
  --rh-white:#FFFFFF; --rh-paper:#F5F6F4; --rh-line:#E2E5E0; --rh-line-dark:#2B4A3B;
  --rh-grey-500:#8B8E99; --rh-grey-400:#B4B7BD;
  /* Semantic */
  /* --muted: dunkler als --rh-grey-500 (#8B8E99, ~3,3:1 -> WCAG-Fail). #5F6470 ~6:1. */
  --ink:var(--rh-purple); --body:#34303F; --muted:#5F6470;
  --on-dark:#FFFFFF; --on-dark-muted:#B7CABF;
  /* Semantisches Fehler-/Validierungs-Token. CLAUDE.md (S6) definiert keine Fehlerfarbe;
     rein gruene Validierung wuerde "Fehler" nicht kommunizieren -> dezidiertes Token statt
     verstreutem Hex-Literal. Bewusste, dokumentierte Ergaenzung zum CI. */
  --rh-error:#B3261E;
  /* Type */
  --font-display:'Clash Display','General Sans',system-ui,sans-serif;
  --font-sans:'General Sans',system-ui,-apple-system,Segoe UI,sans-serif;
  --font-mono:'JetBrains Mono',ui-monospace,Menlo,monospace;
  /* Radius & shadow */
  --r-md:18px; --r-lg:28px; --r-xl:40px; --r-pill:999px;
  --shadow-sm:0 1px 2px rgba(12,5,51,.06),0 1px 1px rgba(12,5,51,.04);
  --shadow-md:0 8px 24px rgba(12,5,51,.08);
  --shadow-lg:0 24px 60px rgba(12,5,51,.12);
  --shadow-glow:0 12px 40px rgba(163,246,152,.35);
  --ring:0 0 0 3px rgba(163,246,152,.55); /* gruener Fokus-Ring (CLAUDE.md) */

  font-family:var(--font-sans);color:var(--ink);background:var(--rh-white);
  /* Full-Bleed: aus Salients zentriertem Content-Container ausbrechen. Reines CSS
     greift nur bei symmetrischer Zentrierung -> das Template ergaenzt eine JS-Korrektur,
     die die echte Position misst. Dies hier ist der No-JS-Fallback. */
  width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);
  /* clip (nicht hidden!): klippt den 100vw-Fallback-Ueberlauf, macht .rh-page aber
     NICHT zum Scroll-Container. */
  overflow-x:clip;-webkit-font-smoothing:antialiased;
}

/* Restlichen horizontalen Scroll durch den Full-Bleed unterbinden (nur auf RH-Seiten). */
body.rh-fullwidth{overflow-x:clip;}

/* ============================================================
   Base (gescopt)
   ============================================================ */
.rh-page, .rh-page *{box-sizing:border-box;}
.rh-page ::selection{background:var(--rh-green);color:var(--rh-green-deep);}
.rh-page img{max-width:100%;display:block;}
.rh-page a{color:inherit;}

/* Layout */
.rh-page .rh-section{padding:96px 32px;}
.rh-page .rh-section--hero{padding:84px 32px 150px;background:radial-gradient(125% 120% at 75% 100%,#235540 0%,#173528 52%,#0E2419 100%);color:var(--on-dark);}
.rh-page .rh-section--muted{background:var(--rh-paper);}
.rh-page .rh-container{max-width:1160px;margin:0 auto;}
.rh-page .rh-narrow{max-width:760px;margin:0 auto;}
.rh-page .rh-center{text-align:center;}
/* Nur fuer Screenreader (visuell versteckte Section-Ueberschriften). */
.rh-page .rh-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}

/* Type */
.rh-page .rh-eyebrow{font-family:var(--font-mono);font-weight:600;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);}
.rh-page .rh-eyebrow--green{color:var(--rh-green);}
.rh-page .rh-h1{font-family:var(--font-display);font-weight:700;font-size:60px;line-height:1.02;letter-spacing:-.02em;margin:20px 0 0;}
.rh-page .rh-h2{font-family:var(--font-display);font-weight:700;font-size:44px;line-height:1.06;letter-spacing:-.02em;color:var(--ink);margin:16px 0 0;}
.rh-page .rh-h3{font-family:var(--font-display);font-weight:600;font-size:21px;line-height:1.1;letter-spacing:-.01em;color:var(--ink);margin:0 0 8px;}
.rh-page .rh-lead{font-family:var(--font-sans);font-size:19px;line-height:1.55;margin:22px 0 0;}
.rh-page .rh-body{font-family:var(--font-sans);font-size:17px;line-height:1.6;color:var(--muted);margin:0;}
.rh-page .rh-mark{background:var(--rh-green);color:var(--rh-green-deep);padding:.02em .14em;border-radius:6px;-webkit-box-decoration-break:clone;box-decoration-break:clone;}
.rh-page .rh-section--hero .rh-lead{color:var(--on-dark-muted);}

/* Fokus (a11y): gruener Marken-Ring statt UA-Default. */
.rh-page a:focus-visible{outline:none;box-shadow:var(--ring);border-radius:4px;}

/* ============================================================
   Hero (kompakt, zentriert)
   ============================================================ */
.rh-page .rh-hero__inner{max-width:760px;margin:0 auto;}

/* ============================================================
   Termin-Buchung (der Held). Die Card ragt per negativem Margin
   in den dunklen Hero hinein (Hero hat dafuer extra padding-bottom).
   ============================================================ */
.rh-page .rh-section--book{padding:0 32px 96px;margin-top:-110px;}
.rh-page .rh-book{position:relative;z-index:2;max-width:1000px;margin:0 auto;background:var(--rh-white);border:1px solid var(--rh-line);border-radius:var(--r-xl);box-shadow:var(--shadow-lg);padding:40px;}

/* Profil-Header */
.rh-page .rh-dev{display:flex;gap:24px;align-items:center;}
.rh-page .rh-dev__avatar{position:relative;flex:none;width:96px;height:96px;border-radius:50%;overflow:hidden;background:var(--rh-green-deep);display:flex;align-items:center;justify-content:center;}
.rh-page .rh-dev__initials{font-family:var(--font-display);font-weight:700;font-size:34px;color:var(--rh-green);}
.rh-page .rh-dev__avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.rh-page .rh-dev__body{min-width:0;}
.rh-page .rh-dev__name{margin:6px 0 0;}
.rh-page .rh-dev__role{font-family:var(--font-mono);font-weight:500;font-size:15px;letter-spacing:.01em;color:var(--muted);}
.rh-page .rh-dev__quote{font-family:var(--font-sans);font-size:16px;line-height:1.55;color:var(--body);margin:12px 0 0;max-width:560px;}

/* Trust-Chips (Mono-Pills mit gruenem Punkt) */
.rh-page .rh-dev__chips{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:10px;}
.rh-page .rh-chip{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-weight:600;font-size:12px;letter-spacing:.02em;color:var(--ink);background:var(--rh-paper);border:1px solid var(--rh-line);border-radius:var(--r-pill);padding:8px 14px;}
.rh-page .rh-chip__dot{width:7px;height:7px;border-radius:50%;background:var(--rh-green-600);flex:none;}

/* Cal.com Inline-Embed-Wrapper. min-height = Lade-Platzhalter, bevor das iframe da ist.
   Der eigentliche Kalender-Look kommt aus dem Cal-iframe (Brand-Farbe via JS gesetzt);
   unser CSS rahmt nur den Container ein. */
.rh-page .rh-cal{min-height:580px;margin-top:28px;border:1px solid var(--rh-line);border-radius:var(--r-lg);overflow:hidden;background:var(--rh-paper);}
/* Dezenter, immer sichtbarer Fallback-Hinweis unter dem Kalender (greift auch, wenn das
   Cal-Script durch Adblocker/CSP blockiert wird, waehrend JS aktiv ist). */
.rh-page .rh-cal__hint{font-family:var(--font-mono);font-size:12px;letter-spacing:.02em;color:var(--muted);text-align:center;margin:14px 0 0;}
.rh-page .rh-cal__hint a{color:var(--rh-green-deep);font-weight:600;text-decoration:underline;text-underline-offset:2px;}

/* Reassurance: 3 Mini-Schritte als Card-Footer. */
.rh-page .rh-flow{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:32px;padding-top:32px;border-top:1px solid var(--rh-line);}
.rh-page .rh-flow__step{display:flex;gap:14px;align-items:flex-start;}
.rh-page .rh-flow__num{flex:none;width:34px;height:34px;border-radius:50%;background:var(--rh-green);color:var(--rh-green-deep);font-family:var(--font-display);font-weight:700;font-size:16px;display:flex;align-items:center;justify-content:center;}
.rh-page .rh-flow .rh-h3{font-size:16px;margin-bottom:4px;}
.rh-page .rh-flow .rh-body{font-size:15px;}

/* ============================================================
   Nachricht schreiben (Fallback) + CF7-Card
   ============================================================ */
.rh-page .rh-form-head{max-width:620px;margin:0 auto;}
.rh-page .rh-form-sub{margin-top:14px;}
.rh-page .rh-form-card{background:var(--rh-white);border:1px solid var(--rh-line);border-radius:var(--r-xl);box-shadow:var(--shadow-md);padding:40px;margin-top:40px;}
.rh-page .rh-form-note{font-family:var(--font-sans);font-size:15px;line-height:1.6;color:var(--muted);margin:0;}
.rh-page .rh-form-note code{font-family:var(--font-mono);font-size:13px;background:var(--rh-paper);border:1px solid var(--rh-line);border-radius:6px;padding:1px 6px;}

/* ---- Contact Form 7 ans CI anpassen ----
   Salient stylt Formularfelder/Buttons hochspezifisch (das aktuelle dunkle Feld-Design
   stammt vom Theme). Die von Salient umkaempften Eigenschaften (background, color, border,
   border-radius, padding, font-family des Submit) tragen daher !important - JEDE Eigenschaft
   steht aber nur EINMAL (kein getrennter Hardening-Block mehr, der die Werte tot dupliziert).
   Spezifitaet .rh-page.rh-kontakt fuer konsistenten Vorrang. */
.rh-page.rh-kontakt .rh-form-card .wpcf7{font-family:var(--font-sans);}
.rh-page.rh-kontakt .rh-form-card .wpcf7-form p{margin:0 0 18px;}
.rh-page.rh-kontakt .rh-form-card .wpcf7-form label{display:block;font-family:var(--font-mono);font-weight:600;font-size:12px;letter-spacing:.04em;color:var(--ink);}
.rh-page.rh-kontakt .rh-form-card .wpcf7-form input[type=text],
.rh-page.rh-kontakt .rh-form-card .wpcf7-form input[type=email],
.rh-page.rh-kontakt .rh-form-card .wpcf7-form input[type=tel],
.rh-page.rh-kontakt .rh-form-card .wpcf7-form input[type=url],
.rh-page.rh-kontakt .rh-form-card .wpcf7-form textarea{
  width:100%;font-family:var(--font-sans);font-size:16px;margin-top:8px;
  padding:15px 18px!important;color:var(--ink)!important;background:var(--rh-white)!important;
  border:1.5px solid var(--rh-line)!important;border-radius:var(--r-md)!important;
  transition:border-color .18s ease,box-shadow .18s ease;
}
.rh-page.rh-kontakt .rh-form-card .wpcf7-form textarea{min-height:150px;resize:vertical;line-height:1.5;}
.rh-page.rh-kontakt .rh-form-card .wpcf7-form ::placeholder{color:var(--muted);opacity:1;}
.rh-page.rh-kontakt .rh-form-card .wpcf7-form input:focus,
.rh-page.rh-kontakt .rh-form-card .wpcf7-form textarea:focus{outline:none;border-color:var(--rh-green-600)!important;box-shadow:var(--ring)!important;}

/* Submit-Button als gruene Pill. background/color/radius + padding/font !important gegen
   Salients Button-Styling (sonst gruene Pill, aber falsches Padding/falsche Schrift). */
.rh-page.rh-kontakt .rh-form-card .wpcf7-form input[type=submit]{
  font-weight:600;font-size:15px;letter-spacing:.02em;margin-top:4px;cursor:pointer;
  border:1.5px solid transparent;font-family:var(--font-mono)!important;padding:16px 32px!important;
  background:var(--rh-green)!important;color:var(--rh-green-deep)!important;border-radius:var(--r-pill)!important;
  transition:background .18s ease,transform .12s ease,box-shadow .18s ease;
}
.rh-page.rh-kontakt .rh-form-card .wpcf7-form input[type=submit]:hover:not(:active){background:var(--rh-green-600)!important;transform:translateY(-1px);box-shadow:var(--shadow-glow);}
.rh-page.rh-kontakt .rh-form-card .wpcf7-form input[type=submit]:active{transform:scale(.97);}
.rh-page.rh-kontakt .rh-form-card .wpcf7-form input[type=submit]:focus-visible{outline:none;box-shadow:var(--ring);}

/* Validierung / Statusmeldungen (Fehlerfarbe per Token, siehe --rh-error). */
.rh-page.rh-kontakt .rh-form-card .wpcf7 .wpcf7-not-valid-tip{color:var(--rh-error);font-family:var(--font-sans);font-size:13px;margin-top:6px;}
.rh-page.rh-kontakt .rh-form-card .wpcf7-form input.wpcf7-not-valid,
.rh-page.rh-kontakt .rh-form-card .wpcf7-form textarea.wpcf7-not-valid{border-color:var(--rh-error)!important;}
.rh-page.rh-kontakt .rh-form-card .wpcf7 .wpcf7-response-output{font-family:var(--font-sans);font-size:14px;line-height:1.5;border-radius:var(--r-md);padding:14px 18px;margin:6px 0 0;}

/* ============================================================
   Dezente Animationen (ANIMATIONEN-HANDOFF.md), gescopt auf .rh-page.
   Hidden-Startzustand nur unter no-preference UND wenn JS .rh-anim setzt
   -> ohne JS bzw. bei "reduce" ist sofort alles sichtbar (kein FOUC).
   ============================================================ */
@media (prefers-reduced-motion: no-preference){
  .rh-page.rh-anim .rh-reveal{
    opacity:0;
    transform:translateY(18px);
    transition:opacity .6s cubic-bezier(.22,.61,.36,1),
               transform .6s cubic-bezier(.22,.61,.36,1);
    will-change:opacity,transform;
  }
  .rh-page.rh-anim .rh-reveal.is-in{opacity:1;transform:none;}
  .rh-page.rh-anim .rh-reveal.rh-force{opacity:1!important;transform:none!important;transition:none!important;}
}

/* Hinweis: Auf der Formular-Card BEWUSST kein Hover-Lift - eine Karte, in die man
   tippt, soll beim Hovern nicht als Ganzes wandern. */

/* ============================================================
   Theme-Hardening (Salient / Parent-Theme)
   Salient stylt h1-h3, <button>/<input> mit hochspezifischen bzw. !important-Regeln
   und hebelt sonst unsere gescopten Styles aus (Headline-Groesse/-Farbe, runder
   Button-Radius, dunkle Formularfelder). Wir erzwingen die Requesthub-Werte zurueck -
   mit erhoehter Spezifitaet (.rh-page.rh-kontakt) + !important.
   ============================================================ */
.rh-page.rh-kontakt .rh-h1{font:700 60px/1.02 var(--font-display)!important;letter-spacing:-.02em!important;}
.rh-page.rh-kontakt .rh-section--hero .rh-h1{color:var(--on-dark)!important;}
.rh-page.rh-kontakt .rh-h2{font:700 44px/1.06 var(--font-display)!important;letter-spacing:-.02em!important;color:var(--ink)!important;}
.rh-page.rh-kontakt .rh-dev__name{font-size:30px!important;}
.rh-page.rh-kontakt .rh-h3{font:600 21px/1.1 var(--font-display)!important;letter-spacing:-.01em!important;}
.rh-page.rh-kontakt .rh-flow .rh-h3{font-size:16px!important;}
.rh-page.rh-kontakt [hidden]{display:none!important;}
/* CF7-Felder/-Button gegen Salient: jetzt direkt im konsolidierten CF7-Block oben
   per !important abgesichert (keine getrennte, tote Duplikation mehr). */

/* ============================================================
   Responsive (max-width)
   ============================================================ */
@media (max-width:980px){
  .rh-page .rh-flow{grid-template-columns:1fr;gap:18px;}
  .rh-page.rh-kontakt .rh-h1{font-size:50px!important;}
  .rh-page.rh-kontakt .rh-h2{font-size:36px!important;}
  .rh-page.rh-kontakt .rh-dev__name{font-size:26px!important;}
}
@media (max-width:680px){
  .rh-page .rh-section--book{margin-top:-90px;}
  .rh-page .rh-book{padding:28px;}
  .rh-page .rh-form-card{padding:28px;}
}
@media (max-width:560px){
  .rh-page .rh-section{padding:64px 18px;}
  .rh-page .rh-section--hero{padding:64px 18px 120px;}
  .rh-page .rh-section--book{padding:0 18px 64px;margin-top:-80px;}
  .rh-page .rh-section--form{padding:64px 18px;}
  .rh-page.rh-kontakt .rh-h1{font-size:36px!important;}
  .rh-page.rh-kontakt .rh-h2{font-size:28px!important;}
  .rh-page.rh-kontakt .rh-dev__name{font-size:24px!important;}
  /* Profil auf schmalem Screen stapeln (Avatar oben, zentriert). */
  .rh-page .rh-dev{flex-direction:column;text-align:center;gap:16px;}
  .rh-page .rh-dev__quote{margin-left:auto;margin-right:auto;}
  .rh-page .rh-dev__chips{justify-content:center;}
  .rh-page .rh-flow__step{text-align:left;}
}

/* Reduzierte Bewegung respektieren (CLAUDE.md Abschnitt 11). */
@media (prefers-reduced-motion: reduce){
  .rh-page *{transition:none !important;animation:none !important;}
  .rh-page.rh-anim .rh-reveal{opacity:1 !important;transform:none !important;}
  .rh-page.rh-kontakt .rh-form-card .wpcf7-form input[type=submit]:active{transform:none;}
}
