/* ==========================================================
   BESTGEN IMMOBILIEN
   /immobilienpreise-hamburg/

   FINAL COMPLETE CSS

   BRAND GREEN:
   #8A9583

   ----------------------------------------------------------
   PAGE GRID

   Desktop:
   max(46px, calc((100vw - 1600px) / 2))

   <= 1400: 32px
   <= 1200: 28px
   <= 767:  20px
   <= 420:  16px
========================================================== */


/* ==========================================================
   ELEMENTOR / SHORTCODE RESET
========================================================== */

.elementor-widget-shortcode:has(.bestgen-ip),
.elementor-widget-shortcode:has(.bestgen-ip)
> .elementor-widget-container,
.elementor-widget-shortcode:has(.bestgen-ip)
.elementor-shortcode,
.elementor-widget-html:has(.bestgen-ip),
.elementor-widget-html:has(.bestgen-ip)
> .elementor-widget-container {

    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;

    margin: 0 !important;
    padding: 0 !important;
}


/* ==========================================================
   ELEMENTOR OUTER CONTAINER
========================================================== */

.e-con:has(.bestgen-ip) {

    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;

    margin: 0 !important;
    padding: 0 !important;

    --padding-top: 0px !important;
    --padding-right: 0px !important;
    --padding-bottom: 0px !important;
    --padding-left: 0px !important;

    gap: 0 !important;
    --gap: 0px !important;

    overflow: visible !important;
}


.e-con:has(.bestgen-ip--hero),
.e-con:has(.bestgen-ip--light) {

    background:
        #F6F4F0 !important;
}


.e-con:has(.bestgen-ip--cta) {

    background:
        #8A9583 !important;
}


/* ==========================================================
   BASE
========================================================== */

.bestgen-ip {

    /* BRAND */

    --bg-green:
        #8A9583;

    --bg-green-dark:
        #8A9583;

    --bg-green-soft:
        rgba(138, 149, 131, .10);

    --bg-green-softer:
        rgba(138, 149, 131, .055);

    --bg-green-medium:
        rgba(138, 149, 131, .20);

    --bg-green-border:
        rgba(138, 149, 131, .30);


    /* GOLD */

    --bg-gold:
        #A66F22;

    --bg-gold-hover:
        #8F5E1B;

    --bg-gold-soft:
        rgba(166, 111, 34, .11);


    /* NEUTRAL */

    --bg-light:
        #F6F4F0;

    --bg-text:
        #2B322C;

    --bg-body:
        #5F6870;

    --bg-border:
        rgba(43, 50, 44, .11);

    --bg-border-strong:
        rgba(43, 50, 44, .16);

    --bg-white:
        #FFFFFF;


    /* PAGE GRID */

    --bestgen-ip-side:
        max(
            46px,
            calc((100vw - 1600px) / 2)
        );


    position:
        relative;

    width:
        100% !important;

    max-width:
        none !important;

    min-width:
        0 !important;

    margin:
        0 !important;


    padding-top:
        64px !important;

    padding-right:
        var(--bestgen-ip-side) !important;

    padding-bottom:
        64px !important;

    padding-left:
        var(--bestgen-ip-side) !important;


    --padding-top:
        64px !important;

    --padding-right:
        var(--bestgen-ip-side) !important;

    --padding-bottom:
        64px !important;

    --padding-left:
        var(--bestgen-ip-side) !important;


    box-sizing:
        border-box !important;

    background:
        #FFFFFF;

    color:
        var(--bg-body);

    font-family:
        "Poppins",
        Arial,
        sans-serif;

    font-size:
        15px;

    font-weight:
        400;

    line-height:
        1.68;

    scroll-margin-top:
        150px;
}


/* ==========================================================
   INNER RESET
========================================================== */

.bestgen-ip > .e-con-inner,
.bestgen-ip.e-con-boxed > .e-con-inner {

    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;

    margin: 0 !important;
    padding: 0 !important;

    --padding-top: 0px !important;
    --padding-right: 0px !important;
    --padding-bottom: 0px !important;
    --padding-left: 0px !important;
}


/* ==========================================================
   GLOBAL RESET
========================================================== */

.bestgen-ip *,
.bestgen-ip *::before,
.bestgen-ip *::after {

    box-sizing:
        border-box;
}


.bestgen-ip p {

    margin:
        0;
}


/* ==========================================================
   BACKGROUNDS
========================================================== */

.bestgen-ip--hero,
.bestgen-ip--light {

    background:
        var(--bg-light) !important;

    box-shadow:
        0 0 0 100vmax
        var(--bg-light);

    clip-path:
        inset(0 -100vmax);
}


.bestgen-ip--cta {

    background:
        #8A9583 !important;

    box-shadow:
        0 0 0 100vmax
        #8A9583;

    clip-path:
        inset(0 -100vmax);
}


/* ==========================================================
   SECTION SPACING
========================================================== */

@media (min-width: 1693px) {

    .bestgen-ip {

        --bestgen-ip-side:
            calc((100vw - 1600px) / 2);

        padding-top:
            68px !important;

        padding-bottom:
            68px !important;

        --padding-top:
            68px !important;

        --padding-bottom:
            68px !important;
    }
}


@media (max-width: 1400px) {

    .bestgen-ip {

        --bestgen-ip-side:
            32px;

        padding:
            60px 32px !important;

        --padding-top:
            60px !important;

        --padding-right:
            32px !important;

        --padding-bottom:
            60px !important;

        --padding-left:
            32px !important;
    }
}


@media (max-width: 1200px) {

    .bestgen-ip {

        --bestgen-ip-side:
            28px;

        padding:
            56px 28px !important;

        --padding-top:
            56px !important;

        --padding-right:
            28px !important;

        --padding-bottom:
            56px !important;

        --padding-left:
            28px !important;
    }
}


@media (max-width: 767px) {

    .bestgen-ip {

        --bestgen-ip-side:
            20px;

        padding:
            48px 20px !important;

        --padding-top:
            48px !important;

        --padding-right:
            20px !important;

        --padding-bottom:
            48px !important;

        --padding-left:
            20px !important;

        scroll-margin-top:
            110px;
    }
}


