@font-face {
	font-family: altehaasgroteskregular;
	src:url(fonts/altehaasgroteskregular.ttf);
}

@font-face {
	font-family: altehaasgroteskbold;
	src:url(fonts/altehaasgroteskbold.ttf);
}

*{
	box-sizing: border-box;
}
::-webkit-scrollbar {
	display: none;
}
body{
	font-family: altehaasgroteskbold, san-serif;
	font-size: 30px;
	line-height: 1.2em;
	margin: 0;
}
h1{
	font-size: 40px;
	line-height: 1.0em;
	font-weight: normal;
	padding: 0;
	margin: 0;
}
h3{	
	font-size: 40px;
	line-height: 1.2em;
	font-weight: normal;
	padding: 0;
	margin: 0;
	margin-bottom: 20px;
}
h4{
	font-size: 30px;
	line-height: 1.2em;
	margin: 0;
	margin-bottom: 20px;
}
a{
	color: black;
	text-decoration: none;
}
p{
	font-size: 24px;
	line-height: 1.2em;
	margin: 0;
	padding-bottom: 20px;
}




.align--center{
	position: absolute;
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
}
.header,
.footer{
	position: absolute;
	height: 80px;
	width: calc(100% - 40px);
	left: 20px;
	top: 0;
	border-bottom: 2px solid black;
	display: flex;
	justify-content: space-between;
    align-items: center;
    padding: 20px 0;
}
.footer{
	top: auto;
	bottom: 0;
	border-bottom: 0;
	border-top: 2px solid black;
}
.button{
	cursor: pointer;
}
.button--square{
	width: 50px;
	height: 50px;
	border-radius: 5px;
	border: 2px solid black;
	background: white;
}
.button--main{
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.5s;
	text-align: center;
}
.button--main.active{
	opacity: 1;
	pointer-events: auto;
}



/*MENU *************************/
.menu,
.menu--mobile{
	position: fixed;
	width: 100%;
	height: 100%;
	overflow: hidden;
	pointer-events: none;
	z-index: 10;
}
.menu > *,
.menu--mobile > *{
	pointer-events: auto;
	background: white;
}
.menu--mobile{
	display: none;
}
.button--generate--small{
	opacity: 0;
	pointer-events: none;
	position: absolute;
	left: 0;
	transition: opacity 0.5s;
}
.button--generate--small.active{
	opacity: 1;
	pointer-events: auto;
}
.button--contribute{
	transition: opacity 0.5s;
}
.button--contribute.hide{
	opacity: 0;
	pointer-events: none;
}

/*HOME *************************/
.home--title{
	display: flex;
	text-align: center;
}
.home--title img{
	display: inline-block;
	height: 1.2em;
    transform: translate(6px, 2px);
}






/*PAGES *************************/
.pages{
	position: fixed;
	width: 100%;
	height: 100%;
	overflow: hidden;
	pointer-events: none;
}
.page{
	opacity: 0;
	pointer-events: none;
	position: absolute;
	width: 100%;
	height: calc(100% - 160px);
	top: 80px;
	padding: 20px;
	transform: translate(0, 100%);
}
.page.active{
	opacity: 1;
	pointer-events: auto;
	transition: transform 0.5s;
	transform: translate(0, 0);
}
.page.hide{
	opacity: 1;
	transition: transform 0.5s;
	transform: translate(0, -100%);
}




/*SHOWCASE *************************/
.showcase{
	overflow: hidden;
}
.showcase--cards{
	position: relative;
	top: 0;
	left: 0;
	height: 100%;
}
.showcase--cards .card{
	position: absolute;
	left: 0;
	top: 50%;
	transform: translate(0, -50%);
	transition: transform 0.5s;
}
.showcase--cards .card.push{
	transform: translate(-400px, -50%);
}
.touch .showcase{
	overflow: scroll;
	display: inline;
}
.touch .showcase--cards{
	position: absolute;
    display: inline-flex;
    flex-direction: row-reverse;
    width: auto;
    height: auto;
    top: 50%;
    transform: translate(0, -50%);
    padding: 0 100px;
}
.touch .showcase--cards .card{
    position: relative;
    transform: none;
    margin-left: -400px;
}
.touch .showcase--cards .card:last-child{
    margin-left: 0%;
}
.touch .showcase--cards .card.push{
	transform: translate(-400px, 0);
}


