/* =============================================================
   ECB – Elementor Card Boxes  |  style.css
   ============================================================= */

/* ---------------------------------------------------------
   CSS Custom Property Defaults
--------------------------------------------------------- */
.ecb-wrapper {
    --ecb-card-height: 480px;
    --ecb-gap: 6px;
    --ecb-icon-size: 70px;
    --ecb-icon-border-w: 2px;
    --ecb-anim-ms: 500ms;
    --ecb-panel-border: 4px;
    --ecb-close-color: #ffffff;

    /* Per-card vars (set via inline style on each .ecb-card) */
    --ecb-header-bg: #333333;
    --ecb-header-text: #ffffff;
    --ecb-card-border-color: transparent;
    --ecb-card-border-width: 0px;
    --ecb-icon-bg: #222222;
    --ecb-icon-border: #ffffff;
    --ecb-btn-bg: #cc0000;
    --ecb-btn-color: #ffffff;

    /* Set by JS before panel opens */
    --ecb-panel-accent: #ffffff;
    --ecb-origin-x: 50%;
    --ecb-origin-y: 50%;
    --ecb-circle-start: 35px;

    /* 150% langsamer: Animationszeiten × 2.5 */
    --ecb-expand-duration: 2.75s;
    --ecb-shrink-duration: 1.625s;
    --ecb-panel-top: 0px;

    box-sizing: border-box;
    width: 100%;
}

.ecb-wrapper *,
.ecb-wrapper *::before,
.ecb-wrapper *::after {
    box-sizing: inherit;
}

/* ---------------------------------------------------------
   Card Row
--------------------------------------------------------- */
.ecb-card-row {
    display: flex;
    flex-direction: row;
    gap: 6px; /* Fallback; wird von Elementor responsive control überschrieben */
    width: 100%;
    align-items: stretch;
}

/* ---------------------------------------------------------
   Individual Card
--------------------------------------------------------- */
.ecb-card {
    flex: 1 1 0;
    min-width: 0;
    height: var(--ecb-card-height, 480px);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    position: relative;
    cursor: pointer;
    border: var(--ecb-card-border-width) solid var(--ecb-card-border-color);
}

/* ---------------------------------------------------------
   Card — Header Strip
--------------------------------------------------------- */
.ecb-card-header {
    flex-shrink: 0;
    background-color: var(--ecb-header-bg);
    color: var(--ecb-header-text);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 10px 16px;
    min-height: 44px;
}

/* Typografie-Fallbacks in :where() → Spezifität 0,0,0
   Elementors responsive Typography-CSS (0,2,0+) gewinnt immer */
:where(.ecb-card-header-title) {
    font-size: 1rem;
    font-weight: 700;
    line-height: 1;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: inherit;
}

/* ---------------------------------------------------------
   Card — Image Area
--------------------------------------------------------- */
.ecb-card-image {
    flex: 1 1 auto;
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
    background-color: #1a1a1a;
    position: relative;
    /* GPU layer prevents subpixel blurriness from parent transforms */
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
    transform: translateZ(0);
}

/* Individual image height: overrides flex when --ecb-card-image-h is set per card */
.ecb-card[style*="--ecb-card-image-h"] .ecb-card-image {
    flex: 0 0 var(--ecb-card-image-h);
    height: var(--ecb-card-image-h);
    min-height: unset;
}

/* ---------------------------------------------------------
   Card — Bottom Content
   Icon center sits on the image bottom edge.
--------------------------------------------------------- */
.ecb-card-bottom {
    flex-shrink: 0;
    background-color: #111111;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding-top: calc(var(--ecb-icon-size) / 2 + 12px);
    padding-bottom: 18px;
    padding-left: 16px;
    padding-right: 16px;
    gap: 10px;
    position: relative;
}

/* No icon uploaded: remove extra top space reserved for the circle */
.ecb-card-bottom--no-icon {
    padding-top: 18px;
}