@media (max-width: 420px) {

    .bestgen-ip {

        --bestgen-ip-side:
            16px;

        padding:
            42px 16px !important;

        --padding-top:
            42px !important;

        --padding-right:
            16px !important;

        --padding-bottom:
            42px !important;

        --padding-left:
            16px !important;
    }
}


/* ==========================================================
   TYPOGRAPHY
========================================================== */

.bestgen-ip__eyebrow {

    display:
        block;

    width:
        100%;

    margin:
        0 0 13px;

    padding:
        0;

    color:
        #8A9583;

    font-family:
        "Poppins",
        Arial,
        sans-serif;

    font-size:
        15px;

    font-weight:
        500;

    line-height:
        1.35;

    letter-spacing:
        .09em;

    text-transform:
        uppercase;
}


.bestgen-ip__h1,
.bestgen-ip__title,
.bestgen-ip__h3,
.bestgen-ip__insight-title,
.bestgen-ip__green-title,
.bestgen-ip__stand-title {

    margin:
        0;

    padding:
        0;

    color:
        var(--bg-text);

    font-family:
        "Playfair Display",
        Georgia,
        serif;

    font-weight:
        500;
}


.bestgen-ip__h1 {

    width:
        100%;

    max-width:
        940px;

    font-size:
        clamp(42px, 3.6vw, 60px);

    line-height:
        1.06;

    letter-spacing:
        -.018em;
}


.bestgen-ip__title {

    width:
        100%;

    max-width:
        900px;

    font-size:
        clamp(42px, 3.2vw, 56px);

    line-height:
        1.07;

    letter-spacing:
        -.018em;
}


.bestgen-ip__h3 {

    margin-bottom:
        14px;

    font-size:
        26px;

    line-height:
        1.18;
}


.bestgen-ip__h3--sm {

    font-size:
        22px;
}


.bestgen-ip__intro {

    width:
        100%;

    max-width:
        760px;

    color:
        var(--bg-body);

    font-size:
        18px;

    line-height:
        1.68;
}


.bestgen-ip__na {

    color:
        var(--bg-body);

    font-style:
        italic;
}


/* ==========================================================
   LINKS
========================================================== */

.bestgen-ip a,
.bestgen-ip a:visited {

    color:
        #8A9583;

    text-decoration:
        none !important;

    text-decoration-line:
        none !important;

    transition:
        color .2s ease;
}


.bestgen-ip a:hover {

    color:
        var(--bg-gold);
}


/* ==========================================================
   FOCUS
========================================================== */

.bestgen-ip a:focus-visible,
.bestgen-ip button:focus-visible,
.bestgen-ip summary:focus-visible,
.bestgen-ip input:focus-visible {

    outline:
        2px solid #8A9583;

    outline-offset:
        3px;
}


/* ==========================================================
   MOBILE TYPOGRAPHY
========================================================== */

@media (max-width: 767px) {

    .bestgen-ip__h1,
    .bestgen-ip__title {

        font-size:
            38px;

        line-height:
            1.08;
    }


    .bestgen-ip__intro {

        font-size:
            17px;

        line-height:
            1.62;
    }
}


@media (max-width: 420px) {

    .bestgen-ip__h1,
    .bestgen-ip__title {

        font-size:
            34px;
    }


    .bestgen-ip__intro {

        font-size:
            16px;
    }
}


/* ==========================================================
   SECTION HEAD
========================================================== */

.bestgen-ip__head {

    width:
        100%;

    max-width:
        none;

    min-width:
        0;

    display:
        grid;

    grid-template-columns:
        minmax(0, 1.12fr)
        minmax(320px, .72fr);

    gap:
        clamp(44px, 6vw, 96px);

    align-items:
        end;

    margin:
        0 0 44px !important;

    padding:
        0 !important;
}


.bestgen-ip__head > * {

    min-width:
        0;
}


@media (max-width: 1200px) {

    .bestgen-ip__head {

        gap:
            38px;
    }
}


@media (max-width: 900px) {

    .bestgen-ip__head {

        grid-template-columns:
            1fr;

        gap:
            22px;

        margin-bottom:
            36px !important;
    }
}


/* ==========================================================
   GRIDS
========================================================== */

.bestgen-ip__grid {

    width:
        100%;

    min-width:
        0;

    display:
        grid;

    gap:
        18px;

    margin:
        0;

    padding:
        0;
}


.bestgen-ip__grid--4 {

    grid-template-columns:
        repeat(4, minmax(0, 1fr));
}


.bestgen-ip__grid--2 {

    grid-template-columns:
        repeat(2, minmax(0, 1fr));
}


.bestgen-ip__split {

    width:
        100%;

    min-width:
        0;

    display:
        grid;

    grid-template-columns:
        minmax(0, 1.06fr)
        minmax(0, .94fr);

    gap:
        18px;

    align-items:
        stretch;

    margin:
        0;

    padding:
        0;
}


.bestgen-ip__split--even {

    grid-template-columns:
        repeat(2, minmax(0, 1fr));
}


@media (max-width: 1200px) {

    .bestgen-ip__grid--4 {

        grid-template-columns:
            repeat(2, minmax(0, 1fr));
    }
}


@media (max-width: 1000px) {

    .bestgen-ip__split,
    .bestgen-ip__split--even {

        grid-template-columns:
            1fr;
    }
}


@media (max-width: 767px) {

    .bestgen-ip__grid--4,
    .bestgen-ip__grid--2 {

        grid-template-columns:
            1fr;
    }


    .bestgen-ip__grid {

        gap:
            14px;
    }
}


/* ==========================================================
   CARD
========================================================== */

.bestgen-ip__card {

    width:
        100%;

    max-width:
        none;

    min-width:
        0;

    margin:
        0;

    background:
        #FFFFFF;

    border:
        1px solid var(--bg-border);

    border-radius:
        5px;

    box-shadow:
        0 12px 34px
        rgba(43, 50, 44, .035);

    overflow:
        hidden;
}


