/* Seiten deren letzte Section den Body-Grau-Hintergrund zeigt (m32_team_cta,
   m45_objekte_listing, m46_referenzen_listing sind alle transparent → body #F7F7F7) */
body.page-id-565 { --hs-footer-vcut-bg: #F7F7F7; } /* Startseite */
body.page-id-562 { --hs-footer-vcut-bg: #F7F7F7; } /* Referenzen */
body.page-id-541 { --hs-footer-vcut-bg: #F7F7F7; } /* Aktuelle Objekte */
body.page-id-520 { --hs-footer-vcut-bg: #F7F7F7; } /* Beratung */
body.page-id-511 { --hs-footer-vcut-bg: #F7F7F7; } /* Über uns */
body.page-id-490 { --hs-footer-vcut-bg: #F7F7F7; } /* Leistungen */
/* Kontakt (514) endet mit m10_contact (background: #fff) → Default passt */

/* ===== H&S Footer ===== */
.hs_footer {
    position: relative;
    /* Der V-Cut im clip-path von .hs_footer_main zeigt .hs_footer dahinter.
       --hs-footer-vcut-bg steuert diese Farbe — Default #fff (weisse Section).
       Seiten mit dunkler letzter Section setzen:
         body.page-xyz { --hs-footer-vcut-bg: #303A46; }
       oder per Inline-Style am <body>. */
    background: var(--hs-footer-vcut-bg, #fff);
    color: #fff;
    font-family: var(--hs-font-body);
    font-size: 16px;
    line-height: 1.5;
    letter-spacing: 0.03em;
}
.hs_footer a {
    color: #fff;
    text-decoration: none;
    transition: color 0.3s ease;
}
.hs_footer a:hover { color: var(--hs-gold); }

/* Footer-Container: aeussere Kante bei 97px (= halbe Container-Differenz vom
   Viewport-Rand). Innen-Content liegt nach Figma bei x=226 — das wird ueber
   weitere Inset auf den Spalten/Bar selbst erreicht, nicht hier auf dem
   .hs_container Wrapper, sonst doppelt geinset. */
.hs_footer .hs_container {
    max-width: none;
    width: 100%;
    padding-left: clamp(0px, 5vw, 97px);
    padding-right: clamp(0px, 5vw, 97px);
}

/* === Top-Section ===
   V-Cut oben in der Mitte (eingehender Pfeil). Die flachen Eckzonen richten sich
   an der Flucht des m32 Gold-Elements (Team CTA) aus, das mit
   left/right: clamp(0px, 2vw, 40px) am Viewport ansetzt — also identischer Wert. */
.hs_footer_main {
    position: relative;
    background: #303A46;
    padding: clamp(100px, 8vw, 140px) 0 clamp(60px, 5vw, 90px);
    overflow: hidden;
    /* Flach-Inset fluchtet mit der Bar (5vw/97) — der V-Cut-Beginn liegt damit
       exakt unter der Bar-Kante / m32-Gold-Container-Kante. */
    --hs-vcut-flat: clamp(0px, 5vw, 97px);
    --hs-vcut-depth: 50px;
    clip-path: polygon(
        0 0,
        var(--hs-vcut-flat) 0,
        50% var(--hs-vcut-depth),
        calc(100% - var(--hs-vcut-flat)) 0,
        100% 0,
        100% 100%,
        0 100%
    );
}
@media (max-width: 1199.98px) {
    .hs_footer_main { --hs-vcut-depth: 40px; }
}
@media (max-width: 767.98px) {
    .hs_footer_main { --hs-vcut-depth: 30px; }
}
.hs_footer_inner {
    position: relative;
    z-index: 1;
}

/* Scroll-to-Top: identisch zur Hero-Scroll-Box (.m25_hero_scroll), ragt aus dem Footer hinaus.
   Selector .hs_footer .hs_footer_arrow (0,1,1) — gleiche Spezifitaet wie .hs_footer a damit
   die Background-Transition gewinnt (steht spaeter in der CSS). */
.hs_footer .hs_footer_arrow {
    /* Button-Reset (Element ist jetzt <button> statt <a>) */
    border: 0;
    padding: 0;
    cursor: pointer;
    font: inherit;
    color: inherit;
    /* Original-Styling */
    position: absolute;
    top: -30px;
    /* Right-Inset = Footer-Bar-Inset (clamp(0, 5vw, 97)) — Pfeil fluchtet mit der Bar */
    right: clamp(0px, 5vw, 97px);
    width: 73px;
    height: 91px;
    background: var(--hs-gold);
    display: flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    z-index: 5;
    overflow: hidden;
    transition: background 0.35s ease;
}
.hs_footer .hs_footer_arrow:hover { background: var(--hs-gold-dark); }
.hs_footer_arrow_icon {
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    transition: transform 0.45s cubic-bezier(0.4, 0, 0.2, 1);
}
/* Pfeil bewegt sich auf Hover nach oben (Scroll-to-Top Indikator) */
.hs_footer_arrow:hover .hs_footer_arrow_icon { transform: translateY(-8px); }
.hs_footer_arrow_icon svg { width: 22px; height: 30px; }

.hs_footer_cell { min-width: 0; }

/* === Row 1 (Top): Logo links | 5 Menu-Spalten rechts ===
   Logo-Block sitzt links (Icon ueber Text, beides linksbuendig).
   Daneben die 5 Menue-Spalten in einem horizontalen Grid. */
.hs_footer_row_top {
    display: grid;
    grid-template-columns: minmax(220px, auto) minmax(0, 1fr);
    gap: clamp(40px, 5vw, 100px);
    align-items: start;
    margin-bottom: clamp(30px, 3vw, 50px);
}
.hs_footer_cell_logo {
    display: flex;
    justify-content: flex-start;
    /* Figma: Logo sitzt ueber der Divider-Linie der Menu-Spalten —
       negativer margin-top hebt es entsprechend an. */
    margin-top: clamp(-50px, -2.5vw, -30px);
}

/* === Row 2 (Bottom): Kontakt | Partner | Newsletter - Grid === */
.hs_footer_row_bottom {
    display: grid;
    /* Figma: Adresse links / Partner zentriert / Newsletter (533px field) rechts.
       Partner-Spalte braucht genug Breite damit alle 3 Logos in einer Reihe
       bleiben. Newsletter ~530-600px. */
    grid-template-columns: minmax(260px, 1fr) minmax(0, 2fr) minmax(500px, 1.5fr);
    gap: clamp(30px, 3vw, 60px);
    align-items: center;
}
.hs_footer_logo {
    display: inline-flex;
    align-items: center;
    color: #fff;
    text-decoration: none;
}
.hs_footer_logo_svg {
    width: clamp(220px, 16vw, 320px);
    height: auto;
    display: block;
}

.hs_footer_cell_menus {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.2fr) minmax(0, 1fr) minmax(0, 1.1fr);
    gap: clamp(16px, 2vw, 40px);
    align-items: start;
    /* Figma: duenner Divider OBERHALB der Menue-Spalten (top=249 in 1920),
       startet rechts vom Logo und geht bis zum Bar-Rechts-Rand. Hier ueber
       border-top des Menue-Cell — extends nur ueber die Spalten, nicht ueber
       das Logo. */
    border-top: 1px solid #59616B;
    padding-top: clamp(24px, 2.6vw, 38px);
}

.hs_footer_heading {
    display: block;
    margin: 0 0 16px;
    font-family: var(--hs-font-body);
    font-weight: 300;
    font-size: 14.5px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #ACAFB2;
    line-height: 1.4;
    text-decoration: none;
}
.hs_footer_heading--gap { margin-top: 32px; }
/* Spezifitaet 0,2,1 — schlaegt Parent-Theme `a:visited { color: inherit }`
   (0,1,1) und sorgt dafuer, dass verlinkte Hauptkategorien (Leistungen,
   Referenzen, Ueber Uns, Kontakt anfragen) im gefadeten Grau bleiben. */
.hs_footer a.hs_footer_heading,
.hs_footer a.hs_footer_heading:visited,
.hs_footer a.hs_footer_heading--link,
.hs_footer a.hs_footer_heading--link:visited {
    color: #ACAFB2;
    transition: color 0.3s ease;
}
.hs_footer a.hs_footer_heading:hover,
.hs_footer a.hs_footer_heading--link:hover {
    color: var(--hs-gold);
}

/* Active-State: nur Gold-Einfaerbung — gilt sowohl wenn die Klasse am Heading-Link
   direkt sitzt (Ueber Uns / Kontakt) als auch wenn sie am Column-Wrapper sitzt
   (Aktuelle Objekte = Home, Leistungen). */
.hs_footer a.hs_footer_heading.is-active,
.hs_footer a.hs_footer_heading--link.is-active,
.hs_footer_col.is-active > .hs_footer_heading,
.hs_footer_col.is-active > a.hs_footer_heading--link {
    color: var(--hs-gold);
}
/* Spalte ohne Sub-Liste (z.B. Ueber Uns + Kontakt anfragen) */
.hs_footer_col--links_only .hs_footer_heading { margin-bottom: 0; }

.hs_footer_col ul {
    list-style: none;
    margin: 0;
    padding: 0;
}
.hs_footer_col li { margin-bottom: 6px; }
.hs_footer_col li:last-child { margin-bottom: 0; }

/* Social: Icons rechtsbündig mit Divider-Kante, Heading startet am ersten Icon */
.hs_footer_cell_social {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
}
.hs_footer_cell_social .hs_footer_heading {
    /* Exakt so breit wie die Icons-Row: 3 Icons + 2 Gaps */
    width: calc(3 * clamp(48px, 3.2vw, 59px) + 2 * 12px);
    text-align: left;
}
.hs_footer_social {
    display: flex;
    gap: 12px;
}
/* "a.hs_footer_social_link" Specificity 0,1,1 — schlaegt das generische ".hs_footer a" */
a.hs_footer_social_link {
    width: clamp(48px, 3.2vw, 59px);
    height: clamp(48px, 3.2vw, 59px);
    /* Gold-Fill steht UNTER der Default-BG: Gradient genau 200% hoch + dunkler
       Background-Color als Backplane → falls Sub-Pixel-Rendering minimal an der
       50%-Kante kaputt geht, blockt der solid color jeglichen Goldschein
       am Element-Top ab. */
    background-color: #303A46;
    background-image: linear-gradient(to top, var(--hs-gold) 50%, #303A46 50%);
    background-size: 100% 200%;
    background-position: 0 0;
    background-repeat: no-repeat;
    border: 1px solid #59616B;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    overflow: hidden;
    transition:
        background-position 0.45s cubic-bezier(0.4, 0, 0.2, 1),
        border-color 0.35s ease;
    flex-shrink: 0;
}
.hs_footer_social_link svg {
    display: block;
    width: 60%;
    height: auto;
}
a.hs_footer_social_link:hover {
    border-color: var(--hs-gold);
    background-position: 0 100%;
    color: #fff; /* override .hs_footer a:hover (sonst werden Strokes gold = unsichtbar) */
}

/* === Divider zwischen Menue-Zeile und Bottom-Zeile === */
.hs_footer_divider {
    border: none;
    border-top: 1px solid #59616B;
    margin: 0 0 clamp(30px, 3vw, 50px);
}

/* === Row 2 (Bottom): Cell-spezifische Styles === */
.hs_footer_cell_contact p {
    margin: 0;
    color: #fff;
}
.hs_footer_cell_contact strong { font-weight: 300; }
.hs_footer_muted { color: #ACAFB2; }

/* Partner-Logos (mitte): echte Logo-Bilder (PNG/SVG) aus dem ACF-Repeater */
.hs_footer_cell_partners {
    display: flex;
    flex-wrap: wrap;
    gap: clamp(24px, 3vw, 50px);
    justify-content: center;
    align-items: center;
}
/* Selector .hs_footer .hs_footer_partner (0,2,0) — schlaegt .hs_footer a (0,1,1)
   nicht, deshalb explizit als a.hs_footer_partner (0,1,1) plus weiterer Klasse. */
.hs_footer a.hs_footer_partner {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: opacity 0.25s ease, transform 0.25s ease;
    text-decoration: none;
}
.hs_footer_partner img {
    display: block;
    width: auto;
    height: clamp(30px, 2.4vw, 40px);
    max-width: 220px;
    object-fit: contain;
    object-position: center;
}
a.hs_footer_partner { cursor: pointer; }
a.hs_footer_partner:hover { opacity: 0.8; transform: translateY(-1px); }

/* === Newsletter ===
   Figma 9:120 (Feld 533x62 mit Gold-Outline) + 9:138 (Checkbox 19.46x19.46)
   + 9:148 (weisser Send-Button mit Gold-Pfeil). Placeholder ist mixed-case
   "Ihre E-Mail Adresse" in Soleil Light 16px, letter-spacing 1.2px. */
.hs_footer_newsletter {
    display: flex;
    flex-direction: column;
    gap: 22px;
}

.hs_footer_newsletter_title {
	font-size: 1.3rem;
	font-weight: 700;
}

.hs_footer_newsletter_field {
    position: relative;
    display: flex;
    align-items: stretch;
    border: 1px solid var(--hs-gold);
    height: 62px;
    transition: border-color 0.25s ease, box-shadow 0.25s ease;
}
.hs_footer_newsletter_field:focus-within {
    border-color: #fff;
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.15);
}
.hs_footer_newsletter_field input[type="email"] {
    flex: 1;
    background: transparent;
    border: none;
    outline: none;
    padding: 0 24px 0 38px;
    color: #fff;
    font-family: var(--hs-font-body);
    font-size: 16px;
    font-weight: 300;
    letter-spacing: 0.075em;
    line-height: 1;
    min-width: 0;
}
.hs_footer_newsletter_field input[type="email"]::placeholder {
    color: #fff;
    opacity: 0.7;
    font-size: 16px;
    font-weight: 300;
    letter-spacing: 0.075em;
    text-transform: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.hs_footer_newsletter_btn {
    background: #fff;
    border: none;
    width: 77px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.35s ease;
    flex-shrink: 0;
    position: relative;
    overflow: hidden;
}
.hs_footer_newsletter_btn svg {
    width: 33px;
    height: 10px;
    flex-shrink: 0;
    transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
}
/* Stroke wechselt von gold zu weiss beim Hover — explizite Transition,
   sonst snappt die Farbe ohne Animation. */
.hs_footer_newsletter_btn svg path {
    transition: stroke 0.35s ease;
}
.hs_footer_newsletter_btn:hover { background: var(--hs-gold); }
.hs_footer_newsletter_btn:hover svg { transform: translateX(4px); }
.hs_footer_newsletter_btn:hover svg path { stroke: #fff; }

.hs_footer_newsletter_consent {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    color: #ACAFB2;
    font-size: 14.5px;
    font-weight: 300;
    letter-spacing: 0.04em;
    cursor: pointer;
    line-height: 1.4;
}
.hs_footer_newsletter_consent input[type="checkbox"] {
    appearance: none;
    -webkit-appearance: none;
    width: 19px;
    height: 19px;
    border: 1px solid #fff;
    background: transparent;
    cursor: pointer;
    position: relative;
    margin: 0;
    flex-shrink: 0;
    transition: border-color 0.25s ease, background 0.25s ease;
}
.hs_footer_newsletter_consent:hover input[type="checkbox"] {
    border-color: var(--hs-gold);
}
.hs_footer_newsletter_consent input[type="checkbox"]:checked {
    border-color: var(--hs-gold);
}
.hs_footer_newsletter_consent input[type="checkbox"]:checked::after {
    content: '';
    position: absolute;
    inset: 3px;
    background: var(--hs-gold);
}

/* === Bottom-Bar ===
   Figma: Bar (#1F262E) ist nicht 1920 breit, sondern 1726 (97px Inset links/rechts)
   und sitzt im unteren Bereich des dunklen Footer-Blocks. Der Wrapper haelt den
   dunklen Hintergrund (#303A46), die Bar selbst ist schmaler (margin) und in
   #1F262E. */
.hs_footer_bar_wrap {
    background: #303A46;
    /* Sub-pixel-Overlap mit dem .hs_footer_main verhindert, dass der weisse
       Body-Background bei manchen DPRs als duenner Streifen durchscheint. */
    margin-top: -1px;
    position: relative;
}
.hs_footer_bar {
    background: #1F262E;
    color: #fff;
    font-size: 14.5px;
    font-weight: 300;
    padding: 10px 0;
    margin: 0 clamp(0px, 5vw, 97px);
}
.hs_footer_bar_inner {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    gap: 30px;
    align-items: center;
    max-width: none;
    /* Figma: Bar-Content bei x=226 = 97 (Bar-Margin) + 129 (Inner-Padding).
       Wir nutzen die globale Container-Px-Variable fuer Konsistenz. */
    padding-left: var(--hs-container-px) !important;
    padding-right: var(--hs-container-px) !important;
}
.hs_footer_bar_left { text-align: left; }
.hs_footer_bar_center { text-align: center; }
.hs_footer_bar_right { text-align: right; }
.hs_footer_bar_sep { margin: 0 12px; color: #59616B; }
.hs_footer_bar_center a + a::before { content: '|'; margin: 0 12px; color: #59616B; }

.hs_immo_bewertung_container {
	position: fixed;
	bottom: 25px;
	right: 25px;
	z-index: 6;
}

.hs_immo_bewertung_footer_container {
	display: none;
}

/* === Tablet & Mobile === */
@media (max-width: 1399.98px) {
    /* Bis ~XL noch 5 Spalten, aber kompakter */
    .hs_footer_cell_menus {
        gap: clamp(14px, 1.6vw, 30px);
    }
    .hs_footer_heading,
    .hs_footer_col li a { font-size: 14px; }
}
@media (max-width: 1199.98px) {
    /* LG: Logo eigene Zeile, 5 Spalten darunter */
    .hs_footer_row_top {
        grid-template-columns: 1fr;
        gap: clamp(30px, 4vw, 50px);
    }
}
@media (max-width: 1099.98px) {
    /* Zwischen LG und MD: Newsletter-Spalte darf schmaler werden damit Logos nicht überlappen */
    .hs_footer_row_bottom {
        grid-template-columns: minmax(180px, 1fr) minmax(0, 1.5fr) minmax(360px, 1.5fr);
        gap: clamp(16px, 2vw, 30px);
    }
}
@media (max-width: 991.98px) {
    /* MD: Menue-Spalten in 3-Spalten umbrechen */
    .hs_footer_cell_menus {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 30px 24px;
    }
    .hs_footer_row_bottom {
        grid-template-columns: 1fr;
        gap: 40px;
        align-items: start;
    }
    .hs_footer_cell_partners { justify-content: flex-start; }
}
@media (max-width: 767.98px) {
    /* SM: 2 Spalten */
    .hs_footer_cell_menus {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 26px 18px;
    }
    .hs_footer_bar_inner {
        grid-template-columns: 1fr;
        text-align: center;
        gap: 8px;
    }
    .hs_footer_bar_left,
    .hs_footer_bar_center,
    .hs_footer_bar_right { text-align: center; }
	
	.hs_immo_bewertung_footer_container {
		display: block;
	}
	
	.hs_immo_bewertung_container {
		display: none;
	}
}
@media (max-width: 575.98px) {
    /* XS: 1 Spalte */
    .hs_footer_cell_menus {
        grid-template-columns: 1fr;
        gap: 22px;
    }
    .hs_footer_heading--gap { margin-top: 22px; }
    .hs_footer_arrow {
        width: 56px;
        height: 70px;
        right: 16px;
    }
}
@media (max-width: 375px) {
    .hs_footer_arrow { display: none; }
}

/* === Newsletter-Input: kompakt bis 280px === */
@media (max-width: 575.98px) {
    .hs_footer_newsletter_field { height: 54px; }
    .hs_footer_newsletter_field input[type="email"] {
        padding: 0 16px 0 22px;
        font-size: 14px;
        letter-spacing: 0.05em;
    }
    .hs_footer_newsletter_field input[type="email"]::placeholder {
        font-size: 14px;
        letter-spacing: 0.05em;
    }
    .hs_footer_newsletter_btn { width: 60px; }
}
@media (max-width: 380px) {
    .hs_footer_newsletter_field input[type="email"] {
        padding: 0 10px 0 16px;
        font-size: 13px;
        letter-spacing: 0.03em;
    }
    .hs_footer_newsletter_field input[type="email"]::placeholder {
        font-size: 13px;
        letter-spacing: 0.03em;
    }
    .hs_footer_newsletter_btn { width: 48px; }
    .hs_footer_newsletter_btn svg { width: 18px; height: 18px; }
}

/* -------------------------------------------------------------------------
   Newsletter als CF7-Formular
   CF7 umhuellt Felder mit <span class="wpcf7-form-control-wrap"> und haengt
   eigene Meldungs-Container an. Damit die Footer-Optik gleich bleibt, werden
   die Wrapper transparent gemacht und die Meldungen ins Design geholt.
   ------------------------------------------------------------------------- */

.hs_footer_newsletter .wpcf7-form-control-wrap {
    display: flex;         /* block liesse das Feld nur 22px hoch werden */
    flex: 1;
    min-width: 0;          /* sonst sprengt das Feld den Container bei 280px */
}

/* Das Feld ist im statischen Markup direktes Flex-Kind und wird durch
   align-items: stretch auf volle Hoehe gezogen. Durch den CF7-Wrapper geht
   das verloren — hier wieder herstellen, sonst ist nur ein 22px hoher
   Streifen anklickbar. */
.hs_footer_newsletter_field .wpcf7-form-control-wrap input[type="email"] {
    width: 100%;
    height: 100%;
    align-self: stretch;
}

/* .hs_footer_newsletter_title wird auf Live schon definiert - hier bewusst nicht doppelt */

/* CF7-Einwilligung: eigene <label>-Struktur unsichtbar machen,
   damit die bestehende Checkbox-Optik greift */
.hs_footer_newsletter_consent .wpcf7-acceptance,
.hs_footer_newsletter_consent .wpcf7-list-item {
    display: block;
    margin: 0;
}

.hs_footer_newsletter_consent .wpcf7-list-item label {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    cursor: pointer;
}

/* CF7 setzt bei Pflichtfeld-Fehlern eigene Rahmen — auf Gold statt Rot-Default */
.hs_footer_newsletter .wpcf7-not-valid {
    border-color: #e2b4b4 !important;
}

.hs_footer_newsletter .wpcf7-not-valid-tip {
    margin-top: 6px;
    font-family: var(--hs-font-body);
    font-size: 13px;
    line-height: 1.4;
    color: #e2b4b4;
}

/* Statusmeldung (Erfolg/Fehler) */
.hs_footer_newsletter .wpcf7-response-output {
    margin: 4px 0 0;
    padding: 10px 14px;
    border: 1px solid rgba(255, 255, 255, 0.25);
    font-family: var(--hs-font-body);
    font-size: 14px;
    line-height: 1.5;
    color: #fff;
}

.hs_footer_newsletter form.sent .wpcf7-response-output {
    border-color: var(--hs-gold);
}

/* Spinner mittig statt hinter dem Button */
.hs_footer_newsletter .wpcf7-spinner {
    margin: 8px auto 0;
}

/* project.css setzt .wpcf7-form { display: table } und laedt nach footer.css.
   Bei gleicher Spezifitaet (0,1,0) gewinnt sie, dadurch griffen flex-direction
   und gap nicht mehr. Deshalb hier form.<klasse> = 0,1,1 statt !important.
   Gilt fuer beide Varianten: CF7-Formular und statisches Fallback-Markup. */
form.hs_footer_newsletter {
    display: flex;
    flex-direction: column;
    gap: 22px;
}
