@import url("https://fonts.googleapis.com/css?family=VT323");
@import url("https://fonts.googleapis.com/css?family=Source+Sans+Pro:600");
@keyframes move-slow {
  0% {
    transform: translateX(50%);
  }
  100% {
    transform: translateX(-50%);
  }
}
@keyframes move {
  0% {
    transform: translateX(110%);
  }
  100% {
    transform: translateX(-110%);
  }
}
@keyframes moving-text {
  0% {
    transform: translateX(70%);
  }
  100% {
    transform: translateX(-100%);
  }
}
@keyframes reflections {
  0% {
    background-position: 0 0;
  }
  100% {
    background-position: 1200% 0;
  }
}
@keyframes encapsulate {
  0% {
    width: 632px;
    height: 632px;
  }
  100% {
    width: 600px;
    height: 600px;
  }
}
@keyframes bounce {
  0% {
    transform: translateY(0px);
  }
  25% {
    transform: translateY(-4px);
  }
  75% {
    transform: translateY(0px);
  }
  100% {
    transform: translateY(-4px);
  }
}
html {
  box-sizing: border-box;
}

*, *::after, *::before {
  box-sizing: inherit;
}

html, body {
  height: 100%;
}

body {
  display: flex;
  justify-content: center;
  align-items: center;
  background: #d7d3e1;
  overflow: hidden;
  margin: 0;
  font-family: "Source Sans Pro", sans-serif;
}

.encapsulate-fig {
  width: 600px;
  height: 600px;
  border: 8px solid #ffffff;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  transition: 0.2s;
  animation: 0.6s encapsulate linear;
  position: relative;
}
.encapsulate-fig:hover {
  width: 800px;
}
.encapsulate-fig:hover > .social-link {
  transform: translate(-101px, -32px);
}

.illo {
  transform: scale(0.7);
  position: relative;
  transition: 0.2s;
}
.illo > .tram {
  position: absolute;
  bottom: 0;
  z-index: 1;
  left: 33.5%;
}
.illo > .cityscape {
  display: flex;
}

.social-link, .social-link:focus {
  transition: 0.2s;
  position: absolute;
  bottom: -18px;
  right: -85px;
  display: flex;
  align-items: center;
  text-decoration: none;
  transform: translate(85px, -18px);
}
.social-link > .emblem {
  width: 16px;
  margin-right: 8px;
}
.social-link > .label {
  color: #444444;
}
.social-link:hover > .emblem {
  animation: 0.5s bounce linear infinite alternate;
}
.social-link:hover > .label {
  color: #ea4c89;
}

.trees-avenue {
  animation: 8s move linear infinite;
  position: absolute;
  bottom: 0;
  z-index: 1;
  display: flex;
  width: 100%;
  justify-content: space-between;
  margin-left: 24px;
}
.trees-avenue.-v2 {
  bottom: -16px;
  transform: scaleX(-1);
  animation-delay: -4s;
  z-index: 2;
}

.tree-figure.-v2 {
  margin-left: 200px;
  z-index: -1;
  position: relative;
}
.tree-figure > .trunk {
  background-color: #494C51;
  height: 100px;
  width: 6px;
  border-radius: 8px;
  position: relative;
  transform: translate(34px, -10px);
}
.tree-figure > .trunk::before, .tree-figure > .trunk::after {
  content: '';
  background-color: #494C51;
  border-radius: 8px;
  width: 6px;
  height: 48px;
  display: block;
  position: absolute;
  transform: rotate(-14deg) translate(-8px, 10px);
}
.tree-figure > .trunk::after {
  height: 52px;
  transform: rotate(14deg) translate(8px, 10px);
}
.tree-figure > .leaves {
  position: relative;
}
.tree-figure > .leaves > .chunk {
  position: absolute;
  width: 80px;
  height: 60px;
  border-radius: 50%;
  background-color: #afa5cc;
}
.tree-figure > .leaves > .chunk:first-child {
  width: 120px;
  height: 100px;
  left: -40px;
  top: -62px;
}
.tree-figure > .leaves > .chunk:nth-child(3n) {
  top: -40px;
  right: -110px;
  height: 80px;
}
.tree-figure > .leaves > .chunk:last-child {
  top: -80px;
  right: -80px;
  height: 80px;
}