.bestgen-ip__card--alt {

    background:
        var(--bg-light);
}


.bestgen-ip__card--pad {

    padding:
        28px;
}


@media (max-width: 767px) {

    .bestgen-ip__card--pad {

        padding:
            22px;
    }
}


/* ==========================================================
   ICON
========================================================== */

.bestgen-ip__icon {

    width:
        46px;

    height:
        46px;

    display:
        flex;

    align-items:
        center;

    justify-content:
        center;

    margin:
        0 0 20px;

    padding:
        0;

    border:
        1px solid rgba(138, 149, 131, .20);

    border-radius:
        50%;

    background:
        rgba(138, 149, 131, .10);

    color:
        #8A9583;

    font-size:
        17px;
}


.bestgen-ip__icon i {

    color:
        inherit !important;
}


.bestgen-ip__icon--gold {

    border-color:
        rgba(166, 111, 34, .24);

    background:
        var(--bg-gold-soft);

    color:
        var(--bg-gold);
}


/* ==========================================================
   SOURCE
========================================================== */

.bestgen-ip__source {

    width:
        100%;

    margin:
        18px 0 0;

    padding:
        15px 0 0;

    border-top:
        1px solid var(--bg-border);

    color:
        var(--bg-body);

    font-size:
        13px;

    line-height:
        1.65;
}


.bestgen-ip__source strong {

    color:
        var(--bg-text);

    font-weight:
        600;
}


.bestgen-ip__source a,
.bestgen-ip__source a:visited {

    color:
        #8A9583;
}


.bestgen-ip__source a:hover {

    color:
        var(--bg-gold);
}


/* ==========================================================
   NOTE
========================================================== */

.bestgen-ip__note {

    margin:
        16px 0 0 !important;

    color:
        var(--bg-body);

    font-size:
        13px;

    line-height:
        1.65;
}


/* ==========================================================
   HERO
========================================================== */

.bestgen-ip__hero-grid {

    width:
        100%;

    min-width:
        0;

    display:
        grid;

    grid-template-columns:
        minmax(0, 1.30fr)
        minmax(320px, .70fr);

    gap:
        clamp(44px, 6vw, 90px);

    align-items:
        center;

    margin:
        0;

    padding:
        0;
}


.bestgen-ip--hero
.bestgen-ip__intro {

    margin-top:
        24px;
}


@media (max-width: 1000px) {

    .bestgen-ip__hero-grid {

        grid-template-columns:
            1fr;
    }
}


/* ==========================================================
   HERO ANCHORS
========================================================== */

.bestgen-ip__anchors {

    display:
        flex;

    flex-wrap:
        wrap;

    gap:
        9px;

    margin:
        30px 0 0;

    padding:
        0;
}


.bestgen-ip__anchors a,
.bestgen-ip__anchors a:visited {

    display:
        inline-flex;

    align-items:
        center;

    min-height:
        40px;

    padding:
        0 14px;

    border:
        1px solid var(--bg-border);

    border-radius:
        4px;

    background:
        #FFFFFF;

    color:
        var(--bg-text);

    font-size:
        14px;

    font-weight:
        500;

    line-height:
        1.3;
}


.bestgen-ip__anchors a:hover {

    border-color:
        rgba(138, 149, 131, .45);

    background:
        rgba(138, 149, 131, .10);

    color:
        #8A9583;
}


/* ==========================================================
   DATA STATUS CARD
========================================================== */

.bestgen-ip__stand {

    padding:
        28px;
}


.bestgen-ip__stand-title {

    margin-bottom:
        8px;

    font-size:
        26px;

    line-height:
        1.18;
}


.bestgen-ip__stand-list {

    margin:
        0;

    padding:
        0;

    list-style:
        none;
}


.bestgen-ip__stand-list li {

    display:
        grid;

    grid-template-columns:
        42px minmax(0, 1fr);

    gap:
        14px;

    align-items:
        flex-start;

    padding:
        16px 0;

    border-bottom:
        1px solid var(--bg-border);
}


.bestgen-ip__stand-list li:last-child {

    border-bottom:
        0;
}


.bestgen-ip__stand-list i {

    width:
        40px;

    height:
        40px;

    display:
        flex;

    align-items:
        center;

    justify-content:
        center;

    border-radius:
        50%;

    background:
        rgba(138, 149, 131, .10);

    color:
        #8A9583;

    font-size:
        15px;
}


.bestgen-ip__stand-list strong {

    display:
        block;

    margin-bottom:
        3px;

    color:
        var(--bg-text);

    font-size:
        15px;

    font-weight:
        600;

    line-height:
        1.4;
}


.bestgen-ip__stand-list span {

    display:
        block;

    color:
        var(--bg-body);

    font-size:
        14px;

    line-height:
        1.55;
}


.bestgen-ip__stand-foot {

    margin:
        16px 0 0 !important;

    color:
        var(--bg-body);

    font-size:
        13px;

    line-height:
        1.6;
}


/* ==========================================================
   KPI
========================================================== */

.bestgen-ip__kpi {

    min-width:
        0;

    padding:
        28px;

    transition:
        transform .2s ease,
        border-color .2s ease,
        box-shadow .2s ease;
}


.bestgen-ip__kpi:hover {

    transform:
        translateY(-3px);

    border-color:
        rgba(138, 149, 131, .30);

    box-shadow:
        0 18px 42px
        rgba(43, 50, 44, .06);
}


.bestgen-ip__kpi-value {

    display:
        block;

    color:
        var(--bg-text);

    font-family:
        "Playfair Display",
        Georgia,
        serif;

    font-size:
        clamp(34px, 2.5vw, 43px);

    font-weight:
        500;

    line-height:
        1.04;

    letter-spacing:
        -.015em;
}


.bestgen-ip__kpi-value span {

    font-family:
        "Poppins",
        Arial,
        sans-serif;

    font-size:
        15px;

    font-weight:
        500;

    color:
        var(--bg-body);
}


.bestgen-ip__kpi-label {

    margin:
        13px 0 6px;

    color:
        var(--bg-text);

    font-size:
        15px;

    font-weight:
        600;

    line-height:
        1.4;
}


