.ce-timeline {
    --em-timeline-left-width: 20%;

    position: relative;
}

@media all and (min-width: 992px) {
    .ce-timeline::before {
        content: "";
        position: absolute;
        left: var(--em-timeline-left-width);
        top: 0;
        height: 100%;
        width: 2px;
        background-color: rgba(var(--bs-primary-rgb), 0.15);
    }
}

.ce-timeline .ce-timeline-item {
    display: flex;
    align-items: flex-start;
    margin-bottom: 2.5rem;
    position: relative;
}

.ce-timeline > .ce-timeline-item:last-child,
.ce-timeline > .frame-type-timelineitem:last-child .ce-timeline-item {
    margin-bottom: 0;
}

.ce-timeline .ce-timeline-item .timeline-left {
    width: var(--em-timeline-left-width);
    padding-right: 3rem;
}

.ce-timeline .ce-timeline-item .timeline-left .timeline-header {
    font-weight: 600;
    font-size: 1.1rem;
    margin-bottom: 0.25rem;
}

.ce-timeline .ce-timeline-item .timeline-left .timeline-subheader {
    color: var(--bs-primary);
    font-size: 0.9rem;
}

.ce-timeline .ce-timeline-item .timeline-dot {
    position: absolute;
    left: calc(var(--em-timeline-left-width) + 1px);
    transform: translateX(-50%);
    width: 1rem;
    height: 1rem;
    background-color: var(--bs-primary);
    border-radius: 50%;
}

.ce-timeline .ce-timeline-item .timeline-right {
    width: calc(90% - var(--em-timeline-left-width));
    padding-left: 3rem;
    margin-top: -4px;
}

.ce-timeline .ce-timeline-item .timeline-right .timeline-header,
.ce-timeline .ce-timeline-item .timeline-right .timeline-header > * {
    font-size: 1.2rem;
    margin-bottom: 0.6rem;
    font-weight: 600;
}

.ce-timeline .ce-timeline-item .timeline-right .timeline-description {
    color: rgba(var(--bs-body-color-rgb, 0.75));
}

.ce-timeline .ce-timeline-item .timeline-right ul {
    padding-left: 1re;
}

.ce-timeline .ce-timeline-item .timeline-right ul li {
    padding-bottom: 0.75rem;
}

@media all and (max-width: 991px) {
    .ce-timeline h2 {
        font-size: 2rem;
    }

    .timeline::before {
        left: 1rem;
    }

    .ce-timeline .ce-timeline-item {
        flex-direction: column;
        margin-bottom: 1.25rem;
    }

    .ce-timeline .ce-timeline-item .timeline-left {
        width: 100%;
        text-align: left;
        padding-right: 0;
        padding-left: 2.5rem;
        margin-bottom: 1.6rem;
        margin-top: -4px;
    }

    .ce-timeline .ce-timeline-item .timeline-dot {
        left: calc(1rem + 1px);
    }

    .ce-timeline .ce-timeline-item .timeline-right {
        width: 100%;
        padding-left: 2.5rem;
    }
}
