.timeline {
position: relative;
}

.timeline-container {
position: relative;
padding-left: 30px;
}

.timeline-container::before {
content: '';
position: absolute;
left: 8px;
top: 0;
bottom: 0;
width: 2px;
background: #e0e0e0;
}

.timeline-item {
position: relative;
margin-bottom: 30px;
opacity: 0.5;
}

.timeline-item--completed {
opacity: 1;
}

.timeline-item--active {
opacity: 0.8;
}

.timeline-item--failed {
opacity: 1;
}

.timeline-marker {
position: absolute;
left: -26px;
top: 0;
width: 16px;
height: 16px;
border-radius: 50%;
background: #e0e0e0;
border: 2px solid #fff;
}

.timeline-item--completed .timeline-marker {
background: #4caf50;
}

.timeline-item--active .timeline-marker {
background: #2196f3;
animation: pulse 2s infinite;
}

.timeline-item--failed .timeline-marker {
background: #f44336;
}

@keyframes pulse {
0%, 100% {
    box-shadow: 0 0 0 0 rgba(33, 150, 243, 0.7);
}
50% {
    box-shadow: 0 0 0 10px rgba(33, 150, 243, 0);
}
}

.timeline-content {
padding-left: 10px;
}

.timeline-title {
font-size: 16px;
font-weight: 600;
margin-bottom: 5px;
}

.timeline-time {
font-size: 14px;
color: #666;
margin-bottom: 5px;
}

.timeline-description {
font-size: 14px;
margin-bottom: 5px;
}

.timeline-item--failed .timeline-title,
.timeline-item--failed .timeline-description {
color: #f44336;
}