/*GALLERY *************************/
.gallery{
    display: flex;
    flex-flow: wrap;
    overflow: scroll;
    padding: 20px 0 20px 20px;
}
.gallery .card{
	margin: 0 20px 20px 0;
	cursor: pointer;
}


/*VIEWER *************************/
.viewer{
	position: fixed;
	width: 100%;
	height: 100%;
	z-index: 12;
	opacity: 1;
	pointer-events: none;
	transition: transform 0.5s;
	transform: translate(-100%, 0);
	cursor: pointer;
}
.viewer--open .viewer{
	opacity: 1;
	transform: translate(0, 0);
	pointer-events: auto;
}
.viewer .card--options{
	opacity: 1;
	pointer-events: auto;
}


/*CONTRIBUTE *************************/
.contribute--box{
	width: 1500px;
	height: 500px;
	display: flex;
	box-shadow: 0 0 10px 0 #00000063;
	border-radius: 10px;
	overflow: hidden;
	transition: transform 0.5s;
}
.contribute--box > *{
	position: relative;
	display: block;
	width: 500px;
	height: 500px;
}
.contribute--box textarea{
    border: 0;
    width: 90%;
    font-family: altehaasgroteskregular, san-serif;
    height: auto;
    margin: 0;
    text-align: center;
    overflow: hidden;
}
.contribute--box.load{
	transform: translate(-50%, -50%) rotateX(90deg);
}





/*RECIEVE *************************/
.recieve{
	position: fixed;
	right: 0;
	top: 0;
	width: 50%;
	height: 100%;
	background: #EBEBEB;
	padding: 80px 20px 80px 20px;
	transform: translate(100%, 0);
	transition: transform 0.5s;
	z-index: 12;
}
.recieve--open .recieve{
	transform: translate(0, 0);
}
input, 
textarea{
	font-size: 30px;
	line-height: 1.2em;
	font-family: altehaasgroteskbold, san-serif;
	height: 80px;
	width: 100%;
	border: 2px solid black;
	border-radius: 5px;
	background: transparent;
	margin-bottom: 20px;
	padding: 20px;
	color: black;
	resize: none;
	outline: none;
	box-shadow: none;
	transition: all 0.5s;
}
input:-webkit-autofill,
input:-webkit-autofill:hover, 
input:-webkit-autofill:focus,
textarea:-webkit-autofill,
textarea:-webkit-autofill:hover,
textarea:-webkit-autofill:focus,
select:-webkit-autofill,
select:-webkit-autofill:hover,
select:-webkit-autofill:focus {
	background: transparent;
	border: 2px solid black;
	-webkit-text-fill-color: black;
	transition: background-color 5000s ease-in-out 0s;
}
::placeholder {
  color: #929292;
  opacity: 1;
}
:-ms-input-placeholder {
  color: #929292;
}
::-ms-input-placeholder {
  color: #929292;
}
.recieve--form{
    position: relative;
    height: 100%;
    overflow: scroll;
    padding: 20px 0 20px 0;
}
.recieve--address{
	height: 300px;
}
.recieve--disclaimer p, 
.copyright{
	font-size: 16px;
	line-height: 1.2em;
}
.recieve--disclaimer p:last-child{
	margin-bottom: 0;
}
.recieve .footer .button{
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.5s;
}
.recieve .footer .button.active{
	opacity: 1;
	pointer-events: auto;
}
input.error,
textarea.error{
	border: 2px solid red;
}







/*INFO *************************/
.info{
	position: fixed;
	left: 0;
	top: 0;
	width: 50%;
	height: 100%;
	background: #EBEBEB;
	padding: 80px 20px 80px 20px;
	transform: translate(-100%, 0);
	transition: transform 0.5s;
	z-index: 12;
}
.info--open .info{
	transform: translate(0, 0);
}
.info .footer{
	display: flex;
	justify-content: space-between;
}
.info .footer > *{
	display: inline-block;
}
.info--desc{
    position: relative;
    height: 100%;
    overflow: scroll;
    padding: 20px 0 20px 0;
}
.info--desc > *{
	padding-bottom: 20px;
}
.info--desc h1{
	padding-bottom: 40px;
}
.info--desc a{
	text-decoration: underline;
}
.info--desc > *:last-child {
    padding-bottom: 0px;
}
.info .footer{
	display: flex;
	justify-content: space-between;
}






