/* VDB Premium-Stadtseiten Erweiterung 1.0.3
   Nur für Erweiterungsstädte. Basisplugin 0.3.2 bleibt unverändert. */
body.vdbpse-extension main#primary {
    display:block !important;
    width:100% !important;
    max-width:none !important;
    margin:0 !important;
    padding:0 !important;
    float:none !important;
}
body.vdbpse-extension main#primary > .vdbps-page {
    width:100% !important;
    max-width:none !important;
    margin:0 !important;
}
body.vdbpse-extension .vdbps-page .vdbps-shell {
    box-sizing:border-box !important;
    width:min(1320px, calc(100% - 56px)) !important;
    max-width:1320px !important;
    margin-left:auto !important;
    margin-right:auto !important;
}
body.vdbpse-extension .vdbps-hero__card {
    box-sizing:border-box !important;
    width:min(780px, 64%) !important;
    max-width:780px !important;
}
body.vdbpse-extension .vdbps-page h1,
body.vdbpse-extension .vdbps-page h2,
body.vdbpse-extension .vdbps-page h3 {
    -webkit-hyphens:none !important;
    hyphens:none !important;
    word-break:normal !important;
    overflow-wrap:normal !important;
}
body.vdbpse-extension .vdbps-market-intro .vdbps-split {
    grid-template-columns:minmax(0,1.08fr) minmax(400px,.92fr);
    gap:64px;
}
body.vdbpse-extension .vdbps-market-intro .vdbps-image-card img {
    aspect-ratio:1.75/1;
    object-fit:cover;
}
body.vdbpse-extension .vdbps-market-intro .vdbpse-split--no-image {
    grid-template-columns:minmax(0, 1fr) !important;
    max-width:980px;
    margin-left:0;
}
body.vdbpse-extension.vdbps-hildesheim .vdbps-market-intro .vdbps-image-card img {
    aspect-ratio:1.45/1;
    object-position:center center;
}
@media (max-width:1040px) {
    body.vdbpse-extension .vdbps-hero__card {
        width:min(720px, 70%) !important;
    }
    body.vdbpse-extension .vdbps-market-intro .vdbps-split {
        grid-template-columns:1fr 1fr;
        gap:38px;
    }
}
@media (max-width:820px) {
    body.vdbpse-extension .vdbps-page .vdbps-shell {
        width:calc(100% - 36px) !important;
    }
    body.vdbpse-extension .vdbps-hero__card {
        width:100% !important;
        max-width:none !important;
    }
    body.vdbpse-extension .vdbps-market-intro .vdbps-split {
        grid-template-columns:1fr;
    }
    body.vdbpse-extension .vdbps-market-intro .vdbps-image-card img,
    body.vdbpse-extension.vdbps-hildesheim .vdbps-market-intro .vdbps-image-card img {
        aspect-ratio:16/9;
    }
}
@media (max-width:620px) {
    body.vdbpse-extension .vdbps-page .vdbps-shell {
        width:calc(100% - 28px) !important;
    }
}
/* 1.0.4 – Layout-Fix Sachverständigenkompetenz
   Ausschließlich wenn der Premium-Renderer KEIN nutzbares Standortbild gefunden hat.
   Seiten mit vorhandenem Bild behalten das eingefrorene Basislayout vollständig bei. */
body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdb-expert-qualification__heading {
    box-sizing:border-box !important;
    width:100% !important;
    max-width:none !important;
    margin-right:0 !important;
}
body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdb-expert-qualification__heading > h2 {
    width:100% !important;
    max-width:1080px !important;
}
body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdb-expert-qualification__heading > p:not(.vdb-li-kicker):not(.eyebrow) {
    width:100% !important;
    max-width:1180px !important;
}
body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdb-expert-qualification__grid {
    width:100% !important;
    max-width:none !important;
}
@media (max-width:820px) {
    body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdb-expert-qualification__heading > h2,
    body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdb-expert-qualification__heading > p:not(.vdb-li-kicker):not(.eyebrow) {
        max-width:none !important;
    }
}

