html,
body {
  margin: 0;
  height: 100%;
}
.stage {
  width: 100%;
  height: 100%;
  background: lightblue;
  display: flex;
  justify-content: center;
  align-items: center;
  perspective: 1500px;
  transform-style: preserve-3d;
}
.stage .face {
  width: 300px;
  height: 450px;
  background: url(600x600.jpg) no-repeat center;
  background-size: cover;
  border-radius: 20px;
  transition: all 1s;
  transform-origin: center center 100px;
  transform: translateZ(130px) rotateX(0deg);
  position: relative;
  transform-style: preserve-3d;
  display: flex;
  flex-wrap: wrap;
  text-align: center;
  align-content: center;
}
.stage .face > * {
  flex-basis: 100%;
}
.stage .face .child {
  content: '';
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border-radius: 20px;
  transition: inherit;
}
.stage .face::before {
  content: '';
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border-radius: 20px;
  transition: inherit;
  background: rgba(0, 0, 0, 0.3);
  z-index: 1;
}
.stage .face::after {
  content: '';
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border-radius: 20px;
  transition: inherit;
  background: black;
  transform: translateZ(-20px);
}
.stage .face.active {
  transform: translateZ(150px) rotateX(60deg);
}
.stage .face.active::before {
  box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.5);
}
.stage .face.active::after {
  box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.5);
}
.stage .face .chart {
  display: flex;
  justify-content: center;
  transition: inherit;
}
.stage .face .chart .bar {
  width: 20px;
  height: 20px;
  display: block;
  margin: 10px;
  transform: rotate(-45deg);
  transform-style: preserve-3d;
  perspective: 1500px;
  transition: inherit;
}
.stage .face .chart .bar i {
  width: 20px;
  height: 20px;
  display: block;
  background: white;
  transition: inherit;
}
.stage .face .chart .bar::before {
  content: '';
  display: block;
  width: 0px;
  height: 20px;
  background: #B8C8D4;
  transform-origin: left;
  transform: rotateY(-90deg);
  transition: inherit;
  position: absolute;
  top: 0;
  left: 0;
}
.stage .face .chart .bar::after {
  content: '';
  display: block;
  width: 20px;
  height: 0px;
  background: #78A7BE;
  transform-origin: bottom;
  transform: rotateX(-90deg);
  transition: inherit;
  position: absolute;
  bottom: 0;
  left: 0;
}
.stage .face.active {
  transform: translateZ(220px) rotateX(60deg);
}
.stage .face.active::before {
  box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.5);
}
.stage .face.active::after {
  box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.5);
}
.stage .face.active .chart .bar:nth-child(1) i {
  transform: translateZ(150px);
}
.stage .face.active .chart .bar:nth-child(1)::before {
  width: 150px;
}
.stage .face.active .chart .bar:nth-child(1)::after {
  height: 150px;
}
.stage .face.active .chart .bar:nth-child(2) i {
  transform: translateZ(250px);
}
.stage .face.active .chart .bar:nth-child(2)::before {
  width: 250px;
}
.stage .face.active .chart .bar:nth-child(2)::after {
  height: 250px;
}
.stage .face.active .chart .bar:nth-child(3) i {
  transform: translateZ(200px);
}
.stage .face.active .chart .bar:nth-child(3)::before {
  width: 200px;
}
.stage .face.active .chart .bar:nth-child(3)::after {
  height: 200px;
}
.stage .face.active .chart .bar:nth-child(4) i {
  transform: translateZ(180px);
}
.stage .face.active .chart .bar:nth-child(4)::before {
  width: 180px;
}
.stage .face.active .chart .bar:nth-child(4)::after {
  height: 180px;
}
.stage .face.active .chart .bar:nth-child(5) i {
  transform: translateZ(130px);
}
.stage .face.active .chart .bar:nth-child(5)::before {
  width: 130px;
}
.stage .face.active .chart .bar:nth-child(5)::after {
  height: 130px;
}
.stage .face.active .chart .bar:nth-child(6) i {
  transform: translateZ(225px);
}
.stage .face.active .chart .bar:nth-child(6)::before {
  width: 225px;
}
.stage .face.active .chart .bar:nth-child(6)::after {
  height: 225px;
}
.stage .face.active .chart .bar:nth-child(7) i {
  transform: translateZ(80px);
}
.stage .face.active .chart .bar:nth-child(7)::before {
  width: 80px;
}
.stage .face.active .chart .bar:nth-child(7)::after {
  height: 80px;
}