.blur--panel{
	position: fixed;
	left: 0;
	top: 0;
	width: 100vw;
	height: 100%;
	opacity: 0;
	backdrop-filter: blur(20px);
	-webkit-backdrop-filter: blur(20px);
	pointer-events: none;
	transition: opacity 0.5s;
	z-index: 11;
	cursor: pointer;
}
.info--open .blur--panel,
.recieve--open .blur--panel,
.viewer--open .blur--panel{
	pointer-events: auto;
	opacity: 1;
}






.card{
	position: relative;
	width: 500px;
	height: auto;
	box-shadow: 0 0 10px 0 #00000063;
	border-radius: 10px;
	overflow: hidden;
	transition: transform 1s;
	backface-visibility: hidden;
	-webkit-backface-visibility: hidden;
}
.card.flip{
	transform: rotateY(180deg);
}
.card.flip.load{
	transform: translate(-100vw, 0) rotateY(180deg);
}
.card img{
	width: 500px;
	height: 500px;
	object-fit: cover;
	display: block;
}
.card--color{
	opacity: 0;
	width: 100%;
	height: 500px;
	background: red;
	position: absolute;
	top: 0;
}
.card.load .card--color{
	opacity: 1;
}
.card.load img{
	opacity: 0;
}
.card--text{
	font-family: altehaasgroteskregular, san-serif;
	font-size: 30px;
	position: relative;
	width: 100%;
	height: 200px;
	text-align: center;
	background: white;
}
.card--text span{
	width: 80%;
}
.card--back{
	position: absolute;
	left: 0;
	top: 0;
	width: 100%;
	height: 100%;
	transform: rotateY(180deg);
	background: white;
	backface-visibility: hidden;
	-webkit-backface-visibility: hidden;
}
.card--title{
	display: flex;
	text-align: center;
}
.card--title img{
	display: inline-block;
	height: 1.2em;
	width: 1.2em;
	object-fit: contain;
    transform: translate(6px, 2px);
}
.card--back.flip{
	transform: rotateY(360deg);
}
.card--back.flip.load{
	transform: translate(-100vw, 0) rotateY(360deg);
}
.card.remove{
	transform: translate(100vw, 0);
}
.card--canvas{
	position: fixed;
	left: -9999px;
}


.card--render{
	position: fixed;
	left: -9999px;
}
.card--render .card{
	width: 1000px !important;
	border-radius: 20px !important;
}
.card--render img{
	width: 1000px !important;
	height: 1000px !important;
}
.card--render .card--text{
	height: 400px !important;
	font-size: 60px !important;
	line-height: 1.2em !important;
}


.card--options{
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.5s;
	bottom: calc((100% - 700px) / 2);
    left: calc((100% - 500px) / 2 + 520px);
    position: absolute;
    z-index: -1;
}
.card--options.active{
	opacity: 1;
	pointer-events: auto;
}
.card--options > *{
	position: relative;
	margin-top: 10px;
}
.card--options img{
	width: 26px;
	height: auto;
}
.download--share{
	position: absolute;
	left: calc(100% + 20px);
	top: 50%;
	transform: translate(0, -50%);
	opacity: 0;
	transition: opacity 0.5s;
	pointer-events: none;
	padding: 0;
	width: 350px;
	max-width: calc((100vw - 500px) / 2 - 100px);
}
.card--download:hover .download--share{
	opacity: 1;
}


.card--small{
	width: calc((100% - 100px) / 5);
}
.card--small img{
	width: calc((100vw - 120px) / 5);
	height: calc((100vw - 120px) / 5);
	object-fit: cover;
	display: block;
}
.card--small .card--text{
	height: 8vw;
	font-size: 1.2vw;
	line-height: 1.2em;
}




@media only screen and (max-width: 1540px) {

	/*CONTRIBUTE *************************/
	.contribute--box{
		width: 900px;
		height: 300px;
		border-radius: 7px;
	}
	.contribute--box > *{
		width: 300px;
		height: 300px;
	}
	.contribute--box textarea{
		font-size: 20px;
		line-height: 1.2em;
	}

}


