/* ╔══════════════════════════════════════════════════════════════════════╗
   ║ GruppenhausOS — Public Frontend (v0.5.0)                             ║
   ║                                                                      ║
   ║ Design-System für alle öffentlichen Seiten + Block-CMS.              ║
   ║ Mobile-first, modern, ohne Framework. Branding-Override über         ║
   ║ CSS-Variablen aus mandant_branding.                                  ║
   ╚══════════════════════════════════════════════════════════════════════╝ */

/* ── DESIGN TOKENS ──────────────────────────────────────────────────── */
:root {
  /* Farb-Tokens — werden vom Branding-Service überschrieben */
  --ghos-primary:        #7A5230;
  --ghos-primary-dark:   #5C3D24;
  --ghos-primary-soft:   #F0E6DC;
  --ghos-secondary:      #9A704B;
  --ghos-text:           #1f2329;
  --ghos-text-mute:      #5b6470;
  --ghos-text-soft:      #8c95a1;
  --ghos-bg:             #ffffff;
  --ghos-bg-creme:       #faf6ef;
  --ghos-bg-sand:        #f0e8d8;
  --ghos-bg-dunkel:      #1f2329;
  --ghos-text-on-dunkel: #f6f4ee;
  --ghos-border:         #e3e1da;
  --ghos-border-stark:   #c5c2b6;
  --ghos-shadow-sm:      0 1px 2px rgba(28,32,40,.04), 0 1px 3px rgba(28,32,40,.06);
  --ghos-shadow-md:      0 4px 12px rgba(28,32,40,.06), 0 2px 4px rgba(28,32,40,.04);
  --ghos-shadow-lg:      0 12px 32px rgba(28,32,40,.10), 0 4px 12px rgba(28,32,40,.06);

  /* Typografie */
  --ghos-font-sans: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  --ghos-font-display: 'Fraunces', Georgia, 'Times New Roman', serif;
  --ghos-font-mono: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;

  /* Layout */
  --ghos-container:      72rem;          /* 1152px */
  --ghos-container-narrow: 44rem;        /*  704px */
  --ghos-container-wide:   84rem;        /* 1344px */
  --ghos-radius-sm: 4px;
  --ghos-radius:    8px;
  --ghos-radius-lg: 16px;
  --ghos-radius-xl: 24px;

  /* Abstände */
  --ghos-space-xs: 0.5rem;
  --ghos-space-sm: 1rem;
  --ghos-space:    1.5rem;
  --ghos-space-md: 2.5rem;
  --ghos-space-lg: 4rem;
  --ghos-space-xl: 6rem;

  /* Z-Index */
  --ghos-z-topbar: 50;
  --ghos-z-drawer: 60;
  --ghos-z-modal:  100;
}

/* v2.6.0: Webfonts liefert das Aussehen der Website (os-suite-cms, --cms-font-*).
   Die bisherigen @font-face-Regeln verwiesen auf nicht ausgelieferte Dateien
   (fonts/inter-var.woff2, fraunces-var.woff2 → 404) und sind entfernt. */

/* ── RESET & BASIS ──────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }
html {
  font-size: 16px;
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
body {
  margin: 0;
  font-family: var(--ghos-font-sans);
  font-size: 1rem;
  line-height: 1.6;
  color: var(--ghos-text);
  background: var(--ghos-bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
img, svg, picture, video { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: underline; text-decoration-color: rgba(0,0,0,.2); text-underline-offset: 2px; transition: color .15s, text-decoration-color .15s; }
a:hover { color: var(--ghos-primary); text-decoration-color: currentColor; }
button { font: inherit; cursor: pointer; border: 0; background: transparent; padding: 0; color: inherit; }
input, textarea, select { font: inherit; color: inherit; }

.ghos-skip {
  position: absolute; top: 0; left: 1rem;
  transform: translateY(-100%);
  padding: .5rem 1rem; background: var(--ghos-primary); color: #fff;
  border-radius: 0 0 var(--ghos-radius) var(--ghos-radius); z-index: 999;
  text-decoration: none;
  transition: transform 0.18s;
}
.ghos-skip:focus { transform: translateY(0); }

/* ── CONTAINER ──────────────────────────────────────────────────────── */
.ghos-container {
  width: 100%;
  max-width: var(--ghos-container);
  margin: 0 auto;
  padding: 0 1.5rem;
}
.ghos-container--schmal { max-width: var(--ghos-container-narrow); }
.ghos-container--breit  { max-width: var(--ghos-container-wide); }
@media (min-width: 768px) { .ghos-container { padding: 0 2rem; } }

/* ── TYPOGRAFIE ─────────────────────────────────────────────────────── */
.ghos-h1, .ghos-h2, .ghos-h3, .ghos-h4 {
  font-family: var(--ghos-font-display);
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -0.01em;
  margin: 0 0 1rem;
  color: var(--ghos-text);
  font-variation-settings: "opsz" 36, "SOFT" 50;
}
.ghos-h1 { font-size: clamp(2rem, 5vw, 3.5rem); letter-spacing: -0.02em; }
.ghos-h2 { font-size: clamp(1.6rem, 3.5vw, 2.5rem); }
.ghos-h3 { font-size: clamp(1.25rem, 2.5vw, 1.5rem); }
.ghos-h4 { font-size: 1.125rem; }
.ghos-h2--zentriert, .ghos-h3--zentriert { text-align: center; }

.ghos-kicker {
  display: inline-block;
  font-size: 0.85rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ghos-primary);
  margin-bottom: 0.75rem;
}
.ghos-kicker--zentriert { display: block; text-align: center; }

.ghos-lead {
  font-size: 1.15rem;
  line-height: 1.55;
  color: var(--ghos-text-mute);
  max-width: 42rem;
  margin: 0 auto 1.5rem;
}
.ghos-lead--zentriert { text-align: center; }

.ghos-prose {
  color: var(--ghos-text);
  font-size: 1rem;
  line-height: 1.7;
}
.ghos-prose p { margin: 0 0 1.1em; }
.ghos-prose h1, .ghos-prose h2, .ghos-prose h3, .ghos-prose h4 {
  font-family: var(--ghos-font-display);
  margin-top: 2rem; margin-bottom: 0.75rem;
}
.ghos-prose h2 { font-size: 1.625rem; }
.ghos-prose h3 { font-size: 1.25rem; }
.ghos-prose ul, .ghos-prose ol { padding-left: 1.5rem; margin: 0 0 1em; }
.ghos-prose li { margin-bottom: 0.4em; }
.ghos-prose blockquote {
  border-left: 3px solid var(--ghos-primary);
  padding: 0.5rem 0 0.5rem 1.25rem;
  margin: 1.5rem 0;
  font-style: italic;
  color: var(--ghos-text-mute);
  background: var(--ghos-bg-creme);
  border-radius: 0 var(--ghos-radius) var(--ghos-radius) 0;
}
.ghos-prose img { border-radius: var(--ghos-radius); margin: 1.5rem 0; }
.ghos-prose a { color: var(--ghos-primary); text-decoration-color: var(--ghos-primary); }

