/* Timeline - Milestones (scoped to .timeline) */

/* Default values (used if no variables set by controls) */
.timeline {
    --milestone-width: calc(var(--milestone-side-length) * 2);
    --milestone-height: calc(var(--milestone-side-length) * sqrt(3));
    --milestone-content-gap: calc(var(--milestone-height) / 1.5);
    --milestone-content-width: calc(var(--milestone-width) * 1.5);
}

.timeline__milestones {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: calc(var(--milestone-width) * 0.75 - 1px);
    margin-bottom: calc(var(--milestone-height) * -0.5);
}

.milestone {
    display: grid;
    justify-items: center;
    grid-template-rows: 1fr auto 1fr;
}

.milestone:nth-child(even) {
    align-items: start;
    transform: translateY(calc(var(--milestone-height) / -2));
}

.milestone:nth-child(odd) .milestone__content {
    grid-row: 1;
}

.milestone:nth-child(even) .milestone__content {
    grid-row: 3;
}

.milestone__hexagon {
    grid-row: 2;
}

.milestone__content .milestone__date {
    font-size: 20px;
    font-weight: 700;
    line-height: 1.1;
    margin: 0;
}

.milestone__content .milestone__title {
    font-size: 18px;
    font-weight: 600;
    margin: 0;
}

.milestone__content .milestone__description {
    font-size: 16px;
    font-weight: 400;
    margin: 0;
    margin-block-end: 0px;
    line-height: 1.1;
}

.milestone__content {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-end;
    text-align: center;
    width: calc(150% - var(--milestone-text-gap));
}

.milestone__content::before {
    content: "";
    display: block;
    width: var(--milestone-circle-size);
    height: var(--milestone-circle-size);
    background-color: var(--milestone-primary-color);
    border: var(--milestone-border-color) 2px solid;
    border-radius: 50%;
}

.milestone__content::after {
    content: "";
    display: block;
    width: 2px;
    height: var(--milestone-content-gap);
    background-color: var(--milestone-border-color);
}

.milestone:nth-child(odd) .milestone__content::before {
    order: 1;
    margin-top: var(--milestone-circle-margin);
}

.milestone:nth-child(odd) .milestone__content::after {
    order: 2;
}

.milestone:nth-child(even) .milestone__content::before {
    order: -1;
    margin-bottom: var(--milestone-circle-margin);
}

.milestone:nth-child(even) .milestone__content::after {
    order: -2;
}

.milestone__hexagon {
    position: relative;
    width: var(--milestone-width);
    height: var(--milestone-height);
}

.milestone__hexagon-background {
    width: 100%;
    height: 100%;
}

.milestone__hexagon-background.--mobile {
    display: none;
}

.milestone__hexagon-icon {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 3;
    width: var(--milestone-icon-size);
    height: var(--milestone-icon-size);
    fill: var(--milestone-icon-color);
    stroke: var(--milestone-icon-color);
}

.milestone__icon-element,
i.milestone__icon {
    font-size: var(--milestone-icon-size);
    color: var(--milestone-icon-color);
    text-align: center;
}

/* Responsive adjustments */
@media (max-width: 768px) {
    .timeline {
        --milestone--x-offset: calc(var(--milestone-height) / 2);
    }

    .timeline__milestones {
        display: grid;
        grid-auto-flow: row;
        grid-auto-columns: 1fr;
        grid-auto-rows: calc(var(--milestone-width) * 0.75 - 1px);
        margin-bottom: 0;
    }

    .milestone {
        grid-auto-rows: 1fr;
        grid-template-columns: auto 1fr;
        justify-items: start;
        align-items: center;
        transform: none;
    }

    .milestone:nth-child(even) {
        grid-template-columns: calc(var(--milestone-height) / 2) auto 1fr;
        align-items: center;
        transform: none;
    }

    .milestone .milestone__content {
        grid-column: 2;
    }

    .milestone:nth-child(even) .milestone__content {
        grid-row: 1;
        grid-column: 3;
    }

    .milestone:nth-child(odd) .milestone__content::before {
        order: 2;
    }

    .milestone:nth-child(odd) .milestone__content-container {
        order: 3;
    }

    .milestone:nth-child(odd) .milestone__content::after {
        order: 1;
    }

    .milestone .milestone__hexagon {
        grid-row: 1;
    }

    .milestone:nth-child(even) .milestone__hexagon {
        grid-column: 2;
    }

    .milestone__hexagon {
        width: var(--milestone-height);
        height: var(--milestone-width);
    }

    .milestone__hexagon-background.--desktop {
        display: none;
    }

    .milestone__hexagon-background.--mobile {
        display: block;
    }

    .milestone__content {
        flex-direction: row;
        width: 100%;
    }

    .milestone:nth-child(odd) .milestone__content::before {
        margin-top: 0;
        margin-right: var(--milestone-circle-margin);
    }

    .milestone:nth-child(even) .milestone__content::before {
        margin-bottom: 0;
        margin-right: var(--milestone-circle-margin);
    }

    .milestone__content::before {
        flex-shrink: 0;
    }

    .milestone__content::after {
        content: "";
        display: block;
        height: 2px;
    }

    .milestone:nth-child(odd) .milestone__content::after {
        width: calc(var(--milestone-height) * 2 + var(--milestone-height) / 2);
    }

    .milestone:nth-child(even) .milestone__content::after {
        width: calc(var(--milestone-height) * 2);
    }

    .milestone__content-container {
        flex-grow: 1;
    }

    .milestone__content .milestone__date {
        font-size: 16px;
    }

    .milestone__content .milestone__title {
        font-size: 14px;
    }

    .milestone__content .milestone__description {
        font-size: 12px;
    }
}

@media (max-width: 480px) {
    .milestone:nth-child(odd) .milestone__content::after {
        width: calc(
            var(--milestone-height) / 1.5 + var(--milestone-height) / 2
        );
    }

    .milestone:nth-child(even) .milestone__content::after {
        width: calc(var(--milestone-height) / 1.5);
    }
}