@media only screen and (max-height: 900px) {

	html, body, .wrapper{
		height: 100%;
	}

	.card{
		width: 400px;
	}
	.card img{
		width: 400px;
		height: 400px;
		object-fit: cover;
		display: block;
	}
	.card .card--text{
		height: 160px;
		font-size: 24px;
		line-height: 1.2em;
	}
	.card--title img {
	    display: inline-block;
	    height: 1.2em;
	    width: 1.2em;
	    object-fit: contain;
	    transform: translate(6px, 2px);
	}
	.card--options {
	    bottom: calc((100% - 560px) / 2);
	    left: calc((100% - 400px) / 2 + 420px);
	}
	.showcase--cards .card.push{
		transform: translate(-300px, -50%);
	}
	.card--small{
		width: calc((100% - 100px) / 5);
	}
	.card--small img{
		width: calc((100vw - 120px) / 5);
		height: calc((100vw - 120px) / 5);
		object-fit: cover;
		display: block;
	}
	.card--small .card--text{
		height: 8vw;
		font-size: 1.2vw;
		line-height: 1.2em;
	}

}

@media only screen and (max-height: 750px) {

	.card{
		width: 300px;
	}
	.card img{
		width: 300px;
		height: 300px;
		object-fit: cover;
		display: block;
	}
	.card .card--text{
		height: 120px;
		font-size: 18px;
		line-height: 1.2em;
	}
	.card--title img {
	    display: inline-block;
	    height: 1.2em;
	    width: 1.2em;
	    object-fit: contain;
	    transform: translate(6px, 2px);
	}
	.card--options {
	    bottom: calc((100% - 420px) / 2);
	    left: calc((100% - 300px) / 2 + 320px);
	}
	.showcase--cards .card.push{
		transform: translate(-200px, -50%);
	}
	.card--small{
		width: calc((100% - 100px) / 5);
	}
	.card--small img{
		width: calc((100vw - 120px) / 5);
		height: calc((100vw - 120px) / 5);
		object-fit: cover;
		display: block;
	}
	.card--small .card--text{
		height: 8vw;
		font-size: 1.2vw;
		line-height: 1.2em;
	}

}