/* 1.0.5 – Layout nur für Erweiterungsstädte OHNE nutzbares Standortbild.
   Bild-Städte werden von diesen Regeln ausdrücklich nicht erfasst. */
body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdbps-hero__card {
    box-sizing:border-box !important;
    width:min(1080px, 100%) !important;
    max-width:1080px !important;
}
body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdbps-market-intro .vdbpse-split--no-image {
    grid-template-columns:minmax(0,1fr) !important;
    width:100% !important;
    max-width:1180px !important;
    margin-left:0 !important;
    margin-right:auto !important;
    gap:0 !important;
}
body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdbps-market-intro .vdbpse-split--no-image > div:first-child {
    width:100% !important;
    max-width:none !important;
}
body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdb-expert-qualification__inner {
    width:100% !important;
    max-width:none !important;
}
body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdb-expert-qualification__heading {
    max-width:1180px !important;
}
@media (max-width:820px) {
    body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdbps-hero__card,
    body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdbps-market-intro .vdbpse-split--no-image,
    body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdb-expert-qualification__heading {
        width:100% !important;
        max-width:none !important;
    }
}


/* 1.0.6 – Einheitliche Containerbreiten für Erweiterungsstädte ohne Standortbild.
   Ziel: Hero, Marktintro und Kompetenzbereich auf derselben optischen Inhaltsbreite halten,
   ohne Städte mit funktionierendem Bild anzutasten. */
body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdbps-hero__card,
body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdbps-market-intro .vdbpse-split--no-image,
body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdb-expert-qualification__inner,
body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdb-expert-qualification__heading,
body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdb-expert-qualification__grid {
    width: 100% !important;
    max-width: none !important;
}
body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdbps-market-intro .vdbpse-split--no-image {
    margin-left: 0 !important;
    margin-right: 0 !important;
}
body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdbps-market-intro .vdbps-metrics {
    width: 100% !important;
    max-width: none !important;
}
body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdb-expert-qualification__heading > h2,
body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdb-expert-qualification__heading > p:not(.vdb-li-kicker):not(.eyebrow) {
    max-width: none !important;
}
@media (max-width: 820px) {
    body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdbps-hero__card,
    body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdbps-market-intro .vdbpse-split--no-image,
    body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdb-expert-qualification__inner,
    body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdb-expert-qualification__heading,
    body.vdbpse-extension .vdbps-page.vdbpse-no-city-image .vdb-expert-qualification__grid {
        width: 100% !important;
        max-width: none !important;
    }
}


/* 1.0.7 – Wrapper-Fix: identische Containerbreite auch für extern injizierte
   Standortmodule. Ausschließlich Erweiterungsstädte OHNE nutzbares Standortbild. */
body.vdbpse-extension.vdbpse-no-city-image-runtime {
    --vdbpse-container-max: 1320px;
    --vdbpse-container-gutter: 56px;
}

/* Premium-eigene Container */
body.vdbpse-extension.vdbpse-no-city-image-runtime .vdbps-page .vdbps-shell {
    box-sizing: border-box !important;
    width: min(var(--vdbpse-container-max), calc(100% - var(--vdbpse-container-gutter))) !important;
    max-width: var(--vdbpse-container-max) !important;
    margin-left: auto !important;
    margin-right: auto !important;
}

/* NRW-Qualifikationsblock wird von einem anderen Plugin außerhalb des
   Premium-Wrappers injiziert. Deshalb muss bereits die SECTION selbst
   auf die Premiumbreite normalisiert werden. */
