/* @group FONTS */

@font-face {
	font-family: 'Work Sans';
  src: url('../fonts/WorkSans-VariableFont_wght.woff2') format('woff2 supports variations'),
       url('../fonts/WorkSans-VariableFont_wght.woff2') format('woff2-variations');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

@font-face {
	font-family: 'Work Sans';
  src: url('../fonts/WorkSans-VariableFont_wght.woff2') format('woff2 supports variations'),
       url('../fonts/WorkSans-VariableFont_wght.woff2') format('woff2-variations');
  font-weight: 100 900;
  font-style: italic;
  font-display: swap;
}

/* @end */

/* @group ROOT */

:root {
	--main-color: #28374c;
	--main-color-light: color-mix(
    in oklch,
    var(--main-color),
    transparent 50%
  );
	--highlight-color: #f30303;
	--background-color: #fff;
	
  --font-family: 'Work Sans', Verdana, Arial, sans-serif;

  --font: 		400 clamp(17px, 1.9vw, 19px)/1.5em var(--font-family);
  --font-lg: 	650 1.4rem/1.25em var(--font-family);
	--font-xl: 	650 2.4rem/1.1em var(--font-family);
  --font-xxl: 	650 clamp(2.4rem, 7vw, 3.6rem)/.9em var(--font-family);
	
	--font-xxl-letter-spacing: -.02em;
	
	--max-width: 76rem;
	
	--spacing-block:			clamp(2rem, 6vw, 3rem);
	--spacing-inline: 		clamp(1.4rem, 5vw, 2.5rem);
	--spacing-columns: 	clamp(1.4rem, 10vw, 5rem);

}

/* @end */

/* @group BASE */

html {
	color: var(--main-color);
	background-image: linear-gradient(90deg, #bbc0ba, #e2e6e5);
	font: var(--font);
	font-feature-settings: "tnum";
}

body {
	min-width: 320px;
}

h1 {
	font: var(--font-xxl);
	letter-spacing: var(--font-xxl-letter-spacing);
}

h1:has(+ *) {
	margin-bottom: .5em;
}

h1:has(+ h2) {
	margin-bottom: .1em;
}

h2,
.menu {
	font: var(--font-lg);
}

* + h2 {
	margin-block-start: var(--spacing-block);
}

h2:has(+ *) {
	margin-block-end: 1rem;
}

h1 + h2 {
	margin-top: unset;
}

h3 {
	font-weight: 600;
}

* + h3 {
	margin-block-start: 1.5rem;
}

h2 + h3 {
	margin-block-start: 1rem;
}

h3:has(+ *) {
	margin-block-end: 1rem;
}
	
p:has(+ *) {
	margin-bottom: 1em;
}
	
strong {
	font-weight: 600;
}

em {
	font-style: italic;
}

img,
video {
	vertical-align: bottom;
}

.main img {
	max-width: 100%;
	height: auto;
	vertical-align: bottom;
}

figure.video {
	 max-width: max-content;
	 margin-inline: auto;
}

	figure.video video {
		max-height: calc(100vh - 6rem);
	}

* + figure.video {
	margin-block-start: 2rem;
}

figure.video:has(+ *) {
	margin-block-end: 2rem;
}

figcaption {
	position: relative;
}

	figcaption .credit {
		position: absolute;
		inset-block-start: -2em;
		inset-inline: 0;
		padding-inline: .75em;
		padding-block: .25em;
		overflow-y: hidden;
		color: white;
		mix-blend-mode: difference;
		opacity: .7;
		text-align: right;
	}
	
	figcaption .caption {
		padding-block-start: .5em;
	}

/* @group Lists */

.main ul:not([class]):has(+ *) {
  margin-block-end: 1.5em;
}

.main ul:not([class]) li {
  display: flex;
}

.main ul:not([class]) li:has(+ li) {
  margin-block-end: 0.5em;
}

.main ul:not([class]) li::before {
  content: "•";
  flex: 0 0 1.4rem;
  text-align: center;
}

/* @end */

/* @group Links */

.main a,
.footer a {
	text-decoration: underline;
  text-decoration-thickness: 1px;
	text-decoration-color: transparent;
  text-underline-offset: 0.15em;
	transition: all .15s;
}

.main a {
	color: var(--highlight-color);
}

	.main a:not(:has(> img))::before {
		content: "→ ";
	}
	
	.main a[title*="Download"]:not(:has(> img))::before {
		content: "↓ ";
	}
	
.footer a {
	color: var(--main-color-light);
}

.main a:hover,
.footer a:hover {
	text-decoration-color: var(--main-color-light);
}

.title a,
.subtitle a,
.menu a,
.socialmedia a,
.footer a {
	transition: all .15s;
}

.title a,
.subtitle a {
	display: inline-block;
}

.title a:hover {
	transform: scale(1.05);
}

.subtitle a:hover,
.menu a:hover,
.socialmedia a:hover {
	transform: scale(1.1);
}

.menu__item.active,
.footer a:hover {
  color: var(--main-color);
}

/* @end */

/* @end */

/* @group Header */

.header {
	position: relative;
	z-index: 10;
	container-type: inline-size;
	display: flex;
	flex-direction: column;
	row-gap: .5rem;
	margin-block-end: clamp(2.1rem, 10vw, 5.6rem);
	margin-inline: auto;
	padding-block-start: clamp(1.5rem, 4vw, 2.1rem);
	padding-inline-start: var(--spacing-inline);
	padding-inline-end: calc(var(--spacing-inline) + 3rem); /* Social media */
	color: var(--highlight-color);
}

.header--fixed {
	margin-block-end: unset;
}
	
	@media (min-width: 60rem) {
		
		.header--fixed {
			position: absolute;
			inset-block-start: 0;
			inset-inline: 0;
		}
		
	}

/* @group Title */

.title {
	margin-bottom: .1em;
	font: var(--font-xxl);
	letter-spacing: var(--font-xxl-letter-spacing);
}

/* @end */

/* @group Menu */

.menu {
	display: flex;
	flex-wrap: wrap;
	column-gap: clamp(.75em, 3vw, 1.5em);
}

/* @end */

/* @group Socialmedia */

.socialmedia {
	position: absolute;
	inset-block-start: 1.5rem;
	inset-inline-end: var(--spacing-inline);
	display: flex;
	flex-direction: column;
	row-gap: .75rem;
}

	.socialmedia a {
		width: 2rem;
		height: 2rem;
		overflow: hidden;
	}

		.socialmedia a::before {
		  content: "";
			display: block;
		  -webkit-mask-size: cover;
		  mask-size: cover;
		  width: 100%;
		  height: 100%;
			vertical-align: bottom;
		  background-color: var(--highlight-color);
		}
		
		.socialmedia a[href*="instagram"]::before {
		  -webkit-mask-image: url(../images/instagram.svg);
		  mask-image: url(../images/instagram.svg);
		}
		
		.socialmedia a[href*="youtube"]::before {
		  -webkit-mask-image: url(../images/youtube.svg);
		  mask-image: url(../images/youtube.svg);
		}

/* @end */

/* @end */

/* @group Cover */

.cover {
	position: fixed;
	inset: 0;
}

	.cover picture,
	.cover img {
		display: block;
		width: 100%;
		height: 100dvh;
		object-fit: cover;
	}

/* @end */

/* @group Sticker */

.sticker {
	position: fixed;
	inset-block-start: 50%;
	inset-inline-end: var(--spacing-inline);
	width: 40%;
	max-width: 20rem;
	transform: translateY(-50%);
}

	.sticker img {
		width: 100%;
	}
	
	@media (orientation: landscape) {
		
		.sticker {
			inset-inline-start: 75%;
			transform: translate(-50%, -50%);
		}
		
	}

/* @end */

/* @group Main */

.main {
	container-type: inline-size;
}

/* @end */

/* @group Intro */

.intro {
	position: relative;
}

.intro:has(+ *) {
	margin-block-end: var(--spacing-block);
}

	.intro .hero {
		display: block;
		height: 100vh;
	}
	
		.intro .hero img {
			width: 100%;
			height: 100%;
			object-fit: cover;
		}
	
	@media (max-width: 59.999999999rem) {
		
		.intro {
			position: relative;
			z-index: 0;
			display: flex;
			flex-direction: column-reverse;
			margin-block-start: -6rem;
		}
		
			.intro .blocks {
				padding-inline: var(--spacing-inline);
			}
		
			.intro .hero {
				margin-block-end: 2.1rem;
				-webkit-mask-image: linear-gradient(to bottom, transparent 0, black 12rem);
        mask-image: linear-gradient(to bottom, transparent 0, black 12rem);
			}
		
	}

	@media (min-width: 60rem) {
		
		.intro {
			display: grid;
			grid-template-columns: repeat(2, 1fr);
			column-gap: var(--spacing-columns);
		}
		
			.intro .blocks {
				justify-self: right;
				max-width: calc(var(--max-width)*.5 - var(--spacing-columns)*.5);
				padding-block-start: 15rem;
				padding-inline-start: var(--spacing-inline);
			}
		
			.intro .hero {
				position: sticky;
				inset-block: 0;
				inset-inline-start: 0;
			}
		
	}

/* @end */

/* @group Section */

.section {
	display: grid;
	column-gap: var(--spacing-columns);
	row-gap: var(--spacing-block);
	max-width: var(--max-width);
	margin-inline: auto;
	padding-inline: var(--spacing-inline);
}

.section:not(:last-child) {
	margin-block-end: var(--spacing-block);
}

	.section figure:has(+ *) {
		margin-block-end: 1.5rem;
	}
	
	@container (min-width: 60rem) {
		
		.section--2-cols {
			grid-template-columns: repeat(2, 1fr);
		}
		
		.section--3-cols {
			grid-template-columns: repeat(3, 1fr);
		}
		
	}

/* @end */

/* @group News */

.news {
	display: grid;
	gap: var(--spacing-columns);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 24rem), 1fr));
	max-width: var(--max-width);
	margin-inline: auto;
	padding-inline: var(--spacing-inline);
}

	.news__item {
		display: flex;
		flex-wrap: wrap;
		align-content: flex-start;
	}
	
	.news__figure {
		flex-basis: 180px;
		height: 180px;
		margin-right: 1rem;
		margin-bottom: 1rem;
	}
	
	.news__content {
		flex-grow: 1;
		flex-basis: 60%;
		min-width: 200px;
	}