/* ---------------------------------------------------------
   Card — Icon Circle
   Absolute so its CENTER sits on the image/bottom boundary.
--------------------------------------------------------- */
.ecb-card-icon-wrap {
    width: var(--ecb-icon-size);
    height: var(--ecb-icon-size);
    border-radius: 50%;
    background: transparent;
    border: none;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    position: absolute;
    top: calc(var(--ecb-icon-size) / -2);
    left: 50%;
    transform: translateX(-50%);
}

.ecb-card-icon {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* ---------------------------------------------------------
   Card — Description
--------------------------------------------------------- */
.ecb-card-description {
    text-align: center;
    margin: 0;
}

:where(.ecb-card-description) {
    color: #ffffff;
    font-size: 0.95rem;
    line-height: 1.3;
    font-weight: 600;
}

/* ---------------------------------------------------------
   Card — Button
--------------------------------------------------------- */
.ecb-card-btn {
    display: inline-block;
    background-color: var(--ecb-btn-bg);
    color: var(--ecb-btn-color);
    border: none;
    cursor: pointer;
    padding: 10px 22px;
    border-radius: 4px;
    white-space: nowrap;
    text-decoration: none;
    text-align: center;
    transition: filter 0.2s ease, transform 0.15s ease;
}

/* Direkt-Link-Karte: ganze Karte klickbar */
.ecb-card[data-direct="1"] {
    cursor: pointer;
}

:where(.ecb-card-btn) {
    font-size: 0.88rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    line-height: 1.4;
}

.ecb-card-btn:hover {
    filter: brightness(1.18);
    transform: translateY(-1px);
}

/* Textfarbe bleibt bei allen Link-Zuständen gleich (kein Theme-Link-Hover) */
.ecb-card-btn:link,
.ecb-card-btn:visited,
.ecb-card-btn:hover,
.ecb-card-btn:focus,
.ecb-card-btn:active {
    color: var(--ecb-btn-color);
}

.ecb-card-btn:active {
    transform: translateY(0);
    filter: brightness(0.95);
}

.ecb-card-btn:focus-visible {
    outline: 3px solid var(--ecb-btn-bg);
    outline-offset: 3px;
}

/* =============================================================
   CIRCLE REVEAL ANIMATION
   The icon circle "opens" into a full-screen portal.
   clip-path starts as the icon circle and expands to 200vmax.
   CSS custom properties --ecb-origin-x/y and --ecb-circle-start
   are set by JS before the animation begins.
   ============================================================= */

/* ----- Backdrop: fills the area OUTSIDE the growing panel animation ----- */
.ecb-panel-backdrop {
    display: none;
    position: fixed;
    top: var(--ecb-panel-top, 0px);
    left: 0;
    right: 0;
    bottom: var(--ecb-panel-bottom, 0px);
    z-index: 99997;
    pointer-events: none;
}

/* ----- Expand Panel: schwebendes Fenster (zentral, breit, Rand bündig) ----- */
.ecb-expand-panel {
    display: none;
    position: fixed;
    top: 2.5vh;
    left: 2.5vh;   /* gleicher Abstand wie Oben/Unten → breiter auf 16:9 */
    right: 2.5vh;
    bottom: 2.5vh;
    margin: auto;
    width: auto;  /* Füllt Raum zwischen den Abständen */
    max-width: none;
    overflow: hidden;
    flex-direction: column;
    z-index: 99998;
    background-color: #ffffff;
    border: var(--ecb-panel-border) solid var(--ecb-panel-accent);
    border-radius: 16px;
    box-shadow: 0 25px 80px rgba(0, 0, 0, 0.35);
    box-sizing: border-box;
}
.ecb-expand-panel.is-open,
.ecb-expand-panel.is-closing {
    display: flex;
}

/* Scrollbereich-Wrapper (für Indikator-Position) */
.ecb-panel-scroll-wrap {
    flex: 1 1 auto;
    min-height: 0;
    position: relative;
    display: flex;
}

/* Scrollbereich: native Scrollbar versteckt, Inhalt bündig nach rechts */
.ecb-panel-scroll {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-width: none;
    -ms-overflow-style: none;
    transition: opacity 0.2s ease;
}
.ecb-panel-scroll::-webkit-scrollbar {
    display: none;
}

/* Schwebende Linie als Scroll-Indikator */
.ecb-scroll-indicator {
    position: absolute;
    right: 6px;
    top: 8px;
    bottom: 8px;
    width: 3px;
    background: rgba(0, 0, 0, 0.06);
    border-radius: 2px;
    pointer-events: none;
    z-index: 2;
}
.ecb-scroll-indicator-thumb {
    position: absolute;
    left: 0;
    right: 0;
    width: 100%;
    background: rgba(0, 0, 0, 0.18);
    border-radius: 2px;
    min-height: 40px;
    transition: transform 0.08s ease-out;
}

/* Circle expand: from icon circle → full viewport */
@keyframes ecb-circle-expand {
    0% {
        clip-path: circle(var(--ecb-circle-start) at var(--ecb-origin-x) var(--ecb-origin-y));
    }
    100% {
        clip-path: circle(200vmax at var(--ecb-origin-x) var(--ecb-origin-y));
    }
}

/* Fade-Out beim Schließen */
@keyframes ecb-fade-out {
    0%   { opacity: 1; }
    100% { opacity: 0; }
}

.ecb-expand-panel.is-open {
    animation: ecb-circle-expand var(--ecb-expand-duration) cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

.ecb-expand-panel.is-closing {
    animation: ecb-fade-out 0.35s ease-out forwards;
}

/* ---------------------------------------------------------
   Expand Panel — Topbar (sticky, 3-column layout)
--------------------------------------------------------- */
.ecb-panel-topbar {
    flex-shrink: 0;
    position: sticky;
    top: 0;
    z-index: 1;
    display: flex;
    flex-direction: row;
    align-items: center;
    padding: 0 20px;
    background-color: #004d9e;
    gap: 12px;
}

/* Left column: Logo — bündig links, kein zusätzliches Padding */
.ecb-topbar-logo {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    align-items: center;
    padding-left: 0;
}

.ecb-topbar-logo img {
    display: block;
    width: auto;
    max-width: 100%;
    object-fit: contain;
}

/* Center column: Icons — position: absolute = exakt mittig (sticky = auch Containing Block) */
.ecb-icon-nav {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    flex-wrap: nowrap;
    pointer-events: auto;
}

/* Right column: Contact info + close button — flex: 1 wie Logo */
.ecb-topbar-right {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 14px;
}

.ecb-topbar-contact {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 5px;
}

/* Bürozeiten block (label + hours stacked) */
.ecb-topbar-hours-group {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 1px;
}

.ecb-topbar-hours-label {
    display: flex;
    align-items: center;
    gap: 5px;
    color: rgba(255, 255, 255, 0.72);
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    white-space: nowrap;
}

.ecb-topbar-hours-label svg {
    width: 13px;
    height: 13px;
    flex-shrink: 0;
    opacity: 0.9;
}

.ecb-topbar-hours {
    color: #ffffff;
    font-size: 1rem;
    font-weight: 600;
    white-space: nowrap;
    letter-spacing: 0.02em;
}

.ecb-topbar-phone {
    display: flex;
    align-items: center;
    gap: 6px;
    color: #ffffff;
    font-size: 1.65rem;  /* +20% (1.375 × 1.2) */
    font-weight: 700;
    text-decoration: none;
    white-space: nowrap;
    transition: opacity 0.18s ease;
    letter-spacing: 0.01em;
}

.ecb-topbar-phone:hover {
    opacity: 0.82;
}

.ecb-topbar-phone svg {
    width: 25px;   /* +20% (21 × 1.2) */
    height: 25px;
    flex-shrink: 0;
}

/* ── Warenkorb-Icon (Topbar) ──────────────────────────────── */

.ecb-cart-icon {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    border: 2px solid rgba(255, 255, 255, 0.4);
    background: transparent;
    text-decoration: none;
    color: #ffffff;
    flex-shrink: 0;
    transition: border-color 0.2s ease, opacity 0.2s ease, transform 0.2s ease;
}

.ecb-cart-icon:hover {
    border-color: rgba(255, 255, 255, 0.9);
    opacity: 0.9;
    transform: translateY(-1px);
}

.ecb-cart-icon svg {
    display: block;
    width: 18px;
    height: 18px;
}

.ecb-cart-count {
    position: absolute;
    top: -4px;
    right: -4px;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 9px;
    background: #ef4444;
    color: #ffffff;
    font-size: 0.68rem;
    font-weight: 700;
    line-height: 18px;
    text-align: center;
    pointer-events: none;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s ease;
}

.ecb-cart-count--hidden {
    transform: scale(0);
    opacity: 0;
}

/* Wrapper enables the tooltip to overflow outside the clipped button */
.ecb-icon-nav-wrap {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
}

/* Icons 15% bigger: 38 × 1.15 ≈ 44px */
.ecb-icon-nav-item {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    padding: 0;
    border: none;
    outline: none;
    background: rgba(255, 255, 255, 0.08);
    cursor: pointer;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: transform 0.28s cubic-bezier(0.34, 1.56, 0.64, 1),
                filter 0.2s ease;
}

.ecb-icon-nav-item:focus,
.ecb-icon-nav-item:focus-visible {
    outline: none;
    box-shadow: none;
}

.ecb-icon-nav-item:hover {
    transform: scale(1.40);
    filter: brightness(1.15);
}

/* Active: subtle glow only – no border, no box-shadow ring */
.ecb-icon-nav-item.is-active {
    transform: scale(1.30);
    filter: drop-shadow(0 0 6px var(--ecb-panel-accent, rgba(255,255,255,0.6)))
            drop-shadow(0 0 2px var(--ecb-panel-accent, rgba(255,255,255,0.4)));
}

.ecb-icon-nav-item.is-active:hover {
    transform: scale(1.44);
}

.ecb-icon-nav-item img {
    display: block;
    flex-shrink: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    pointer-events: none;
}

/* Tooltip label below each nav icon – slide-down fade-in */
.ecb-icon-nav-label {
    position: absolute;
    top: calc(100% + 9px);
    left: 50%;
    transform: translateX(-50%) translateY(-8px);
    background: rgba(10, 10, 10, 0.9);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    color: #ffffff;
    font-size: 0.9rem;
    font-weight: 700;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    padding: 5px 12px;
    border-radius: 7px;
    white-space: nowrap;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.2s ease,
                transform 0.28s cubic-bezier(0.34, 1.56, 0.64, 1);
    z-index: 100;
}

.ecb-icon-nav-wrap:hover .ecb-icon-nav-label {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}

.ecb-panel-close {
    margin-left: 12px;
    flex-shrink: 0;
    align-self: center;
    width: 38px;   /* +20% (32 × 1.2) */
    height: 38px;
    border-radius: 50%;
    border: 2px solid rgba(255,255,255,0.4);
    background: transparent;
    color: var(--ecb-close-color);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: border-color 0.2s ease, opacity 0.2s ease;
}

:where(.ecb-panel-close) {
    font-size: 1.44rem;  /* +20% (1.2 × 1.2) */
    line-height: 1;
}

.ecb-panel-close:hover {
    border-color: rgba(255,255,255,0.9);
    opacity: 0.9;
}

.ecb-panel-close:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 2px;
}

/* ---------------------------------------------------------
   Back Button (internal panel navigation)
--------------------------------------------------------- */
.ecb-panel-back {
    flex-shrink: 0;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    border: 2px solid rgba(255,255,255,0.4);
    background: transparent;
    color: var(--ecb-close-color);
    cursor: pointer;
    display: none;
    align-items: center;
    justify-content: center;
    transition: border-color 0.2s ease, opacity 0.2s ease;
}

.ecb-panel-back svg {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    pointer-events: none;
}

.ecb-panel-back:hover {
    border-color: rgba(255,255,255,0.9);
    opacity: 0.9;
}

.ecb-panel-back:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 2px;
}

