/*
 * BBF Verleih — Frontend-Seiten-Wrapper
 * Layout, Responsive, Barrierefreiheit (WCAG 2.1 AA).
 * Wizard-interne Styles liegen im Vite-Build (frontend/dist/).
 *
 * Zentrierung + max-width uebernimmt Bootstraps `.container`-Klasse.
 * Deshalb hier KEINE eigene max-width Regel auf .bbf-verleih-page.
 */

/* NOVA / JTL-Layouts rendern an verschiedenen Stellen generische Seitenueber-
 * schriften. Unsere Verleih-Seite hat ihren visuellen Titel im Theme-CD-
 * Banner (Hero) und braucht keine zusaetzliche Headline. Wir blenden:
 *   1) alle bekannten NOVA-Heading-Wrapper-Klassen aus
 *   2) jede freistehende <h1>, die im Haupt-Content-Bereich auftaucht
 *      (meist direkt im <main>/#content/.container), aber NICHT
 *      innerhalb unserer eigenen .bbf-verleih-page oder #verleih-wizard
 *      Wrapper — damit Step-Titel (h2) und interne Headings unberuehrt
 *      bleiben.
 * Der CD-Banner liegt typischerweise vor dem Main-Content (im Hero-
 * Bereich) und ist meist kein nacktes <h1> im Main-Flow — er sollte
 * daher nicht getroffen werden. Falls doch: bitte die konkrete Klasse
 * des CD-Banners melden, dann whiteliste ich sie explizit. */
body:has(.bbf-verleih-page) .index-heading-wrapper,
body:has(.bbf-verleih-page) .page-heading-wrapper,
body:has(.bbf-verleih-page) .page-header-title,
body:has(.bbf-verleih-page) .page-title,
body:has(.bbf-verleih-page) .content-heading,
body:has(.bbf-verleih-page) .breadcrumb-heading,
body:has(.bbf-verleih-page) .nova-headline,
body:has(.bbf-verleih-page) .headline,
body:has(.bbf-verleih-page) .header-title {
    display: none !important;
}

/* Aggressiver Fallback: jede freistehende <h1> im Content-Container,
   die NICHT innerhalb unserer Verleih-Seite liegt UND NICHT unser eigener
   CD-Balken ist, ausblenden. Die :not-Kette auf .bbf-verleih-page-title
   stellt sicher, dass unser neu hinzugefuegter Seitentitel in jedem Fall
   sichtbar bleibt — selbst wenn er als direktes Kind eines
   .container / main / #content gerendert wuerde. */
body:has(.bbf-verleih-page) main > h1:not(.bbf-verleih-page-title),
body:has(.bbf-verleih-page) main > header > h1:not(.bbf-verleih-page-title),
body:has(.bbf-verleih-page) main > section > h1:not(.bbf-verleih-page-title),
body:has(.bbf-verleih-page) main > div > h1:not(.bbf-verleih-page-title),
body:has(.bbf-verleih-page) main > article > h1:not(.bbf-verleih-page-title),
body:has(.bbf-verleih-page) #content > h1:not(.bbf-verleih-page-title),
body:has(.bbf-verleih-page) #content > header > h1:not(.bbf-verleih-page-title),
body:has(.bbf-verleih-page) #content > section > h1:not(.bbf-verleih-page-title),
body:has(.bbf-verleih-page) #content > div > h1:not(.bbf-verleih-page-title),
body:has(.bbf-verleih-page) #mainContent > h1:not(.bbf-verleih-page-title),
body:has(.bbf-verleih-page) .container > h1:not(.bbf-verleih-page-title),
body:has(.bbf-verleih-page) .contentcolumn > h1:not(.bbf-verleih-page-title),
body:has(.bbf-verleih-page) .content-wrapper > h1:not(.bbf-verleih-page-title) {
    display: none !important;
}

/* Unsere eigenen Headings innerhalb des Wizard-Containers (Step-Titel,
   optionaler sr-only Title) bleiben explizit sichtbar — falls einer der
   obigen Selektoren sie doch treffen wuerde. */
body:has(.bbf-verleih-page) .bbf-verleih-page h1,
body:has(.bbf-verleih-page) .bbf-verleih-page h2,
body:has(.bbf-verleih-page) .bbf-verleih-page h3,
body:has(.bbf-verleih-page) #verleih-wizard h1,
body:has(.bbf-verleih-page) #verleih-wizard h2,
body:has(.bbf-verleih-page) #verleih-wizard h3 {
    display: revert;
}

/* ── Seiten-H1 im CD-Stil ──────────────────────────────────────────────
 * Schwarzer inline-Block mit weisser Uppercase-Schrift, linksbuendig.
 * Der Block umschliesst nur den Text (display: inline-block + eng
 * dimensioniertes Padding), nicht die volle Content-Breite. Bei Umbruch
 * sorgt box-decoration-break: clone dafuer, dass jede Zeile ihren
 * eigenen schwarzen Hintergrund + Padding erhaelt.
 *
 * Font-Chain: gaengige sporty/action-Headline-Fonts als primaere Wahl;
 * Fallback ist der Theme-Body-Font ueber `inherit`-artige generische
 * Namen. KEINE neue @font-face-Deklaration — wenn das Theme einen
 * kondensierten CD-Font global geladen hat (z. B. Bebas Neue / Oswald
 * / Roboto Condensed), greift die Chain automatisch darauf zu. */