.bestgen-ip__kpi-meta {

    color:
        var(--bg-body);

    font-size:
        14px;

    line-height:
        1.55;
}


/* ==========================================================
   GREEN BLOCKS
========================================================== */

.bestgen-ip__insight,
.bestgen-ip__green {

    border-radius:
        5px;

    background:
        #8A9583;

    color:
        rgba(255, 255, 255, .92);
}


/* ==========================================================
   INSIGHT
========================================================== */

.bestgen-ip__insight {

    width:
        100%;

    display:
        grid;

    grid-template-columns:
        minmax(0, 1.45fr)
        auto;

    gap:
        24px clamp(36px, 5vw, 80px);

    align-items:
        center;

    margin:
        40px 0 0;

    padding:
        32px 34px;
}


.bestgen-ip__insight-title {

    margin:
        0 0 11px;

    color:
        #FFFFFF;

    font-size:
        29px;

    line-height:
        1.18;
}


.bestgen-ip__insight p {

    color:
        rgba(255, 255, 255, .92);

    font-size:
        15px;

    line-height:
        1.68;
}


.bestgen-ip__insight-stats {

    display:
        flex;

    gap:
        36px;

    margin:
        0;

    padding:
        0;
}


.bestgen-ip__insight-stats dt {

    color:
        rgba(255, 255, 255, .86);

    font-size:
        13px;
}


.bestgen-ip__insight-stats dd {

    margin:
        0;

    color:
        #FFFFFF;

    font-family:
        "Playfair Display",
        Georgia,
        serif;

    font-size:
        42px;

    line-height:
        1.05;
}


.bestgen-ip__insight-foot {

    grid-column:
        1 / -1;

    padding-top:
        16px;

    border-top:
        1px solid rgba(255, 255, 255, .22);

    color:
        rgba(255, 255, 255, .88) !important;

    font-size:
        13px !important;
}


/* ==========================================================
   GREEN DATA
========================================================== */

.bestgen-ip__green {

    width:
        100%;

    margin:
        0 0 22px;

    padding:
        32px 34px;
}


.bestgen-ip__green-title {

    margin:
        0 0 24px;

    color:
        #FFFFFF;

    font-size:
        29px;

    line-height:
        1.18;
}


.bestgen-ip__green-stat {

    padding-top:
        18px;

    border-top:
        1px solid rgba(255, 255, 255, .24);
}


.bestgen-ip__green-value {

    color:
        #FFFFFF;

    font-family:
        "Playfair Display",
        Georgia,
        serif;

    font-size:
        32px;
}


.bestgen-ip__green-label {

    margin:
        8px 0 0 !important;

    color:
        #FFFFFF;

    font-size:
        15px;

    font-weight:
        600;
}


.bestgen-ip__green-note {

    margin:
        5px 0 0 !important;

    color:
        rgba(255, 255, 255, .90);

    font-size:
        14px;
}


/* ==========================================================
   TABLE WRAPPER
========================================================== */

.bestgen-ip__table-wrap {

    width:
        100%;

    max-width:
        100%;

    min-width:
        0;

    overflow-x:
        auto;

    background:
        #FFFFFF;

    border:
        1px solid var(--bg-border);

    border-radius:
        4px;

    -webkit-overflow-scrolling:
        touch;
}


/* ==========================================================
   TABLE
========================================================== */

.bestgen-ip__table {

    width:
        100%;

    min-width:
        680px;

    margin:
        0;

    border:
        0;

    border-collapse:
        collapse;

    color:
        var(--bg-body);

    font-family:
        "Poppins",
        Arial,
        sans-serif;

    font-size:
        14px;

    line-height:
        1.5;
}


.bestgen-ip__table th,
.bestgen-ip__table td {

    padding:
        14px 16px;

    border:
        0;

    border-bottom:
        1px solid var(--bg-border);

    background:
        transparent;

    text-align:
        left;

    vertical-align:
        middle;
}


.bestgen-ip__table thead th {

    background:
        rgba(138, 149, 131, .10);

    color:
        var(--bg-text);

    font-size:
        13px;

    font-weight:
        600;
}


.bestgen-ip__table tbody th {

    color:
        var(--bg-text);

    font-weight:
        600;
}


.bestgen-ip__table .is-num {

    text-align:
        right;

    font-variant-numeric:
        tabular-nums;

    white-space:
        nowrap;
}


.bestgen-ip__table tbody tr:hover {

    background:
        rgba(138, 149, 131, .055);
}


/* ==========================================================
   CAPTION
========================================================== */

.bestgen-ip__caption {

    padding:
        17px 16px 14px;

    caption-side:
        top;

    color:
        var(--bg-text);

    font-size:
        15px;

    font-weight:
        600;

    text-align:
        left;
}


/* ==========================================================
   SORT BUTTONS
========================================================== */

.bestgen-ip__table thead button {

    display:
        inline-flex;

    align-items:
        center;

    gap:
        5px;

    margin:
        0;

    padding:
        0;

    border:
        0;

    background:
        transparent !important;

    color:
        inherit !important;

    font:
        inherit;

    cursor:
        pointer;
}


.bestgen-ip__table thead button::after {

    content:
        "↕";

    font-size:
        13px;

    opacity:
        .55;
}


.bestgen-ip__table th[aria-sort="ascending"]
button::after {

    content:
        "↑";

    opacity:
        1;
}


.bestgen-ip__table th[aria-sort="descending"]
button::after {

    content:
        "↓";

    opacity:
        1;
}


/* ==========================================================
   BEZIRKE CARDS
========================================================== */

#bezirke
.bestgen-ip__split
> .bestgen-ip__card {

    padding:
        24px;

    overflow:
        hidden;

    background:
        #FFFFFF;

    border:
        1px solid var(--bg-border);

    border-radius:
        5px;

    box-shadow:
        0 12px 34px
        rgba(43, 50, 44, .035);
}


/* ==========================================================
   BEZIRKE TABLE
   NO HORIZONTAL SCROLL
========================================================== */

