/*
*,
*::after,
*::before {
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
}

.clearfix::before,
.clearfix::after {
    content: '';
    display: table;
}

.clearfix::after {
    clear: both;
}

p{
    color: #162300;
}
a {
    text-decoration: none;
    color: #aaa;
    outline: none;
}

a:hover,
button:hover {
    color: #515158;
    outline: none;
}

a:focus,
button:focus {
    outline: none;
}*/

.hidden {
    position: absolute;
    overflow: hidden;
    width: 0;
    height: 0;
    pointer-events: none;
}

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

.map.container {
    position: relative;
    width: 100%;
}


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

.mall {
    position: relative;
    width: 100%;
    height: 100%;
    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);
}

.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%;
}
.levels svg{
    background-color: #fbfbfb;
    box-shadow: -5px 7px 9px 1px #d8d8d8;
    transition: .3s all ease-in-out;
}
.levels svg:hover{
    background-color: #f7ffcd;
    box-shadow: -5px 7px 9px 1px #d8d8d8;
}

.surroundings {
    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--1::after {
    content: 'L1';
}

.level--2::after {
    content: 'L2';
}

.level--3::after {
    content: 'L3';
}

.level--4::after {
    content: 'L4';
}

.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(23vmin) rotate3d(0,0,1,27deg);
    /*-webkit-transform: translateZ(15vmin) rotate3d(0,0,1,20deg);*/
    /* go to center */
    /*transform: translateZ(15vmin) rotate3d(0,0,1,20deg);*/
    transform: translateZ(23vmin) rotate3d(0,0,1,27deg);
}

/* 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 {
    position: absolute;
    top: 0;
    right: 0;
    text-align: center;
    -webkit-transition: opacity 0.8s;
    transition: opacity 0.8s;
}

.mallnav--hidden {
    pointer-events: none;
    opacity: 0;
}

/* Box button */
.boxbutton {
    font-size: 1.8em;
    display: block;
    width: 1.5em;
    height: 1.5em;
    margin: 0;
    padding: 0;
    color: #414141;
    border: 0;
    background: #c9dc68;
}

.boxbutton--dark {
    background: #6bac07;
}

.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: 2em;
    text-align: center;
    background: #f1f0f0;
    -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);
    color: #6a0
}

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

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

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

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

.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;
    color: ;
}

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

.content__desc {
    text-align: left;
    margin: 3vmin 0 25px 0;
}

.content__button {
    position: absolute;
    top: -100%;
    right: 30px;
    -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: 5em 0 1em;
    background: #fff;
    display: none
}

.search {
    position: fixed;
    z-index: 100;
    top: 0;
    right: 0;
    left: calc(100vw - 300px);
}

.search__input {
    width: 100%;
    padding: 1.315em 2em;
    color: #fff;
    border: 0;
    background: #515158;
    border-radius: 0;
}

.search__input:focus {
    outline: none;
}

.label {
    position: absolute;
    top: 4em;
    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:first-child {
    margin-top: 2em;
}

.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: 'Nourish & Refresh';
    color: #7cbf7f;
}

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

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

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

.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: 5.5vmin;
    height: 8.25vmin;
    margin: -8.25vmin 0 0 -2.25vmin; /* 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: 25px;
    /*width: 100%;*/
    height: 100%;
    opacity: 0;
    -webkit-transform: translate3d(0,-100px,0);
    transform: translate3d(0,-100px,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;
}

.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: 51vmin;
    left: 4vmin;
}
.pin--1-2 {
    top: 52vmin;
    left: 12vmin;
}
.pin--1-3 {
    top: 54vmin;
    left: 20vmin;
}
.pin--1-4 {
    top: 56vmin;
    left: 28vmin;
}
.pin--1-5 {
    top: 57vmin;
    left: 36vmin;
}
.pin--1-6 {
    top: 57vmin;
    left: 48vmin;
}
.pin--1-7 {
    top: 45vmin;
    left: 60vmin;
}
.pin--1-8 {
    top: 34vmin;
    left: 63vmin;
}
.pin--1-9 {
    top: 32vmin;
    left: 80vmin;
}
.pin--1-11 {
    top: 44vmin;
    left: 78vmin;
}
.pin--1-12 {
    top: 55vmin;
    left: 73vmin;
}
.pin--1-13 {
    top: 65vmin;
    left: 62vmin;
}
.pin--1-14 {
    top: 73vmin;
    left: 44vmin;
}
.pin--1-15 {
    top: 73vmin;
    left: 34vmin;
}
.pin--1-16 {
    top: 71vmin;
    left: 25vmin;
}
.pin--1-17 {
    top: 70vmin;
    left: 16vmin;
}
.pin--1-18 {
    top: 68vmin;
    left: 8vmin;
}
.pin--1-19 {    
    top: 67vmin;
    left: 0vmin; }
/* 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;
}

@media screen and (max-width: 65.625em), screen and (max-height: 40.625em) {
    /*    .main {
            width: 100vw;
        }*/
    .spaces-list,
    .search {
        width: 100vw;
        right: 100%;
        left: auto;
    }
    .spaces-list--open,
    .spaces-list--open .search {
        right: 0;
    }
    .open-search,
    .close-search {
        position: absolute;
        display: block;
        top: 0;
        right: 0;
        z-index: 1000;
        display: none;
    }
    .mallnav {
        top: 4em;
    }
    .map .container {
        overflow: hidden;
    }
    .container--overflow {
        overflow: auto;
    }
    .content__item {
        overflow: auto;
    }
    .codrops-header {
        padding-right: 4em;
        text-align: left;
    }
}
@media (max-width:800px){
    .levels {
        width: 78vmin;
        height: 64vmin;
        margin: -55vmin 0 0 -40vmin;
    }
}
.click-map {
    position: absolute;
    top: 70px;
    color: #66aa00;
    width: 250px;
}
.click-map i {
    font-size: 18px;
    margin: 0 5px;
    transition: 0.3s;
}

.click-map span {
    display: inline-block;
    width: 25px;
    height: 15px;
    background: #c9c7c7;
    transform: skew(300deg, 30deg);
    position: absolute;
    right: 45px;
    bottom: 0;
    opacity: 0.5;
    transition: 0.3s ease-in-out;
    animation: clickto linear alternate infinite 2s;
}
@keyframes clickto {
    from {bottom: 0;}
    to {bottom: 5px;}
}
.click-map span:last-child{
    bottom: -11px;
    animation: none
}