ul.timeline {
    list-style-type: none;
    position: relative;
}
ul.timeline:before {
    content: ' ';
    background: #d4d9df;
    display: inline-block;
    position: absolute;
    left: 29px;
    width: 2px;
    height: 100%;
    z-index: 400;
}
ul.timeline > li {
    margin: 20px 0;
    padding-left: 20px;
}
ul.timeline > li:before {
    content: ' ';
    background: white;
    display: inline-block;
    position: absolute;
    border-radius: 50%;
    border: 3px solid #2196f3;
    left: 20px;
    width: 20px;
    height: 20px;
    z-index: 400;
}
ul.timeline > li.border-primary:before {
    border-color: #2196f3;
}
ul.timeline > li.border-success:before {
    border-color: #00b147;
}
ul.timeline > li.border-warning:before {
    border-color: #ffc200;
}
ul.timeline > li.border-danger:before {
    border-color: #ff4132;
}
ul.timeline > li.border-dark:before {
    border-color: #212529;
}