/* =====================================================================
   STERAC Kampagnen-Landingpage („Magische Performance" 2026)
   Nur aktiv auf Seiten mit Backend-Layout „Kampagne" (body.campaign) und im seitenweiten
   Anfragebereich (.cmp-request, siehe request.css).
   CI: Interstate Bd/Lt, Gelb #ffcc00, Schwarz #1d1d1b, Weiss, Hellgrau.
   Animationen nur mit JS (html.cmp-js) und ohne prefers-reduced-motion.
   ===================================================================== */

/* Tokens: Kampagnenseite und seitenweiter Anfragebereich (.cmp-request, z. B. Kontakt-Overlay) */
body.campaign,
.cmp-request {
    --cmp-yellow: #ffcc00;
    --cmp-black: #1d1d1b;
    --cmp-dark: #18181a;
    --cmp-grey: #f2f2f2;
    --cmp-line: #dcdcdc;
    --cmp-text: #1d1d1b;
    --cmp-muted: #55554f;
    --cmp-container: 1170px;
    --cmp-gutter: clamp(16px, 4vw, 40px);
    --cmp-section: clamp(56px, 8vw, 110px);
    --cmp-bold: "Interstate Bd", Arial, sans-serif;
    --cmp-light: "Interstate Lt", Arial, sans-serif;
    /* Display-Typo „laut" wie in den Kampagnen-Visuals: eng gesetzt, Strich leicht verstaerkt
       (Interstate Bd ist der kraeftigste Schnitt im STERAC-Font-Kit) */
    --cmp-track: -.022em;
    --cmp-stroke: .022em;
    --cmp-ease: cubic-bezier(.2, .7, .2, 1);
}

body.campaign .cmp,
.cmp.cmp-request {
    color: var(--cmp-text);
    font-family: var(--cmp-light);
    font-size: 17px;
    line-height: 1.55;
    -webkit-font-smoothing: antialiased;
}

.cmp *,
.cmp *::before,
.cmp *::after {
    box-sizing: border-box;
}

/* Reset mit niedriger Spezifitaet (Komponentenklassen gewinnen), nur text-align muss
   die globale Regel body.rebrush h1 { text-align: center } schlagen */
.cmp :where(h1, h2, h3, p, ul, ol, figure) {
    margin: 0;
    padding: 0;
}

body.campaign .cmp :is(h1, h2, h3, p),
.cmp.cmp-request :is(h1, h2, h3, p) {
    text-align: left;
}

body.campaign .cmp h2::before,
.cmp.cmp-request h2::before {
    content: none;
    padding: 0;
}

.cmp :where(p) {
    font-size: inherit;
    line-height: inherit;
}

.cmp img {
    display: block;
    max-width: 100%;
}

.cmp a:focus-visible,
.cmp button:focus-visible,
.cmp input:focus-visible,
.cmp select:focus-visible,
.cmp textarea:focus-visible,
.cmp [tabindex]:focus-visible {
    outline: 3px solid var(--cmp-black);
    outline-offset: 3px;
}

.cmp .cmp-bg--dark a:focus-visible,
.cmp .cmp-bg--dark button:focus-visible,
.cmp-hero a:focus-visible {
    outline-color: var(--cmp-yellow);
}

/* Sprungziele nicht unter dem fixierten Header verstecken */
.cmp [id] {
    scroll-margin-top: 90px;
}

/* Theme setzt body.rebrush a { font-style: italic } */
body.campaign .cmp a,
body.campaign .cmp a *,
.cmp.cmp-request a,
.cmp.cmp-request a * {
    font-style: normal;
}