/* ── BUTTONS ────────────────────────────────────────────────────────── */
.ghos-btn {
  display: inline-flex; align-items: center; gap: .5rem;
  padding: 0.75rem 1.5rem;
  font-weight: 600;
  font-size: 0.95rem;
  text-decoration: none;
  border-radius: 999px;
  transition: transform .15s ease, box-shadow .15s ease, background-color .15s, color .15s;
  cursor: pointer;
  white-space: nowrap;
  letter-spacing: 0;
  line-height: 1.2;
}
.ghos-btn:hover { transform: translateY(-1px); }
.ghos-btn:active { transform: translateY(0); }
.ghos-btn--primaer {
  background: var(--ghos-primary); color: #fff;
  box-shadow: var(--ghos-shadow-sm);
}
.ghos-btn--primaer:hover { background: var(--ghos-primary-dark); color: #fff; box-shadow: var(--ghos-shadow-md); }
.ghos-btn--sekundaer {
  background: #fff; color: var(--ghos-primary);
  border: 1.5px solid var(--ghos-primary);
}
.ghos-btn--sekundaer:hover { background: var(--ghos-primary); color: #fff; }
.ghos-btn--minimal {
  padding: 0.5rem 0; color: var(--ghos-primary);
  background: transparent; text-decoration: none;
}
.ghos-btn--minimal:hover { color: var(--ghos-primary-dark); transform: translateX(2px); }
.ghos-btn--klein { padding: 0.5rem 1rem; font-size: 0.875rem; }
.ghos-btn--gross { padding: 1rem 2rem; font-size: 1.05rem; }

/* ── TOPBAR ─────────────────────────────────────────────────────────── */
.ghos-topbar {
  position: sticky; top: 0; z-index: var(--ghos-z-topbar);
  background: rgba(255,255,255,.92);
  backdrop-filter: saturate(180%) blur(12px);
  -webkit-backdrop-filter: saturate(180%) blur(12px);
  border-bottom: 1px solid transparent;
  transition: border-color .2s, box-shadow .2s, background-color .2s;
}
.ghos-topbar.is-scrolled {
  background: rgba(255,255,255,.98);
  border-bottom-color: var(--ghos-border);
  box-shadow: var(--ghos-shadow-sm);
}
.ghos-topbar__inner {
  display: flex; align-items: center; justify-content: space-between;
  gap: 2rem; padding: 1rem 1.5rem; min-height: 4.5rem;
}
.ghos-brand { display: flex; align-items: center; text-decoration: none; }
.ghos-brand__logo { max-height: 3rem; width: auto; }
.ghos-brand__name {
  font-family: var(--ghos-font-display);
  font-size: 1.25rem; font-weight: 600;
  color: var(--ghos-text);
}

.ghos-nav { display: none; }
@media (min-width: 1024px) {
  .ghos-nav { display: block; flex: 1; }
  .ghos-nav__list {
    display: flex; gap: 0.5rem; justify-content: center;
    list-style: none; margin: 0; padding: 0;
  }
  .ghos-nav__item { position: relative; }
  .ghos-nav__link {
    display: block;
    padding: 0.6rem 1rem;
    font-size: 0.95rem; font-weight: 500;
    color: var(--ghos-text);
    text-decoration: none;
    border-radius: 999px;
    transition: background-color .15s, color .15s;
  }
  .ghos-nav__link:hover, .ghos-nav__item.is-active > .ghos-nav__link {
    background: var(--ghos-primary-soft);
    color: var(--ghos-primary);
  }
  .ghos-nav__sub {
    position: absolute; top: 100%; left: 50%; transform: translateX(-50%) translateY(-4px);
    margin-top: 0.5rem; min-width: 14rem;
    background: #fff;
    border-radius: var(--ghos-radius);
    box-shadow: var(--ghos-shadow-lg);
    padding: 0.5rem; list-style: none;
    opacity: 0; pointer-events: none; visibility: hidden;
    transition: opacity .15s, transform .15s;
  }
  .ghos-nav__item--has-sub:hover .ghos-nav__sub,
  .ghos-nav__item--has-sub:focus-within .ghos-nav__sub {
    opacity: 1; pointer-events: auto; visibility: visible;
    transform: translateX(-50%) translateY(0);
  }
  .ghos-nav__sub li { margin: 0; }
  .ghos-nav__sub a {
    display: block; padding: 0.6rem 0.85rem;
    font-size: 0.9rem; color: var(--ghos-text);
    text-decoration: none; border-radius: var(--ghos-radius-sm);
  }
  .ghos-nav__sub a:hover { background: var(--ghos-primary-soft); color: var(--ghos-primary); }
}

.ghos-topbar__cta { display: none; }
@media (min-width: 1024px) { .ghos-topbar__cta { display: block; } }

.ghos-burger {
  display: flex; flex-direction: column; gap: 4px;
  width: 2.5rem; height: 2.5rem;
  align-items: center; justify-content: center;
  border-radius: var(--ghos-radius-sm);
}
.ghos-burger span {
  display: block; width: 22px; height: 2px;
  background: var(--ghos-text);
  transition: transform .2s, opacity .2s;
}
.ghos-burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.ghos-burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.ghos-burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
@media (min-width: 1024px) { .ghos-burger { display: none; } }

/* ── DRAWER (Mobile-Menu) ───────────────────────────────────────────── */
.ghos-drawer {
  position: fixed; top: 0; right: -100%;
  width: 100%; max-width: 22rem; height: 100vh; height: 100dvh;
  background: #fff;
  z-index: var(--ghos-z-drawer);
  transition: right .25s ease;
  overflow-y: auto;
  box-shadow: var(--ghos-shadow-lg);
}
.ghos-drawer.is-open { right: 0; }
body.is-drawer-open { overflow: hidden; }
.ghos-drawer__head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 1rem 1.5rem; border-bottom: 1px solid var(--ghos-border);
}
.ghos-drawer__close {
  width: 2.5rem; height: 2.5rem; font-size: 1.75rem;
  color: var(--ghos-text-mute); border-radius: var(--ghos-radius-sm);
}
.ghos-drawer__close:hover { background: var(--ghos-bg-creme); color: var(--ghos-text); }
.ghos-drawer__nav { padding: 1rem 0; }
.ghos-drawer__nav ul { list-style: none; padding: 0; margin: 0; }
.ghos-drawer__nav > ul > li > a {
  display: block; padding: 0.85rem 1.5rem;
  font-weight: 500; font-size: 1.05rem;
  color: var(--ghos-text); text-decoration: none;
}
.ghos-drawer__nav > ul > li > a:hover { background: var(--ghos-bg-creme); }
.ghos-drawer__sub { background: var(--ghos-bg-creme); }
.ghos-drawer__sub a {
  display: block; padding: 0.65rem 2.5rem;
  font-size: 0.95rem; color: var(--ghos-text-mute); text-decoration: none;
}
.ghos-drawer__sub a:hover { background: #fff; color: var(--ghos-primary); }
.ghos-drawer__cta { padding: 1rem 1.5rem !important; margin-top: 1rem; }
.ghos-drawer__cta .ghos-btn { width: 100%; justify-content: center; padding: 0.85rem 1.5rem; }
@media (min-width: 1024px) { .ghos-drawer { display: none; } }

/* ── MAIN ───────────────────────────────────────────────────────────── */
.ghos-main { min-height: 60vh; }

/* ── BLOCK FRAMEWORK ────────────────────────────────────────────────── */
.ghos-block { padding: var(--ghos-space-md) 0; }
@media (min-width: 768px) { .ghos-block { padding: var(--ghos-space-lg) 0; } }
.ghos-block:first-child { padding-top: var(--ghos-space-md); }
.ghos-block__header { text-align: center; max-width: 50rem; margin: 0 auto var(--ghos-space-md); }
.ghos-block__header .ghos-h2 { margin-bottom: 0.5rem; }
.ghos-block__footer { text-align: center; margin-top: var(--ghos-space-md); }

.ghos-block--breite-schmal .ghos-container { max-width: var(--ghos-container-narrow); }
.ghos-block--breite-breit  .ghos-container { max-width: var(--ghos-container-wide); }
.ghos-block--align-mitte   { text-align: center; }
.ghos-block--align-rechts  { text-align: right; }

/* Block-Hintergründe */
.ghos-block--bg-sand   { background: var(--ghos-bg-sand); }
.ghos-block--bg-creme  { background: var(--ghos-bg-creme); }
.ghos-block--bg-dunkel { background: var(--ghos-bg-dunkel); color: var(--ghos-text-on-dunkel); }
.ghos-block--bg-dunkel .ghos-h2,
.ghos-block--bg-dunkel .ghos-h3 { color: var(--ghos-text-on-dunkel); }
.ghos-block--bg-dunkel .ghos-kicker { color: var(--ghos-secondary); }
.ghos-block--bg-dunkel .ghos-lead { color: rgba(246,244,238,.78); }

/* ── BLOCK: HERO ────────────────────────────────────────────────────── */
.ghos-hero {
  position: relative;
  display: flex; align-items: center;
  background-size: cover; background-position: center;
  background-color: var(--ghos-bg-sand);
  overflow: hidden;
}
.ghos-hero--h-klein  { min-height: 40vh; }
.ghos-hero--h-mittel { min-height: 60vh; }
.ghos-hero--h-gross  { min-height: 75vh; }
.ghos-hero--h-voll   { min-height: 100vh; min-height: 100dvh; }
.ghos-hero::before {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,.20) 0%, rgba(0,0,0,.45) 100%);
  pointer-events: none;
}
.ghos-hero--ov-ohne::before   { background: transparent; }
.ghos-hero--ov-leicht::before { background: linear-gradient(180deg, rgba(0,0,0,.10) 0%, rgba(0,0,0,.25) 100%); }
.ghos-hero--ov-stark::before  { background: linear-gradient(180deg, rgba(0,0,0,.40) 0%, rgba(0,0,0,.65) 100%); }
.ghos-hero__inner {
  position: relative;
  width: 100%; max-width: var(--ghos-container);
  margin: 0 auto; padding: 5rem 1.5rem; z-index: 1;
}
.ghos-hero--a-mitte  .ghos-hero__inner { text-align: center; max-width: 50rem; }
.ghos-hero--a-rechts .ghos-hero__inner { text-align: right; }
.ghos-hero--t-hell .ghos-hero__inner { color: #fff; }
.ghos-hero--t-hell .ghos-hero__inner * { color: inherit; }
.ghos-hero__kicker {
  font-size: 0.85rem; font-weight: 600; letter-spacing: 0.15em;
  text-transform: uppercase; opacity: 0.9;
  margin-bottom: 1rem;
}
.ghos-hero__titel {
  font-family: var(--ghos-font-display);
  font-weight: 600;
  font-size: clamp(2.25rem, 6vw, 4.5rem);
  line-height: 1.05; letter-spacing: -0.02em;
  margin: 0 0 1.25rem;
  font-variation-settings: "opsz" 96, "SOFT" 30;
}
.ghos-hero__untertitel {
  font-size: clamp(1.05rem, 2vw, 1.35rem);
  line-height: 1.5;
  max-width: 42rem;
  margin: 0 0 2rem;
  opacity: 0.95;
}
.ghos-hero--a-mitte .ghos-hero__untertitel { margin-left: auto; margin-right: auto; }
.ghos-hero__cta { box-shadow: 0 4px 20px rgba(0,0,0,.25); }

/* ── BLOCK: TEXT + BILD ─────────────────────────────────────────────── */
.ghos-grid-2 {
  display: grid; gap: 2.5rem;
  grid-template-columns: 1fr;
  align-items: center;
}
@media (min-width: 768px) {
  .ghos-grid-2 { grid-template-columns: 1fr 1fr; gap: 4rem; }
}
.ghos-tb__bild {
  margin: 0; border-radius: var(--ghos-radius-lg); overflow: hidden;
  box-shadow: var(--ghos-shadow-md);
  position: relative;
}
/* v1.13.0 — Bild streckt sich mit Text-Spalte. Vorher: feste
   aspect-ratio 4/3 + height auto -> bei laenger umgebrochenem Text
   stand das Bild kuerzer als die Text-Spalte und der Card-Hintergrund
   war als leerer Bereich unter dem Bild sichtbar. Jetzt: height 100%
   + aspect-ratio auto + min-height als Floor (damit bei sehr kurzem
   Text das Bild nicht flach wird). */
.ghos-tb__bild { height: 100%; display: flex; }
.ghos-tb__bild img {
  width: 100%; height: 100%;
  min-height: 320px;
  object-fit: cover;
  transition: transform .6s ease;
}
.ghos-tb__bild:hover img { transform: scale(1.03); }
.ghos-tb__bild figcaption {
  position: absolute; bottom: 0; left: 0; right: 0;
  padding: 0.85rem 1.25rem;
  background: linear-gradient(180deg, transparent, rgba(0,0,0,.55));
  color: #fff; font-size: 0.85rem;
}
.ghos-block--bild-links .ghos-tb__bild { order: -1; }
@media (min-width: 768px) {
  .ghos-block--bild-links .ghos-grid-2 { grid-template-columns: 1fr 1fr; }
  .ghos-block--bild-links .ghos-tb__text { order: 2; }
  .ghos-block--bild-links .ghos-tb__bild { order: 1; }
}

/* ── BLOCK: GALERIE ─────────────────────────────────────────────────── */
.ghos-galerie__titel { text-align: center; margin-bottom: 2rem; }
.ghos-galerie__grid {
  display: grid; gap: 0.75rem;
  grid-template-columns: repeat(2, 1fr);
}
@media (min-width: 768px) {
  .ghos-galerie--cols-2 .ghos-galerie__grid { grid-template-columns: repeat(2, 1fr); }
  .ghos-galerie--cols-3 .ghos-galerie__grid { grid-template-columns: repeat(3, 1fr); }
  .ghos-galerie--cols-4 .ghos-galerie__grid { grid-template-columns: repeat(4, 1fr); }
  .ghos-galerie--cols-5 .ghos-galerie__grid { grid-template-columns: repeat(5, 1fr); }
}
.ghos-galerie__item {
  position: relative; display: block; overflow: hidden;
  border-radius: var(--ghos-radius);
  background: var(--ghos-bg-creme);
}
.ghos-galerie__item img {
  width: 100%; height: 100%; aspect-ratio: 1/1;
  object-fit: cover; transition: transform .4s ease;
}
.ghos-galerie--stil-breit .ghos-galerie__item img { aspect-ratio: 4/3; }
.ghos-galerie--stil-masonry .ghos-galerie__item img { aspect-ratio: auto; }
.ghos-galerie__item:hover img { transform: scale(1.05); }
.ghos-galerie__caption {
  position: absolute; left: 0; right: 0; bottom: 0;
  padding: .75rem 1rem; font-size: .85rem; color: #fff;
  background: linear-gradient(180deg, transparent, rgba(0,0,0,.7));
  opacity: 0; transition: opacity .2s;
}
.ghos-galerie__item:hover .ghos-galerie__caption { opacity: 1; }

/* ── BLOCK: TILES ───────────────────────────────────────────────────── */
.ghos-tiles__grid {
  display: grid; gap: 1.5rem;
  grid-template-columns: 1fr;
}
@media (min-width: 640px) { .ghos-tiles__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) {
  .ghos-tiles--cols-2 .ghos-tiles__grid { grid-template-columns: repeat(2, 1fr); }
  .ghos-tiles--cols-3 .ghos-tiles__grid { grid-template-columns: repeat(3, 1fr); }
  .ghos-tiles--cols-4 .ghos-tiles__grid { grid-template-columns: repeat(4, 1fr); }
}
.ghos-tile {
  display: block; text-decoration: none;
  border-radius: var(--ghos-radius-lg);
  overflow: hidden; background: #fff;
  box-shadow: var(--ghos-shadow-sm);
  transition: transform .25s ease, box-shadow .25s ease;
}
.ghos-tile:hover {
  transform: translateY(-3px);
  box-shadow: var(--ghos-shadow-lg);
}
.ghos-tile__bild {
  aspect-ratio: 4/3;
  background-size: cover; background-position: center;
  background-color: var(--ghos-bg-creme);
  transition: transform .4s ease;
}
.ghos-tile:hover .ghos-tile__bild { transform: scale(1.04); }
.ghos-tile__inhalt { padding: 1.25rem 1.5rem 1.5rem; }
.ghos-tile__titel {
  font-family: var(--ghos-font-display);
  font-size: 1.25rem; font-weight: 600;
  margin: 0 0 0.5rem; color: var(--ghos-text);
}
.ghos-tile__untertitel {
  margin: 0; color: var(--ghos-text-mute); font-size: 0.95rem; line-height: 1.5;
}

/* ── BLOCK: FEATURES ────────────────────────────────────────────────── */
.ghos-features__grid {
  display: grid; gap: 2rem;
  grid-template-columns: 1fr;
}
@media (min-width: 640px) { .ghos-features__grid { grid-template-columns: repeat(2, 1fr); gap: 2.5rem; } }
@media (min-width: 1024px) {
  .ghos-features--cols-2 .ghos-features__grid { grid-template-columns: repeat(2, 1fr); }
  .ghos-features--cols-3 .ghos-features__grid { grid-template-columns: repeat(3, 1fr); }
  .ghos-features--cols-4 .ghos-features__grid { grid-template-columns: repeat(4, 1fr); }
}
.ghos-feature { text-align: left; }
.ghos-feature__icon {
  width: 3rem; height: 3rem;
  display: flex; align-items: center; justify-content: center;
  background: var(--ghos-primary-soft);
  color: var(--ghos-primary);
  border-radius: var(--ghos-radius);
  margin-bottom: 1rem;
}
.ghos-feature__icon svg { width: 1.5rem; height: 1.5rem; }
.ghos-feature__titel {
  font-family: var(--ghos-font-display);
  font-size: 1.15rem; font-weight: 600;
  margin: 0 0 0.5rem;
}
.ghos-feature__text { margin: 0; color: var(--ghos-text-mute); line-height: 1.55; }
.ghos-icon-fallback {
  font-size: 1.5rem; font-weight: 600;
}

/* ── BLOCK: CTA ─────────────────────────────────────────────────────── */
.ghos-block--cta { padding: 0; }
.ghos-cta--stil-solid {
  background: var(--ghos-primary);
  color: #fff;
}
.ghos-cta--stil-solid .ghos-h2,
.ghos-cta--stil-solid .ghos-cta__titel { color: #fff; }
.ghos-cta--mit-bild { background-size: cover; background-position: center; position: relative; }
.ghos-cta--mit-bild::before {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(135deg, rgba(44,95,63,.85), rgba(31,70,48,.85));
}
.ghos-cta--mit-bild .ghos-cta__inner { position: relative; z-index: 1; color: #fff; }
.ghos-cta--stil-umrandet {
  background: var(--ghos-bg-creme);
  border-top: 1px solid var(--ghos-border);
  border-bottom: 1px solid var(--ghos-border);
}
.ghos-cta--stil-minimal { background: transparent; }
.ghos-cta__inner {
  text-align: center;
  padding: 4rem 1.5rem;
  max-width: 48rem;
}
.ghos-cta__titel {
  font-family: var(--ghos-font-display);
  font-size: clamp(1.75rem, 4vw, 2.75rem);
  font-weight: 600; line-height: 1.15; margin: 0 0 1rem;
  letter-spacing: -0.01em;
}
.ghos-cta__text {
  font-size: 1.1rem; line-height: 1.55;
  margin: 0 auto 2rem; opacity: 0.92;
  max-width: 36rem;
}
.ghos-cta--stil-solid .ghos-btn--primaer,
.ghos-cta--mit-bild .ghos-btn--primaer {
  background: #fff; color: var(--ghos-primary);
}
.ghos-cta--stil-solid .ghos-btn--primaer:hover,
.ghos-cta--mit-bild .ghos-btn--primaer:hover {
  background: var(--ghos-bg-creme); color: var(--ghos-primary-dark);
}

/* ── BLOCK: AKKORDEON ───────────────────────────────────────────────── */
.ghos-akkordeon { display: flex; flex-direction: column; gap: 0.75rem; }
.ghos-akkordeon__item {
  border: 1px solid var(--ghos-border);
  border-radius: var(--ghos-radius);
  background: #fff;
  overflow: hidden;
  transition: box-shadow .15s, border-color .15s;
}
.ghos-akkordeon__item[open] {
  box-shadow: var(--ghos-shadow-sm);
  border-color: var(--ghos-primary);
}
.ghos-akkordeon__frage {
  padding: 1.1rem 1.5rem;
  font-weight: 600; font-size: 1.05rem;
  cursor: pointer; list-style: none;
  position: relative; padding-right: 3.5rem;
  user-select: none;
}
.ghos-akkordeon__frage::-webkit-details-marker { display: none; }
.ghos-akkordeon__frage::after {
  content: '+'; position: absolute; right: 1.5rem; top: 50%;
  transform: translateY(-50%);
  font-size: 1.5rem; color: var(--ghos-primary);
  transition: transform .2s;
  font-weight: 300; line-height: 1;
}
.ghos-akkordeon__item[open] .ghos-akkordeon__frage::after { transform: translateY(-50%) rotate(45deg); }
.ghos-akkordeon__antwort { padding: 0 1.5rem 1.25rem; color: var(--ghos-text-mute); }

/* ── BLOCK: JOURNAL-TEASER + JOURNAL-LISTE ──────────────────────────── */
.ghos-journal-grid {
  display: grid; gap: 2rem;
  grid-template-columns: 1fr;
}
@media (min-width: 640px) { .ghos-journal-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .ghos-journal-grid { grid-template-columns: repeat(3, 1fr); } }
.ghos-journal-card {
  display: flex; flex-direction: column;
  background: #fff;
  border-radius: var(--ghos-radius-lg);
  overflow: hidden;
  box-shadow: var(--ghos-shadow-sm);
  transition: transform .25s, box-shadow .25s;
}
.ghos-journal-card:hover { transform: translateY(-3px); box-shadow: var(--ghos-shadow-md); }
.ghos-journal-card__bild {
  display: block;
  aspect-ratio: 16/10;
  background-size: cover; background-position: center;
  background-color: var(--ghos-bg-creme);
}
.ghos-journal-card__inhalt { padding: 1.5rem; flex: 1; display: flex; flex-direction: column; }
.ghos-journal-card__kategorie {
  display: inline-block;
  font-size: 0.75rem; font-weight: 600; letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ghos-primary); text-decoration: none;
  margin-bottom: 0.5rem;
}
.ghos-journal-card__titel {
  font-family: var(--ghos-font-display);
  font-size: 1.25rem; font-weight: 600; line-height: 1.25;
  margin: 0 0 0.6rem;
}
.ghos-journal-card__titel a { color: var(--ghos-text); text-decoration: none; }
.ghos-journal-card__titel a:hover { color: var(--ghos-primary); }
.ghos-journal-card__teaser {
  margin: 0; color: var(--ghos-text-mute); font-size: 0.95rem; line-height: 1.55;
  flex: 1;
}

/* ── BLOCK: HÄUSER-GRID ─────────────────────────────────────────────── */
.ghos-haeuser-grid {
  display: grid; gap: 2rem;
  grid-template-columns: 1fr;
}
@media (min-width: 640px) { .ghos-haeuser-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) {
  .ghos-haeuser--cols-2 .ghos-haeuser-grid { grid-template-columns: repeat(2, 1fr); }
  .ghos-haeuser--cols-3 .ghos-haeuser-grid { grid-template-columns: repeat(3, 1fr); }
  .ghos-haeuser--cols-4 .ghos-haeuser-grid { grid-template-columns: repeat(4, 1fr); }
}
.ghos-haus-card {
  display: flex; flex-direction: column;
  background: #fff;
  border-radius: var(--ghos-radius-lg);
  overflow: hidden;
  box-shadow: var(--ghos-shadow-sm);
  transition: transform .25s, box-shadow .25s;
}
.ghos-haus-card:hover { transform: translateY(-3px); box-shadow: var(--ghos-shadow-md); }
.ghos-haus-card__bild {
  display: block;
  aspect-ratio: 4/3;
  background-size: cover; background-position: center;
  background-color: var(--ghos-bg-creme);
  position: relative;
}
.ghos-haus-card__bild--leer::before {
  content: ''; position: absolute; inset: 0;
  background-image: linear-gradient(135deg, var(--ghos-primary-soft), var(--ghos-bg-sand));
}
.ghos-haus-card__inhalt { padding: 1.5rem; flex: 1; display: flex; flex-direction: column; }
.ghos-haus-card__titel {
  font-family: var(--ghos-font-display);
  font-size: 1.35rem; font-weight: 600; line-height: 1.2;
  margin: 0 0 0.6rem;
}
.ghos-haus-card__titel a { color: var(--ghos-text); text-decoration: none; }
.ghos-haus-card__titel a:hover { color: var(--ghos-primary); }
.ghos-haus-card__beschreibung {
  margin: 0 0 1rem; color: var(--ghos-text-mute);
  font-size: 0.95rem; line-height: 1.55;
  flex: 1;
}
.ghos-haus-card__meta {
  font-size: 0.85rem; color: var(--ghos-text-soft);
  letter-spacing: 0.02em;
  margin-bottom: 1rem;
}

/* ── BLOCK: ANFRAGE-FORM ────────────────────────────────────────────── */
.ghos-form {
  display: flex; flex-direction: column; gap: 1rem;
  background: #fff;
  padding: 2rem;
  border-radius: var(--ghos-radius-lg);
  box-shadow: var(--ghos-shadow-md);
}
@media (min-width: 768px) { .ghos-form { padding: 2.5rem; } }
.ghos-form__row { display: grid; gap: 1rem; }
@media (min-width: 640px) { .ghos-form__row { grid-template-columns: 1fr 1fr; } }
.ghos-form__feld { display: flex; flex-direction: column; gap: 0.4rem; }
.ghos-form__feld > span {
  font-size: 0.9rem; font-weight: 500;
  color: var(--ghos-text);
}
.ghos-form input[type="text"],
.ghos-form input[type="email"],
.ghos-form input[type="tel"],
.ghos-form input[type="number"],
.ghos-form input[type="date"],
.ghos-form textarea,
.ghos-form select {
  width: 100%;
  padding: 0.75rem 1rem;
  font-size: 1rem;
  border: 1.5px solid var(--ghos-border);
  border-radius: var(--ghos-radius);
  background: #fff;
  transition: border-color .15s, box-shadow .15s;
  font-family: inherit;
}
.ghos-form input:focus,
.ghos-form textarea:focus,
.ghos-form select:focus {
  outline: 0;
  border-color: var(--ghos-primary);
  box-shadow: 0 0 0 3px var(--ghos-primary-soft);
}
.ghos-form textarea { resize: vertical; min-height: 8rem; }
.ghos-form__check {
  display: flex; gap: 0.6rem; align-items: flex-start;
  font-size: 0.9rem; color: var(--ghos-text-mute);
  line-height: 1.5;
}
.ghos-form__check input[type="checkbox"] {
  margin-top: 0.2rem;
  accent-color: var(--ghos-primary);
}
.ghos-form__check a { color: var(--ghos-primary); }
.ghos-form button[type="submit"] { align-self: flex-start; margin-top: 0.5rem; }
.ghos-form__hp {
  position: absolute; left: -9999px;
  width: 1px; height: 1px; overflow: hidden;
}
.ghos-form__feedback {
  margin-top: 0.5rem;
  padding: 0.75rem 1rem;
  border-radius: var(--ghos-radius);
  font-size: 0.95rem;
  display: none;
}
.ghos-form__feedback.is-error  { display: block; background: #fef1f0; color: #b21e1e; }
.ghos-form__feedback.is-success { display: block; background: var(--ghos-primary-soft); color: var(--ghos-primary-dark); }

/* ── BLOCK: EMBED ───────────────────────────────────────────────────── */
.ghos-embed-wrap {
  position: relative; width: 100%; height: 0;
  border-radius: var(--ghos-radius-lg);
  overflow: hidden;
  background: var(--ghos-bg-dunkel);
}
.ghos-embed-wrap iframe {
  position: absolute; top: 0; left: 0;
  width: 100%; height: 100%;
  border: 0;
}

/* ── BLOCK: TRENNER ─────────────────────────────────────────────────── */
.ghos-block--trenner.ghos-trenner--abstand-klein  { padding: 1.5rem 0; }
.ghos-block--trenner.ghos-trenner--abstand-mittel { padding: 3rem 0; }
.ghos-block--trenner.ghos-trenner--abstand-gross  { padding: 5rem 0; }
.ghos-trenner__linie {
  border: 0; border-top: 1px solid var(--ghos-border);
  margin: 0 auto; max-width: 12rem;
}
.ghos-trenner__punkte {
  text-align: center; color: var(--ghos-text-soft);
  font-size: 1.5rem; letter-spacing: 0.5rem;
}
.ghos-trenner__ornament {
  text-align: center; color: var(--ghos-primary);
  font-size: 1.5rem;
}

/* ── HAUS-DETAIL ────────────────────────────────────────────────────── */
.ghos-haus-detail__hero {
  position: relative;
  min-height: 60vh;
  background-size: cover; background-position: center;
  background-color: var(--ghos-bg-creme);
}
.ghos-haus-detail__hero::before {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 50%, rgba(0,0,0,.6));
}
.ghos-haus-detail__hero-inhalt {
  position: absolute; bottom: 0; left: 0; right: 0;
  color: #fff; padding: 3rem 0;
}
.ghos-haus-detail__hero-inhalt h1 { color: #fff; margin-bottom: 0.5rem; }
.ghos-haus-detail__layout {
  display: grid; gap: 3rem;
  grid-template-columns: 1fr;
  margin-top: 3rem;
}
@media (min-width: 1024px) {
  .ghos-haus-detail__layout { grid-template-columns: 2fr 1fr; gap: 4rem; }
}
.ghos-haus-detail__sidebar {
  position: sticky; top: 6rem; align-self: start;
  background: var(--ghos-bg-creme);
  border-radius: var(--ghos-radius-lg);
  padding: 2rem;
}
.ghos-haus-detail__sidebar h3 {
  font-family: var(--ghos-font-display);
  margin: 0 0 1rem; font-size: 1.15rem;
}
.ghos-haus-detail__fakten {
  list-style: none; padding: 0; margin: 0 0 1.5rem;
  display: flex; flex-direction: column; gap: 0.75rem;
}
.ghos-haus-detail__fakten li {
  display: flex; align-items: center; gap: 0.75rem;
  font-size: 0.95rem;
}
.ghos-haus-detail__fakten svg {
  width: 1.25rem; height: 1.25rem; color: var(--ghos-primary);
  flex-shrink: 0;
}
.ghos-raum-card {
  padding: 1.25rem;
  border: 1px solid var(--ghos-border);
  border-radius: var(--ghos-radius);
  margin-bottom: 1rem;
  background: #fff;
}
.ghos-raum-card__head {
  display: flex; justify-content: space-between; align-items: baseline;
  gap: 1rem; margin-bottom: 0.5rem;
}
.ghos-raum-card__name {
  font-family: var(--ghos-font-display);
  font-size: 1.1rem; font-weight: 600; margin: 0;
}
.ghos-raum-card__schlafplaetze {
  font-size: 0.85rem; color: var(--ghos-text-soft);
}
.ghos-raum-card__betten {
  font-size: 0.9rem; color: var(--ghos-text-mute);
}

/* ── JOURNAL-LISTE / DETAIL ─────────────────────────────────────────── */
.ghos-journal-page {
  padding-top: 4rem; padding-bottom: 4rem;
}
.ghos-journal-page__head {
  text-align: center; max-width: 50rem; margin: 0 auto 4rem;
}
.ghos-journal-page__head .ghos-h1 { margin-bottom: 1rem; }
.ghos-journal-filter {
  display: flex; gap: 0.5rem; justify-content: center; flex-wrap: wrap;
  margin-bottom: 3rem;
}
.ghos-journal-filter__item {
  padding: 0.4rem 1rem; font-size: 0.9rem;
  border-radius: 999px;
  border: 1px solid var(--ghos-border);
  text-decoration: none; color: var(--ghos-text);
  transition: background-color .15s, color .15s, border-color .15s;
}
.ghos-journal-filter__item:hover,
.ghos-journal-filter__item.is-active {
  background: var(--ghos-primary); color: #fff; border-color: var(--ghos-primary);
}
.ghos-pagination {
  display: flex; justify-content: center; gap: 0.5rem;
  margin-top: 4rem; flex-wrap: wrap;
}
.ghos-pagination a, .ghos-pagination span {
  padding: 0.5rem 0.85rem; min-width: 2.5rem;
  text-align: center;
  border-radius: var(--ghos-radius-sm);
  border: 1px solid var(--ghos-border);
  text-decoration: none; color: var(--ghos-text);
  font-size: 0.95rem;
}
.ghos-pagination a:hover { background: var(--ghos-primary-soft); border-color: var(--ghos-primary); }
.ghos-pagination .is-current {
  background: var(--ghos-primary); color: #fff; border-color: var(--ghos-primary);
}
.ghos-pagination .is-disabled { opacity: 0.4; pointer-events: none; }

.ghos-post {
  max-width: var(--ghos-container-narrow);
  margin: 0 auto; padding: 4rem 1.5rem;
}
.ghos-post__zurueck {
  display: inline-flex; gap: 0.4rem; align-items: center;
  margin-bottom: 2rem; font-size: 0.95rem;
  text-decoration: none; color: var(--ghos-text-mute);
}
.ghos-post__zurueck:hover { color: var(--ghos-primary); }
.ghos-post__kategorie {
  display: inline-block; font-size: 0.85rem; font-weight: 600;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--ghos-primary); margin-bottom: 1rem;
  text-decoration: none;
}
.ghos-post__titel {
  font-family: var(--ghos-font-display);
  font-size: clamp(2rem, 5vw, 3rem);
  font-weight: 600; line-height: 1.15;
  letter-spacing: -0.01em;
  margin: 0 0 1rem;
}
.ghos-post__meta {
  display: flex; gap: 1.5rem; margin-bottom: 2.5rem;
  color: var(--ghos-text-soft); font-size: 0.9rem;
}
.ghos-post__titelbild {
  margin: 0 0 3rem;
  border-radius: var(--ghos-radius-lg);
  overflow: hidden;
  aspect-ratio: 16/9;
  background-size: cover; background-position: center;
  background-color: var(--ghos-bg-creme);
}
.ghos-post__body {
  font-size: 1.1rem; line-height: 1.7;
  color: var(--ghos-text);
}
.ghos-post__body p { margin: 0 0 1.25em; }
.ghos-post__body h2, .ghos-post__body h3 {
  font-family: var(--ghos-font-display);
  margin-top: 2.5rem; margin-bottom: 1rem;
}
.ghos-post__body h2 { font-size: 1.75rem; }
.ghos-post__body h3 { font-size: 1.35rem; }
.ghos-post__body img {
  max-width: 100%; border-radius: var(--ghos-radius); margin: 2rem 0;
}

/* ── FOOTER ─────────────────────────────────────────────────────────── */
.ghos-footer {
  background: var(--ghos-bg-dunkel);
  color: rgba(246,244,238,.7);
  margin-top: var(--ghos-space-lg);
}
.ghos-footer__inner {
  display: grid; gap: 2.5rem;
  grid-template-columns: 1fr;
  padding: 4rem 1.5rem 3rem;
}
@media (min-width: 640px) { .ghos-footer__inner { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .ghos-footer__inner { grid-template-columns: 2fr 1fr 1fr 1fr; } }
.ghos-footer__logo { max-height: 3rem; margin-bottom: 1rem; filter: brightness(0) invert(1); opacity: 0.9; }
.ghos-footer__name {
  font-family: var(--ghos-font-display);
  font-size: 1.25rem; color: #fff; font-weight: 600;
  margin-bottom: 0.5rem;
}
.ghos-footer__adresse {
  font-style: normal; font-size: 0.95rem; line-height: 1.55;
  margin: 0;
}
.ghos-footer__h {
  font-size: 0.85rem; font-weight: 600; letter-spacing: 0.12em;
  text-transform: uppercase; color: rgba(255,255,255,.85);
  margin: 0 0 1rem;
}
.ghos-footer__list { list-style: none; padding: 0; margin: 0; }
.ghos-footer__list li { margin-bottom: 0.5rem; }
.ghos-footer__list a {
  color: rgba(246,244,238,.7); text-decoration: none;
  font-size: 0.95rem;
  transition: color .15s;
}
.ghos-footer__list a:hover { color: #fff; }
.ghos-footer__bottom {
  padding: 1.5rem 0;
  border-top: 1px solid rgba(255,255,255,.08);
  font-size: 0.85rem; color: rgba(246,244,238,.5);
}
.ghos-footer__bottom a { color: rgba(246,244,238,.7); }

/* ── LIGHTBOX ───────────────────────────────────────────────────────── */
.ghos-lightbox {
  position: fixed; inset: 0;
  background: rgba(0,0,0,.95);
  display: none; align-items: center; justify-content: center;
  z-index: var(--ghos-z-modal);
  padding: 2rem;
  cursor: zoom-out;
}
.ghos-lightbox.is-open { display: flex; }
.ghos-lightbox img {
  max-width: 95vw; max-height: 90vh;
  object-fit: contain;
}
.ghos-lightbox__close {
  position: absolute; top: 1rem; right: 1rem;
  width: 3rem; height: 3rem;
  background: rgba(255,255,255,.1); color: #fff;
  border-radius: 999px;
  font-size: 1.5rem;
  display: flex; align-items: center; justify-content: center;
}
.ghos-lightbox__close:hover { background: rgba(255,255,255,.2); }

/* ── PRINT ──────────────────────────────────────────────────────────── */
@media print {
  .ghos-topbar, .ghos-footer, .ghos-burger, .ghos-drawer,
  .ghos-form, .ghos-skip { display: none !important; }
  .ghos-block { padding: 1rem 0 !important; page-break-inside: avoid; }
  body { color: #000; }
}

/* ══════════════════════════════════════════════════════════════════════
   v0.8.0 — BLOG-BLÖCKE: heading + bild
   ══════════════════════════════════════════════════════════════════════ */

/* Heading-Block (eigenständige Überschrift, H1–H6) */
.ghos-block--heading { padding: var(--ghos-space-sm) 0; }
.ghos-block--heading-h1 { padding-top: var(--ghos-space-md); padding-bottom: var(--ghos-space-sm); }
.ghos-block--heading-h2 { padding-top: var(--ghos-space-md); padding-bottom: var(--ghos-space-xs, .4rem); }
.ghos-block--align-mitte  > .ghos-container { text-align: center; }
.ghos-block--align-rechts > .ghos-container { text-align: right; }
.ghos-block--align-links  > .ghos-container { text-align: left; }

.ghos-prose-heading {
  font-family: var(--ghos-font-display);
  margin: 0;
  line-height: 1.15;
  color: var(--ghos-text);
}
.ghos-prose-heading--h1 { font-size: clamp(2rem, 5vw, 3.5rem); font-weight: 700; }
.ghos-prose-heading--h2 { font-size: clamp(1.6rem, 3.5vw, 2.5rem); font-weight: 700; }
.ghos-prose-heading--h3 { font-size: clamp(1.35rem, 2.5vw, 1.875rem); font-weight: 600; }
.ghos-prose-heading--h4 { font-size: 1.375rem; font-weight: 600; }
.ghos-prose-heading--h5 { font-size: 1.125rem; font-weight: 600; }
.ghos-prose-heading--h6 { font-size: 1rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; }

/* Bild-Block (eigenständig, mit Bildunterschrift, Breiten-Varianten) */
.ghos-block--bild { padding: var(--ghos-space-sm) 0; }
.ghos-block--bild .ghos-container { max-width: var(--ghos-container-max, 1200px); }
.ghos-block--bild-schmal .ghos-bild__figure  { max-width: 720px; margin-left: auto; margin-right: auto; }
.ghos-block--bild-normal .ghos-bild__figure  { max-width: 960px; margin-left: auto; margin-right: auto; }
.ghos-block--bild-breit  .ghos-bild__figure  { max-width: 100%; }
.ghos-block--bild-voll   { padding: 0; }
.ghos-block--bild-voll   .ghos-container { max-width: 100%; padding: 0; }
.ghos-block--bild-voll   .ghos-bild__figure { max-width: 100%; }

.ghos-bild__figure {
  margin: 0;
  background: var(--ghos-bg-creme, #f8f6f1);
  border-radius: var(--ghos-radius);
  overflow: hidden;
}
.ghos-bild__figure img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 0;
  margin: 0;
}
.ghos-bild__link {
  display: block;
  cursor: zoom-in;
}
.ghos-bild__link:hover img { opacity: .96; }
.ghos-bild__caption {
  display: block;
  padding: .75rem 1rem;
  font-size: .875rem;
  color: var(--ghos-text-mute, #666);
  font-style: italic;
  text-align: center;
  background: rgba(0,0,0,0.02);
}

/* Im Block-Modus (Beitragsdetail) entfernt der Wrapper das default
   .ghos-prose-Spacing — Blöcke bringen ihren eigenen Abstand mit. */
.ghos-post__body--bloecke { margin-top: var(--ghos-space-md); }
.ghos-post__body--bloecke > section.ghos-block:first-child { padding-top: 0; }

/* Erweiterte .ghos-prose Headings (Quill-Output kann jetzt auch H1, H5, H6) */
.ghos-prose h1 { font-size: clamp(1.75rem, 4vw, 2.25rem); }
.ghos-prose h5 { font-size: 1.0625rem; font-weight: 600; }
.ghos-prose h6 { font-size: .95rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--ghos-text-mute); }

/* ─── v0.9.0 — Welle 3.0: Anfrage-Forms + Zielgruppen-Tiles ──────────────── */

/* Form-Wrapper für Anfrage-Forms (BEM-Stil, additiv zur bestehenden .ghos-form) */
.ghos-form--anfrage { max-width: 720px; margin: 0 auto; padding: 1.5rem; }
@media (min-width: 768px) { .ghos-form--anfrage { padding: 2.5rem; } }

/* Sektions-Fieldset */
.ghos-form-gruppe {
  border: 0;
  margin: 0 0 2rem 0;
  padding: 1.5rem;
  background: var(--ghos-fl-1, #fafaf9);
  border-radius: 0.5rem;
  border-left: 3px solid var(--ghos-primary, #3b6c4f);
}
.ghos-form-gruppe__titel {
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--ghos-primary-dark, #1f3a2c);
  padding: 0 0 0.75rem 0;
  margin-bottom: 1rem;
  border-bottom: 1px solid rgba(0,0,0,0.08);
  display: block;
  width: 100%;
}

/* Einzelfeld */
.ghos-form-feld { margin-bottom: 1.25rem; }
.ghos-form-feld:last-child { margin-bottom: 0; }
.ghos-form-feld__label {
  display: block;
  font-weight: 500;
  margin-bottom: 0.4rem;
  font-size: 0.95rem;
  color: var(--ghos-text, #1a1a1a);
}
.ghos-form-feld__pflicht { color: #dc2626; margin-left: 0.15rem; }
.ghos-form-feld__input {
  width: 100%;
  padding: 0.625rem 0.875rem;
  border: 1px solid rgba(0,0,0,0.18);
  border-radius: 0.4rem;
  font: inherit;
  font-size: 1rem;
  background: #fff;
  transition: border-color 0.15s, box-shadow 0.15s;
  box-sizing: border-box;
}
.ghos-form-feld__input:focus {
  outline: 0;
  border-color: var(--ghos-primary, #3b6c4f);
  box-shadow: 0 0 0 3px rgba(59,108,79,0.18);
}
textarea.ghos-form-feld__input { min-height: 6rem; resize: vertical; }
.ghos-form-feld__hinweis {
  font-size: 0.85rem;
  color: var(--ghos-text-mute, #666);
  margin-top: 0.35rem;
}
.ghos-form-feld__fehler {
  font-size: 0.85rem;
  color: #dc2626;
  margin-top: 0.35rem;
  font-weight: 500;
}
.ghos-form-feld--fehler .ghos-form-feld__input {
  border-color: #dc2626;
  background: #fef2f2;
}

/* Mehrfach-Auswahl (Checkbox-Grid) */
.ghos-form-feld__mehrfach {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 0.5rem;
  padding: 0.75rem;
  background: #fff;
  border: 1px solid rgba(0,0,0,0.12);
  border-radius: 0.4rem;
}
.ghos-form-feld__check {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  cursor: pointer;
  padding: 0.4rem 0.5rem;
  border-radius: 0.3rem;
  transition: background 0.12s;
  font-size: 0.95rem;
  line-height: 1.4;
}
.ghos-form-feld__check:hover { background: rgba(0,0,0,0.03); }
.ghos-form-feld__check input[type="checkbox"] {
  flex-shrink: 0;
  margin-top: 0.15rem;
  width: 1rem;
  height: 1rem;
  accent-color: var(--ghos-primary, #3b6c4f);
}

/* Form-Aktionen */
.ghos-form-aktionen {
  margin-top: 2rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
  text-align: center;
}
.ghos-form-hinweis {
  font-size: 0.85rem;
  color: var(--ghos-text-mute, #666);
  margin: 0;
}

/* Buttons */
.ghos-btn--gross {
  font-size: 1.05rem;
  padding: 0.875rem 2rem;
  min-width: 14rem;
}

/* Alert-Box (über dem Formular) */
.ghos-alert {
  padding: 0.875rem 1.125rem;
  border-radius: 0.4rem;
  border-left: 3px solid;
  font-size: 0.95rem;
}
.ghos-alert--fehler {
  background: #fef2f2;
  border-color: #dc2626;
  color: #7f1d1d;
}

/* ─── Zielgruppen-Tiles (Hero-CTAs) ──────────────────────────────────────── */
/* Eigener Block-Typ in CMS — siehe BlockRegistry::zielgruppen */
.ghos-block--zielgruppen { padding: 4rem 0; }
.ghos-zielgruppen__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  max-width: 1100px;
  margin: 0 auto;
}
@media (min-width: 768px) {
  .ghos-zielgruppen__grid { grid-template-columns: repeat(3, 1fr); gap: 2rem; }
}
.ghos-zielgruppe-tile {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: inherit;
  background: #fff;
  border-radius: 0.75rem;
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(0,0,0,0.05), 0 4px 12px rgba(0,0,0,0.04);
  transition: transform 0.18s, box-shadow 0.18s;
  border-top: 4px solid var(--ghos-zielgruppe-akzent, var(--ghos-primary, #3b6c4f));
  position: relative;
}
.ghos-zielgruppe-tile:hover {
  transform: translateY(-3px);
  box-shadow: 0 6px 16px rgba(0,0,0,0.08), 0 12px 32px rgba(0,0,0,0.06);
}
.ghos-zielgruppe-tile__icon {
  font-size: 2.25rem;
  line-height: 1;
  padding: 1.5rem 1.5rem 0.5rem 1.5rem;
  color: var(--ghos-zielgruppe-akzent, var(--ghos-primary, #3b6c4f));
}
.ghos-zielgruppe-tile__icon svg { width: 2.25rem; height: 2.25rem; }
.ghos-zielgruppe-tile__inhalt {
  padding: 0.75rem 1.5rem 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  flex: 1;
}
.ghos-zielgruppe-tile__titel {
  font-size: 1.4rem;
  font-weight: 700;
  margin: 0;
  color: var(--ghos-text, #1a1a1a);
  line-height: 1.2;
}
.ghos-zielgruppe-tile__text {
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--ghos-text-mute, #555);
  margin: 0 0 0.5rem 0;
}
.ghos-zielgruppe-tile__cta {
  font-weight: 600;
  font-size: 0.95rem;
  color: var(--ghos-zielgruppe-akzent, var(--ghos-primary, #3b6c4f));
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin-top: auto;
}
.ghos-zielgruppe-tile__cta::after {
  content: "→";
  transition: transform 0.18s;
}
.ghos-zielgruppe-tile:hover .ghos-zielgruppe-tile__cta::after {
  transform: translateX(3px);
}

/* ════════════════════════════════════════════════════════════════════
   v0.9.9 — Blog/Journal Public-Polish (Audit D + A)
   ════════════════════════════════════════════════════════════════════ */

/* ─── Journal-Karte mit <img> statt background-image (Audit D) ─── */
.ghos-journal-card__bild img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  aspect-ratio: 16/10;
}

/* Datum auf Karten — dezenter Subtext über dem Titel */
.ghos-journal-card__datum {
  display: block;
  font-size: 0.78rem;
  color: var(--ghos-text-mute);
  letter-spacing: 0.02em;
  margin: 0 0 .35rem;
}

/* Lesezeit-Meta unter Teaser */
.ghos-journal-card__meta {
  margin-top: .75rem;
  font-size: .8rem;
  color: var(--ghos-text-mute);
}

/* RSS-Link im Page-Header — dezent */
.ghos-journal-page__rss {
  display: inline-flex; align-items: center; gap: .35rem;
  margin-top: .75rem;
  padding: .25rem .65rem;
  border: 1px solid var(--ghos-trennlinie, #d8d4c0);
  border-radius: 999px;
  font-size: 0.8rem;
  color: var(--ghos-text-mute);
  text-decoration: none;
  transition: background .15s, color .15s;
}
.ghos-journal-page__rss:hover {
  background: var(--ghos-bg-creme);
  color: var(--ghos-primary);
  border-color: var(--ghos-primary);
}

/* Filter-Pill-Zähler */
.ghos-journal-filter__zahl { opacity: .7; margin-left: .15rem; }

/* ─── Featured-Beitrag auf Übersicht (Seite 1) ─── */
.ghos-journal-feature {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  margin: 0 0 2.5rem;
  padding-bottom: 2rem;
  border-bottom: 1px solid var(--ghos-trennlinie, #e6e2d2);
  align-items: center;
}
@media (min-width: 800px) {
  .ghos-journal-feature { grid-template-columns: 1.2fr 1fr; gap: 2.5rem; }
}
.ghos-journal-feature__bild { display: block; border-radius: var(--ghos-radius-md, 12px); overflow: hidden; aspect-ratio: 16/10; background: var(--ghos-bg-creme); }
.ghos-journal-feature__bild img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ghos-journal-feature__kategorie {
  display: inline-block;
  font-size: 0.78rem; font-weight: 600; letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ghos-primary); text-decoration: none;
  margin-bottom: 0.5rem;
}
.ghos-journal-feature__titel {
  font-family: var(--ghos-font-display);
  font-size: clamp(1.5rem, 3vw, 2.25rem);
  font-weight: 600; line-height: 1.2;
  margin: 0 0 .65rem;
}
.ghos-journal-feature__titel a { color: var(--ghos-text); text-decoration: none; }
.ghos-journal-feature__titel a:hover { color: var(--ghos-primary); }
.ghos-journal-feature__teaser {
  font-size: 1.1rem;
  line-height: 1.55;
  color: var(--ghos-text);
  margin: 0 0 1rem;
}
.ghos-journal-feature__meta {
  display: flex; flex-wrap: wrap; gap: .9rem;
  font-size: 0.85rem;
  color: var(--ghos-text-mute);
  margin-bottom: 1rem;
}
.ghos-journal-feature__meta span { white-space: nowrap; }

/* ─── Journal-Detail: Untertitel sauber, Titelbild als <img> ─── */
.ghos-post__untertitel {
  font-size: 1.2rem;
  line-height: 1.5;
  color: var(--ghos-text-mute);
  margin: 0 0 1.25rem;
  font-style: italic;
}
.ghos-post__titelbild {
  margin: 1.5rem 0 2rem;
  border-radius: var(--ghos-radius-md, 12px);
  overflow: hidden;
  aspect-ratio: 16/9;
  background: var(--ghos-bg-creme);
}
.ghos-post__titelbild img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Block-Body — Lesebreite + Hierarchie für Artikel-Lesegefühl */
.ghos-post__body--bloecke,
.ghos-post__body.ghos-prose {
  max-width: 68ch;
  margin: 0 auto;
}
.ghos-post__body--bloecke > section { margin: 0 auto 2rem; }
.ghos-post__body p { line-height: 1.7; }
.ghos-post__body h2 { margin-top: 2.2rem; }
.ghos-post__body h3 { margin-top: 1.6rem; }
.ghos-post__body img { max-width: 100%; height: auto; border-radius: var(--ghos-radius-sm, 6px); }

/* Embed responsiv */
.ghos-post__body iframe,
.ghos-post__body--bloecke iframe {
  max-width: 100%;
  width: 100%;
  aspect-ratio: 16/9;
  border: 0;
  border-radius: var(--ghos-radius-sm, 6px);
}

/* ─── Vorschau-Banner ─── */
.ghos-vorschau-banner {
  background: var(--ghos-warn-bg, #fff8e0);
  border-bottom: 2px solid var(--ghos-warn-rand, #d4a000);
  padding: .65rem 1rem;
  text-align: center;
  font-size: .9rem;
  color: var(--ghos-text);
}

/* ─── Weitere Beiträge unter dem Detail ─── */
.ghos-post-weitere {
  background: var(--ghos-bg-creme);
  padding: 3rem 0;
  margin-top: 3rem;
}
.ghos-post-weitere__head { text-align: center; margin-bottom: 1.5rem; }
.ghos-post-weitere .ghos-journal-grid { max-width: 1100px; margin: 0 auto; }

/* ════════════════════════════════════════════════════════════════════
   v1.0.0 — Vorschau-Banner für eingeloggte Mandant-User, die Entwürfe
   im Frontend ansehen. Sticky-oben über dem normalen Layout, gelblich
   abgesetzt, kompakt — soll deutlich machen "die Öffentlichkeit sieht
   das nicht", aber nicht den Inhalt visuell verdrängen.
   ════════════════════════════════════════════════════════════════════ */

.ghos-vorschau-banner {
  background: #fef6e0;
  color: #7a4f00;
  border-bottom: 1px solid #ecd49a;
  padding: .75rem 0;
  font-size: .92rem;
  line-height: 1.5;
  position: sticky;
  top: 0;
  z-index: 60;
  text-align: center;
}
.ghos-vorschau-banner strong {
  font-weight: 700;
  color: #5c3a00;
}
.ghos-vorschau-banner em {
  font-style: normal;
  font-weight: 600;
  background: rgba(255, 255, 255, .55);
  padding: .05em .45em;
  border-radius: 3px;
}
.ghos-vorschau-banner__link {
  margin-left: .75rem;
  font-weight: 600;
  color: #7a4f00;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}
.ghos-vorschau-banner__link:hover { color: #5c3a00; }


/* ════════════════════════════════════════════════════════════════════
   v1.9.5 — Hover-Bridge fuer Submenu, text_bild-Ausrichtungen
   ════════════════════════════════════════════════════════════════════ */

@media (min-width: 1024px) {
  /* Hover-Bridge: unsichtbares ::before fuellt die 8px-Luecke zwischen
     Top-Link und Submenu, damit der :hover-Selektor nicht abreisst,
     wenn die Maus schraeg nach unten bewegt wird. Plus Abklingzeit auf
     visibility/opacity, damit ein bisschen schiefes Mausgewedel
     verziehen wird. */
  .ghos-nav__sub::before {
    content: "";
    position: absolute;
    top: -0.65rem;
    left: 0; right: 0;
    height: 0.65rem;
    background: transparent;
  }
  .ghos-nav__sub {
    transition: opacity .18s ease, transform .18s ease, visibility 0s linear .18s;
  }
  .ghos-nav__item--has-sub:hover .ghos-nav__sub,
  .ghos-nav__item--has-sub:focus-within .ghos-nav__sub {
    transition: opacity .12s ease, transform .12s ease, visibility 0s linear 0s;
  }
}

/* text_bild — vertikale Ausrichtung der Spalten gegen das Bild */
.ghos-block--text-bild .ghos-grid-2 { align-items: stretch; }
.ghos-block--text-bild.ghos-block--v-oben  .ghos-grid-2 { align-items: start; }
.ghos-block--text-bild.ghos-block--v-mitte .ghos-grid-2 { align-items: center; }
.ghos-block--text-bild.ghos-block--v-unten .ghos-grid-2 { align-items: end; }

/* text_bild — Ausrichtung von Kicker und Titel im Text-Block */
.ghos-block--text-bild.ghos-block--kopf-links  .ghos-tb__text > .ghos-kicker,
.ghos-block--text-bild.ghos-block--kopf-links  .ghos-tb__text > .ghos-h2 { text-align: left; }
.ghos-block--text-bild.ghos-block--kopf-mitte  .ghos-tb__text > .ghos-kicker,
.ghos-block--text-bild.ghos-block--kopf-mitte  .ghos-tb__text > .ghos-h2 { text-align: center; }
.ghos-block--text-bild.ghos-block--kopf-rechts .ghos-tb__text > .ghos-kicker,
.ghos-block--text-bild.ghos-block--kopf-rechts .ghos-tb__text > .ghos-h2 { text-align: right; }


/* ════════════════════════════════════════════════════════════════════
   v1.12.0 — Template/Theme-System: zusaetzliche Komponenten-Styles
   die fuer alle Templates gelten (Token-Ueberschreibungen kommen aus
   den Template-Theme-Files in templates/{tpl}/{theme}.css).
   ════════════════════════════════════════════════════════════════════ */

/* ── Header-Skin Variants ─────────────────────────────────────────── */

/* Editorial-Header: floating + Backdrop-Blur + Border-bottom */
.ghos-topbar--floating-pill-cta {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(255,255,255,.78);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  border-bottom: 1px solid var(--ghos-border, #e3e1da);
}
.ghos-template--editorial .ghos-topbar--floating-pill-cta .ghos-btn--primaer {
  border-radius: 999px;
  padding: .55rem 1.4rem;
}

/* Magazin-Header: transparent ueber Hero (nur Stub-Style) */
.ghos-topbar--transparent {
  position: absolute;
  top: 0; left: 0; right: 0;
  z-index: 50;
  background: transparent;
  border: none;
}

/* ── Editorial-Hero (split-layout) ────────────────────────────────── */

.ghos-hero--editorial {
  padding: 3rem 0 4rem;
  background: transparent;
}
.ghos-hero__inner--split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3rem;
  align-items: center;
  max-width: 1240px;
  margin: 0 auto;
  padding: 0 28px;
}
@media (max-width: 880px) {
  .ghos-hero__inner--split { grid-template-columns: 1fr; gap: 2rem; }
}
.ghos-hero--editorial .ghos-hero__col-text { display: flex; flex-direction: column; gap: 1.2rem; }
.ghos-hero--editorial .ghos-hero__pills    { display: flex; flex-wrap: wrap; gap: .5rem; }
.ghos-hero--editorial .ghos-hero__titel {
  font-size: clamp(2.2rem, 5vw, 4rem);
  line-height: 1.05;
  margin: 0;
}
.ghos-hero--editorial .ghos-hero__untertitel {
  font-size: 1.05rem;
  line-height: 1.6;
  color: var(--ghos-text-mute, #5b6470);
  max-width: 38em;
}
.ghos-hero--editorial .ghos-hero__cta-zeile { display: flex; gap: .8rem; flex-wrap: wrap; }
.ghos-hero--editorial .ghos-hero__col-bild {
  aspect-ratio: 4 / 5;
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 30px 60px rgba(15,23,42,.18);
}
.ghos-hero--editorial .ghos-hero__bild {
  width: 100%; height: 100%;
  background-size: cover; background-position: center;
}

/* Pill-Komponente (cross-template) */
.ghos-public .ghos-pill {
  display: inline-block;
  padding: .35rem .9rem;
  border-radius: 999px;
  background: var(--ghos-primary-soft, #e9f0eb);
  color: var(--ghos-primary, #2c5f3f);
  font-weight: 600;
  letter-spacing: .02em;
  font-size: .82rem;
}

/* ── Stats-Block ──────────────────────────────────────────────────── */

.ghos-block--stats { padding: 2.5rem 0; }
.ghos-stats__grid {
  display: grid;
  gap: 2rem 3rem;
}
.ghos-stats--cols-3 .ghos-stats__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ghos-stats--cols-4 .ghos-stats__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 700px) {
  .ghos-stats--cols-3 .ghos-stats__grid,
  .ghos-stats--cols-4 .ghos-stats__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.ghos-stats--mitte .ghos-stats__grid { text-align: center; }

.ghos-stats__item {
  display: flex;
  flex-direction: column;
  gap: .35rem;
  border-top: 2px solid var(--ghos-primary, #2c5f3f);
  padding-top: 1rem;
}
.ghos-stats--mitte .ghos-stats__item { align-items: center; border-top: none; }
.ghos-stats__zahl {
  font-size: clamp(2rem, 4.5vw, 3rem);
  font-weight: 800;
  line-height: 1;
  color: var(--ghos-primary, #2c5f3f);
  letter-spacing: -0.02em;
}
.ghos-stats__label {
  font-size: .92rem;
  color: var(--ghos-text-mute, #5b6470);
  font-weight: 500;
}

/* ── Angebotsfinder ───────────────────────────────────────────────── */

.ghos-block--angebotsfinder {
  padding: 3rem 0;
  background: var(--ghos-bg-creme, #faf6ef);
}
.ghos-angebotsfinder__layout {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 3rem;
  align-items: start;
}
@media (max-width: 880px) {
  .ghos-angebotsfinder__layout { grid-template-columns: 1fr; gap: 1.5rem; }
}
.ghos-angebotsfinder__kopf .ghos-h2 {
  font-size: clamp(1.8rem, 3.5vw, 2.6rem);
  line-height: 1.1;
  margin: .6rem 0 1rem;
}
.ghos-angebotsfinder__liste {
  list-style: none;
  margin: 0; padding: 0;
  display: flex; flex-direction: column;
  gap: .55rem;
}
.ghos-angebotsfinder__row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1rem 1.4rem;
  background: #fff;
  border: 1px solid var(--ghos-border, #e3e1da);
  border-radius: 10px;
  text-decoration: none;
  color: var(--ghos-text, #1f2329);
  transition: border-color .15s, transform .15s;
}
a.ghos-angebotsfinder__row:hover {
  border-color: var(--ghos-primary, #2c5f3f);
  transform: translateY(-1px);
}
.ghos-angebotsfinder__label { font-weight: 600; font-size: 1.02rem; }
.ghos-angebotsfinder__nr {
  display: inline-flex;
  align-items: center; justify-content: center;
  min-width: 1.8rem; height: 1.8rem;
  padding: 0 .5rem;
  background: var(--ghos-secondary, #c98a4b);
  color: var(--ghos-primary, #2c5f3f);
  font-size: .82rem;
  font-weight: 700;
  border-radius: 6px;
  letter-spacing: .03em;
}
.ghos-template--editorial .ghos-angebotsfinder__nr {
  background: var(--ghos-secondary);
  color: var(--ghos-primary);
}


/* ════════════════════════════════════════════════════════════════════
   v1.13.0 — Magazin-Template Layout-CSS
   ════════════════════════════════════════════════════════════════════ */

/* ── Header-Skin: transparent-bis-scroll ──────────────────────────── */

.ghos-topbar--transparent-bis-scroll {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 50;
  background: transparent;
  border: none;
  transition: background .2s ease, backdrop-filter .2s ease, border-color .2s ease;
}
.ghos-topbar--transparent-bis-scroll.ghos-topbar--scrolled {
  background: rgba(255,255,255,.92);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  border-bottom: 1px solid var(--ghos-border, #e3e1da);
}
/* Public-Body in Magazin-Template bekommt keinen oberen Padding,
   damit der Header tatsaechlich ueber den Hero schwebt. */
.ghos-template--magazin main { padding-top: 0; }

/* Headline-/Link-Farbe im transparenten Header: Weiss bis gescrollt */
.ghos-template--magazin .ghos-topbar--transparent-bis-scroll:not(.ghos-topbar--scrolled),
.ghos-template--magazin .ghos-topbar--transparent-bis-scroll:not(.ghos-topbar--scrolled) a,
.ghos-template--magazin .ghos-topbar--transparent-bis-scroll:not(.ghos-topbar--scrolled) .ghos-brand {
  color: #fff;
}
.ghos-template--magazin .ghos-topbar--transparent-bis-scroll.ghos-topbar--scrolled,
.ghos-template--magazin .ghos-topbar--transparent-bis-scroll.ghos-topbar--scrolled a {
  color: var(--ghos-text);
}

/* ── Magazin-Hero (vollflaechig) ──────────────────────────────────── */

.ghos-hero--magazin {
  position: relative;
  min-height: 92vh;
  background-size: cover;
  background-position: center;
  display: flex;
  align-items: flex-end;
  color: #fff;
  margin-top: 0;
}
.ghos-hero--magazin.ghos-hero--h-mittel { min-height: 60vh; }
.ghos-hero--magazin.ghos-hero--h-gross  { min-height: 80vh; }
.ghos-hero--magazin.ghos-hero--h-voll   { min-height: 100vh; }

.ghos-hero--magazin .ghos-hero__overlay {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(0,0,0,.35) 0%, rgba(0,0,0,0) 30%, rgba(0,0,0,0) 55%, rgba(0,0,0,.75) 100%);
  pointer-events: none;
}
.ghos-hero--magazin .ghos-hero__inner--magazin {
  position: relative;
  z-index: 2;
  max-width: 1240px;
  margin: 0 auto;
  width: 100%;
  padding: 0 28px 5rem;
}
.ghos-hero--magazin .ghos-hero__kicker {
  display: inline-block;
  padding: .35rem .9rem;
  background: rgba(255,255,255,.18);
  backdrop-filter: blur(10px);
  border-radius: 999px;
  font-size: .82rem;
  font-weight: 600;
  letter-spacing: .04em;
  margin-bottom: 1rem;
}
.ghos-hero--magazin .ghos-hero__titel {
  font-size: clamp(2.4rem, 6vw, 5rem);
  line-height: 1.02;
  font-weight: 800;
  letter-spacing: -0.025em;
  margin: 0 0 1rem;
  max-width: 18em;
  text-shadow: 0 2px 24px rgba(0,0,0,.4);
}
.ghos-hero--magazin .ghos-hero__untertitel {
  font-size: 1.1rem;
  line-height: 1.5;
  max-width: 38em;
  margin: 0 0 1.6rem;
  opacity: .94;
  text-shadow: 0 1px 12px rgba(0,0,0,.4);
}
.ghos-hero--magazin .ghos-hero__cta {
  display: inline-block;
}

/* ── ANGEBOTE (v1.33.0) ──────────────────────────────────────────────── */

/* Detail-Seite */
.ghos-angebot {
  max-width: 78rem;
  margin: 0 auto;
  padding: 2.5rem 1.5rem 4rem;
}
.ghos-angebot__zurueck {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  font-size: .9rem;
  color: var(--ghos-color-text-muted, #666);
  text-decoration: none;
  margin-bottom: 1.25rem;
  transition: color .15s;
}
.ghos-angebot__zurueck:hover { color: var(--ghos-color-primary, #2d6a3e); }

.ghos-angebot__kategorien {
  display: flex; flex-wrap: wrap; gap: .5rem;
  margin-bottom: .75rem;
}
.ghos-angebot__kategorie-pill {
  display: inline-flex; align-items: center;
  font-size: .8rem; font-weight: 500;
  padding: .25rem .75rem; border-radius: 999px;
  background: var(--ghos-color-surface-alt, #f0f0f0);
  color: var(--ghos-color-text, #222);
  text-decoration: none;
  border: 1px solid transparent;
  transition: background .15s;
}
.ghos-angebot__kategorie-pill:hover { background: var(--ghos-color-surface-strong, #e2e2e2); }

.ghos-angebot__kicker {
  font-size: .85rem;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--ghos-color-primary, #2d6a3e);
  font-weight: 600;
  margin-bottom: .5rem;
}
.ghos-angebot__titel {
  font-size: clamp(2rem, 4vw + 1rem, 3.25rem);
  line-height: 1.1;
  margin: 0 0 .5rem;
  font-family: var(--ghos-font-headings, inherit);
}
.ghos-angebot__untertitel {
  font-size: 1.2rem;
  color: var(--ghos-color-text-muted, #555);
  margin: 0 0 1.5rem;
  max-width: 56rem;
}

.ghos-angebot__titelbild {
  margin: 1.5rem 0 0;
  border-radius: 12px;
  overflow: hidden;
  background: #f0ede5;
  aspect-ratio: 16/9;
}
.ghos-angebot__titelbild img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
}

/* Layout zweispaltig: Inhalt + Sidebar */
.ghos-angebot__main {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 22rem;
  gap: 3rem;
  margin-top: 2.5rem;
  align-items: start;
}
@media (max-width: 920px) {
  .ghos-angebot__main { grid-template-columns: 1fr; gap: 2rem; }
}

.ghos-angebot__inhalt > section { margin-bottom: 2.5rem; }
.ghos-angebot__inhalt h2 {
  font-size: 1.5rem;
  margin: 0 0 .8rem;
  font-family: var(--ghos-font-headings, inherit);
  color: var(--ghos-color-text, #222);
}
.ghos-angebot__inhalt h2::before {
  content: "";
  display: block;
  width: 2.5rem;
  height: 3px;
  background: var(--ghos-color-primary, #2d6a3e);
  margin-bottom: .6rem;
}
.ghos-angebot__inhalt p { margin: 0 0 1rem; line-height: 1.65; }

.ghos-angebot__zitat {
  border-left: 4px solid var(--ghos-color-primary, #2d6a3e);
  background: var(--ghos-color-surface-alt, #f6f4ee);
  padding: 1.25rem 1.5rem;
  margin: 2rem 0;
  font-style: italic;
  font-size: 1.1rem;
  border-radius: 0 8px 8px 0;
}
.ghos-angebot__zitat-quelle {
  display: block;
  margin-top: .6rem;
  font-style: normal;
  font-size: .85rem;
  color: var(--ghos-color-text-muted, #666);
}

/* Sidebar "Auf einen Blick" */
.ghos-angebot__sidebar {
  position: sticky;
  top: 6rem;
}
.ghos-angebot__blick {
  background: var(--ghos-color-surface-alt, #f6f4ee);
  border: 1px solid var(--ghos-color-border, #e2dfd5);
  border-radius: 12px;
  padding: 1.5rem;
}
.ghos-angebot__blick h3 {
  margin: 0 0 1rem;
  font-size: 1rem;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--ghos-color-text-muted, #666);
}
.ghos-angebot__blick dl {
  display: grid;
  grid-template-columns: auto 1fr;
  column-gap: 1rem;
  row-gap: .65rem;
  margin: 0;
}
.ghos-angebot__blick dt {
  font-size: .85rem;
  color: var(--ghos-color-text-muted, #666);
  font-weight: 500;
}
.ghos-angebot__blick dd { margin: 0; font-size: .95rem; }
.ghos-angebot__preise { margin-top: 1rem; }
.ghos-angebot__preise-zeile {
  display: flex; justify-content: space-between;
  padding: .4rem 0;
  border-bottom: 1px dashed var(--ghos-color-border, #e2dfd5);
  font-size: .9rem;
}
.ghos-angebot__preise-zeile:last-child { border: 0; }
.ghos-angebot__preise-zeile strong { font-variant-numeric: tabular-nums; }

.ghos-angebot__cta {
  display: block;
  text-align: center;
  margin-top: 1.25rem;
  padding: .85rem 1.25rem;
  background: var(--ghos-color-primary, #2d6a3e);
  color: var(--ghos-color-on-primary, #fff);
  text-decoration: none;
  border-radius: 8px;
  font-weight: 600;
  transition: opacity .15s;
}
.ghos-angebot__cta:hover { opacity: .9; }
.ghos-angebot__cta--sekundaer {
  background: transparent;
  color: var(--ghos-color-primary, #2d6a3e);
  border: 1px solid var(--ghos-color-primary, #2d6a3e);
  margin-top: .5rem;
}

/* Galerie */
.ghos-angebot__galerie {
  margin: 3rem 0;
}
.ghos-angebot__galerie h2 {
  font-size: 1.25rem; margin: 0 0 1rem;
}
.ghos-angebot__galerie-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: .75rem;
}
.ghos-angebot__galerie-item {
  /* v1.34.0: jetzt <a> mit data-ghos-lightbox — Lightbox-Hook */
  position: relative;
  display: block;
  aspect-ratio: 4/3;
  overflow: hidden;
  border-radius: 8px;
  background: #f0ede5;
  cursor: zoom-in;
  text-decoration: none;
  color: inherit;
}
.ghos-angebot__galerie-item img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
  transition: transform .3s;
}
.ghos-angebot__galerie-item:hover img { transform: scale(1.04); }
.ghos-angebot__galerie-item figcaption {
  position: absolute;
  inset: auto 0 0 0;
  padding: .5rem .75rem;
  font-size: .8rem;
  color: #fff;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.65) 100%);
  pointer-events: none;
}

/* Verwandte Angebote */
.ghos-angebot__verwandt {
  border-top: 1px solid var(--ghos-color-border, #e2dfd5);
  padding-top: 2.5rem; margin-top: 3rem;
}
.ghos-angebot__verwandt h2 {
  font-size: 1.25rem; margin: 0 0 1.25rem;
}
.ghos-angebot__verwandt-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 1rem;
}

/* Karte (auch im Block angebote_grid genutzt) */
.ghos-angebot-karte {
  display: block;
  background: #fff;
  border: 1px solid var(--ghos-color-border, #e2dfd5);
  border-radius: 12px;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  transition: transform .2s, box-shadow .2s, border-color .2s;
}
.ghos-angebot-karte:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 30px -10px rgba(0,0,0,.12);
  border-color: var(--ghos-color-primary, #2d6a3e);
}
.ghos-angebot-karte__bild {
  aspect-ratio: 16/10;
  background: #f0ede5;
  overflow: hidden;
}
.ghos-angebot-karte__bild img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
}
.ghos-angebot-karte__korpus { padding: 1.1rem 1.25rem 1.4rem; }
.ghos-angebot-karte__kategorie {
  font-size: .75rem;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--ghos-color-primary, #2d6a3e);
  font-weight: 600;
  margin-bottom: .35rem;
}
.ghos-angebot-karte__titel {
  font-size: 1.15rem;
  font-weight: 600;
  margin: 0 0 .4rem;
  font-family: var(--ghos-font-headings, inherit);
  line-height: 1.25;
}
.ghos-angebot-karte__teaser {
  margin: 0 0 .8rem;
  font-size: .92rem;
  color: var(--ghos-color-text-muted, #555);
  line-height: 1.45;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.ghos-angebot-karte__meta {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem .75rem;
  font-size: .8rem;
  color: var(--ghos-color-text-muted, #666);
  border-top: 1px dashed var(--ghos-color-border, #e2dfd5);
  padding-top: .6rem;
}

/* Block angebote_grid (Container im CMS) */
.ghos-block-angebote-grid {
  padding: 3rem 0;
}
.ghos-block-angebote-grid__inner {
  max-width: 78rem; margin: 0 auto; padding: 0 1.5rem;
}
.ghos-block-angebote-grid__head {
  text-align: center;
  margin-bottom: 2rem;
  max-width: 48rem;
  margin-left: auto;
  margin-right: auto;
}
.ghos-block-angebote-grid__kicker {
  font-size: .85rem;
  text-transform: uppercase;
  letter-spacing: .12em;
  color: var(--ghos-color-primary, #2d6a3e);
  font-weight: 600;
  margin-bottom: .5rem;
}
.ghos-block-angebote-grid__titel {
  font-size: clamp(1.6rem, 3vw + .5rem, 2.4rem);
  margin: 0 0 .5rem;
  font-family: var(--ghos-font-headings, inherit);
}
.ghos-block-angebote-grid__einleitung {
  color: var(--ghos-color-text-muted, #555);
  margin: 0;
  line-height: 1.6;
}
.ghos-block-angebote-grid__filter {
  display: flex; flex-wrap: wrap; justify-content: center;
  gap: .5rem; margin-bottom: 1.5rem;
}
.ghos-block-angebote-grid__filter-btn {
  border: 1px solid var(--ghos-color-border, #e2dfd5);
  background: transparent;
  border-radius: 999px;
  padding: .35rem .9rem;
  font-size: .85rem;
  cursor: pointer;
  color: inherit;
  transition: all .15s;
}
.ghos-block-angebote-grid__filter-btn:hover,
.ghos-block-angebote-grid__filter-btn[aria-pressed="true"] {
  background: var(--ghos-color-primary, #2d6a3e);
  color: var(--ghos-color-on-primary, #fff);
  border-color: var(--ghos-color-primary, #2d6a3e);
}
.ghos-block-angebote-grid__grid {
  display: grid; gap: 1.25rem;
}
.ghos-block-angebote-grid__grid--2 { grid-template-columns: repeat(2, 1fr); }
.ghos-block-angebote-grid__grid--3 { grid-template-columns: repeat(3, 1fr); }
.ghos-block-angebote-grid__grid--4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 720px) {
  .ghos-block-angebote-grid__grid,
  .ghos-block-angebote-grid__grid--2,
  .ghos-block-angebote-grid__grid--3,
  .ghos-block-angebote-grid__grid--4 {
    grid-template-columns: 1fr;
  }
}
@media (min-width: 720px) and (max-width: 1080px) {
  .ghos-block-angebote-grid__grid--3,
  .ghos-block-angebote-grid__grid--4 {
    grid-template-columns: repeat(2, 1fr);
  }
}
.ghos-block-angebote-grid__leer {
  text-align: center;
  padding: 3rem 1rem;
  color: var(--ghos-color-text-muted, #777);
  border: 1px dashed var(--ghos-color-border, #e2dfd5);
  border-radius: 12px;
}

/* ════════════════════════════════════════════════════════════════════
   v1.39.0 — Buchungs-Kalender: Range-Highlight + Validierung-UI
   Wird von public/assets/js/buchung-kalender.js dynamisch befüllt.
   ════════════════════════════════════════════════════════════════════ */

.ghos-kal-tag {
  text-align: center;
  padding: .35rem 0;
  font-size: .9rem;
  font-variant-numeric: tabular-nums;
  position: relative;
  transition: background-color .12s ease, color .12s ease;
}

/* Vergangenheit oder über Vorschau-Ende hinaus */
.ghos-kal-tag--inaktiv {
  opacity: .3;
  cursor: default;
}

/* Belegt — rot */
.ghos-kal-tag--blockiert {
  background: rgba(220, 40, 40, .15);
  color: #a01;
  cursor: not-allowed;
  border-radius: .25rem;
}

/* Frei und auswählbar — dezent grün */
.ghos-kal-tag--frei {
  background: rgba(40, 160, 80, .12);
  color: #1a6b34;
  cursor: pointer;
  border-radius: .25rem;
}
.ghos-kal-tag--frei:hover {
  background: rgba(40, 160, 80, .25);
}

/* Anreise- und Abreise-Tag — kräftige Akzentfarbe */
.ghos-kal-tag--start,
.ghos-kal-tag--ende {
  background: var(--ghos-akzent, #773e18) !important;
  color: #fff !important;
  font-weight: 600;
  cursor: pointer;
}
.ghos-kal-tag--start { border-radius: .25rem 0 0 .25rem; }
.ghos-kal-tag--ende  { border-radius: 0 .25rem .25rem 0; }
.ghos-kal-tag--start.ghos-kal-tag--ende {
  /* Wenn Start == Ende (1 Tag), beide Rundungen */
  border-radius: .25rem;
}

/* Tage zwischen Anreise und Abreise — Range-Body */
.ghos-kal-tag--range {
  background: color-mix(in srgb, var(--ghos-akzent, #773e18) 22%, transparent);
  color: var(--ghos-akzent, #773e18);
  font-weight: 500;
  border-radius: 0;
  cursor: pointer;
}

/* Hover-Preview wenn Anreise gewählt, Abreise nicht — heller */
.ghos-kal-tag--preview {
  background: color-mix(in srgb, var(--ghos-akzent, #773e18) 10%, rgba(40, 160, 80, .12));
  color: var(--ghos-akzent, #773e18);
  cursor: pointer;
}

/* Validierungs-Fehler-Block unter dem Submit-Button */
.ghos-buchen-fehler {
  margin-top: .65rem;
  padding: .65rem .85rem;
  background: #fff4f4;
  border: 1px solid #ecbcbc;
  border-radius: 4px;
  color: #9a2a2a;
  font-size: .88rem;
  line-height: 1.4;
}
.ghos-buchen-fehler[hidden] { display: none; }

/* Pflichtfeld-Hervorhebung wenn Validierung fehlschlägt */
.ghos-buchen-feld--fehler {
  border-color: #c84a4a !important;
  background: #fff8f8;
}

/* ════════════════════════════════════════════════════════════════════
   /buchen — Filter-Bar + Karten + Empty-State
   v1.54.7 — Vorher fehlten alle .ghos-buchen-*-Klassen in
   app-public.css; sie existierten nur in app.css (Admin) und konnten
   im öffentlichen Layout nicht greifen, weil das Frontend NUR
   app-public.css lädt. Form-Felder rendeten ohne Padding/Border,
   Karten-Layout war komplett unstyled.

   Var-Mapping vs. Admin-CSS:
     --ghos-akzent-zart    →  --ghos-primary-soft
     --ghos-akzent         →  --ghos-primary
     --ghos-surface        →  #fff (Public hat kein Surface-Var)
     --ghos-border         →  --ghos-border (gleich)
   ════════════════════════════════════════════════════════════════════ */

.ghos-buchen-filter-section {
  background: var(--ghos-primary-soft, rgba(0, 0, 0, .03));
}

.ghos-buchen-filter {
  background: #fff;
  border: 1px solid var(--ghos-border, rgba(0, 0, 0, .1));
  border-radius: .6rem;
  padding: 1rem 1.25rem;
  box-shadow: 0 2px 6px rgba(0, 0, 0, .04);
}

.ghos-buchen-filter__felder {
  display: grid;
  grid-template-columns: 1fr 1fr 100px auto;
  gap: 1rem;
  align-items: end;
}

.ghos-buchen-filter__feld {
  display: flex;
  flex-direction: column;
  font-size: .82rem;
  font-weight: 500;
  gap: .25rem;
}

.ghos-buchen-filter__feld > span {
  opacity: .8;
}

.ghos-buchen-filter__feld input {
  padding: .5rem .65rem;
  border: 1px solid var(--ghos-border, rgba(0, 0, 0, .15));
  border-radius: .3rem;
  font: inherit;
  background: #fff;
}

.ghos-buchen-filter__feld input:focus {
  outline: 2px solid var(--ghos-primary, #2c5f3f);
  outline-offset: 1px;
}

.ghos-buchen-filter__aktionen {
  display: flex;
  gap: .5rem;
  align-items: center;
}

.ghos-buchen-filter__aktionen .ghos-btn {
  white-space: nowrap;
}

.ghos-buchen-filter__status {
  margin-top: .75rem;
  font-size: .9rem;
  min-height: 1.2em;
  padding: 0;
  border-radius: .3rem;
  transition: background .15s, padding .15s;
}

.ghos-buchen-filter__status:not(:empty) {
  padding: .5rem .75rem;
  background: var(--ghos-primary-soft, #f5f5f0);
}

.ghos-buchen-filter__status--ok {
  background: #e8f5e8;
  color: #1f5e2c;
}
.ghos-buchen-filter__status--warn {
  background: #fff7e0;
  color: #7a5a00;
}
.ghos-buchen-filter__status--fehler {
  background: #fde8e8;
  color: #8a1f1f;
}

@media (max-width: 720px) {
  .ghos-buchen-filter__felder {
    grid-template-columns: 1fr;
  }
  .ghos-buchen-filter__feld--klein {
    max-width: 8rem;
  }
  .ghos-buchen-filter__aktionen {
    justify-content: flex-start;
  }
  .ghos-buchen-filter__aktionen .ghos-btn {
    flex: 1;
  }
}

/* v1.54.7 — Zart-Button-Variante. Im Admin-CSS gibt es das, im public-
   Button-System bisher nicht. Hier minimal nachgereicht, damit der
   „Zurücksetzen"-Button bei der Filter-Bar einen visuellen Rahmen hat. */
.ghos-btn--zart {
  background: transparent;
  color: var(--ghos-text, #1f2329);
  border: 1px solid var(--ghos-border, rgba(0, 0, 0, .15));
}
.ghos-btn--zart:hover {
  background: var(--ghos-primary-soft, #f5f5f0);
  color: var(--ghos-primary, #2c5f3f);
}

/* ─── Karten-Layout (Häuser/Räume-Ergebnisliste) ──────────────────── */

.ghos-buchen-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr));
  gap: 1.25rem;
  margin-top: 1.25rem;
}

.ghos-buchen-gruppe {
  margin-top: 2rem;
}
.ghos-buchen-gruppe:first-child {
  margin-top: 0;
}

.ghos-buchen-karte {
  background: #fff;
  border: 1px solid var(--ghos-border, rgba(0, 0, 0, .1));
  border-radius: .5rem;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: inherit;
  transition: box-shadow .12s, transform .12s;
}

.ghos-buchen-karte:hover {
  box-shadow: 0 6px 18px rgba(0, 0, 0, .08);
  transform: translateY(-2px);
}

.ghos-buchen-karte__bild {
  display: block;
  width: 100%;
  aspect-ratio: 4/3;
  object-fit: cover;
  background: #f0eee8;
}

.ghos-buchen-karte__bild--leer {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  aspect-ratio: 4/3;
  background: var(--ghos-primary-soft, #f5f5f0);
  color: var(--ghos-text-soft, #8c95a1);
  font-size: .85rem;
}

.ghos-buchen-karte__inhalt {
  padding: 1rem 1.25rem 1.25rem;
  flex: 1;
  display: flex;
  flex-direction: column;
}

.ghos-buchen-karte--raum .ghos-buchen-karte__inhalt {
  padding: 1.25rem;
}

.ghos-buchen-karte__meta {
  margin-top: auto;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: .75rem;
  flex-wrap: wrap;
  font-size: .85rem;
  color: var(--ghos-text-mute, #5b6470);
  padding-top: .75rem;
}

.ghos-buchen-karte__kapa {
  color: var(--ghos-text-mute, #5b6470);
}

.ghos-buchen-karte__preis {
  font-weight: 600;
  color: var(--ghos-text, #1f2329);
  font-size: 1rem;
}
.ghos-buchen-karte__preis small {
  font-weight: 400;
  color: var(--ghos-text-mute, #5b6470);
  font-size: .8rem;
}
.ghos-buchen-karte__preis--leer {
  color: var(--ghos-text-soft, #8c95a1);
  font-weight: 400;
  font-size: .85rem;
}

.ghos-buchen-karte__badge {
  display: inline-block;
  padding: .15rem .55rem;
  border-radius: 99px;
  font-size: .75rem;
  font-weight: 500;
  letter-spacing: .02em;
  text-transform: uppercase;
  background: var(--ghos-primary-soft, #f5f5f0);
  color: var(--ghos-primary, #2c5f3f);
  margin-bottom: .5rem;
  align-self: flex-start;
}

.ghos-buchen-karte__badge--frei {
  background: #d1fadf;
  color: #1f5e2c;
}
.ghos-buchen-karte__badge--blockiert {
  background: #fde8e8;
  color: #8a1f1f;
}
.ghos-buchen-karte__badge--zuklein {
  background: #fff3d6;
  color: #7a5a00;
}

.ghos-buchen-karte--frei {
  border-color: #74c186;
}

.ghos-buchen-karte--blockiert,
.ghos-buchen-karte--zuklein {
  opacity: .65;
  filter: grayscale(.4);
}
.ghos-buchen-karte--blockiert:hover,
.ghos-buchen-karte--zuklein:hover {
  opacity: .85;
}

.ghos-buchen-leer {
  margin-top: 1.5rem;
  padding: 1.25rem 1.5rem;
  background: #fff;
  border: 1px dashed var(--ghos-border, rgba(0, 0, 0, .15));
  border-radius: .4rem;
  font-size: .95rem;
  opacity: .75;
  text-align: center;
}

/* ════════════════════════════════════════════════════════════════════
   v1.55.0 — UI-VEREINHEITLICHUNG (Frontend)
   ════════════════════════════════════════════════════════════════════

   Parallel zu app.css — Lücken im Frontend-Design-System schließen.
   Backend und Frontend teilen sich konzeptuell die gleichen
   Bausteine (Button-Vollsatz, Code-Blöcke, Tabellen-Schliff), aber
   die Token-Namen unterscheiden sich (--ghos-primary vs --ghos-akzent,
   --ghos-border vs --ghos-trennlinie). Beide Welten werden hier
   sauber gefasst.
   ──────────────────────────────────────────────────────────────────── */

/* ── BUTTON-ALIAS-VARIANTEN (falls Views beide Welten mischen) ──────── */

.ghos-btn--zart,
.ghos-btn--sekundaer,
.ghos-btn--neutral {
  background: transparent;
  border: 1px solid var(--ghos-border, #e3e1da);
  color: var(--ghos-text-mute, #5b6470);
}
.ghos-btn--zart:hover,
.ghos-btn--sekundaer:hover,
.ghos-btn--neutral:hover {
  background: var(--ghos-bg-creme, #faf6ef);
  border-color: var(--ghos-border-stark, #c5c2b6);
  color: var(--ghos-text, #1f2329);
}
.ghos-btn--primary {
  /* Englischer Alias auf --primaer */
  background: var(--ghos-primary, #2c5f3f);
  border: 1px solid var(--ghos-primary, #2c5f3f);
  color: #fff;
}
.ghos-btn--primary:hover {
  background: var(--ghos-primary-dark, #1f4630);
  border-color: var(--ghos-primary-dark, #1f4630);
}

/* ── PRE / CODE-BLÖCKE ────────────────────────────────────────────────
   Auch im Frontend kann ein <pre> auftauchen (z.B. Anfrage-Mail-Detail
   im Mandant-Bereich). Einheitliche Card-Optik statt Browser-Default. */

.ghos-pre,
.ghos-public-pre {
  margin: 0;
  padding: .85rem 1rem;
  background: var(--ghos-bg-creme, #faf6ef);
  border: 1px solid var(--ghos-border, #e3e1da);
  border-radius: var(--ghos-radius, 8px);
  color: var(--ghos-text, #1f2329);
  font-family: var(--ghos-font-mono, ui-monospace, 'SF Mono', monospace);
  font-size: .85rem;
  line-height: 1.6;
  white-space: pre-wrap;
  word-break: break-word;
  overflow-x: auto;
  max-height: 480px;
}

/* ── TABELLEN ──────────────────────────────────────────────────────────
   Frontend-Tabellen-Helper, falls in Buchungsbestätigungen oder
   Faktura-Übersichten Tabellen erscheinen. */

.ghos-public-tabelle {
  width: 100%;
  border-collapse: collapse;
  font-size: .95rem;
}
.ghos-public-tabelle thead th {
  text-align: left;
  font-weight: 600;
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--ghos-text-mute, #5b6470);
  border-bottom: 1px solid var(--ghos-border, #e3e1da);
  padding: .65rem .85rem;
}
.ghos-public-tabelle tbody td {
  padding: .75rem .85rem;
  border-bottom: 1px solid var(--ghos-border, #e3e1da);
}
.ghos-public-tabelle tbody tr:last-child td { border-bottom: none; }

.ghos-table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  border: 1px solid var(--ghos-border, #e3e1da);
  border-radius: var(--ghos-radius, 8px);
  background: #fff;
}

/* ── DETAILS / SUMMARY ────────────────────────────────────────────────
   Konsistentes Disclosure-Pattern. */

details.ghos-public-details {
  margin: .5rem 0;
}
details.ghos-public-details > summary {
  cursor: pointer;
  user-select: none;
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  font-weight: 500;
  font-size: .95rem;
  color: var(--ghos-primary, #2c5f3f);
  list-style: none;
  padding: .25rem 0;
}
details.ghos-public-details > summary::-webkit-details-marker { display: none; }
details.ghos-public-details > summary::before {
  content: "";
  width: 0; height: 0;
  border-left: 4px solid currentColor;
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
  transition: transform .15s ease;
}
details.ghos-public-details[open] > summary::before {
  transform: rotate(90deg);
}

/* ── KEYBOARD-FOCUS ───────────────────────────────────────────────────
   Sichtbare Focus-Outline für Tastaturnutzer, ersetzt Browser-Default. */

a:focus-visible,
button:focus-visible {
  outline: 2px solid var(--ghos-primary, #2c5f3f);
  outline-offset: 2px;
  border-radius: 3px;
}
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: 2px solid var(--ghos-primary, #2c5f3f);
  outline-offset: 1px;
}
