.timeline {
    --line-color: #ddd;
    --active-color: #555;
    --circle-size: 44px;
    --line-width: 4px;
  
    position: relative;
    max-width: 900px;
    margin: 100px auto;
    padding: 0;
  }
  
  /* The grey background line */
  .timeline-line {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 22px;
    height: 0;
    width: var(--line-width);
    background: var(--line-color);
    z-index: 0;
  }
  
  /* The dark animated portion */
  .timeline-line::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: var(--progress, 0%);
    background: var(--active-color);
  }
  
  /* Each step */
  .timeline-step {
    position: relative;
    padding-left: 80px;
    padding-top: 6px;
    margin-bottom: 80px;
  }
  
  /* Numbered circle */
  .timeline-step::before {
    content: attr(data-step);
  
    position: absolute;
    left: 0;
    top: 0;
  
    width: var(--circle-size);
    height: var(--circle-size);
  
    display: flex;
    align-items: center;
    justify-content: center;
  
    border-radius: 50%;
    background: white;
    border: 4px solid var(--line-color);
  
    color: #999;
    font-weight: 700;
  
    box-sizing: border-box;
    z-index: 2;
  
    transition:
      background-color 0.25s ease,
      border-color 0.25s ease,
      color 0.25s ease;
  }
  
  /* Active circle */
  .timeline-step.active::before {
    background: var(--active-color);
    border-color: var(--active-color);
    color: white;
  }
  
  .timeline-step h2 {
    margin-top: 0;
  }
