/* Nunito, self-hosted (variable font, covers weights 200-900) */
@font-face {
  font-family: "Nunito";
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url(/assets/fonts/nunito-latin.woff2) format("woff2");
}

/* ---------- Reset / base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body, h1, h2, h3, h4, p, ul, ol, li, figure { margin: 0; padding: 0; }
ul, ol { list-style: none; }
img, iframe, audio, video { max-width: 100%; }
img { height: auto; display: block; }
button { font: inherit; }

body {
  font-family: "Nunito", "Segoe UI", Arial, sans-serif;
  font-size: 14px;
  line-height: 1.7em;
  font-weight: 400;
  color: #666;
  background: #fff;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
a { color: #ea2ca4; text-decoration: none; }
p { padding-bottom: 1em; }
p:last-of-type { padding-bottom: 0; }
strong { font-weight: 700; }

.container { width: 90%; max-width: 1920px; margin: 0 auto; position: relative; }
.container::after, #footer-widgets::after, .row::after { content: ""; display: block; clear: both; }

/* boxed layout */
#page {
  width: 90%;
  max-width: 2080px;
  margin: 0 auto;
  background: #fff;
  box-shadow: 0 0 10px rgba(0, 0, 0, .2);
}

/* ---------- Header ---------- */
#masthead { position: sticky; top: 0; z-index: 1000; }

#top-header {
  background: #969696;
  color: #fff;
  font-size: 12px;
  line-height: 1em;
  font-weight: 600;
}
#top-header .container { padding-top: .75em; }
#top-header a { color: #fff; }
#et-info { height: 21px; display: block; line-height: 12px; }
#et-info > *, #et-info a { display: inline-block; vertical-align: top; }
#et-info-phone { margin-right: 13px; }
#et-info-phone, #et-info-email { position: relative; }
#et-info-email:hover { opacity: .7; transition: all .4s ease-in-out; }
.ico { width: 12px; height: 12px; margin-right: 3px; vertical-align: -1px; }

#main-header {
  background: #fff;
  box-shadow: 0 1px 0 rgba(0, 0, 0, .1);
  font-weight: 400;
  line-height: 23px;
  transition: background-color .4s, color .4s, opacity .4s ease-in-out;
}
#masthead.fixed #main-header { box-shadow: 0 0 7px rgba(0, 0, 0, .1); }
.menu-container { height: 92px; transition: height .4s; }
#masthead.fixed .menu-container { height: 80px; }

.logo-container { float: left; height: 100%; display: flex; align-items: center; }
.logo-container a { display: block; line-height: 0; }
#logo { height: 92px; width: auto; max-width: none; margin: -3px 0 0 5px; transition: height .4s; }
#masthead.fixed #logo { height: 80px; }

#top-navigation { float: right; padding-top: 39px; transition: padding .4s; }
#masthead.fixed #top-navigation { padding-top: 34px; }

#top-menu { display: flex; align-items: flex-start; }
#top-menu > li {
  display: inline-block;
  position: relative;
  line-height: 1em;
  padding-right: 26px;
  font-size: 14px;
}
#top-menu > li:last-child { padding-right: 0; }
#top-menu a {
  display: block;
  color: #000;
  font-weight: 700;
  padding-bottom: 39px;
  line-height: 1em;
  transition: all .4s;
}
#masthead.fixed #top-menu > li > a { font-size: 12px; padding-bottom: 34px; }
#top-menu > li.current > a, #masthead #top-menu > li.current > a { color: #777; }
#top-menu a:hover { opacity: .7; }

/* dropdown arrow */
#top-menu > li.has-children > a { padding-right: 19px; position: relative; }
#top-menu > li.has-children > a::after {
  content: "";
  position: absolute;
  right: 4px;
  top: .25em;
  width: 5px;
  height: 5px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(45deg);
}

