#timeline *,
#timeline *:after,
#timeline *:before {
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
	}

#timeline {
	position: relative;
	padding: 40px 0 30px;
	}
	
#timeline::before {
	content: '';
	position: absolute;
	top: 0;
	left: 26px;
	height: 100%;
	width: 4px;
	background: #ccc;
	}
	
@media only screen and (min-width: 768px) {

	  #timeline::before {
		left: 50%;
		margin-left: -2px;
		}
		
	}

.timeline-block {
	position: relative;
	margin: 2.5em 0;
	}
	
.timeline-block:after {
	content: "";
	display: table;
	clear: both;
	}
	
.timeline-block:first-child {
	margin-top: 0;
	}
	
.timeline-block:last-child {
	margin-bottom: 0;
	}
	
@media only screen and (max-width: 767px) {

	.timeline-block {
		margin: 4em 0;
	}
	.timeline-block:first-child {
		margin-top: 0;
	}
	.timeline-block:last-child {
		margin-bottom: 0;
	}
	
}

.timeline-img {
	position: absolute;
	top: 0;
	left: 0;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	box-shadow: 0 0 0 4px white, inset 0 2px 0 rgba(0, 0, 0, 0.08), 0 3px 0 4px rgba(0, 0, 0, 0.05);
	background: #fff;
	}

.timeline-img img {
	display: block;
	width: 40px;
	height: 40px;
	position: relative;
	}
		
	@media only screen and (min-width: 768px) {

		.timeline-img {
			width: 60px;
			height: 60px;
			left: 50%;
			margin-left: -30px;
			-webkit-transform: translateZ(0);
			-webkit-backface-visibility: hidden;
		}
		
		.timeline-img img {
			display: block;
			width: 60px;
			height: 60px;
			position: relative;
		}

		.timeline-img.is-hidden {
			visibility: hidden;
		}
  
	   .timeline-img.bounce-in {
			visibility: visible;
			-webkit-animation: bounce-1 0.6s;
			-moz-animation: bounce-1 0.6s;
			animation: bounce-1 0.6s;
		}
	
	}

.timeline-content {
	position: relative;
	margin-left: 60px;
	background: white;
	border-radius: 0.25em;
	padding: 1em;
	box-shadow: 0 2px 0 rgba(0,70,119,.125);
	}

.timeline-content:after {
	content: "";
	display: table;
	clear: both;
	}

.timeline-content .date {
	float: left;
	padding: .8em 0;
	display: inline-block;
	}

.timeline-content::before {
	content: '';
	position: absolute;
	top: 16px;
	right: 100%;
	height: 0;
	width: 0;
	border: 7px solid transparent;
	border-right: 7px solid white;
	}
	
@media only screen and (min-width: 768px) {

	.timeline-content {
		margin-left: 0;
		padding: 1.6em;
		width: 43%;
		}

	.timeline-content::before {
		top: 24px;
		left: 100%;
		border-color: transparent;
		border-left-color: white;
		}

	.timeline-content .date {
		position: absolute;
		width: 100%;
		left: 132%;
		top: 6px;
		font-size: 16px;
		font-size: 1rem;
		}

	.timeline-block:nth-child(even) .timeline-content {
		float: right;
		}

	.timeline-block:nth-child(even) .timeline-content::before {
		top: 24px;
		left: auto;
		right: 100%;
		border-color: transparent;
		border-right-color: white;
		}

	.timeline-block:nth-child(even) .timeline-content .date {
		left: auto;
		right: 132%;
		text-align: right;
		}

	.timeline-content.is-hidden {
		visibility: hidden;
		}

	.timeline-content.bounce-in {
		visibility: visible;
		-webkit-animation: bounce-2 0.6s;
		-moz-animation: bounce-2 0.6s;
		animation: bounce-2 0.6s;
		}
}


@-webkit-keyframes bounce-1 {
  0% {
    opacity: 0;
    -webkit-transform: scale(0.5);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale(1.2);
  }

  100% {
    -webkit-transform: scale(1);
  }
}
@-moz-keyframes bounce-1 {
  0% {
    opacity: 0;
    -moz-transform: scale(0.5);
  }

  60% {
    opacity: 1;
    -moz-transform: scale(1.2);
  }

  100% {
    -moz-transform: scale(1);
  }
}
@keyframes bounce-1 {
  0% {
    opacity: 0;
    -webkit-transform: scale(0.5);
    -moz-transform: scale(0.5);
    -ms-transform: scale(0.5);
    -o-transform: scale(0.5);
    transform: scale(0.5);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale(1.2);
    -moz-transform: scale(1.2);
    -ms-transform: scale(1.2);
    -o-transform: scale(1.2);
    transform: scale(1.2);
  }

  100% {
    -webkit-transform: scale(1);
    -moz-transform: scale(1);
    -ms-transform: scale(1);
    -o-transform: scale(1);
    transform: scale(1);
  }
}

@media only screen and (min-width: 768px) {
  /* inverse bounce effect on even content blocks */
   .timeline-block:nth-child(even) .timeline-content.bounce-in {
    -webkit-animation: bounce-2-inverse 0.6s;
    -moz-animation: bounce-2-inverse 0.6s;
    animation: bounce-2-inverse 0.6s;
  }
}
@-webkit-keyframes bounce-2 {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-100px);
  }

  60% {
    opacity: 1;
    -webkit-transform: translateX(20px);
  }

  100% {
    -webkit-transform: translateX(0);
  }
}
@-moz-keyframes bounce-2 {
  0% {
    opacity: 0;
    -moz-transform: translateX(-100px);
  }

  60% {
    opacity: 1;
    -moz-transform: translateX(20px);
  }

  100% {
    -moz-transform: translateX(0);
  }
}
@keyframes bounce-2 {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-100px);
    -moz-transform: translateX(-100px);
    -ms-transform: translateX(-100px);
    -o-transform: translateX(-100px);
    transform: translateX(-100px);
  }

  60% {
    opacity: 1;
    -webkit-transform: translateX(20px);
    -moz-transform: translateX(20px);
    -ms-transform: translateX(20px);
    -o-transform: translateX(20px);
    transform: translateX(20px);
  }

  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}
@-webkit-keyframes bounce-2-inverse {
  0% {
    opacity: 0;
    -webkit-transform: translateX(100px);
  }

  60% {
    opacity: 1;
    -webkit-transform: translateX(-20px);
  }

  100% {
    -webkit-transform: translateX(0);
  }
}
@-moz-keyframes bounce-2-inverse {
  0% {
    opacity: 0;
    -moz-transform: translateX(100px);
  }

  60% {
    opacity: 1;
    -moz-transform: translateX(-20px);
  }

  100% {
    -moz-transform: translateX(0);
  }
}
@keyframes bounce-2-inverse {
  0% {
    opacity: 0;
    -webkit-transform: translateX(100px);
    -moz-transform: translateX(100px);
    -ms-transform: translateX(100px);
    -o-transform: translateX(100px);
    transform: translateX(100px);
  }

  60% {
    opacity: 1;
    -webkit-transform: translateX(-20px);
    -moz-transform: translateX(-20px);
    -ms-transform: translateX(-20px);
    -o-transform: translateX(-20px);
    transform: translateX(-20px);
  }

  100% {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}
