body {
  font-family: 'Avenir Next', Avenir, 'Helvetica Neue', Helvetica, Arial, sans-serif;
  color: #515158;
  background: #f0f0f0;
  overflow: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  text-shadow: rgba(0,0,0,.01) 0 0 1px;
}

.btn{
  border-radius: 0 !important;
}

/* Icons */
.icon {
  display: block;
  width: 1em;
  height: 1em;
  margin: 0 auto;
  fill: currentColor;
}

/* Header */

.codrops-header {
  position: absolute;
  z-index: 100;
  top: 0;
  left: 0;
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  padding: 1.5em 1em;
  text-align: center;
}

.codrops-header h1 {
  font-size: 1.15em;
  font-weight: normal;
  line-height: 1;
  margin: 0 0 0 1em;
}

/* Top Navigation Style */

.codrops-links {
  position: relative;
  display: inline-block;
  text-align: center;
  white-space: nowrap;
}

.codrops-links::after {
  content: '';
  position: absolute;
  top: 0;
  left: 50%;
  width: 1px;
  height: 100%;
  background: rgba(0, 0, 0, 0.1);
  -webkit-transform: rotate3d(0, 0, 1, 22.5deg);
  transform: rotate3d(0, 0, 1, 22.5deg);
}

.codrops-icon {
  display: inline-block;
  width: 1.5em;
  margin: 0.5em;
  padding: 0em 0;
  text-decoration: none;
}

.codrops-icon span {
  display: none;
}

.codrops-icon::before {
  font-family: 'codropsicons';
  font-weight: normal;
  font-style: normal;
  font-variant: normal;
  line-height: 1;
  margin: 0 5px;
  text-transform: none;
  speak: none;
  -webkit-font-smoothing: antialiased;
}

.codrops-icon--drop::before {
  content: '\e001';
  color: #09c;
}

.codrops-icon--prev::before {
  content: '\e004';
}

.main {
  position: fixed;
  top: 0;
  left: 0;
  overflow: hidden;
  width: calc(100vw - 300px);
  height: 100vh;
}

.mall {
  position: relative;
  width: 100%;
  height: 100%;
  top: -4em;
  pointer-events: none;
  -webkit-perspective: 3500px;
  perspective: 3500px;
  -webkit-perspective-origin: 0% 50%;
  perspective-origin: 0% 50%;
  -webkit-transition: -webkit-transform 0.8s;
  transition: transform 0.8s;
  -webkit-transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1);
  transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1);
  will-change: auto;
}

.mall.mall--content-open {
  -webkit-transform: translate3d(0, -25%, 0) scale3d(0.8, 0.8, 1);
  transform: translate3d(0, -25%, 0) scale3d(0.8, 0.8, 1);
}

.surroundings,
.levels {
  position: absolute;
  top: 50%;
  left: 50%;
}

.surroundings {
  user-select: none;
  pointer-events: none;
  width: 192vmin;
  /* double of mall map */
  height: 128vmin;
  margin: -64vmin 0 0 -96vmin;
  pointer-events: none;
  -webkit-transition: opacity 0.8s;
  transition: opacity 0.8s;
  -webkit-transform-style: preserve-3d;
  transform-style: preserve-3d;
}

.surroundings__map {
  opacity: 0.3;
  max-width: 100%;
  display: block;
}

.surroundings--hidden {
  opacity: 0;
}

.levels {
  width: 96vmin;
  height: 64vmin;
  margin: -32vmin 0 0 -48vmin;
  -webkit-transition: -webkit-transform 0.3s;
  transition: transform 0.3s;
  -webkit-transform-style: preserve-3d;
  transform-style: preserve-3d;
}

.surroundings,
.levels {
  -webkit-transform: rotateX(70deg) rotateZ(-45deg) translateZ(-15vmin);
  transform: rotateX(70deg) rotateZ(-45deg) translateZ(-15vmin);
}

.level {
  position: relative;
  width: 100%;
  height: 100%;
  cursor: pointer;
  pointer-events: auto;
  -webkit-transition: opacity 1s, -webkit-transform 1s;
  transition: opacity 1s, transform 1s;
  -webkit-transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
  transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
  -webkit-transform-style: preserve-3d;
  transform-style: preserve-3d;
}

.level::after {
  font-size: 2.5vmin;
  line-height: 0;
  position: absolute;
  z-index: 100;
  top: -2em;
  left: 3.5em;
  white-space: nowrap;
  color: #7d7d86;
  -webkit-transform: rotateZ(45deg) rotateX(-70deg) translateZ(5vmin);
  transform: rotateZ(45deg) rotateX(-70deg) translateZ(5vmin);
  -webkit-transition: -webkit-transform 1s, color 0.3s;
  transition: transform 1s, color 0.3s;
  -webkit-transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
  transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
}