#bezirke
.bestgen-ip__table-wrap {

    width:
        100%;

    max-width:
        100%;

    min-width:
        0;

    overflow-x:
        hidden;

    border:
        1px solid var(--bg-border);
}


#bezirke
.bestgen-ip__table {

    width:
        100%;

    max-width:
        100%;

    min-width:
        0 !important;

    table-layout:
        fixed;
}


#bezirke
.bestgen-ip__table th:first-child,
#bezirke
.bestgen-ip__table td:first-child {

    width:
        40%;

    white-space:
        normal;
}


#bezirke
.bestgen-ip__table th:nth-child(2),
#bezirke
.bestgen-ip__table td:nth-child(2) {

    width:
        30%;
}


#bezirke
.bestgen-ip__table th:nth-child(3),
#bezirke
.bestgen-ip__table td:nth-child(3) {

    width:
        30%;
}


#bezirke
.bestgen-ip__table th:nth-child(2),
#bezirke
.bestgen-ip__table th:nth-child(3),
#bezirke
.bestgen-ip__table td:nth-child(2),
#bezirke
.bestgen-ip__table td:nth-child(3) {

    text-align:
        right;
}


/* ==========================================================
   MAP TOGGLE
========================================================== */

.bestgen-ip__toggle {

    display:
        inline-flex;

    margin:
        0 0 20px;

    border:
        1px solid var(--bg-border);

    border-radius:
        4px;

    overflow:
        hidden;
}


.bestgen-ip__toggle button {

    min-height:
        44px;

    padding:
        0 18px;

    border:
        0;

    border-right:
        1px solid var(--bg-border);

    background:
        #FFFFFF;

    color:
        var(--bg-text);

    font-family:
        "Poppins",
        Arial,
        sans-serif;

    font-size:
        14px;

    font-weight:
        600;

    cursor:
        pointer;
}


.bestgen-ip__toggle button:last-child {

    border-right:
        0;
}


.bestgen-ip__toggle button:hover {

    background:
        rgba(138, 149, 131, .10);
}


.bestgen-ip__toggle button[aria-pressed="true"] {

    background:
        #8A9583;

    color:
        #FFFFFF;
}


/* ==========================================================
   MAP
========================================================== */

.bestgen-ip__map {

    display:
        block;

    width:
        100%;

    max-width:
        100%;

    height:
        auto;

    margin:
        0;

    background:
        var(--bg-light);

    border-radius:
        4px;
}


.bestgen-ip__map path {

    stroke:
        #FFFFFF;

    stroke-width:
        2.5;

    stroke-linejoin:
        round;

    cursor:
        pointer;

    transition:
        filter .2s ease,
        stroke .2s ease,
        opacity .2s ease;
}


/*
   Hover / selected keeps white borders.
   Overlay itself is handled by SVG filter
   from bezirke.php.
*/

.bestgen-ip__map path:hover,
.bestgen-ip__map path.is-active,
.bestgen-ip__map path:focus-visible {

    stroke:
        #FFFFFF;

    stroke-width:
        2.5;
}


.bestgen-ip__map text {

    fill:
        var(--bg-text);

    font-family:
        "Poppins",
        Arial,
        sans-serif;

    font-size:
        20px;

    font-weight:
        600;

    paint-order:
        stroke;

    stroke:
        rgba(255, 255, 255, .94);

    stroke-width:
        5px;

    pointer-events:
        none;
}


/* ==========================================================
   MAP LEGEND
========================================================== */

.bestgen-ip__map-legend {

    width:
        100%;

    display:
        grid;

    grid-template-columns:
        auto
        minmax(100px, 1fr)
        auto;

    gap:
        12px;

    align-items:
        center;

    margin:
        18px 0 0;

    color:
        var(--bg-body);

    font-size:
        13px;
}


.bestgen-ip__map-legend i {

    width:
        100%;

    height:
        8px;

    background:
        linear-gradient(
            90deg,
            rgba(138,149,131,.18) 0%,
            rgba(138,149,131,.45) 35%,
            rgba(138,149,131,.72) 68%,
            #8A9583 100%
        );
}


/* ==========================================================
   MAP INFO
========================================================== */

.bestgen-ip__map-info {

    margin:
        18px 0 0;

    padding:
        16px 17px;

    border-left:
        3px solid #8A9583;

    background:
        var(--bg-light);

    color:
        var(--bg-body);

    font-size:
        14px;

    line-height:
        1.6;
}


/* ==========================================================
   CHART
========================================================== */

.bestgen-ip__chart {

    width:
        100%;

    max-width:
        100%;

    min-width:
        0;

    margin:
        0;
}


.bestgen-ip__chart-scroll {

    width:
        100%;

    max-width:
        100%;

    overflow-x:
        auto;

    -webkit-overflow-scrolling:
        touch;
}


.bestgen-ip__chart-svg {

    display:
        block;

    width:
        100%;

    max-width:
        100%;

    min-width:
        540px;

    height:
        auto;
}


.bestgen-ip__chart-tick {

    fill:
        var(--bg-body);

    font-family:
        "Poppins",
        Arial,
        sans-serif;

    font-size:
        13px;
}


.bestgen-ip__chart-end {

    font-family:
        "Poppins",
        Arial,
        sans-serif;

    font-size:
        13px;

    font-weight:
        600;
}


/* ==========================================================
   CHART LEGEND
========================================================== */

.bestgen-ip__legend {

    display:
        flex;

    flex-wrap:
        wrap;

    gap:
        9px 22px;

    margin:
        16px 0 0;

    padding:
        0;

    list-style:
        none;

    color:
        var(--bg-text);

    font-size:
        14px;
}


/* ==========================================================
   DETAILS
========================================================== */

.bestgen-ip__details {

    margin:
        20px 0 0;

    border-top:
        1px solid var(--bg-border);
}


.bestgen-ip__details summary {

    padding:
        16px 0 4px;

    color:
        var(--bg-text);

    font-size:
        14px;

    font-weight:
        600;

    cursor:
        pointer;
}