body.vdbpse-extension.vdbpse-no-city-image-runtime section[data-vdb-nrw-qualification],
body.vdbpse-extension.vdbpse-no-city-image-runtime .vdb-expert-qualification--location,
body.vdbpse-extension.vdbpse-no-city-image-runtime .vdb-li-section.vdb-expert-qualification {
    box-sizing: border-box !important;
    width: min(var(--vdbpse-container-max), calc(100% - var(--vdbpse-container-gutter))) !important;
    max-width: var(--vdbpse-container-max) !important;
    margin-left: auto !important;
    margin-right: auto !important;
}
body.vdbpse-extension.vdbpse-no-city-image-runtime section[data-vdb-nrw-qualification] .vdb-expert-qualification__inner,
body.vdbpse-extension.vdbpse-no-city-image-runtime .vdb-expert-qualification--location .vdb-expert-qualification__inner {
    box-sizing: border-box !important;
    width: 100% !important;
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
}
body.vdbpse-extension.vdbpse-no-city-image-runtime section[data-vdb-nrw-qualification] .vdb-expert-qualification__heading,
body.vdbpse-extension.vdbpse-no-city-image-runtime .vdb-expert-qualification--location .vdb-expert-qualification__heading,
body.vdbpse-extension.vdbpse-no-city-image-runtime section[data-vdb-nrw-qualification] .vdb-expert-qualification__grid,
body.vdbpse-extension.vdbpse-no-city-image-runtime .vdb-expert-qualification--location .vdb-expert-qualification__grid {
    width: 100% !important;
    max-width: none !important;
}
body.vdbpse-extension.vdbpse-no-city-image-runtime section[data-vdb-nrw-qualification] .vdb-expert-qualification__heading > h2,
body.vdbpse-extension.vdbpse-no-city-image-runtime section[data-vdb-nrw-qualification] .vdb-expert-qualification__heading > p,
body.vdbpse-extension.vdbpse-no-city-image-runtime .vdb-expert-qualification--location .vdb-expert-qualification__heading > h2,
body.vdbpse-extension.vdbpse-no-city-image-runtime .vdb-expert-qualification--location .vdb-expert-qualification__heading > p {
    max-width: none !important;
}

/* Weitere von Standort-Plugins erzeugte, sichtbare Hauptcontainer werden –
   sofern sie auf einer bildlosen Erweiterungsstadt erscheinen – auf dasselbe
   Raster gebracht. Keine inneren Karten/Komponenten werden verbreitert. */
body.vdbpse-extension.vdbpse-no-city-image-runtime .vdb-market50,
body.vdbpse-extension.vdbpse-no-city-image-runtime .city-contact-cta:not(.vdbps-contact-moved),
body.vdbpse-extension.vdbpse-no-city-image-runtime .vdb-li-central-contact:not(.vdbps-contact-moved) {
    box-sizing: border-box !important;
    width: min(var(--vdbpse-container-max), calc(100% - var(--vdbpse-container-gutter))) !important;
    max-width: var(--vdbpse-container-max) !important;
    margin-left: auto !important;
    margin-right: auto !important;
}

@media (max-width: 820px) {
    body.vdbpse-extension.vdbpse-no-city-image-runtime {
        --vdbpse-container-gutter: 36px;
    }
}
@media (max-width: 620px) {
    body.vdbpse-extension.vdbpse-no-city-image-runtime {
        --vdbpse-container-gutter: 28px;
    }
}


/* 1.1.1 – Container-Hotfix Kaufbeuren / Wetzlar
   Diese beiden Seiten wurden durch konkurrierende Standort-/Theme-Regeln im
   Marktintro auf Viewportbreite gezogen. Hier wird das vollständige Premium-
   Raster für beide Städte mit höherer Selektorspezifität stabilisiert. */
html body.vdbpse-extension.vdbps-kaufbeuren main#primary .vdbps-page .vdbps-shell,
html body.vdbpse-extension.vdbps-wetzlar main#primary .vdbps-page .vdbps-shell {
    box-sizing: border-box !important;
    width: min(1320px, calc(100% - 56px)) !important;
    max-width: 1320px !important;
    margin-left: auto !important;
    margin-right: auto !important;
    left: auto !important;
    right: auto !important;
    transform: none !important;
}