#top-menu .sub-menu {
  position: absolute;
  top: calc(100% - 0px);
  left: 0;
  width: 240px;
  padding: 20px 0;
  background: #fff;
  border-top: 3px solid #777;
  box-shadow: 0 2px 5px rgba(0, 0, 0, .1);
  text-align: left;
  visibility: hidden;
  opacity: 0;
  transition: opacity .4s ease-in-out, visibility .4s;
  z-index: 9999;
}
#top-menu li.has-children:hover > .sub-menu,
#top-menu li.has-children:focus-within > .sub-menu { visibility: visible; opacity: 1; }
#top-menu .sub-menu li { padding: 0 20px; line-height: 2em; font-size: 14px; }
#top-menu .sub-menu a { padding: 6px 0; width: 100%; font-size: 14px; line-height: 1.4em; }
#masthead.fixed #top-menu .sub-menu a { font-size: 14px; padding: 6px 0; }
#top-menu .sub-menu li.current > a { color: #777; }
#top-menu .sub-menu a:hover { background: rgba(0, 0, 0, .03); opacity: .7; }

.mobile-toggle { display: none; }

/* ---------- Page sections ---------- */
.section { position: relative; padding: 11px 0; }

.section.hero {
  min-height: var(--min-h, 467px);
  background-color: rgba(255, 255, 255, 0);
  background-image: var(--bg, none), linear-gradient(90deg, rgba(240, 242, 246, .5) 0%, rgba(255, 255, 255, 0) 100%);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
.section.content {
  min-height: 160px;
  background-color: #e2e2e2;
  background-image: linear-gradient(90deg, rgba(240, 242, 246, .5) 0%, rgba(255, 255, 255, 0) 100%);
}

.row { width: 90%; max-width: 1920px; margin: 0 auto; padding: 2% 0; position: relative; }
.section.content .row:first-child { padding-top: 23px; padding-bottom: 15px; }

.col { float: left; margin-right: 5.5%; position: relative; }
.col:last-child { margin-right: 0; }
.col-4_4 { width: 100%; }
.col-1_2 { width: 47.25%; }
.col-1_3 { width: 29.6667%; }
.col-2_3 { width: 64.833%; }
.col .module { margin-bottom: 5.82%; position: relative; }
.col-4_4 .module { margin-bottom: 2.75%; }
.col .module:last-child { margin-bottom: 0; }

/* text module */
.module.text { line-height: 1.75em; background: #fff; border: 9px solid #fff; overflow-wrap: break-word; word-wrap: break-word; }
.text-inner > :last-child { padding-bottom: 0; }
.text-inner ul { list-style: disc; padding: 0 0 23px 1em; line-height: 26px; }
.text-inner ol { list-style: decimal; list-style-position: inside; padding: 0 0 23px; line-height: 26px; }
.text-inner li ul, .text-inner li ol { padding: 2px 0 2px 20px; }
.text-inner audio { display: block; width: 100%; }
.text-inner audio + p { padding-top: 0; }

.fs12 { font-size: 12pt; }
.fs18 { font-size: 18pt; }
.c333 { color: #333; }
.c808 { color: #808080; }
.c000 { color: #000; }
.cpink { color: #db3172; }

/* image module */
.module.image { text-align: center; }
.image-wrap { display: inline-block; vertical-align: top; position: relative; max-width: 100%; border: 14px solid #fff; background: #fff; }
.image-wrap img { width: auto; max-width: 100%; }

/* notice box (Krisenhinweis, Verfügbarkeit) */
.notice { background: #f4f4f4; border-left: 4px solid #db3172; padding: 14px 18px 8px; }
.notice ul { padding-bottom: 12px; }
.notice > :last-child { padding-bottom: 6px; }

/* link button */
.btn { display: inline-block; font-size: 16px; font-weight: 600; color: #fff; background: #db3172; border: 2px solid #db3172; border-radius: 3px; padding: .3em 1.1em; transition: background-color .2s, color .2s; }
.btn:hover { background: #fff; color: #db3172; opacity: 1; }

/* map placeholder (click-to-load, no third-party request before consent) */
.module.map { background: #fff; border: 6px solid #fff; }
.map-box { min-height: 450px; background: #e2e2e2; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 20px; }
.map-box p { padding-bottom: .6em; max-width: 36em; }
.map-box iframe { width: 100%; height: 450px; border: 0; display: block; }
.map-load {
  font-size: 16px; font-weight: 600; color: #333; background: #fff; border: 2px solid #333; border-radius: 3px;
  padding: .3em 1em; cursor: pointer; transition: background-color .2s;
}
.map-load:hover { background: rgba(0, 0, 0, .05); }

/* kontakt: banner sits directly above the first box */
.page-kontakt-2 .section.content .row:first-child { padding-top: 0; }

/* legal pages: black text like the original */
.legal .text-inner { color: #000; }

/* ---------- Footer ---------- */
#main-footer { background: #969696; color: #fff; }
#footer-widgets { padding: 6% 0 0; }
.footer-widget { float: left; width: 29.6667%; margin-right: 5.5%; margin-bottom: 7.5%; line-height: 1.7em; }
.footer-widget:last-child { margin-right: 0; }
.footer-widget h4 { font-size: 18px; font-weight: 400; line-height: 1em; padding-bottom: 10px; color: #000; }
.footer-widget a { color: #fff; }
.footer-crisis { clear: both; font-size: 13px; line-height: 1.7em; padding: 0 0 4%; }
.footer-widget a:hover { opacity: .7; }

#footer-bottom { background: #969696; padding: 15px 0 5px; }
#footer-info { color: #fff; font-weight: 700; padding-bottom: 10px; float: left; line-height: 1.4em; }
.social-icons { float: right; }
.social-icons li { float: left; margin-left: 20px; }
.social-icons a { color: #fff; display: block; width: 24px; height: 24px; }
.social-icons a:hover { color: #d1d1d1; }
.social-icons svg { width: 24px; height: 24px; display: block; }

/* ---------- Tablet / mobile ---------- */
@media (max-width: 980px) {
  .menu-container { height: 68px; }
  #masthead.fixed .menu-container { height: 68px; }
  #logo, #masthead.fixed #logo { height: 44px; margin: -6px 0 0 6px; }
  #top-header { text-align: center; }
  #top-header .container { padding-top: .75em; }
  #et-info { height: auto; padding-bottom: .75em; line-height: 12px; }
  .logo-container { align-items: center; }

  #top-navigation { padding: 0; height: 100%; display: flex; align-items: center; position: static; }
  #masthead.fixed #top-navigation { padding: 0; }

  .mobile-toggle {
    display: block;
    width: 44px;
    height: 44px;
    padding: 0;
    border: 0;
    background: none;
    cursor: pointer;
    position: relative;
  }
  .mobile-toggle span, .mobile-toggle span::before, .mobile-toggle span::after {
    display: block;
    position: absolute;
    left: 7px;
    width: 30px;
    height: 4px;
    background: #d1d1d1;
    border-radius: 1px;
    transition: transform .2s, opacity .2s;
  }
  .mobile-toggle span { top: 20px; }
  .mobile-toggle span::before { content: ""; top: -9px; left: 0; }
  .mobile-toggle span::after { content: ""; top: 9px; left: 0; }
  .mobile-toggle[aria-expanded="true"] span { background: transparent; }
  .mobile-toggle[aria-expanded="true"] span::before { transform: translateY(9px) rotate(45deg); }
  .mobile-toggle[aria-expanded="true"] span::after { transform: translateY(-9px) rotate(-45deg); }

  #top-menu-nav {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    background: #fff;
    border-top: 3px solid #d1d1d1;
    box-shadow: 0 2px 5px rgba(0, 0, 0, .1);
    padding: 5%;
    z-index: 9999;
  }
  #masthead.menu-open #top-menu-nav { display: block; }
  #top-menu { display: block; }
  #top-menu > li { display: block; padding: 0; font-size: 14px; }
  #top-menu a, #masthead.fixed #top-menu > li > a {
    padding: 10px 5%;
    font-size: 14px;
    border-bottom: 1px solid rgba(0, 0, 0, .03);
    line-height: 1.7em;
  }
  #top-menu > li.has-children > a { padding-right: 5%; }
  #top-menu > li.has-children > a::after { display: none; }
  #top-menu .sub-menu {
    position: static;
    visibility: visible;
    opacity: 1;
    width: auto;
    padding: 0 0 0 10px;
    border: 0;
    box-shadow: none;
    background: transparent;
  }
  #top-menu .sub-menu li { padding: 0 0 0 5%; line-height: 1.7em; }
  #top-menu .sub-menu a, #masthead.fixed #top-menu .sub-menu a { padding: 10px 5%; width: auto; line-height: 1.7em; }

  /* columns stack */
  .col, .col-1_2, .col-1_3, .col-2_3, .col-4_4 { width: 100%; margin: 0 0 30px; float: none; }
  .col:last-child { margin-bottom: 0; }
  .col .module, .col-4_4 .module { margin-bottom: 30px; }
  .col .module:last-child { margin-bottom: 0; }

  #footer-widgets { padding-top: 6%; }
  .footer-widget { float: none; width: 100%; margin: 0 0 43px; }
  #footer-info, .social-icons { float: none; }
}

@media (max-width: 767px) {
  .section.hero.kopfbild {
    background-size: contain;
    background-position: center center;
    background-repeat: no-repeat;
    min-height: 0;
    height: auto;
    aspect-ratio: 3.6 / 1;
    box-sizing: content-box;
    background-origin: content-box;
    padding-top: 11px;
    padding-bottom: 11px;
    background-image: var(--bg, none);
  }
  .section.content { padding: 11px 0; }
  .section.content .row:first-child { padding-top: 11px; }
  .map-box { min-height: 300px; }
  .map-box iframe { height: 300px; }
  #footer-bottom .container { text-align: center; }
  .social-icons { display: flex; justify-content: center; margin: 0 0 10px; }
  .social-icons li:first-child { margin-left: 0; }
}

@media print {
  #masthead { position: static; }
  #top-menu-nav, .mobile-toggle { display: none; }
}

/* =====================================================================
   Design "Warm & herzlich": Creme, Terrakotta, runde Formen.
   Farben, Radien und Schatten lassen sich über die Variablen steuern.
   Dieser Block überschreibt die Grundregeln weiter oben.
   ===================================================================== */
:root {
  --font-body: "Nunito", "Segoe UI", sans-serif;
  --font-head: "Nunito", "Segoe UI", sans-serif;
  --fs-text: 17.5px; --head-weight: 800;
  --bg: #fbf5ec; --text: #5a4a42; --head: #6b3f30;
  --accent: #c8573f; --accent-dark: #ae442e; --accent-soft: #fbe9e1;
  --card-bg: #ffffff; --card-line: #f0e3d3;
  --radius: 26px; --radius-sm: 16px;
  --shadow: 0 10px 30px rgba(140, 90, 50, .10);
  --topbar-bg: #efdcc5; --topbar-ink: #6b3f30;
  --header-bg: #fffaf3; --nav-ink: #5a3a2e; --nav-active: #c8573f;
  --footer-bg: #6b4a3d; --footer-ink: #fbeee2; --footer-head: #ffd9bf;
  --hero-radius: 34px;
}

html body {
  font-family: var(--font-body);
  font-size: var(--fs-base, 16px);
  color: var(--text);
  background: var(--bg);
  line-height: 1.7;
}
a { color: var(--accent); }
.fs12 { font-size: var(--fs-text, 17px); }
.fs18 { font-size: var(--fs-head, 26px); }
.c333, .c808, .c000 { color: var(--text); }
.cpink { color: var(--accent); }
.legal .text-inner { color: var(--text); }

/* Seitenrahmen: kein Kasten mehr, lesbare Breite */
#page { width: 100%; max-width: none; background: transparent; box-shadow: none; }
.container, .row { max-width: 1180px; }

/* ---------- Kopf ---------- */
#top-header { background: var(--topbar-bg); color: var(--topbar-ink); font-size: 13px; font-weight: 600; }
#top-header a { color: var(--topbar-ink); }
#main-header { background: var(--header-bg); box-shadow: var(--header-shadow, 0 1px 0 rgba(0,0,0,.06)); }
#masthead.fixed #main-header { box-shadow: var(--header-shadow-fixed, 0 4px 18px rgba(0,0,0,.08)); }
#top-menu > li { font-size: 15px; }
#top-menu a { color: var(--nav-ink); font-weight: var(--nav-weight, 600); }
#masthead.fixed #top-menu > li > a { font-size: 14px; }
#top-menu > li.current > a, #masthead #top-menu > li.current > a {
  color: var(--nav-active);
  text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 8px; text-decoration-color: var(--accent);
}
#top-menu a:hover { opacity: 1; color: var(--accent); }
#top-menu .sub-menu { background: var(--card-bg); border-top: 3px solid var(--accent); border-radius: 0 0 var(--radius-sm, 10px) var(--radius-sm, 10px); box-shadow: 0 12px 30px rgba(0,0,0,.12); }
#top-menu .sub-menu a { font-weight: 500; font-size: 15px; }
#top-menu .sub-menu li.current > a { color: var(--accent); text-decoration: none; }
#top-menu .sub-menu a:hover { background: var(--accent-soft); color: var(--accent); }

/* ---------- Kopfbild ---------- */
.section.hero { min-height: min(var(--min-h, 467px), 440px); }
@media (min-width: 768px) {
  .section.hero.kopfbild {
    width: 90%; max-width: 1180px; margin: var(--hero-gap, 26px) auto 0;
    border-radius: var(--hero-radius, 24px);
    box-shadow: var(--hero-shadow, var(--shadow));
    background-image: var(--bg);
  }
}

/* ---------- Inhalt ---------- */
.section.content { background: var(--content-bg, transparent); background-image: var(--content-img, none); padding: 0 0 20px; }
.section.content .row { padding: 14px 0; }
.section.content .row:first-child { padding-top: 26px; padding-bottom: 14px; }
.page-kontakt-2 .section.content .row:first-child { padding-top: 26px; }
.col-4_4 .module { margin-bottom: 0; }

.module.text {
  background: var(--card-bg); border: 1px solid var(--card-line, transparent);
  border-radius: var(--radius); box-shadow: var(--shadow);
  padding: var(--card-pad, 28px 34px);
  line-height: 1.75;
}
.text-inner .fs18 { font-family: var(--font-head); color: var(--head); font-weight: var(--head-weight, 700); line-height: 1.25; letter-spacing: var(--head-spacing, 0); }
.text-inner .fs18 strong { font-weight: inherit; }
.text-inner p { padding-bottom: 1.05em; }
.text-inner a { text-decoration: underline; text-decoration-color: color-mix(in srgb, var(--accent) 45%, transparent); text-underline-offset: 3px; }
.text-inner a:hover { text-decoration-color: var(--accent); }
.text-inner ul { line-height: 1.7; padding-left: 1.2em; }
.text-inner li { padding-bottom: .25em; }
.text-inner li::marker { color: var(--accent); }
.module.image .image-wrap { border: 0; background: none; border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); }
.module.image .image-wrap img { border-radius: var(--radius); max-height: 480px; width: auto; }

.notice { background: var(--notice-bg, var(--accent-soft)); border: 0; border-left: 4px solid var(--accent); border-radius: var(--radius-sm, 12px); padding: 18px 22px 10px; }
.btn {
  background: var(--accent); border: 2px solid var(--accent); color: var(--accent-ink, #fff);
  border-radius: var(--btn-radius, 999px); padding: .5em 1.5em; font-weight: 700; font-size: 16px; text-decoration: none;
  box-shadow: var(--btn-shadow, none);
}
.text-inner a.btn { text-decoration: none; }
.btn:hover { background: var(--accent-dark); border-color: var(--accent-dark); color: var(--accent-ink, #fff); }

.module.map { background: var(--card-bg); border: 0; border-radius: var(--radius); box-shadow: var(--shadow); padding: 10px; overflow: hidden; }
.map-box { background: var(--accent-soft); border-radius: var(--radius-sm, 12px); }
.map-load { border-radius: var(--btn-radius, 999px); border-color: var(--accent); color: var(--accent); background: transparent; font-weight: 700; padding: .4em 1.3em; }
.map-load:hover { background: var(--accent); color: var(--accent-ink, #fff); }

/* ---------- Fuß ---------- */
#main-footer { background: var(--footer-bg); color: var(--footer-ink); margin-top: 30px; }
#footer-widgets { padding-top: 56px; }
.footer-widget h4 { color: var(--footer-head); font-family: var(--font-head); font-size: 20px; font-weight: var(--head-weight, 700); }
.footer-widget a, #footer-info, .social-icons a { color: var(--footer-ink); }
.footer-widget a:hover, .social-icons a:hover { color: var(--footer-ink); opacity: .75; text-decoration: underline; }
.footer-crisis { border-top: 1px solid color-mix(in srgb, var(--footer-ink) 25%, transparent); padding-top: 18px; padding-bottom: 28px; }
#footer-bottom { background: var(--footer-bottom-bg, rgba(0,0,0,.12)); }
#footer-info { font-weight: 600; }

/* ---------- Mobil ---------- */
@media (max-width: 980px) {
  #top-menu-nav { border-top-color: var(--accent); background: var(--card-bg); }
  .mobile-toggle span, .mobile-toggle span::before, .mobile-toggle span::after { background: var(--accent); }
  #top-menu a, #masthead.fixed #top-menu > li > a { font-size: 16px; color: var(--nav-ink); text-decoration: none; }
  #top-menu > li.current > a { color: var(--accent); text-decoration: none; }
  .col, .col-1_2, .col-1_3, .col-2_3, .col-4_4 { margin-bottom: 20px; }
}
@media (max-width: 767px) {
  .section.hero.kopfbild { border-radius: 0; background-size: cover; background-origin: padding-box; aspect-ratio: auto; height: 210px; padding: 0; box-sizing: border-box; }
  .module.text { padding: 22px 20px; }
  .section.content .row, .section.content .row:first-child { padding-top: 12px; padding-bottom: 6px; }
  .page-kontakt-2 .section.content .row:first-child { padding-top: 12px; }
  .footer-crisis { padding-top: 16px; }
}

/* Extras */
.btn { box-shadow: 0 6px 16px rgba(200, 87, 63, .30); }

/* Anruf-Button im Header (nur mobil) */
.header-call { display: none; }
@media (max-width: 980px) {
  .header-call {
    display: flex; align-items: center; justify-content: center;
    width: 44px; height: 44px; margin-right: 4px;
    color: var(--accent-dark, #ae442e);
  }
  .header-call svg { width: 22px; height: 22px; }
}
@media print { .header-call { display: none; } }

/* Startseite mobil: Kopfbild zeigt beide Sessel, Schreibtisch links abgeschnitten */
@media (max-width: 767px) {
  .page-home .section.hero.kopfbild { min-height: 0; height: auto; aspect-ratio: 2 / 1; background-size: cover; background-position: 100% center; }
}