/* ==========================================================
   FAQ
========================================================== */

.bestgen-ip__faq {

    width:
        100%;

    border-top:
        1px solid var(--bg-border);
}


.bestgen-ip__faq details {

    width:
        100%;

    margin:
        0;

    border-bottom:
        1px solid var(--bg-border);

    background:
        #FFFFFF;
}


.bestgen-ip__faq summary {

    width:
        100%;

    display:
        grid;

    grid-template-columns:
        minmax(0, 1fr)
        38px;

    gap:
        18px;

    align-items:
        center;

    min-height:
        82px;

    padding:
        20px 8px;

    list-style:
        none;

    cursor:
        pointer;
}


.bestgen-ip__faq summary::-webkit-details-marker {

    display:
        none;
}


.bestgen-ip__faq summary::after {

    content:
        "+";

    width:
        34px;

    height:
        34px;

    display:
        flex;

    align-items:
        center;

    justify-content:
        center;

    justify-self:
        end;

    border:
        1px solid rgba(138, 149, 131, .28);

    border-radius:
        50%;

    color:
        #8A9583;

    font-size:
        22px;
}


.bestgen-ip__faq details[open]
summary::after {

    content:
        "−";
}


.bestgen-ip__faq details[open]
summary {

    background:
        rgba(138, 149, 131, .10);
}


.bestgen-ip__faq summary h3 {

    margin:
        0;

    color:
        var(--bg-text);

    font-family:
        "Poppins",
        Arial,
        sans-serif;

    font-size:
        17px;

    font-weight:
        500;
}


.bestgen-ip__faq details > div {

    max-width:
        980px;

    padding:
        2px 58px 28px 8px;

    color:
        var(--bg-body);

    font-size:
        15px;

    line-height:
        1.72;
}


/* ==========================================================
   CTA
========================================================== */

.bestgen-ip__cta {

    width:
        100%;

    display:
        grid;

    grid-template-columns:
        minmax(0, 1fr)
        auto;

    gap:
        clamp(40px, 6vw, 90px);

    align-items:
        center;
}


.bestgen-ip--cta
.bestgen-ip__eyebrow {

    color:
        rgba(255, 255, 255, .82);
}


.bestgen-ip--cta
.bestgen-ip__title {

    color:
        #FFFFFF;
}


.bestgen-ip--cta
.bestgen-ip__intro {

    margin-top:
        20px;

    color:
        rgba(255, 255, 255, .92);
}


.bestgen-ip
.bestgen-ip__btn,
.bestgen-ip
.bestgen-ip__btn:visited {

    min-height:
        50px;

    display:
        inline-flex;

    align-items:
        center;

    justify-content:
        center;

    padding:
        0 24px;

    border:
        1px solid var(--bg-gold);

    border-radius:
        4px;

    background:
        var(--bg-gold);

    color:
        #FFFFFF !important;

    font-size:
        14px;

    font-weight:
        600;

    white-space:
        nowrap;
}


.bestgen-ip
.bestgen-ip__btn:hover {

    background:
        var(--bg-gold-hover);

    border-color:
        var(--bg-gold-hover);
}


/* ==========================================================
   TABLET
========================================================== */

@media (max-width: 1000px) {

    #bezirke
    .bestgen-ip__split {

        grid-template-columns:
            1fr;
    }


    #bezirke
    .bestgen-ip__table th:first-child,
    #bezirke
    .bestgen-ip__table td:first-child {

        width:
            44%;
    }


    #bezirke
    .bestgen-ip__table th:nth-child(2),
    #bezirke
    .bestgen-ip__table td:nth-child(2),
    #bezirke
    .bestgen-ip__table th:nth-child(3),
    #bezirke
    .bestgen-ip__table td:nth-child(3) {

        width:
            28%;
    }
}


/* ==========================================================
   MOBILE
========================================================== */

@media (max-width: 767px) {

    #bezirke
    .bestgen-ip__split
    > .bestgen-ip__card {

        padding:
            20px;
    }


    /* Bezirke table */

    #bezirke
    .bestgen-ip__table-wrap {

        overflow-x:
            hidden !important;
    }


    #bezirke
    .bestgen-ip__table {

        width:
            100% !important;

        min-width:
            0 !important;

        table-layout:
            fixed;
    }


    #bezirke
    .bestgen-ip__table th,
    #bezirke
    .bestgen-ip__table td {

        padding:
            12px 8px;

        font-size:
            13px;
    }


    #bezirke
    .bestgen-ip__table th:first-child,
    #bezirke
    .bestgen-ip__table td:first-child {

        width:
            42%;
    }


    #bezirke
    .bestgen-ip__table th:nth-child(2),
    #bezirke
    .bestgen-ip__table td:nth-child(2),
    #bezirke
    .bestgen-ip__table th:nth-child(3),
    #bezirke
    .bestgen-ip__table td:nth-child(3) {

        width:
            29%;
    }


    #bezirke
    .bestgen-ip__table thead button {

        gap:
            3px;

        white-space:
            normal;

        line-height:
            1.3;
    }


    /* Map */

    .bestgen-ip__map text {

        font-size:
            25px;

        stroke-width:
            7px;
    }


    /* Charts fit mobile */

    .bestgen-ip__chart-scroll {

        overflow-x:
            hidden;

        width:
            100%;
    }


    .bestgen-ip__chart-svg {

        width:
            100% !important;

        max-width:
            100% !important;

        min-width:
            0 !important;

        height:
            auto !important;
    }


    .bestgen-ip__chart-tick,
    .bestgen-ip__chart-end {

        font-size:
            12px;
    }


    /* FAQ */

    .bestgen-ip__faq summary {

        grid-template-columns:
            minmax(0, 1fr)
            32px;

        gap:
            12px;

        padding:
            17px 4px;
    }


    .bestgen-ip__faq summary h3 {

        font-size:
            15px;
    }


    .bestgen-ip__faq details > div {

        max-width:
            none;

        padding:
            2px 38px 24px 4px;

        font-size:
            14px;
    }


    /* CTA */

    .bestgen-ip__cta {

        grid-template-columns:
            1fr;

        gap:
            28px;
    }


    .bestgen-ip
    .bestgen-ip__btn {

        width:
            100%;
    }
}