@media only screen and (max-width: 900px) {

	body{
		font-size: 22px;
		line-height: 1.2em;
	}
	h1{
		font-size: 30px;
		line-height: 1.0em
	}
	h4 {
	    font-size: 22px;
	    line-height: 1.2em;
	    margin-bottom: 15px;
	}
	p {
	    font-size: 16px;
	    line-height: 1.2em;
	}



  


	.header, .footer{
		height: 60px;
		padding: 15px 0;
	    width: calc(100% - 30px);
	    left: 15px;
	}
	.button--main{
		width: 100%;
	}
	.button--square {
	    width: 44px;
	    height: 44px;
	}


	/*MENU *************************/
	.menu{
		display: none;
	}
	.menu--mobile{
		display: block;
		z-index: 12;
	}
	.menu--nav{
		position: absolute;
		width: 100%;
		top: 60px;
		padding: 15px;
		background: white;
		transform: translate(0, -100%);
		transition: transform 0.5s;
		z-index: -1;
	}
	.menu--nav > *{
		margin-bottom: 5px;
	}
	.menu--open .menu--nav{
		transform: translate(0, 0);
	}
	.button--menu{
		height: auto;
		width: 32px;
	}
	.home--title img{
		height: 1.2em;
	}
	.menu--open .blur--panel{
		pointer-events: auto;
		opacity: 1;
	}


	.touch .showcase--cards{
	    padding: 0 30px;
	}
	.touch .showcase--cards .card{
	    position: relative;
	    transform: none;
	    margin-left: -50vw;
	}
	.touch .showcase--cards .card:last-child{
	    margin-left: 0%;
	}
	.touch .showcase--cards .card.push{
		transform: translate(-50vw, 0);
	}




	/*INFO *************************/
	.info{
		width: 100%;
		padding: 60px 15px 60px 15px;
	}
	.info--desc{
	    padding: 15px 0 15px 0;
	}
	.info .footer{
	    border-top: 2px solid black;
	}
	.info .footer > * {
	    margin-right: 15px;
	}



	/*RECIEVE *************************/
	.recieve{
		width: 100%;
		padding: 60px 15px 60px 15px;
	}
	.recieve--form{
	    padding: 15px 0 15px 0;
	}
	input, textarea{
		height: 50px;
	    font-size: 22px;
	    line-height: 1.2em;
	    padding: 15px;
	}
	.recieve--disclaimer p,
	.copyright {
	    font-size: 12px;
	    line-height: 1.2em;
	}
	.recieve--address {
	    height: 150px;
	}


	.viewer--open .blur--panel{
		z-index: 12;
	}
	.viewer{
		z-index: 13;
	}
	.viewer .card--options{
		bottom: calc((100% - ((100vw / 1.4) + 28vw)) / 2 - 89px);
	}


	/*PAGE *************************/
	.page{
	    height: calc(100% - 120px);
	    top: 60px;
	    padding: 15px;
	}



	.gallery{
	    padding: 15px 0 0px 15px;
	}
	.gallery .card {
	    margin: 0 15px 15px 0;
	}


	.contribute--box {
	    width: calc(100vw - 30px);
	    height: calc(100vw - 30px);
	}
	.contribute--box > * {
	    width: calc((100vw - 30px) / 2);
	    height: calc((100vw - 30px) / 2);
	}
	.box--text{
	    position: absolute;
		width: calc(100vw - 30px);
		height: calc((100vw - 30px) / 2);
		top: 50%;
	}

	.card--wrapper{
		top: calc(50% - 30px);
	}
	.card--options{
		bottom: calc((100% - ((100vw / 1.4) + 28vw) - 30px) / 4);
	    left: 50%;
	    display: flex;
	    transform: translate(-50%, 0);
	}
	.card--options > * {
	    margin-top: 0px;
	    margin-right: 5px;
	}
	.card--options > *:last-child {
	    margin-right: 0px;
	}


	/*.card{
		width: calc(100vw / 1.4);
	}
	.card img{
		width: calc(100vw / 1.4);
		height: calc(100vw / 1.4);
		object-fit: cover;
		display: block;
	}
	.card .card--text{
		height: 28vw;
		font-size: 4vw;
		line-height: 1.2em;
	}
	.card--title img {
	    display: inline-block;
	    height: 1.2em;
	    width: 1.2em;
	    object-fit: contain;
	    transform: translate(6px, 2px);
	}*/


	.card--small{
		width: calc((100% - 30px) / 2);
		border-radius: 5px;
	}
	.card--small img{
		width: calc((100vw - 45px) / 2);
		height: calc((100vw - 45px) / 2);
		object-fit: cover;
		display: block;
	}
	.card--small .card--text{
		height: 18vw;
		font-size: 3vw;
		line-height: 1.2em;
	}
	.card--small .card--text span{
		width: 90%;
	}


}



@media only screen and (max-width: 600px) {

	.card{
		width: calc(100vw / 1.4);
	}
	.card img{
		width: calc(100vw / 1.4);
		height: calc(100vw / 1.4);
		object-fit: cover;
		display: block;
	}
	.card .card--text{
		height: 28vw;
		font-size: 4vw;
		line-height: 1.2em;
	}
	.card--title img {
	    display: inline-block;
	    height: 1.2em;
	    width: 1.2em;
	    object-fit: contain;
	    transform: translate(6px, 2px);
	}

	.card--small{
		width: calc((100% - 30px) / 2);
		border-radius: 5px;
	}
	.card--small img{
		width: calc((100vw - 45px) / 2);
		height: calc((100vw - 45px) / 2);
		object-fit: cover;
		display: block;
	}
	.card--small .card--text{
		height: 18vw;
		font-size: 3vw;
		line-height: 1.2em;
	}
	.card--small .card--text span{
		width: 90%;
	}
	.download--share{
		display: none;
	}


}


@media only screen and (max-width: 340px) {

	h1 {
	    font-size: 26px;
	    line-height: 1.0em;
	}
	.menu--nav > * {
	    margin-bottom: 4px;
	}
	.home--title img {
	    height: 1.0em;
	}
	.card--title img{
		height: 1.0em;
	    width: 1.0em;
	}
	.card--options{
		bottom: calc((100% - ((100vw / 1.4) + 28vw)) / 2 - 39px);
	}

}




