.milestones {
  --i: var(--wide, 1);
  --j: calc(1 - var(--i));
  --narr: 0;
  --k: calc(1 - var(--narr));
  font: 500 1em/1.25 'Helvetica Neue', 'Roboto Condensed', 'Noto Sans TC', 'Noto Sans SC', sans-serif;
  transition: 0.3s;
}

.milestones *, .milestones :before, .milestones :after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  transition: inherit;
}
@media (max-width: 50.25rem) {
  .milestones {
    --wide: 0 ;
  }
}
@media (max-width: 21.75rem) {
  .milestones {
    --narr: 1 ;
  }
}
@media (max-width: 12em) {
  .milestones {
    font-size: 0.75em;
  }
}

.milestones {
  display: grid;
  grid-template: repeat(var(--n), 1fr)/repeat(calc(var(--i) + 1), calc(var(--k)*18.75rem + var(--narr)*100%));
  grid-gap: 0 11.25rem;
  place-content: center;
  overflow-x: hidden;
  margin-top: 1em;
  padding-top: calc(var(--i)*4.5rem);
  background: repeating-linear-gradient(transparent 0, transparent 0rem, currentcolor 0, currentcolor 9rem) 50% 1em/calc(var(--i)*2px) calc((.5*(var(--n) + .5))*25.5rem) content-box no-repeat;
}

.milestones article {
  --p: var(--parity, 0);
  --q: calc(1 - var(--p));
  --s: calc(1 - 2*var(--p));
  grid-row: calc(var(--idx) + 1);
  grid-column: calc(var(--i)*var(--p) + 1);
  position: relative;
  margin-top: calc(var(--i)*-4.5rem);
  border-bottom: solid 0.75rem transparent;
  max-width: 100%;
  min-height: 200px;
  background: linear-gradient(#f2f2f2, #f2f2f2) padding-box, radial-gradient(at 50% 0, rgba(0, 0, 0, 0.3), transparent 70%) 50% 100%/115% 0.75rem border-box;
  color: #222;
}
.milestones article:before {
  display: flex;
  align-items: center;
  justify-content: center;
  margin-left: calc(var(--k)*(var(--q)*-0.75rem + var(--p)*-2.25rem));
  border-bottom: solid calc(var(--k)*0.75rem) transparent;
  width: calc(var(--k)*21.75rem + var(--narr)*100%);
  height: calc(4.5rem + var(--k)*0.75rem);
  border-radius: calc(var(--k)*var(--p)*2.25rem) calc(var(--k)*var(--q)*2.25rem) calc(var(--k)*var(--q)*2.25rem) calc(var(--k)*var(--p)*2.25rem)/calc(var(--k)*var(--p)*2.25rem) calc(var(--k)*var(--q)*2.25rem) calc(var(--k)*var(--q)*3rem) calc(var(--k)*var(--p)*3rem);
  background: linear-gradient(calc(var(--s)*90deg), var(--slist)) padding-box, linear-gradient(calc(var(--s)*90deg), var(--slist) 0.75rem, #e6e6e6 0) calc(var(--p)*100%) 0/17.25rem no-repeat border-box;
  color: #fff;
  font-size: 32px;
  font-weight: 300;
  clip-path: polygon(calc(var(--p)*100%) 0, calc(var(--q)*100%) 0, calc(var(--q)*100%) 100%, calc(var(--q)*100% - var(--s)*4.5rem) 4.5rem, calc(var(--p)*100% + var(--s)*0.75rem) 100%, calc(var(--p)*100%) 4.5rem);
  content: attr(data-year);
}
.milestones article:after {
  position: absolute;
  top: 0;
  left: calc(var(--q)*(100% - 4.5rem) + var(--s)*7.875rem);
  border: solid 0.75rem transparent;
  padding: 0.75rem;
  width: 4.5rem;
  height: 4.5rem;
  border-radius: 50%;
  transform: scale(var(--i));
  background: linear-gradient(calc(var(--s)*90deg), var(--slist)) content-box, linear-gradient(calc(var(--s)*90deg), white, white) border-box;
  --m: var(--mid, ) linear-gradient(red, red) padding-box, linear-gradient(red, red) border-box;
  -webkit-mask: var(--m);
  /* -webkit-mask-composite: xor; */
  mask: var(--m);
  mask-composite: exclude;
  content: "";
}
.milestones article:nth-of-type(2n) {
  --parity: 1 ;
}
.milestones article {
  margin-top: -70%;
}

.milestones article:first-of-type {
  margin-top: calc(var(--i)*-4.5rem);
}
@media screen and (max-width: 767px) {
  .milestones article {
    margin-top: -30%;
  }
}
.milestones article:first-of-type, article:last-of-type {
  --mid: linear-gradient(red, red) content-box , ;
}

