/**
 * Pn=n! (2006) by Iván Marino
 * ES6 restoration for the media art installation developed in Macromedia Flash
 * Original work: http://www.ivan-marino.net/08/swf_as2/desastres/06.html (needs Adobe Flash Player)

 * @developer Marcelo Terreni (http://terreni.com.ar/)
 * @CSS + E6 + HandBrake CLI
 * @date June 2020
**/

/*====================*/
/*    INTRO LAYOUT    */
/*====================*/

html{
	--line-color: rgba(255,255,255,.4);	
	--special-white: #EBEAE5;
}


body{
	background: #000;
	color: #FFF;
	font: 100%/1 "Aktiv Grotesk", Arial, Helvetica, sans-serif;
	font-weight: 200;
}

.intro{
	background: #151515;
	background: #000;
	color: #FFF;
	box-sizing: border-box;
	padding: 0 14px;
	width: 100%;
	min-height: 100%;
  position: absolute;
  z-index: 1;
  text-align: center;
}

@media screen and (min-width: 50em){

	.intro{
		width: 100%;
		padding: 19px;
		box-shadow: inset #000 0 0 0 18px, inset var(--line-color) 0 0 0 19px;
	}

}

.intro-description{
	display: grid;
	grid-template-columns: 1fr minmax(0, 40rem) 1fr;
	grid-template-rows: repeat(4, max-content);
	margin-top: 6rem;
	text-align: left;
}

.intro-description > *{	grid-column: 2 / 3;}

.intro-description-loading-list{
	grid-row: 2 / 3;
}


@media screen and (min-width: 70em){
	.intro-description{
		display: grid;
		grid-template-columns: 1fr minmax(0, 236px) 42rem 1fr;
		grid-template-rows: max-content 1fr max-content;
		margin-top: 8rem;
		grid-gap: 0 3rem;
	}

	/* Shamefull tweak for the longer spanish text */
	html[lang="es"] .intro-description{
		grid-template-columns: 1fr minmax(0, 236px) 44rem 1fr;
	}

	.intro-description-loading-list{
		grid-row: 1 / 4;
	}

	.intro-description-title,
	.intro-description-bio,
	.intro-description-start-btn{
		grid-column: 3 / 4;
	}

}

/*===================*/
/*  LANGUAGES MENU   */
/*===================*/
.intro-langmenu{
	position: absolute;
	top: 4px;
	right: 8px;

	display: flex;
	margin-left: 10px;
	color: #ECEAE6;
	text-transform: uppercase;
	font-size: .75rem;
	letter-spacing: .05rem;
	margin-top: 1.125rem;
	margin-bottom: 1.5rem;
}

.intro-langmenu a{
	color: currentColor;
	text-decoration: none;
	font-weight: 200;
	border: 1px solid var(--line-color);
	padding: 10px 11px 6px 12px;
}

.intro-langmenu a span{
	position: absolute;
  clip: rect(0, 0, 0, 0);
  clip-path: inset(50%);
  height: 1px;
  width: 1px;
  overflow: hidden;
}

@media screen and (min-width: 25em){

	.intro-langmenu{
		top: 24px;
		right: 32px;
	}

	.intro-langmenu li:nth-child(2){ 
		margin-left: 12px;
	}

	.intro-langmenu a span{
		clip: auto;
	  clip-path: none;
		position: static;
	  height: auto;
	  width: auto;
	  overflow: visible;
	}
}

.intro-langmenu a:not([aria-current="true"]):hover{
	background: #FFF;
	color: #000;
}

.intro-langmenu a[aria-current="true"]{
	border: none;
	font-weight: 700;
	padding-left: 12px;
}


/* ========================= */
/*     INTRODUCTION TEXT     */
/* ========================= */
.intro-description-title{
	font: bold 1.5rem/1.15 "DINPro Cond Bold", Arial, Helvetica, sans-serif;
	text-transform: uppercase;
	margin-top: 5px;
	max-width: 36ch;
	color: var(--special-white);
}

@media screen and (min-width: 25em){
	.intro-description-title{
		font-size: calc(1.5rem + (2.5 - 1.5) * (100vw - 25rem) / (40 - 25));
	}
}

@media screen and (min-width: 40em){
	.intro-description-title{
		font-size: 2.5rem;
	}
}

@media screen and (min-width: 70em){
	.intro-description-title{
		font-size: 2.625rem;
		margin-top: 0;
		margin-bottom: 2rem;
	}
}

.intro-description-bio{
	color: var(--special-white);
	font-size: 0.9375rem;
	line-height: 1.46;
}

