.zem-spiral {
    position: relative;
    width: 100%;
    overflow: visible;
}

.zem-spiral__svg {
    display: block;
    width: 100%;
    height: auto;
}

.zem-spiral__items {
    position: absolute;
    inset: 0;
    pointer-events: none;
    overflow: visible;
}

/* Force overflow visible on Elementor wrappers */
.elementor-widget-zem_spiral_path,
.elementor-widget-zem_spiral_path>.elementor-widget-container {
    overflow: visible !important;
}

.zem-spiral__item {
    position: absolute;
    display: flex;
    flex-direction: column;
    padding: 12px;
    text-align: center;
    transform: translate(-50%, -50%);
    pointer-events: auto;
    z-index: 2;
}

/* Animate: items start invisible at center, fade in when animation begins */
.zem-spiral[data-animate="true"] .zem-spiral__item {
    opacity: 0;
}

.zem-spiral[data-animate="true"] .zem-spiral__item.zem-spiral--placed {
    opacity: 1;
    transition: opacity 0.6s ease;
}

.zem-spiral__title {
    margin: 0 0 2px;
    font-family: "Lato", sans-serif;
    font-weight: 300;
    line-height: 1.2;
}

.zem-spiral__desc {
    display: block;
    margin: 0;
    font-family: "Lato", sans-serif;
    line-height: 1.2;
}

/* ─── Tablet + Mobile (≤ 1024px): vertical timeline layout ─── */
@media (max-width: 1024px) {
    .zem-spiral {
        overflow: visible;
    }

    /* Hide the spiral SVG — decorative, not usable at small widths */
    .zem-spiral__svg {
        display: none;
    }

    /* Items container becomes a normal block flow */
    .zem-spiral__items {
        position: relative;
        display: flex;
        flex-direction: column;
        gap: 0;
        pointer-events: auto;
        overflow: visible;
        padding-left: 44px;
    }

    /* Vertical timeline line */
    .zem-spiral__items::before {
        content: '';
        position: absolute;
        left: 20px;
        top: 0;
        bottom: 0;
        width: 2px;
        background: currentColor;
        opacity: 0.2;
    }

    /* Reset absolute positioning for each item */
    .zem-spiral__item {
        position: relative;
        left: auto !important;
        top: auto !important;
        transform: none !important;
        width: 100% !important;
        max-width: 100% !important;
        text-align: left;
        padding: 16px 16px 16px 0;
        border-bottom: 1px solid currentColor;
    }

    .zem-spiral__item:last-child {
        border-bottom: none;
    }

    /* Timeline dot */
    .zem-spiral__item::before {
        content: '';
        position: absolute;
        left: -28px;
        top: 22px;
        width: 10px;
        height: 10px;
        border-radius: 50%;
        background: currentColor;
        opacity: 0.5;
    }

    /* Scroll-triggered animation for timeline items */
    .zem-spiral[data-animate="true"] .zem-spiral__item {
        opacity: 0;
        transform: translateY(20px) !important;
        transition: opacity 0.5s ease, transform 0.5s ease;
    }

    .zem-spiral[data-animate="true"] .zem-spiral__item.zem-spiral--placed {
        opacity: 1;
        transform: translateY(0) !important;
    }
}