/* ---------------------------------------------------------
   Notruf-Bild (sticky rechts)
--------------------------------------------------------- */
.ecb-notruf-btn {
    position: absolute;
    z-index: 10;
    display: block;
    text-decoration: none;
    line-height: 0;
    box-shadow: -4px 0 16px rgba(0, 0, 0, 0.2),
                0 4px 12px rgba(0, 0, 0, 0.15);
    transition: opacity 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

.ecb-notruf-btn:hover {
    transform: scale(1.06);
    opacity: 0.95;
}

.ecb-notruf-btn img {
    display: block;
    width: auto;
    height: auto;
    max-width: 180px;
    max-height: 280px;
}

/* ---------------------------------------------------------
   Template Content Panels
--------------------------------------------------------- */
.ecb-panel-content {
    display: none;
}

.ecb-panel-content.is-active {
    display: block;
}

/* Directional slide-in animations for icon-nav panel switching */
@keyframes ecb-slide-from-right {
    from { opacity: 0; transform: translateX(32px); }
    to   { opacity: 1; transform: translateX(0);    }
}

@keyframes ecb-slide-from-left {
    from { opacity: 0; transform: translateX(-32px); }
    to   { opacity: 1; transform: translateX(0);     }
}

.ecb-panel-content.is-slide-right {
    animation: ecb-slide-from-right 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

.ecb-panel-content.is-slide-left {
    animation: ecb-slide-from-left 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

.ecb-no-template {
    padding: 48px 24px;
    text-align: center;
    color: #888888;
    font-style: italic;
    font-size: 0.9rem;
    border: 1px dashed #444444;
    margin: 16px;
    background: #1a1a1a;
}

/* =============================================================
   Iframe for in-panel page navigation
   Pages load in an iframe so all theme / WooCommerce / plugin
   CSS + JS work exactly as on the normal site.
   ============================================================= */
.ecb-ajax-iframe {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 100%;
    border: none;
    background: #ffffff;
}

/* panelScroll must stretch to fill the panel when hosting an iframe */
.ecb-panel-scroll:has(.ecb-ajax-iframe) {
    display: flex;
    flex-direction: column;
    overflow: hidden;     /* iframe scrolls internally */
}

/* =============================================================
   KARTENOPTIKEN  2 – 3
   Variant styles for the card row.
   Applied via  .ecb-card-style--{name}  on .ecb-wrapper.
   ============================================================= */

/* ② Modern Rund ─────────────────────────────────────────────
   Rounded cards with elevation shadow and glowing icon.
   Works like the default layout but softer + more spatial.
----------------------------------------------------------------*/
.ecb-card-style--rounded .ecb-card {
    border-radius: 20px;
    box-shadow: 0 10px 44px rgba(0, 0, 0, 0.45);
    overflow: hidden;
}

.ecb-card-style--rounded .ecb-card-header {
    border-radius: 20px 20px 0 0;
}

.ecb-card-style--rounded .ecb-card-bottom {
    border-radius: 0 0 20px 20px;
}

.ecb-card-style--rounded .ecb-card-icon-wrap {
    background: transparent;
    box-shadow: none;
}

/* ③ Immersiv ────────────────────────────────────────────────
   Background image fills the full card.
   Header fades from header-color to transparent at the top.
   Content area gradient rises from dark at the bottom.
   Icon circle floats over the image just above the text area.
----------------------------------------------------------------*/
.ecb-card-style--immersive .ecb-card {
    justify-content: space-between;
}

/* Image becomes full-card background */
.ecb-card-style--immersive .ecb-card-image {
    position: absolute;
    inset: 0;
    flex: none;
    z-index: 0;
}

/* Title strip fades into image */
.ecb-card-style--immersive .ecb-card-header {
    position: relative;
    z-index: 1;
    background: linear-gradient(
        to bottom,
        var(--ecb-header-bg) 20%,
        rgba(0, 0, 0, 0) 100%
    );
    padding-bottom: 28px;
}

/* Content area rises from a deep dark gradient */
.ecb-card-style--immersive .ecb-card-bottom {
    position: relative;
    z-index: 1;
    background: linear-gradient(
        to top,
        rgba(0, 0, 0, 0.92) 52%,
        rgba(0, 0, 0, 0)    100%
    );
    padding-top: calc(var(--ecb-icon-size) / 2 + 32px);
}

.ecb-card-style--immersive .ecb-card-bottom--no-icon {
    padding-top: 32px;
}

/* =============================================================
   KARUSSEL-NAVIGATION  (Pfeile + Dots)
   Karussel-Elemente sind auf Desktop unsichtbar,
   auf Mobile werden sie via Media Query eingeblendet.
   ============================================================= */

/* Wrapper: Positionierungskontext für die absolut platzierten Pfeile
   align-self: flex-start verhindert, dass das Widget in Elementor-Flex-Containern
   den ganzen Viewport einnimmt und andere Bereiche überdeckt */
.ecb-wrapper {
    position: relative;
    height: auto;
    min-height: 0;
    align-self: flex-start;
}

/* ---------------------------------------------------------
   Karussel-Pfeilcontainer (absolut über dem Card-Row)
--------------------------------------------------------- */
.ecb-carousel-nav {
    display: none; /* Desktop: versteckt */
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: var(--ecb-card-height, 480px);
    pointer-events: none;
    z-index: 5;
}

.ecb-carousel-btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    pointer-events: all;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    border: none;
    background: rgba(0, 0, 0, 0.52);
    color: #ffffff;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    transition: background 0.2s ease, opacity 0.2s ease;
}

.ecb-carousel-btn:hover {
    background: rgba(0, 0, 0, 0.78);
}

.ecb-carousel-btn:disabled {
    opacity: 0.25;
    pointer-events: none;
}

.ecb-carousel-btn svg {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
    pointer-events: none;
}

.ecb-carousel-btn--prev { left: 10px; }
.ecb-carousel-btn--next { right: 10px; }

/* ---------------------------------------------------------
   Karussel-Punkte
--------------------------------------------------------- */
.ecb-carousel-dots {
    display: none; /* Desktop: versteckt */
    justify-content: center;
    align-items: center;
    gap: 8px;
    padding: 10px 0 4px;
}

.ecb-carousel-dot {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    border: none;
    padding: 0;
    background: rgba(0, 0, 0, 0.2);
    cursor: pointer;
    transition: background 0.22s ease, transform 0.22s ease;
    flex-shrink: 0;
}

.ecb-carousel-dot.is-active {
    background: var(--ecb-carousel-accent, #333333);
    transform: scale(1.4);
}

/* =============================================================
   RESPONSIVE – Mobile Topbar-Anpassungen
   ============================================================= */
@media (max-width: 767px) {

    /* Topbar: 2-zeilig auf Mobile – Logo+Close oben, Icons darunter */
    .ecb-panel-topbar {
        flex-wrap: wrap;
    }

    .ecb-topbar-logo {
        flex: 1 1 auto;
        padding-left: 0;
    }

    .ecb-topbar-right {
        flex: 0 0 auto;
    }

    /* 2. Icons 25% kleiner: 44px → 33px */
    .ecb-icon-nav-item {
        width: 33px;
        height: 33px;
    }

    /* 2.1 Icons: zweite Zeile, zentriert, Kreise ragen nach oben in die Logo-Zeile */
    .ecb-icon-nav {
        position: static; /* zurück ins Flex-Flow für 2-zeiliges Layout */
        transform: none;
        flex: 0 0 100%; /* volle Breite, zweite Zeile */
        justify-content: center;
        /* Kreise ragen nach oben in die Logo-Zeile */
        margin-top: calc(-33px / 2);
        padding-bottom: 6px;
    }
}

/* =============================================================
   RESPONSIVE – Mobile Karussel-Layout
   Breakpoint 767px = Elementor Mobile-Breakpoint
   ============================================================= */
@media (max-width: 767px) {

    /* Card-Row wird zum horizontalen Scroll-Container */
    .ecb-card-row {
        flex-direction: row;
        overflow-x: scroll;
        overflow-y: hidden;
        scroll-snap-type: x mandatory;
        scroll-behavior: smooth;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        -ms-overflow-style: none;
        gap: 0 !important; /* Karussel: Karten müssen lückenlos sein für korrektes Scroll-Snap */
    }

    .ecb-card-row::-webkit-scrollbar {
        display: none;
    }

    /* Jede Karte nimmt genau 100% der Breite ein */
    .ecb-card {
        flex: 0 0 100%;
        width: 100%;
        min-width: 0;
        scroll-snap-align: start;
    }

    /* Pfeile + Dots einblenden */
    .ecb-carousel-nav {
        display: block;
    }

    .ecb-carousel-dots {
        display: flex;
    }
}

/* =============================================================
   STANDALONE SITE-HEADER  (ecb_header widget)
   EIN zusammenhängender Header: Logo links (volle Höhe, bündig),
   obere Zeile (Bürozeiten | Menü mittig | Social rechts),
   untere Zeile (Fachbereich-Icons mittig, Telefon + Warenkorb rechts).
   Inkl. sticky Notruf-Button.
   ============================================================= */
.ecb-hdr {
    --ecb-hdr-icon-size: 46px;
    --ecb-hdr-icon-gap: 12px;
    position: relative;
    box-sizing: border-box;
    width: 100%;
    background-color: #004d9e;
}

.ecb-hdr *,
.ecb-hdr *::before,
.ecb-hdr *::after {
    box-sizing: inherit;
}

.ecb-hdr--sticky {
    position: sticky;
    top: 0;
    z-index: 9990;
}

.ecb-hdr-inner {
    position: relative;
}

/* Logo: absolut links, fuellt die volle Header-Hoehe, buendig */
.ecb-hdr-logo {
    position: absolute;
    left: 24px;
    top: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    z-index: 3;
}

.ecb-hdr-logo a {
    display: inline-flex;
    align-items: center;
    height: 100%;
    line-height: 0;
}

.ecb-hdr-logo img {
    display: block;
    height: 100%;
    width: auto;
    max-width: 100%;
    object-fit: contain;
}

/* Rechte Spalte: die beiden Zeilen */
.ecb-hdr-bars {
    display: flex;
    flex-direction: column;
}

/* Obere Zeile */
.ecb-hdr-top {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    min-height: 38px;
    padding: 0 24px 0 210px;
}

.ecb-hdr-hours {
    display: flex;
    align-items: center;
    gap: 7px;
    color: #ffffff;
    font-size: 0.9rem;
    font-weight: 600;
    white-space: nowrap;
    min-width: 0;
}

.ecb-hdr-hours svg {
    width: 15px;
    height: 15px;
    flex-shrink: 0;
    opacity: 0.9;
}

.ecb-hdr-hours-label {
    opacity: 0.85;
}

/* Menue - absolut mittig zur ganzen Header-Breite */
.ecb-hdr-menu {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    max-width: 60%;
}

.ecb-hdr-menu ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    align-items: center;
    gap: 26px;
    flex-wrap: nowrap;
}

.ecb-hdr-menu li {
    margin: 0;
}

.ecb-hdr-menu a {
    color: #ffffff;
    text-decoration: none;
    font-weight: 600;
    font-size: 0.95rem;
    white-space: nowrap;
    transition: color 0.18s ease, opacity 0.18s ease;
}

.ecb-hdr-menu a:hover,
.ecb-hdr-menu .current-menu-item > a {
    color: #bfe0ff;
}

/* Social rechts */
.ecb-hdr-social {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}

.ecb-hdr-social a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    color: #ffffff;
    background: rgba(255, 255, 255, 0.10);
    text-decoration: none;
    transition: background 0.18s ease, transform 0.18s ease;
}

.ecb-hdr-social a:hover {
    background: rgba(255, 255, 255, 0.22);
    transform: translateY(-1px);
}

.ecb-hdr-social svg {
    width: 18px;
    height: 18px;
    display: block;
}

/* Untere Zeile */
.ecb-hdr-main {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
    min-height: 70px;
    padding: 0 24px 0 210px;
}

/* Fachbereich-Icons - absolut mittig */
.ecb-hdr-nav {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--ecb-hdr-icon-gap);
    flex-wrap: nowrap;
}