/* ==========================================================
   SMALL MOBILE
========================================================== */

@media (max-width: 420px) {

    #bezirke
    .bestgen-ip__split
    > .bestgen-ip__card {

        padding:
            16px;
    }


    #bezirke
    .bestgen-ip__table th,
    #bezirke
    .bestgen-ip__table td {

        padding:
            11px 6px;

        font-size:
            13px;
    }


    #bezirke
    .bestgen-ip__table th:first-child,
    #bezirke
    .bestgen-ip__table td:first-child {

        width:
            40%;
    }


    #bezirke
    .bestgen-ip__table th:nth-child(2),
    #bezirke
    .bestgen-ip__table td:nth-child(2),
    #bezirke
    .bestgen-ip__table th:nth-child(3),
    #bezirke
    .bestgen-ip__table td:nth-child(3) {

        width:
            30%;
    }


    .bestgen-ip__map-legend {

        gap:
            7px;
    }
}


/* ==========================================================
   REDUCED MOTION
========================================================== */

@media (prefers-reduced-motion: reduce) {

    .bestgen-ip *,
    .bestgen-ip *::before,
    .bestgen-ip *::after {

        transition:
            none !important;

        animation:
            none !important;
    }
}

/* ==========================================================
   STARTSEITE · MARKTDATEN TEASER
   Shortcode: [bestgen_marktdaten_home]
========================================================== */

.bestgen-home-market,
.bestgen-home-market * {
    box-sizing: border-box;
}

.bestgen-home-market {
    width: 100%;
    margin: 0;
    padding: 58px max(46px, calc((100vw - 1600px) / 2));
    background: #F6F4F0;
    box-shadow: 0 0 0 100vmax #F6F4F0;
    clip-path: inset(0 -100vmax);
    color: #5F6870;
    font-family: "Poppins", Arial, sans-serif;
}

.bestgen-home-market__inner {
    width: 100%;
    display: grid;
    grid-template-columns: minmax(300px, .8fr) minmax(0, 1.55fr);
    gap: clamp(48px, 7vw, 110px);
    align-items: start;
}

.bestgen-home-market__copy,
.bestgen-home-market__data {
    min-width: 0;
}

