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

.clearfix::after {
	clear: both;
}


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


.container {
	position: relative;
	width: 100vw;
	height: 100vh;
	/* background-color: yellow; */
}

.main {
	position: fixed;
	top: 21vh; /* 0 */
	left: 0;
	overflow: hidden;
	width: calc(100vw - 21vw);
	height: 75vh;
	/* background-color: green; */
}

.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%;
}

.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: 3vmin;
	line-height: 0;
	position: absolute;
	z-index: 100;
	top: -3em;
    left: 1em;
	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: '1-';
}

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

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

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

.level--5::after {
	content: '5-';
}

.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);
}

.level--5 {
	-webkit-transform: translateZ(40vmin);
	transform: translateZ(40vmin);
}


/* 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),
.levels--selected-5 .level:not(.level--5) {
	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-5 .level--1,
.levels--selected-3 .level--2,
.levels--selected-4 .level--2,
.levels--selected-5 .level--2,
.levels--selected-4 .level--3,
.levels--selected-5 .level--3,
.levels--selected-5 .level--4 {
	-webkit-transform: translateZ(-60vmin);
	transform: translateZ(-60vmin);
}



/* 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 {
	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: 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: #d7d9e5; /* #d7d7dc */
}

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

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

.map__tree {
	fill: #7bad7f;
}

.map__lake {
	fill: #a2bbdd;
}

.map__space {
	-webkit-transition: fill-opacity 0.8s;
	transition: fill-opacity 0.8s;
	fill:#ebd800; /*#f2a808; */ /* #f2a808;  #b31417 */
	fill-opacity: 1;
}

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

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

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

.content__item {
	position: absolute;
	top: 0;
	width: 100%;
	height: 100%;
	padding: 3em;
	text-align: center;
	background: rgba(255, 255, 255, .8);
	-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.60em 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: #ff6600;
}

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

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

.content__item[data-category='5'] .content__item-title {
	color: #869da0;
}


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

.content__button {
	position: absolute;
	top: -159%;
	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: 0vh;
	right: 0;
	width: 21vw;
	height: 62vh;
	padding: 5em 0 1em;
	background: #fff;
	overflow-y:auto; 
}

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

.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;
	text-align: left;
}

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

.list__item a {
	font-weight: 400;
}

.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'],
.grouped-by-category [data-category='5']:first-child,
.grouped-by-category :not([data-category='5']) + [data-category='5'] {
	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,
.grouped-by-category [data-category='5']:first-child::before,
.grouped-by-category :not([data-category='5']) + [data-category='5']::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: 'Магазини';
	color: #7cbf7f;
}

.grouped-by-category [data-category='2']:first-child::before,
.grouped-by-category :not([data-category='2']) + [data-category='2']::before {
	content: 'Фудхолл ТРЦ';
	color: #ff6600;
}

.grouped-by-category [data-category='3']:first-child::before,
.grouped-by-category :not([data-category='3']) + [data-category='3']::before {
	content: 'Послуги';
	color: #dc4b7c;
}

.grouped-by-category [data-category='4']:first-child::before,
.grouped-by-category :not([data-category='4']) + [data-category='4']::before {
	content: 'Розваги';
	color: #8d65e0;
}

.grouped-by-category [data-category='5']:first-child::before,
.grouped-by-category :not([data-category='5']) + [data-category='5']::before {
	content: 'Оренда';
	color: #869da0;
}

.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: 2.5vmin; /* 5.5 */
	height: 5vmin; /* 8.25 */
	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: 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[data-category='1'] .icon--pin {
	fill: #83b211;
}
.pin[data-category='2'] .icon--pin {
	fill: #ff6600;
}
.pin[data-category='3'] .icon--pin {
	fill: #dc4b7c;
}
.pin[data-category='4'] .icon--pin {
	fill: #8d65e0;
}

.pin[data-category='5'] .icon--pin {
	fill: #869da0;
}

