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

:root {
    font-size: 14px;
}

body {
    margin: 0;
    --color-text: #644B47;
    --color-bg: #0F0E0E;
    --color-link: #fff;
    --color-link-hover: #3d3637;
    color: var(--color-text);
    background-color: var(--color-bg);
    font-family: soleil, sans-serif;
    -webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	/* Cursor styles */
	--cursor-stroke: #644B47;
	--cursor-fill: none;
	--cursor-stroke-width: 1px;
}

/* Page Loader */
.js .loading::before,
.js .loading::after {
    content: '';
    position: fixed;
    z-index: 1000;
}

.js .loading::before {
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: var(--color-bg);
}

.js .loading::after {
    top: 50%;
    left: 50%;
    width: 60px;
    height: 60px;
    margin: -30px 0 0 -30px;
    border-radius: 50%;
    opacity: 0.4;
    background: var(--color-link);
    animation: loaderAnim 0.7s linear infinite alternate forwards;

}

@keyframes loaderAnim {
    to {
        opacity: 1;
        transform: scale3d(0.5, 0.5, 1);
    }
}

a {
    text-decoration: none;
    color: var(--color-link);
    outline: none;
}

a:hover,
a:focus {
    color: var(--color-link-hover);
    outline: none;
}

.message {
    background: var(--color-text);
    color: var(--color-bg);
    padding: 1rem;
    text-align: center;
}

.frame {
    padding: 3rem 5vw;
    text-align: center;
    position: relative;
    z-index: 1000;
}

.frame__title {
    font-size: 1rem;
    margin: 0 0 1rem;
    font-weight: 300;
}

.frame__links {
    display: inline;
}

.frame__links a:not(:last-child) {
    margin-right: 1rem;
}

.frame__button {
    all: unset;
}

.content {
    width: 100%;
    height: 400px;
    display: grid;
    justify-content: center;
    overflow: hidden;
}

.grid {
    grid-area: 1 / 1 / 2 / 2;
    width: 100%;
    height: 93%;
    margin: auto;
    display: grid;
  	grid-template-columns: repeat(13,1fr);
    grid-template-rows: repeat(8,1fr);
    grid-gap: 1vw;
    position: relative;
}

.grid::after {
	content: '';
	height: 6rem;
	width: 1px;
	background: #fff;
	position: absolute;
	bottom: 2rem;
	left: 50%;
}

.intro .grid::after {
	display: none;
}

.grid__item {
    background-size: cover;
	background-position: center;
    opacity: 0;
    -webkit-filter: brightness(0.7);
    filter: brightness(0.7);
}

.grid__item--a {
    grid-area: 2 / 1 / 5 / 3;
}

.grid__item--b {
    grid-area: 6 / 2 / 9 / 5;
}

.grid__item--c {
    grid-area: 3 / 4 / 7 / 7;
}

.grid__item--d {
    grid-area: 1 / 8 / 4 / 10;
}

.grid__item--e {
    grid-area: 4 / 10 / 7 / 14;
}

.grid__item--f {
    grid-area: 6 / 9 / 9 / 12;
}

.menu {
    grid-area: 1 / 1 / 2 / 2;
    display: flex;
    width: 130vw;
    justify-content: space-between;
    align-self: center;
    justify-self: start;
    position: relative;
}

.menu__item {
    --color-title: #3c3a3b;
    --color-subtitle: #3e3c3d;
    --title-font-style: italic;
    --title-font-weight: 400;
    --title-font-size: 7vw;
    --title-display: none;
	--subtitle-display: none;
	pointer-events: none;
}

.menu__item-title {
    font-size: var(--title-font-size);
    font-family: meno-banner, serif;
    font-style: var(--title-font-style);
    font-weight: var(--title-font-weight);
    color: var(--color-title);
    margin: 0;
    display: var(--title-display);
}

.menu__item-subtitle {
    font-family: meno-banner, serif;
    color: var(--color-subtitle);
    text-align: right;
    margin: 0 -3rem 0 0;
    font-size: 1.5vw;
    display: var(--subtitle-display);
}

.menu__item--current {
	--color-title: #fff;
    --color-subtitle: #644B47;
    --title-font-style: italic;
    --title-font-weight: 900;
    cursor: pointer;
	--title-display: block;
	--title-font-size: 9vw;
}

.intro .menu__item--current::before {                
    content: '01';
    position: absolute;
    bottom: 110%;
    color: var(--color-title);
}

.intro .menu__item--current:hover {
	--color-title: #fff;
    --color-subtitle: #88524a;
}

.intro .menu__item--current {
	--color-title: #e5e2e2;
	--title-font-style: normal;
	--title-font-size: 7vw;
	pointer-events: auto;
}

.intro .menu__item {
	--title-font-size: 5vw;
	--subtitle-display: block;
	--title-display: block;
}

.layers {
    top: 0;
    width: 100vw;
    height: 100vh;
    position: absolute;
    overflow: hidden;
    z-index: 2000;
    pointer-events: none;
}

.layers__item {
    position: absolute;
    width: 100%;
    height: 100%;
    overflow: hidden;
    transform: translate3d(0, 101%, 0);
}

.layers__item-img {
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: 50% 50%;
    transform: translate3d(0, -101%, 0);
}

.cursor {
	display: none;
}

@media screen and (min-width: 53em) {
    .message {
        display: none;
    }

    .frame {
        display: grid;
        position: absolute;
        width: 100%;
        padding: 4rem;
        pointer-events: none;
        grid-template-columns: auto auto 1fr;
        grid-template-rows: auto;
    }

    .frame__title {
        margin: 0 4rem 0 0;
    }

    .frame__info {
        margin: 0;
    }

    .frame__links {
        padding: 0;
    }

    .frame__info,
    .frame__button {
        justify-self: end;
    }

    .frame__button {
        margin: 0 0 0 10vw;
    }

    .frame a {
        pointer-events: auto;
    }
    .content {
        height: 100vh;
    }
    .grid {
        width: 80vw;
    }
    .menu {
        width: 110vw;
    }
}

@media (any-pointer: fine) {
	.cursor {
		position: fixed;
		top: 0;
		left: 0;
		display: block;
		pointer-events: none;
		opacity: 0;
	}
	.cursor__inner {
		fill: var(--cursor-fill);
		stroke: var(--cursor-stroke);
		stroke-width: var(--cursor-stroke-width);
	}
}