@media screen and (min-width: 70em){
	.intro-description-bio{
		font-size: 1.125rem;
		line-height: 1.46;
	}
}

.intro-description-bio p{
	margin-bottom: 1.3rem;
}

.intro-description-bio p a{
	color: currentColor;
	font-weight: 500;
	text-decoration: none;
	border-bottom: 1px solid var(--line-color); 
}

.intro-description-bio cite, .intro-description-bio i{
	font-style: italic;
}

.pn-title{ 
	font-style: italic;
	text-transform: none;
}

.pn-title:first-letter{ 
	text-transform: uppercase; 
}

.pn-title sub {
  position: relative;
  bottom: -.1875em;
  left: -.0625em;
  font-size: .8125em; 
  font-style: italic;
}


/* ====================== */
/*     VIDEO LOADINGS     */
/* ====================== */
.intro-description-loading-list{
	display: flex;
	justify-content: space-between;
	margin: 1.5rem 0;
}

.intro-description-loading-list-item{
	position: relative;
	border: 1px solid var(--special-white);
	width: 30%;
	flex: 0 1 auto;
	display: grid;
	grid-template-columns: minmax(10px, max-content); 
	grid-template-rows: minmax(10px, max-content); 
	align-items: center;
	justify-items: center;
}

/* Shamefull tweak for the longer spanish text */
html[lang="es"] .intro-description-loading-list-item{
	justify-items: left;
}

@media screen and (min-width: 31.875em){
	html[lang="es"] .intro-description-loading-list-item{
		justify-items: center;
	}
}

@media screen and (min-width: 70em){
	.intro-description-loading-list{
		flex-direction: column;
		justify-content: flex-start;
		margin: 5px 0 0 0;
	}

	.intro-description-loading-list-item{
		width: auto;
		margin-bottom: 1.75rem;
		border: 4px solid var(--special-white);
	}
}

.intro-description-loading-list-item img, .intro-description-loading-list-item video{
	grid-column: 1 / 2;
	grid-row: 1 / 2;
	width: 100%;
	position: relative;
	top: 0;
	left: 0;
	filter: grayscale(1);
}

.intro-description-loading-list-item p{
	grid-column: 1 / 2;
	grid-row: 1 / 2;
	z-index: 1;
	text-transform: uppercase;
	font-size: .6875rem;
	font-weight: 700;
	background: url(../img/loading.svg) no-repeat 0 0;
	background-size: 16px 16px;
	padding-left: 20px;
}

/* Shamefull tweak for the longer spanish text */
html[lang="es"] .intro-description-loading-list-item p{
	font-size: .625rem;
	padding-left: 2px;
	margin-left: 4px;
}

@media screen and (min-width: 21.875em){
	html[lang="es"] .intro-description-loading-list-item p{
		padding-left: 16px;
	}
}

@media screen and (min-width: 27.5em){
	html[lang="es"] .intro-description-loading-list-item p{
		font-size: .6875rem;
		padding-left: 20px;
	}
}


.intro-description-loading-list-item video{ display: none; }
.intro-description-loading-list-item_loaded video{	display: block; }

.intro-description-loading-list-item::after{
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	background: rgba(0,0,0,.8);
}

.hidden .intro-description-loading-list-item p,
.hidden .intro-description-loading-list-item::after{ 
	display: none; 
}

.intro-description-loading-list-item::after, .intro-description-loading-list-item p{
	transition: opacity 300ms ease;
}

.intro-description-loading-list-item_loaded::after, .intro-description-loading-list-item_loaded p{
	opacity: 0;
}


/* ================== */
/*    START BUTTON    */
/* ================== */
.intro-description-start-btn{
	padding: 0;
  border: none;
  font: inherit;
  color: inherit;
  background-color: transparent;
  cursor: pointer;

  color: var(--special-white);
  border: 1px solid var(--special-white);
  max-width: 17.25rem;
  text-transform: uppercase;
  font-size: 0.8125rem;
  
  display: flex;
	align-items: center;
	justify-content: space-between;
	pointer-events: none; /* disable button till is ready */
	margin-top: 1rem;
	margin-bottom: 1rem;
}

.intro-description-start-btn span{
	display: block;
	width: 100%;
	text-align: center;
	letter-spacing: .075rem;
}

.intro-description-start-btn cite{
	font-weight: 700;
}

.intro-description-start-btn svg{
	padding: 6px 7px;
	border-left: 1px solid var(--special-white);
}