.building-row {
  animation: 12s move-slow linear infinite;
  display: flex;
  align-items: flex-end;
  height: 320px;
  transform: translateX(60%);
}
.building-row.-v2 {
  transform: translateX(26.5%);
}
.building-row > .building {
  width: 140px;
  height: 100%;
  background-image: linear-gradient(42deg, rgba(255, 255, 255, 0) 32%, #c4bed3 80%);
}
.building-row > .building.-v1 {
  height: 80%;
}
.building-row > .building.-v2 {
  width: 120px;
}
.building-row > .building.-v3 {
  width: 160px;
  height: 120%;
  display: flex;
  justify-content: space-between;
}
.building-row > .building.-v3 > .top {
  margin-top: -8px;
  height: 8px;
  width: 24px;
  background-image: linear-gradient(42deg, rgba(255, 255, 255, 0) 32%, #c4bed3 80%);
}
.building-row > .building.-v4 {
  width: 120px;
  height: 70%;
}
.building-row > .building.-v5 > .top {
  height: 8px;
  width: 120%;
  margin-top: -8px;
  background-image: linear-gradient(42deg, rgba(255, 255, 255, 0) 32%, #c4bed3 80%);
  margin-left: -10%;
}
.building-row > .building.-v6 {
  height: 80%;
}

.tram-fig {
  transform: scale(0.8);
  position: relative;
}
.tram-fig > .powerline {
  height: 4px;
  background-color: #494C51;
  width: 400%;
  position: absolute;
  top: -67px;
  transform: translateX(-50%);
}
.tram-fig > .pantograph {
  position: absolute;
  top: -116px;
  right: 280px;
  transform: translateY(38px);
}
.tram-fig > .pantograph > .line {
  background-color: #494C51;
  height: 58px;
  width: 4px;
  transform: rotate(50deg);
  position: relative;
}
.tram-fig > .pantograph > .line:first-child::before {
  content: '';
  height: 4px;
  width: 10px;
  background-color: #494C51;
  display: block;
  position: absolute;
  top: 0px;
  right: -2.5px;
  transform: rotate(-8deg);
}
.tram-fig > .pantograph > .line:last-child {
  transform: rotate(-50deg) translate(18px, -14px);
}
.tram-fig > .body {
  display: flex;
  position: relative;
}
.tram-fig > .body::before {
  position: absolute;
  content: '';
  display: block;
  width: 100%;
  right: 0;
  top: -6px;
  border-bottom: 4px solid #b3b3b3;
  border-left: 20px solid transparent;
  border-right: 20px solid transparent;
  z-index: -1;
}
.tram-fig > .body > .trunks {
  display: flex;
}
.tram-fig > .shadow {
  width: 100%;
  height: 8px;
  background-color: #bbb5cc;
  border-radius: 40%;
  position: absolute;
  bottom: -12px;
  z-index: -2;
}

.nose-panel {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: flex-end;
}
.nose-panel.-reverse {
  transform: scaleX(-1);
}
.nose-panel > .top {
  height: 0;
  width: 44px;
  border-top: 20px solid #FAFAFA;
  border-left: 12px solid transparent;
  flex: 0 20px;
  position: relative;
}
.nose-panel > .top::after {
  content: '';
  display: block;
  position: absolute;
  top: -12px;
  right: 0;
  width: 10px;
  height: 4px;
  background-color: #494C51;
}
.nose-panel > .nose {
  height: 0;
  width: 44px;
  border-top: 32px solid #FAFAFA;
  border-left: 4px solid transparent;
  flex: 0 32px;
}
.nose-panel > .strip {
  background-color: #FAFAFA;
  width: 42px;
  height: 8px;
  flex: 1;
  position: relative;
}
.nose-panel > .strip::before {
  content: '';
  background-color: #ffb400;
  position: absolute;
  width: 70%;
  height: 4px;
  top: 2px;
}
.nose-panel > .strip::after {
  content: '';
  position: absolute;
  width: 6px;
  height: 8px;
  background-color: #494C51;
  left: -6px;
  top: 2px;
}
.nose-panel > .gutter {
  flex: 0 20px;
  width: 40px;
  border-top: 20px solid #606874;
  border-left: 38px solid transparent;
}

.wind-shield {
  display: flex;
  align-items: stretch;
}
.wind-shield > .panel {
  background-color: #FAFAFA;
  width: 4px;
}

.glass-panel {
  width: 32px;
  border-bottom: 3px solid #494C51;
  border-right: 12px solid #494C51;
  border-top-right-radius: 8px;
  position: relative;
}
.glass-panel > .glass {
  flex: 0 60px;
  width: 29px;
  border-bottom: 57px solid #b3b8cc;
  border-left: 18px solid transparent;
  border-top-right-radius: 8px;
}
.glass-panel::after {
  content: '';
  height: 60px;
  width: 8px;
  background-color: #FAFAFA;
  position: absolute;
  top: 0;
  right: -12px;
  z-index: -1;
}

.front-trunk {
  height: 140px;
  width: 52px;
  background-color: #FAFAFA;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.front-trunk > .outline {
  background-color: #494C51;
  height: 4px;
  width: 100%;
  margin-top: 8px;
  flex: 0 4px;
}
.front-trunk > .strip {
  flex: 1;
}
.front-trunk > .gutter {
  flex: 0 20px;
  background-color: #606874;
}

.front-window {
  display: flex;
  justify-content: space-between;
  margin-top: 6px;
}
.front-window > .window {
  overflow: hidden;
  border-radius: 8px;
  border: 3px solid #494C51;
  height: 60px;
  margin-left: 8px;
  margin-right: 8px;
  flex: 0 60px;
  display: flex;
  flex-direction: column;
}
.front-window > .window > .top {
  height: 50%;
  background-image: repeating-linear-gradient(-32deg, transparent, transparent 70%, #fff 70%, #fff 74%, transparent 74%, transparent), linear-gradient(to bottom, #8e96b3 32%, #b3b8cc);
  animation: 2s reflections linear infinite;
  background-size: 120% 58px;
  border-bottom: 2px solid #fff;
  border-left: 2px solid #fff;
  overflow-Y: hidden;
}
.front-window > .window > .bottom {
  flex: 1;
  background-image: repeating-linear-gradient(-32deg, transparent, transparent 70%, #fff 70%, #fff 74%, transparent 74%, transparent), linear-gradient(to bottom, #8e96b3 32%, #b3b8cc);
  animation: 2s reflections linear infinite;
  background-size: 120% 58px;
  border-top: 2px solid #494C51;
  border-left: 2px solid #fff;
  border-bottom-left-radius: 10px;
  border-bottom-right-radius: 10px;
}

.hook-column {
  padding-left: 4px;
  height: 80px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.hook-column > .hook {
  width: 8px;
  height: 10px;
  background-color: #606874;
  margin-bottom: 8px;
}
.hook-column > .hook:last-child {
  margin-bottom: 0;
}

.trunk-panel {
  background-color: #FAFAFA;
  width: 260px;
  height: 140px;
  display: flex;
  flex-direction: column;
}
.trunk-panel > .outline {
  background-color: #494C51;
  height: 4px;
  width: 100%;
  margin-top: 8px;
  flex: 0 4px;
}

.side-panel {
  flex: 1;
  display: flex;
}
.side-panel > .door {
  display: flex;
  margin-top: 6px;
  border-top: 2px solid #494C51;
  border-bottom: 4px solid #606874;
  flex: 0;
}

.panel-area {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.panel-area > .outline {
  height: 4px;
  background-color: #494C51;
  margin-left: 10px;
  margin-top: 10px;
}

.door-panel {
  width: 24px;
  border-left: 6px solid #494C51;
  border-right: 2px solid #494C51;
  border-bottom: 2px solid #494C51;
  background-image: linear-gradient(to bottom, #cc9000 16%, #ffb400 16%);
  display: flex;
  flex-direction: column;
}
.door-panel > .glass {
  background-color: #b3b8cc;
  margin-left: 4px;
  margin-top: 8px;
  border-top-left-radius: 6px;
  border-bottom-left-radius: 6px;
  flex: 1;
  border-top: 1px solid #494C51;
  border-left: 1px solid #494C51;
  border-bottom: 1px solid #494C51;
}
.door-panel:nth-child(2n) {
  transform: scaleX(-1);
}

.hinge-section {
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
}
.hinge-section > .hinge {
  width: 40%;
  background-color: #494C51;
  height: 30%;
}

.window-row {
  margin-top: 6px;
  margin-left: 10px;
  margin-right: 10px;
  display: flex;
  flex: 0 66px;
}
.window-row > .window {
  overflow: hidden;
  border-radius: 10px;
  border: 3px solid #494C51;
  height: 60px;
  width: 50%;
  margin-right: 4px;
  display: flex;
  flex-direction: column;
}
.window-row > .window > .top {
  height: 50%;
  background-image: repeating-linear-gradient(-32deg, transparent, transparent 70%, #fff 70%, #fff 74%, transparent 74%, transparent), linear-gradient(to bottom, #8e96b3 32%, #b3b8cc);
  animation: 2s reflections linear infinite;
  background-size: 120% 58px;
  border-bottom: 2px solid #fff;
  border-left: 2px solid #fff;
  overflow-Y: hidden;
}
.window-row > .window > .bottom {
  flex: 1;
  background-image: repeating-linear-gradient(-32deg, transparent, transparent 70%, #fff 70%, #fff 74%, transparent 74%, transparent), linear-gradient(to bottom, #8e96b3 32%, #b3b8cc);
  animation: 2s reflections linear infinite;
  background-size: 120% 58px;
  border-top: 2px solid #494C51;
  border-left: 2px solid #fff;
  border-bottom-left-radius: 10px;
  border-bottom-right-radius: 10px;
}
.window-row > .window:last-child {
  margin-right: 0;
}

.strip-row {
  margin-left: 20%;
  display: flex;
  height: 10px;
  width: 40%;
}
.strip-row > .emblem {
  height: 100%;
  width: 50%;
  background-color: #019BBE;
  border-top-left-radius: 8px;
}
.strip-row > .emblem:nth-child(2n) {
  border-top-left-radius: 0;
  background-color: #78B962;
  border-bottom-right-radius: 8px;
}

.gutter-row {
  flex: 0 20px;
  background-color: #606874;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  position: relative;
}
.gutter-row::before {
  content: '';
  position: absolute;
  width: 68px;
  height: 68px;
  bottom: -6px;
  left: 8%;
  border-radius: 50%;
  background-color: #222832;
  z-index: -1;
}
.gutter-row::after {
  content: '';
  position: absolute;
  width: 68px;
  height: 68px;
  bottom: -6px;
  right: 8%;
  border-radius: 50%;
  background-color: #222832;
  z-index: -1;
}
.gutter-row > .inner {
  width: 88%;
  height: 10px;
  background-color: #364151;
  position: relative;
}
.gutter-row > .inner::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 8px;
  border-top: 10px solid #606874;
  border-right: 12px solid transparent;
}
.gutter-row > .inner::after {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  width: 8px;
  border-top: 10px solid #606874;
  border-left: 12px solid transparent;
}

.trunk-panel:first-child > .side-panel > .panel-area > .window-row > .window:last-child > .top {
  overflow-x: hidden;
  position: relative;
}
.trunk-panel:first-child > .side-panel > .panel-area > .window-row > .window:last-child > .top::before {
  content: '';
  display: block;
  position: absolute;
  width: 100%;
  height: 78%;
  bottom: 0;
  left: 0;
  background-color: #484f6b;
  z-index: 1;
}
.trunk-panel:first-child > .side-panel > .panel-area > .window-row > .window:last-child > .top::after {
  content: "St.Kilda/Fitzroy";
  position: absolute;
  top: 8px;
  left: 0;
  z-index: 1;
  font-family: "VT323", monospace;
  color: #FFB700;
  animation: 4s moving-text linear infinite;
}

.trunk-panel:nth-child(2n) {
  background-image: radial-gradient(circle at 175% 90%, #009e70 60%, #fff 40%);
}
.trunk-panel:nth-child(2n) > .side-panel > .panel-area > .strip-row {
  margin-left: 0;
  align-self: center;
}

.trunk-panel:nth-child(3n) {
  background-image: radial-gradient(ellipse at 0% 16%, #009e70 55%, #fff 40%);
  width: 212px;
}
.trunk-panel:nth-child(3n) > .side-panel > .door:last-child {
  display: none;
}
.trunk-panel:nth-child(3n) > .side-panel > .panel-area > .strip-row {
  margin-left: auto;
  margin-right: 20%;
  align-self: flex-end;
}

@media (max-width: 768px) {
  .encapsulate-fig {
    border: 0;
    width: 100%;
  }

  .illo {
    transform: scale(0.4);
  }

  .social-link {
    display: none;
  }
}