.pin--active .icon--pin {
	stroke: #ffba00;
	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-00 {top:23vmin; left: 47vmin;}
.pin--1-1 { top: 30vmin; left: 65vmin; }
.pin--1-02 {top:20vmin; left: 41vmin;}
.pin--1-03 {top:20vmin; left: 33vmin;}
.pin--1-04 {top:20vmin; left: 22vmin;}
.pin--1-05 {top:28vmin; left: 16vmin;}
.pin--1-06 {top:32vmin; left: 16.5vmin;}
.pin--1-07 {top:35.5vmin; left: 17vmin;}
.pin--1-08 {top:39vmin; left: 17.5vmin;}
.pin--1-09 {top:43vmin; left: 18vmin;}
.pin--1-10 {top:57vmin; left: 18vmin;}
.pin--1-11 {top:47.5vmin; left: 31.5vmin;}
.pin--1-112 {top:47vmin; left: 40vmin;}
.pin--1-12 {top:47vmin; left: 24vmin;}
.pin--1-113 {top:49vmin; left: 44vmin;}
.pin--1-13 {top:56vmin; left: 39vmin;}
.pin--1-14 {top:55vmin; left: 57vmin;}
.pin--1-151 {top:55vmin; left:72vmin;}
.pin--1-152 {top:55vmin; left:79vmin;}
.pin--1-165 {top:31vmin; left: 38vmin;}
.pin--1-169 { top: 37vmin; left: 35vmin; }
.pin--1-160 { top:37vmin; left: 42vmin; }
.pin--1-171 { top:39vmin; left:48.5vmin; }
.pin--1-172 {top:46vmin; left:48vmin;}
.pin--1-173 {top:52vmin; left: 48vmin;}
.pin--1-18 {top:30vmin; left: 48vmin;}


/* Pins for floor 2 */
.pin--2-01 { top: 21vmin; left: 69vmin; }
.pin--2-05 { top: 54vmin; left: 70vmin; }
.pin--2-06 { top: 57vmin; left: 55.5vmin;}
.pin--2-07 {top:58vmin; left:49vmin;}
.pin--2-08 {top:58vmin; left:41.5vmin;}
.pin--2-10 { top: 58vmin; left: 33vmin; }
.pin--2-11 { top: 55vmin; left: 15vmin; }
.pin--2-15 { top: 28vmin; left: 15vmin; }
.pin--2-16 { top: 25.5vmin; left: 33vmin; }
.pin--2-18 {top: 39vmin; left: 47vmin;}
.pin--2-19 {top:34.5vmin; left:55vmin;}
.pin--2-20 {top:39vmin; left:55vmin;}
.pin--2-21 {top:46vmin; left:59vmin;}
.pin--2-22 {top:46vmin; left: 54vmin;}
.pin--2-23 {top:47vmin; left: 46vmin;}
.pin--2-24 {top:46vmin; left: 33vmin;}
.pin--2-25 { top:47vmin; left: 27.5vmin; }
.pin--2-26 {top:38vmin; left: 28.5vmin;}
.pin--2-27 { top: 38vmin; left: 33vmin; }
.pin--2-28 { top: 32vmin; left: 46vmin; }


/* Pins for floor 3 */
.pin--3-1 { top: 17vmin; left: 63vmin; }
.pin--3-30 { top: 47vmin; left: 10vmin; }
.pin--3-31 { top: 54vmin; left: 12vmin; }
.pin--3-32 { top: 38vmin; left: 10.5vmin; }
.pin--3-33 { top: 31vmin; left: 11vmin; }
.pin--3-34 { top: 25vmin; left: 10vmin; }
.pin--3-35 { top: 20vmin; left: 27vmin;}
.pin--3-36 { top: 37vmin; left: 18vmin; }
.pin--3-37 { top: 57vmin; left: 41vmin; }
.pin--3-39 { top: 41vmin; left: 32vmin; }
.pin--3-40 { top: 41vmin; left: 47vmin; }

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


.pin--5-1 {top: 38vmin; left: 21vmin;}
.pin--5-2 {top: 40vmin; left: 52vmin;}
.pin--5-3 {top: 20vmin; left: 65vmin;}  

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

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

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

	.spaces-list {
		height: 67vh;
	}

	.spaces-list--open,
	.spaces-list--open .search {
		right: 0;
	}
	.open-search,
	.close-search {
		position: absolute;
		display: block;
		top: 0;
		right: 0;
		z-index: 1000;
	}
	.mallnav {
		top: 2.5em;
	}
	.container {
		overflow: hidden;
	}
	.container--overflow {
		overflow: auto;
	}
	.content__item {
		text-align: left;
		overflow: auto;
	}
	
	.content__item-details {
		margin: 0 0;
	}

	.boxbutton {
		width: 1.3em;
		height: 1.3em;
	}
}