.ecb-hdr-nav-wrap {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.ecb-hdr-nav-item {
    width: var(--ecb-hdr-icon-size);
    height: var(--ecb-hdr-icon-size);
    border-radius: 50%;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    background: rgba(255, 255, 255, 0.08);
    text-decoration: none;
    transition: transform 0.28s cubic-bezier(0.34, 1.56, 0.64, 1),
                filter 0.2s ease;
}

.ecb-hdr-nav-item img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    pointer-events: none;
}

.ecb-hdr-nav-item:hover {
    transform: scale(1.40);
    filter: brightness(1.15);
}

.ecb-hdr-nav-item:focus,
.ecb-hdr-nav-item:focus-visible {
    outline: none;
    box-shadow: none;
}

.ecb-hdr-nav-item.is-active {
    transform: scale(1.28);
    filter: drop-shadow(0 0 6px var(--ecb-hdr-glow, rgba(255, 255, 255, 0.7)))
            drop-shadow(0 0 2px var(--ecb-hdr-glow, rgba(255, 255, 255, 0.5)));
}

.ecb-hdr-nav-item.is-active:hover {
    transform: scale(1.42);
}

.ecb-hdr-nav-label {
    position: absolute;
    top: calc(100% + 8px);
    left: 50%;
    transform: translateX(-50%) translateY(-8px);
    background: rgba(10, 10, 10, 0.9);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    color: #ffffff;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    padding: 5px 12px;
    border-radius: 7px;
    white-space: nowrap;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.2s ease,
                transform 0.28s cubic-bezier(0.34, 1.56, 0.64, 1);
    z-index: 100;
}