.cmp-visually-hidden {
    position: absolute !important;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

.cmp-container {
    width: 100%;
    max-width: calc(var(--cmp-container) + 2 * var(--cmp-gutter));
    margin: 0 auto;
    padding: 0 var(--cmp-gutter);
}

/* ---------- Hintergruende ---------- */
.cmp-bg--white { background: #fff; }
.cmp-bg--grey { background: var(--cmp-grey); }
.cmp-bg--dark { background: var(--cmp-dark); color: #fff; }
.cmp-bg--yellow { background: var(--cmp-yellow); }

/* Theme faerbt jeden Link beim Hover gelb (body.rebrush a:hover) – auf gelbem Grund waere er unsichtbar */
body.campaign .cmp-bg--yellow a:hover,
.cmp-request.cmp-bg--yellow a:hover {
    color: var(--cmp-black);
}

/* ---------- Typografie ---------- */
.cmp .cmp-hero__title,
.cmp .cmp-h2,
.cmp .cmp-contact__title,
.cmp .cmp-overlay__title,
.cmp .cmp-entry__title,
.cmp-pillars__num {
    letter-spacing: var(--cmp-track);
    -webkit-text-stroke: var(--cmp-stroke) currentColor;
    paint-order: stroke fill;
    text-wrap: balance;
}

.cmp .cmp-h2 {
    font-family: var(--cmp-bold);
    font-weight: normal;
    font-size: clamp(32px, 4.5vw, 64px);
    line-height: .94;
    text-transform: uppercase;
    margin-bottom: clamp(20px, 2.4vw, 34px);
    color: inherit;
}

body.campaign .cmp .cmp-h2--center {
    text-align: center;
}

.cmp-copy {
    color: var(--cmp-muted);
    font-size: clamp(16px, 1.35vw, 19px);
}

.cmp-bg--dark .cmp-copy {
    color: rgba(255, 255, 255, .8);
}

.cmp-copy p + p,
.cmp-copy p + ul,
.cmp-copy ul + p {
    margin-top: .8em;
}

.cmp-copy ul {
    list-style: none;
    margin-top: .8em;
}

.cmp-copy li {
    position: relative;
    padding-left: 22px;
    margin: .3em 0;
}

.cmp-copy li::before {
    content: "";
    position: absolute;
    left: 0;
    top: .6em;
    width: 10px;
    height: 3px;
    background: var(--cmp-yellow);
}

.cmp-copy a {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.cmp-copy--small {
    font-size: 15px;
    line-height: 1.5;
}

/* ---------- Buttons ---------- */
.cmp-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 14px 16px;
    margin-top: clamp(22px, 2.4vw, 32px);
}

.cmp-actions:empty {
    display: none;
}

.cmp-actions--center {
    justify-content: center;
}

.cmp-actions--stack {
    flex-direction: column;
    align-items: flex-start;
}

.cmp .cmp-btn {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    min-height: 54px;
    padding: 14px 26px;
    border: 2px solid transparent;
    border-radius: 3px;
    font-family: var(--cmp-bold);
    font-size: 17px;
    line-height: 1.1;
    font-style: normal;
    letter-spacing: .015em;
    text-transform: uppercase;
    text-decoration: none;
    cursor: pointer;
    transition: background-color .2s, color .2s, border-color .2s, transform .2s var(--cmp-ease);
}

.cmp-btn__arrow {
    flex: none;
    transition: transform .25s var(--cmp-ease);
}

.cmp-btn:hover .cmp-btn__arrow,
.cmp-btn:focus-visible .cmp-btn__arrow {
    transform: translateX(5px);
}

.cmp .cmp-btn--primary {
    background: var(--cmp-yellow);
    color: var(--cmp-black);
}

.cmp .cmp-btn--primary:hover {
    background: var(--cmp-black);
    color: #fff;
}

.cmp-bg--yellow .cmp-btn--primary,
.cmp .cmp-btn--dark {
    background: var(--cmp-black);
    color: #fff;
}

.cmp-bg--yellow .cmp-btn--primary:hover,
.cmp .cmp-btn--dark:hover {
    background: #fff;
    color: var(--cmp-black);
}

.cmp .cmp-btn--ghost {
    background: rgba(0, 0, 0, .35);
    border-color: #fff;
    color: #fff;
}

.cmp .cmp-btn--ghost:hover {
    background: #fff;
    color: var(--cmp-black);
}

.cmp .cmp-btn--link {
    min-height: 0;
    padding: 4px 0;
    border: 0;
    color: var(--cmp-black);
    text-decoration: underline;
    text-decoration-thickness: 2px;
    text-underline-offset: 5px;
}

.cmp-bg--dark .cmp-btn--link {
    color: var(--cmp-yellow);
    text-decoration: none;
}

.cmp .cmp-btn--link:hover {
    color: var(--cmp-black);
    text-decoration-color: var(--cmp-yellow);
}

.cmp-bg--dark .cmp-btn--link:hover {
    color: #fff;
}

/* ---------- 01 Hero ---------- */
.cmp-hero {
    position: relative;
    display: flex;
    align-items: center;
    min-height: clamp(540px, 74vh, 780px);
    overflow: hidden;
    background: var(--cmp-dark);
    color: #fff;
    isolation: isolate;
}

.cmp-hero__media,
.cmp-hero__img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.cmp-hero__media {
    z-index: -2;
}

.cmp-hero__img {
    object-fit: cover;
    /* Motiv: Hauptfigur rechts der Mitte, links Platz fuer die Headline (Ausschnitte im Backend je Geraet) */
    object-position: 40% center;
}

.cmp-hero::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    /* Motiv „Nachtzauber vor Halle 8": links die helle Hallenfassade -> kraeftiger abdunkeln, damit die Headline traegt */
    background: linear-gradient(90deg, rgba(10, 10, 12, .9) 0%, rgba(10, 10, 12, .78) 32%, rgba(10, 10, 12, .35) 47%, rgba(10, 10, 12, 0) 58%);
}

.cmp-hero__content {
    padding-top: clamp(48px, 7vw, 96px);
    padding-bottom: clamp(48px, 7vw, 96px);
}

.cmp .cmp-hero__title {
    display: flex;
    flex-direction: column;
    font-family: var(--cmp-bold);
    font-weight: normal;
    font-size: clamp(40px, 11.2vw, 108px);
    line-height: .88;
    text-transform: uppercase;
    margin: 0 0 clamp(18px, 2vw, 28px);
    color: #fff;
    text-shadow: 0 2px 24px rgba(0, 0, 0, .35);
}

.cmp-hero__line {
    display: block;
}

.cmp-hero__line--accent {
    color: var(--cmp-yellow);
}

.cmp .cmp-hero__lead {
    max-width: 30em;
    font-size: clamp(18px, 1.6vw, 24px);
    line-height: 1.38;
    color: #fff;
}

/* Bildnachweis aus den Datei-Metadaten (z. B. „KI generiert“), unten rechts auf der Buehne */
.cmp .cmp-hero__note {
    position: absolute;
    right: var(--cmp-gutter);
    bottom: 6px;
    z-index: 1;
    margin: 0;
    color: rgba(255, 255, 255, .7);
    font-size: 9px; /* bewusst sehr klein (Tim, 10.11.2026) */
    line-height: 1;
    letter-spacing: .03em;
    text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
    pointer-events: none;
}

/* Bildnachweis in Text-Bild-Bloecken und Overlays (Datei-Metadaten „Copyright“, z. B. „KI generiert“), wie auf der Buehne */
.cmp .cmp-media-note {
    position: absolute;
    right: 8px;
    bottom: 6px;
    z-index: 1;
    margin: 0;
    color: rgba(255, 255, 255, .7);
    font-size: 9px; /* bewusst sehr klein (Tim, 10.11.2026) */
    line-height: 1;
    letter-spacing: .03em;
    text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
    pointer-events: none;
}

.cmp-entry__media {
    position: relative;
}

/* Buehnenzauber: Nebel + Plane, nur mit JS und ohne reduzierte Bewegung (siehe Animationen) */
.cmp-hero__fog,
.cmp-hero__curtain {
    display: none;
}

/* ---------- 02 Faktenleiste ---------- */
.cmp-facts {
    border-bottom: 1px solid var(--cmp-line);
}

.cmp-facts__list {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 14px 16px;
    padding-top: clamp(22px, 2.4vw, 32px);
    padding-bottom: clamp(22px, 2.4vw, 32px);
    list-style: none;
}

.cmp-facts__item {
    display: flex;
    align-items: center;
    gap: 14px;
    font-family: var(--cmp-bold);
    font-size: clamp(14px, 1.05vw, 17px);
    letter-spacing: .02em;
    text-transform: uppercase;
}

/* Zaehler: unsichtbarer Endwert reserviert die Breite, die laufende Zahl liegt rechtsbuendig darueber */
.cmp-count {
    display: inline-grid;
    font-variant-numeric: tabular-nums;
}

.cmp-count > * {
    grid-area: 1 / 1;
}

.cmp-count__ghost {
    visibility: hidden;
}

.cmp-count__value {
    justify-self: end;
}

.cmp-facts .cmp-icon {
    width: 34px;
    height: 34px;
    stroke-width: 2.2;
}

/* ---------- Icons ---------- */
.cmp-icon {
    flex: none;
    width: 32px;
    height: 32px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* ---------- 03 Text & Bild ---------- */
.cmp-textimage {
    display: grid;
    grid-template-columns: 1fr;
}

.cmp-textimage__text {
    padding: var(--cmp-section) var(--cmp-gutter);
    align-self: center;
    container-type: inline-size;
}

/* Headline waechst mit der Textspalte: zweizeilig wie im Visual („Kein Zaubertrick. / Sondern Koennen.") */
.cmp .cmp-textimage .cmp-h2 {
    font-size: clamp(32px, 10cqi, 64px);
}

.cmp-textimage__text .cmp-copy {
    max-width: 36em;
}

.cmp-textimage__media {
    position: relative;
    min-height: 300px;
    overflow: hidden;
}

.cmp-cover {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* <picture> aus dem Bild-Partial soll das Layout nicht beeinflussen */
.cmp picture:has(> .cmp-cover) {
    display: contents;
}

.cmp-textimage__media .cmp-cover {
    position: absolute;
    inset: 0;
}

/* ---------- 04 Saeulen ---------- */
.cmp-pillars {
    padding: var(--cmp-section) 0;
}

.cmp-pillars__list {
    display: grid;
    grid-template-columns: 1fr;
    gap: 28px;
    margin: clamp(16px, 2vw, 28px) 0 0;
    list-style: none;
}

.cmp-pillars__item {
    padding-left: 18px;
    border-left: 1px solid var(--cmp-line);
}

.cmp-pillars__head {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 14px;
}

.cmp-pillars .cmp-icon {
    width: 38px;
    height: 38px;
    stroke-width: 2;
}

.cmp-pillars__num {
    font-family: var(--cmp-bold);
    font-size: clamp(46px, 4.6vw, 68px);
    line-height: .9;
    color: var(--cmp-yellow);
}

.cmp .cmp-pillars__title {
    font-family: var(--cmp-bold);
    font-weight: normal;
    font-size: clamp(19px, 1.6vw, 23px);
    line-height: 1.15;
    letter-spacing: .005em;
    text-transform: uppercase;
    margin-bottom: 10px;
}

.cmp-pillars .cmp-actions {
    margin-top: clamp(32px, 4vw, 52px);
}

/* ---------- 05 Leistungen ---------- */
.cmp-services {
    padding: var(--cmp-section) 0;
}

.cmp-services__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 36px 28px;
    margin-top: clamp(20px, 2.5vw, 36px);
}

.cmp-card__media {
    position: relative; /* Bildnachweis (.cmp-media-note) */
    aspect-ratio: 16 / 10;
    overflow: hidden;
    border-radius: 3px;
    margin-bottom: 18px;
    background: #2b2b2e;
}

.cmp-card__media .cmp-cover {
    transition: transform .6s var(--cmp-ease);
}

.cmp-card:hover .cmp-card__media .cmp-cover {
    transform: scale(1.05);
}

.cmp .cmp-card__title {
    font-family: var(--cmp-bold);
    font-weight: normal;
    font-size: clamp(20px, 1.8vw, 26px);
    line-height: 1.1;
    letter-spacing: .005em;
    text-transform: uppercase;
    color: var(--cmp-yellow);
    margin-bottom: 8px;
}

.cmp-card__text {
    color: rgba(255, 255, 255, .85);
    font-size: clamp(16px, 1.3vw, 18px);
    margin-bottom: 12px;
}

/* ---------- 08 Anfrage ---------- */
.cmp-contact {
    padding: var(--cmp-section) 0;
}

.cmp-contact__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 36px;
}

.cmp-contact__text {
    container-type: inline-size;
}

.cmp .cmp-contact__title {
    font-family: var(--cmp-bold);
    font-weight: normal;
    font-size: clamp(40px, 13.5cqi, 80px);
    line-height: .9;
    text-transform: uppercase;
    margin-bottom: clamp(18px, 2vw, 28px);
}

.cmp-contact__lead {
    max-width: 30em;
    font-size: clamp(17px, 1.4vw, 20px);
}

.cmp .cmp-phone {
    display: inline-flex;
    align-items: center;
    gap: 18px;
    margin-top: 30px;
    color: var(--cmp-black);
    text-decoration: none;
}

.cmp-phone__icon {
    display: grid;
    place-items: center;
    width: 62px;
    height: 62px;
    border: 2px solid var(--cmp-black);
    border-radius: 50%;
    transition: background-color .2s, color .2s;
}

.cmp-phone:hover .cmp-phone__icon {
    background: var(--cmp-black);
    color: var(--cmp-yellow);
}

.cmp-phone__text {
    display: flex;
    flex-direction: column;
    line-height: 1.25;
}

.cmp-phone__number {
    font-family: var(--cmp-bold);
    font-weight: normal;
    font-size: clamp(24px, 2.6vw, 36px);
    letter-spacing: -.01em;
}

.cmp-phone__note {
    font-size: 15px;
}

/* EXT:form im gelben Anfragebereich (Markup aus den STERAC-Form-Templates:
   form > .csc-mailform > div > label.control-label + div.{containerClassAttribute}) */
.cmp-contact__form .csc-mailform {
    display: grid;
    grid-template-columns: 1fr;
    gap: 12px;
}

/* Wie im Layout: Platzhalter statt sichtbarer Feldbeschriftung (Label bleibt fuer Screenreader) */
.cmp-contact__form .control-label {
    position: absolute !important;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

.cmp-contact__form .actions {
    grid-column: 1 / -1;
}

.cmp-contact__form [id$="-email-verification"],
.cmp-contact__form .csc-mailform > :has(input[autocomplete="off"][tabindex="-1"]) {
    position: absolute;
    left: -9999px;
}

.cmp-contact__form fieldset,
.cmp-contact__form .form-group,
.cmp-contact__form .csc-form-element {
    margin: 0;
    padding: 0;
    border: 0;
}

.cmp-contact__form label {
    display: block;
    margin-bottom: 4px;
    font-family: var(--cmp-bold);
    font-size: 13px;
    letter-spacing: .03em;
    text-transform: uppercase;
}

.cmp-contact__form input[type="text"],
.cmp-contact__form input[type="email"],
.cmp-contact__form input[type="tel"],
.cmp-contact__form select,
.cmp-contact__form textarea {
    width: 100%;
    min-height: 48px;
    padding: 12px 14px;
    border: 1px solid rgba(0, 0, 0, .12);
    border-radius: 2px;
    background: #fff;
    color: var(--cmp-black);
    font-family: var(--cmp-light);
    font-size: 16px;
}

.cmp-contact__form textarea {
    min-height: 120px;
}

.cmp-contact__form .check,
.cmp-contact__form .form-check {
    display: flex;
    gap: 10px;
    align-items: flex-start;
    font-size: 14px;
}

.cmp-contact__form .check label,
.cmp-contact__form .form-check label {
    font-family: var(--cmp-light);
    font-size: 14px;
    letter-spacing: 0;
    text-transform: none;
}

.cmp-contact__form .check a {
    color: inherit;
    text-decoration: underline;
}

/* Spezifischer als body.rebrush .btn.btn-primary (Klassen kommen aus dem Formular-Template) */
body.campaign .cmp-contact__form button[type="submit"],
body.campaign .cmp-contact__form input[type="submit"],
.cmp.cmp-request .cmp-contact__form button[type="submit"],
.cmp.cmp-request .cmp-contact__form input[type="submit"] {
    width: 100%;
    min-height: 56px;
    margin: 6px 0 0;
    padding: 12px 22px;
    border: 0;
    border-radius: 3px;
    background: var(--cmp-black);
    color: #fff;
    font-family: var(--cmp-bold);
    font-size: 17px;
    letter-spacing: .015em;
    text-transform: uppercase;
    cursor: pointer;
    transition: background-color .2s, color .2s;
}

body.campaign .cmp-contact__form button[type="submit"]:hover,
body.campaign .cmp-contact__form input[type="submit"]:hover,
.cmp.cmp-request .cmp-contact__form button[type="submit"]:hover,
.cmp.cmp-request .cmp-contact__form input[type="submit"]:hover {
    background: #3a3a3a;
}

.cmp-contact__form .error,
.cmp-contact__form .help-block {
    color: #8a1c00;
    font-size: 14px;
}

/* ---------- 09 Newsletter ---------- */
.cmp-newsletter {
    padding: clamp(32px, 4vw, 48px) 0;
    border-bottom: 1px solid var(--cmp-line);
}

.cmp-newsletter__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 20px;
    align-items: center;
}

.cmp .cmp-newsletter__title {
    font-family: var(--cmp-bold);
    font-weight: normal;
    font-size: clamp(21px, 1.9vw, 27px);
    letter-spacing: -.005em;
    text-transform: uppercase;
    margin-bottom: 6px;
}

.cmp-newsletter__text p {
    color: var(--cmp-muted);
    font-size: 16px;
}

.cmp-newsletter__row {
    display: flex;
    gap: 10px;
}

.cmp-newsletter__row button {
    flex: none;
}

body.campaign .cmp-newsletter__row input {
    flex: 1;
    width: auto;
    min-width: 0;
    min-height: 48px;
    margin: 0;
    padding: 10px 14px;
    border: 1px solid var(--cmp-line);
    border-radius: 2px;
    background: #fff;
    font-family: var(--cmp-light);
    font-size: 16px;
}

.cmp-check {
    display: flex;
    gap: 10px;
    align-items: flex-start;
    margin-top: 12px;
    font-size: 13px;
    line-height: 1.45;
    color: var(--cmp-muted);
}

.cmp-check input {
    flex: none;
    margin-top: 2px;
}

.cmp-check a {
    color: inherit;
    text-decoration: underline;
}

.cmp-newsletter__thanks {
    margin-top: 12px;
    font-family: var(--cmp-bold);
}

/* ---------- Overlays ---------- */
.cmp-overlay {
    width: 100%;
    max-width: 100%;
    height: 100%;
    max-height: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--cmp-text);
    overflow: visible;
}

.cmp-overlay::backdrop {
    background: rgba(12, 12, 14, .62);
    backdrop-filter: blur(3px);
}

.cmp-overlay__panel {
    position: relative;
    height: 100%;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 64px var(--cmp-gutter) 40px;
    background: #fff;
    border-top: 6px solid var(--cmp-yellow);
}

.cmp .cmp-overlay__close {
    position: sticky;
    top: 0;
    float: right;
    z-index: 2;
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    margin: -48px -8px 0 0;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: #fff;
    color: var(--cmp-black);
    cursor: pointer;
    transition: transform .25s var(--cmp-ease), background-color .2s;
}

.cmp .cmp-overlay__close:hover {
    background: var(--cmp-yellow);
    transform: rotate(90deg);
}

.cmp .cmp-overlay__title {
    font-family: var(--cmp-bold);
    font-weight: normal;
    font-size: clamp(32px, 4.4vw, 62px);
    line-height: .94;
    text-transform: uppercase;
    margin: 0 56px 14px 0;
}

.cmp-overlay__intro {
    max-width: 44em;
    color: var(--cmp-muted);
    font-size: 17px;
}

.cmp-overlay__header {
    margin-bottom: clamp(20px, 2.6vw, 32px);
}

.cmp-tabs__list {
    display: flex;
    gap: 6px;
    margin: 0 calc(-1 * var(--cmp-gutter)) clamp(22px, 3vw, 36px);
    padding: 0 var(--cmp-gutter) 4px;
    overflow-x: auto;
    scroll-snap-type: x proximity;
    scrollbar-width: thin;
}

.cmp .cmp-tabs__tab {
    flex: 1 0 auto;
    display: flex;
    align-items: baseline;
    gap: 10px;
    min-height: 56px;
    padding: 12px 16px;
    border: 0;
    border-bottom: 3px solid transparent;
    background: var(--cmp-grey);
    color: var(--cmp-black);
    font-family: var(--cmp-bold);
    font-size: 14px;
    letter-spacing: .02em;
    text-transform: uppercase;
    text-align: left;
    cursor: pointer;
    scroll-snap-align: start;
    transition: background-color .25s, border-color .25s;
}

.cmp-tabs__num {
    font-size: 28px;
    line-height: 1;
    color: #a3a39d;
    transition: color .25s;
}

.cmp .cmp-tabs__tab:hover {
    border-bottom-color: var(--cmp-yellow);
}

.cmp .cmp-tabs__tab[aria-selected="true"] {
    background: var(--cmp-yellow);
    border-bottom-color: var(--cmp-black);
}

.cmp-tabs__tab[aria-selected="true"] .cmp-tabs__num {
    color: var(--cmp-black);
}

.cmp-entry {
    display: grid;
    grid-template-columns: 1fr;
    gap: 28px;
}

.cmp-entry > .cmp-entry__actions {
    margin-top: 0;
}

.cmp .cmp-entry__actions .cmp-btn {
    padding: 13px 22px;
    font-size: 16px;
}

.cmp .cmp-entry__title {
    font-family: var(--cmp-bold);
    font-weight: normal;
    font-size: clamp(28px, 3.2vw, 44px);
    line-height: .96;
    text-transform: uppercase;
    margin-bottom: 18px;
}

/* mobil: Buttons vor dem Bild */
.cmp-entry__media {
    order: 1;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border-radius: 3px;
    background: var(--cmp-grey);
}

/* ---------- Breakpoints ---------- */
@media (max-width: 767.98px) {
    /* Mobil: Text unten auf dem Bild, Verlauf von unten */
    .cmp-hero {
        align-items: flex-end;
        min-height: min(150vw, 720px); /* Magier (oben im 4:5-Ausschnitt) bleibt ueber dem Text sichtbar */
    }

    .cmp-hero::after {
        background: linear-gradient(0deg, rgba(10, 10, 12, .92) 0%, rgba(10, 10, 12, .72) 45%, rgba(10, 10, 12, .08) 76%);
    }

    .cmp-hero__content {
        padding-top: 120px;
        padding-bottom: 36px;
    }
}

@media (min-width: 480px) {
    .cmp-facts__list {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .cmp-facts__item {
        hyphens: auto;
    }
}

@media (min-width: 768px) and (max-width: 1359.98px) {
    .cmp-facts__list {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

/* Tablet hochkant: Die Headline laeuft ueber fast die ganze Breite und damit ueber den gelben Mantel des Magiers
   (Buehnenbild vom 10.11.2026) -> Verlauf weiter nach rechts ziehen, sonst steht Gelb auf Gelb. */
@media (min-width: 768px) and (max-width: 991.98px) {
    .cmp-hero::after {
        background: linear-gradient(90deg, rgba(10, 10, 12, .88) 0%, rgba(10, 10, 12, .74) 45%, rgba(10, 10, 12, .5) 75%, rgba(10, 10, 12, .2) 100%);
    }
}

/* Ab 1360px eine Reihe, jede Angabe einzeilig. Die Leiste ist dafuer breiter als der Inhalt darunter
   (links/rechts je 56px frei, rechts fuer die Seiten-Icons); die Schrift waechst mit der Fensterbreite.
   Bei 13px brauchen die fuenf Texte zusammen ~66,5 Schriftgroessen Breite, Icons und Trenner ~292px. */
@media (min-width: 1360px) {
    .cmp-facts__list {
        display: flex;
        justify-content: space-between;
        align-items: center;
        gap: 0;
        max-width: min(calc(100vw - 112px), 1520px);
    }

    .cmp-facts__item {
        gap: 10px;
        hyphens: manual;
        white-space: nowrap;
        font-size: clamp(13px, calc((100vw - 484px) / 66.5), 16px);
    }

    .cmp-facts .cmp-icon {
        width: 26px;
        height: 26px;
    }

    .cmp-facts__item + .cmp-facts__item {
        padding-left: 14px;
        margin-left: 14px;
        border-left: 1px solid var(--cmp-line);
    }
}

@media (min-width: 768px) {

    .cmp-pillars__list {
        grid-template-columns: repeat(2, 1fr);
    }

    .cmp-services__grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .cmp-newsletter__grid {
        grid-template-columns: 1fr 1fr;
        gap: 40px;
    }
}

@media (min-width: 992px) {
    .cmp-textimage {
        grid-template-columns: 1fr 1fr;
        min-height: clamp(420px, 38vw, 560px);
    }

    /* Text buendig zum Container, Bild bis an den Rand */
    .cmp-textimage__text {
        padding-left: max(var(--cmp-gutter), calc((100vw - var(--cmp-container)) / 2));
        padding-right: clamp(28px, 4vw, 60px);
    }

    .cmp-textimage--image-left .cmp-textimage__text {
        order: 2;
        padding-left: clamp(28px, 4vw, 60px);
        padding-right: max(var(--cmp-gutter), calc((100vw - var(--cmp-container)) / 2));
    }

    .cmp-textimage__media {
        min-height: 100%;
    }

    .cmp-pillars__list {
        grid-template-columns: repeat(5, 1fr);
        gap: 0;
    }

    .cmp-pillars__item {
        padding: 0 clamp(14px, 1.6vw, 24px);
    }

    .cmp-pillars__item:first-child {
        padding-left: 0;
        border-left: 0;
    }

    .cmp-services__grid {
        grid-template-columns: repeat(3, 1fr);
    }

    .cmp-contact__grid {
        grid-template-columns: 5fr 6fr;
        gap: clamp(40px, 6vw, 96px);
        align-items: start;
    }

    .cmp-contact__form .csc-mailform {
        grid-template-columns: 1fr 1fr;
        column-gap: 14px;
    }

    /* Felder mit containerClassAttribute "cmp-half" paarweise, alles andere volle Breite */
    .cmp-contact__form .csc-mailform > * {
        grid-column: 1 / -1;
    }

    .cmp-contact__form .csc-mailform > :has(> .cmp-half) {
        grid-column: auto;
    }

    /* Buehne: Textspalte auf der linken Haelfte, damit die Hauptfigur rechts frei bleibt.
       Headline-Groesse an der Breite ausgerichtet ("PERFORMANCE." ~7,8em in Interstate Bd). */
    .cmp-hero__content {
        max-width: none;
        padding-left: max(var(--cmp-gutter), 5vw);
        padding-right: 50%;
    }

    .cmp .cmp-hero__title {
        font-size: clamp(52px, 5.6vw, 112px);
    }

    .cmp .cmp-hero__lead {
        font-size: clamp(18px, 1.3vw, 23px);
    }

    .cmp-hero .cmp-btn {
        min-height: 58px;
        padding: 15px 30px;
        font-size: 18px;
    }

    /* Overlay als zentrierter Dialog, max. 76 % Seitenbreite (Konzept §5); auf kleinen Laptops/Tablets
       mind. 900 px, damit die beiden Buttons nebeneinander passen */
    .cmp-overlay {
        width: min(1160px, max(76vw, 900px), calc(100vw - 48px));
        height: fit-content;
        max-height: calc(100dvh - 64px);
        margin: auto;
    }

    .cmp-overlay__panel {
        height: auto;
        max-height: calc(100dvh - 64px);
        padding: 56px clamp(32px, 4vw, 64px) 52px;
        border-radius: 2px;
        box-shadow: 0 30px 80px rgba(0, 0, 0, .35);
    }

    .cmp-tabs__list {
        margin-left: 0;
        margin-right: 0;
        padding: 0;
        overflow: visible;
    }

    .cmp .cmp-tabs__tab {
        flex: 1 1 0;
    }

    .cmp-entry--image {
        grid-template-columns: 1fr 1fr;
        grid-template-areas: "text media" "actions actions";
        gap: clamp(28px, 3vw, 40px) clamp(28px, 4vw, 56px);
        align-items: start;
    }

    .cmp-entry--image .cmp-entry__text { grid-area: text; }
    .cmp-entry--image .cmp-entry__media { grid-area: media; }
    .cmp-entry--image .cmp-entry__actions { grid-area: actions; }
}

/* ---------- Animationen ---------- */
@media (prefers-reduced-motion: no-preference) {
    .cmp-js .cmp-hero__img {
        animation: cmp-hero-zoom 3.2s var(--cmp-ease) both;
    }

    /* Texte erscheinen, waehrend die Plane die linke Seite freigibt */
    .cmp-js .cmp-hero__line,
    .cmp-js .cmp-hero__lead,
    .cmp-js .cmp-hero .cmp-actions {
        animation: cmp-materialize 1.1s var(--cmp-ease) .85s both;
    }

    .cmp-js .cmp-hero__lead { animation-delay: 1.2s; }
    .cmp-js .cmp-hero .cmp-actions { animation-delay: 1.35s; }

    /* „Magischer" Schimmer, einmal ueber die gelbe Zeile */
    .cmp-js .cmp-hero__line--accent {
        background: linear-gradient(100deg, var(--cmp-yellow) 0%, var(--cmp-yellow) 40%, #fff6c4 50%, var(--cmp-yellow) 60%, var(--cmp-yellow) 100%) 0 0 / 250% 100%;
        -webkit-background-clip: text;
        background-clip: text;
        -webkit-text-fill-color: transparent;
        text-shadow: none;
        filter: drop-shadow(0 2px 14px rgba(0, 0, 0, .35));
        animation: cmp-materialize-glow 1.1s var(--cmp-ease) 1s both, cmp-shimmer 1.6s ease-in-out 2.1s both;
    }

    .cmp-js [data-cmp-reveal] {
        opacity: 0;
        transform: translateY(26px);
        transition: opacity .8s var(--cmp-ease), transform .8s var(--cmp-ease);
        transition-delay: calc(var(--cmp-i, 0) * 90ms);
    }

    .cmp-js [data-cmp-reveal].is-visible {
        opacity: 1;
        transform: none;
    }

    /* Faktenleiste nur einblenden, nicht anheben (ruhiger, waehrend die Zahlen laufen) */
    .cmp-js .cmp-facts [data-cmp-reveal] {
        transform: none;
    }

    /* Bild wischt ein; der Clip liegt auf dem Bild, nicht auf dem beobachteten Rahmen
       (komplett geclippte Elemente meldet der IntersectionObserver nie als sichtbar) */
    .cmp-js [data-cmp-reveal="image"] {
        opacity: 1;
        transform: none;
    }

    .cmp-js [data-cmp-reveal="image"] img {
        clip-path: inset(0 0 0 100%);
        transition: clip-path 1.1s var(--cmp-ease);
    }

    .cmp-js .cmp-textimage--image-left [data-cmp-reveal="image"] img {
        clip-path: inset(0 100% 0 0);
    }

    .cmp-js [data-cmp-reveal="image"].is-visible img {
        clip-path: inset(0);
    }

    .cmp-overlay[open] .cmp-overlay__panel {
        animation: cmp-dialog-in .45s var(--cmp-ease) both;
    }

    .cmp-overlay[open]::backdrop {
        animation: cmp-fade .35s ease both;
    }

    .cmp-tabs__panel:not([hidden]) {
        animation: cmp-fade-up .4s var(--cmp-ease) both;
    }
}

/* ---------- Buehnenzauber ---------- */
@media (prefers-reduced-motion: no-preference) {
    /* Plane: STERAC-Plane eines Curtainsider-Aufliegers (Spanngurte mit Ratschen, Dachschiene, Logo).
       Sie wird von links nach rechts aufgeschoben und rafft sich am rechten Rand zusammen. */
    .cmp-js .cmp-hero__curtain {
        position: absolute;
        inset: 0;
        z-index: 3;
        display: block;
        overflow: hidden;
        pointer-events: none;
    }

    .cmp-hero__tarp {
        position: absolute;
        inset: 0;
        background:
            /* Dachschiene */
            linear-gradient(180deg, #2a2a2a 0, #555 7px, #1d1d1b 12px, rgba(0, 0, 0, .35) 13px, rgba(0, 0, 0, 0) 40px),
            /* Faltenwurf zwischen den Gurten */
            repeating-linear-gradient(90deg, rgba(0, 0, 0, .12) 0, rgba(255, 255, 255, .10) 34px, rgba(0, 0, 0, .05) 70px, rgba(255, 255, 255, .07) 98px, rgba(0, 0, 0, .12) 130px),
            /* Licht von oben, Schatten unten */
            linear-gradient(180deg, rgba(255, 255, 255, .10) 0, rgba(0, 0, 0, 0) 35%, rgba(0, 0, 0, .08) 70%, rgba(0, 0, 0, .32) 100%),
            #ffcc00;
        box-shadow: -24px 0 48px rgba(0, 0, 0, .45);
        transform-origin: right center;
        animation: cmp-tarp-open 1.7s cubic-bezier(.65, 0, .25, 1) .3s both;
    }

    /* Spanngurte mit Ratschen auf Hoehe der Ladekante, ueber dem Aufdruck */
    .cmp-hero__tarp::before {
        content: "";
        position: absolute;
        inset: 13px 0 0;
        z-index: 2;
        background:
            url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='46'%3E%3Cdefs%3E%3ClinearGradient id='m' x1='0' x2='1'%3E%3Cstop offset='0' stop-color='%236b6b6b'/%3E%3Cstop offset='.45' stop-color='%23d9d9d9'/%3E%3Cstop offset='1' stop-color='%23555'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect x='229' y='4' width='30' height='38' rx='3' fill='url(%23m)'/%3E%3Crect x='234' y='12' width='20' height='5' rx='1' fill='%23333'/%3E%3Crect x='234' y='26' width='20' height='5' rx='1' fill='%23333'/%3E%3C/svg%3E") 0 76% / 260px 46px repeat-x,
            repeating-linear-gradient(90deg, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 232px, #262626 232px, #3a3a3a 240px, #2a2a2a 250px, #1f1f1f 256px, rgba(0, 0, 0, 0) 256px, rgba(0, 0, 0, 0) 260px);
    }

    /* STERAC-Aufdruck, verschwindet beim Aufschieben zuerst */
    .cmp-hero__tarp::after {
        content: "";
        position: absolute;
        top: 50%;
        left: 50%;
        z-index: 1;
        width: min(62%, 860px);
        aspect-ratio: 196 / 50;
        background: url("../Images/sterac-logo.svg") center / contain no-repeat;
        transform: translate(-50%, -62%);
        opacity: .92;
        animation: cmp-tarp-logo 1.7s ease-in .3s both;
    }

    /* Nebel am Boden: zwei Schichten driften gegenlaeufig, beim Oeffnen kurz dichter („Buehnennebel") */
    .cmp-js .cmp-hero__fog {
        position: absolute;
        right: 0;
        bottom: 0;
        left: 0;
        z-index: -1;
        display: block;
        height: 75%;
        overflow: hidden;
        pointer-events: none;
        -webkit-mask-image: linear-gradient(0deg, #000 0%, #000 25%, transparent 100%);
        mask-image: linear-gradient(0deg, #000 0%, #000 25%, transparent 100%);
        animation: cmp-fog-settle 5s ease-out .2s both;
    }

    .cmp-hero__fog span {
        position: absolute;
        top: 0;
        left: 0;
        width: 200%;
        height: 100%;
        background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1600' height='500'%3E%3Cfilter id='f' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.0028 .0075' numOctaves='4' seed='11' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 2.2 0 0 0 -.85'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23f)'/%3E%3C/svg%3E") repeat-x 0 0 / 50% 100%;
        opacity: .55;
        will-change: transform;
        animation: cmp-fog-drift 70s linear infinite;
    }

    .cmp-hero__fog span + span {
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1600' height='500'%3E%3Cfilter id='f' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.0042 .011' numOctaves='4' seed='47' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 2.2 0 0 0 -.85'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23f)'/%3E%3C/svg%3E");
        opacity: .4;
        animation-duration: 110s;
        animation-direction: reverse;
    }

    .cmp-hero.is-offstage .cmp-hero__fog,
    .cmp-hero.is-offstage .cmp-hero__fog span {
        animation-play-state: paused;
    }

    /* Headlines „materialisieren" aus dem Dunst */
    .cmp-js [data-cmp-reveal] .cmp-h2,
    .cmp-js .cmp-h2[data-cmp-reveal],
    .cmp-js [data-cmp-reveal] .cmp-contact__title {
        filter: blur(12px);
        opacity: 0;
        transition: opacity 1.1s var(--cmp-ease), transform .8s var(--cmp-ease), filter 1.2s var(--cmp-ease);
    }

    .cmp-js .is-visible .cmp-h2,
    .cmp-js .cmp-h2.is-visible,
    .cmp-js .is-visible .cmp-contact__title {
        filter: blur(0);
        opacity: 1;
    }
}

@keyframes cmp-tarp-open {
    0% { transform: none; opacity: 1; }
    85% { opacity: 1; }
    100% { transform: scaleX(.035); opacity: 0; }
}

@keyframes cmp-tarp-logo {
    0% { opacity: .92; }
    35% { opacity: 0; }
    100% { opacity: 0; }
}

@keyframes cmp-fog-drift {
    from { transform: translateX(0); }
    to { transform: translateX(-50%); }
}

@keyframes cmp-fog-settle {
    0% { opacity: 0; transform: translateY(12%); }
    18% { opacity: 1; }
    100% { opacity: .75; transform: none; }
}

@keyframes cmp-materialize {
    from { opacity: 0; filter: blur(16px); transform: translateY(14px) scale(1.02); }
    to { opacity: 1; filter: blur(0); transform: none; }
}

@keyframes cmp-materialize-glow {
    from { opacity: 0; filter: blur(16px) drop-shadow(0 2px 14px rgba(0, 0, 0, 0)); transform: translateY(14px) scale(1.02); }
    to { opacity: 1; filter: blur(0) drop-shadow(0 2px 14px rgba(0, 0, 0, .35)); transform: none; }
}

@keyframes cmp-hero-zoom {
    from { transform: scale(1.08); }
    to { transform: scale(1); }
}

@keyframes cmp-shimmer {
    from { background-position: 100% 0; }
    to { background-position: 0 0; }
}

@keyframes cmp-dialog-in {
    from { opacity: 0; transform: translateY(24px) scale(.985); }
    to { opacity: 1; transform: none; }
}

@keyframes cmp-fade {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes cmp-fade-up {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: none; }
}

/* Seite hinter einem offenen Overlay nicht scrollen */
html.cmp-overlay-open {
    overflow: hidden;
}
