/* ===========================================================================
   max-f it solutions — Website-Feinschliff über dem Baukasten (cms-blocks.css)
   ---------------------------------------------------------------------------
   Dunkle Sektionen tragen im Baukasten ein fest verdrahtetes TeamHUB/MyKI-Motiv
   (Anruf → TeamHUB-Bildmarke → MyKI-Orbit). Auf max-f.de ist das fremdes
   Branding und muss überall weg. Zwei Stufen:

   1) Grundregel: nur die beiden Verlaufs-Ebenen. Die müssen mitkopiert werden,
      sonst verliert die Sektion ihren Grund und die Schrift ihren Kontrast.
   2) Sektionen OHNE Split-Hero bekommen zusätzlich ein eigenes Infrastruktur-
      Schema (Rathaus/Kanzlei/Werkstatt → Netzwerk → Rechenzentrum → Dienste).
      Wo ein Split-Hero steht, trägt die Betriebsübersicht daneben das Bild —
      dort wäre das Schema nur Unruhe hinter dem Text.

   Höhere Spezifität als der Baukasten (body davor), damit die Ladereihenfolge
   keine Rolle spielt: das Seiten-CSS steht im <head> VOR cms-blocks.css.
   =========================================================================== */

body .cms-section.cms-bg-inverse {
    background-image:
        radial-gradient(1100px 500px at 82% -12%, color-mix(in srgb, var(--cms-primary) 26%, transparent), transparent 60%),
        linear-gradient(150deg, color-mix(in srgb, var(--cms-primary) 14%, var(--cms-bg-inverse)) 0%, var(--cms-bg-inverse) 48%, color-mix(in srgb, #000000 22%, var(--cms-bg-inverse)) 100%);
    background-size: auto, auto;
    background-position: center, center;
    background-repeat: no-repeat;
}

body .cms-section.cms-bg-inverse:not(:has(> .cms-hero-split)):not(:has(> .cms-canvas-block > .cms-hero-split)) {
    background-image:
        url("/Data/Pages/Files/01ddc465-a316-462a-a1c7-117a64e9095a/maxf-hero.svg"),
        radial-gradient(1100px 500px at 82% -12%, color-mix(in srgb, var(--cms-primary) 26%, transparent), transparent 60%),
        linear-gradient(150deg, color-mix(in srgb, var(--cms-primary) 14%, var(--cms-bg-inverse)) 0%, var(--cms-bg-inverse) 48%, color-mix(in srgb, #000000 22%, var(--cms-bg-inverse)) 100%);
    background-size: auto 78%, auto, auto;
    background-position: calc(50% + 215px) center, center, center;
}

/* Der Lichtstrahl über dunklen Sektionen lief auf Hellblau (#7fd0ff) —
   auf die Leitfarbe gezogen. */
body .cms-section.cms-bg-inverse::after {
    background: linear-gradient(112deg,
        transparent 30%,
        color-mix(in srgb, var(--cms-primary) 30%, transparent) 45%,
        color-mix(in srgb, #ff9d76 18%, transparent) 53%,
        transparent 70%);
}

/* Die Betriebsübersicht neben dem Split-Hero bringt ihre eigene Fassung mit —
   der Bild-Block soll keine zweite darüberlegen. */
body .cms-section.cms-bg-inverse .cms-image { margin: 0; }
body .cms-section.cms-bg-inverse .cms-image img {
    width: 100%;
    height: auto;
    max-width: 560px;
    border-radius: 0;
}

/* Schmale Viewports: Das Schema würde hinter der Schrift kleben — ausblenden,
   die Verläufe tragen die Fläche allein. Die Betriebsübersicht rutscht unter
   den Text und bleibt sichtbar. */
@media (max-width: 900px) {
    body .cms-section.cms-bg-inverse:not(:has(> .cms-hero-split)):not(:has(> .cms-canvas-block > .cms-hero-split)) {
        background-image:
            radial-gradient(1100px 500px at 82% -12%, color-mix(in srgb, var(--cms-primary) 26%, transparent), transparent 60%),
            linear-gradient(150deg, color-mix(in srgb, var(--cms-primary) 14%, var(--cms-bg-inverse)) 0%, var(--cms-bg-inverse) 48%, color-mix(in srgb, #000000 22%, var(--cms-bg-inverse)) 100%);
        background-size: auto, auto;
        background-position: center, center;
    }
    body .cms-section.cms-bg-inverse .cms-image img { max-width: 100%; }
}

/* Split-Hero: Der Kernsatz ist lang und soll als Satz lesbar bleiben, nicht als
   Wortkolonne. Textspalte breiter als die Betriebsübersicht (56/44 statt 50/50)
   und die H1 im Split eine Stufe kleiner — sonst bricht sie auf sechs Zeilen. */
body .cms-section:has(> .cms-hero-split),
body .cms-section:has(> .cms-canvas-block > .cms-hero-split) {
    grid-template-columns:
        minmax(0, calc(var(--cms-split-max, var(--cms-max-wide)) * 0.57))
        minmax(0, calc(var(--cms-split-max, var(--cms-max-wide)) * 0.43));
}
body .cms-hero-split h1 {
    font-size: clamp(2rem, 3.5vw, 3.15rem);
}
@media (max-width: 900px) {
    body .cms-section:has(> .cms-hero-split),
    body .cms-section:has(> .cms-canvas-block > .cms-hero-split) {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* Wer Animationen abgeschaltet hat, bekommt dasselbe Schema ohne die
   Datenfluss-Impulse. SMIL im Hintergrundbild lässt sich nicht per Media Query
   anhalten — deshalb eine zweite, bewegungsfreie Datei. */
@media (prefers-reduced-motion: reduce) {
    body .cms-section.cms-bg-inverse:not(:has(> .cms-hero-split)):not(:has(> .cms-canvas-block > .cms-hero-split)) {
        background-image:
            url("/Data/Pages/Files/01ddc465-a316-462a-a1c7-117a64e9095a/maxf-hero-static.svg"),
            radial-gradient(1100px 500px at 82% -12%, color-mix(in srgb, var(--cms-primary) 26%, transparent), transparent 60%),
            linear-gradient(150deg, color-mix(in srgb, var(--cms-primary) 14%, var(--cms-bg-inverse)) 0%, var(--cms-bg-inverse) 48%, color-mix(in srgb, #000000 22%, var(--cms-bg-inverse)) 100%);
    }
}

/* Wortmarke: Die Datei ist 600×198 (3:1). Der Baukasten gibt Breite UND Höhe
   fest vor, dadurch wurde sie im Menü auf 160×36 gequetscht (4,4:1). Breite
   freigeben, Seitenverhältnis erzwingen. */
body .cms-menu-brand img,
body .cms-footer-brand img,
body footer .cms-footer-logo-light,
body footer .cms-footer-logo-dark {
    width: auto !important;
    object-fit: contain;
}
body .cms-menu-brand img { height: 36px; max-width: 200px; }
body .cms-footer-brand img,
body footer .cms-footer-logo-light,
body footer .cms-footer-logo-dark { height: 40px; max-width: 220px; }

/* Barrierefreiheit: Die Menü-Links standen auf der gedämpften Textfarbe und kamen
   damit nur auf 3,71:1 gegen den weißen Kopf — WCAG AA verlangt 4,5:1 für Fließtext.
   Über color-mix gegen die Textfarbe bleibt der Ton themefähig (hell wie dunkel). */
body .cms-menu-link {
    color: color-mix(in srgb, var(--cms-text) 88%, var(--cms-bg-surface));
}
body .cms-menu-link:hover,
body .cms-menu-link:focus-visible {
    color: var(--cms-primary);
}

/* Abschnitts-Abstände: Die markante Handschrift setzt --cms-section-pad auf 6,4rem, also
   102 px oben UND unten — zwischen zwei Abschnitten stehen damit über 200 px Weißraum.
   Auf Seiten mit sechs bis zehn Abschnitten wird daraus eine Diaschau, bei der man ständig
   scrollt, ohne Text zu sehen. Über die Variable statt über .cms-section selbst, damit die
   Trennlinien-Logik und die Theme-Fallbacks unberührt bleiben.
   Gesetzt wird sie auf dem Abschnitt SELBST, nicht auf body: das Theme schreibt seinen Wert
   in einen <style>-Block, der nach dieser Datei im <head> steht: bei gleicher Spezifität
   gewinnt er, und geerbt wird ohnehin nur vom nächstgelegenen Vorfahren, der sie setzt. */
body .cms-section {
    --cms-section-pad: clamp(1.75rem, 3.4vw, 3.5rem);
}

/* Der Hero trägt die Seite und darf großzügig bleiben — eng gesetzt wirkt er gequetscht. */
body main > .cms-section:first-of-type,
body .cms-menu + .cms-section {
    --cms-section-pad: clamp(2.75rem, 5vw, 5rem);
}


/* ==========================================================================
   Kundenstimmen (testimonials): Logo oben, Zitat, Name unten.
   Zwei Spalten; bei ungerader Anzahl läuft die erste Stimme als Leitstimme
   über die ganze Breite (Logo + Name links, Zitat rechts) — so hat auch eine
   einzelne Stimme auf einer Themenseite Gewicht statt einer schmalen Karte.
   Die figcaption wird zu display:contents, damit Logo und Name eigene
   Felder im Kartenraster bekommen (der Renderer schachtelt beide darin).
   ========================================================================== */

body .cms-testimonials .cms-testimonials-grid {
    grid-template-columns: repeat(auto-fit, minmax(min(420px, 100%), 1fr));
    gap: 1.25rem;
}

body .cms-testimonials .cms-testimonial {
    display: grid;
    grid-template-areas: "logo" "quote" "who";
    grid-template-rows: auto 1fr auto;
    gap: 1.5rem;
    padding: clamp(1.5rem, 3vw, 2.25rem);
    position: relative;
    background: var(--cms-bg-surface);
    border: 0;
    box-shadow: none;
}

/* Anführungszeichen als Bildmarke in der Leitfarbe, oben rechts gegenüber dem Logo */
body .cms-testimonials .cms-testimonial::before {
    content: "\201C";
    position: absolute;
    top: clamp(0.9rem, 2vw, 1.4rem);
    right: clamp(1.25rem, 3vw, 2rem);
    font: 700 4.5rem/1 Georgia, "Times New Roman", serif;
    color: var(--cms-primary);
    pointer-events: none;
}

/* Auf weißem Abschnitt trägt die Karte den gedämpften Grund, sonst verschwindet sie. */
body .cms-section.cms-bg-default .cms-testimonials .cms-testimonial {
    background: var(--cms-bg-muted);
}

body .cms-testimonials .cms-testimonial figcaption { display: contents; }

body .cms-testimonials .cms-testimonial figcaption img {
    grid-area: logo;
    justify-self: start;
    width: auto;
    height: 44px;
    max-width: min(290px, calc(100% - 3.75rem));
    border-radius: 0;
    object-fit: contain;
    object-position: left center;
}

/* Im Dunkelmodus stehen die Logos auf einer hellen Plakette, sonst verschwinden
   dunkle Wortmarken (TOMs, Held, PMB) im Kartengrund. */
@media (prefers-color-scheme: dark) {
    body .cms-testimonials .cms-testimonial figcaption img {
        box-sizing: content-box;
        padding: 0.45rem 0.65rem;
        background: #fff;
        border-radius: var(--cms-radius);
    }
}
html.dark body .cms-testimonials .cms-testimonial figcaption img,
[data-bs-theme="dark"] body .cms-testimonials .cms-testimonial figcaption img {
    box-sizing: content-box;
    padding: 0.45rem 0.65rem;
    background: #fff;
    border-radius: var(--cms-radius);
}

body .cms-testimonials .cms-testimonial figcaption > div { grid-area: who; }

body .cms-testimonials .cms-testimonial blockquote {
    grid-area: quote;
    font-size: 1rem;
    line-height: 1.7;
    color: var(--cms-text);
}

body .cms-testimonials .cms-testimonial-author {
    font-weight: 650;
    color: var(--cms-text);
}

body .cms-testimonials .cms-testimonial-role {
    margin-top: 0.15rem;
    line-height: 1.45;
}

/* Leitstimme: erste Karte bei ungerader Anzahl (1, 3, 5 …) */
body .cms-testimonials .cms-testimonial:first-child:nth-last-child(odd) {
    grid-column: 1 / -1;
    grid-template-columns: minmax(190px, 260px) minmax(0, 1fr);
    grid-template-areas: "logo quote" "who quote";
    grid-template-rows: auto 1fr;
    column-gap: clamp(2rem, 5vw, 4.5rem);
    row-gap: 1.25rem;
    padding: clamp(1.75rem, 4vw, 3rem);
}

body .cms-testimonials .cms-testimonial:first-child:nth-last-child(odd) blockquote {
    font-size: clamp(1.05rem, 1.35vw, 1.2rem);
    line-height: 1.65;
    max-width: 68ch;
    padding-right: clamp(0rem, 4vw, 3.5rem);
}

@media (max-width: 760px) {
    body .cms-testimonials .cms-testimonial:first-child:nth-last-child(odd) {
        grid-template-columns: minmax(0, 1fr);
        grid-template-areas: "logo" "quote" "who";
        grid-template-rows: auto auto auto;
    }
}