/* Bildlose Marktintro-Variante: keine Full-Bleed- oder zweite Breitenlogik. */
html body.vdbpse-extension.vdbps-kaufbeuren main#primary .vdbps-page .vdbps-market-intro > .vdbps-shell.vdbps-split,
html body.vdbpse-extension.vdbps-wetzlar main#primary .vdbps-page .vdbps-market-intro > .vdbps-shell.vdbps-split {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 0 !important;
    width: min(1320px, calc(100% - 56px)) !important;
    max-width: 1320px !important;
    margin-left: auto !important;
    margin-right: auto !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
}
html body.vdbpse-extension.vdbps-kaufbeuren main#primary .vdbps-page .vdbps-market-intro > .vdbps-shell.vdbps-split > div:first-child,
html body.vdbpse-extension.vdbps-wetzlar main#primary .vdbps-page .vdbps-market-intro > .vdbps-shell.vdbps-split > div:first-child,
html body.vdbpse-extension.vdbps-kaufbeuren main#primary .vdbps-page .vdbps-market-intro .vdbps-metrics,
html body.vdbpse-extension.vdbps-wetzlar main#primary .vdbps-page .vdbps-market-intro .vdbps-metrics {
    box-sizing: border-box !important;
    width: 100% !important;
    max-width: none !important;
}

@media (max-width: 820px) {
    html body.vdbpse-extension.vdbps-kaufbeuren main#primary .vdbps-page .vdbps-shell,
    html body.vdbpse-extension.vdbps-wetzlar main#primary .vdbps-page .vdbps-shell,
    html body.vdbpse-extension.vdbps-kaufbeuren main#primary .vdbps-page .vdbps-market-intro > .vdbps-shell.vdbps-split,
    html body.vdbpse-extension.vdbps-wetzlar main#primary .vdbps-page .vdbps-market-intro > .vdbps-shell.vdbps-split {
        width: calc(100% - 36px) !important;
        max-width: none !important;
    }
}
@media (max-width: 620px) {
    html body.vdbpse-extension.vdbps-kaufbeuren main#primary .vdbps-page .vdbps-shell,
    html body.vdbpse-extension.vdbps-wetzlar main#primary .vdbps-page .vdbps-shell,
    html body.vdbpse-extension.vdbps-kaufbeuren main#primary .vdbps-page .vdbps-market-intro > .vdbps-shell.vdbps-split,
    html body.vdbpse-extension.vdbps-wetzlar main#primary .vdbps-page .vdbps-market-intro > .vdbps-shell.vdbps-split {
        width: calc(100% - 28px) !important;
    }
}


/* 1.1.2 – Fallback fuer den strukturellen Runtime-Containerfix Kaufbeuren/Wetzlar.
   Der data-Selektor funktioniert unabhaengig von Body-/Theme-Klassen. */
.vdbps-market-intro > .vdbps-shell[data-vdbpse-force-container="1"] {
    box-sizing:border-box !important;
    width:min(1320px, calc(100% - 56px)) !important;
    max-width:1320px !important;
    margin-left:auto !important;
    margin-right:auto !important;
    left:auto !important;
    right:auto !important;
    transform:none !important;
    padding-left:0 !important;
    padding-right:0 !important;
}
.vdbps-market-intro > .vdbps-shell[data-vdbpse-force-container="1"] > div:first-child,
.vdbps-market-intro > .vdbps-shell[data-vdbpse-force-container="1"] .vdbps-metrics {
    width:100% !important;
    max-width:none !important;
}
@media (max-width:820px) {
    .vdbps-market-intro > .vdbps-shell[data-vdbpse-force-container="1"] {
        width:calc(100% - 36px) !important;
        max-width:none !important;
    }
}
@media (max-width:620px) {
    .vdbps-market-intro > .vdbps-shell[data-vdbpse-force-container="1"] {
        width:calc(100% - 28px) !important;
    }
}


/* 1.1.3 – Premium-Welle 2: einheitliches 1320-px-Raster.
   Nur die zehn neuen Welle-2-Stadtseiten; Bundesland /brandenburg/ wird nicht erfasst. */
