/* PRUEFMARKE: site.css Stand 2026-09-29-CO (Salbei kontrastsicher, LCP-Preload erstes Dia, Buttontexte) */
:root{ --arrow-r:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.25'%3E%3Cpath d='M1 12h20M15 7.5l5.5 4.5-5.5 4.5'/%3E%3C/svg%3E"); }

/* WIEDERHERGESTELLT: Kern-Variablen (waren versehentlich mitentfernt worden) */
:root {
    /* --- Grundflaechen & Text --- */
    --paper:        #FFFFFF;   /* Seiten-Hintergrund (hell) */
    --paper-2:      #EEEEEE;   /* leicht abgesetzte Flaeche (Logos, Testimonial) */
    --white:        #FFFFFF;   /* echtes Weiss (Overlay-Taefelchen, Karten) */
    --ink:          #000000;   /* Textfarbe - reines Schwarz */
    --ink-soft:     #000000;   /* gedaempfter Text - bewusst auch Schwarz, kein Grau */
    --line:         #EEEEEE;   /* Rahmen/Trennwert (im GD-Design kaum genutzt) */

    /* --- Markenfarben (Namen historisch) --- */
    --petrol:       #302F33;   /* Markenschwarz: Footer, Knoepfe, dunkles Logo */
    --petrol-deep:  #161922;   /* tiefstes Schwarz */
    --petrol-tint:  #EEEEEE;   /* sehr helle Akzentflaeche */
    --coral:        #3FAF6A;   /* Akzent (monochrom = Schwarz) */
    --coral-soft:   #EEEEEE;   /* weicher Akzent / Raender */

    /* --- Verlauf: traegt die Mitte der Seite, nicht nur Knoepfe --- */
    --accent-from:  #3FAF6A;   /* fbng gruen */
    --accent-to:    #FED622;   /* fbng gelb */
    --accent-gradient: linear-gradient(100deg, #3FAF6A 0%, #FED622 100%);
    --muted:        #777777;   /* Fliesstext auf Weiss */
    --rating:       #D87935;   /* Bewertungssterne */

    /* --- Typografie --- */
    --font-display: "museo-sans", system-ui, -apple-system, "Segoe UI", sans-serif;  /* Titel, Nav */
    --font-body:    "museo-sans", system-ui, -apple-system, "Segoe UI", sans-serif;  /* Fliesstext */

    /* --- Form & Abstand --- */
    --radius:        14px;    /* Eckenradius gross (Kacheln, Karten) */
    --radius-sm:     10px;    /* Eckenradius klein */
    --wrap:          1180px;  /* maximale Inhaltsbreite */
    --measure:       44rem;   /* angenehme Lesebreite fuer Textspalten */
    --space-section: clamp(3.5rem, 5vw, 5rem);              /* vertikaler Sektionsabstand */
    --step-fluid:    clamp(2.4rem, 1.4rem + 3.4vw, 4.1rem); /* fluide Ueberschrift-Groesse */

    /* --- Heller Seiten-Mesh (fixierter Hintergrund, body::before) --- */
    --mesh-base:  #FBFBFC;
    --mesh-image:
        radial-gradient(60% 55% at 14% 18%, #DCE3EC 0%, transparent 60%),
        radial-gradient(55% 55% at 88% 12%, #ECE6DC 0%, transparent 56%),
        radial-gradient(60% 60% at 82% 86%, #CAD6E4 0%, transparent 62%),
        radial-gradient(55% 55% at 16% 92%, #E3E9F1 0%, transparent 60%);

    /* --- Schatten (Trennung ohne Linien) --- */
    --shadow-sm:  0 1px 2px rgba(0,0,0,.06), 0 4px 16px rgba(0,0,0,.05);
    --shadow-md:  0 10px 40px rgba(0,0,0,.12);
}

/* =========================================================
   SCHRIFT: Museo Sans ueber Adobe Fonts (Typekit-Kit in config
   'fonts.typekit'). Das Layout laedt das Kit nicht-blockierend.
   Book = 300 Fliesstext, Bold = 700 Titel/Navigation.
   Kein self-hosted @font-face noetig.
   ========================================================= */
*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
    margin: 0;
    font-family: var(--font-body);
    font-size: 1.02rem;
    line-height: 1.65;
    color: var(--ink);
    background: transparent;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

h1, h2, h3 {
    font-family: var(--font-display);
    font-weight: 600;
    line-height: 1.12;
    letter-spacing: -0.01em;
    color: var(--ink);
    margin: 0 0 .5em;
}

p { margin: 0 0 1rem; }
a { color: var(--petrol-deep); text-decoration-thickness: 1px; text-underline-offset: 2px; }
a:hover { color: var(--petrol-deep); }
img { max-width: 100%; display: block; }

.wrap { width: min(100% - 2.5rem, var(--wrap)); margin-inline: auto; }
.measure { max-width: var(--measure); }

.visually-hidden, .skip-link:not(:focus) {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.skip-link {
    position: absolute; left: 1rem; top: 1rem; z-index: 100;
    background: var(--ink); color: var(--white); padding: .6rem 1rem;
    border-radius: var(--radius-sm); text-decoration: none;
}

:focus-visible { outline: 3px solid var(--coral); outline-offset: 2px; border-radius: 4px; }

/* ---------- Eyebrow ---------- */
.eyebrow {
    font-size: .8rem; font-weight: 600; letter-spacing: .12em;
    text-transform: uppercase; color: var(--petrol-deep); margin: 0 0 .9rem;
}

/* ---------- Buttons ---------- */
.btn {
    display: inline-flex; align-items: center; gap: .5rem;
    font-family: var(--font-body); font-weight: 600; font-size: .98rem;
    padding: .8rem 1.5rem; border-radius: 999px; text-decoration: none;
    border: 1.5px solid transparent; cursor: pointer; transition: transform .15s ease, background .2s ease, color .2s ease;
}
.btn:active { transform: translateY(1px); }
.btn-primary { background: var(--petrol-deep); color: var(--white); }
.btn-primary:hover { background: var(--petrol-deep); color: var(--white); }
.btn-ghost { background: transparent; color: var(--petrol-deep); border-color: var(--line); }
.btn-ghost:hover { border-color: var(--petrol); color: var(--petrol-deep); }
.btn-ghost-light { background: transparent; color: var(--white); border-color: rgba(255,255,255,.5); }
.btn-ghost-light:hover { border-color: var(--white); color: var(--white); }

.link-arrow { font-weight: 600; text-decoration: none; }
.link-arrow::after { content: " \2192"; transition: margin .15s ease; }
.link-arrow:hover::after { margin-left: .25rem; }

/* ---------- Header (Taupe-Leiste, weisses Logo) ---------- */
html { background: var(--petrol); }
html.intro-seen { background: var(--paper); }

.site-header {
    position: sticky; top: 0; z-index: 50;
    background: var(--petrol); color: var(--white);
    height: 100px; display: flex; align-items: center; gap: 1.5rem;
    padding: 0 clamp(1.2rem, 4vw, 2.4rem);
}
.brand { display: inline-flex; align-items: center; text-decoration: none; color: var(--white); }
.brand-logo { display: block; height: 56px; overflow: hidden; transition: height .32s cubic-bezier(.65,0,.2,1); }
.brand .kk-logo { width: 106px; height: auto; display: block; opacity: 0; }
.brand .logo-wordmark { transition: opacity .24s ease; }
/* Beim Scrollen faltet die Wortmarke weg, das Signet bleibt */
.site-header.header-compact .brand-logo { height: 40px; }
.site-header.header-compact .brand .logo-wordmark { opacity: 0; }
.header-right { margin-left: auto; display: flex; align-items: center; gap: clamp(1.1rem, 2.2vw, 1.9rem); }
.search-toggle { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; margin: -8px 0; padding: 0; background: none; border: 0; border-radius: 50%; color: var(--white); cursor: pointer; opacity: 0; transition: opacity .45s ease, background-color .2s ease; }
.search-toggle:hover { background: rgba(255,255,255,.12); }
.site-nav {}
.nav-list { display: flex; gap: 1.9rem; list-style: none; margin: 0; padding: 0; opacity: 0; }
.nav-list a { position: relative; color: var(--white); text-decoration: none; font-family: var(--font-body); font-weight: 600; font-size: 1.12rem; opacity: 1; }
.nav-list a:hover, .nav-list a[aria-current="page"] { opacity: 1; }
.nav-list a::after { content: ""; position: absolute; left: 0; bottom: -6px; height: 3px; width: 100%; background: var(--white); border-radius: 2px; transform: scaleX(0); transform-origin: left center; transition: transform .35s ease; }
.nav-list a:hover::after { transform: scaleX(1); }
.nav-list a[aria-current="page"]::after { transform: scaleX(1); animation: navUnderline .45s ease both; }
@keyframes navUnderline { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@media (prefers-reduced-motion: reduce) { .nav-list a::after { transition: none; } .nav-list a[aria-current="page"]::after { animation: none; } }

/* Hamburger, nur mobil */
.burger { display: none; width: 30px; height: 20px; position: relative; background: none; border: 0; padding: 0; cursor: pointer; opacity: 0; }
.burger::after { content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); width: 44px; height: 44px; }
.burger span { position: absolute; left: 0; right: 0; height: 2.5px; background: var(--white); border-radius: 2px; transition: transform .3s cubic-bezier(.65,0,.2,1), opacity .2s ease; }
.burger span:nth-child(1) { top: 0; }
.burger span:nth-child(2) { top: 50%; margin-top: -1.25px; }
.burger span:nth-child(3) { bottom: 0; }
body.menu-open .burger span:nth-child(1) { top: 50%; margin-top: -1.25px; transform: rotate(45deg); }
body.menu-open .burger span:nth-child(2) { opacity: 0; }
body.menu-open .burger span:nth-child(3) { bottom: 50%; margin-bottom: -1.25px; transform: rotate(-45deg); }

/* Mobiles Dropdown */
.mobile-menu { display: none; position: fixed; top: 100px; left: 0; right: 0; background: var(--petrol);
    flex-direction: column; padding: .4rem 0 1rem; z-index: 45;
    transform: translateY(-14px); opacity: 0; pointer-events: none;
    transition: transform .28s cubic-bezier(.65,0,.2,1), opacity .28s ease;
    box-shadow: 0 14px 24px -16px rgba(0,0,0,.45); }
body.menu-open .mobile-menu { transform: translateY(0); opacity: 1; pointer-events: auto; }
.mobile-menu a { color: var(--white); text-decoration: none; padding: .95rem clamp(1.2rem,4vw,2.4rem); font-size: 1.18rem; font-weight: 600; }
.mobile-menu a:hover, .mobile-menu a[aria-current="page"] { background: rgba(255,255,255,.10); }

/* Intro-Vorhang */
#introOverlay { position: fixed; left: 0; top: 0; width: 100%; height: 100vh; background: var(--petrol); z-index: 900; }
#introWrap { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; z-index: 950; pointer-events: none; }
#introWrap .kk-logo { width: min(360px, 68vw); height: auto; display: block; color: var(--white); opacity: 0; }

/* Einblenden nach dem Intro */
.nav-list, .burger, .search-toggle { transition: opacity .45s ease; }
/* Inhalt ist von Anfang an gemalt (gut fuer LCP) und wird nur optisch vom Vorhang verdeckt */
html.intro-seen #introOverlay, html.intro-seen #introWrap { display: none; }
html.intro-seen .brand .kk-logo,
html.intro-seen .nav-list,
html.intro-seen .search-toggle,
html.intro-seen .burger { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
    #introOverlay, #introWrap { display: none; }
    html { background: var(--paper); }
    .brand .kk-logo, .nav-list, .search-toggle, .burger, main#inhalt { opacity: 1; }
}

/* Mobiler Umschaltpunkt fuer den Kopf */
@media (max-width: 720px) {
    .site-header { height: 84px; padding: 0 clamp(1rem, 4vw, 1.5rem); }
    .brand-logo { height: 46px; }
    .brand .kk-logo { width: 87px; }
    .site-header.header-compact .brand-logo { height: 33px; }
    .nav-list { display: none; }
    .burger { display: block; }
    .mobile-menu { display: flex; top: 84px; }
}

/* ---------- Suche (Overlay) ---------- */
body.search-open { overflow: hidden; }
.search-overlay { position: fixed; inset: 0; z-index: 1000; display: flex; justify-content: center; align-items: flex-start; }
.search-overlay[hidden] { display: none; }
.search-backdrop { position: absolute; inset: 0; background: rgba(10,10,10,.55); backdrop-filter: blur(2px); }
.search-box { position: relative; width: min(640px, 92vw); margin-top: clamp(4rem, 12vh, 9rem); background: var(--white); color: var(--ink); border-radius: var(--radius); box-shadow: 0 30px 60px -20px rgba(0,0,0,.5); overflow: hidden; animation: searchIn .26s cubic-bezier(.65,0,.2,1) both; }
@keyframes searchIn { from { opacity: 0; transform: translateY(-12px); } to { opacity: 1; transform: translateY(0); } }
.search-field { display: flex; align-items: center; gap: .7rem; padding: 1rem 1.1rem; border-bottom: 1px solid var(--line); color: var(--ink-soft); }
.search-input { flex: 1; min-width: 0; border: 0; outline: 0; background: none; font-family: var(--font-body); font-size: 1.15rem; color: var(--ink); padding: .25rem 0; }
.search-input::placeholder { color: var(--ink-soft); opacity: .8; }
.search-close { background: none; border: 0; font-size: 1.7rem; line-height: 1; color: var(--ink-soft); cursor: pointer; padding: 0 .2rem; }
.search-close:hover { color: var(--ink); }
.search-hint { margin: 0; padding: 1.1rem 1.2rem 1.3rem; color: var(--ink-soft); font-size: .96rem; }
.search-results { list-style: none; margin: 0; padding: 0; max-height: min(56vh, 460px); overflow-y: auto; }
.search-results li a { display: block; padding: .85rem 1.2rem; text-decoration: none; color: var(--ink); border-bottom: 1px solid var(--line); transition: background-color .15s ease; }
.search-results li:last-child a { border-bottom: 0; }
.search-results li a:hover, .search-results li a:focus { background: var(--petrol-tint); }
.sr-title { display: block; font-family: var(--font-display); font-weight: 700; font-size: 1.04rem; }
.sr-text { display: block; color: var(--ink-soft); font-size: .9rem; margin-top: .15rem; }
.search-none { padding: 1.1rem 1.2rem 1.3rem; color: var(--ink-soft); }
@media (prefers-reduced-motion: reduce) { .search-box { animation: none; } }


.hero { position: relative; padding: var(--space-section) 0; }
.hero-inner {
    display: grid; grid-template-columns: 1.25fr .75fr; gap: clamp(2rem, 4vw, 3.2rem); align-items: center;
    padding-bottom: clamp(3rem, 5vw, 4.5rem);
}
.hero-inner > * { min-width: 0; }
.hero-title { font-size: var(--step-fluid); margin-bottom: .6rem; }
.hero-lead { font-size: 1.18rem; color: var(--ink-soft); max-width: 34ch; margin-bottom: 1.8rem; }
.hero-actions { display: flex; flex-wrap: wrap; gap: .8rem; }

/* ---------- Hero-Slider ---------- */
.hero-slider { position: relative; width: 100%; max-width: 360px; margin-left: auto; min-width: 0; }
.hs-viewport { overflow: hidden; border-radius: var(--radius); box-shadow: var(--shadow-md); background: var(--white); }
.hs-track { display: flex; transition: transform .6s cubic-bezier(.65,0,.2,1); }
.hs-slide { min-width: 100%; }
.hs-card { display: flex; flex-direction: column; background: var(--white); text-decoration: none; color: inherit; }
.hs-frame { position: relative; width: 100%; padding-top: 100%; overflow: hidden; background-color: #FBFBFC; background-image: radial-gradient(60% 55% at 14% 18%, #DCE3EC 0%, transparent 60%), radial-gradient(55% 55% at 88% 12%, #ECE6DC 0%, transparent 56%), radial-gradient(60% 60% at 82% 86%, #CAD6E4 0%, transparent 62%), radial-gradient(55% 55% at 16% 92%, #E3E9F1 0%, transparent 60%); }
.hs-pic { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.hs-body { padding: 1.25rem 1.4rem 1.4rem; background: var(--white); }
.hs-body .eyebrow { margin-bottom: .4rem; }
.hs-body h3 { font-size: 1.3rem; font-weight: 600; line-height: 1.15; margin: 0 0 .3rem; }
.hs-body p { font-size: 1rem; color: var(--ink); margin: 0 0 .7rem; }
.hs-more { display: inline-flex; align-items: center; gap: .35rem; color: var(--petrol-deep); font-weight: 600; }
.hs-more .ar { transition: transform .2s ease; }
.hs-card:hover .hs-more .ar { transform: translateX(3px); }
.hs-controls { display: flex; align-items: center; gap: 1rem; margin-top: 1rem; justify-content: center; }
.hs-arrow { width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--line); background: transparent; color: var(--petrol-deep);
    display: inline-flex; align-items: center; justify-content: center; cursor: pointer; transition: border-color .2s ease, color .2s ease; }
.hs-arrow:hover { border-color: var(--petrol); }
.hs-arrow svg { width: 15px; height: 15px; }
.hs-dots { display: flex; gap: .5rem; }
.hs-dot { width: 26px; height: 26px; border: 0; padding: 0; background: transparent; cursor: pointer; position: relative; }
.hs-dot::before { content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); width: 9px; height: 9px; border-radius: 50%; background: rgba(79,74,67,.28); transition: background .25s ease, transform .25s ease; }
.hs-dot[aria-current="true"]::before { background: var(--petrol-deep); transform: translate(-50%,-50%) scale(1.25); }
@media (prefers-reduced-motion: reduce) { .hs-track { transition: none; } }

.hero-pulse { position: relative; min-height: 220px; display: flex; align-items: center; }
.ecg { width: 100%; height: 230px; }
.ecg-track { fill: none; stroke: var(--petrol); stroke-width: 2; opacity: .14; }
.ecg-trace {
    fill: none; stroke: var(--coral); stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round;
    stroke-dasharray: 1400; stroke-dashoffset: 1400;
    animation: ecg-draw 4.2s linear infinite;
    filter: drop-shadow(0 0 6px color-mix(in srgb, var(--coral) 45%, transparent));
}
@keyframes ecg-draw {
    0%   { stroke-dashoffset: 1400; }
    70%  { stroke-dashoffset: 0; }
    100% { stroke-dashoffset: -1400; }
}

/* ---------- Quickbar ---------- */
.quickbar {
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 0;
    background: var(--white); border-radius: var(--radius);
    overflow: hidden; box-shadow: var(--shadow-sm); margin-top: 0;
}
.quick { background: var(--white); padding: 1.2rem 1.4rem; display: flex; flex-direction: column; gap: .15rem; }
.quick-label { font-size: .76rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-soft); }
.quick-main { font-size: 1.05rem; font-weight: 600; color: var(--ink); text-decoration: none; }
.quick-sub { font-size: .9rem; color: var(--ink-soft); }
.status { display: inline-flex; align-items: center; gap: .4rem; font-weight: 600; font-size: 1.05rem; }
.status::before { content: ""; width: .6rem; height: .6rem; border-radius: 50%; }
.status-open { color: var(--petrol-deep); }
.status-open::before { background: #2E9E6B; box-shadow: 0 0 0 3px rgba(46,158,107,.18); }
.status-closed { color: var(--ink-soft); }
.status-closed::before { background: #C0563C; box-shadow: 0 0 0 3px rgba(192,86,60,.16); }

/* ---------- Sections ---------- */
.section { padding: var(--space-section) 0; }
.section-alt { background: var(--white); }
.section-intro { padding: var(--space-section) 0; }
.section-head { max-width: 40rem; margin-bottom: 2.2rem; }
.section-head h2 { font-size: clamp(1.8rem, 1.2rem + 2vw, 2.6rem); }
.section-more { margin-top: 2rem; }

/* ---------- Abwechselnde Sektions-Hintergruende ---------- */
/* Ruhiges Mesh-Feld (Sanftes Blau), feststehend hinter der Seite */
body::before {
    content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none;
    background-color: #FBFBFC;
    background-image:
        radial-gradient(60% 55% at 14% 18%, #DCE3EC 0%, transparent 60%),
        radial-gradient(55% 55% at 88% 12%, #ECE6DC 0%, transparent 56%),
        radial-gradient(60% 60% at 82% 86%, #CAD6E4 0%, transparent 62%),
        radial-gradient(55% 55% at 16% 92%, #E3E9F1 0%, transparent 60%);
}
/* Ungerade Sektionen weiss (decken das Mesh ab), gerade lassen es durchscheinen */
main#inhalt > section:nth-of-type(odd)  { background: var(--white); position: relative; }
main#inhalt > section:nth-of-type(even) { background: transparent; position: relative; }
/* Ausnahme: einzelne Sections bewusst weiss, auch wenn sie an gerader Position stehen */
main#inhalt > section.section-plain { background: var(--white); padding-top: clamp(1.4rem, 3vw, 2rem); }
/* Kopf der Listenseiten naeher an die Kacheln ruecken */
.page-header-attached { padding-bottom: 0; }
/* Detailansicht: Info-Section mit Mesh hinterlegt */
main#inhalt > section.doctor-detail-info {
    background-color: var(--mesh-base);
    background-image: var(--mesh-image);
}
.doctor-detail-info .wrap > .doctor-section-title:first-child { margin-top: 0; }

/* Kacheln zeitversetzt von unten einfaden (Aerzte + Team) */
@keyframes cardFadeUp {
    from { opacity: 0; transform: translateY(14px); }
    to   { opacity: 1; transform: translateY(0); }
}
.doctor-grid .doctor-card { animation: cardFadeUp .55s ease backwards; }
@media (prefers-reduced-motion: reduce) {
    .doctor-grid .doctor-card { animation: none; }
}

/* ---------- Cards ---------- */
.card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 1.2rem; }
.card {
    background: var(--white); border-radius: var(--radius);
    padding: 1.6rem; box-shadow: var(--shadow-sm); transition: transform .18s ease, box-shadow .18s ease;
}
.card:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); }
.card-title { font-size: 1.2rem; margin-bottom: .4rem; }
.card p { margin: 0; color: var(--ink-soft); font-size: .98rem; }

/* ---------- Team ---------- */
.team-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1.4rem; }
.team-grid-full { gap: 1.8rem; }
.team-card { text-align: center; }
.team-photo {
    width: 92px; height: 92px; margin: 0 auto .9rem; border-radius: 50%; overflow: hidden;
    background: linear-gradient(135deg, var(--petrol), var(--petrol-deep));
    color: var(--white); display: grid; place-items: center;
    font-family: var(--font-display); font-size: 2.2rem; box-shadow: var(--shadow-sm);
}
.team-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.team-name { font-size: 1.15rem; margin-bottom: .15rem; }
.team-role { color: var(--petrol-deep); font-weight: 600; font-size: .92rem; margin-bottom: .5rem; }
.team-bio { color: var(--ink-soft); font-size: .94rem; margin: 0 auto; max-width: 30ch; }

/* ---------- News ---------- */
.news-list { display: grid; gap: 1.6rem; }
.news-item { display: grid; grid-template-columns: 8rem 1fr; gap: 1.2rem; padding-bottom: 1.6rem; border-bottom: 1px solid var(--line); }
.news-item:last-child { border-bottom: 0; padding-bottom: 0; }
.news-date { color: var(--ink-soft); font-size: .9rem; font-weight: 600; padding-top: .2rem; }
.news-title { font-size: 1.25rem; margin-bottom: .3rem; }
.news-pinned .news-title { color: var(--petrol-deep); }
.pin { color: var(--coral); }

/* ---------- CTA band ---------- */
.cta-band { border-radius: 0; }
.cta-band h2 { font-size: clamp(1.7rem, 1.2rem + 1.6vw, 2.3rem); }
.cta-band p { color: var(--ink-soft); margin: 0; }
.cta-inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.5rem; }
.cta-actions { display: flex; flex-wrap: wrap; gap: .8rem; }

/* ---------- Page header ---------- */
.page-header { padding: var(--space-section) 0; }
.page-header h1 { font-size: clamp(2rem, 1.4rem + 2.6vw, 3.2rem); }
.page-lead { font-size: 1.18rem; color: var(--ink-soft); max-width: 46ch; }

/* ---------- Prose ---------- */
.prose { color: var(--ink); }
.prose h2 { font-size: 1.6rem; margin-top: 2rem; }
.prose h3 { font-size: 1.25rem; margin-top: 1.5rem; }
.prose p { margin-bottom: 1.1rem; }
.prose a { font-weight: 500; }
.prose-sm { font-size: .96rem; }
.prose-sm p:last-child { margin-bottom: 0; }

/* ---------- Contact ---------- */
.contact-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.5rem; }
.contact-card { background: var(--white); border-radius: var(--radius); padding: 1.8rem; box-shadow: var(--shadow-sm); }
.contact-card h2 { font-size: 1.4rem; display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.contact-card .status { font-size: .85rem; }
.contact-address { font-style: normal; margin-bottom: 1.2rem; line-height: 1.6; }
.contact-line { display: flex; gap: .8rem; margin: .4rem 0; }
.contact-label { min-width: 5rem; color: var(--ink-soft); font-size: .92rem; }
.contact-emergency { margin-top: 1.2rem; padding: .9rem 1.1rem; background: var(--white); border-left: 3px solid var(--coral); border-radius: var(--radius-sm); font-size: .94rem; color: var(--ink-soft); }
.hours { width: 100%; border-collapse: collapse; }
.hours th { text-align: left; font-weight: 500; padding: .55rem 0; color: var(--ink); vertical-align: top; }
.hours td { text-align: right; padding: .55rem 0; color: var(--ink-soft); font-variant-numeric: tabular-nums; }
.hours tr { border-bottom: 1px solid var(--line); }
.hours tr:last-child { border-bottom: 0; }
.hours-label { display: block; font-size: .8rem; }

.empty { color: var(--ink-soft); font-style: italic; }

/* ---------- Footer ---------- */
.site-footer { background: var(--petrol); color: var(--white); padding: 3.5rem 0 1.8rem; margin-top: 0; }
.footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 2rem; padding-bottom: 2.5rem; border-bottom: 1px solid rgba(255,255,255,.22); }
.footer-logo { color: var(--white); margin-bottom: .9rem; }
.footer-logo .kk-logo { height: 76px; width: auto; display: block; }
.footer-name { font-family: var(--font-display); font-weight: 600; font-size: 1.2rem; color: var(--white); margin: .6rem 0 .3rem; }
.footer-tagline { font-size: .94rem; max-width: 32ch; }
.footer-head { font-size: .82rem; letter-spacing: .1em; text-transform: uppercase; color: rgba(255,255,255,.85); margin: 0 0 .9rem; font-family: var(--font-body); font-weight: 600; }
.footer-address { font-style: normal; line-height: 1.8; }
.footer-address a, .footer-links a { color: var(--white); text-decoration: none; }
.footer-address a:hover, .footer-links a:hover { color: var(--white); }
.footer-links { list-style: none; margin: 0; padding: 0; line-height: 2; }
.footer-base { display: flex; justify-content: space-between; flex-wrap: wrap; gap: .5rem; padding-top: 1.4rem; font-size: .88rem; color: rgba(255,255,255,.9); }
.footer-base a { color: var(--white); }

/* ---------- Responsive ---------- */
@media (max-width: 860px) {
    .hero-inner { grid-template-columns: 1fr; gap: 1.5rem; padding-bottom: 2.5rem; }
    .hero-slider { max-width: 360px; margin-inline: auto; margin-left: auto; width: 100%; }
    /* hs-pic bleibt quadratisch (aspect-ratio 1/1 aus der Grundregel) */
    .hero-pulse { order: -1; min-height: 120px; }
    .ecg { height: 130px; }
    .quickbar { grid-template-columns: 1fr; }
    .footer-grid { grid-template-columns: 1fr; gap: 1.6rem; }

    .cta-inner { flex-direction: column; align-items: flex-start; }
    .news-item { grid-template-columns: 1fr; gap: .3rem; }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    .ecg-trace { animation: none; stroke-dashoffset: 0; }
    * { transition: none !important; }
}

/* ---------- Ärztinnen und Ärzte ---------- */
.doctor-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(248px, 1fr));
    gap: 1.8rem 1.6rem;
}
.doctor-card {
    position: relative;
    display: flex; flex-direction: column;
    background: var(--white);
    border-radius: var(--radius);
    overflow: hidden;
    text-decoration: none;
    color: inherit;
    box-shadow: var(--shadow-sm);
    transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease;
}
.doctor-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-md);
}

.doctor-photo {
    aspect-ratio: 1 / 1;
    background-color: #FBFBFC;
    background-image:
        radial-gradient(60% 55% at 14% 18%, #DCE3EC 0%, transparent 60%),
        radial-gradient(55% 55% at 88% 12%, #ECE6DC 0%, transparent 56%),
        radial-gradient(60% 60% at 82% 86%, #CAD6E4 0%, transparent 62%),
        radial-gradient(55% 55% at 16% 92%, #E3E9F1 0%, transparent 60%);
    display: flex; align-items: center; justify-content: center;
    overflow: hidden;
}
.doctor-photo img, .doctor-photo .doctor-placeholder {
    width: 100%; height: 100%; object-fit: cover; display: block;
    transition: transform .5s ease;
}
.doctor-card:hover .doctor-photo img,
.doctor-card:hover .doctor-photo .doctor-placeholder { transform: scale(1.04); }

.doctor-body { padding: 1.15rem 1.25rem 1.4rem; }
.doctor-name {
    font-family: var(--font-display);
    font-size: 1.3rem; line-height: 1.2; font-weight: 600;
    color: var(--ink); margin: 0 0 .25rem;
    transition: color .2s ease;
}
.doctor-card:hover .doctor-name { color: var(--petrol-deep); }
.doctor-role { color: var(--ink-soft); font-size: .92rem; line-height: 1.45; margin: 0; }
.doctor-view {
    display: inline-flex; align-items: center; gap: .35rem;
    margin-top: .9rem; color: var(--petrol-deep); font-size: .85rem; font-weight: 600;
    letter-spacing: .01em;
}
.doctor-view .arrow { transition: transform .25s ease; }
.doctor-card:hover .doctor-view .arrow { transform: translateX(.25rem); }

/* Detailseite */
.doctor-detail { padding-top: clamp(1.5rem, 4vw, 2.5rem); }
.back-link { display: inline-block; color: var(--petrol-deep); text-decoration: none; font-weight: 500; margin-bottom: 1.4rem; }
.back-link:hover { text-decoration: underline; }
.doctor-head {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.6rem 2rem;
    align-items: start;
    margin-bottom: 2.4rem;
}
@media (min-width: 720px) {
    .doctor-head { grid-template-columns: 1fr 320px; }
}
.doctor-detail-name { font-size: clamp(1.8rem, 1.3rem + 2vw, 2.6rem); margin: 0 0 .3rem; }
.doctor-detail-role { color: var(--ink-soft); font-size: 1.05rem; margin: 0; }
.doctor-detail-photo {
    width: 100%;
    max-width: 320px;
    aspect-ratio: 1 / 1;
    border-radius: var(--radius);
    overflow: hidden;
    background-color: var(--mesh-base);
    background-image: var(--mesh-image);
}
.doctor-detail-photo img,
.doctor-detail-photo .doctor-placeholder {
    width: 100%; height: 100%; object-fit: cover; display: block;
}
.doctor-section-title { font-size: 1.25rem; margin: 2rem 0 1rem; padding-bottom: .5rem; border-bottom: 1px solid #fff; }

/* Werdegang als zweispaltiges Raster, ohne Tabelle */
.cv { display: grid; gap: .1rem; margin: 0; }
.cv-row {
    display: grid;
    grid-template-columns: 5.5rem 1fr;
    gap: 1rem;
    padding: .55rem 0;
    border-bottom: 1px solid #fff;
}
.cv-year { font-weight: 600; color: var(--petrol-deep); margin: 0; }
.cv-text { margin: 0; color: var(--ink); }
@media (max-width: 460px) {
    .cv-row { grid-template-columns: 4.5rem 1fr; gap: .7rem; }
}

.lang-list { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: .5rem .8rem; }
.lang-list li {
    background: var(--petrol-tint);
    color: var(--petrol-deep);
    border-radius: 999px;
    padding: .3rem .9rem;
    font-size: .92rem;
}

/* Team-Kacheln: gleiche Optik wie Aerzte, aber bewusst nicht klickbar */
.doctor-card-static { cursor: default; }
.doctor-card-static:hover { transform: none; box-shadow: var(--shadow-sm); }
.doctor-card-static:hover .doctor-photo img,
.doctor-card-static:hover .doctor-photo .doctor-placeholder { transform: none; }
.doctor-card-static:hover .doctor-name { color: var(--ink); }

/* =========================================================
   GABRIEL DESIGN THEME — ueberschreibt die Basis.
   Gleiche Selektoren stehen bewusst hier unten: spaeter = gewinnt.
   Header hell + dunkles Logo, Intro hell, Footer schwarz, monochrom.
   Stand 2026-06-29-D
   ========================================================= */
/* (Design-Variablen sind oben in STELLSCHRAUBEN gebuendelt) */
body{ background:var(--paper); }

/* Logo-Faltung mit Rand, damit das Signet nie angeschnitten wird */
.brand-logo{ height:58px; }
.site-header.header-compact .brand-logo{ height:44px; }

/* Header hell, keine Linie, weicher Blur-Saum darunter */
.site-header{ background:rgba(255,255,255,.85); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); color:var(--ink); border-bottom:0; }
.site-header::after{ content:""; position:absolute; left:0; right:0; top:100%; height:34px; pointer-events:none; -webkit-backdrop-filter:blur(7px); backdrop-filter:blur(7px); -webkit-mask-image:linear-gradient(to bottom, rgba(0,0,0,.95), transparent); mask-image:linear-gradient(to bottom, rgba(0,0,0,.95), transparent); }
.brand{ color:var(--ink); }
.brand .kk-logo{ color:var(--ink); }
.nav-list a{ color:var(--ink); }
.nav-list a::after{ background:var(--ink); }
.search-toggle{ color:var(--ink); }
.search-toggle:hover{ background:var(--paper-2); }
.burger span{ background:var(--ink); }
.mobile-menu{ background:#fff; border-top:1px solid var(--line); box-shadow:0 14px 24px -16px rgba(0,0,0,.18); }
.mobile-menu a{ color:var(--ink); }
.mobile-menu a:hover, .mobile-menu a[aria-current="page"]{ background:var(--paper-2); }

/* Intro hell mit dunklem Logo */
#introOverlay{ background:#fff; }
#introWrap .kk-logo{ color:var(--ink); }

/* Footer schwarz */
.site-footer{ background:#fff; color:#000; padding:clamp(3.5rem,6vw,5.5rem) 0 2.5rem; margin-top:0; }
.gd-footer-grid{ display:grid; grid-template-columns:1.6fr 1fr 1fr 1fr 1fr; gap:2rem; }
.gd-footer-brand address{ font-style:normal; color:#000; line-height:1.8; font-size:.94rem; }
.gd-footer-socials{ display:flex; gap:1rem; margin:1.2rem 0; }
.gd-footer-socials a{ color:#000; text-decoration:none; display:inline-flex; opacity:.85; transition:opacity .2s ease; }
.gd-footer-socials a:hover{ color:#000; opacity:1; }
.gd-footer-note{ color:#000; font-size:.9rem; margin:0; }
.gd-footer-col h2{ font-family:var(--font-display); font-weight:700; font-size:.92rem; margin:0 0 1rem; color:#000; }
.gd-footer-col ul{ list-style:none; margin:0; padding:0; line-height:2.1; }
.gd-footer-col a{ position:relative; color:#000; text-decoration:none; font-size:.94rem; opacity:.85; }
.gd-footer-col a::after{ content:""; position:absolute; left:0; bottom:-4px; height:3px; width:100%; background:#000; border-radius:2px;
  transform:scaleX(0); transform-origin:left center; transition:transform .35s ease; }
.gd-footer-col a:hover{ color:#000; opacity:1; }
.gd-footer-col a:hover::after{ transform:scaleX(1); }
@media (prefers-reduced-motion:reduce){ .gd-footer-col a::after{ transition:none; } }
.gd-footer-base{ display:flex; justify-content:space-between; align-items:center; margin-top:2.6rem; color:#000; font-size:.88rem; }
.gd-footer-top{ color:rgba(0,0,0,.55); text-decoration:none; }
.gd-footer-top:hover{ color:#000; }

/* Buttons */
/* Einheitliche Buttons: Pill, 3px Rand, Pfeil via ::after. Hover = einfache Invertierung (Endzustand). */
.gd-btn{ display:inline-flex; align-items:center; gap:.5rem;
  padding:.8rem 1.5rem; border-radius:999px; border:3px solid #000; color:#000; background:transparent;
  text-decoration:none; font-family:inherit; font-size:1rem; font-weight:700; line-height:1; cursor:pointer;
  transition:background-color .2s ease, color .2s ease; }
.gd-btn::after{ content:""; width:1.5em; height:1em; flex:none; align-self:center; background-color:currentColor;
  -webkit-mask:var(--arrow-r) no-repeat center / contain; mask:var(--arrow-r) no-repeat center / contain; }
.gd-btn:hover{ background:#000; color:#fff; }
/* Auf dunklem Hintergrund (z. B. Referenz-Detail): invertiert */
.gd-btn.on-dark{ border-color:#fff; color:#fff; }
.gd-btn.on-dark:hover{ background:#fff; color:#000; }

/* Eyebrows site-weit ausgeblendet (Wunsch) */
.eyebrow, .hh-eyebrow{ display:none; }

/* Sektionen */
.gd-section{ padding:clamp(4rem,8vw,7.5rem) 0; }
.gd-alt{ background:var(--paper-2); }
.gd-section-head{ margin-bottom:clamp(2rem,4vw,3rem); }
.gd-section-head h1, .gd-section-head h2{ font-family:var(--font-display); font-weight:700; font-size:clamp(1.7rem,1.2rem+1.6vw,2.6rem); letter-spacing:-.01em; margin:0; }
.gd-section-lead{ color:var(--ink-soft); margin-top:.8rem; max-width:48ch; }

/* Hero */
.gd-hero{ padding:clamp(3.5rem,7vw,6rem) 0 clamp(2.5rem,4vw,3.5rem); }
.gd-hero h1{ font-family:var(--font-display); font-weight:700; line-height:1.04; letter-spacing:-.015em; font-size:clamp(2.5rem,1.3rem+4.6vw,5.2rem); margin:0; }
.gd-hero-lead{ font-size:clamp(1.1rem,1rem+.4vw,1.32rem); color:var(--ink-soft); max-width:48ch; margin:1.6rem 0 2rem; }
.gd-hero-actions{ display:flex; flex-wrap:wrap; gap:.9rem; }

/* Showcase */
.gd-showcase{ display:grid; grid-template-columns:1.15fr 1fr .8fr; gap:1rem; padding-bottom:clamp(4rem,8vw,7.5rem); }
.gd-tile{ position:relative; border-radius:var(--radius); overflow:hidden; aspect-ratio:4/3; display:block; }
.gd-tile.tall{ aspect-ratio:3/4; }

/* Mesh-Platzhalter */
.gd-ph{ width:100%; height:100%; }
.gd-ph-label{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:var(--ink-soft); font-size:.85rem; letter-spacing:.04em; text-align:center; padding:.5rem; }
.gd-ph1{ background:#FBFBFC; background-image:radial-gradient(60% 55% at 18% 20%,#F2E7E1 0,transparent 60%),radial-gradient(55% 55% at 85% 15%,#E7ECF2 0,transparent 56%),radial-gradient(60% 60% at 80% 88%,#EDE7DD 0,transparent 62%); }
.gd-ph3{ background:#FBFBFC; background-image:radial-gradient(60% 55% at 80% 20%,#E6ECF2 0,transparent 60%),radial-gradient(55% 55% at 15% 85%,#F2E9E1 0,transparent 56%); }
.gd-ph4{ background:#EDEAE4; }
.gd-ph5{ background:#FBFBFC; background-image:radial-gradient(60% 60% at 30% 30%,#EAEFF4 0,transparent 60%),radial-gradient(55% 55% at 85% 80%,#F3ECE3 0,transparent 56%); }

/* Editorial Showcase (Desktop-Split + Handy) */
.gd-show-sec{ padding:clamp(2rem,4vw,4rem) 0 clamp(2.5rem,5vw,4.5rem); }
.gd-show{ display:grid; grid-template-columns:.82fr 1.18fr; gap:clamp(2rem,4vw,3.5rem); align-items:center; grid-template-areas:"intro stage"; }
.gd-show-intro{ grid-area:intro; }
.gd-show-intro h1{ font-family:var(--font-display); font-weight:700; line-height:1.06; letter-spacing:-.015em; font-size:clamp(2rem,1.3rem+2.4vw,3.4rem); margin:0 0 1.6rem; }
.gd-show-list{ list-style:none; margin:0 0 1.6rem; padding:0; }
.gd-show-list a{ display:block; text-decoration:none; color:var(--ink); padding:.65rem .85rem; border-radius:10px; transition:background .2s ease; }
.gd-show-list a:hover, .gd-show-list a.on{ background:var(--paper-2); }
.gd-show-list b{ font-family:var(--font-display); font-weight:700; font-size:1.08rem; }
.gd-show-list b::after{ content:" — "; }
.gd-show-list i{ font-style:normal; font-size:1.08rem; }
.gd-show-lead{ color:var(--ink); max-width:46ch; margin:0; font-size:1.02rem; line-height:1.6; }
.gd-stage{ grid-area:stage; position:relative; border-radius:var(--radius); overflow:hidden; aspect-ratio:4/3; background:#0b0b0b; display:block; text-decoration:none; }
.gd-stage img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0; transform:scale(1.05) translateX(8px); transition:opacity .9s ease; }
.gd-stage img.on{ opacity:1; transform:scale(1.09) translateX(-8px); transition:opacity .9s ease, transform 6s linear; }
.gd-stage-arrow{ position:absolute; top:1rem; right:1rem; width:36px; height:36px; border-radius:50%; background:rgba(255,255,255,.92); display:flex; align-items:center; justify-content:center; color:var(--ink); z-index:2; }
.gd-stage-tags{ position:absolute; left:1rem; bottom:1rem; z-index:2; }
.gd-tg{ position:absolute; left:0; bottom:0; background:#fff; border-radius:9px; padding:.6rem .9rem; opacity:0; transition:opacity .4s ease; white-space:nowrap; }
.gd-tg.on{ opacity:1; }
.gd-tg b{ display:block; font-family:var(--font-display); font-weight:700; font-size:1rem; color:var(--ink); }
.gd-tg span{ display:block; font-size:.82rem; color:var(--ink); margin-top:.1rem; }
.gd-show-dots{ grid-area:dots; display:none; }

/* About + FAQ */
.gd-about-grid{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(2rem,5vw,4.5rem); align-items:start; }
.gd-about-grid h2{ font-size:clamp(1.4rem,1rem+1.2vw,2rem); margin:0 0 1.2rem; }
.gd-portrait{ position:relative; aspect-ratio:4/5; border-radius:var(--radius); overflow:hidden; margin-bottom:1.6rem; max-width:360px; }

/* Kontaktband + Logos */
.gd-contact-band{ text-align:center; padding:clamp(2rem,4vw,3.5rem) 0; }
.gd-contact-band h2{ font-size:clamp(1.8rem,1.2rem+2vw,3rem); max-width:18ch; margin:0 auto 1.8rem; }
.gd-logos-label{ text-align:center; color:var(--ink-soft); font-size:.92rem; letter-spacing:.03em; margin:2.6rem 0 1.4rem; }

/* Referenzen-Raster (Startseite): full-bleed, 16:9, dunkle Ramp + weisse Schrift, Parallax */
.home-refs{ padding-top: var(--space-section); padding-bottom: clamp(.7rem,1.4vw,1.3rem); }
.gd-ref-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(.7rem,1.4vw,1.3rem); padding-inline:clamp(.7rem,1.4vw,1.3rem); }
.gd-ref-card{ position:relative; display:block; aspect-ratio:4/3; overflow:hidden; text-decoration:none; background:#0B0B0B; }
.gd-ref-media{ position:absolute; left:0; right:0; top:-18%; height:136%; will-change:transform; }
.gd-ref-img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .6s cubic-bezier(.2,.6,.2,1); }
.gd-ref-card:hover .gd-ref-img{ transform:scale(1.06); }
.gd-ref-arrow{ display:none; }
.gd-ref-scrim{ position:absolute; inset:0; background:linear-gradient(to top, rgba(0,0,0,.66), rgba(0,0,0,0) 58%); }
.gd-ref-tag{ position:absolute; left:0; right:0; bottom:0; display:flex; flex-direction:column; gap:.15rem;
  padding:clamp(1rem,1.8vw,1.5rem); color:#fff; }
.gd-ref-cat{ font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; opacity:.85; font-weight:600; color:#fff; }
.gd-ref-meta{ font-size:clamp(1rem,1.3vw,1.25rem); font-weight:600; line-height:1.2; color:#fff; }
@media (max-width:760px){ .gd-ref-grid{ grid-template-columns:1fr; } }

/* Bereiche-Kacheln (Startseite): Referenz-Stil, zentriertes Label in Grossbuchstaben, Zoom-Hover */
.gd-tiles{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(.7rem,1.4vw,1.3rem); padding-inline:clamp(.7rem,1.4vw,1.3rem); }
.gd-tile{ position:relative; display:flex; align-items:center; justify-content:center; aspect-ratio:4/3; overflow:hidden; text-decoration:none; background:#0B0B0B; border-radius:0; isolation:isolate; }
.gd-tile-media{ position:absolute; left:0; right:0; top:-18%; height:136%; will-change:transform; }
.gd-tile-img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .6s cubic-bezier(.2,.6,.2,1); }
.gd-tile:hover .gd-tile-img{ transform:scale(1.06); }
.gd-tile-label{ position:relative; color:#fff; mix-blend-mode:difference; text-transform:uppercase; letter-spacing:.05em;
  font-weight:700; font-family:var(--font-display); font-size:clamp(2rem,5vw,3.6rem); line-height:1.04; text-align:center; padding:0 .6rem;
  -webkit-hyphens:manual; -ms-hyphens:manual; hyphens:manual; overflow-wrap:break-word; }
@media (max-width:760px){ .gd-tiles{ grid-template-columns:1fr; } }

/* Landing zweite Section: zweispaltig, links Angebot-Leiste (sticky), rechts Text */
.landing-split{ --lsg:clamp(2rem,4vw,4rem); display:grid; grid-template-columns:calc(50% - var(--lsg)) 1fr; column-gap:var(--lsg); align-items:start; }
.landing-rail{ position:sticky; top:calc(var(--hh) + 1rem); }
.landing-prose > :first-child{ margin-top:0; }
.gd-tiles-rail{ margin-top:0; }
.landing-rail h2{ margin:0 0 1.1rem; }
.gd-tiles-rail{ grid-template-columns:1fr; padding-inline:0; gap:clamp(.6rem,1vw,1rem); }
.gd-tiles-rail .gd-tile{ aspect-ratio:3/2; }
.gd-tiles-rail .gd-tile-label{ font-size:clamp(1.4rem,2.2vw,2.1rem); }
@media (max-width:900px){
  .landing-split{ grid-template-columns:1fr; gap:clamp(1.6rem,5vw,2.4rem); }
  .landing-rail{ position:static; }
}

/* Referenz-Detail */
.gd-back{ display:inline-block; color:var(--ink-soft); text-decoration:none; margin-bottom:1.5rem; }
.gd-back:hover{ color:var(--ink); }
.gd-ref-eyebrow{ color:var(--ink-soft); margin:0 0 .4rem; }
.gd-ref-detail h1{ font-family:var(--font-display); font-weight:700; font-size:clamp(2rem,1.4rem+2vw,3.2rem); margin:0 0 1.6rem; }
.gd-ref-hero{ position:relative; aspect-ratio:16/9; border-radius:var(--radius); overflow:hidden; margin-bottom:1.8rem; }
.gd-prose{ max-width:60ch; color:var(--ink); font-size:1.1rem; }
.gd-empty{ color:var(--ink-soft); }

/* Kundenstimmen */
.gd-tst{ text-align:center; max-width:760px; margin:0 auto; }
.gd-tst-photo{ width:72px; height:72px; border-radius:8px; margin:0 auto 1.6rem; background:#DDDAD3; }
.gd-tst-quote{ font-size:clamp(1.05rem,1rem+.4vw,1.3rem); color:#000; line-height:1.7; }
.gd-tst-name{ font-weight:700; margin:1.4rem 0 .1rem; }
.gd-tst-role{ color:var(--ink-soft); font-size:.92rem; margin:0; }
.gd-tst-dots{ display:flex; gap:.5rem; justify-content:center; margin-top:1.8rem; }
.gd-tst-dots button{ width:26px; height:26px; border:0; background:transparent; cursor:pointer; padding:0; position:relative; }
.gd-tst-dots button::before{ content:""; position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:9px; height:9px; border-radius:50%; background:#CFCCC5; }
.gd-tst-dots button[aria-current="true"]::before{ background:var(--ink); }

/* Scroll-to-Top */
.gd-to-top{ position:fixed; right:clamp(1rem,3vw,2rem); bottom:clamp(1rem,3vw,2rem); width:46px; height:46px; border-radius:50%; border:0; background:var(--ink); color:#fff; display:inline-flex; align-items:center; justify-content:center; font-size:1.15rem; cursor:pointer; opacity:0; pointer-events:none; transform:translateY(10px); transition:opacity .3s, transform .3s; z-index:60; }
.gd-to-top.show{ opacity:1; pointer-events:auto; transform:none; }
.gd-to-top:hover{ transform:translateY(-2px); }

@media (max-width:880px){
  .gd-showcase{ grid-template-columns:1fr 1fr; }
  .gd-footer-grid{ grid-template-columns:1fr 1fr; }
}
@media (max-width:680px){
  .gd-about-grid{ grid-template-columns:1fr; }
  .gd-showcase{ grid-template-columns:1fr; }
  .gd-footer-grid{ grid-template-columns:1fr 1fr; }
  .gd-footer-base{ flex-direction:column; gap:.6rem; text-align:center; }
}
@media (max-width:820px){
  .gd-show{ grid-template-columns:1fr; grid-template-areas:"stage" "dots" "intro"; gap:1.2rem; align-items:start; }
  .gd-show-list{ display:none; }
  .gd-stage{ aspect-ratio:4/5; }
  .gd-show-intro h1{ font-size:clamp(1.6rem,1.2rem+2vw,2.2rem); margin:.2rem 0 .8rem; }
  .gd-show-dots{ display:flex; gap:.4rem; justify-content:center; }
  .gd-show-dots button{ width:28px; height:28px; border:0; background:transparent; padding:0; cursor:pointer; position:relative; }
  .gd-show-dots button::before{ content:""; position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:7px; height:7px; border-radius:50%; background:#CFCCC5; transition:width .25s ease, background .25s ease; }
  .gd-show-dots button[aria-current="true"]::before{ width:22px; background:var(--ink); border-radius:4px; }
}
@media (prefers-reduced-motion:reduce){ .gd-stage img{ transition:opacity .3s ease; } .gd-stage img.on{ transform:none; transition:opacity .3s ease; } }

@media (max-width:720px){
  .brand-logo{ height:50px; }
  .brand .kk-logo{ width:92px; }
  .site-header.header-compact .brand-logo{ height:38px; }
}/* === Referenz-Detailseite (Migration) === */
.gd-ref-subtitle{ font-size:clamp(1.1rem,1rem+.5vw,1.4rem); color:var(--ink); margin:.2rem 0 1rem; font-weight:700; }
.gd-ref-client{ color:var(--ink); margin:0 0 1.4rem; }
.gd-ref-hero{ border-radius:var(--radius); overflow:hidden; margin:1.4rem 0 2rem; }
.gd-ref-hero .gd-ref-img{ position:static; width:100%; height:auto; display:block; border-radius:var(--radius); }
.gd-ref-video{ position:relative; aspect-ratio:16/9; margin:2rem 0; border-radius:var(--radius); overflow:hidden; background:#000; }
.gd-ref-video iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; }
.gd-prose.gd-ref-text{ max-width:var(--measure); margin:1.6rem 0; line-height:1.7; }
.gd-prose.gd-ref-text ul{ padding-left:1.2rem; }
.gd-prose.gd-ref-text a{ color:var(--ink); text-decoration:underline; text-underline-offset:2px; }
.gd-ref-cta{ margin:1.6rem 0; }
.gd-ref-gallery{ display:grid; grid-template-columns:repeat(2,1fr); gap:12px; margin:2rem 0; }
.gd-ref-gallery .gd-gallery-img{ width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:var(--radius); display:block; }
.gd-ref-chip{ display:inline-block; background:var(--paper-2); border-radius:999px; padding:.35rem .9rem; margin:.2rem .3rem .2rem 0; font-size:.9rem; }
@media (max-width:700px){ .gd-ref-gallery{ grid-template-columns:1fr; } }

/* ============================================================
   REFERENZ-DETAILSEITE (zweispaltig, volle Breite)  – Stand V
   ============================================================ */

/* Minimaler Kopf auf der Detailseite: transparent, nur Menü rechts. */
.site-header.header-min{ position:fixed; left:0; right:0; top:0; background:transparent; -webkit-backdrop-filter:none; backdrop-filter:none; justify-content:flex-end; gap:0; }
.site-header.header-min::after{ display:none; }
.site-header.header-min .header-right-min{ position:absolute; right:clamp(1rem,4vw,2.4rem); top:50%; transform:translateY(-50%); display:flex; align-items:center; }
.site-header.header-min .burger-min{ display:inline-flex; opacity:1; }
.site-header.header-min .burger-min span{ background:#fff; }
.is-detail main#inhalt{ padding:0; }

/* Zentriertes Detail-Logo als EIGENSTÄNDIGES fixiertes Element (direktes Body-Kind).
   Nur so rechnet mix-blend-mode:difference mit dem Seiteninhalt dahinter (Schablonen-Effekt):
   über Schwarz weiss, über einem Bild die jeweilige Gegenfarbe. */
.rd-logo-fixed{ position:fixed; top:0; left:0; right:0; margin-inline:auto; width:max-content;
  height:100px; display:flex; align-items:center; justify-content:center; z-index:60;
  color:#fff; mix-blend-mode:difference; text-decoration:none; }
.rd-logo-fixed .kk-logo{ opacity:1; width:106px; height:auto; display:block; }
@media (max-width:760px){
  .rd-logo-fixed{ height:84px; }
  .rd-logo-fixed .kk-logo{ width:87px; }
}

/* Grundgerüst: zwei gleich breite Spalten, volle Höhe. */
.rd{ position:relative; }
.rd-grid{ display:grid; grid-template-columns:1fr 1fr; }
.rd-left{ background:#000; color:#fff; }
.rd-right{ background:#000; }

/* Linke Textspalte – bleibt beim Scrollen stehen (sticky). */
.rd-left-inner{ position:sticky; top:0; box-sizing:border-box; min-height:100vh;
  padding:calc(100px + 2.6rem) clamp(1.8rem,3.6vw,4rem) clamp(2.5rem,5vh,4rem);
  display:flex; flex-direction:column; justify-content:flex-start; }
/* Gestapelt (Handy/Tablet): Abstand zwischen Kopf (inkl. Vorschaubild) und Fliesstext,
   damit es nicht gedrängt wirkt. */
.rd-body{ margin-top:clamp(1.6rem,5.5vw,2.4rem); }

/* Linke Spalte ab Desktop zweigeteilt: Meta/Titel (A) | Fliesstext (B). */
@media (min-width:1100px){
  /* Titel + Meta ueber die volle Breite; darunter der Fliesstext zweispaltig, CTA darunter. */
  .rd-left-inner{ display:block; }
  .rd-title{ font-size:clamp(2rem,2.7vw,2.9rem); margin:0 0 clamp(1rem,1.8vw,1.6rem); }
  .rd-meta{ margin:0 0 clamp(2rem,3.6vw,3rem); }
  .rd-cols{ column-count:2; column-gap:clamp(1.6rem,2.6vw,3.2rem); }
  .rd-cols .rd-prose{ max-width:none; }
  .rd-prose h2, .rd-prose h3{ break-after:avoid; }
  .rd-prose li{ break-inside:avoid; }
  .rd-sec{ break-inside:avoid; }
}

.rd-eyebrow{ font-size:.82rem; letter-spacing:.08em; text-transform:uppercase; opacity:.7; margin:0 0 1rem; }
.rd-title{ font-family:var(--font-display); font-weight:700; line-height:1.05; font-size:clamp(1.9rem,3.2vw,3rem); margin:0 0 1rem; color:#fff; }
.rd-sub{ font-size:clamp(1.05rem,1.5vw,1.3rem); line-height:1.4; opacity:.85; margin:0 0 1.4rem; }
.rd-meta{ list-style:none; margin:0 0 1.8rem; padding:0; }
.rd-meta li{ color:#fff; font-size:.95rem; line-height:1.7; }
.rd-sub{ color:#fff; font-size:1.05rem; line-height:1.5; margin:0 0 1.4rem; }
.rd-client{ font-size:.95rem; margin:0 0 1.8rem; color:#fff; }
.rd-client strong{ opacity:1; }

/* Beschreibungstext in der schwarzen Spalte. */
.rd-prose{ max-width:46ch; }
.rd-prose, .rd-prose p, .rd-prose li{ color:#fff; }
.rd-prose h2,.rd-prose h3{ font-family:var(--font-display); font-weight:700; color:#fff; margin:2rem 0 .7rem; font-size:1.12rem; letter-spacing:.01em; }
.rd-prose h2:first-child,.rd-prose h3:first-child{ margin-top:0; }
.rd-prose p{ line-height:1.6; margin:0 0 1rem; }
.rd-prose ul{ list-style:none; margin:0 0 1rem; padding:0; }
.rd-prose li{ position:relative; padding-left:1.9rem; line-height:1.55; margin:.4rem 0; }
.rd-prose li::before{ content:""; position:absolute; left:0; top:.72em; width:1.1rem; height:2px; background:#fff; }
.rd-prose a{ color:#fff; text-decoration:underline; text-underline-offset:3px; }

/* Vorschaubild (Beitragsbild) links unter "Kunde" – volle Spaltenbreite, ohne runde Ecken. */
.rd-thumb{ margin:1.6rem 0 0; }
.rd-thumb-img, .rd-thumb img{ display:block; width:100%; height:auto; border-radius:0; }

/* CTA-Knopf (zur Web-App / Website). */
.rd-cta{ margin:2rem 0 0; }


/* Rechte Bildspalte – Originalverhältnis, randlos gestapelt. */
.rd-right{ display:flex; flex-direction:column; }
.rd-fig{ margin:0; }
.rd-fig:first-child{ padding-top:0; }
.rd-img,.rd-fig img{ display:block; width:100%; height:auto; }

/* Bilder einzeln nacheinander einblenden (nur mit JS, kein Flash). */
.rd-fig{ transition:opacity .7s ease, transform .7s ease; }
html.js .rd-fig:not(.is-in){ opacity:0; transform:translateY(26px); }
.rd-fig.is-in{ opacity:1; transform:none; }

/* Schwebende zeitliche Vor/Zurück-Navigation – runde weisse Knöpfe, unten mittig,
   symmetrisch zur Mittellinie (Stil wie der Nach-oben-Knopf). */
.rd-jumps{ position:fixed; left:50%; bottom:clamp(1rem,3vw,2rem); transform:translateX(-50%);
  display:flex; gap:1.1rem; z-index:60; }
.rd-jump{ display:inline-flex; align-items:center; justify-content:center; width:46px; height:46px;
  border-radius:50%; background:#fff; color:#000; font:inherit; font-size:1.15rem; line-height:1; text-decoration:none;
  border:0; padding:0; -webkit-appearance:none; appearance:none; cursor:pointer; box-shadow:none; transition:none; }
.rd-jump span{ display:block; line-height:1; }
/* Eine Pfeil-Geometrie ueberall; Richtung nur per Rotation. */
.gd-ico-arrow{ width:22px; height:22px; display:block; }
.rd-jump-prev .gd-ico-arrow{ transform:scaleX(-1); }        /* nach links */
.gd-to-top .gd-ico-arrow{ transform:rotate(-90deg); width:20px; height:20px; }  /* nach oben */
.gd-btn-down .gd-ico-arrow{ transform:rotate(90deg); width:18px; height:18px; } /* nach unten */
.rd-jump:hover{ box-shadow:none; }
.rd-jump-prev:hover{ transform:none; }
.rd-jump-next:hover{ transform:none; }

/* Gestaffelte Einblendung der normalen Navigation (Rückweg von Detail). */
@keyframes navItemIn{ from{ opacity:0; transform:translateY(-7px); } to{ opacity:1; transform:translateY(0); } }
html.nav-intro .nav-list li{ opacity:0; animation:navItemIn .5s cubic-bezier(.4,.1,.2,1) forwards; animation-delay:calc(.14s + var(--i,0) * .08s); }

/* Mobil: Spalten stapeln – erst Text, dann Bilder. */
@media (max-width:900px){
  .rd{ background:#000; }
  .rd-grid{ display:flex; flex-direction:column; }
  .rd-left, .rd-right{ display:contents; }
  .rd-featured{ order:1; }                          /* Titelbild zuoberst */
  .rd-left-inner{ order:2; position:static; min-height:0; justify-content:flex-start; padding:clamp(1.6rem,6vw,2.2rem) clamp(1.3rem,6vw,2rem) clamp(2rem,6vh,3rem); }
  .rd-video{ order:3; }
  .rd-right > .rd-fig:not(.rd-featured){ order:4; }
  .rd-fig:first-child:not(.rd-featured){ padding-top:0; }
  .rd-featured.rd-fig{ padding-top:var(--hh); }     /* schwarze Zone: Header sitzt zuerst auf Schwarz, unabhaengig vom Referenztyp */
}

/* Bewegung reduzieren: alles sofort sichtbar, keine Animation. */
@media (prefers-reduced-motion: reduce){
  html.js .rd-fig:not(.is-in){ opacity:1; transform:none; }
  .rd-fig{ transition:none; }
  html.nav-intro .nav-list li{ animation:none; opacity:1; }
  .site-header.header-min .brand{ transition:none !important; }
}

/* Automatische Silbentrennung im Fliesstext (Sprache via <html lang="de">). */
main{ -webkit-hyphens:auto; -ms-hyphens:auto; hyphens:auto; }
/* Silbentrennung auch fuer Ueberschriften (site-weit, nicht nur Fliesstext). */
h1, h2, h3, h4, h5, h6,
.hh-title, .hh-eyebrow, .rd-title, .rd-eyebrow, .mm-main, .gd-section-head h2,
.legal-title, .close-title{
  -webkit-hyphens:manual; -ms-hyphens:manual; hyphens:manual; overflow-wrap:break-word; }
/* Buttons und Pfeil-Navigation nie trennen. */
.gd-btn, .rd-btn, .rd-jump, button{
  -webkit-hyphens:manual; -ms-hyphens:manual; hyphens:manual; }

/* ============================================================
   KOPF + KREIS-MENUE (Stand AC) — EIN Kopf ueberall.
   Lupe (weisser Kreis) links · Logo mittig (Schablone) · Hamburger (weisser Kreis) rechts.
   Kein Milchglas. Menue: Handy voll, Desktop 50% rechts, Kreis fuellt die Flaeche voll.
   Eingangs-Animation: grosses Logo mittig -> kleines Logo oben.
   ============================================================ */
:root{ --hh:100px; }
@media (max-width:720px){ :root{ --hh:84px; } }
.site-header{ position:fixed; top:0; left:0; right:0; display:flex; align-items:center; gap:.5rem; z-index:70;
  /* background hier bewusst OHNE !important: diese Marke setzt einen
     Verlaufsbalken, siehe weiter unten. */
  box-shadow:none !important; border:0 !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }html:not(.is-detail):not(.is-home):not(.is-landing):not(.is-legal) main#inhalt{ padding-top:var(--hh); }

/* Lupe + Hamburger als weisse Kreise, schwarzes Icon */
.hdr-search{ margin-right:auto; color:#000; }
.burger{ margin-left:auto; }   /* Hamburger immer rechts, auch wenn die Lupe ausgeblendet ist */
.hdr-search, .burger{ width:44px; height:44px; border-radius:50%; background:#fff;
  display:inline-flex; align-items:center; justify-content:center; padding:0; border:0;
  cursor:pointer; position:relative; z-index:5; opacity:1 !important;
  box-shadow:0 2px 12px -5px rgba(0,0,0,.3); }
.hdr-search svg{ width:20px; height:20px; }
body.menu-open .hdr-search{ display:none; }   /* Lupe beim Oeffnen weg (verdeckt sonst die Punkte) */

/* Hamburger-Striche zentriert im Kreis (Kreismitte 22px) */
.burger span{ position:absolute; top:50%; left:50%; width:20px; height:2px; margin-top:-1px; background:#000;
  border-radius:2px; transition:transform .3s cubic-bezier(.65,0,.2,1), opacity .2s ease; }
.burger span:nth-child(1){ top:50%; bottom:auto; transform:translate(-50%,-6px); }
.burger span:nth-child(2){ top:50%; bottom:auto; transform:translate(-50%,0); }
.burger span:nth-child(3){ top:50%; bottom:auto; transform:translate(-50%,6px); }
body.menu-open .burger span:nth-child(1){ transform:translate(-50%,0) rotate(45deg); }
body.menu-open .burger span:nth-child(2){ opacity:0; }
body.menu-open .burger span:nth-child(3){ transform:translate(-50%,0) rotate(-45deg); }
.burger::after{ content:none !important; }

/* Zentriertes Body-Logo (Schablone) + Animationen */
.gd-logo-c{ position:fixed; top:0; left:0; right:0; margin-inline:auto; width:max-content;
  height:var(--hh); display:flex; align-items:center; justify-content:center; z-index:100;
  color:#fff; mix-blend-mode:difference; text-decoration:none;
  transform-origin:center center; transition:transform .5s cubic-bezier(.5,0,.12,1); }
.gd-logo-c .kk-logo{ width:104px; height:auto; display:block; opacity:1; }
body.menu-open .gd-logo-c{ transform:translate(calc(50vw - 48px), calc(100dvh - 114px)) rotate(90deg); }

/* --- Kreis-Menue --- */
html{ scrollbar-gutter:stable; }
body.menu-open{ overflow:hidden; }
.mm{ display:block; position:fixed; inset:0; z-index:1; background:#000; color:#fff;
  clip-path:circle(0px at var(--cx,100%) var(--cy,0px));
  transition:clip-path .55s cubic-bezier(.7,0,.2,1);
  pointer-events:none; overflow-y:auto; -webkit-overflow-scrolling:touch;
  padding:calc(var(--hh) / 2 - 0.35rem) clamp(1.3rem,5vw,3rem) calc(2.2rem + env(safe-area-inset-bottom)); }
body.menu-open .mm{ clip-path:circle(var(--r,175%) at var(--cx,100%) var(--cy,0px)); pointer-events:auto; }
@media (min-width:1024px){ .mm{ left:50%; } }

.mm-inner{ max-width:34rem; }
.mm-nav{ list-style:none; margin:0; padding:0; }
.mm-item{ margin-top:clamp(1.15rem,3.4vw,1.7rem); }
.mm-item:first-child{ margin-top:0; }
.mm-main{ display:inline-block; color:#fff; text-decoration:none; font-family:var(--font-display,inherit);
  font-weight:600; letter-spacing:-.01em; line-height:1.1; font-size:clamp(1.15rem,4.5vw,1.35rem);
  padding:.3rem 0; position:relative; }
.mm-main::after{ content:""; position:absolute; left:0; right:0; bottom:.1em; height:2px; background:currentColor;
  transform:scaleX(0); transform-origin:left center; transition:transform .32s cubic-bezier(.65,0,.2,1); }
.mm-main[aria-current="page"]::after{ transform:scaleX(1); }
@media (hover:hover){ .mm-main:hover::after{ transform:scaleX(1); } }
.mm-sub{ list-style:none; margin:.3rem 0 0; padding:0 0 0 1.3rem; }
.mm-sub li{ display:block; }
.mm-sub a{ display:inline-block; color:#fff; text-decoration:none; font-weight:400; font-size:1.02rem;
  opacity:.92; padding:.38rem 0; position:relative; }
.mm-sub a::after{ content:""; position:absolute; left:0; right:0; bottom:.05em; height:1.5px; background:currentColor;
  transform:scaleX(0); transform-origin:left center; transition:transform .32s cubic-bezier(.65,0,.2,1); }
.mm-sub a[aria-current="page"]{ opacity:1; }
.mm-sub a[aria-current="page"]::after{ transform:scaleX(1); }
@media (hover:hover){ .mm-sub a:hover::after{ transform:scaleX(1); } }
.mm-foot{ margin-top:clamp(2rem,7vw,3rem); display:flex; flex-direction:column; gap:.5rem; }
.mm-mail{ color:#fff; text-decoration:none; font-size:1.05rem; }
.mm-addr{ margin:0; color:#fff; opacity:.8; font-size:.95rem; }
.mm-social{ margin:.3rem 0 0; display:flex; gap:1.1rem; }
.mm-social a{ color:#fff; text-decoration:none; opacity:.85; font-size:.9rem; letter-spacing:.02em; }

@media (prefers-reduced-motion: reduce){
  .gd-logo-c, .mm{ transition:none; }
  html.intro-run .gd-logo-c{ transform:none; }
}

/* AD: Blur-Verlauf unter dem Kopf entfernen (kein Milchglas mehr) */
.site-header::after{ content:none !important; }

/* AF: Hover-Farbe fixieren (a:hover in Zeile 109 machte Menue-Punkte dunkel und stoerte das Logo) */
.gd-logo-c, .gd-logo-c:hover, .gd-logo-c:focus{ color:#fff; }
.mm a, .mm a:hover, .mm a:focus{ color:#fff; }


/* AH: Auf Referenz-/Detailseiten oeffnet das Menue invertiert – weisser Layer, schwarze Punkte.
   Das Logo braucht nichts: mix-blend-mode:difference macht es auf Weiss automatisch schwarz. */
html.is-detail .mm{ background:#fff; color:#000; }
html.is-detail .mm a, html.is-detail .mm a:hover, html.is-detail .mm a:focus,
html.is-detail .mm-mail, html.is-detail .mm-addr, html.is-detail .mm-social a{ color:#000; }

/* ============================================================
   STARTSEITEN-HERO (AJ): gesplittet. Links weiss/schwarz Text,
   rechts schwarzer Auto-Slider (neueste Referenzen, von unten nach oben).
   ============================================================ */
.home-hero{ position:relative; }
.hh-grid{ display:grid; grid-template-columns:1fr 1fr; min-height:100vh; min-height:100svh; }

.hh-left{ background:#fff; color:#000; }
.hh-left-inner{ box-sizing:border-box; min-height:100%; display:flex; flex-direction:column; justify-content:center;
  padding:calc(var(--hh) + 2.4rem) clamp(1.6rem,4vw,4.5rem) clamp(2.4rem,5vh,4rem); max-width:42rem; }
.hh-eyebrow{ font-style:italic; font-size:clamp(1.1rem,2.4vw,1.55rem); margin:0 0 1.1rem; color:#000; opacity:.9; }
.hh-title{ font-family:var(--font-display); font-weight:700; line-height:1.0; letter-spacing:-.025em;
  font-size:clamp(2.5rem,5.2vw,4.2rem); margin:0 0 1.3rem; color:#000; }
.hh-lead{ font-size:clamp(1.05rem,1.4vw,1.28rem); line-height:1.5; margin:0 0 2rem; max-width:33rem; color:#000; }
.hh-portrait{ margin:0 0 1.5rem; }
.hh-portrait img{ display:block; width:100%; max-width:700px; height:auto; }
.hh-portrait-ph{ width:clamp(150px,42%,210px); aspect-ratio:4/5; object-fit:cover; display:block; background:var(--paper-2); position:relative; }
.hh-portrait-ph::after{ content:"Porträt folgt"; position:absolute; inset:0; display:flex; align-items:center;
  justify-content:center; font-size:.85rem; color:#000; opacity:.45; }
.hh-portrait figcaption{ margin-top:.55rem; font-size:.85rem; color:#000; opacity:.7; }
.hh-intro{ font-size:1.06rem; line-height:1.6; margin:0 0 2rem; max-width:33rem; color:#000; }
.hh-left-inner .gd-btn{ align-self:flex-start; }

.hh-right{ position:relative; overflow:hidden; background:transparent; padding:0; }
.hh-slider{ position:absolute; inset:0; }
.hh-track{ will-change:transform; }
@keyframes hh-vmarquee{ from{ transform:translateY(0); } to{ transform:translateY(-50%); } }
.hh-slide{ position:relative; display:block; margin:0; }
/* Bild fuellt die Spaltenbreite exakt, Originalproportion. Desktop = halbe Breite, Handy = volle Breite. */
.hh-slide img{ display:block; width:100%; height:auto; }
.hh-track.is-running{ animation:hh-vmarquee var(--vdur,80s) linear infinite; }
.hh-slide-cap{ position:absolute; left:0; right:0; bottom:0; display:flex; flex-direction:column; gap:.25rem;
  padding:clamp(1.5rem,4vw,2.8rem); color:#fff;
  background:linear-gradient(to top, rgba(0,0,0,.62), rgba(0,0,0,0)); }
.hh-slide-cap b{ font-size:.78rem; letter-spacing:.1em; text-transform:uppercase; opacity:.85; font-weight:600; }
.hh-slide-cap span{ font-size:clamp(1.1rem,1.9vw,1.55rem); font-weight:600; line-height:1.15; }

.hh-scroll{ position:absolute; left:50%; bottom:clamp(1rem,3vh,2rem); transform:translateX(-50%);
  display:flex; flex-direction:column; align-items:center; gap:.35rem; color:#fff; mix-blend-mode:difference;
  text-decoration:none; font-size:.72rem; letter-spacing:.16em; text-transform:uppercase; z-index:5; }
.hh-scroll:hover, .hh-scroll:focus{ color:#fff; }   /* bleibt sichtbar (difference + dunkle Hover-Farbe = unsichtbar) */
.hh-scroll-arrow{ font-size:1.15rem; animation:hh-bounce 1.9s ease-in-out infinite; display:block; }
.hh-scroll-arrow .gd-ico-arrow{ transform:rotate(90deg); width:20px; height:20px; }
@keyframes hh-bounce{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(6px); } }

@media (max-width:900px){
  .hh-grid{ grid-template-columns:1fr; min-height:0; }
  .hh-left-inner{ min-height:auto; max-width:none; padding-top:clamp(2rem,6vh,3rem); }
  .hh-right{ order:-1; height:50vh; }
  .hh-scroll{ display:none; }
}
@media (prefers-reduced-motion: reduce){
  .hh-track{ animation:none !important; } .hh-scroll-arrow{ animation:none; }
}

/* ===== FAQ als Accordion (semantisch: details/summary), Trennung via Abstand (keine Haarlinien) ===== */
.gd-faq{ margin-top:clamp(2rem,4vw,3rem); }
.landing-right > .gd-faq:first-child, .landing-right .gd-faq:first-child{ margin-top:0; }
.landing-right > .gd-interview:first-child{ margin-top:0; }
.gd-faq-item:first-child summary{ padding-top:0; }
.gd-faq-item{ margin:0; }
.gd-faq-item summary{ list-style:none; cursor:pointer; display:block; position:relative; padding:.55rem 2.2rem .55rem 0;
  font-weight:700; font-size:1rem; line-height:1.55; color:#000; }
.gd-faq-item summary::-webkit-details-marker{ display:none; }
.gd-faq-item summary::after{ content:"+"; position:absolute; right:.2rem; top:50%; transform:translateY(-50%); font-size:1.4rem; font-weight:400; line-height:1; }
.gd-faq-item[open] summary::after{ content:"\2013"; }
.gd-faq-a{ padding:0 0 .6rem; }
.gd-faq-a p{ margin:0; }

/* ===== Gestaffeltes Einfaden (Kacheln + Referenzkarten), Desktop + Handy, JS-gesteuert ===== */
.js .gd-ref-card, .js .gd-tile, .js .gd-logo-grid .gd-logo-cell{ opacity:0; transform:translateY(16px); transition:opacity .6s ease, transform .6s cubic-bezier(.2,.7,.2,1); }
.js .gd-ref-card.is-in, .js .gd-tile.is-in, .js .gd-logo-grid .gd-logo-cell.is-in{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){ .js .gd-ref-card, .js .gd-tile, .js .gd-logo-grid .gd-logo-cell{ opacity:1; transform:none; transition:none; } }

/* Kundenstimmen: Sterne + Aggregat-Zeile (monochrom) */
.gd-tst-agg{ margin:.5rem 0 0; font-size:.9rem; color:#000; opacity:.75; }
.gd-tst-stars{ color:#000; font-size:1.15rem; letter-spacing:.15em; margin:0 auto 1.4rem; text-align:center; }

/* ===== Abschluss-Section: links Testimonial-Marquee (Farbkacheln, weisse Schrift), rechts Offertenformular ===== */
.home-close{ position:relative; }
.close-grid{ display:grid; grid-template-columns:1fr 1fr; min-height:100vh; min-height:100svh; }
.close-left{ position:relative; overflow:hidden; background:#000; }
.tst-slider{ position:absolute; inset:0; }
.tst-card{ box-sizing:border-box; width:100%; padding:clamp(1.8rem,3vw,3rem); color:#fff; }
.tst-stars{ font-size:1.05rem; letter-spacing:.15em; margin:0 0 1rem; }
.tst-quote{ font-size:clamp(1.1rem,1.4vw,1.4rem); line-height:1.55; margin:0 0 1.2rem; }
.tst-name{ font-weight:700; margin:0; }
.tst-role{ font-weight:400; opacity:.85; }
.close-right{ background:#fff; display:flex; align-items:center; }
.close-form-inner{ box-sizing:border-box; width:100%; max-width:40rem; margin-inline:auto; padding:clamp(3rem,7vh,5rem) clamp(1.6rem,4vw,4.5rem); }
.close-title{ font-family:var(--font-display); font-size:clamp(2rem,3.5vw,3rem); margin:0 0 1rem; }
.close-lead{ margin:0 0 2rem; max-width:34rem; }
.gd-offer{ display:flex; flex-direction:column; gap:1rem; }
.gd-offer label{ display:flex; flex-direction:column; gap:.35rem; font-weight:600; font-size:.95rem; color:#000; }
.gd-offer input, .gd-offer textarea, .gd-offer select{ font:inherit; padding:.85rem .95rem; border:0; border-radius:10px; background:var(--paper-2); color:#000; width:100%; appearance:none; -webkit-appearance:none; }
.gd-offer select{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' fill='none'%3E%3Cpath d='M1 1l6 6 6-6' stroke='%23000' stroke-width='2.4' stroke-linecap='round'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right .95rem center; padding-right:2.6rem; cursor:pointer; }
.gd-offer input:focus, .gd-offer textarea:focus, .gd-offer select:focus{ outline:3px solid #000; outline-offset:2px; }
.gd-offer textarea{ resize:vertical; min-height:7.5rem; }
.gd-offer ::placeholder{ color:#000; opacity:.45; }
.gd-offer .gd-btn{ align-self:flex-start; margin-top:.4rem; }
@media (max-width:900px){
  .close-grid{ grid-template-columns:1fr; min-height:0; }
  .close-left{ order:-1; height:60vh; }
  .close-form-inner{ max-width:none; }
}

/* Offertenformular: erweiterte Felder + Datum in Stimmen */
.gd-offer-row{ display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.gd-opt{ font-weight:400; }
.gd-offer label .cap{ display:block; }
.tst-date{ margin:.4rem 0 0; font-size:.85rem; opacity:.8; color:#fff; }
.gd-tst-date{ margin:.5rem 0 0; font-size:.85rem; color:var(--ink-soft); }
@media (max-width:520px){ .gd-offer-row{ grid-template-columns:1fr; } }

/* Referenz-Detail: eingebettetes Video zuoberst in der rechten Spalte (16:9) */
.rd-video{ position:relative; aspect-ratio:16/9; margin:0 0 1rem; background:#000; }
.rd-video iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; display:block; }

/* Offertenformular: Honeypot (unsichtbar), Datenschutz-Hinweis, Meldungen */
.hp-field{ position:absolute !important; left:-9999px; width:1px; height:1px; opacity:0; }
.gd-offer-privacy{ font-size:.85rem; margin:.2rem 0 0; }
.gd-offer-privacy a{ color:inherit; }
.gd-offer-done{ font-weight:700; }
.gd-offer-error{ color:#000; font-weight:600; }

/* ── Legal-Seiten: weisse Textspalte (Titel + Accordion), rechts Referenz-Slider ── */
.is-legal .legal-inner{ justify-content:flex-start; max-width:48rem;
  padding-top:calc(var(--hh) + 2.2rem); padding-bottom:clamp(2.4rem,5vh,4rem); }
.legal-title{ font-size:clamp(2rem,4vw,3rem) !important; margin:0 0 1.4rem !important; color:#000; }
.legal-intro{ color:#000; font-size:1rem; line-height:1.6; margin:0 0 1.4rem; }
.legal-intro p{ margin:0 0 .9rem; }
.legal-acc details{ padding:.85rem 0; }
.legal-acc summary{ cursor:pointer; list-style:none; font-weight:700; font-size:1.05rem; color:#000;
  display:flex; justify-content:space-between; align-items:baseline; gap:1.2rem; }
.legal-acc summary::-webkit-details-marker{ display:none; }
.legal-acc summary::after{ content:"+"; font-weight:400; font-size:1.4rem; line-height:1; flex:none; }
.legal-acc details[open] summary::after{ content:"\2013"; }
.legal-panel{ color:#000; font-size:.95rem; line-height:1.65; padding-top:.8rem; }
.legal-panel p{ margin:0 0 .9rem; }
.legal-panel ul{ margin:0 0 .9rem; padding-left:1.3rem; list-style:none; }
.legal-panel li{ position:relative; padding-left:1rem; margin:.3rem 0; }
.legal-panel li::before{ content:""; position:absolute; left:0; top:.7em; width:.7rem; height:2px; background:#000; }
.legal-panel a{ color:#000; text-decoration:underline; text-underline-offset:2px; word-break:break-word; }

/* ── Galerie-Raster + Vollbild-Lightbox (Landingpages mit galerie-Feld) ── */
.gd-gallery{ display:grid; grid-template-columns:repeat(auto-fill, minmax(210px,1fr)); gap:clamp(.5rem,1.1vw,1rem); padding:0 clamp(1rem,4vw,3rem); }
.gd-gallery-item{ position:relative; display:block; margin:0; padding:0; border:0; background:#000; cursor:zoom-in; overflow:hidden; aspect-ratio:4/5; border-radius:2px; }
.gd-gallery-img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .55s cubic-bezier(.2,.7,.2,1); }
.gd-gallery-item:hover .gd-gallery-img{ transform:scale(1.045); }
.gd-gallery-tag{ position:absolute; left:.6rem; bottom:.55rem; font-size:.72rem; letter-spacing:.03em; color:#fff; text-shadow:0 1px 6px rgba(0,0,0,.6); opacity:0; transition:opacity .3s ease; pointer-events:none; }
.gd-gallery-item:hover .gd-gallery-tag{ opacity:1; }

.gd-lightbox{ position:fixed; inset:0; z-index:200; background:rgba(0,0,0,.94); display:flex; align-items:center; justify-content:center; -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px); }
.gd-lightbox[hidden]{ display:none; }
.gd-lb-stage{ margin:0; display:flex; align-items:center; justify-content:center; }
.gd-lb-img{ max-width:92vw; max-height:86vh; width:auto; height:auto; object-fit:contain; display:block; box-shadow:0 30px 80px -20px rgba(0,0,0,.8); }
.gd-lb-close{ position:fixed; top:1rem; right:1rem; width:46px; height:46px; border-radius:50%; background:#fff; color:#000; border:0; font-size:1.6rem; line-height:1; cursor:pointer; z-index:202; display:inline-flex; align-items:center; justify-content:center; }
.gd-lb-nav{ z-index:202; }   /* ueber dem Lightbox-Hintergrund; erbt Position/Stil von .rd-jumps */

/* ── Terminformular: Slot-Auswahl (Bewerbungsfoto) ── */
html{ scroll-behavior:smooth; }
.gd-btn-down::after{ content:none; }
.gd-btn-down span{ display:inline-block; margin-left:.3em; }
#offerte{ scroll-margin-top:calc(var(--hh) + 1rem); }
.gd-slot-intro{ font-size:.9rem; opacity:.85; margin:.2rem 0 .4rem; }
.gd-slot{ display:grid; grid-template-columns:1fr 1fr; gap:.7rem; align-items:end; margin:0 0 .6rem; }
.gd-slot .gd-slot-lab{ display:flex; flex-direction:column; font-size:.85rem; }
.gd-slot-date, .gd-slot-time{ font:inherit; padding:.6rem .7rem; border:0; border-radius:8px; background:var(--paper-2,#f4f3f1); color:#000; margin-top:.25rem; }
.gd-slot-note{ grid-column:1 / -1; font-size:.82rem; color:#000; min-height:1em; }
.gd-slot-note:not(:empty){ padding:.2rem 0; }
@media (max-width:520px){ .gd-slot{ grid-template-columns:1fr; } }

/* ── Kunden-Logos: weisses Kachel-Raster mit 1px-Trennlinien (5/3/2 Spalten), Farbe bei Hover ── */
.gd-logo-grid{ display:grid; grid-template-columns:repeat(5,1fr); gap:1px; background:#e3e1dd; }
.gd-logo-grid .gd-logo-cell{ background:#fff; display:flex; align-items:center; justify-content:center;
  aspect-ratio:16/9; padding:1rem 1.2rem; }
.gd-logo-grid img{ max-height:44px; max-width:75%; width:auto; height:auto; object-fit:contain; display:block;
  filter:grayscale(1) brightness(.45); opacity:.5; transition:filter .25s ease, opacity .25s ease; }
.gd-logo-grid .gd-logo-cell:hover img{ filter:none; opacity:1; }
.home-logoband{ padding-bottom:clamp(1.2rem,2.5vw,2rem); }
.gd-logo-grid .gd-logo-fill{ display:none; }
.gd-logo-grid .gd-logo-fill.f5{ display:flex; }
@media (max-width:1000px){
  .gd-logo-grid{ grid-template-columns:repeat(3,1fr); }
  .gd-logo-grid .gd-logo-fill.f5{ display:none; }
  .gd-logo-grid .gd-logo-fill.f3{ display:flex; }
}
@media (max-width:560px){
  .gd-logo-grid{ grid-template-columns:repeat(2,1fr); }
  .gd-logo-grid .gd-logo-fill.f5,
  .gd-logo-grid .gd-logo-fill.f3{ display:none; }
  .gd-logo-grid .gd-logo-fill.f2{ display:flex; }
}
.home-logos{ display:none; }  /* alte Extra-Section entfernt */
.gd-footer-badge{ display:block; width:100%; max-width:150px; margin:.9rem 0 1.6rem; }
.gd-footer-badge img{ display:block; width:100%; height:auto; }

/* ── Split-Layout (Über mich): Lead + Prose-Überschriften links ── */
.legal-lead{ font-size:clamp(1.05rem,2vw,1.25rem); line-height:1.55; color:#000; margin:0 0 1.5rem; }
.legal-inner .legal-intro h2{ font-size:clamp(1.3rem,2.4vw,1.7rem); margin:2rem 0 .6rem; color:#000; }
.legal-inner .legal-intro h3{ font-size:1.05rem; margin:1.3rem 0 .3rem; color:#000; }
.legal-inner .legal-intro p{ margin:0 0 .9rem; }

/* ── Split-Layout Feinschliff: weniger Abstand oben + Netzwerk-Links ── */
.is-split .legal-inner{ padding-top:calc(var(--hh) + 1.7rem); }
.netz-link{ margin:.45rem 0 2rem; }
.netz-link a{ color:#000; text-decoration:underline; text-underline-offset:3px; font-weight:600; word-break:break-word; }

/* ── Split-H1 gleich gross wie Landing + saubere Silbentrennung nur im Hero-Titel ── */
.is-split .legal-title{ font-size:clamp(2.5rem,5.2vw,4.2rem) !important; letter-spacing:-.025em; }
.hh-title{ -webkit-hyphens:auto; -ms-hyphens:auto; hyphens:auto; overflow-wrap:normal; }

/* ── Kontaktseite ── */
.is-kontakt .hh-right{ position:relative; min-height:100%; }
.hh-right .gd-map{ position:absolute; inset:0; width:100%; height:100%; background:var(--petrol-tint,#e8e5e0); }
.gd-map iframe{ width:100%; height:100%; border:0; display:block; }
.gd-map-load{ position:absolute; inset:0; width:100%; height:100%; display:flex; flex-direction:column;
  align-items:center; justify-content:center; gap:.6rem; padding:2rem; text-align:center;
  background:var(--petrol); color:#fff; border:0; cursor:pointer; font-family:inherit; }
.gd-map-title{ font-weight:700; font-size:1.1rem; text-decoration:underline; text-underline-offset:4px; }
.gd-map-load small{ max-width:22rem; opacity:.9; font-size:.85rem; line-height:1.45; }
@media (max-width:900px){ .is-kontakt .hh-right{ min-height:58vh; } }

.kontakt-block{ margin:0 0 1.6rem; }
.kontakt-block h2{ font-size:1.05rem; margin:0 0 .5rem; color:#000; }
.kontakt-address{ font-style:normal; line-height:1.65; color:#000; }
.kontakt-actions{ margin:0 0 1.7rem; }
.kontakt-mail{ margin:.95rem 0 0; color:#000; }
.kontakt-hours{ border-collapse:collapse; }
.kontakt-hours th{ text-align:left; font-weight:600; padding:.15rem 1.6rem .15rem 0; color:#000; white-space:nowrap; }
.kontakt-hours td{ color:#000; }
.kontakt-note{ margin:.7rem 0 0; font-size:.9rem; color:#000; opacity:.8; }

.kontakt-anfahrt-grid{ display:grid; grid-template-columns:1fr 1fr; gap:1.4rem 2.5rem; margin-top:1rem; }
.kontakt-anfahrt-grid h3{ font-size:1rem; margin:0 0 .3rem; }
.kontakt-anfahrt-link{ margin-top:1.3rem; }
.kontakt-anfahrt-link a{ color:inherit; text-decoration:underline; text-underline-offset:3px; }
@media (max-width:700px){ .kontakt-anfahrt-grid{ grid-template-columns:1fr; } }

.kontakt-form-wrap{ max-width:44rem; }
.kontakt-form-head{ display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:1rem; margin-bottom:1.5rem; }
.kontakt-form-head h2{ margin:0; }
.gd-reviews{ display:inline-flex; align-items:center; gap:.55rem; text-decoration:none; color:inherit; }
.gd-reviews-stars{ color:#f5a623; letter-spacing:1px; }
.gd-reviews-text{ font-size:.9rem; }

/* ── Kontakt: Karte sofort, 3 Buttons, Footer-Badge ── */
.gd-map-frame{ position:absolute; inset:0; width:100%; height:100%; border:0; display:block; }
.gd-btn-plain::after{ content:none !important; }
.kontakt-actions{ display:flex; flex-direction:column; align-items:flex-start; gap:.7rem; margin:1.5rem 0 1.9rem; }
.kontakt-actions .gd-btn{ font-size:.95rem; }
.kontakt-anfahrt p{ margin:0 0 .7rem; }
.gd-footer-reviews{ display:inline-flex; margin:.2rem 0 1.6rem; text-decoration:none; }
.gd-footer-reviews .gd-reviews-text{ color:#000; font-size:.9rem; }

/* Lead/Intro ohne Silbentrennung (wie Überschriften) */
.hh-lead, .legal-lead{ -webkit-hyphens:manual; -ms-hyphens:manual; hyphens:manual; }

/* ── CMS-Vergleichstabelle (Webdesign) ── */
.cms-compare{ margin:1.8rem 0 1.4rem; }
.cms-compare table{ width:100%; border-collapse:separate; border-spacing:0; }
.cms-compare th, .cms-compare td{ padding:.75rem 1rem; text-align:left; vertical-align:top; font-size:.95rem; line-height:1.45; color:#000; }
.cms-compare thead th{ font-weight:700; }
.cms-compare tbody th.cc-dim{ font-weight:700; white-space:nowrap; }
.cms-compare tbody tr:nth-child(even) th.cc-dim, .cms-compare tbody tr:nth-child(even) td:not(.cc-gd){ background:rgba(0,0,0,.025); }
.cms-compare .cc-gd{ background:var(--petrol-tint,#efece8); }
.cms-compare thead th.cc-gd{ border-radius:10px 10px 0 0; }
.cms-compare tbody tr:last-child td.cc-gd{ border-radius:0 0 10px 10px; }
@media (max-width:640px){
  .cms-compare thead{ display:none; }
  .cms-compare table, .cms-compare tbody, .cms-compare tr, .cms-compare th, .cms-compare td{ display:block; width:auto; }
  .cms-compare tbody tr{ margin:0 0 1.4rem; }
  .cms-compare tbody th.cc-dim{ font-size:1.08rem; padding:0 0 .35rem; background:none !important; white-space:normal; }
  .cms-compare tbody td{ padding:.25rem 0; background:none !important; border-radius:0 !important; }
  .cms-compare tbody td[data-label]::before{ content:attr(data-label) ": "; font-weight:700; }
  .cms-compare tbody td.cc-gd[data-label]::before{ color:var(--petrol,#90897E); }
}

/* Verlinkte Section-Überschrift (Referenzen -> Übersicht) */
.gd-head-link{ color:inherit; text-decoration:none; display:inline-flex; align-items:center; gap:.5rem; }
.gd-head-link .gd-ico-arrow{ width:.8em; height:.8em; opacity:.55; transition:opacity .2s ease, transform .2s ease; }
.gd-head-link:hover .gd-ico-arrow{ opacity:1; transform:translateX(3px); }

/* ── Referenzen-Übersicht: Filter-Pills ── */
.ref-overview{ padding-top:clamp(2.5rem,5vw,4rem); }
.ref-filters{ display:flex; flex-wrap:wrap; gap:.5rem; justify-content:center; margin-bottom:clamp(1.4rem,3vw,2.2rem); }
.ref-pill{ appearance:none; border:0; cursor:pointer; font-family:inherit; font-size:.9rem; font-weight:600;
  padding:.5rem 1.1rem; border-radius:999px; background:rgba(0,0,0,.05); color:#000;
  transition:background-color .2s ease, color .2s ease; }
.ref-pill:hover{ background:rgba(0,0,0,.1); }
.ref-pill.is-active{ background:#000; color:#fff; }
.ref-empty-note{ text-align:center; opacity:.7; padding:2.5rem 1rem; }

/* Referenzen-Filter: verstecktes Karte wirklich ausblenden + Intro vertikal zentriert */
.gd-ref-card[hidden]{ display:none !important; }
.is-refintro .legal-inner{ justify-content:center; padding-top:var(--hh); padding-bottom:var(--hh); }

/* Footer-Spalten: noch nicht verlinkte Punkte – gleiche Optik wie Links, aber nicht klickbar */
.gd-footer-col li span{ color:#000; font-size:.94rem; opacity:.85; cursor:default; }

/* ── Logo-Galerie: quadratisch, randlos; graue Section hebt die Logos ab ── */
.gd-logos-section{ background:#eeeeee; padding-top:clamp(2.5rem,5vw,4rem); padding-bottom:clamp(2.5rem,5vw,4rem); }
/* Logo-Hero-Slider: weisse Logo-Quadrate klar getrennt auf hellgrauer Flaeche */
.hh-slider.is-logoslides{ background:#eeeeee; }
.hh-slider.is-logoslides .hh-slide{ padding:10px 10px 0; }
.hh-slider.is-logoslides .hh-slide-cap{ display:none; }
.gd-gallery.is-logos{ grid-template-columns:repeat(auto-fill, minmax(220px,1fr)); gap:clamp(.6rem,1.4vw,1.2rem); }
.gd-gallery.is-logos .gd-gallery-item{ aspect-ratio:1/1; background:transparent; cursor:zoom-in; border-radius:0; }
.gd-gallery.is-logos .gd-gallery-img{ object-fit:cover; padding:0; background:transparent; }
.gd-gallery.is-logos .gd-gallery-item:hover .gd-gallery-img{ transform:scale(1.03); }
.gd-gallery.is-logos .gd-gallery-tag{ display:none; }

/* ── 404-Seite ── */
.not-found{ padding-top:clamp(3rem,7vw,6rem); padding-bottom:clamp(3rem,7vw,6rem); }
.nf-inner{ max-width:40rem; margin:0 auto; text-align:center; }
.nf-code{ font-size:clamp(3rem,10vw,6rem); font-weight:800; line-height:1; margin:0 0 .5rem; color:var(--petrol,#90897E); }
.nf-inner h1{ margin:0 0 1rem; }
.nf-lead{ color:#000; margin:0 0 1.8rem; }
.nf-links{ display:flex; justify-content:center; margin:0 0 1.4rem; }
.nf-more{ font-size:.95rem; color:#000; }
.nf-more a{ color:inherit; text-decoration:underline; text-underline-offset:3px; }

/* ── Startup Package: Kundinnen-Interview (abgehobene Section, zweispaltig) ── */
.gd-interview{ --iv-bg:#e7f1e3; background:var(--iv-bg); padding:clamp(1.6rem,4vw,2.8rem); margin:2.2rem 0; }
.gd-interview .iv-kicker{ font-size:.78rem; letter-spacing:.08em; text-transform:uppercase; font-weight:700; color:#000; margin:0 0 .35rem; }
.gd-interview .iv-title{ margin:0 0 .7rem; }
.gd-interview .iv-lead{ color:#000; margin:0 0 1.4rem; }
.gd-interview .iv-images{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:.7rem; margin:0 0 1.5rem; }
.gd-interview .iv-images img{ width:100%; height:auto; display:block; }
.gd-interview .iv-images-single{ grid-template-columns:1fr; }
.gd-interview .iv-qa{ }
.gd-interview .iv-pair{ break-inside:avoid; margin:0 0 1.1rem; }
.gd-interview .iv-q{ font-weight:700; color:#000; margin:0 0 .25rem; }
.gd-interview .iv-qa p{ color:#000; }
.gd-interview .gd-btn{ margin-top:1.3rem; }
@media (max-width:640px){ .gd-interview .iv-qa{ columns:1; } }

/* Logodesign: Galerie-Sektion vollflaechig hellgrau (kaskaden-sicher am Dateiende) */
section.gd-section.gd-logos-section{ background:#eeeeee; }

/* Google-Bewertungen prominent (Startseite) */
.gd-trust{ display:inline-flex; align-items:center; gap:.6rem; text-decoration:none; color:#000; margin:0 0 1.4rem; }
.gd-trust-stars{ color:#F5A623; font-size:1.05rem; letter-spacing:.06em; }
.gd-trust-text{ font-size:1rem; }
.gd-trust b{ font-weight:700; }
.gd-trust:hover .gd-trust-text{ text-decoration:underline; text-underline-offset:3px; }
@media (max-width:560px){
  /* Smartphone: Sterne oben zentriert, Text darunter (nur Startseite, nicht Footer) */
  .gd-trust{ flex-direction:column; align-items:center; text-align:center; gap:.3rem; }
  .gd-trust-text{ font-size:.95rem; }
}

/* =========================================================
   FAHRSCHULE NEXT — Marken-Bausteine
   Der Verlauf ist Flaeche, nicht Zierde. Auf ihm gilt:
   Textfarbe durchgehend Schwarz. Weiss loest sich auf dem
   gelben Ende auf (Kontrast ~1.7:1), Schwarz traegt ueber
   den ganzen Verlauf.
   ========================================================= */

.fs-gradient { background: var(--accent-gradient); }
.fs-gradient,
.fs-gradient h1, .fs-gradient h2, .fs-gradient h3,
.fs-gradient p,  .fs-gradient li, .fs-gradient a,
.fs-gradient b,  .fs-gradient strong { color: var(--ink); }
.fs-gradient a { text-decoration: underline; text-underline-offset: .18em; }

.fs-dark { background: var(--petrol); color: #fff; }
.fs-dark h1, .fs-dark h2, .fs-dark h3, .fs-dark p { color: #fff; }

/* --- Kopfzone einer Seite --- */
.fs-head { padding: clamp(2.5rem, 6vw, 4.5rem) 0 clamp(2rem, 4vw, 3rem); }
.fs-head h1 { margin: 0 0 .4em; }
.fs-head .eyebrow { margin: 0 0 .6em; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; font-size: .78rem; }
.fs-head .page-lead { margin: 0; font-size: 1.12rem; }

/* --- Hero --- */
.fs-hero { background: #fff; padding: clamp(3rem, 9vw, 7rem) 0; text-align: center; }
.fs-hero-logo { max-width: min(90%, 640px); margin: 0 auto clamp(1.5rem, 4vw, 2.5rem); }
.fs-hero-logo img { width: 100%; height: auto; display: block; }
.fs-hero-title { margin: 0 0 .5em; }  /* Auszeichnung siehe unten */
.fs-hero-lead  { margin: 0 0 .8em; font-size: 1.08rem; }
.fs-hero-claim { margin: 0 0 clamp(1.5rem, 4vw, 2.2rem); font-size: 1.08rem; }

/* --- Verlaufsband mit Textspalte + Aktionsleiste --- */
.fs-band { padding: clamp(2.5rem, 7vw, 5rem) 0; }
.fs-band-title { margin: 0 0 clamp(1.5rem, 4vw, 2.4rem); }
.fs-band-grid { display: grid; gap: clamp(2rem, 5vw, 3.5rem); grid-template-columns: 1fr; }
@media (min-width: 900px) { .fs-band-grid { grid-template-columns: minmax(0, 1.35fr) minmax(280px, .65fr); align-items: start; } }
.fs-band-text h2 { margin-top: 0; }
.fs-band-text h3 { margin: 1.6em 0 .4em; font-size: 1.12rem; text-transform: uppercase; letter-spacing: .03em; }
.fs-quote { font-weight: 700; }

/* Das Portraet ist ein Freisteller und bringt seine runde Form selbst mit.
   Darum hier keine Maske und kein Hintergrund - sonst schneidet der Kreis
   die Kanten an und legt eine zweite Flaeche darunter. */
.fs-portrait { width: min(62vw, 300px); margin: 0 auto clamp(1.5rem, 4vw, 2.2rem); }
.fs-portrait img { width: 100%; height: auto; display: block; }

.fs-actions { display: flex; flex-direction: column; align-items: flex-start; gap: .7rem; }
.fs-action {
    display: inline-flex; align-items: center; gap: .8rem;
    padding: .85em 1.4em; border-radius: 999px;
    background: #fff; color: var(--ink);
    font-weight: 700; text-decoration: none;
    box-shadow: var(--shadow-sm);
    transition: transform .18s ease, box-shadow .18s ease;
}
.fs-gradient .fs-action { text-decoration: none; }
.fs-action:hover { transform: translateX(3px); box-shadow: var(--shadow-md); }
.fs-ico { width: 1.1em; height: 1.1em; flex: 0 0 auto; }

/* --- Knopf mit Verlauf --- */
.fs-btn {
    display: inline-flex; align-items: center; gap: .7rem;
    padding: .95em 1.7em; border-radius: 999px;
    font-weight: 700; text-decoration: none; color: var(--ink);
    background: #fff; box-shadow: var(--shadow-sm);
    transition: transform .18s ease, box-shadow .18s ease;
}
.fs-btn-grad { background: var(--accent-gradient); }
.fs-btn:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.fs-gradient .fs-btn { text-decoration: none; }

/* --- Blog-Karten: Bild mit Abdunklung, Titel oben, Knopf unten --- */
.fs-cards { display: grid; gap: clamp(1.2rem, 3vw, 2rem); grid-template-columns: 1fr; }
@media (min-width: 700px)  { .fs-cards { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1000px) { .fs-cards { grid-template-columns: repeat(3, 1fr); } }
.fs-card {
    position: relative; display: flex; flex-direction: column; justify-content: space-between;
    min-height: 280px; padding: 1.4rem; border-radius: var(--radius);
    overflow: hidden; background: var(--petrol); isolation: isolate;
}
.fs-card-media { position: absolute; inset: 0; z-index: -2; }
.fs-card-img   { width: 100%; height: 100%; object-fit: cover; display: block; }
.fs-card-scrim { position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(0,0,0,.55) 0%, rgba(0,0,0,.15) 45%, rgba(0,0,0,.45) 100%); }
.fs-card-title { margin: 0; color: #fff; font-size: 1.25rem; line-height: 1.25; }
.fs-gradient .fs-card-title { color: #fff; }
.fs-card-btn   { align-self: flex-start; margin-top: 1.5rem; }

/* --- Bewertungen --- */
.fs-rating { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; margin: 0 0 .5rem; }
.fs-stars { color: var(--rating); font-size: 1.35rem; letter-spacing: .08em; }
.fs-rating-txt { font-size: 1.02rem; }
.fs-rating-note { margin: 0; color: #BEBEBE; font-size: .92rem; }

/* --- Accordion fuer Rechtstexte --- */
.fs-acc { margin-top: 2rem; }
.fs-acc details { padding: 1rem 0; }
.fs-acc summary { cursor: pointer; font-weight: 700; font-size: 1.05rem; list-style: none; }
.fs-acc summary::-webkit-details-marker { display: none; }
.fs-acc summary::after { content: '+'; float: right; font-weight: 400; }
.fs-acc details[open] summary::after { content: '–'; }

.fs-beitrag-bild { margin: 0 auto clamp(1.5rem, 4vw, 2.5rem); max-width: 800px; }
.fs-beitrag-bild img { width: 100%; height: auto; display: block; border-radius: var(--radius); }

/* Fliesstext auf Weiss darf gedaempft sein, auf dem Verlauf nie. */
.section .prose p { color: var(--ink); }

/* =========================================================
   FAHRSCHULE NEXT - Korrekturen gegen das Erbe der Vorlage

   Zwei Dinge muessen hier gewonnen werden:

   1) Die Zebra-Regel `main#inhalt > section:nth-of-type(odd|even)`
      enthaelt eine ID und schlaegt jede Klassenregel. Die
      Verlaufsflaechen brauchen deshalb dieselbe Struktur im
      Selektor, sonst bleiben sie weiss.

   2) Der Kopf der Vorlage ist ein freistehendes, mittig fixiertes
      Logo mit mix-blend-mode. Diese Marke braucht stattdessen einen
      Verlaufsbalken mit Logo links und Menue rechts.
   ========================================================= */

/* --- 1) Flaechen setzen sich gegen die Zebra-Regel durch --- */
main#inhalt > section.fs-gradient { background: var(--accent-gradient); }
main#inhalt > section.fs-dark     { background: var(--petrol); }
main#inhalt > section.fs-hero     { background: var(--petrol-tint); }

main#inhalt > section.fs-gradient,
main#inhalt > section.fs-gradient h1, main#inhalt > section.fs-gradient h2,
main#inhalt > section.fs-gradient h3, main#inhalt > section.fs-gradient p,
main#inhalt > section.fs-gradient li, main#inhalt > section.fs-gradient b,
main#inhalt > section.fs-gradient strong { color: var(--ink); }

main#inhalt > section.fs-dark,
main#inhalt > section.fs-dark h1, main#inhalt > section.fs-dark h2,
main#inhalt > section.fs-dark h3, main#inhalt > section.fs-dark p { color: #fff; }
main#inhalt > section.fs-dark .fs-rating-note { color: #BEBEBE; }

/* Karten-Titel bleiben weiss, auch im Verlaufsband. */
main#inhalt > section.fs-gradient .fs-card-title { color: #fff; }

/* --- 2) Kopf: Verlaufsbalken, Logo links, Navigation rechts --- */
.site-header {
    background: var(--accent-gradient);
    color: #fff;
    height: var(--hh);
    display: block;
    padding: 0;
}
/* Inhalt auf dieselbe Breite wie die Sektionen darunter (--wrap).
   Der Verlaufsbalken selbst laeuft weiterhin ueber die volle Breite. */
.hdr-inner {
    max-width: var(--wrap);
    margin-inline: auto;
    height: 100%;
    display: flex; align-items: center;
    justify-content: space-between;
    gap: clamp(1rem, 3vw, 2.5rem);
    padding: 0 clamp(1.1rem, 4vw, 2rem);
}

.hdr-logo { display: inline-flex; align-items: center; text-decoration: none; flex: 0 0 auto; }
.hdr-logo .kk-logo { display: block; width: clamp(120px, 14vw, 178px); }
.hdr-logo .kk-logo img { width: 100%; height: auto; display: block; }
.hdr-logo .kk-logo-text {
    font-family: var(--font-display); font-weight: 700; color: #fff;
    font-size: clamp(1rem, 2.2vw, 1.35rem); white-space: nowrap;
}

/* --- Navigation: weiss, Grossbuchstaben, aktiv/hover schwarz --- */
.hdr-nav { margin-left: auto; }
.hdr-nav-list { display: flex; align-items: center; gap: clamp(1rem, 2.4vw, 2.1rem); list-style: none; margin: 0; padding: 0; }
.hdr-nav-item { position: relative; }
.hdr-nav-link {
    display: inline-flex; align-items: center; gap: .35em;
    font-family: var(--font-display); font-weight: 900;
    font-size: clamp(.82rem, 1.05vw, .95rem);
    letter-spacing: .06em; text-transform: uppercase;
    color: #fff; text-decoration: none;
    padding: .5em 0;
    transition: color .18s ease;
}
.hdr-nav-link:hover,
.hdr-nav-link:focus-visible,
.hdr-nav-link[aria-current="page"] { color: var(--ink); }
.nav-caret { transition: transform .22s ease; }
.hdr-nav-item.has-sub:hover .nav-caret,
.hdr-nav-item.has-sub:focus-within .nav-caret { transform: rotate(180deg); }

/* Aufklappmenue (Angebot) */
.hdr-sub {
    position: absolute; top: 100%; left: 50%; transform: translate(-50%, 8px);
    min-width: 15rem; margin: 0; padding: .5rem 0; list-style: none;
    background: #fff; border-radius: var(--radius-sm);
    box-shadow: var(--shadow-md);
    opacity: 0; visibility: hidden; pointer-events: none;
    transition: opacity .2s ease, transform .2s ease, visibility .2s;
    z-index: 60;
}
.hdr-nav-item.has-sub:hover .hdr-sub,
.hdr-nav-item.has-sub:focus-within .hdr-sub {
    opacity: 1; visibility: visible; pointer-events: auto; transform: translate(-50%, 0);
}
.hdr-sub a {
    display: block; padding: .62em 1.2em;
    font-size: .95rem; font-weight: 600; color: var(--ink); text-decoration: none;
    white-space: nowrap;
}
.hdr-sub a:hover, .hdr-sub a[aria-current="page"] { background: var(--petrol-tint); }

/* Lupe entfaellt im Kopf dieser Marke, Hamburger nur auf schmalen Schirmen. */
.hdr-search { display: none; }
.burger { display: none; }
@media (max-width: 900px) {
    .hdr-nav { display: none; }
    .burger { display: inline-flex; color: #fff; margin-left: 0; }
    .burger span { background: #fff; }
}

/* --- 3) Hero: Stadtplan im Hintergrund, Inhalt mittig --- */
main#inhalt > section.fs-hero {
    position: relative;
    display: flex; align-items: center; justify-content: center;
    min-height: calc(100svh - var(--hh));
    padding: clamp(2rem, 5vw, 4rem) clamp(1.1rem, 4vw, 2.6rem);
    /* Reines Weiss: helle Grafiken heben sich sonst nicht vom Grund ab -
       genau daran lag es, dass die Hintergrundbilder unsichtbar blieben. */
    background: #fff;
    overflow: hidden;
    text-align: center;
}
.fs-hero-bg {
    position: absolute; inset: -10% 0 -10%;
    /* Deckkraft ueber eine Variable, damit sie pro Projekt und pro Seite
       anpassbar ist. Helle Strichgrafiken brauchen volle Deckkraft, sonst
       verschwinden sie auf dem hellgrauen Grund. */
    opacity: var(--hero-bg-deckkraft, 1);
    will-change: transform;
    z-index: 0;
    overflow: hidden;
    /* Kein transform im Ausgangszustand: Lighthouse wertet Elemente, die
       sich beim Laden bewegen, nicht als LCP-Kandidaten. */
    transform: none;
}
/* Das Bild liegt als <img> in der Flaeche, nicht als background-image:
   SVG ohne feste Masse liefert keine intrinsische Groesse, womit
   background-size:cover nichts zu rechnen haette. Ein img bekommt seine
   Groesse vom Container und funktioniert mit jedem Format gleich. */
.fs-hero-bg img {
    width: 100%; height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
}
.fs-hero-inner { position: relative; z-index: 1; max-width: 44rem; }
.fs-hero-logo { max-width: min(88%, 620px); margin: 0 auto clamp(1.4rem, 3.5vw, 2.4rem); }
.fs-hero-logo img { width: 100%; height: auto; display: block; }

/* Abwaerts-Pfeil im Knopf pulsiert dezent. */
html.geladen .fs-btn-down .fs-ico { animation: fsNudge 2.4s ease-in-out infinite; }
@keyframes fsNudge {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(3px); }
}
@media (prefers-reduced-motion: reduce) {
    .fs-btn-down .fs-ico { animation: none; }
    .fs-hero-bg { transform: none !important; }
}

/* =========================================================
   Aufklappbare Blöcke (Akkordeon / FAQ)
   <details>/<summary>: kein JavaScript nötig, tastaturbedienbar,
   und der Inhalt steht auch zugeklappt im HTML - also für
   Suchmaschinen und KI-Systeme lesbar.
   ========================================================= */

.gd-akk {
    background: #EDEDED;
    border-radius: 12px;
    margin: .7rem 0;
    overflow: hidden;
}
.gd-akk > summary {
    display: flex; align-items: center; gap: .6em;
    padding: .8em 1.15em;
    font-size: .98rem;
    font-weight: 400;
    cursor: pointer;
    list-style: none;
}
.gd-akk > summary::-webkit-details-marker { display: none; }
/* Dreieck links vor dem Titel, wie in der Vorlage. */
.gd-akk > summary::before {
    content: '';
    flex: 0 0 auto;
    width: 0; height: 0;
    border-left: .34em solid currentColor;
    border-top: .27em solid transparent;
    border-bottom: .27em solid transparent;
    transition: transform .2s ease;
    opacity: .7;
}
.gd-akk[open] > summary::before { transform: rotate(90deg); }
.gd-akk > summary:hover { background: #E5E5E5; }
/* Kein Einzug: der Inhalt beginnt buendig unter dem Titel, nicht
   eingerueckt neben dem Dreieck - das wirkte wie ein Fehler. */
.gd-akk-inhalt { padding: 0 1.15em 1.1em; }
.gd-akk-inhalt > :first-child { margin-top: 0; }
.gd-akk-inhalt > :last-child { margin-bottom: 0; }
.gd-akk-inhalt ul { margin: .6em 0; padding-left: 1.15em; }
.gd-akk-inhalt li { margin: .25em 0; }

/* Auf dunklem Grund heller absetzen. */
.fs-dark .gd-akk { background: rgba(255, 255, 255, .10); }
.fs-dark .gd-akk > summary:hover { background: rgba(255, 255, 255, .15); }

/* Bilder im Fliesstext */
.md-bild { margin: 1.6rem 0; }
.md-bild img { width: 100%; height: auto; display: block; border-radius: var(--radius, 12px); }
.md-bild figcaption { margin-top: .5rem; font-size: .88rem; opacity: .75; }

/* =========================================================
   Feinschliff nach Vorlage
   ========================================================= */

/* Hero: Startseite fast bildschirmfuellend, Unterseiten halbe Hoehe. */
main#inhalt > section.fs-hero-klein {
    min-height: 52vh;
    padding-block: clamp(2rem, 5vw, 3.5rem);
}
.fs-hero-klein .fs-hero-logo { max-width: min(82%, 520px); }
.fs-hero-klein .fs-hero-title { margin-bottom: 0; }

/* Zwischentitel: schwarz, kraeftiger und groesser als der Fliesstext. */
.fs-band .prose h2,
main#inhalt > section.fs-gradient .prose h2 {
    font-family: var(--font-display);
    font-weight: 900;
    font-size: clamp(1.5rem, 2.6vw, 2rem);
    line-height: 1.2;
    margin: 2rem 0 .8rem;
    color: #fff;
}
.fs-band .prose h2:first-child { margin-top: 0; }
.fs-band .prose h3 {
    font-family: var(--font-display);
    font-weight: 900;
    font-size: clamp(1.1rem, 1.6vw, 1.3rem);
    margin: 1.6rem 0 .5rem;
    color: #fff;
}
/* Innerhalb der hellen Akkordeon-Karten bleiben Titel dunkel, sonst
   waeren sie auf Hellgrau unlesbar. */
.gd-akk-inhalt h2, .gd-akk-inhalt h3 { color: var(--ink) !important; }

/* Links im Fliesstext: schwarz und unterstrichen, nicht farbig. */
main#inhalt > section.fs-gradient .prose a:not(.fs-btn),
.gd-akk-inhalt a:not(.fs-btn) {
    color: var(--ink);
    text-decoration: underline;
    text-underline-offset: .16em;
    text-decoration-thickness: 1px;
}
main#inhalt > section.fs-gradient .prose a:not(.fs-btn):hover,
.gd-akk-inhalt a:not(.fs-btn):hover { text-decoration-thickness: 2px; }

/* Aufzaehlungen mit echten Punkten. */
.fs-band .prose ul:not(.gd-liste-haken) { list-style: disc; padding-left: 1.3em; margin: .9em 0; }
/* Gutzeichen statt Punkt: sonst erscheinen beide. */
.fs-band .prose ul.gd-liste-haken { list-style: none; padding-left: 0; }
.fs-band .prose ol { padding-left: 1.4em; margin: .9em 0; }
.fs-band .prose li { margin: .35em 0; }

/* Bewertungsblock mit eigenem Hintergrundbild (fest, nicht bearbeitbar). */
/* (alter Bewertungsblock entfernt - ersetzt weiter unten) */Versalien, gleiche Auszeichnung wie die Zwischentitel. */
/* H1 einheitlich: gleiche Auszeichnung wie die Zwischentitel, keine
   Versalien. Mit main#inhalt davor, damit die Zebra-artigen Regeln der
   Vorlage sie nicht ueberschreiben. */
main#inhalt .fs-hero-title,
.fs-hero-title {
    font-family: var(--font-display);
    font-weight: 900;
    /* Versalien und gross: Die H1 ist das Erste, was man sieht, und die
       Marke richtet sich an junge Leute - da darf sie zupacken.
       Negative Sperrung, damit die Grossbuchstaben nicht auseinanderfallen. */
    text-transform: uppercase;
    font-size: clamp(3rem, 8.5vw, 6.5rem);
    letter-spacing: -.03em;
    line-height: .95;
}

/* Logo auf Unterseiten so breit wie auf der Startseite. */
.fs-hero-klein .fs-hero-logo { max-width: min(88%, 620px); }

/* =========================================================
   Listen: dritte Art mit Gutzeichen, sanftes Einblenden
   ========================================================= */

.gd-liste { margin: .9em 0; }
.gd-liste li { margin: .35em 0; }

/* Liste mit Gutzeichen */
.gd-liste-haken {
    list-style: none;
    padding-left: 0;
}
.gd-liste-haken li {
    position: relative;
    padding-left: 1.9em;
}
.gd-liste-haken li::before {
    content: '';
    position: absolute;
    left: .25em; top: .42em;
    width: .62em; height: .34em;
    border-left: .17em solid currentColor;
    border-bottom: .17em solid currentColor;
    transform: rotate(-45deg);
}

/* Einträge blenden nacheinander ein, sobald die Liste sichtbar wird.
   Ohne JavaScript oder bei reduzierter Bewegung sind sie sofort da -
   Inhalt darf nie von einer Animation abhängen. */
.js .gd-liste[data-fade] > li {
    opacity: 0;
    transform: translateY(.5rem);
}
.js .gd-liste[data-fade].ist-sichtbar > li {
    opacity: 1;
    transform: none;
    transition: opacity .5s ease, transform .5s ease;
    transition-delay: calc(var(--i, 0) * 70ms);
}
@media (prefers-reduced-motion: reduce) {
    .js .gd-liste[data-fade] > li { opacity: 1; transform: none; }
    .js .gd-liste[data-fade].ist-sichtbar > li { transition: none; }
}

/* Kopfzeile eines Akkordeon-Punkts im Studio */

/* =========================================================
   Mobile Navigation
   Kein Kreis um den Hamburger, Verlaufsfläche beim Öffnen,
   Menüpunkte in Versalien mit Schriftdicke 900.
   ========================================================= */

/* Hamburger: weisses Icon direkt auf dem Verlauf, ohne Kreis. */
@media (max-width: 900px) {
    .burger {
        width: 44px; height: 44px;
        background: none;
        border-radius: 0;
        box-shadow: none;
    }
    /* Schwarz auf dem Verlauf: besser sichtbar als Weiss, besonders
       am gelben Ende. */
    .burger span { background: var(--ink); }
}

/* Menüfläche im Markenverlauf statt Schwarz. */
.mm { background: var(--accent-gradient); color: var(--ink); }
.mm a, .mm a:hover, .mm a:focus { color: var(--ink); }

/* Menüpunkte: Versalien, Schriftdicke 900, durchgehend Schwarz.
   Auf dem Handy zählt der Kontrast mehr als die Feinheit - Schwarz
   trägt über den ganzen Verlauf, Weiss verliert am gelben Ende. */
.mm-main {
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .04em;
    font-size: clamp(1.25rem, 5.2vw, 1.6rem);
    color: var(--ink);
}
.mm a.mm-main { color: var(--ink); }

/* Aktiver Punkt zusätzlich mit Unterlinie. */
.mm-main::after {
    content: ""; position: absolute; left: 0; right: 0; bottom: .1em;
    height: 3px; background: currentColor;
    transform: scaleX(0); transform-origin: left center;
    transition: transform .32s cubic-bezier(.65, 0, .2, 1);
}
.mm a.mm-main[aria-current="page"]::after { transform: scaleX(1); }
@media (hover: hover) { .mm-main:hover::after { transform: scaleX(1); } }

.mm-sub a {
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    font-size: .95rem;
    color: var(--ink);
    opacity: 1;
}

/* Punkte blenden nacheinander ein, sobald sich das Menü öffnet -
   dieselbe Handschrift wie bei den Listen im Inhalt. */
.js .mm .mm-item {
    opacity: 0;
    transform: translateY(.7rem);
}
body.menu-open .mm .mm-item {
    opacity: 1;
    transform: none;
    transition: opacity .45s ease, transform .45s ease;
    transition-delay: calc(.18s + var(--i, 0) * 65ms);
}
@media (prefers-reduced-motion: reduce) {
    .js .mm .mm-item { opacity: 1; transform: none; }
    body.menu-open .mm .mm-item { transition: none; }
}

/* =========================================================
   Footer: eine zentrierte Zeile, darunter der Agentur-Hinweis
   ========================================================= */
.site-footer {
    background: var(--petrol);
    color: #fff;
    padding: clamp(2.2rem, 5vw, 3.2rem) 0 clamp(2.4rem, 5vw, 3.4rem);
    text-align: center;
}
.footer-zeile {
    margin: 0;
    font-size: .95rem;
    font-weight: 700;
    line-height: 1.7;
}
.footer-zeile a { color: var(--accent-from); text-decoration: none; }
.footer-zeile a:hover { text-decoration: underline; }
.footer-trenner { opacity: .45; margin: 0 .15em; font-weight: 400; }

.footer-agentur {
    margin: .9rem 0 0;
    font-size: .8rem;
}
/* Ganzer Ausdruck als Link, im selben Gruen wie die Zeile darueber -
   aber kleiner, damit die Rechtslinks fuehrend bleiben. */
.footer-agentur a { color: var(--accent-from); text-decoration: none; }
.footer-agentur a:hover { text-decoration: underline; }

/* =========================================================
   Google-Bewertungen
   ========================================================= */
/* Die Zebra-Regel `main#inhalt > section:nth-of-type(odd|even)` enthaelt
   eine ID und schlaegt jede reine Klassenregel. Deshalb hier dieselbe
   Struktur im Selektor, sonst bleibt die Flaeche weiss oder durchsichtig. */
main#inhalt > section.fs-bewertungen,
.fs-bewertungen {
    position: relative;
    /* Mittelgrau: das schwarz-weisse Zytglogge-Motiv hat darauf genug
       Kontrast, ohne dass die weissen Karten erschlagen werden. */
    background: #777777;
    color: #fff;
    min-height: 500px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: clamp(2.4rem, 5vw, 3.6rem) 0 clamp(2.6rem, 5vw, 3.8rem);
    overflow: hidden;
    isolation: isolate;
}
/* Das Motiv ist schwarz-weiss. Mit "multiply" wird Weiss zur Flaechenfarbe
   und Schwarz bleibt Schwarz - dadurch verschwinden die hellen Bereiche des
   Bildes im Grau, statt als weisse Flecken stehenzubleiben.
   isolation sorgt dafuer, dass sich das Mischen auf diese Sektion beschraenkt
   und nicht mit dem darunterliegenden Verlauf rechnet. */
.bw-grund {
    /* Ueberstand oben und unten, damit beim Verschieben keine Kante
       sichtbar wird - wie beim Bild im Kopfbereich. */
    position: absolute; inset: -12% 0; z-index: 0;
    mix-blend-mode: multiply;
    will-change: transform;
}
.bw-grund img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* Alles ueber dem Hintergrund: Ohne diese Zeile liegt ein Bereich
   unter der Flaeche mit mix-blend-mode und bekommt das Reifenspur-
   Muster ueber sich gelegt. */
.fs-bewertungen > .wrap,
.fs-bewertungen > .sf-band,
.fs-bewertungen > .bw-lauf { position: relative; z-index: 1; }

main#inhalt > section.fs-bewertungen .bw-titel,
.bw-titel {
    margin: 0 0 clamp(1.4rem, 3.2vw, 2rem);
    font-family: var(--font-display);
    font-weight: 900;
    font-size: clamp(1.5rem, 2.6vw, 2rem);
    line-height: 1.2;
    color: #FFFFFF;
    text-align: center;
}

/* Waagrechter Lauf: rollt mit dem Finger, Pfeile zum Blättern. */
.bw-lauf { position: relative; }
.bw-spur {
    display: flex;
    /* Mehr Abstand: Die versetzte Ebene ragt links heraus. */
    gap: 1.8rem;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    padding: .3rem clamp(1.1rem, 4vw, 2.6rem) 1.6rem;
    scrollbar-width: none;
}
.bw-spur::-webkit-scrollbar { display: none; }

.bw-karte {
    position: relative;
    flex: 0 0 clamp(240px, 78vw, 300px);
    scroll-snap-align: start;
    background: #fff;
    color: var(--ink);
    border-radius: 12px;
    padding: 1rem 1.1rem 1.2rem;
}
/* Versetzte Verlaufsebene wie bei den Selfies: gleiche Grösse, gleiche
   Rundung, nach links unten geschoben. Ersetzt den weichen Schatten. */
.bw-karte::before {
    content: '';
    position: absolute;
    inset: 0;
    transform: translate(-10px, 10px);
    background: var(--accent-gradient);
    border-radius: 12px;
    z-index: -1;
}
.bw-kopf { display: flex; align-items: center; gap: .6rem; margin-bottom: .5rem; }
.bw-avatar {
    width: 2.2rem; height: 2.2rem; flex: 0 0 auto;
    border-radius: 50%;
    background: var(--accent-from);
    color: #fff;
    display: flex; align-items: center; justify-content: center;
    font-weight: 900; font-size: .95rem;
}
.bw-person { display: flex; flex-direction: column; line-height: 1.25; flex: 1; min-width: 0; }
.bw-person b { font-size: .92rem; }
.bw-datum { font-size: .76rem; color: var(--muted); }
.bw-google { flex: 0 0 auto; }
.bw-sterne { color: #F5B300; letter-spacing: .08em; font-size: 1rem; }
/* Karten stehen oben buendig, nicht auf gleicher Hoehe: sonst wuerde die
   laengste Bewertung alle anderen aufblaehen. */
.bw-karte { align-self: start; }

.bw-text { margin: .5rem 0 0; font-size: .9rem; line-height: 1.55; }
.bw-text p { margin: 0; }
/* Gekuerzt per CSS - der volle Text steht im HTML und bleibt fuer
   Suchmaschinen und Screenreader lesbar. */
.bw-text.ist-lang p {
    display: -webkit-box;
    -webkit-line-clamp: 5;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.bw-text.ist-offen p {
    display: block;
    overflow: visible;
}
.bw-mehr {
    margin-top: .5rem;
    padding: 0;
    border: 0; background: none;
    color: var(--muted);
    font: inherit; font-size: .85rem;
    cursor: pointer;
    text-decoration: underline;
    text-underline-offset: .16em;
}
.bw-mehr:hover { color: var(--ink); }

.bw-pfeil {
    position: absolute; top: 50%; transform: translateY(-50%);
    z-index: 2;
    width: 2.4rem; height: 2.4rem;
    border: 0; border-radius: 50%;
    background: #fff; color: var(--ink);
    font-size: 1.4rem; line-height: 1;
    cursor: pointer;
    box-shadow: 0 2px 10px rgba(0, 0, 0, .25);
    display: flex; align-items: center; justify-content: center;
}
.bw-pfeil-links { left: .4rem; }
.bw-pfeil-rechts { right: .4rem; }
.bw-pfeil[hidden] { display: none; }
@media (max-width: 700px) { .bw-pfeil { display: none; } }

/* Zeile unter der Ueberschrift: helle Plakette mit Sternen, Anzahl und
   Durchschnitt. Auf schmalen Schirmen brechen Sterne und Text umeinander,
   statt die Plakette zu sprengen. */
.bw-summe {
    margin: -.4rem 0 clamp(1.5rem, 3.4vw, 2.2rem);
    text-align: center;
}
.bw-plakette {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: .3rem .7rem;
    max-width: 100%;
    padding: .6em 1.2em;
    background: #fff;
    color: var(--ink);
    border-radius: 999px;
    font-size: clamp(.88rem, 2.4vw, 1rem);
    line-height: 1.4;
    text-decoration: none;
    box-shadow: 0 2px 10px rgba(0, 0, 0, .18);
}
a.bw-plakette { transition: transform .18s ease, box-shadow .18s ease; }
a.bw-plakette:hover { transform: translateY(-1px); box-shadow: 0 4px 16px rgba(0, 0, 0, .24); }
.bw-summe-sterne { color: #F5B300; letter-spacing: .06em; font-size: 1.05em; white-space: nowrap; }
.bw-summe-text { white-space: nowrap; }

/* Unter 480px: Sterne oben, Text darunter. */
@media (max-width: 480px) {
    .bw-plakette { border-radius: 18px; padding: .7em 1.1em; }
    .bw-summe-sterne { flex: 0 0 100%; }
    .bw-summe-text { flex: 0 0 100%; white-space: normal; }
}

.visually-hidden {
    position: absolute; width: 1px; height: 1px;
    padding: 0; margin: -1px; overflow: hidden;
    clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* Die Intro-Animation der Vorlage ist abgeschaltet (siehe layout.php).
   Sie deckte den Inhalt beim ersten Aufruf kurz ab; Lighthouse fand
   dadurch kein LCP-Element und meldete NO_LCP.
   Sicherheitshalber auch hier: nichts verdeckt den Inhalt. */
#introOverlay, #introWrap { display: none !important; }
main#inhalt { opacity: 1 !important; }

/* Blogbeiträge: heller Schleier über dem Titelbild.
   Das Beitragsbild ist ein Foto und oft dunkel oder unruhig - ohne
   Aufhellung wäre die Überschrift darauf nicht lesbar. Nur hier, nicht
   auf den übrigen Seiten, deren Kopfgrafik bewusst hell ist. */
.is-detail .fs-hero-bg::after {
    content: '';
    position: absolute; inset: 0;
    background: rgba(255, 255, 255, .5);
    pointer-events: none;
}

/* =========================================================
   Blogbeitrag: zwei Spalten zu je 50 %, ohne Zwischenraum.
   Die rechte Spalte ist bei allen Beiträgen gleich und steht
   fest im Template - sie ist im Studio nicht bearbeitbar.
   ========================================================= */
.fs-beitrag-grid {
    display: grid;
    gap: 0;
    align-items: start;
}
@media (min-width: 900px) {
    .fs-beitrag-grid { grid-template-columns: 1fr 1fr; }
    .fs-beitrag-grid > .prose { padding-right: clamp(1.5rem, 4vw, 3rem); }
    .fs-autor { padding-left: clamp(1.5rem, 4vw, 3rem); }
}
@media (max-width: 899px) {
    .fs-autor { margin-top: clamp(2rem, 6vw, 3rem); }
}

/* Kein eigener Kreis und keine Flaeche: das Bild bringt den Kreis selbst
   mit. Ein zusaetzlicher weisser Grund waere darunter sichtbar. */
.fs-autor-bild {
    width: min(62vw, 320px);
    margin-bottom: clamp(1.2rem, 3vw, 1.8rem);
}
.fs-autor-bild img { width: 100%; height: auto; display: block; }
.fs-autor p { margin: 0 0 1rem; }

/* Weisser Button, wie in der Vorlage. */
.fs-btn-weiss {
    display: inline-flex; align-items: center; gap: .6em;
    margin-top: .6rem;
    padding: .72em 1.5em;
    background: #fff;
    color: var(--ink);
    font-weight: 700;
    border-radius: 999px;
    text-decoration: none;
    box-shadow: 0 2px 10px rgba(0, 0, 0, .12);
    transition: transform .18s ease, box-shadow .18s ease;
}
.fs-btn-weiss:hover { transform: translateY(-1px); box-shadow: 0 4px 16px rgba(0, 0, 0, .18); }
.fs-btn-weiss .fs-ico { width: 1.1em; height: 1.1em; flex: 0 0 auto; }

/* =========================================================
   Sanftes Einblenden beim Scrollen.
   Die Klassen setzt das JavaScript - ohne JavaScript ist alles
   sofort sichtbar, weil die Regeln dann gar nicht greifen.
   ========================================================= */
.gd-faden {
    opacity: 0;
    transform: translateY(1.1rem);
}
.gd-faden.ist-da {
    opacity: 1;
    transform: none;
    transition: opacity .5s ease, transform .5s cubic-bezier(.2, .7, .2, 1);
    /* Versatz nur bei Kacheln und Karten (--i wird dort gesetzt).
       Textbausteine erscheinen ohne Verzoegerung, sobald sie in den
       Blick kommen - sonst wartet man beim Lesen auf den naechsten Absatz. */
    transition-delay: calc(var(--i, 0) * 70ms);
}
@media (prefers-reduced-motion: reduce) {
    .gd-faden { opacity: 1; transform: none; }
    .gd-faden.ist-da { transition: none; }
}

/* =========================================================
   Startseite: Blog-Band schliesst nahtlos an das Band darueber an.
   Beide tragen fs-gradient, wodurch der Verlauf zweimal neu beginnt
   und eine sichtbare Kante entsteht. Statt background-attachment
   (das auf Handys ruckelt) bekommt das zweite Band keinen eigenen
   Verlauf mehr - es sitzt optisch im selben Band.
   ========================================================= */
/* Blog-Kacheln in einem <div> statt einer <section>: Damit greift die
   Zebra-Regel der Vorlage nicht, die abwechselnd Weiss setzt. Der Verlauf
   ist derselbe wie im Band darueber und geht ohne Kante ineinander ueber,
   weil beide waagrecht verlaufen und die Farben identisch sind. */
/* Die Blog-Kacheln liegen jetzt INNERHALB der Sektion darueber (siehe
   home.php). Damit traegt eine einzige Flaeche den Verlauf - der schraege
   Verlauf laeuft ohne Kante durch, ohne Rechnerei im JavaScript. */
.fs-band-blog {
    background: none;
    padding-block: clamp(1.8rem, 4vw, 2.8rem) 0;
}
.fs-band-blog .fs-band-title { margin-top: 0; }

/* Blog-Kacheln: sanfter Zoom und Pfeil beim Überfahren der ganzen Kachel,
   nicht nur des Knopfes. */
.fs-card { position: relative; overflow: hidden; }
.fs-card-media { position: absolute; inset: 0; z-index: -2; overflow: hidden; }
.fs-card-img {
    width: 100%; height: 100%; object-fit: cover; display: block;
    transition: transform .55s cubic-bezier(.2, .7, .2, 1);
}
@media (hover: hover) {
    .fs-card:hover .fs-card-img,
    .fs-card:focus-within .fs-card-img { transform: scale(1.06); }

    /* Der Pfeil im Knopf rückt nach rechts, sobald die Kachel berührt wird. */
    .fs-card .fs-card-btn .fs-ico {
        transition: transform .32s cubic-bezier(.2, .7, .2, 1);
    }
    .fs-card:hover .fs-card-btn .fs-ico,
    .fs-card:focus-within .fs-card-btn .fs-ico { transform: translateX(.35em); }

    .fs-card .fs-card-btn { transition: box-shadow .3s ease, transform .3s ease; }
    .fs-card:hover .fs-card-btn { transform: translateY(-1px); box-shadow: 0 4px 16px rgba(0,0,0,.22); }
}

/* Die ganze Kachel anklickbar machen: der Knopf legt sich unsichtbar
   darüber, bleibt aber für Screenreader und Tastatur ein normaler Link. */
/* Die ganze Kachel ist anklickbar - umgesetzt im JavaScript, weil ein
   CSS-Feld an overflow:hidden der Kachel scheitert. */
.fs-card-title { position: relative; z-index: 2; }
.fs-card-btn { position: relative; z-index: 2; }

/* Zeigefinger über der ganzen Kachel, nicht nur über dem Knopf. */
.fs-card { cursor: pointer; }

/* Kacheltitel: H3, aber mit der Auszeichnung der Zwischentitel. */
.fs-band-blog .fs-card-title,
.fs-card-title {
    font-family: var(--font-display);
    font-weight: 900;
    font-size: clamp(1.15rem, 1.9vw, 1.35rem);
    line-height: 1.2;
    color: #fff;
    margin: 0;
}

/* Blog-Übersicht: Einleitung über den Kacheln. */
.fs-blog-intro { margin-bottom: clamp(1.8rem, 4vw, 2.6rem); }

/* Kacheln behalten ihre Breite, auch wenn die letzte Reihe nicht voll ist. */
.fs-cards { justify-content: start; }

/* =========================================================
   Unterseiten: zweite Sektion zweispaltig, je 50 %.
   Ist die rechte Spalte leer, läuft der Inhalt über die
   volle Breite - so bleiben einspaltige Seiten möglich.
   ========================================================= */
.fs-zwei-spalten {
    display: grid;
    gap: 0;
    align-items: start;
}
@media (min-width: 900px) {
    .fs-zwei-spalten:not(.ist-einspaltig) { grid-template-columns: 1fr 1fr; }
    .fs-zwei-spalten:not(.ist-einspaltig) > :first-child { padding-right: clamp(1.5rem, 4vw, 3rem); }
    .fs-zwei-spalten:not(.ist-einspaltig) > :last-child { padding-left: clamp(1.5rem, 4vw, 3rem); }
}
@media (max-width: 899px) {
    .fs-zwei-spalten > :last-child:not(:first-child) { margin-top: clamp(2rem, 6vw, 3rem); }
}
.fs-zwei-spalten.ist-einspaltig > :first-child { max-width: var(--measure); }

/* Buttons im Fliesstext: weisse Pillen, untereinander. */
.gd-button-zeile { margin: .5rem 0; }
.gd-button-zeile .fs-btn-weiss { margin-top: 0; }

/* Buttons: kräftige Schrift, dickere Symbole, keine Unterstreichung. */
main#inhalt .fs-btn-weiss,
.fs-btn-weiss {
    font-weight: 900;
    text-decoration: none;
}
.fs-btn-weiss:hover { text-decoration: none; }
.fs-btn-weiss .fs-ico { stroke-width: 2.6; width: 1.15em; height: 1.15em; }
.gd-button-zeile a { text-decoration: none; }


/* Bilder mit dem Haken «kleine Anzeige»: höchstens 300 Pixel, linksbündig. */
.md-bild.ist-klein { max-width: 300px; margin-inline: 0; }

/* Footer: Zeichen der Verlinkungen zwischen den beiden Zeilen. */
.footer-netz {
    display: flex; justify-content: center; align-items: center;
    gap: 1.3rem;
    margin: 1rem 0 .8rem;
}
.footer-netz a {
    display: inline-flex;
    color: inherit;
    opacity: .85;
    transition: opacity .2s ease, transform .2s ease;
}
.footer-netz a:hover { opacity: 1; transform: translateY(-2px); }
.footer-netz svg { width: 28px; height: 28px; display: block; }

/* Terminbuchung: eingebetteter Kalender. */
.gd-termin {
    margin: 1.4rem 0;
    border-radius: var(--radius);
    overflow: hidden;
    background: #fff;
}
.gd-termin iframe {
    width: 100%;
    border: 0;
    display: block;
}

/* =========================================================
   Formulare: weisse Karte auf dem Verlaufsband.
   ========================================================= */
.gd-form {
    background: #fff;
    border-radius: var(--radius);
    padding: clamp(1.4rem, 3.5vw, 2.2rem);
    box-shadow: var(--shadow-sm);
    color: var(--ink);
}
.gd-form label { display: block; margin-bottom: 1rem; font-size: .95rem; }
.gd-form input[type="text"],
.gd-form input[type="email"],
.gd-form input[type="tel"],
.gd-form input[type="number"],
.gd-form textarea {
    width: 100%;
    margin-top: .35rem;
    padding: .7em .85em;
    border: 0;
    border-radius: var(--radius-sm);
    background: #E9E9E9;
    font: inherit;
    color: var(--ink);
}
.gd-form input:focus-visible,
.gd-form textarea:focus-visible {
    outline: 2px solid var(--accent-from);
    outline-offset: 1px;
}
.gd-form textarea { resize: vertical; min-height: 6em; }
.gd-feld-gross { font-size: 1.08rem; font-weight: 700; margin: 1.4rem 0 .6rem; }
.gd-feld-gross:first-child { margin-top: 0; }
.gd-pflicht { color: var(--muted); font-weight: 400; }
.gd-hinweis { font-size: .84rem; color: var(--muted); margin: -.6rem 0 1.2rem; }

.gd-zwei { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1rem; }
@media (max-width: 520px) { .gd-zwei { grid-template-columns: 1fr; } }

/* Haken: Kästchen und Text nebeneinander, nicht untereinander. */
/* Mit .gd-form davor: sonst gewinnt die allgemeine label-Regel
   (hoehere Spezifitaet) und setzt display:block. */
.gd-form .gd-haken {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: .7rem;
    align-items: start;
    margin: 1.2rem 0;
    line-height: 1.5;
}
.gd-form .gd-haken input {
    margin-top: .25rem;
    width: 1.15rem; height: 1.15rem;
    accent-color: var(--accent-from);
}

/* Honigtopf: für Menschen unsichtbar, für Maschinen ausfüllbar.
   Bewusst nicht display:none - manche Skripte überspringen das. */
.gd-hp {
    position: absolute;
    left: -9999px;
    width: 1px; height: 1px;
    overflow: hidden;
}

/* --- Schritte --- */
.gd-schritt { border: 0; padding: 0; margin: 0; min-width: 0; }
.gd-fortschritt { margin-bottom: 1.6rem; }
.gd-fortschritt-text { display: block; font-size: .85rem; color: var(--muted); margin-bottom: .5rem; }
.gd-fortschritt-bahn {
    display: block;
    height: 1.5rem;
    border-radius: 999px;
    background: #D8D8D8;
    overflow: hidden;
}
.gd-fortschritt-fuellung {
    display: flex; align-items: center; justify-content: flex-end;
    height: 100%;
    padding-right: .7rem;
    border-radius: 999px;
    background: var(--accent-gradient);
    font-size: .78rem; font-weight: 700; color: var(--ink);
    transition: width .35s cubic-bezier(.2, .7, .2, 1);
    width: 33%;
}
.gd-schritt-knoepfe { display: flex; gap: .8rem; margin-top: 1.4rem; flex-wrap: wrap; }

.gd-summe { margin: 1.4rem 0 0; }
.gd-summe-titel { display: block; font-size: 1.08rem; font-weight: 700; margin-bottom: .3rem; }
.gd-summe-wert { display: block; font-size: 1rem; }

.gd-form-dank p { margin: 0; font-size: 1.05rem; }
.gd-form-fehler {
    margin: 0 0 1.2rem;
    padding: .8em 1em;
    border-radius: var(--radius-sm);
    background: #FDECEA;
    color: #B3261E;
    font-size: .92rem;
}

/* Knöpfe im Formular: ohne Rahmen und Schatten. Anders als auf den
   übrigen Seiten sind es echte <button>-Elemente - die bringen einen
   Rahmen vom Browser mit, den .fs-btn nicht abräumt. */
.gd-form button.fs-btn {
    border: 0;
    box-shadow: none;
    cursor: pointer;
    font-family: inherit;
    font-size: inherit;
    -webkit-appearance: none;
    appearance: none;
}
.gd-form button.fs-btn:hover { box-shadow: none; }

/* Auswahlfeld im Formular: gleiche Anmutung wie die Textfelder. */
.gd-form select {
    width: 100%;
    margin-top: .35rem;
    padding: .7em .85em;
    border: 0;
    border-radius: var(--radius-sm);
    background: #E9E9E9;
    font: inherit;
    color: var(--ink);
    -webkit-appearance: none;
    appearance: none;
    background-image: var(--arrow-r);
    background-repeat: no-repeat;
    background-position: right .9em center;
    background-size: 1.1em;
    padding-right: 2.6em;
}
.gd-form select:focus-visible { outline: 2px solid var(--accent-from); outline-offset: 1px; }

/* Kennzeichnung der Felder: Sternchen für Pflicht, Wort für freiwillig.
   Beides schwächer als die Beschriftung, damit es nicht ablenkt. */
.gd-pflicht {
    color: var(--muted);
    font-weight: 400;
}
.gd-freiwillig {
    font-size: .82em;
    font-weight: 400;
    color: var(--muted);
}

/* =========================================================
   H1 im Kopfbereich: Buchstaben fliegen einzeln ein, von links
   nach rechts.

   Der Text steht vollständig im HTML; die Aufteilung macht erst das
   JavaScript. Ohne Skript oder bei reduzierter Bewegung erscheint die
   Überschrift normal.
   ========================================================= */
.fs-hero-title .zeichen {
    display: inline-block;
    /* Versalien hier zusätzlich: Die Vererbung vom h1 greift zwar, aber
       so steht die Auszeichnung dort, wo der Buchstabe entsteht. */
    text-transform: uppercase;
    opacity: 0;
    transform: translateY(.55em) rotate(-6deg) scale(.9);
    animation: zeichenRein .7s cubic-bezier(.2, .8, .25, 1) forwards;
    animation-delay: calc(var(--z, 0) * 55ms);
}
/* Wörter bleiben zusammen: Ohne diese Hülle bricht der Browser
   zwischen einzelnen inline-block-Buchstaben um - mitten im Wort. */
.fs-hero-title .wort {
    display: inline-block;
    white-space: nowrap;
}

@keyframes zeichenRein {
    to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
    .fs-hero-title .zeichen { opacity: 1; transform: none; animation: none; }
}

/* Keine Silbentrennung in der H1. Bei dieser Schriftgrösse fällt ein
   Trennstrich besonders auf, und der Titel ist kurz genug, um ganze
   Wörter umbrechen zu lassen. */
h1,
.fs-hero-title,
.fs-hero-title .zeichen {
    -webkit-hyphens: manual;
    -ms-hyphens: manual;
    hyphens: manual;
    overflow-wrap: normal;
    word-break: normal;
}

/* =========================================================
   Selfie-Band über den Google-Bewertungen.

   Läuft von selbst von rechts nach links, ohne Bedienung: Die Bilder
   sollen wirken, nicht gelesen werden. Zum Lesen sind die Bewertungen
   darunter da — die haben ihre Pfeile.

   Feste Höhe, freie Breite: Hoch-, Quer- und Quadratformate stehen
   nebeneinander, ohne dass etwas beschnitten wird.
   ========================================================= */
.sf-band {
    margin: 0 0 clamp(2rem, 5vw, 3rem);
    padding: 0 0 12px;
    overflow: hidden;
}
.sf-bahn {
    display: flex;
    /* Etwas mehr Abstand: Die versetzte Ebene ragt links heraus und
       soll das Nachbarbild nicht beruehren. */
    gap: 1.6rem;
    width: max-content;
    animation: sfLauf var(--sf-dauer, 60s) linear infinite;
}
/* Die Reihe liegt zweimal hintereinander; -50 % ist genau eine Runde. */
@keyframes sfLauf {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
}

/* Anhalten, wenn jemand hinschaut oder mit der Tastatur hineingerät.
   WCAG verlangt für Bewegung über fünf Sekunden eine Möglichkeit
   anzuhalten - das erfüllt es, ohne eine Schaltfläche zu brauchen. */
.sf-band:hover .sf-bahn,
.sf-band:focus-within .sf-bahn { animation-play-state: paused; }

/* Versetzte Verlaufsebene hinter jedem Bild: gleiche Grösse, gleiche
   Rundung, 10 Pixel nach links unten geschoben. Wirkt wie ein harter
   Schatten in den Markenfarben - plakativ statt dezent, was zur Marke
   passt. Ein border könnte keinen Verlauf tragen, eine Ebene schon. */
.sf-bild {
    position: relative;
    display: block;
    flex: 0 0 auto;
    line-height: 0;
}
.sf-bild::before {
    content: '';
    position: absolute;
    inset: 0;
    transform: translate(-10px, 10px);
    background: var(--accent-gradient);
    border-radius: var(--radius-sm);
    z-index: -1;
}
.sf-bild img {
    height: 260px;
    width: auto;
    display: block;
    border-radius: var(--radius-sm);
    position: relative;
}
@media (max-width: 700px) {
    .sf-bild img { height: 190px; }
    .sf-bild::before { transform: translate(-7px, 7px); }
}

/* Bei reduzierter Bewegung steht das Band still und wird rollbar. */
@media (prefers-reduced-motion: reduce) {
    .sf-bahn {
        animation: none;
        overflow-x: auto;
        width: auto;
        scrollbar-width: none;
    }
    .sf-bahn::-webkit-scrollbar { display: none; }
}


/* ===== Projekt sabrinadell-shiatsu.ch (Stand 2026-09-07-AF) =====
   Gestaltungskonzept «Praxis als Ort»: Creme wie die Praxiswaende, Holz und
   Leinen aus der Liege, Salbei als einziger gruener Akzent. Heller Kopf,
   Startseiten-Hero als ruhige Cremeflaeche mit dem Steine-Bluete-Kerzen-
   Stillleben rechts (Freisteller), Unterseiten mit Leinenband statt Foto.
   Schriften: Newsreader (Titel, Navigation, ab BB) und Nunito Sans (Text), beide
   selbst gehostet in public/fonts (kein Aufruf an Google, DSG). */

/* --- 0) Schriften (variabel, latin-Subset, SIL Open Font License) --- */
@font-face { font-family: "newsreader"; src: url("/fonts/newsreader.woff2") format("woff2"); font-weight: 300 700; font-style: normal; font-display: swap; }
@font-face { font-family: "newsreader"; src: url("/fonts/newsreader-italic.woff2") format("woff2"); font-weight: 300 700; font-style: italic; font-display: swap; }
@font-face { font-family: "nunito-sans"; src: url("/fonts/nunito-sans.woff2") format("woff2"); font-weight: 300 800; font-style: normal; font-display: swap; }
@font-face { font-family: "nunito-sans"; src: url("/fonts/nunito-sans-italic.woff2") format("woff2"); font-weight: 300 800; font-style: italic; font-display: swap; }

/* --- 1) Grundton und Typografie --- */
:root { --hh: 104px; --radius: 18px; --line: rgba(43,36,25,.12); --leinen: #EFE7D9; --leinen-dunkel: #E3D8C4; }
@media (max-width: 720px) { :root { --hh: 84px; } }
body { background: var(--paper); color: var(--ink); font-family: var(--font-body); font-size: 1.05rem; line-height: 1.7; font-weight: 400; }
body::before { display: none; }
h1, h2, h3, h4 { font-family: var(--font-display); font-weight: 500; letter-spacing: -.005em; line-height: 1.15; color: var(--petrol-deep); }
.prose h2, .fs-band .prose h2, main#inhalt > section.fs-gradient .prose h2,
.fs-band .prose h3, main#inhalt > section.fs-gradient .prose h3, .fs-band-title, .fs-zwei-spalten h2 {
    font-family: var(--font-display); font-weight: 500; letter-spacing: -.005em; text-transform: none; color: var(--petrol-deep); }
.prose h2, .fs-band .prose h2, main#inhalt > section.fs-gradient .prose h2, .fs-zwei-spalten h2 { font-size: clamp(1.7rem, 2.9vw, 2.25rem); line-height: 1.18; margin: 2.2rem 0 .7rem; }
.prose h3, .fs-band .prose h3, main#inhalt > section.fs-gradient .prose h3 { font-size: clamp(1.25rem, 1.9vw, 1.5rem); margin: 1.7rem 0 .5rem; }
.fs-band-title { font-size: clamp(1.8rem, 3.2vw, 2.5rem); }
.prose p, .prose li { max-width: 68ch; }

/* --- 2) Kopf: Creme, Serife in der Navigation --- */
.site-header { background: transparent; color: var(--ink); height: var(--hh); display: block; padding: 0; border-bottom: 1px solid var(--line) !important; }
/* Milchglas auf einem Pseudo-Element, NICHT auf dem Kopf selbst: ein
   backdrop-filter macht das Element zum Bezugsrahmen fuer position:fixed,
   und das Handy-Menue (.mm, fixed, im Kopf) waere sonst auf die Kopfhoehe
   beschnitten. */
.site-header::before { content: ""; position: absolute; inset: 0; z-index: -1; background: rgba(247,243,236,.94); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.site-header::after { display: none; }
body.menu-open .site-header::before { background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none; }
.hdr-logo .kk-logo { width: auto; height: calc(var(--hh) - 26px); display: block; }
.hdr-logo .kk-logo img { width: auto; height: 100%; display: block; }
/* Weisses Logo auf hellem Kopf: als Maske in dunklem Holz einfaerben.
   Das img bleibt (Masse, Alt-Text), wird aber unsichtbar. */
.hdr-logo .kk-logo[style*="--sd-logo"] { background: var(--petrol-deep); -webkit-mask: var(--sd-logo) center / contain no-repeat; mask: var(--sd-logo) center / contain no-repeat; }
.hdr-logo .kk-logo[style*="--sd-logo"] img { visibility: hidden; }
body.menu-open .hdr-logo .kk-logo[style*="--sd-logo"] { background: #fff; }
.hdr-nav-list { gap: clamp(1.1rem, 2.6vw, 2.4rem); }
.hdr-nav-link { font-family: var(--font-display); font-weight: 500; font-size: clamp(1.08rem, 1.25vw, 1.22rem); letter-spacing: 0; text-transform: none; color: var(--ink); padding: .3em 0; position: relative; }
.hdr-nav-link::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1.5px; background: var(--coral); transform: scaleX(0); transform-origin: left; transition: transform .22s ease; }
.hdr-nav-link:hover, .hdr-nav-link:focus-visible, .hdr-nav-link[aria-current="page"] { color: var(--petrol-deep); }
.hdr-nav-link:hover::after, .hdr-nav-link[aria-current="page"]::after { transform: scaleX(1); }
.nav-caret { opacity: .55; }
.hdr-sub { background: var(--paper); border: 1px solid var(--line); border-radius: 14px; box-shadow: 0 18px 40px -22px rgba(43,36,25,.35); padding: .6rem 0; }
.hdr-sub a { font-family: var(--font-body); font-weight: 500; font-size: .98rem; color: var(--ink); padding: .6em 1.3em; }
.hdr-sub a:hover, .hdr-sub a[aria-current="page"] { background: var(--leinen); color: var(--petrol-deep); }
.hdr-buchung { display: inline-flex; align-items: center; white-space: nowrap; border: 0; border-radius: 999px; padding: .62em 1.3em; background: var(--coral); color: #fff; text-decoration: none; font-weight: 600; font-size: .95rem; box-shadow: 0 6px 18px -10px rgba(114,132,99,.7); transition: background .18s ease, transform .18s ease; }
.hdr-buchung:hover, .hdr-buchung:focus-visible { background: #5E6E50; color: #fff; transform: translateY(-1px); }
@media (max-width: 900px) { .hdr-buchung { display: none; } .burger { color: var(--ink); } .burger span { background: var(--ink); } }
.burger { background: transparent; box-shadow: none; }
/* Handy-Menue: dunkles Holz */
.mm { background: var(--petrol-deep); color: #fff; }
.mm a, .mm a:hover, .mm a:focus, .mm a.mm-main, .mm-main, .mm-sub a { color: #fff; }
.mm-main, .mm a.mm-main { font-family: var(--font-display); font-weight: 500; letter-spacing: 0; text-transform: none; font-size: clamp(1.6rem, 5.6vw, 2rem); }
.mm-main::after { height: 1.5px; background: var(--coral); }
.mm-sub a { font-family: var(--font-body); font-weight: 500; letter-spacing: 0; text-transform: none; font-size: 1.05rem; opacity: .85; }
body.menu-open .burger span { background: #fff; }
.mm-buchung { margin: 1.4rem 0 0; }
.mm-buchung .fs-btn, .mm .fs-btn { background: var(--coral); color: #fff; }

/* --- 3) Startseiten-Hero: Cremeflaeche, Text links, Stillleben rechts --- */
main#inhalt > section.fs-hero { background: linear-gradient(180deg, var(--paper) 0%, var(--leinen) 100%); color: var(--ink); min-height: 78svh; padding: calc(var(--hh) + 2rem) 0 clamp(2rem, 5vw, 4rem); text-align: left; justify-content: flex-start; }
.fs-hero-bg { position: absolute; inset: 0; }
.fs-hero-bg::after, .fs-hero-bg-css::after { content: none; }
main#inhalt > section.fs-hero::after { content: none; }
html.is-home .fs-hero-bg img { object-fit: contain; object-position: right bottom; width: min(58vw, 980px); height: auto; max-height: 82%; position: absolute; right: 0; bottom: 0; left: auto; top: auto; filter: drop-shadow(0 30px 40px rgba(67,51,31,.18)); }
@media (max-width: 900px) { html.is-home .fs-hero-bg img { width: 90vw; max-height: 34%; opacity: .95; } main#inhalt > section.fs-hero { padding-bottom: 36vh; } }
.fs-hero-inner { position: relative; z-index: 1; max-width: none; width: min(100% - 2.5rem, var(--wrap)); margin-inline: auto; padding: 0 0 clamp(2rem, 5vw, 4rem); }
.fs-hero-inner > * { max-width: 34rem; }
.fs-hero .fs-hero-title, .fs-hero-title { font-family: var(--font-display); font-weight: 500; text-transform: none; letter-spacing: -.01em; font-size: clamp(2.6rem, 5.4vw, 4.4rem); line-height: 1.04; color: var(--petrol-deep); text-shadow: none; margin: 0 0 .6em; }
.fs-hero-title .zeichen { animation: none; opacity: 1; transform: none; text-transform: none; }
.fs-hero .fs-hero-lead, .fs-hero .fs-hero-claim { color: var(--ink); text-shadow: none; }
.fs-hero-lead { font-size: .92rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 600; color: var(--petrol); margin: 0 0 1.4em; }
.fs-hero-lead b { font-weight: 700; }
.fs-hero-claim { font-family: var(--font-display); font-style: italic; font-weight: 400; font-size: clamp(1.2rem, 1.9vw, 1.5rem); line-height: 1.45; margin: 0 0 clamp(1.5rem, 4vw, 2.2rem); }
.fs-hero .fs-btn-grad { background: var(--petrol); color: #fff; }
.fs-hero .fs-btn-grad:hover { background: var(--petrol-deep); }
/* Unterseiten: Leinenband mit Titel, kein Foto (das Foto kommt im Inhalt). */
main#inhalt > section.fs-hero-klein { min-height: 0; padding: calc(var(--hh) + clamp(2.6rem, 6vw, 4.5rem)) 0 clamp(2.4rem, 5vw, 3.6rem); background: var(--leinen); border-bottom: 1px solid var(--line); }
html:not(.is-home):not(.is-detail):not(.is-landing):not(.is-legal) main#inhalt, html:not(.is-home) main#inhalt { padding-top: 0 !important; }   /* Bildband beginnt hinter dem transparenten Kopf */
.fs-hero-klein .fs-hero-bg { display: none; }
.fs-hero-klein .fs-hero-inner { padding-bottom: 0; }
.fs-hero-klein .fs-hero-title { font-size: clamp(2.1rem, 4vw, 3.2rem); margin: 0; }

/* --- 4) Inhaltsflaechen: Creme, Tinte, Holz --- */
main#inhalt > section.fs-gradient, .fs-gradient { background: var(--paper); }
main#inhalt > section.fs-gradient p, main#inhalt > section.fs-gradient li, main#inhalt > section.fs-gradient b,
main#inhalt > section.fs-gradient strong, .fs-gradient p, .fs-gradient li { color: var(--ink); }
main#inhalt > section.fs-gradient .prose a:not(.fs-btn), .fs-gradient a:not(.fs-btn), .prose a:not(.fs-btn) { color: var(--petrol-deep); text-decoration: underline; text-decoration-color: var(--coral); text-underline-offset: .18em; text-decoration-thickness: 1px; }
.prose .md-bild + .md-bild { margin-top: 1.4rem; }
.md-bild img { border-radius: var(--radius); box-shadow: 0 24px 48px -30px rgba(43,36,25,.35); }
.md-bild img[src*="ikt-shiatsu-signet"], .md-bild img[src*="sgs-logo"] { box-shadow: none; border-radius: 0; }
.fs-zwei-spalten { align-items: start; }
.gd-akk { background: #fff; border: 1px solid var(--line); border-radius: 14px; }
.gd-akk > summary { font-weight: 600; }
.gd-akk > summary:hover { background: var(--leinen); }
.gd-akk-inhalt h2, .gd-akk-inhalt h3 { color: var(--petrol-deep) !important; }
.gd-offer input, .gd-offer textarea, .gd-offer select { background: #fff; border: 1px solid var(--line); border-radius: 12px; }
.gd-offer input:focus, .gd-offer textarea:focus, .gd-offer select:focus { outline: 2px solid var(--petrol); outline-offset: 2px; }
.gd-offer label { color: var(--ink); }
.gd-form { background: #fff; box-shadow: 0 24px 48px -32px rgba(43,36,25,.3); }
.gd-form input[type="text"], .gd-form input[type="email"], .gd-form input[type="tel"], .gd-form input[type="number"], .gd-form textarea, .gd-form select { background: var(--leinen); border-radius: 12px; }
.gd-form input:focus-visible, .gd-form textarea:focus-visible, .gd-form select:focus-visible { outline: 2px solid var(--petrol); }
.gd-fortschritt-bahn { background: var(--leinen); }
.gd-fortschritt-fuellung { background: var(--petrol); }

/* --- 5) Knoepfe: Holz fuer Inhalt, Salbei fuer Buchung und Absenden --- */
.fs-btn, .fs-btn-weiss { font-family: var(--font-body); font-weight: 600; box-shadow: none; }
.fs-btn-weiss, main#inhalt > section.fs-gradient a.fs-btn-weiss, .fs-gradient a.fs-btn-weiss { background: var(--petrol); color: #fff; }
.fs-btn-weiss:hover { background: var(--petrol-deep); box-shadow: 0 10px 24px -14px rgba(67,51,31,.6); }
.fs-btn-grad, main#inhalt > section.fs-gradient a.fs-btn-grad, .fs-gradient a.fs-btn-grad, .gd-offer .gd-btn, .gd-offer button { background: var(--coral); color: #fff; }
.fs-btn-grad:hover, .gd-offer button:hover { background: #5E6E50; box-shadow: 0 10px 24px -14px rgba(114,132,99,.7); }

/* --- 6) Bewertungsband: dunkles Holz ueber dem Waldweg --- */
.fs-bewertungen { background: var(--petrol-deep); color: #fff; }   /* seit AS von Abschnitt 12 abgeloest */
.bw-grund { mix-blend-mode: normal; opacity: .22; }
.fs-bewertungen .fs-band-title { color: #fff; }

/* --- 7) Fuss: Verlauf Holz zu dunklem Holz, zwei Spalten --- */
.site-footer, .sd-footer { background: linear-gradient(180deg, var(--petrol) 0%, var(--petrol-deep) 100%); color: rgba(255,255,255,.88); padding: clamp(3.5rem, 6vw, 5.5rem) 0 2rem; margin-top: 0; text-align: left; }
.sd-footer-grid { display: grid; gap: 2.5rem; grid-template-columns: 1fr; margin-bottom: 2.5rem; }
@media (min-width: 720px) { .sd-footer-grid { grid-template-columns: 1.2fr 1fr; } }
.sd-footer-h { font-family: var(--font-display); font-weight: 500; color: #fff; font-size: 1.5rem; letter-spacing: 0; text-transform: none; margin: 0 0 1rem; }
.sd-footer p { margin: 0 0 1rem; line-height: 1.75; font-size: .97rem; }
.sd-footer a { color: #fff; text-decoration: none; }
.sd-footer a:hover { text-decoration: underline; text-decoration-color: rgba(255,255,255,.6); text-underline-offset: .18em; }
.sd-footer-list { list-style: none; margin: 0; padding: 0; line-height: 2; font-size: .97rem; }
.sd-footer-btn { display: inline-block; border: 1.5px solid rgba(255,255,255,.75); border-radius: 999px; padding: .55em 1.3em; font-weight: 600; }
.sd-footer-btn:hover { background: #fff; color: var(--petrol-deep); text-decoration: none; }
.sd-footer .footer-zeile, .sd-footer .footer-agentur { text-align: center; border-top: 1px solid rgba(255,255,255,.14); padding-top: 1.4rem; font-size: .9rem; }
.sd-footer .footer-agentur { border-top: 0; padding-top: 0; opacity: .75; }
.footer-zeile a, .footer-agentur a { color: #fff; }

/* --- 8) Vektorlogo (inline SVG) und Intro --- */
.kk-logo-svg { color: var(--petrol-deep); }
.kk-logo-svg svg { display: block; width: auto; height: 100%; }
body.menu-open .kk-logo-svg { color: #fff; }
.hdr-logo .kk-logo[style*="--sd-logo"] { background: none; -webkit-mask: none; mask: none; }
.hdr-logo .kk-logo[style*="--sd-logo"] img { visibility: visible; }
.sd-intro { position: fixed; inset: 0; z-index: 200; display: grid; place-items: center; background: var(--paper); color: var(--petrol-deep); cursor: pointer;
    animation: sd-intro-aus .6s ease 4.4s both; }   /* Fallback ohne JS; mit JS steuert body-end.php */
.sd-intro-logo { width: min(52vw, 260px); transform-origin: center center; will-change: transform; }
.sd-intro.sd-intro-flug { background: transparent; transition: background .6s ease .25s; }
.sd-intro-logo svg { display: block; width: 100%; height: auto; }
.sd-intro .sd-signet { stroke-dasharray: 1; stroke-dashoffset: 1; animation: sd-zeichnen 2.3s cubic-bezier(.45,.05,.35,1) .25s forwards; }
.sd-intro .sd-wort { opacity: 0; animation: sd-ein .7s ease 2.2s forwards; }
.sd-intro.sd-intro-weg { animation: sd-intro-aus .6s ease both; }
@keyframes sd-zeichnen { to { stroke-dashoffset: 0; } }
@keyframes sd-ein { to { opacity: 1; } }
@keyframes sd-intro-aus { to { opacity: 0; visibility: hidden; pointer-events: none; } }
html.sd-intro-seen .sd-intro { display: none; }
@media (prefers-reduced-motion: reduce) { .sd-intro { display: none; } }

/* --- 9) Bildband zuoberst (Modul slider): Ueberblendung, Parallax, Welle --- */
.sd-slider { position: relative; margin-top: var(--hh); background: var(--leinen); }
.sd-dias { position: relative; aspect-ratio: 1920 / 550; overflow: hidden; }
@media (max-width: 720px) { .sd-dias { aspect-ratio: 4 / 3; } }
.sd-dia { position: absolute; inset: 0; opacity: 0; transition: opacity 1.8s ease; z-index: 1; }
.sd-dia.ist-aktiv { opacity: 1; }
/* BW: Das erste Dia ist die Grundebene, immer deckend, ohne Transition und
   ohne Opacity-Wechsel. PSI/Lightrider (Chrome 151) verwarf das Bild sonst als
   LCP-Kandidat (NO_LCP nur auf der Startseite, Unterseiten 98). */
.sd-dia:first-child { opacity: 1 !important; transition: none; z-index: 0; }
/* BX: Dias 2 und 3 sind beim Laden gar nicht im Layout (display none), das Band
   ist dann exakt so aufgebaut wie auf den Unterseiten (dort PSI mobil 98).
   Das Skript schaltet sie 2 s vor dem ersten Wechsel zu. */
.sd-dia:not(:first-child):not(.ist-bereit) { display: none; }
/* Parallax: das Bild ist 36 % hoeher als sein Fenster und wird vom
   Starter-site.js (data-parallax-bg, tempo .33) beim Scrollen verschoben. */
.sd-slide-bild-box { position: absolute; left: 0; right: 0; top: -18%; height: 136%; will-change: transform; }
.sd-slide-bild { display: block; width: 100%; height: 100%; object-fit: cover; }
@media (prefers-reduced-motion: reduce) { .sd-slide-bild-box { top: 0; height: 100%; } .sd-dia { transition: none; } }
/* Welle: harmonisch hoch, tief, hoch, in der Papierfarbe, ohne Strich. */
.sd-kante { position: absolute; left: 0; right: 0; bottom: -1px; width: 100%; height: clamp(40px, 7.5vw, 116px); display: block; z-index: 1; pointer-events: none; }
.sd-kante-flaeche { fill: var(--paper); }
/* Hero folgt nach dem Bildband: kein Kopf-Abstand mehr, ruhiger Einstieg. */
main#inhalt > .sd-slider ~ section.fs-hero { padding-top: clamp(2.5rem, 5vw, 4.5rem); min-height: 0; }


/* --- 10) Logo-Medaillon auf dem Uebergang, Kopf ohne Logo (Desktop) --- */
.sd-medaillon { position: absolute; left: 50%; bottom: 0; transform: translate(-50%, 50%); z-index: 3; width: clamp(104px, 11vw, 150px); aspect-ratio: 1; border-radius: 50%; background: var(--paper); color: var(--petrol-deep); display: grid; place-items: center; box-shadow: 0 18px 40px -18px rgba(43,36,25,.45), 0 0 0 6px rgba(247,243,236,.6); text-decoration: none; transition: transform .25s ease; }
.sd-medaillon:hover { transform: translate(-50%, 50%) scale(1.04); }
.sd-medaillon svg { display: block; width: 62%; height: auto; }
/* Startseite: das Medaillon erscheint erst, wenn das Intro gelandet ist (JS setzt html.sd-medaillon-da; ohne Intro ist es sofort da). */
/* BT: Medaillon immer sofort da; das Signet zeichnet sich an Ort. */
.sd-medaillon .sd-signet { stroke-dasharray: 1; stroke-dashoffset: 1; animation: sd-zeichnen 2.2s cubic-bezier(.45,.05,.35,1) .35s forwards; }
.sd-medaillon .sd-wort { opacity: 0; animation: sd-ein .6s ease 2.1s forwards; }
@media (prefers-reduced-motion: reduce) { .sd-medaillon .sd-signet, .sd-medaillon .sd-wort { animation: none; stroke-dashoffset: 0; opacity: 1; } }
/* Platz unter dem Medaillon */
main#inhalt > .sd-slider ~ section.fs-hero { padding-top: 6.25rem; min-height: 0; }   /* H1 direkt unter dem Medaillon (75 px Ueberhang + 25 px) */
main#inhalt > section.fs-hero-klein { position: relative; margin-bottom: 0; border-bottom: 0; }
main#inhalt > section.fs-hero-klein + section, main#inhalt > section.fs-hero-klein + div { padding-top: clamp(5.5rem, 9vw, 8rem) !important; }
/* Dunkle Rampe am oberen Bildrand, damit weisse Navigation lesbar bleibt. */
.sd-dias::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 42%; z-index: 1; pointer-events: none; background: linear-gradient(to bottom, rgba(43,36,25,.62) 0%, rgba(43,36,25,.32) 40%, rgba(43,36,25,0) 100%); }
@media (min-width: 901px) {
    .hdr-logo { display: none; }
    .hdr-inner { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; }
    .hdr-nav { grid-column: 2; }
    .hdr-buchung { grid-column: 3; justify-self: end; }
    .site-header::before, .site-header { transition: background .35s ease, border-color .35s ease; }
    /* Startseite, noch nicht gescrollt: Kopf transparent direkt auf dem Bildband, weisse Schrift. */
    html.is-home .site-header:not(.header-compact) { border-bottom-color: transparent !important; }
    html.is-home .site-header:not(.header-compact)::before { background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none; }
    html.is-home .site-header:not(.header-compact) .hdr-nav-link { color: #fff; text-shadow: 0 1px 10px rgba(0,0,0,.35); }
    html.is-home .site-header:not(.header-compact) .hdr-nav-link::after { background: #fff; }
    html.is-home .site-header:not(.header-compact) .hdr-nav-link:hover, html.is-home .site-header:not(.header-compact) .hdr-nav-link[aria-current="page"] { color: #fff; }
    html.is-home .site-header:not(.header-compact) .hdr-buchung { background: rgba(247,243,236,.92); color: var(--petrol-deep); box-shadow: none; }
    html.is-home .site-header:not(.header-compact) .hdr-buchung:hover { background: #fff; }
    html.is-home .sd-slider { margin-top: 0; }
    html.is-home .sd-dias { aspect-ratio: auto; height: clamp(420px, 40vw, 640px); }
}


/* --- 11) Startseite: durchgehend Leinen-Grund, Wechselzeilen mit runden Bildern (ab AO) --- */
html.is-home main#inhalt > section.fs-hero { background: var(--leinen); }
html.is-home main#inhalt > section.fs-gradient, html.is-home .fs-gradient { background: var(--leinen); }
html.is-home .sd-kante-flaeche { fill: var(--leinen); }
html.is-home .sd-medaillon { background: var(--paper); box-shadow: 0 18px 40px -18px rgba(43,36,25,.45), 0 0 0 6px rgba(239,231,217,.7); }
.sd-wechsel { display: grid; gap: clamp(3rem, 7vw, 6rem); }
.sd-zeile { display: grid; grid-template-columns: 1fr; gap: clamp(1.5rem, 4vw, 3.5rem); align-items: center; }
@media (min-width: 720px) {
    .sd-zeile { grid-template-columns: 1.15fr .85fr; }
    .sd-zeile.ist-gespiegelt .sd-zeile-text { grid-column: 2; grid-row: 1; }
    .sd-zeile.ist-gespiegelt .sd-zeile-bild { grid-column: 1; grid-row: 1; }
}
.sd-zeile-text h2 { margin-top: 0; }
.sd-zeile-text > *:last-child { margin-bottom: 0; }
.sd-zeile-bild { display: flex; justify-content: center; }
/* Bildkreis mit Parallax: das Bild ist 34 % hoeher als der Kreis und wird
   vom Starter-site.js (data-parallax-bg) beim Scrollen verschoben. */
.sd-rund { position: relative; width: min(100%, 420px); aspect-ratio: 1; border-radius: 50%; overflow: hidden; background: var(--leinen-dunkel); box-shadow: 0 24px 48px -28px rgba(43,36,25,.45); isolation: isolate; z-index: 1; }
.sd-rund-plx { position: absolute; left: 0; right: 0; top: -17%; height: 134%; will-change: transform; }
.sd-rund-plx img { width: 100%; height: 100%; object-fit: cover; display: block; border-radius: 0; box-shadow: none; }
@media (prefers-reduced-motion: reduce) { .sd-rund-plx { top: 0; height: 100%; } }
@media (max-width: 719px) { .sd-rund { width: min(70vw, 320px); } .sd-zeile-bild { order: -1; } }


/* --- 12) Flyout-Abstand, Bewertungs-Sektion auf Weiss mit Welle, Fuss-Welle (ab AS) --- */
.hdr-sub { top: calc(100% + 18px); }
.hdr-nav-item.has-sub::before { content: ""; position: absolute; left: -1rem; right: -1rem; top: 100%; height: 26px; }
/* Bewertungen: weisse Sektion, oben die Welle in Leinen (Startseite), Karten in Creme. */
main#inhalt > section.fs-bewertungen, .fs-bewertungen { background: #fff; color: var(--ink); min-height: 0; padding: clamp(7.5rem, 14vw, 13rem) 0 clamp(5rem, 9vw, 8rem); overflow: visible; }
.fs-bewertungen::before { content: ""; position: absolute; left: 0; right: 0; top: -1px; height: clamp(40px, 7.5vw, 116px); background: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%201440%20120%22%20preserveAspectRatio%3D%22none%22%3E%3Cpath%20fill%3D%22%23EFE7D9%22%20d%3D%22M0%2C0%20H1440%20V42%20C1300%2C42%201150%2C100%20980%2C100%20C790%2C100%20620%2C20%20450%2C20%20C300%2C20%20170%2C68%200%2C68%20Z%22/%3E%3C/svg%3E") center / 100% 100% no-repeat; z-index: 1; pointer-events: none; }
.bw-grund { display: none; }
main#inhalt > section.fs-bewertungen .bw-titel, .fs-bewertungen .bw-titel, .fs-bewertungen .fs-band-title { color: var(--petrol-deep); text-align: center; margin-inline: auto; }
.bw-summe { text-align: center; }
.bw-plakette { background: var(--leinen); color: var(--ink); border-radius: 999px; padding: .5em 1.1em; display: inline-flex; gap: .6em; align-items: center; text-decoration: none; }
.bw-summe-sterne { color: #F5B300; }
.bw-karte { background: var(--paper); color: var(--ink); border-radius: 22px; padding: 1.4rem 1.5rem 1.5rem; flex-basis: clamp(260px, 78vw, 340px); box-shadow: 0 20px 44px -30px rgba(43,36,25,.35); }
.bw-karte::before { display: none; }
.bw-avatar { background: var(--petrol); font-family: var(--font-display); font-weight: 500; }
.bw-person b { font-family: var(--font-display); font-weight: 500; font-size: 1.02rem; }
.bw-datum { color: var(--muted); }
.bw-text { font-size: .98rem; line-height: 1.6; }
.bw-mehr { color: var(--petrol-deep); }
.bw-pfeil { background: var(--leinen); color: var(--petrol-deep); box-shadow: 0 6px 18px -8px rgba(43,36,25,.4); }
.bw-pfeil:hover { background: var(--leinen-dunkel); }
/* Fuss: oben die Welle in der Farbe der vorangehenden Sektion. */
.site-footer.sd-footer { position: relative; padding-top: clamp(6rem, 11vw, 9.5rem); }
.sd-footer .sd-kante-oben { position: absolute; top: -1px; bottom: auto; left: 0; right: 0; width: 100%; height: clamp(40px, 7.5vw, 116px); display: block; pointer-events: none; }
.sd-kante-vor-fuss { fill: var(--sd-vor-fuss, var(--paper)); }
html.is-home { --sd-vor-fuss: #fff; }
html.is-home.sd-ohne-bewertungen { --sd-vor-fuss: var(--leinen); }
html.is-home main#inhalt > section.fs-hero .fs-hero-inner { padding-bottom: 0; }
html.is-home main#inhalt > section.fs-hero { padding-bottom: clamp(1rem, 3vw, 2.5rem); }

/* --- 13) Unterseiten wie die Startseite: Bildband, Welle, Medaillon, Leinen, runde Bilder (ab AT) --- */
body { background: var(--leinen); }
main#inhalt > section.fs-gradient, .fs-gradient { background: var(--leinen); }
.sd-kante-flaeche { fill: var(--leinen); }
.sd-medaillon { background: var(--paper); box-shadow: 0 18px 40px -18px rgba(43,36,25,.45), 0 0 0 6px rgba(239,231,217,.7); }
html:not(.is-home) { --sd-vor-fuss: var(--leinen); }
main#inhalt > section.fs-hero-klein.sd-unter-kopf { padding: 0 0 clamp(1.5rem, 3vw, 2.5rem); background: var(--leinen); border: 0; display: flex; flex-direction: column; align-items: stretch; overflow: visible; }
.sd-unter-kopf .fs-hero-inner { width: min(100% - 2.5rem, var(--wrap)); margin-inline: auto; }
.sd-unter-kopf { --sd-band-h: clamp(200px, 15.625vw, 320px); }   /* CC: Proportion 1920:300 wie die Altseite, Bild wird nicht hochskaliert */
.sd-unter-bild { position: relative; width: 100%; height: var(--sd-band-h); overflow: hidden; background: var(--leinen-dunkel); }
/* Medaillon ausserhalb des beschnittenen Bands, mittig auf dessen Unterkante. */
.sd-unter-kopf .sd-medaillon { top: var(--sd-band-h); bottom: auto; transform: translate(-50%, -50%); }
.sd-unter-kopf .sd-medaillon:hover { transform: translate(-50%, -50%) scale(1.04); }
/* CF: Parallax wieder an (Feld -18 %/136 % wie Startseite, NICHT top 0, siehe BN).
   Lotus-Bild: Bluete und Kerze liegen rechts, darum eigener Ausschnitt getrennt
   vom Startseiten-Band (dort left center fuer das Gesicht). */
.sd-unter-bild .sd-slide-bild-box { top: -22%; height: 144%; }   /* flaches Band: etwas mehr Reserve, die Engine schiebt bis ca. +40 px */
.sd-unter-bild .sd-slide-bild[src*="shiatsu-kerzen-lotus"] { object-position: 72% center; }
.sd-unter-bild::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 42%; z-index: 1; pointer-events: none; background: linear-gradient(to bottom, rgba(43,36,25,.62) 0%, rgba(43,36,25,.32) 40%, rgba(43,36,25,0) 100%); }
.sd-unter-kopf .fs-hero-inner { padding-top: clamp(5.5rem, 9vw, 8rem); }
.sd-unter-kopf .fs-hero-inner > * { max-width: none; }
.sd-unter-kopf .fs-hero-title { text-align: center; margin: 0; }
.sd-unter-kopf .fs-hero-claim { text-align: center; margin: .6rem auto 0; }
main#inhalt > section.fs-hero-klein + section, main#inhalt > section.fs-hero-klein + div { padding-top: clamp(2.5rem, 5vw, 4rem) !important; }
@media (min-width: 901px) {
    /* Auch auf den Unterseiten: Kopf ungescrollt transparent auf dem Bild, weisse Schrift. */
    .site-header:not(.header-compact) { border-bottom-color: transparent !important; }
    .site-header:not(.header-compact)::before { background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none; }
    .site-header:not(.header-compact) .hdr-nav-link { color: #fff; text-shadow: 0 1px 10px rgba(0,0,0,.35); }
    .site-header:not(.header-compact) .hdr-nav-link::after { background: #fff; }
    .site-header:not(.header-compact) .hdr-nav-link:hover, .site-header:not(.header-compact) .hdr-nav-link[aria-current="page"] { color: #fff; }
    .site-header:not(.header-compact) .hdr-buchung { background: rgba(247,243,236,.92); color: var(--petrol-deep); box-shadow: none; }
}
/* Runde Bilder im Inhalt (ausser Verbandslogos und Freisteller), mit Parallax wie auf der Startseite. */
.prose .md-bild:not(.sd-eckig) { display: flex; justify-content: center; }
.prose .md-bild:not(.sd-eckig) img { width: min(100%, 420px); aspect-ratio: 1; object-fit: cover; border-radius: 50%; box-shadow: 0 24px 48px -28px rgba(43,36,25,.45); }
.prose .md-bild img[src*="ikt-shiatsu-signet"], .prose .md-bild img[src*="sgs-logo"], .prose .md-bild img[src*="shiatsu-steine-bluete-kerze"], .prose .md-bild img[src*="video-"] { width: auto; aspect-ratio: auto; border-radius: 0; box-shadow: none; }
.prose .md-bild:has(img[src*="ikt-shiatsu-signet"]), .prose .md-bild:has(img[src*="sgs-logo"]) { justify-content: flex-start; }
.gd-akk, .gd-form { border-radius: 26px; }


/* --- 14) YouTube-Videos: Zwei-Klick-Einbettung (ab AW) --- */
/* Das Vorschaubild liegt lokal, erst der Klick laedt den Player von
   youtube-nocookie.com. Vorher fliesst nichts an Google (DSG). */
.sd-video { position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; border-radius: 26px; overflow: hidden; background: var(--petrol-deep); box-shadow: 0 24px 48px -28px rgba(43,36,25,.45); cursor: pointer; }
.sd-video img { width: 100% !important; height: 100% !important; object-fit: cover; aspect-ratio: auto !important; border-radius: 0 !important; display: block; }
.sd-video-play { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 78px; height: 78px; border-radius: 50%; background: rgba(247,243,236,.92); color: var(--petrol-deep); display: grid; place-items: center; box-shadow: 0 10px 30px -10px rgba(0,0,0,.5); transition: transform .2s ease, background .2s ease; pointer-events: none; }
.sd-video:hover .sd-video-play { transform: translate(-50%, -50%) scale(1.06); background: #fff; }
.sd-video-play svg { width: 30px; height: 30px; margin-left: 4px; }
.sd-video-hinweis { position: absolute; left: 0; right: 0; bottom: 0; margin: 0; padding: .7rem 1.1rem; font-size: .8rem; line-height: 1.4; color: #fff; background: linear-gradient(to top, rgba(43,36,25,.7), transparent); pointer-events: none; }
.sd-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.prose .sd-video + .gd-button-zeile { margin-top: .9rem; }
/* Reduzierte Bewegung: das Starter-JS setzt dann nie header-compact, der Kopf
   bleibt darum immer auf Creme mit dunkler Schrift (sonst weiss auf Creme). */
@media (prefers-reduced-motion: reduce) and (min-width: 901px) {
    html .site-header:not(.header-compact) { border-bottom-color: var(--line) !important; }
    html .site-header:not(.header-compact)::before { background: rgba(247,243,236,.94); }
    html .site-header:not(.header-compact) .hdr-nav-link { color: var(--ink); text-shadow: none; }
    html .site-header:not(.header-compact) .hdr-nav-link::after { background: var(--coral); }
    html .site-header:not(.header-compact) .hdr-nav-link:hover, html .site-header:not(.header-compact) .hdr-nav-link[aria-current="page"] { color: var(--petrol-deep); }
    html .site-header:not(.header-compact) .hdr-buchung { background: var(--coral); color: #fff; }
}


/* --- 15) Startseite: drei Spalten statt Wechselzeilen (ab AY, Wunsch Gabriel) --- */
.sd-wechsel { display: grid; grid-template-columns: 1fr; gap: clamp(3rem, 6vw, 4.5rem) clamp(2rem, 4vw, 3.5rem); }
@media (min-width: 720px) { .sd-wechsel { grid-template-columns: repeat(3, 1fr); } }
.sd-zeile, .sd-zeile.ist-gespiegelt { display: flex; flex-direction: column; align-items: center; text-align: center; gap: clamp(1.4rem, 2.5vw, 2rem); }
.sd-zeile.ist-gespiegelt .sd-zeile-text, .sd-zeile.ist-gespiegelt .sd-zeile-bild { grid-column: auto; grid-row: auto; }
.sd-zeile-bild { order: -1; width: 100%; }
.sd-rund { width: min(100%, 300px); }
.sd-zeile-text { width: 100%; }
.sd-zeile-text h2 { font-size: clamp(1.5rem, 2.2vw, 1.85rem); margin: 0 0 .5rem; }
.sd-zeile-text p { margin-inline: auto; max-width: 34ch; }
.sd-zeile-text .gd-button-zeile { justify-content: center; }
.sd-zeile-text .gd-button-zeile .fs-btn { margin-inline: auto; }
@media (max-width: 719px) { .sd-rund { width: min(70vw, 300px); } }

/* --- 16) Abschluss der Startseite (ab BA) --- */
/* CE: Selektor mit main#inhalt, weil der Starter jede geradzahlige Section transparent
   setzt (main#inhalt > section:nth-of-type(even)) und der FAQ-Abschnitt (CD) die
   Zaehlung verschoben hat: der Abschluss wurde leinen statt weiss. */
main#inhalt > section.sd-abschluss, .sd-abschluss { background: var(--leinen); text-align: center; padding: clamp(3rem, 6vw, 5rem) 0 clamp(4.5rem, 8vw, 7rem); }
main#inhalt > section.sd-abschluss.ist-weiss, .sd-abschluss.ist-weiss { background: #fff; padding-top: 0; }
main#inhalt > section.sd-faq { background: var(--leinen); }
.sd-abschluss .wrap { text-align: center; }
.sd-abschluss-titel { font-family: var(--font-display); font-weight: 500; font-size: clamp(1.9rem, 3.4vw, 2.6rem); color: var(--petrol-deep); margin: 0 auto .6rem; text-align: center; }
.sd-abschluss-text { max-width: 44ch; margin: 0 auto 1.8rem; color: var(--ink); text-align: center; }
.sd-abschluss-buttons { display: flex; flex-wrap: wrap; justify-content: center; gap: .8rem 1rem; }


/* --- 17) Handy-Leiste unten: Anrufen, Termin buchen (ab BE) --- */
.sd-leiste { display: none; }
@media (max-width: 900px) {
    .sd-leiste { position: fixed; left: 0; right: 0; bottom: 0; z-index: 90; display: flex; gap: 0; padding: .55rem .75rem calc(.7rem + env(safe-area-inset-bottom)); background: transparent; pointer-events: none; transform: translateY(110%); transition: transform .3s ease; }
    .sd-leiste-btn { pointer-events: auto; box-shadow: 0 10px 26px -10px rgba(43,36,25,.55); }
    body.sd-leiste-da .sd-leiste { transform: none; }
    body.menu-open .sd-leiste { transform: translateY(110%); }
    .sd-leiste-btn { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: .5rem; min-height: 46px; border-radius: 999px; font-family: var(--font-body); font-weight: 600; font-size: .98rem; text-decoration: none; color: #fff; }
    .sd-leiste-btn svg { width: 1.15rem; height: 1.15rem; }
    .sd-leiste-tel { background: var(--petrol); margin-right: .5rem; }
    .sd-leiste-buch { background: var(--coral); }
    body.sd-leiste-da { padding-bottom: 72px; }
    /* Hoch-Knopf der Engine ueber die Leiste heben */
    body.sd-leiste-da [data-to-top] { bottom: calc(92px + env(safe-area-inset-bottom)) !important; }
    @media (prefers-reduced-motion: reduce) { .sd-leiste { transition: none; } }
}


/* --- 18) Handy-Menue hell, Bilder links ausgerichtet, Parallax im Inhalt (ab BF) --- */
.mm { background: var(--leinen); color: var(--ink); }
.mm a, .mm a:hover, .mm a:focus, .mm a.mm-main, .mm-main, .mm-sub a { color: var(--ink); }
.mm a.mm-main[aria-current="page"], .mm-main[aria-current="page"] { color: var(--petrol-deep); }
.mm-main::after { background: var(--coral); height: 2px; }
.mm-sub a { opacity: .8; }
.mm-sub a[aria-current="page"] { opacity: 1; color: var(--petrol-deep); font-weight: 700; text-decoration: none; }   /* CG: nur EINE Linie, die Starter-Linie ::after in Salbei */
.mm-sub a::after { background: var(--coral); }
body.menu-open .burger span { background: var(--ink); }
body.menu-open .hdr-logo .kk-logo[style*="--sd-logo"] { background: var(--petrol-deep); }
body.menu-open .kk-logo-svg { color: var(--petrol-deep); }
.mm-buchung .fs-btn, .mm .fs-btn { background: var(--coral); color: #fff; }
/* Bildband und Unterseiten-Kopf: Motiv links ausrichten, damit die Person auch auf dem Handy im Bild bleibt. */
.sd-slide-bild { object-position: left center; }
/* Runde Bilder im Inhalt mit Parallax (Huelle per JS in body-end.php) */
.prose .md-bild { display: flex; justify-content: center; }
.prose .md-bild .sd-rund { position: relative; width: min(100%, 420px); aspect-ratio: 1; border-radius: 50%; overflow: hidden; background: var(--leinen-dunkel); box-shadow: 0 24px 48px -28px rgba(43,36,25,.45); isolation: isolate; }
.prose .md-bild .sd-rund .sd-rund-plx { position: absolute; left: 0; right: 0; top: -17%; height: 134%; }
.prose .md-bild .sd-rund img, .prose .md-bild .sd-rund a { display: block; width: 100% !important; height: 100% !important; object-fit: cover; border-radius: 0 !important; box-shadow: none !important; aspect-ratio: auto !important; }
.prose .md-bild > img:not(.sd-rund img) { width: auto; aspect-ratio: auto; border-radius: 0; box-shadow: none; }
@media (max-width: 719px) { .prose .md-bild .sd-rund { width: min(70vw, 320px); } }

/* --- 19) Bildausschnitt auf dem Handy: Gesicht immer ganz im Bild (ab BG) --- */
/* Das Waldportraet (shiatsu-bern-sabrina-dell-01) hat das Gesicht bei etwa
   27 % der Breite und 35 % der Hoehe. Auf schmalen Bildschirmen wird der
   Ausschnitt darauf zentriert; die anderen Dias bleiben links ausgerichtet. */
@media (max-width: 720px) {
    .sd-slide-bild[src*="shiatsu-bern-sabrina-dell-01"] { object-position: 27% top; }
    .sd-dias { aspect-ratio: 4 / 3; }
    /* BN: Das Parallax-Feld bleibt auch auf dem Handy 18 % hoeher (Feld 136 %).
       Die Engine verschiebt das Feld beim ersten Scroll-Ereignis nach UNTEN
       (bis +40 px); mit top: 0 entstand so in Safari ein leinenfarbener Spalt
       ueber dem Bild. Der Kopf bleibt trotzdem ganz im Bild: cover skaliert
       das Breitbild ueber die Hoehe, der Bildanfang liegt 44 px ueber dem
       Fenster, der Haaransatz bei ~29 px darunter. */
}

/* --- 20) Handy: Kopf ohne Balken, schwebender Burger, Bildband als Mittelweg (ab BI) --- */
@media (max-width: 900px) {
    /* Kein Balken, kein Logo: nur der Burger auf weissem Kreis, immer sichtbar. */
    /* Kopf vollstaendig unsichtbar machen: keine Hoehe, kein Grund, kein
       Schatten, kein Milchglas, kein Rand. Auf iOS blieb sonst ein heller
       Streifen (Safe-Area-Polster mit dem 85 %-Weiss der Engine). */
    .site-header, .site-header.header-compact { position: fixed; top: 0; left: 0; right: 0; height: 0 !important; min-height: 0 !important; padding: 0 !important; margin: 0; border: 0 !important; background: transparent !important; box-shadow: none !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important; overflow: visible; }
    .site-header::before, .site-header::after { display: none !important; content: none !important; }
    .hdr-inner { height: 0 !important; min-height: 0; padding: 0 !important; margin: 0; overflow: visible; }
    .hdr-nav, .hdr-buchung { display: none; }
    .hdr-logo { display: none; }
    .burger { position: fixed; top: calc(.85rem + env(safe-area-inset-top)); right: .85rem; width: 48px; height: 48px; border-radius: 50%; background: rgba(255,255,255,.94); box-shadow: 0 8px 22px -8px rgba(43,36,25,.5); margin: 0; padding: 0; opacity: 1 !important; z-index: 120; transition: background .2s ease, box-shadow .2s ease; }
    .burger::after { content: none; }
    /* Drei Striche, 20 px breit, exakt mittig im Kreis (Abstand 7 px).
       Alles mit !important, weil die Engine die Striche in mehreren Varianten
       (translate, top 50 %, left 0/right 0) positioniert. */
    .burger span, .burger span:nth-child(1), .burger span:nth-child(2), .burger span:nth-child(3) { position: absolute !important; left: 14px !important; right: auto !important; width: 20px !important; height: 2px !important; margin: 0 !important; bottom: auto !important; background: var(--ink) !important; border-radius: 2px; transform: none !important; opacity: 1; transition: transform .3s cubic-bezier(.65,0,.2,1), opacity .2s ease, top .3s ease; }
    .burger span:nth-child(1) { top: 16px !important; }
    .burger span:nth-child(2) { top: 23px !important; }
    .burger span:nth-child(3) { top: 30px !important; }
    /* Offenes Menue: kein Kreis, nur das Kreuz. */
    body.menu-open .burger { background: transparent; box-shadow: none; }
    body.menu-open .burger span:nth-child(1) { top: 23px !important; transform: rotate(45deg) !important; }
    body.menu-open .burger span:nth-child(2) { opacity: 0; }
    body.menu-open .burger span:nth-child(3) { top: 23px !important; transform: rotate(-45deg) !important; }
    .mm { padding-top: calc(4.5rem + env(safe-area-inset-top)); }
    /* Baender beginnen ganz oben. */
    .sd-slider { margin-top: 0 !important; }
    html:not(.is-home) main#inhalt { padding-top: 0 !important; }
}
@media (max-width: 720px) {
    /* Mittelweg: Band 16:10, Ausschnitt auf das Gesicht. */
    .sd-dias { aspect-ratio: 16 / 10; }
    .sd-unter-kopf { --sd-band-h: calc(100vw * 10 / 16); }   /* Handy: 16:10 (CF: weiter unten auf 16:9 fuer das Lotus-Band) */
    .sd-unter-bild { height: var(--sd-band-h); }
    .sd-slide-bild { object-fit: cover; object-position: left center; }
    .sd-slide-bild[src*="shiatsu-bern-sabrina-dell-01"] { object-position: 27% top; }
    /* CF: Unterseiten-Band auf dem Handy 16:9 (flacher als das Startseiten-Band). */
    .sd-unter-kopf { --sd-band-h: calc(100vw * 9 / 16); }
    /* CG: Parallax auch auf dem Handy (Wunsch Gabriel); Feld wie Desktop -22 %/144 %, Ausschnitt rechts. */
    .sd-unter-bild .sd-slide-bild[src*="shiatsu-kerzen-lotus"] { object-position: 80% center; }
    .sd-dias::before, .sd-unter-bild::before { display: none; }
    .sd-kante { height: clamp(28px, 8vw, 48px); }
    .sd-medaillon { width: 96px; }
}
/* Safari faerbt den Bereich hinter seinen Leisten mit dem html-Grund; Leinen statt Weiss (BM). */
html { background: var(--leinen); }

/* --- 21) Gutscheinformular (ab BO) --- */
.sd-gutschein { max-width: 46rem; }
.sd-gs-legende { font-family: var(--font-display); font-weight: 500; font-size: 1.5rem; color: var(--petrol-deep); margin: 0 0 1rem; padding: 0; }
.sd-gs-wahl { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: .7rem; margin: .4rem 0 1rem; }
.sd-gs-karte { position: relative; display: block; cursor: pointer; margin: 0; }
.sd-gs-karte input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.sd-gs-karte-inhalt { display: flex; flex-direction: column; gap: .15rem; padding: 1rem .9rem; border-radius: 18px; background: var(--leinen); border: 2px solid transparent; transition: border-color .18s ease, background .18s ease, transform .18s ease; text-align: left; }
.sd-gs-karte input:checked + .sd-gs-karte-inhalt { border-color: var(--petrol); background: #fff; }
.sd-gs-karte input:focus-visible + .sd-gs-karte-inhalt { outline: 2px solid var(--petrol); outline-offset: 2px; }
.sd-gs-karte:hover .sd-gs-karte-inhalt { transform: translateY(-1px); }
.sd-gs-karte-betrag { font-family: var(--font-display); font-size: 1.35rem; font-weight: 500; color: var(--petrol-deep); }
.sd-gs-karte-titel { font-weight: 600; font-size: .95rem; }
.sd-gs-karte-text { font-size: .85rem; color: var(--muted); }
.sd-gs-frei { margin-bottom: 1rem; }
.sd-gs-zustellung { display: flex; flex-wrap: wrap; gap: .4rem 1.6rem; margin-bottom: .6rem; }
.sd-gutschein .gd-summe { display: flex; justify-content: space-between; align-items: baseline; padding: .8rem 0; border-top: 1px solid var(--line); margin-top: 1rem; }
.sd-gutschein .gd-summe-wert { font-family: var(--font-display); font-size: 1.35rem; color: var(--petrol-deep); }
.sd-gutschein select { width: 100%; padding: .7em .9em; border: 1px solid var(--line); border-radius: 12px; background: var(--leinen); font: inherit; }
.sd-gutschein .gd-schritt-knoepfe { display: flex; gap: .7rem; flex-wrap: wrap; margin-top: 1rem; }
/* Gutscheinseite: Text links, Formular rechts (BP) */
.sd-gutschein-spalten { align-items: start; }
@media (min-width: 900px) { .sd-gutschein-spalten { grid-template-columns: .9fr 1.1fr; } }
.sd-gutschein-spalte .sd-gutschein { max-width: none; }
.sd-gutschein-spalte .gd-form { margin-top: 0; }
.sd-gs-frei[hidden], [data-liefer-block][hidden] { display: none !important; }

/* --- 22) Bewertungsband: kein Scroll-Snap und kein Smooth-Scroll beim Laden (CA) ---
   PSI/Lightrider (Chrome 151) meldet mobil NO_LCP, sobald das Bewertungsband auf
   der Seite ist (Diagnose: diag=ohnebew gruen, diag=ohnespalten rot). Verdacht:
   der Snap-Ausgleich der Laufleiste beim ersten Layout wird als Scroll gewertet
   und beendet die LCP-Messung vor dem ersten Kandidaten. Snap kommt darum erst
   nach dem Laden (html.sd-snap, body-end.php). */
.bw-spur { scroll-snap-type: none; scroll-behavior: auto; }
html.sd-snap .bw-spur { scroll-snap-type: x mandatory; scroll-behavior: smooth; }   /* CN: Klasse kommt bei der ersten Nutzeraktion (body-end.php) */

/* --- 23) Rueckmeldung Frau Dell (CC, 21.09.2026): kleinere Bilder, Narben eckig,
   Praxis-Diaschau, Logo-Dreiergruppe, gleiche Titelabstaende --- */
/* Runde Bilder im Inhalt auf 300 px (vorher 420), wie die Startseite. */
.prose .md-bild .sd-rund { width: min(100%, 300px); }
.prose .md-bild:not(.sd-eckig) img { width: min(100%, 300px); }
@media (max-width: 719px) { .prose .md-bild .sd-rund { width: min(70vw, 300px); } }
/* Narbenbilder und Gutschein-Foto: Originalproportion, ohne Kreis, weich gerundete Ecken. */
.prose .md-bild img[src*="narbe-"], .prose .md-bild img[src*="geschenkgutschein"], .prose .md-bild img[src*="gutschein-couvert"] { width: 100%; max-width: 420px; aspect-ratio: auto; object-fit: contain; border-radius: 18px; box-shadow: 0 20px 40px -28px rgba(43,36,25,.4); }
/* Verbandslogos: klein, eckig, ohne Schatten; als Dreiergruppe nebeneinander. */
.prose .md-bild img[src*="ikt-shiatsu-signet"] { width: 96px !important; }
.prose .md-bild img[src*="sgs-logo"] { width: 120px !important; }
.prose .md-bild img[src*="odakt"] { width: 150px !important; }
.prose .md-bild img[src*="ikt-shiatsu-signet"], .prose .md-bild img[src*="sgs-logo"], .prose .md-bild img[src*="odakt"] { aspect-ratio: auto; height: auto; border-radius: 0; box-shadow: none; object-fit: contain; }
.sd-logos { display: flex; flex-wrap: wrap; align-items: center; gap: 1.2rem 2rem; margin: 1rem 0 1.6rem; }
.sd-logos .md-bild { margin: 0; flex: 0 0 auto; }
@media (max-width: 720px) { .sd-logos { flex-direction: column; align-items: flex-start; gap: 1.4rem; } }   /* CG: Handy untereinander */
/* Titelabstaende ueberall gleich (Frau Dell: bei Links und Videos und Was ist Shiatsu schmaler). */
.prose h2, .fs-band .prose h2, main#inhalt > section.fs-gradient .prose h2, .fs-zwei-spalten h2 { margin: 2rem 0 .8rem; }
.prose h2:first-child, .prose > .md-bild + h2 { margin-top: 0; }
.prose h2 + p, .prose h3 + p { margin-top: 0; }
.prose h3, .fs-band .prose h3, main#inhalt > section.fs-gradient .prose h3 { margin: 1.5rem 0 .5rem; }
.prose .md-bild + h2 { margin-top: 1.6rem; }
/* Diaschau im Inhalt (Praxis): Rahmen 16:10 mit runden Ecken, Punkte darunter. */
.sd-dias-inhalt { width: 100%; max-width: 560px; margin-inline: auto; }
.sd-dias-inhalt-rahmen { position: relative; aspect-ratio: 16 / 10; border-radius: 22px; overflow: hidden; background: var(--leinen-dunkel); box-shadow: 0 20px 40px -28px rgba(43,36,25,.4); }
.sd-dia-inhalt { position: absolute; inset: 0; opacity: 0; transition: opacity 1.2s ease; }
.sd-dia-inhalt.ist-aktiv { opacity: 1; }
.sd-dia-inhalt:first-child { opacity: 1 !important; transition: none; z-index: 0; }
.sd-dia-inhalt:not(:first-child) { z-index: 1; }
.sd-dia-inhalt img { width: 100% !important; height: 100% !important; object-fit: cover; display: block; border-radius: 0 !important; box-shadow: none !important; aspect-ratio: auto !important; }
.sd-dias-punkte { display: flex; justify-content: center; gap: .5rem; margin-top: .9rem; }
.sd-dias-punkt { width: .6rem; height: .6rem; border-radius: 50%; border: 0; padding: 0; background: var(--leinen-dunkel); cursor: pointer; transition: transform .18s ease, background .18s ease; }
.sd-dias-punkt.ist-aktiv { background: var(--petrol); transform: scale(1.3); }
@media (prefers-reduced-motion: reduce) { .sd-dia-inhalt { transition: none; } }
/* Volle Breite ab Ueberschrift (Ueber mich): Liste zweispaltig auf breiten Schirmen. */
.sd-vollbreite { margin-top: clamp(1.5rem, 3vw, 2.5rem); }
.sd-vollbreite p, .sd-vollbreite li { max-width: none; }
@media (min-width: 900px) { .sd-vollbreite ul, .sd-vollbreite ol { columns: 2; column-gap: 3rem; } .sd-vollbreite li { break-inside: avoid; } }
/* Gutscheinseite: Foto links unter dem Text. */
.sd-gutschein-spalten .md-bild { justify-content: flex-start; }
/* CI: Spezifitaet (0,4,1) noetig, weil ".prose .md-bild > img:not(.sd-rund img)" (0,3,2)
   den Radius sonst auf 0 setzt; gilt auch fuer die Narbenbilder (18 px). */
.prose .sd-gutschein-spalten .md-bild > img[src*="gutschein-couvert"], .sd-gutschein-spalten .prose .md-bild > img[src*="gutschein-couvert"] { max-width: 100%; border-radius: 26px; }   /* CH: gleicher Radius wie das Formular (.gd-form 26px) */
main .prose .md-bild > img[src*="narbe-"], main .prose .md-bild > img[src*="geschenkgutschein"] { border-radius: 18px; }

/* --- 24) FAQ-Abschnitt auf der Startseite (CD, 21.09.2026, Fragekatalog Frau Dell)
   Leinen wie die drei Spalten, schmale Lesebreite, Fragen als Papierkarten
   mit Newsreader-Titel und Salbei-Pfeil. Details/Summary der Engine, kein JS. --- */
.sd-faq { background: var(--leinen); padding: clamp(2rem, 4vw, 3.5rem) 0 clamp(3.5rem, 6vw, 5.5rem); }
.sd-faq-inhalt { max-width: 780px; margin: 0 auto; }
.sd-faq-inhalt h2 { text-align: center; font-family: var(--font-display); font-weight: 500; font-size: clamp(1.9rem, 3.4vw, 2.6rem); color: var(--petrol-deep); margin: 0 0 1.6rem; }
.sd-faq .gd-akk { background: var(--paper, #F7F3EC); border: 1px solid var(--leinen-dunkel, #E3D8C4); border-radius: 18px; margin: .6rem 0; }
.sd-faq .gd-akk > summary { padding: 1rem 1.25rem; font-family: var(--font-display); font-size: clamp(1.08rem, 1.6vw, 1.22rem); font-weight: 500; color: var(--petrol-deep); line-height: 1.35; gap: .8em; }
.sd-faq .gd-akk > summary:hover { background: #fff; }
.sd-faq .gd-akk > summary::before { border-left-color: var(--coral, #66775A); opacity: 1; }
.sd-faq .gd-akk-inhalt { padding: 0 1.25rem 1.2rem; color: var(--ink); }
.sd-faq .gd-akk-inhalt p, .sd-faq .gd-akk-inhalt li { max-width: none; }
.sd-faq .gd-akk-inhalt a { color: var(--petrol); text-decoration: underline; text-underline-offset: .15em; }
@media (max-width: 720px) { .sd-faq .gd-akk > summary { padding: .85rem 1rem; } .sd-faq .gd-akk-inhalt { padding: 0 1rem 1rem; } }

/* --- 25) Rueckmeldung Frau Dell 25.09. (CJ) --- */
/* Startseiten-Hero zentriert (CK: auf allen Breiten, Wunsch Frau Dell 28.09.):
   der Textblock stand links, rechts blieb seit dem Wegfall des Stilllebens (AX) Leerraum. */
html.is-home main#inhalt > section.fs-hero .fs-hero-inner { text-align: center; }
html.is-home main#inhalt > section.fs-hero .fs-hero-inner > * { margin-inline: auto; }
/* Narbenseite: die Bildspalte mittig zur Texthoehe statt oben angeschlagen. */
.fs-zwei-spalten > .prose:has(img[src*="narbe-"]) { align-self: center; }
/* Grid-Ueberlauf (CK): Grid-Items haben min-width auto, das Narbenbild
   (max-width 420) erzwang so eine Mindestspaltenbreite ueber dem 350er-Wrap.
   Die Seite wurde auf dem Handy 20 px breiter als der Bildschirm, rechts
   erschien ein heller Streifen (Screenshot Frau Dell). min-width 0 laesst
   die Spalten auf die Wrap-Breite schrumpfen, Bilder skalieren via width 100 %. */
.fs-zwei-spalten > * { min-width: 0; }