.intro-description-start-btn:hover svg{
	background: var(--special-white);
	color: #000;
}



/*======================*/
/*    BUTTON FADE IN    */
/*======================*/
/* Disable button till videos are loaded */
.fade-in{ transition: opacity 300ms ease;	}

.intro-description-start-btn{ opacity: 0; }
.intro-description-start-btn-on{ 
	opacity: 1; 
	pointer-events: auto;
}

/* make sure start btn is displayed as flex during transition  */
.fade-in.intro-description-start-btn-on{
	display: flex;
}

/* ============= */
/*    CREDITS    */
/* ============= */
.intro-description-credits{
	font-size: 0.9375rem;
	line-height: 1.46;
	margin-bottom: 1.5rem
}

.intro-description-credits strong{ font-weight: 700; }

.intro-description-credits a{
	color: currentColor;
	font-weight: 700;
	text-decoration: none;
	border-bottom: 1px solid var(--line-color);
}

@media screen and (min-width: 70em){

	p.intro-description-credits{
		position: absolute;
		top: 50%;
		left: 32px;
		writing-mode: vertical-rl;
		transform: translateY(-50%) rotate(180deg);
		text-transform: uppercase;
		font-size: .6875rem;
		line-height: 1.3;
		letter-spacing: .05rem;
		margin-bottom: 0;
	}

	.intro-description-credits a{ 
		color: currentColor;
		text-decoration: none;
		font-weight: 700;
		padding-right: 1px;
		padding-left: 1px;
		border-left: 1px solid var(--line-color); 
		border-bottom: none;
	}

}

/* ================= */
/*    VIEW GITHUB    */
/* ================= */
.intro-description-viewsource{
	display: block;
	color: currentColor;
	text-align: center;
  padding-bottom: 5px;
  font-size: 0.6875rem;
  letter-spacing: .05rem;
  text-decoration: none;
  text-transform: uppercase;
  width: 12.5rem;
  margin: 30px auto 10px auto;
  background: linear-gradient(90deg, var(--line-color), var(--line-color)) no-repeat center bottom;
  background-size: 24ch 1px;
}


@media screen and (min-width: 93em){
	.intro-description-viewsource{
		position: absolute;
		bottom: 31px;
		right: 30px;
		border: 1px solid var(--line-color);
		padding: 13px 13px 9px 13px;
		width: auto;
		margin-bottom: 0;
		background: none;
	}

	.intro-description-viewsource:hover{
		background: #FFF;
		color: #000;
		border-color: #FFF;
	}

}

.intro-description-viewsource strong{ font-weight: 700; }



/*======================*/
/*    INTRO FADE OUT    */
/*======================*/
.fade-out{
	transition: opacity 400ms 250ms ease;
}

/* make sure intro is displayed as block/flex/grid during transition  */
.fade-out.intro-off{
	display: block;
	opacity: 0;
}

.intro-off{ display: none; }



/* =================== */
/*    ERROR MESSAGE    */
/* =================== */
.intro-error-message{
	position: absolute;
	top: 8rem;
	left: 50%;
	transform: translateX(-50%);
	box-sizing: border-box;
	width: calc(100% - 24px);
	padding: 55px 40px 50px 40px;
	max-width: 24rem;
	background: #FFF;
	color: #000;
	z-index: 2;
	font-size: 1.0625rem;
	line-height: 1.4;
}

.intro-error-message.hidden {
	display: none;
}

.intro-error-message strong{ font-weight: 700; }

.intro-error-message button{
	padding: 0;
  border: none;
  font: inherit;
  color: inherit;
  background-color: transparent;
  cursor: pointer;

	position: absolute;
	top: 0;
	right: 0;
	width: 40px;
	height: 46px;
}

.intro-error-message button span{
	position: absolute !important;
  clip: rect(0, 0, 0, 0) !important;
  clip-path: inset(50%) !important;
  height: 1px !important;
  width: 1px !important;
  overflow: hidden !important;
  white-space: nowrap !important;
}

.intro-error-message button svg{
	pointer-events: none;
}

@media screen and (min-width: 70em){
	.intro-error-message{
		font-size: 1.3125rem;
		line-height: 1.58;
		padding: 100px 90px;
		width: 100%;
		max-width: 47rem;
		top: 50%;
		left: 50%;
		border: none;
		transform: translate(-50%, -50%);
		background: #000;
		border: 1px solid rgba(255,255,255,.1);
		color: var(--special-white);
	}

	.intro-error-message button{
		color: var(--special-white);
	}

}