body.vdbpse-extension.vdbps-brandenburg-an-der-havel .vdbps-page .vdbps-shell,
body.vdbpse-extension.vdbps-norderstedt .vdbps-page .vdbps-shell,
body.vdbpse-extension.vdbps-kaufbeuren .vdbps-page .vdbps-shell,
body.vdbpse-extension.vdbps-schwaebisch-hall .vdbps-page .vdbps-shell,
body.vdbpse-extension.vdbps-nienburg-weser .vdbps-page .vdbps-shell,
body.vdbpse-extension.vdbps-wetzlar .vdbps-page .vdbps-shell,
body.vdbpse-extension.vdbps-deggendorf .vdbps-page .vdbps-shell,
body.vdbpse-extension.vdbps-herrenberg .vdbps-page .vdbps-shell,
body.vdbpse-extension.vdbps-stendal .vdbps-page .vdbps-shell,
body.vdbpse-extension.vdbps-vechta .vdbps-page .vdbps-shell {
    box-sizing:border-box !important;
    width:min(1320px, calc(100% - 56px)) !important;
    max-width:1320px !important;
    margin-left:auto !important;
    margin-right:auto !important;
    left:auto !important;
    right:auto !important;
    transform:none !important;
}
@media (max-width:820px) {
    body.vdbpse-extension.vdbps-brandenburg-an-der-havel .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-norderstedt .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-kaufbeuren .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-schwaebisch-hall .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-nienburg-weser .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-wetzlar .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-deggendorf .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-herrenberg .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-stendal .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-vechta .vdbps-page .vdbps-shell {
        width:calc(100% - 36px) !important;
    }
}
@media (max-width:620px) {
    body.vdbpse-extension.vdbps-brandenburg-an-der-havel .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-norderstedt .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-kaufbeuren .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-schwaebisch-hall .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-nienburg-weser .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-wetzlar .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-deggendorf .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-herrenberg .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-stendal .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-vechta .vdbps-page .vdbps-shell {
        width:calc(100% - 28px) !important;
    }
}


/* 1.2.0 – Premium-Welle 3: Container-Hardening von Beginn an. */
body.vdbpse-extension.vdbps-crailsheim .vdbps-page .vdbps-shell,
body.vdbpse-extension.vdbps-kaarst .vdbps-page .vdbps-shell,
body.vdbpse-extension.vdbps-lingen-ems .vdbps-page .vdbps-shell,
body.vdbpse-extension.vdbps-delmenhorst .vdbps-page .vdbps-shell,
body.vdbpse-extension.vdbps-wuerselen .vdbps-page .vdbps-shell,
body.vdbpse-extension.vdbps-kerpen .vdbps-page .vdbps-shell,
body.vdbpse-extension.vdbps-lehrte .vdbps-page .vdbps-shell,
body.vdbpse-extension.vdbps-luedenscheid .vdbps-page .vdbps-shell,
body.vdbpse-extension.vdbps-dessau-rosslau .vdbps-page .vdbps-shell,
body.vdbpse-extension.vdbps-emden .vdbps-page .vdbps-shell {
    box-sizing:border-box !important;
    width:min(1320px, calc(100% - 56px)) !important;
    max-width:1320px !important;
    margin-left:auto !important;
    margin-right:auto !important;
    left:auto !important;
    right:auto !important;
    transform:none !important;
}
@media (max-width:820px) {
    body.vdbpse-extension.vdbps-crailsheim .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-kaarst .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-lingen-ems .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-delmenhorst .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-wuerselen .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-kerpen .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-lehrte .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-luedenscheid .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-dessau-rosslau .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-emden .vdbps-page .vdbps-shell {
        width:calc(100% - 36px) !important;
    }
}
@media (max-width:620px) {
    body.vdbpse-extension.vdbps-crailsheim .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-kaarst .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-lingen-ems .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-delmenhorst .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-wuerselen .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-kerpen .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-lehrte .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-luedenscheid .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-dessau-rosslau .vdbps-page .vdbps-shell,
    body.vdbpse-extension.vdbps-emden .vdbps-page .vdbps-shell {
        width:calc(100% - 28px) !important;
    }
}
