//
// Variables
// --------------------------------------------------
$timeline-item-spacing: 1.5rem !default;
$timeline-item-padding: 1.5rem !default;
$timeline-item-border: 1px solid currentColor !default;
$timeline-item-border-radius: 0 !default;
$timeline-item-shadow: 0 1px 0 0 rgba(0, 0, 0, .15) !default;
$timeline-item-headline-color: $primary !default;
$timeline-item-headline-size: 1.5rem !default;
$timeline-item-date-size: .8rem !default;
$timeline-item-color: $body-color !default;
$timeline-item-bg: #ffffff !default;
$timeline-item-caption-bg: #f2f2f2 !default;

$timeline-icon-color: $body-color !default;
$timeline-icon-bg: #ffffff !default;
$timeline-icon-size: 46px !default;
$timeline-icon-space: 10px !default;
$timeline-icon-border: 3px solid currentColor !default;
$timeline-icon-border-radius: 50% !default;
$timeline-icon-border-opacity: .25 !default;

$timeline-marker-size: 16px !default;
$timeline-marker-bg: $timeline-icon-bg !default;
$timeline-marker-border: $timeline-icon-border !default;
$timeline-marker-border-radius: $timeline-icon-border-radius !default;
$timeline-marker-border-opacity: $timeline-icon-border-opacity !default;

$timeline-path-border: 2px dashed currentColor !default;
$timeline-path-opacity: .25 !default;

//
// Component
// --------------------------------------------------
.timeline {
    padding-left: $timeline-icon-size;
    position: relative;
    &:before {
        content: '';
        position: absolute;
        top: 0;
        bottom: 0;
        left: ($timeline-icon-size / 2);
        transform: translate(-50%, 0);
        border-left: $timeline-path-border;
        opacity: $timeline-path-opacity;
    }
}
.timeline-item {
    position: relative;
    &:not(:first-child) {
        margin-top: ($timeline-item-spacing / 2);
    }
}
.timeline-item-inner {
    overflow: hidden;
    margin-left: $timeline-item-spacing;
    background-color: $timeline-item-bg;
    border: $timeline-item-border;
    border-radius: $timeline-item-border-radius;
    box-shadow: $timeline-item-shadow;
    padding: $timeline-item-padding;
}
.timeline-item-marker,
.timeline-item-icon {
    &:after,
    &:before,
    span {
        background-clip: content-box;
        border: $timeline-marker-border;
        border-radius: $timeline-marker-border-radius;
    }
    &:after,
    span {
        border-color: transparent;
    }
    &:after,
    &:before {
        inset: 0;
        z-index: 1;
        content: '';
        position: absolute;
    }
    &:before {
        opacity: $timeline-marker-border-opacity;
    }
    &:after {
        background-color: $timeline-marker-bg;
    }
    span {
        display: block;
        height: 100%;
        width: 100%;
        z-index: 2;
        position: relative;
    }
    z-index: 3;
    position: absolute;
    top: 50%;
    left: -($timeline-icon-size / 2);
    width: $timeline-marker-size;
    height: $timeline-marker-size;
    transform: translate(-50%, -50%);
}
.timeline-item-icon {
    left: -($timeline-icon-size / 2);
    width: $timeline-icon-size;
    height: $timeline-icon-size;
    border-radius: $timeline-icon-border-radius;
    &:before {
        border: $timeline-icon-border;
    }
    &:after {
        background-color: $timeline-icon-bg;
    }
    span {
        color: $timeline-icon-color;
        display: block;
        padding: $timeline-icon-space;
    }
    svg {
        position: relative;
        display: block;
        width: 100%;
        height: auto;
    }
}
.timeline-item-image {
    margin: -$timeline-item-padding;
    margin-bottom: $timeline-item-padding;
    img {
        width: 100%;
        height: auto;
    }
    .caption {
        font-size: .8em;
        padding: .5rem $timeline-item-padding;
        color: color-contrast($timeline-item-caption-bg);
        background-color: $timeline-item-caption-bg;
    }
}
.timeline-item-header-headline {
    font-size: $timeline-item-headline-size;
    color: $timeline-item-headline-color;
}
.timeline-item-header:last-child,
.timeline-item-text {
    > *:last-child {
        margin-bottom: 0;
    }
}
.timeline-item-date,
.timeline-item-text {
    color: $timeline-item-color;
}
.timeline-item-date {
    font-size: $timeline-item-date-size;
    text-transform: uppercase;
}

//
// Small
// --------------------------------------------------
@include media-breakpoint-up(md) {
    .timeline {
        &:before {
            left: 50%;
        }
        padding-left: 0;
    }
    .timeline-item {
        width: 50%;
        &:not(:first-child) {
            margin-top: -$timeline-item-spacing;
        }
    }
    .timeline-item-marker {
        left: auto;
        right: 0;
        transform: translate(50%, -50%);
    }
    .timeline-item-inner {
        margin-left: 0;
        margin-right: calc(#{$timeline-item-spacing} + #{$timeline-icon-size} / 2);
    }
    .timeline-item:nth-child(even) {
        margin-left: 50%;
        .timeline-item-inner {
            margin-left: calc(#{$timeline-item-spacing} + #{$timeline-icon-size} / 2);
            margin-right: 0;
        }
        .timeline-item-marker {
            left: 0;
            right: auto;
            transform: translate(-50%, -50%);
        }
    }
}