.ecb-hdr-nav-wrap:hover .ecb-hdr-nav-label {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}

/* Rechts: Telefon + Warenkorb */
.ecb-hdr-right {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-shrink: 0;
}

.ecb-hdr-phone {
    display: flex;
    align-items: center;
    gap: 7px;
    color: #ffffff;
    font-size: 1.5rem;
    font-weight: 700;
    text-decoration: none;
    white-space: nowrap;
    transition: opacity 0.18s ease;
}

.ecb-hdr-phone:hover {
    opacity: 0.82;
}

.ecb-hdr-phone svg {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
}

/* Sticky Notruf-Button - fixed am Viewport-Rand */
.ecb-hdr-notruf {
    position: fixed;
    right: 0;
    top: 30%;
    z-index: 9995;
    display: block;
    line-height: 0;
    text-decoration: none;
    box-shadow: -4px 0 16px rgba(0, 0, 0, 0.2),
                0 4px 12px rgba(0, 0, 0, 0.15);
    transition: transform 0.2s ease, opacity 0.2s ease;
}

.ecb-hdr-notruf:hover {
    transform: scale(1.06);
    opacity: 0.95;
}

.ecb-hdr-notruf img {
    display: block;
    width: auto;
    height: auto;
    max-width: 160px;
    max-height: 300px;
}