.bestgen-home-market__eyebrow {
    display: block;
    margin: 0 0 10px;
    color: #2B322C;
    font-size: 15px;
    font-weight: 500;
    line-height: 1.35;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.bestgen-home-market__title {
    margin: 0 0 16px;
    color: #171A17;
    font-family: "Playfair Display", Georgia, serif;
    font-size: clamp(34px, 3vw, 48px);
    font-weight: 500;
    line-height: 1.08;
    letter-spacing: -.018em;
}

.bestgen-home-market__text {
    max-width: 520px;
    margin: 0 0 28px;
    color: #737873;
    font-size: 17px;
    line-height: 1.58;
}

.bestgen-home-market__button,
.bestgen-home-market__button:visited {
    min-height: 48px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 22px;
    border: 1px solid #C48632;
    border-radius: 2px;
    background: #C48632;
    color: #FFFFFF !important;
    font-size: 14px;
    font-weight: 500;
    line-height: 1;
    text-decoration: none !important;
    transition: background .2s ease, border-color .2s ease;
}

.bestgen-home-market__button:hover {
    border-color: #A66F22;
    background: #A66F22;
}

.bestgen-home-market__button:focus-visible,
.bestgen-home-market a:focus-visible {
    outline: 2px solid #8A9583;
    outline-offset: 3px;
}

.bestgen-home-market__table-wrap {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.bestgen-home-market__table {
    width: 100%;
    min-width: 560px;
    margin: 0;
    border: 0;
    border-collapse: collapse;
    color: #303833;
    font-family: "Poppins", Arial, sans-serif;
    font-size: 14px;
    line-height: 1.45;
    font-variant-numeric: tabular-nums;
}

.bestgen-home-market__table th,
.bestgen-home-market__table td {
    padding: 16px 16px;
    border: 0;
    border-bottom: 1px solid rgba(43, 50, 44, .14);
    background: transparent;
    text-align: left;
    vertical-align: middle;
}

.bestgen-home-market__table thead th {
    padding-top: 9px;
    padding-bottom: 13px;
    border-bottom: 2px solid #2B322C;
    color: #74766F;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    white-space: nowrap;
}

.bestgen-home-market__table tbody th {
    color: #2B322C;
    font-weight: 600;
}

.bestgen-home-market__table td:nth-child(2),
.bestgen-home-market__table td:nth-child(3),
.bestgen-home-market__table thead th:nth-child(2),
.bestgen-home-market__table thead th:nth-child(3) {
    text-align: right;
}

.bestgen-home-market__table tbody tr:hover {
    background: rgba(138, 149, 131, .055);
}

.bestgen-home-market__meta {
    margin: 18px 0 0;
    color: #69716B;
    font-size: 12px;
    line-height: 1.55;
}

.bestgen-home-market__meta a,
.bestgen-home-market__meta a:visited {
    color: #69716B;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 2px;
}

.bestgen-home-market__meta a:hover {
    color: #8A9583;
}

@media (max-width: 1200px) {
    .bestgen-home-market {
        padding-right: 32px;
        padding-left: 32px;
    }

    .bestgen-home-market__inner {
        gap: 42px;
    }
}

@media (max-width: 900px) {
    .bestgen-home-market__inner {
        grid-template-columns: 1fr;
        gap: 36px;
    }

    .bestgen-home-market__text {
        max-width: 720px;
    }
}

@media (max-width: 767px) {
    .bestgen-home-market {
        padding: 44px 20px;
    }

    .bestgen-home-market__title {
        font-size: 36px;
    }

    .bestgen-home-market__text {
        font-size: 16px;
    }

    .bestgen-home-market__button,
    .bestgen-home-market__button:visited {
        width: 100%;
    }

    .bestgen-home-market__table {
        min-width: 0;
        table-layout: fixed;
        font-size: 13px;
    }

    .bestgen-home-market__table th,
    .bestgen-home-market__table td {
        padding: 13px 8px;
    }

    .bestgen-home-market__table thead th {
        font-size: 10px;
        white-space: normal;
        line-height: 1.3;
    }

    .bestgen-home-market__table th:first-child,
    .bestgen-home-market__table td:first-child {
        width: 40%;
    }

    .bestgen-home-market__table th:nth-child(2),
    .bestgen-home-market__table td:nth-child(2),
    .bestgen-home-market__table th:nth-child(3),
    .bestgen-home-market__table td:nth-child(3) {
        width: 30%;
    }
}

@media (max-width: 420px) {
    .bestgen-home-market {
        padding-right: 16px;
        padding-left: 16px;
    }

    .bestgen-home-market__title {
        font-size: 33px;
    }
}

/* ==========================================================
   IMMOBILIENBEWERTUNG · MARKTDATEN RECHTE SEITE
   Shortcode: [bestgen_bewertung_marktdaten]
   Das Foto / die linke Spalte bleibt in Elementor.
========================================================== */

.bestgen-valuation-market,
.bestgen-valuation-market * {
    box-sizing: border-box;
}

.bestgen-valuation-market {
    width: 100%;
    margin: 0;
    color: #313733;
    background: #FFFFFF;
    font-family: "Poppins", Arial, sans-serif;
}

.bestgen-valuation-market__intro {
    padding: clamp(34px, 4.5vw, 62px) clamp(24px, 4vw, 54px) clamp(28px, 3.5vw, 44px);
}

.bestgen-valuation-market__eyebrow {
    display: block;
    margin: 0 0 22px;
    color: #1F2421;
    font-size: 15px;
    font-weight: 500;
    line-height: 1.35;
    letter-spacing: .02em;
    text-transform: uppercase;
}

.bestgen-valuation-market__title {
    margin: 0 0 24px;
    color: #151815;
    font-family: "Playfair Display", Georgia, serif;
    font-size: clamp(34px, 3.2vw, 49px);
    font-weight: 500;
    line-height: 1.08;
    letter-spacing: -.02em;
}

.bestgen-valuation-market__lead {
    max-width: 850px;
    margin: 0;
    color: #737873;
    font-size: 16px;
    line-height: 1.58;
}

.bestgen-valuation-market__stats {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    border-top: 1px solid rgba(43, 50, 44, .14);
    border-bottom: 1px solid rgba(43, 50, 44, .14);
}

.bestgen-valuation-market__stat {
    min-width: 0;
    margin: 0;
    padding: 24px clamp(20px, 2.4vw, 34px) 28px;
    border-left: 1px solid rgba(43, 50, 44, .14);
}

.bestgen-valuation-market__stat:first-child {
    border-left: 0;
}

.bestgen-valuation-market__number {
    display: block;
    margin: 0 0 8px;
    color: #303632;
    font-size: clamp(27px, 2.35vw, 35px);
    font-weight: 500;
    line-height: 1.05;
    letter-spacing: -.02em;
    font-variant-numeric: tabular-nums;
}

.bestgen-valuation-market__number data {
    color: inherit;
    font: inherit;
}

.bestgen-valuation-market__stat-title {
    margin: 0 0 5px;
    color: #343A36;
    font-family: "Poppins", Arial, sans-serif;
    font-size: 14px;
    font-weight: 500;
    line-height: 1.45;
}

.bestgen-valuation-market__stat p {
    margin: 0;
    color: #4F5651;
    font-size: 14px;
    line-height: 1.48;
}

.bestgen-valuation-market__foot {
    padding: clamp(30px, 3.6vw, 48px) clamp(24px, 4vw, 54px) clamp(28px, 3.6vw, 46px);
}

.bestgen-valuation-market__context {
    margin: 0 0 28px;
    color: #3F4641;
    font-size: 15px;
    line-height: 1.58;
}

.bestgen-valuation-market__source {
    margin: 0;
    color: #656C67;
    font-size: 11px;
    line-height: 1.55;
}

.bestgen-valuation-market__source a,
.bestgen-valuation-market__source a:visited {
    color: inherit;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 2px;
}

.bestgen-valuation-market__source a:hover {
    color: #8A9583;
}

@media (max-width: 1050px) {
    .bestgen-valuation-market__intro,
    .bestgen-valuation-market__foot {
        padding-right: 30px;
        padding-left: 30px;
    }

    .bestgen-valuation-market__stat {
        padding-right: 22px;
        padding-left: 22px;
    }
}

@media (max-width: 767px) {
    .bestgen-valuation-market__intro {
        padding: 36px 20px 30px;
    }

    .bestgen-valuation-market__eyebrow {
        margin-bottom: 16px;
        font-size: 13px;
    }

    .bestgen-valuation-market__title {
        margin-bottom: 18px;
        font-size: 35px;
    }

    .bestgen-valuation-market__lead {
        font-size: 15px;
    }

    .bestgen-valuation-market__stats {
        grid-template-columns: 1fr;
    }

    .bestgen-valuation-market__stat,
    .bestgen-valuation-market__stat:first-child {
        padding: 23px 20px 25px;
        border-left: 0;
        border-top: 1px solid rgba(43, 50, 44, .14);
    }

    .bestgen-valuation-market__stat:first-child {
        border-top: 0;
    }

    .bestgen-valuation-market__foot {
        padding: 30px 20px 34px;
    }
}

/* Dataset 2: source metadata wraps on narrow screens without widening tables. */
.bestgen-ip__record-meta {
    display: block;
    margin-top: .4rem;
    font: 400 11px/1.5 Poppins, sans-serif;
    color: inherit;
    white-space: normal;
    overflow-wrap: anywhere;
    max-width: 32rem;
}
.bestgen-ip__record-meta a { color: inherit; text-decoration: underline; }
.bestgen-ip__na { white-space: nowrap; }
.bestgen-ip button:focus-visible, .bestgen-ip a:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 3px;
}