.bbf-verleih-page-title {
    display: inline-block;
    max-width: 100%;
    /* Enger Sitz um den Text, linksbuendig, kompakter als vorher und
       konsistent zum PSD — horizontal-paddings 14–20 px, vertikal
       8–12 px. Margins fluchten mit dem Stepper-Abstand. */
    margin: clamp(40px, 5vw, 64px) 0 clamp(40px, 5vw, 56px) 0;
    padding: clamp(8px, 1vw, 12px) clamp(14px, 1.6vw, 20px);
    background: #000000;
    color: #FFFFFF;
    font-family: "Bebas Neue", "Oswald", "Roboto Condensed", "Noto Sans Display Condensed", "Arial Narrow", Impact, Helvetica, Arial, sans-serif;
    /* 28–40 px — kleiner als die vorherige 3 rem-Kappe, passt besser
       zu den anderen Headlines der Site. */
    font-size: clamp(1.75rem, 3.2vw, 2.5rem);
    font-weight: 700;
    line-height: 1.05;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    text-align: left;
    text-decoration: none;
    vertical-align: top;
    -webkit-box-decoration-break: clone;
    box-decoration-break: clone;
    word-break: break-word;
}

/* Gegen Theme-Preflights absichern, die h1 zentrieren oder einen
   eigenen Hintergrund/Ausrichtung vorgeben. Unsere Kacheldarstellung
   bleibt unabhaengig vom Theme identisch. */
.bbf-verleih-page .bbf-verleih-page-title {
    display: inline-block !important;
    text-align: left !important;
    float: none !important;
    width: auto !important;
}

/* Das eigene, rein semantische H1 des Plugins (SEO / Screenreader) soll
 * visuell nicht erscheinen. .sr-only aus diesem Stylesheet greift bereits
 * — hier zusaetzlich defensiv den Titel-Selektor absichern, falls ein
 * Theme .sr-only ueberschreibt. */
.bbf-verleih-srtitle.sr-only,
.bbf-verleih-title.sr-only,
.bbf-verleih-srtitle {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

.bbf-verleih-header         { margin-bottom: 1.5rem; text-align: center; }
.bbf-verleih-header:empty   { display: none; }
.bbf-verleih-title          { font-size: clamp(1.5rem, 2.5vw, 2.25rem); margin: 0 0 .75rem; line-height: 1.2; }
.bbf-verleih-intro          { color: inherit; line-height: 1.55; max-width: 720px; margin: 0 auto; }

.bbf-verleih-grid   { row-gap: 1.5rem; }
.bbf-verleih-main   { min-width: 0; }
.bbf-verleih-aside  { min-width: 0; }

/* Headline-Rail: spiegelt Max-Width + Horizontal-Padding von .verleih-wizard,
   damit die Oberkante vom schwarzen Balken exakt auf der linken Kante von
   Stepper-Kachel 1 und dem darunter liegenden Content sitzt. */
.bbf-verleih-headline-rail {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 clamp(16px, 4vw, 48px);
    box-sizing: border-box;
}

/* Zwei-Spalten-Layout Wizard + Hilfebox (Desktop ≥ 1200 px).
   Fällt auf 1 Spalte, wenn Bereich <1200 px oder Hilfebox nicht existiert. */
.bbf-verleih-layout {
    display: block;
}

.bbf-verleih-layout--with-aside {
    display: grid;
    grid-template-columns: 1fr;
    gap: clamp(16px, 3vw, 32px);
    align-items: start;
}

@media (min-width: 1200px) {
    .bbf-verleih-layout--with-aside {
        grid-template-columns: minmax(0, 1fr) 360px;
    }
}

@media (min-width: 1440px) {
    .bbf-verleih-layout--with-aside {
        grid-template-columns: minmax(0, 1fr) 400px;
    }
}

/* Mobile-first: Wizard zuerst, Hilfebox darunter. Order muss nur umgekehrt
   werden, wenn die Hilfebox auf Mobile VOR dem Content stehen soll — aktuell
   nicht gewollt. */
.bbf-verleih-layout--with-aside > .bbf-verleih-main {
    min-width: 0;
}
.bbf-verleih-layout--with-aside > .bbf-verleih-hilfebox-column {
    min-width: 0;
}

.bbf-verleih-side-content {
    padding: 1rem;
    background: var(--bbf-surface, rgba(0,0,0,.02));
    border-radius: 8px;
    line-height: 1.55;
}

@media (min-width: 992px) {
    .bbf-verleih-sticky {
        position: sticky;
        top: 1rem;
        max-height: calc(100vh - 2rem);
        overflow-y: auto;
    }
}

.bbf-verleih-outro { border-top: 1px solid rgba(0,0,0,.08); padding-top: 1.5rem; }

/* ── Accessibility ────────────────────────────────────────────────────── */

.bbf-skip-link {
    position: absolute;
    left: -9999px;
    top: 0;
    z-index: 1000;
    padding: .75rem 1rem;
    background: #000;
    color: #fff;
    text-decoration: none;
}
.bbf-skip-link:focus {
    left: 1rem;
    top: 1rem;
    outline: 3px solid #ffbf00;
}

/* Fallback for themes that don't ship Bootstrap's .sr-only */
.sr-only:not(:focus):not(:active) {
    position: absolute !important;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0,0,0,0);
    white-space: nowrap; border: 0;
}

.bbf-verleih-main:focus-visible { outline: 3px solid #4d7c0a; outline-offset: 2px; }

/* Respect reduced-motion preferences */
@media (prefers-reduced-motion: reduce) {
    .bbf-verleih-sticky { position: static; }
}
