/* CTA Map Sticky — fully dynamic desktop/mobile quick action panel */
.cta-map-sticky {
    position: fixed;
    top: var(--ctam-y, 45%);
    transform: translateY(-50%);
    z-index: var(--ctam-z, 9998);
    width: var(--ctam-width, 92px);
    display: flex;
    flex-direction: column;
    gap: var(--ctam-gap, 6px);
    padding: 8px;
    border-radius: var(--ctam-radius, 26px);
    background: var(--ctam-bg, rgba(255, 255, 255, 0.96));
    border: 1px solid var(--ctam-border, rgba(15, 23, 42, 0.08));
    box-shadow: 0 18px 38px var(--ctam-shadow, rgba(15, 23, 42, 0.16));
    overflow: hidden;
    font-family: Inter, "Helvetica Neue", Arial, sans-serif;
    box-sizing: border-box;
}

.cta-map-sticky,
.cta-map-sticky * {
    box-sizing: border-box;
}

.cta-map-sticky.cta-map-right { right: 16px; }
.cta-map-sticky.cta-map-left { left: 16px; }

.cta-map-item {
    width: 100%;
    min-width: 0;
    min-height: var(--ctam-item-height, 78px);
    padding: 10px 6px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 7px;
    text-decoration: none;
    background: var(--ctam-item-bg, transparent);
    color: var(--ctam-item-text, var(--ctam-label-color, #172033));
    border-radius: 18px;
    border: 1px solid transparent;
    overflow: hidden;
    transition: background .2s ease, color .2s ease, transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}

.cta-map-item:hover {
    background: var(--ctam-hover-bg, rgba(15, 23, 42, 0.04));
    color: var(--ctam-hover-text, #0f172a);
    transform: translateY(-1px);
}

.cta-map-item.is-active {
    background: var(--ctam-active-bg, #099bd3);
    color: var(--ctam-active-label, #ffffff);
    border-color: rgba(255, 255, 255, 0.18);
    box-shadow: 0 10px 20px rgba(9, 155, 211, 0.24);
}

.cta-map-item.is-active:hover {
    background: var(--ctam-active-bg, #099bd3);
    color: var(--ctam-active-label, #ffffff);
}

.cta-map-icon {
    width: var(--ctam-icon-size, 28px);
    height: var(--ctam-icon-size, 28px);
    min-width: var(--ctam-icon-size, 28px);
    min-height: var(--ctam-icon-size, 28px);
    display: grid;
    place-items: center;
    border-radius: 999px;
    background: var(--ctam-icon-bg, transparent);
    color: var(--ctam-icon-color, currentColor);
    line-height: 0;
    flex: 0 0 auto;
    transition: transform .2s ease;
}

.cta-map-icon svg,
.cta-map-icon img {
    display: block;
    width: 100%;
    height: 100%;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

.cta-map-item.is-active .cta-map-icon { background: rgba(255, 255, 255, 0.10); }
.cta-map-item:hover .cta-map-icon { transform: scale(1.03); }

.cta-map-text-icon {
    display: grid;
    place-items: center;
    width: 100%;
    height: 100%;
    font-size: calc(var(--ctam-icon-size, 28px) * .72);
    font-weight: 900;
    line-height: 1;
    color: currentColor;
}

.cta-map-label {
    display: block;
    width: 100%;
    max-width: 100%;
    color: currentColor;
    text-align: center;
    font-size: var(--ctam-label-size, 12px);
    line-height: 1.15;
    font-weight: var(--ctam-label-weight, 800);
    letter-spacing: -0.02em;
    white-space: normal;
    overflow-wrap: break-word;
    word-break: normal;
    hyphens: auto;
}

.cta-map-sticky.is-label-hidden-desktop .cta-map-label {
    display: none !important;
}

.cta-map-sticky.is-label-hidden-desktop .cta-map-item {
    min-height: max(44px, calc(var(--ctam-icon-size, 28px) + 22px));
    gap: 0;
}

@media (max-width: 640px) {
    .cta-map-sticky {
        top: auto;
        bottom: var(--ctam-mobile-bottom, 100px);
        transform: none;
        width: var(--ctam-mobile-width, 82px);
        gap: var(--ctam-mobile-gap, 5px);
        padding: var(--ctam-mobile-padding, 7px);
        border-radius: var(--ctam-mobile-radius, 24px);
        background: var(--ctam-mobile-bg, var(--ctam-bg, #ffffff));
        border-color: var(--ctam-mobile-border, var(--ctam-border, rgba(15, 23, 42, 0.08)));
        box-shadow: 0 14px 30px var(--ctam-mobile-shadow, rgba(15, 23, 42, 0.16));
    }

    .cta-map-sticky.cta-map-mobile-right {
        right: var(--ctam-mobile-right, 16px) !important;
        left: auto !important;
    }

    .cta-map-sticky.cta-map-mobile-left {
        left: var(--ctam-mobile-left, 16px) !important;
        right: auto !important;
    }

    .cta-map-item {
        min-height: var(--ctam-mobile-item-height, 74px);
        padding: 9px 5px;
        gap: 6px;
        border-radius: var(--ctam-mobile-item-radius, 17px);
    }

    .cta-map-icon {
        width: var(--ctam-mobile-icon-size, var(--ctam-icon-size, 28px));
        height: var(--ctam-mobile-icon-size, var(--ctam-icon-size, 28px));
        min-width: var(--ctam-mobile-icon-size, var(--ctam-icon-size, 28px));
        min-height: var(--ctam-mobile-icon-size, var(--ctam-icon-size, 28px));
    }

    .cta-map-text-icon {
        font-size: calc(var(--ctam-mobile-icon-size, var(--ctam-icon-size, 28px)) * .72);
    }

    .cta-map-label {
        color: var(--ctam-mobile-label-color, currentColor);
        font-size: var(--ctam-mobile-label-size, 11px);
        font-weight: var(--ctam-mobile-label-weight, 800);
        line-height: 1.12;
    }

    .cta-map-sticky.is-label-hidden-desktop:not(.is-label-hidden-mobile) .cta-map-label {
        display: block !important;
    }

    .cta-map-sticky.is-label-hidden-desktop:not(.is-label-hidden-mobile) .cta-map-item {
        min-height: var(--ctam-mobile-item-height, 74px);
        padding: 9px 5px;
        gap: 6px;
    }

    .cta-map-item.is-active {
        background: var(--ctam-mobile-active-bg, var(--ctam-active-bg, #099bd3));
        color: var(--ctam-mobile-active-label, var(--ctam-active-label, #ffffff));
    }

    .cta-map-sticky.is-label-hidden-mobile .cta-map-label {
        display: none !important;
    }

    .cta-map-sticky.is-label-hidden-mobile .cta-map-item {
        min-height: max(42px, calc(var(--ctam-mobile-icon-size, var(--ctam-icon-size, 28px)) + 18px));
        padding: 8px 4px;
        gap: 0;
    }

    .cta-map-sticky.is-hidden-mobile {
        display: none !important;
    }
}