/* Responsive */
@media (max-width: 1024px) {
    .ecb-hdr-menu { max-width: 46%; }
    .ecb-hdr-menu ul { gap: 16px; }
}

@media (max-width: 767px) {
    .ecb-hdr-inner {
        display: flex;
        flex-direction: column;
    }

    .ecb-hdr-logo {
        position: static;
        left: auto;
        justify-content: center;
        padding: 8px 0;
    }

    .ecb-hdr-logo a { height: auto; }
    .ecb-hdr-logo img { height: 44px; }

    .ecb-hdr-bars { width: 100%; }

    .ecb-hdr-top,
    .ecb-hdr-main {
        padding-left: 14px;
        padding-right: 14px;
        flex-wrap: wrap;
        justify-content: center;
    }

    .ecb-hdr-menu {
        position: static;
        transform: none;
        max-width: 100%;
        flex: 0 0 100%;
        order: 3;
    }

    .ecb-hdr-menu ul { justify-content: center; flex-wrap: wrap; gap: 14px; }

    .ecb-hdr-nav {
        position: static;
        transform: none;
        flex: 0 0 100%;
        --ecb-hdr-icon-size: 38px;
        justify-content: center;
        margin: 4px 0;
    }

    .ecb-hdr-right { flex: 0 0 100%; justify-content: center; }
    .ecb-hdr-phone { font-size: 1.2rem; }
}
