.elementor-kit-7{--e-global-color-primary:#2D4A38;--e-global-color-secondary:#9C7A52;--e-global-color-text:#3A2C20;--e-global-color-accent:#3C6049;--e-global-typography-primary-font-family:"Roboto";--e-global-typography-primary-font-weight:600;--e-global-typography-secondary-font-family:"Roboto Slab";--e-global-typography-secondary-font-weight:400;--e-global-typography-text-font-family:"Roboto";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Roboto";--e-global-typography-accent-font-weight:500;font-family:"Work Sans", Sans-serif;}.elementor-kit-7 e-page-transition{background-color:#FFBC7D;}.elementor-kit-7 a{font-family:"Work Sans", Sans-serif;}.elementor-kit-7 h1{font-family:"Spectral", Sans-serif;}.elementor-kit-7 h2{font-family:"Spectral", Sans-serif;}.elementor-kit-7 h3{font-family:"Spectral", Sans-serif;}.elementor-kit-7 h4{font-family:"Spectral", Sans-serif;}.elementor-kit-7 h5{font-family:"Spectral", Sans-serif;}.elementor-kit-7 h6{font-family:"Spectral", Sans-serif;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1140px;}.e-con{--container-max-width:1140px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}
/* Start custom CSS *//* ============================================================
   KAISER INNENAUSBAU — GLOBALE DESIGN-TOKENS
   ------------------------------------------------------------
   EINMALIG einfügen unter:
   Elementor → Hamburger-Menü (oben links) → Website-Einstellungen
   → Benutzerdefiniertes CSS   (oder Theme-Customizer → Zusätzliches CSS)

   Schriften (Spectral + Work Sans) werden über
   Elementor → Eigene Schriftarten geladen – daher KEIN Google-Import
   und kein @font-face mehr nötig.
   ============================================================ */

:root{
  /* Farbwelt – Beige · Braun · Waldgrün (laut Design-Sheet) */
  --kai-creme:    #F6F0E4; /* Grund / Hintergrund        */
  --kai-beige:    #E7DBC4; /* Flächen / Karten           */
  --kai-eiche:    #9C7A52; /* Sekundär / Eyebrows        */
  --kai-walnuss:  #3A2C20; /* Text / Primär / dunkle Flächen */
  --kai-waldgruen:#2D4A38; /* Akzent / CTA               */
  --kai-moos:     #3C6049; /* Hover                      */

  /* --- BINDEGLIEDER (aus den Markenfarben abgeleitet, nicht erfunden) ---
     Braun ist warm (Gelbanteil), Waldgrün ist kühl – dazwischen klafft eine
     Lücke, deshalb wirkten die Farben unverbunden. OLIV teilt den Gelbanteil
     mit der Eiche und den Grünanteil mit dem Waldgrün: es ist der Ton, der
     beide Familien verheiratet. SAND schließt Beige an die Eiche an,
     TIEF ist ein warmes Fast-Schwarz für dunkle Bänder.                  */
  --kai-sand:     #DCCDB2; /* Beige  -> Eiche            */
  --kai-olive:    #6E7355; /* Eiche  -> Waldgrün  (Brücke) */
  --kai-tief:     #241C14; /* dunkelste Fläche           */
  --kai-sattel:   #54412C; /* helleres Braun für Hero-Flächen (Walnuss aufgehellt) */

  /* Eiche als TEXTfarbe: #9C7A52 schafft auf hellen Flächen nur 3.48:1 –
     zu wenig für die 12px-Eyebrows (WCAG AA verlangt 4.5:1). Dieser
     abgeleitete Ton schafft 4.53–6.68:1 auf Creme, Creme-2, Beige und Sand.
     --kai-eiche bleibt unverändert für dekorative Flächen.               */
  --kai-eiche-text: #6C5439;

  --kai-creme-2:  #FBF8F1; /* helleres Creme für Tiefe   */
  --kai-line:     rgba(58,44,32,.14); /* feine Linien     */
  --kai-hair:     rgba(110,115,85,.28); /* Haarlinie in Oliv */
  --kai-text:     #3A2C20;
  --kai-text-soft:#6B5B4B;
  --kai-text-inv: #F6F0E4;

  --kai-font-display:'Spectral', Georgia, 'Times New Roman', serif;
  --kai-font-body:'Work Sans', system-ui, -apple-system, Segoe UI, sans-serif;

  --kai-shadow-sm: 0 1px 2px rgba(58,44,32,.06), 0 6px 18px rgba(58,44,32,.08);
  --kai-shadow-md: 0 4px 10px rgba(58,44,32,.08), 0 20px 50px rgba(58,44,32,.14);
  --kai-radius: 14px;
  --kai-maxw: 1200px;
  --kai-nav-h: 84px;
}

html{ scroll-behavior:smooth; }
/* Sprungmarken nicht unter den Header schieben */
[id]{ scroll-margin-top: calc(var(--kai-nav-h) + 24px); }

/* ---- Feinschliff (Web Interface Guidelines) ---------------------------
   · touch-action: entfernt die 300ms-Verzögerung beim Antippen
   · tap-highlight: der graue Standard-Kasten auf iOS passt nicht ins Bild
   · text-wrap:balance: verhindert Schusterjungen in Überschriften      */
.kai-btn, .kai-jump a, .kai-area, .kai-burger, .kai-menu__close, .kai-acc__toggle{
  touch-action:manipulation;
  -webkit-tap-highlight-color:rgba(58,44,32,.12);
}
/* "pretty" statt "balance": balance verteilt die Zeilen neu und kämpft dabei
   gegen die manuell gesetzten <br> in den Überschriften (aus 2 Zeilen wurden
   3, aus 3 wurden 4). "pretty" verhindert nur Schusterjungen und respektiert
   die gesetzten Umbrüche. */
.kai-h2, .kai-hero__title, .kai-sub__title, .kai-row__title,
.kai-cta__title, .kai-endcta__title, .kai-cinfo__title{
  text-wrap:pretty;
}

/* ---- EYEBROW-FARBEN (Kontrast + Kaskade) -----------------------------
   ZWEI Fehler auf einmal behoben:
   1) Kontrast: Eiche auf hellem Grund = 3.48:1, zu wenig für 12px-Text.
   2) Kaskade: Die Blöcke werden hintereinander geladen. Block 03 definiert
      ein ungeschütztes `.kai-eyebrow`, das bei GLEICHER Spezifität das
      `.kai-eyebrow--light` aus Block 02 überschreibt – der Eyebrow im Hero
      rendert dadurch dunkelbraun auf dunkelbraun und ist kaum lesbar.
   Das !important zieht die Entscheidung hierher, unabhängig von der
   Reihenfolge der Blöcke. Die --light-Regel steht bewusst DANACH.       */
.kai-eyebrow{ color:var(--kai-eiche-text,#6C5439) !important; }

/* Auf dunklem Grund: heller Gold-Ton. Muss auf BEIDEN dunklen Flächen
   bestehen – Walnuss (Hero, 6.9:1) UND Waldgrün (CTA-Band, 4.9:1).
   Das alte #C9A876 verfehlte auf Grün mit 4.35:1 knapp die 4.5:1.       */
.kai-eyebrow--light{ color:#D5BC90 !important; }

/* Tap-Ziele mind. 24px hoch (WCAG 2.5.8). Die Links in Fußzeile und
   Kontaktliste waren nur 20–22px hoch. Der Innenabstand ersetzt den
   Listen-Abstand, damit die Optik unverändert bleibt.
   (Reine Fließtext-Links in Impressum/Datenschutz sind ausgenommen –
   dafür gilt die "inline"-Ausnahme der Richtlinie.)                    */
.kai-footer__col ul{ gap:.15rem; }
.kai-footer__col a,
.kai-footer__legal a,
.kai-cinfo__list a{
  display:inline-flex; align-items:center; min-height:24px; padding-block:2px;
}

@media (prefers-reduced-motion: reduce){
  *{ animation-duration:.001ms !important; transition-duration:.001ms !important; }
  html{ scroll-behavior:auto; }
}

/* ============================================================
   WEISSEN RAND & ADMIN-BAR RUNDUM ENTFERNEN
   Entfernt den Standard-Abstand von Body / Elementor-Containern
   & -Spalten, damit die Blöcke randlos bis zur Bildschirmkante
   gehen.
   ============================================================ */
html, body{ margin:0 !important; padding:0 !important; overflow-x:hidden; max-width:100%;
  background:var(--kai-creme,#F6F0E4) !important; } /* Seitenfarbe füllt Notch/Überscroll */

/* Startseite: dunkler Hero oben + dunkler Footer unten -> Seitenfarbe dunkel,
   damit oben/unten beim Überscrollen kein heller Rand erscheint.
   Sattel (nicht Walnuss), weil die Hero-Flächen jetzt das hellere Braun
   tragen – die Überscroll-Farbe muss zur OBERKANTE der Seite passen. */
body.home{ background:var(--kai-sattel,#54412C) !important; }

/* Dasselbe für jede Seite mit dunklem Seitenkopf. Die Klasse setzt der
   jeweilige Block per Mini-Skript selbst – so bleibt er eigenständig und
   du musst in WordPress nichts konfigurieren. */
body.kai-dark-top{ background:var(--kai-sattel,#54412C) !important; }

/* Elementor-Container & klassische Sektionen bis zum Rand */
.e-con, .e-con-inner,
.elementor-section.elementor-section-boxed > .elementor-container{
  max-width:100% !important;
}
.e-con, .e-con-inner{ padding-left:0 !important; padding-right:0 !important; }
.elementor-column-gap-default > .elementor-row > .elementor-column > .elementor-element-populated{ padding:0 !important; }
.elementor-widget-html{ margin:0 !important; }

/* Versteckt die WordPress-Adminleiste im Frontend */
#wpadminbar{ display:none !important; }
html{ margin-top:0 !important; } /* entfernt den 32px-Platz der Adminleiste */

/* ============================================================
   MENÜ / SCHLIESSEN – Theme-Hoverfarbe (Pink) neutralisieren
   ------------------------------------------------------------
   Der „MENÜ"-Burger und der „SCHLIESSEN"-Button sind <button>-
   Elemente. Das Theme färbt Buttons/Links beim Hover pink –
   hier zwingen wir sie zurück in die Kaiser-Farben, mit
   transparentem Hintergrund (kein Kasten).
   ============================================================ */
.kai-burger, .kai-burger:hover, .kai-burger:focus, .kai-burger:active,
.kai-menu__close, .kai-menu__close:hover, .kai-menu__close:focus, .kai-menu__close:active,
.kai-acc__toggle, .kai-acc__toggle:hover, .kai-acc__toggle:focus, .kai-acc__toggle:active{
  background:transparent !important;
  box-shadow:none !important;
  border-color:transparent !important;
  text-decoration:none !important;
}

/* „MENÜ" – Farbe je nach Header-Zustand, auch beim Hover */
.kai-burger:hover{ color:var(--kai-walnuss) !important; }
.kai-nav.is-light .kai-burger:hover{ color:var(--kai-creme) !important; }
.kai-nav.is-light.is-scrolled .kai-burger:hover{ color:var(--kai-walnuss) !important; }

/* „SCHLIESSEN" – liegt immer auf dunklem Overlay, also hell */
.kai-menu__close{ color:var(--kai-creme) !important; }
.kai-menu__close:hover{ color:#FFFFFF !important; }

/* ============================================================
   KONTAKT-FORMULARBEREICH (echter Elementor-Bereich)
   ------------------------------------------------------------
   Hebt für diesen einen Bereich den Vollbreite-Reset auf:
   wieder zentriert (max. 1200) + seitlicher Innenabstand.
   Dem äußeren Container dazu die CSS-Klasse "kai-formsection"
   geben (Elementor → Erweitert → CSS-Klassen).
   ============================================================ */
.kai-formsection.e-con{
  max-width:1200px !important;
  margin-left:auto !important;
  margin-right:auto !important;
  padding-left:clamp(20px,5vw,40px) !important;
  padding-right:clamp(20px,5vw,40px) !important;
}
@media (max-width:880px){
  .kai-formsection.e-con{ grid-template-columns:1fr !important; }
}

/* ============================================================
   BUTTON-TEXTFARBEN – Theme-Linkfarbe (Blau) neutralisieren
   ------------------------------------------------------------
   Themes färben <a>-Buttons beim Hover/Visited blau. Hier setzen
   wir für alle Kaiser-Buttons die richtige Textfarbe in JEDEM
   Zustand fest.
   ============================================================ */
.kai-btn--cta,    .kai-btn--cta:link,    .kai-btn--cta:visited,    .kai-btn--cta:hover,    .kai-btn--cta:focus,    .kai-btn--cta:active,
.kai-btn--solid,  .kai-btn--solid:link,  .kai-btn--solid:visited,  .kai-btn--solid:hover,  .kai-btn--solid:focus,  .kai-btn--solid:active,
.kai-btn--ghost,  .kai-btn--ghost:link,  .kai-btn--ghost:visited,  .kai-btn--ghost:hover,  .kai-btn--ghost:focus,  .kai-btn--ghost:active{
  color:var(--kai-creme,#F6F0E4) !important;
}
.kai-btn--line, .kai-btn--line:link, .kai-btn--line:visited, .kai-btn--line:hover, .kai-btn--line:focus, .kai-btn--line:active{
  color:var(--kai-walnuss,#3A2C20) !important;
}
/* Ausnahme: Button im grünen CTA-Band ist creme-farben mit dunkler Schrift */
.kai-cta .kai-btn--cta, .kai-cta .kai-btn--cta:link, .kai-cta .kai-btn--cta:visited,
.kai-cta .kai-btn--cta:hover, .kai-cta .kai-btn--cta:focus, .kai-cta .kai-btn--cta:active{
  color:var(--kai-walnuss,#3A2C20) !important;
}
/* Sprung-Chips (Unterseiten): Standard dunkel, Hover creme */
.kai-jump a:link, .kai-jump a:visited{ color:var(--kai-walnuss,#3A2C20) !important; }
.kai-jump a:hover, .kai-jump a:focus{ color:var(--kai-creme,#F6F0E4) !important; }

/* ============================================================
   THEME-PINK BEI LINKS/TEXTEN ENTFERNEN (Formular + Textfelder)
   ------------------------------------------------------------
   „Normale" Links (ohne eigene kai-Klasse) bekommen Kaiser-Grün.
   Eigene gestylte Block-Links bleiben unberührt (haben Klassen).
   ============================================================ */
/* Formular: Einwilligungs-/Checkbox-Texte in Kaiser-Braun */
.elementor-widget-form .elementor-field-type-acceptance,
.elementor-widget-form .elementor-field-type-acceptance label,
.elementor-widget-form .elementor-field-subgroup label{
  color:var(--kai-text-soft,#6B5B4B) !important;
}
/* NUR der Datenschutz-Link in der Einwilligung (Kontaktformular):
   Waldgrün + Unterstrich. Sonst nichts. */
.elementor-widget-form .elementor-field-type-acceptance a,
.elementor-widget-form .elementor-field-type-acceptance a:visited{
  color:var(--kai-waldgruen,#2D4A38) !important; text-decoration:underline; text-underline-offset:2px;
}
.elementor-widget-form .elementor-field-type-acceptance a:hover,
.elementor-widget-form .elementor-field-type-acceptance a:focus{
  color:var(--kai-moos,#3C6049) !important;
}

/* ============================================================
   BEWEGUNG · „ALLES WIRD EINGEPASST"
   ------------------------------------------------------------
   Drei Gesten, mehr nicht:
     1. AUFSTEIGEN  – Texte/Karten steigen gestaffelt ein
     2. EINPASSEN   – Bilder werden von oben nach unten gesetzt
     3. ZIEHEN      – die Maßlinie zeichnet sich (Signatur)

   SICHERHEITSNETZ: Versteckt wird ausschließlich innerhalb von
   `html.kai-motion`. Diese Klasse setzt das Skript im Header —
   und NUR, wenn JS läuft und der Nutzer Bewegung erlaubt.
   Ohne JS / bei „Bewegung reduzieren" ist alles sofort sichtbar.
   Niemals eine Regel hier ohne `.kai-motion` davor schreiben.
   ============================================================ */
:root{
  --kai-ease: cubic-bezier(.22,1,.36,1); /* entschlossen, setzt sich sauber */
  --kai-dur:  .9s;
}

/* !!! SPEZIFITÄT !!!
   Alle Versteck-Selektoren stehen in :where(), damit sie die Spezifität
   von `.kai-motion` (0,1,0) NICHT erhöhen. Sonst schlägt z. B.
   `.kai-motion .kai-row__text p` (0,2,1) die Einblend-Regel
   `.kai-motion .is-in` (0,2,0) – und der Absatz bleibt für immer
   unsichtbar. Genau das ist hier schon einmal passiert.
   Neue Selektoren IMMER in :where() ergänzen.                        */

/* --- 1. AUFSTEIGEN ------------------------------------------ */
.kai-motion :where(
  .kai-eyebrow, .kai-endcta__eyebrow, .kai-h2,
  .kai-hero__lead, .kai-hero__actions, .kai-hero__meta,
  .kai-areas__intro, .kai-area,
  .kai-trust__lead, .kai-trust__points, .kai-trust__text .kai-btn,
  .kai-gallery__head .kai-btn,
  .kai-cta__title, .kai-cta__lead, .kai-cta__actions,
  .kai-endcta__title, .kai-endcta__lead, .kai-endcta__actions,
  .kai-sub__title, .kai-sub__lead, .kai-jump,
  .kai-row__title, .kai-row__text p, .kai-row__list,
  .kai-cinfo__title, .kai-cinfo__lead, .kai-cinfo__list, .kai-cinfo__impressum
){
  opacity:0; transform:translateY(14px);
  transition:opacity var(--kai-dur) var(--kai-ease), transform var(--kai-dur) var(--kai-ease);
  transition-delay:calc(var(--kai-i,0) * 55ms);
}

/* --- 2. EINPASSEN (Bilder) ---------------------------------- */
.kai-motion :where(.kai-hero__media, .kai-trust__media, .kai-row__media, .kai-gitem){
  opacity:0; transform:translateY(10px);
  transition:opacity var(--kai-dur) var(--kai-ease), transform var(--kai-dur) var(--kai-ease);
  transition-delay:calc(var(--kai-i,0) * 55ms);
}
/* Das Bild selbst wird wie ein Paneel von oben nach unten gesetzt.
   Reines clip-path – KEIN scale, damit nichts beschnitten wird. */
.kai-motion :where(.kai-hero__media, .kai-trust__media, .kai-row__media, .kai-gitem) img{
  clip-path:inset(0 0 100% 0);
  transition:clip-path .95s var(--kai-ease);
  transition-delay:calc(var(--kai-i,0) * 55ms + 90ms);
}
.kai-motion .is-in img{ clip-path:inset(0 0 0 0); }

/* --- Sichtbarer Endzustand (für 1 + 2) ---------------------- */
.kai-motion .is-in{ opacity:1; transform:none; }

/* --- Hero-Headline: Wort für Wort --------------------------- */
.kai-motion .kai-hero__title{ opacity:0; transition:opacity .5s linear; }
.kai-motion .kai-hero__title.is-in{ opacity:1; }
.kai-motion .kai-hero__title .kai-word{
  display:inline-block; opacity:0; transform:translateY(.55em);
  transition:opacity .9s var(--kai-ease), transform .9s var(--kai-ease);
  transition-delay:calc(var(--kai-i,0) * 110ms + 120ms);
}
.kai-motion .kai-hero__title.is-in .kai-word{ opacity:1; transform:none; }

/* ============================================================
   MATERIAL · FEINE KÖRNUNG
   ------------------------------------------------------------
   Lässt Creme wie Papier/Holz wirken statt wie flaches CSS.
   Das <div> wird vom Header-Skript eingehängt (auch bei
   reduzierter Bewegung – Körnung ist keine Animation).
   ============================================================ */
.kai-grain{
  position:fixed; inset:0; z-index:3; pointer-events:none;
  opacity:.05; mix-blend-mode:overlay;
  background-repeat:repeat; background-size:180px 180px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");
}/* End custom CSS */
/* Start Custom Fonts CSS */@font-face {
	font-family: 'Work Sans';
	font-style: normal;
	font-weight: 300;
	font-display: auto;
	src: url('https://kaiser-innenausbau.de/wp-content/uploads/2026/06/work-sans-300.woff2') format('woff2');
}
@font-face {
	font-family: 'Work Sans';
	font-style: normal;
	font-weight: 400;
	font-display: auto;
	src: url('https://kaiser-innenausbau.de/wp-content/uploads/2026/06/work-sans-400.woff2') format('woff2');
}
@font-face {
	font-family: 'Work Sans';
	font-style: normal;
	font-weight: 500;
	font-display: auto;
	src: url('https://kaiser-innenausbau.de/wp-content/uploads/2026/06/work-sans-500.woff2') format('woff2');
}
@font-face {
	font-family: 'Work Sans';
	font-style: normal;
	font-weight: 600;
	font-display: auto;
	src: url('https://kaiser-innenausbau.de/wp-content/uploads/2026/06/work-sans-600.woff2') format('woff2');
}
/* End Custom Fonts CSS */
/* Start Custom Fonts CSS */@font-face {
	font-family: 'Spectral';
	font-style: normal;
	font-weight: 400;
	font-display: auto;
	src: url('https://kaiser-innenausbau.de/wp-content/uploads/2026/06/spectral-400.woff2') format('woff2');
}
@font-face {
	font-family: 'Spectral';
	font-style: normal;
	font-weight: 500;
	font-display: auto;
	src: url('https://kaiser-innenausbau.de/wp-content/uploads/2026/06/spectral-500.woff2') format('woff2');
}
@font-face {
	font-family: 'Spectral';
	font-style: normal;
	font-weight: 600;
	font-display: auto;
	src: url('https://kaiser-innenausbau.de/wp-content/uploads/2026/06/spectral-600.woff2') format('woff2');
}
@font-face {
	font-family: 'Spectral';
	font-style: normal;
	font-weight: 700;
	font-display: auto;
	src: url('https://kaiser-innenausbau.de/wp-content/uploads/2026/06/spectral-700.woff2') format('woff2');
}
/* End Custom Fonts CSS */