.level:hover::after,
.level--current::after {
  color: #515158;
}

.level--current::after {
  -webkit-transform: rotateZ(-20deg) rotateZ(45deg) rotateX(-70deg) translateZ(5vmin) translateX(5vmin) translateY(-10vmin);
  transform: rotateZ(-20deg) rotateZ(45deg) rotateX(-70deg) translateZ(5vmin) translateX(5vmin) translateY(-10vmin);
}

.level::after {
  content: attr(aria-label);
}

.level:not(:first-child) {
  position: absolute;
  top: 0;
  left: 0;
}

.level--2 {
  -webkit-transform: translateZ(10vmin);
  transform: translateZ(10vmin);
}

.level--3 {
  -webkit-transform: translateZ(20vmin);
  transform: translateZ(20vmin);
}

.level--4 {
  -webkit-transform: translateZ(30vmin);
  transform: translateZ(30vmin);
}


/* Selection transitions */

.levels--selected-1 .level:not(.level--1),
.levels--selected-2 .level:not(.level--2),
.levels--selected-3 .level:not(.level--3),
.levels--selected-4 .level:not(.level--4) {
  opacity: 0;
  /* fade out all others */
}

/* Other levels */

.level--current~.level {
  -webkit-transform: translateZ(90vmin);
  transform: translateZ(90vmin);
}

.levels--selected-2 .level--1,
.levels--selected-3 .level--1,
.levels--selected-4 .level--1,
.levels--selected-3 .level--2,
.levels--selected-4 .level--2,
.levels--selected-4 .level--3 {
  -webkit-transform: translateZ(-60vmin);
  transform: translateZ(-60vmin);
}

/* Delays */
/* 1 */

.levels--selected-1 .level--3,
.levels--selected-2 .level--3,
.levels--selected-3 .level--2,
.levels--selected-4 .level--2 {
  -webkit-transition-delay: 0.1s;
  transition-delay: 0.1s;
}

.levels--selected-1 .level--2,
.levels--selected-2 .level--current,
.levels--selected-2 .level--current::after,
.levels--selected-3 .level--current,
.levels--selected-3 .level--current::after,
.levels--selected-4 .level--3 {
  -webkit-transition-delay: 0.25s;
  transition-delay: 0.25s;
}

.levels--selected-1 .level--current,
.levels--selected-1 .level--current::after,
.levels--selected-4 .level--current,
.levels--selected-4 .level--current::after {
  -webkit-transition-delay: 0.45s;
  transition-delay: 0.45s;
}

/* Current level */

.level.level--current {
  -webkit-transform: translateZ(15vmin) rotate3d(0, 0, 1, 20deg);
  /* go to center */
  transform: translateZ(15vmin) rotate3d(0, 0, 1, 20deg);
}

/* Navigation classes */
.levels--open .level,
.levels--open .level::after {
  -webkit-transition: -webkit-transform 1s, opacity 1s;
  transition: transform 1s, opacity 1s;
  -webkit-transition-delay: 0s;
  transition-delay: 0s;
}

.levels--open .level.level--current {
  opacity: 1;
}

.levels--open .level.level--moveOutUp,
.levels--open .level.level--moveOutDown {
  opacity: 0;
}

.levels--open .level.level--moveOutUp {
  -webkit-transform: translateZ(90vmin);
  transform: translateZ(90vmin);
}

.levels--open .level.level--moveOutDown {
  -webkit-transform: translateZ(-60vmin);
  transform: translateZ(-60vmin);
}

/* Level nav */
.mallnav--hidden {
  pointer-events: none;
  opacity: 0;
}

/* Box button */
.boxbutton {
  font-size: 2em;
  display: block;
  width: 2em;
  height: 2em;
  margin: 0;
  padding: 0;
  color: #fff;
  border: 0;
  background: #d7d7dc;
}

.boxbutton--dark {
  background: #c4c4c7;
}

.boxbutton--darker {
  background: #2c2c2f;
}

.boxbutton--alt {
  background: #3d1975;
}

.boxbutton--disabled,
.boxbutton--disabled:focus,
.boxbutton--disabled:hover {
  cursor: default;
  pointer-events: none;
  opacity: 0.2;
}

/* Level map */

.map__ground {
  fill: #d7d7dc;
}