/* @end */

/* @group Showreel */

.showreel {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(20rem, 100%), 1fr));
	grid-gap: var(--spacing-columns);
	max-width: var(--max-width);
	margin-inline: auto;
	padding-inline: var(--spacing-inline);
}

.showreel:has(+ *) {
	margin-block-end: clamp(1.5rem, 12vw, 6rem);
}

		.showreel__category h2 {
			margin-bottom: .75em;
		}
	
		.showreel__category li:has(+ *) {
			margin-block-end: clamp(1.4rem, 4vw, 2.1rem);
		}

/* @end */

/* @group Audiojs */

/*

<div class="audiojs">
	<div class="play-pause">
		<p class="play"></p>
		<p class="pause"></p>
		<p class="loading"></p>
		<p class="error"></p>
	</div>
	<div class="scrubber">
		<div class="progress" style="width: 0px;"></div>
		<div class="loaded" style="width: 418px;"></div>
	</div>
	<div class="time">
		<em class="played">00:00</em>/<strong class="duration">00:21</strong>
	</div>
	<div class="error-message"></div>
</div>

*/

/* resets */
.audiojs,
.audiojs *,
.audiojs .scrubber,
.audiojs .play-pause,
.audiojs .progress,
.audiojs .loaded,
.audiojs .time,
.audiojs p {
	float: none;
	margin: 0;
	padding: 0;
	width: auto; height: auto;
	background-color: transparent;
	background-image: none;
	border: none;
	box-shadow: none;
	text-shadow: none;
	font-family: inherit;
	font-size: inherit;
	background-position: 0 0;
}