.map__outline {
  -webkit-transition: fill 0.3s;
  transition: fill 0.3s;
  fill: #bbb;
}

.level:hover .map__outline,
.level--current .map__outline {
  fill: #a6a3a8;
}

.map__tree {
  fill: #7bad7f;
}

.map__lake {
  fill: #a2bbdd;
}

.map__space {
  -webkit-transition: fill-opacity 0.8s;
  transition: fill-opacity 0.8s;
  fill: #bdbdbd;
  fill-opacity: 0.6;
}

.level--current .map__space {
  fill-opacity: 1;
}

.map__space--selected {
  fill: #A4A4A4;
}

/* Content */
.content {
  position: absolute;
  top: 100%;
  width: 100%;
  height: 50%;
}

.content__item {
  position: absolute;
  top: 0;
  width: 100%;
  height: 100%;
  padding: 3em;
  text-align: center;
  background: #d7d7dc;
  -webkit-transition: -webkit-transform 0.8s;
  transition: transform 0.8s;
  -webkit-transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1);
  transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1);
}

.content--open .content__item {
  -webkit-transition: none;
  transition: none;
}

.content__item--current {
  -webkit-transform: translate3d(0, -100%, 0);
  transform: translate3d(0, -100%, 0);
}

.content__item-title {
  font-size: 1.85em;
  margin: 0;
  padding: 0 0 0.75em 0;
  pointer-events: none;
  font-weight: normal;
  opacity: 0;
  -webkit-transform: translate3d(0, -3em, 0) translate3d(0, -100%, 0);
  transform: translate3d(0, -3em, 0) translate3d(0, -100%, 0);
}

.content__item[data-category='1'] .content__item-title {
  color: #7cbf7f;
}

.content__item[data-category='2'] .content__item-title {
  color: #6584c7;
}

.content__item[data-category='3'] .content__item-title {
  color: #dc4b7c;
}

.content__item[data-category='4'] .content__item-title {
  color: #8d65e0;
}

.content__item--hover .content__item-title {
  opacity: 1;
  -webkit-transition: opacity 0.3s;
  transition: opacity 0.3s;
}

.content__item--current .content__item-title {
  opacity: 1;
  -webkit-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0);
}

.content__item-details {
  opacity: 0;
  margin: 0 auto;
  max-width: 50vmax;
}

.content__item--current .content__item-details {
  opacity: 1;
}

.content__meta {
  margin: 0;
  font-size: 0.85em;
  line-height: 1.5;
}

.content__meta-item {
  display: inline-block;
  padding: 0 0.25em;
}

.content__meta .icon {
  display: inline-block;
  vertical-align: middle;
}

.content__desc {
  text-align: left;
  margin: 7vmin 0 0 0;
}

.content__button {
  position: absolute;
  top: -100%;
  right: 0;
  -webkit-transition: opacity 0.3s 0.7s;
  transition: opacity 0.3s 0.7s;
}

.content__button--hidden {
  pointer-events: none;
  opacity: 0;
  -webkit-transition: none;
  transition: none;
}

/* Spaces list (sidebar) */

.spaces-list {
  position: absolute;
  top: 0;
  right: 0;
  width: 300px;
  min-height: 100vh;
  padding: 1em 0 1em;
  background: #fff;
}

.search__input {
  border-radius: 0;
}

.label {
  position: absolute;
  top: 0.5em;
  right: 0;
}

.label__text {
  font-size: 0.85em;
  line-height: 1;
  display: block;
  padding: 1em;
  color: #e4e4e4;
}

.label__checkbox {
  position: absolute;
  z-index: 10;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  cursor: pointer;
  opacity: 0;
}

.label__checkbox:checked+.label__text {
  color: #515158;
}

.list {
  margin: 0 0 2em;
  padding: 0 1em 1em 2em;
  list-style: none;
}

.list__item {
  font-size: 1.05em;
  line-height: 1;
  position: relative;
  display: block;
}

.list__item::after {
  content: 'L'attr(data-level) ' / 'attr(data-space);
  font-size: 0.65em;
  line-height: 3;
  position: absolute;
  top: 0;
  right: 0;
  padding: 0 0.5em;
  pointer-events: none;
  color: #c7c7c9;
}

.list__link {
  font-size: 0.85em;
  display: block;
  padding: 0.5em 0.5em 0.5em 0;
}

.list__item--active .list__link,
.list__link:hover {
  color: #515158;
}

/* Pins */
.level__pins {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  -webkit-transform-style: preserve-3d;
  transform-style: preserve-3d;
}

.level__pins--active {
  pointer-events: auto;
}

.pin {
  position: absolute;
  width: 10vmin;
  height: auto;
  margin: -10vmin 0 0 -5vmin;
  /* let the bottom tip be the reference point for individual coordinates */
  -webkit-transform: rotateZ(-20deg) rotateZ(45deg) rotateX(-70deg);
  transform: rotateZ(-20deg) rotateZ(45deg) rotateX(-70deg);
  -webkit-transform-origin: 50% 100%;
  transform-origin: 50% 100%;
  -webkit-transform-style: preserve-3d;
  transform-style: preserve-3d;
}

.pin__icon {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  opacity: 0.45;
  -webkit-transform: translate3d(0, -1.2em, 0);
  transform: translate3d(0, -1.2em, 0);
  -webkit-transition: opacity 0.3s, -webkit-transform 0.3s;
  transition: opacity 0.3s, transform 0.3s;
  -webkit-transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1);
  transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1);
}

.level__pins--active .pin__icon {
  opacity: 1;
  -webkit-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0);
}

.pin:nth-child(2) .pin__icon {
  -webkit-transition-delay: 0.05s;
  transition-delay: 0.05s;
}

.pin:nth-child(3) .pin__icon {
  -webkit-transition-delay: 0.1s;
  transition-delay: 0.1s;
}

.pin:nth-child(4) .pin__icon {
  -webkit-transition-delay: 0.15s;
  transition-delay: 0.15s;
}

.pin:nth-child(5) .pin__icon {
  -webkit-transition-delay: 0.2s;
  transition-delay: 0.2s;
}

.pin:nth-child(6) .pin__icon {
  -webkit-transition-delay: 0.25s;
  transition-delay: 0.25s;
}

.pin:nth-child(7) .pin__icon {
  -webkit-transition-delay: 0.3s;
  transition-delay: 0.3s;
}

.pin:nth-child(8) .pin__icon {
  -webkit-transition-delay: 0.35s;
  transition-delay: 0.35s;
}

.pin:nth-child(9) .pin__icon {
  -webkit-transition-delay: 0.4s;
  transition-delay: 0.4s;
}

.pin[data-category='1'] .icon--pin {
  fill: #7cbf7f;
}

.pin[data-category='2'] .icon--pin {
  fill: #6584c7;
}

.pin[data-category='3'] .icon--pin {
  fill: #dc4b7c;
}

.pin[data-category='4'] .icon--pin {
  fill: #8d65e0;
}

.pin--active .icon--pin {
  stroke: #515158;
  stroke-width: 15px;
}

.pin--hoverable .pin__icon:hover {
  transform: scale(1.2);
}

.icon--pin {
  width: 100%;
  height: 100%;
}

.icon--logo {
  position: absolute;
  top: 11%;
  left: 25%;
  width: 50%;
  height: 50%;
  fill: white;
  fill-opacity: 0.6;
  -webkit-transition: fill-opacity 0.3s;
  transition: fill-opacity 0.3s;
}

.pin--active .icon--logo,
.pin:hover .icon--logo {
  fill-opacity: 1;
}

/* Pins for floor 1 */
.pin--1-1 {
  top: 60vmin;
  left: 8vmin;
}

.pin--1-2 {
  top: 15vmin;
  left: 15vmin;
}

.pin--1-3 {
  top: 15vmin;
  left: 88vmin;
}

.pin--1-4 {
  top: 40vmin;
  left: 77vmin;
}

.pin--1-5 {
  top: 33vmin;
  left: 38vmin;
}

.pin--1-6 {
  top: 6vmin;
  left: 27vmin;
}

.pin--1-7 {
  top: 36vmin;
  left: 61vmin;
}

.pin--1-8 {
  top: 9vmin;
  left: 59vmin;
}

.pin--1-9 {
  top: 8vmin;
  left: 51vmin;
}

/* Pins for floor 2 */
.pin--2-1 {
  top: 7vmin;
  left: 22vmin;
}

.pin--2-2 {
  top: 39vmin;
  left: 5vmin;
}

.pin--2-3 {
  top: 21vmin;
  left: 84vmin;
}

.pin--2-4 {
  top: 39vmin;
  left: 53vmin;
}

.pin--2-5 {
  top: 14vmin;
  left: 50vmin;
}

.pin--2-6 {
  top: 60vmin;
  left: 15vmin;
}

.pin--2-7 {
  top: 34vmin;
  left: 37vmin;
}

.pin--2-8 {
  top: 52vmin;
  left: 74vmin;
}