.audiojs {
	position: relative;
	width: 100%;
	margin-bottom: .35em;
	padding-right: 6.5em; /* for time */
}

.audiojs,
.audiojs .scrubber {
	height: 40px;
	overflow: visible;
}

	.audiojs .play-pause {
		z-index: 2;
		position: absolute;
		left: -4px; right: -4px;
		top: -4px; bottom: -4px;
	  width: 48px;
		height: 48px;
		padding: 4px;
	}
	
	.audiojs .scrubber {
		margin-left: 48px; /* for play button */
	}
	
	.audiojs .time {
		position: absolute;
		right: 0;
		top: 0;
		text-align: right;
		line-height: 40px;
		color: var(--main-color);
	}

	.audiojs .time em {
		color: var(--main-color);
	}
	
	.audiojs .play,
	.audiojs .pause,
	.audiojs .error {
		width: 38px; height: 38px;
		border: 1px solid var(--main-color);
		border-radius: 50%;
	}
	
	.audiojs .play {
		background: url("../images/audiojs-play.svg") 0 0 no-repeat;
	}

	.audiojs .pause {
		background: url("../images/audiojs-pause.svg") 0 0 no-repeat;
	}

	.audiojs .loading {
		width: 40px;
		height: 40px;
	}
	
	.audiojs .play,
	.audiojs .loading,
	.audiojs .error,
	.audiojs .pause {
		transition: all .2s ease-in-out 0s;
	}
	
	.audiojs .play:hover,
	.audiojs .loading:hover,
	.audiojs .error:hover,
	.audiojs .pause:hover {
		transform: scale(1.1);
	}
	
	.audiojs .progress,
	.audiojs .loaded {
		height: 2px;
		margin-top: 19px;
	}
	
	.audiojs .loaded {
		background-color: var(--main-color);
	}
	
	.audiojs .progress {
		background: var(--highlight-color);
	}
	
	.audiojs .loading {
		animation: rotating 2s linear infinite;
	}
	
	@keyframes rotating {
	
	  from {
	    transform: rotate(0deg);
	  }
	  to {
	    transform: rotate(360deg);
	  }
	}

/* @end */

/* @group Download */

a[href$=".mp3"] {
	color: var(--highlight-color);
	border-right: 1px solid var(--main-color);
	transform: scale(1) rotate(90deg);
	transition: scale .2s;
}

a[href$=".mp3"]:hover {
	transform: scale(1.2) rotate(90deg);
}

	a[href$=".mp3"]::before {
		content: "→ ";
		display: inline-block;
	}

.audiojs + a[href$=".mp3"] {
	float: right;
	margin-top: -.1em;
	margin-left: .5em;
}

/* @end */

/* @group Footer */

.footer {
	position: relative;
	z-index: 1;
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	column-gap: 1em;
	row-gap: .5em;
	margin-block-start: clamp(1.5rem, 14vw, 7rem);
	margin-inline: auto;
	padding-block-end: 2.1rem;
	padding-inline: var(--spacing-inline);
}

	.main:has(.cover) + .footer {
		position: fixed;
		inset-block-end: 0;
		inset-inline-end: 0;
		mix-blend-mode: difference;
	}
	
		.main:has(.cover) + .footer a {
			color: white;
		}

/* @end */