/* Pins for floor 3 */
.pin--3-1 {
  top: 17vmin;
  left: 15vmin;
}

.pin--3-2 {
  top: 42vmin;
  left: 5vmin;
}

.pin--3-3 {
  top: 19vmin;
  left: 85vmin;
}

.pin--3-4 {
  top: 61vmin;
  left: 57vmin;
}

.pin--3-5 {
  top: 58vmin;
  left: 25vmin;
}

.pin--3-6 {
  top: 30vmin;
  left: 57vmin;
}

.pin--3-7 {
  top: 32vmin;
  left: 37vmin;
}

/* Pins for floor 4 */
.pin--4-1 {
  top: 55vmin;
  left: 21vmin;
}

.pin--4-2 {
  top: 18vmin;
  left: 20vmin;
}

.pin--4-3 {
  top: 21vmin;
  left: 88vmin;
}

.pin--4-4 {
  top: 52vmin;
  left: 74vmin;
}

.pin--4-5 {
  top: 33vmin;
  left: 38vmin;
}

.pin--4-6 {
  top: 39vmin;
  left: 56vmin;
}

.pin--4-7 {
  top: 58vmin;
  left: 10vmin;
}

/* Mobile compatability */
.open-search,
.close-search {
  display: none;
}

.navbar-main .navbar-nav .nav-item {
  padding-left: 1em;
}

.navbar-main .navbar-nav .nav-item:not(:last-child) {
  border-right: 1px solid #666;
  padding-right: 1em
}





.grouped-by-category [data-category='1']:first-child,
.grouped-by-category :not([data-category='1']) + [data-category='1'],
.grouped-by-category [data-category='2']:first-child,
.grouped-by-category :not([data-category='2']) + [data-category='2'],
.grouped-by-category [data-category='3']:first-child,
.grouped-by-category :not([data-category='3']) + [data-category='3'],
.grouped-by-category [data-category='4']:first-child,
.grouped-by-category :not([data-category='4']) + [data-category='4'] {
	margin-top: 4em;
}

.grouped-by-category [data-category='1']:first-child::before,
.grouped-by-category :not([data-category='1']) + [data-category='1']::before,
.grouped-by-category [data-category='2']:first-child::before,
.grouped-by-category :not([data-category='2']) + [data-category='2']::before,
.grouped-by-category [data-category='3']:first-child::before,
.grouped-by-category :not([data-category='3']) + [data-category='3']::before,
.grouped-by-category [data-category='4']:first-child::before,
.grouped-by-category :not([data-category='4']) + [data-category='4']::before {
	font-size: 1.25em;
	position: absolute;
	top: -1.75em;
	left: 0;
	color: #c7c7c9;
}

.grouped-by-category [data-category='1']:first-child::before,
.grouped-by-category :not([data-category='1']) + [data-category='1']::before {
	content: attr(data-category-title);
	color: #7cbf7f;
}

.grouped-by-category [data-category='2']:first-child::before,
.grouped-by-category :not([data-category='2']) + [data-category='2']::before {
	content: attr(data-category-title);
	color: #6584c7;
}

.grouped-by-category [data-category='3']:first-child::before,
.grouped-by-category :not([data-category='3']) + [data-category='3']::before {
	content: attr(data-category-title);
	color: #dc4b7c;
}

.grouped-by-category [data-category='4']:first-child::before,
.grouped-by-category :not([data-category='4']) + [data-category='4']::before {
	content: attr(data-category-title);
	color: #8d65e0;
}




@media (max-width: 768px) {
  .navbar-main .navbar-nav .nav-item:not(:last-child) {
   border-right: none;
 }
}

@media screen and (max-width: 65.625em),
screen and (max-height: 40.625em) {
  .main {
    width: 100vw;
  }

  .search-input-group > * {
    margin-top: 4em;
    display: block !important;
    width: auto !important;
  }

  .spaces-list,
  .search {
    width: 100vw;
    right: 100%;
    left: auto;
  }

  .spaces-list--open,
  .spaces-list--open .search {
    right: 0;
  }

  .open-search,
  .close-search {
    z-index: 1000;
    display: block;
  }

  .close-search {
    position: absolute;
    top: 0;
    right: 0;
  }
    
  .content__item {
    overflow: auto;
  }

  .codrops-header {
    padding-right: 4em;
    text-align: left;
  }
}

/* bootstrap */
.navbar-nav.centered {
  float:none;
  margin:0 auto;
  display: block;
  text-align: center;
}

.navbar-nav.centered > li {
  display: inline-block;
  float:none;
}