/*
 * Ludhaus Visual Style Library
 * ─────────────────────────────────────────────
 * @file:       styles.css
 * @version:    1.0.0
 *
 * Breakpoints: 480, 640, 768, 1024, 1280, 1440
 */

@charset "utf-8";
@import url('https://fonts.googleapis.com/css?family=Montserrat:200,300,400,600,700,800,900');
@import url('https://fonts.googleapis.com/css?family=Inter:300,400,600,800');
@import url('https://fonts.googleapis.com/css?family=Noto+Sans+JP:100,400,700');

/* Base
──────────────────────────────────────────────── */
html {
	background: #0a0d0c;
	font-size: 62.5%;
	overflow-x: hidden;
	-webkit-text-size-adjust: 100%;
}

body {
	color: #333;
	font-family: 'Inter', Noto Sans JP, sans-serif;
	font-size: clamp(1.3rem, 1rem + 0.6vw, 1.4rem);
	font-weight: 400;
	letter-spacing: 0.08em;
	margin: 0;
	overflow-x: hidden;
	-webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5, h6 {
	font-family: 'Inter', sans-serif;
	font-weight: 700;
	margin-block: 4em 0;
}
h1 { font-size: 2.4em; }
h2 { font-size: 2.2em; }
h3 { font-size: 1.6em; }
h4 { font-size: 1.4em; }
h5 { font-size: 1.2em; }

p {
	line-height: 1.8;
	margin-block: 2em;
}

a {
	color: #333;
	text-decoration: none;
}
a:hover { color: #666; }

strong { font-weight: 600; }

i { font-style: normal; }

ul,
ol {
	line-height: 2;
	margin: 2em 0;
}

dl {
	list-style: none;
	margin: 2em 0;
	padding: 0;
}
dt {
	line-height: 2;
//	margin-block-start: 1em;
	margin-block-start: .5em;
}
dd { margin: 0 2em 1em 2em; }
dd p,
dd ul,
dd ol { margin: 1em 0; }
@media (min-width: 768px) {
	dl { display: grid; gap: 2em 5%; grid-template-columns: 1fr 3fr; }
	dt { text-align: right; }
	dd { margin: 0; }
}

img {
	height: auto;
	max-width: 100%;
	object-fit: cover;
	vertical-align: middle;
}

/* Button  */
.button {
	background: #cccbc8;
	border-radius: 2em;
	box-shadow: .2em .2em .4em #abaaa7, -.2em -.2em .4em #e5e4e1;
	color: #090909;
	cursor: pointer;
	display: inline-block;
	margin: .4em;
	padding: .4em 1.6em;
	transition: all .2s ease-in;
}
.button:hover {
	background: #c7c6c3;
	box-shadow: .1em .1em .2em #abaaa7, -.1em -.1em .2em #e5e4e1;
	color: #333;
}
.button:active,
.button.active {
	background: #c2c1be;
	box-shadow: inset .1em .1em .2em #abaaa7, inset -.1em -.1em .2em #e5e4e1;
}

/* Structure
──────────────────────────────────────────────── */
main { background: #cccbc8; }
main section { padding-block: 16%; }
main section header { margin-bottom: 4em; }
@media (min-width: 1024px) { main section { padding-block: 8%; } 
}
/* wrap */
.wrap { padding-inline: 10%; }
.wrap > :is(h1, h2, h3, h4, h5, h6):first-child { margin-block-start: 0; }

/* Grid */
.grid { display: grid; }
.grid-cols-2 { align-items: center; }
.grid > * {
	margin-block-end: 4em;
	min-width: 0;
}
.grid :is(h1, h2, h3, h4, h5, h6) { margin-block-start: 2em; }
@media (min-width: 1024px) {
	.grid { gap: 2em 5%; }
	.grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; }
	.grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0; }
	.grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0; }
	.grid-reverse > :nth-child(odd)  { order: 2; }
	.grid-reverse > :nth-child(even) { order: 1; }
}
.grid figure {
	margin: 0;
	overflow: hidden;
}
.grid figure.grid-out {
	aspect-ratio: 4 / 3;
	margin-inline: -10%;
	position: relative;
}
.grid figure img {
	height: 100%;
	object-fit: cover;
	width: 100%;
}
.grid figure picture {
	display: grid;
	position: relative;
	text-align: center;
}
@media (min-width: 1024px) {
	/* Figure Left */
	.grid > figure { margin: 0 -5.25% 0 0; }
	.grid > figure + *:not(figure) { padding-inline-start: 5%; }
	.grid figure.grid-out { margin: 0 -5.25% 0 -25%; }
	/* Figure Right (Reverse) */
	.grid.grid-reverse > figure { margin: 0 0 0 -5.25%; }
	.grid.grid-reverse > figure + *:not(figure) { padding-inline-end: 5%; }
	.grid.grid-reverse figure.grid-out { margin: 0 -25% 0 -5.25%; }
}

/* Universal Class
──────────────────────────────────────────────── */
.thin { font-weight: 300; }

/* Utility */
.u-tracking { letter-spacing: 0; }
.u-break { display: block; }
@media (min-width: 768px) { .u-break { display: inline; }}

/* Overlay */
[class*="overlay"] {
	display: grid;
	position: relative;
}
[class*="overlay"]::before {
	content: "";
	inset: 0;
	position: absolute;
	z-index: 1;
}
.overlay-dark::before  { background: rgba(  0,   0,   0, 0.2); }
.overlay-light::before { background: rgba(204, 203, 200, 0.1); }
.overlay-retro::before { background: rgba(  0,   0,  77, 0.1); }

/* Night */
.night {
	background: #0a0d0c;
	color: #e6e6e6;
}
.night a       { color: #e6e6e6; }
.night a:hover { color: #fff; }

/* Animation Utility */
@keyframes fade-in {
	  0% { opacity: 0; }
	 50% { opacity: 0; }
	100% { opacity: 1; }
}
@keyframes fade-up {
	  0% { opacity: 0; transform: translateY(10px); }
	 50% { opacity: 0; transform: translateY(10px); }
	100% { opacity: 1; transform: translateY( 0px); }
}

/* Scroller
──────────────────────────────────────────────── */
.page-scroller {
	animation: fade-in 7s ease-out forwards;
	bottom: 0 !important;
	color: #fff;
	cursor: pointer;
	display: flex;
	font-size: 0.67em;
	font-weight: 700;
	left: 3%;
	line-height: 4px;
	margin: 0 -9px;
	padding: 0 20px 210px 10px;
	pointer-events: auto;
	position: fixed;
	text-decoration: none;
	text-transform: uppercase;
	transition: 1s;
	width: 0;
	writing-mode: vertical-lr;
	z-index: 9999;
}

.page-scroller::before,
.page-scroller::after {
	background: rgba(255, 255, 255, 0.5);
	bottom: 0;
	content: "";
	height: 205px;
	left: 9px;
	position: absolute;
	width: 1px;
}
.page-scroller::after {
	animation: scroller-down 4s cubic-bezier(1, 0, 0, 1) infinite;
	background: rgba(255, 255, 255, 1.0);
}
@keyframes scroller-down {
	  0% { transform: scale(1, 0); transform-origin: 0   0%; }
	 49% { transform: scale(1, 1); transform-origin: 0   0%; }
	 50% { transform: scale(1, 1); transform-origin: 0 100%; }
	100% { transform: scale(1, 0); transform-origin: 0 100%; }
}
.page-scroller span { display: none; }

.is-scrolled .page-scroller {
	bottom: 1em !important;
	opacity: 1;
	padding: 210px 20px 0 10px;
}
.is-scrolled .page-scroller::before,
.is-scrolled .page-scroller::after {
	bottom: 50px;
}
.is-scrolled .page-scroller::after {
	animation: scroller-top 4s cubic-bezier(1, 0, 0, 1) infinite;
}
@keyframes scroller-top {
	  0% { transform: scale(1, 0); transform-origin: 0 100%; }
	 49% { transform: scale(1, 1); transform-origin: 0 100%; }
	 50% { transform: scale(1, 1); transform-origin: 0   0%; }
	100% { transform: scale(1, 0); transform-origin: 0   0%; }
}



.parallax-item {
	width: 100px;
	height: 100px;
	background-color: steelblue;
	margin: 5rem auto;
}
.page-nav {
	animation: fade-in 7s ease-out forwards;
}
.is-scrolled .page-nav {
	opacity: 1;
	mix-blend-mode: difference;
}
.page-indicator {
	opacity: .6;
}
.is-scrolled .page-indicator {
	opacity: 1;
}


/* Header
──────────────────────────────────────────────── */
.logo {
	animation: fade-in 7s ease-out forwards;
	display: inline-block;
	height: 20px;
	left: 3%;
	line-height: 0;
	position: fixed;
	top: 4%;
	z-index: 9999;
}
@media (min-width: 640px) {
	.logo {
		height: 35px;
	}
}
.logo img {
	filter: brightness(0) invert(1);
	height: 100%;
	opacity: .6;
	width: auto;
}
.is-scrolled .logo {
	mix-blend-mode: difference;
}
.is-scrolled .logo img {
	opacity: 1;
}

/* Cover
──────────────────────────────────────────────── */
.hero figure {
	height: 140svh;
	margin: 0;
	overflow: hidden;
	position: relative;
	z-index: -1;
}
.hero figure::after {
	animation: cover-overlay 6s ease-out forwards;
	background: #000;
	content: "";
	inset: 0;
	position: absolute;
	z-index: 0;
}
@keyframes cover-overlay {
	  0% { opacity: 1; }
	100% { opacity: 0.6; }
}
.hero figcaption {
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	text-align: center;
	height: 100svh;
	opacity: .6;
	padding-inline: 2%;
	position: relative;
	z-index: 1;
}
.hero figcaption h1 {
	animation: figcaption-up 5s ease-out forwards;
	color: #fff;
	margin-block: 2rem;
	width: 100%;
}
.hero figcaption h1 img {
	filter: brightness(0) invert(1);
}
.hero figcaption p {
	animation: figcaption-up 5s ease-out forwards;
	color: #fff;
	font-size: .8em;
	margin: 0;
	width: 100%;
}
@media (min-width: 768px) {
	.hero figcaption p {
		font-size: 1em;
	}
}
@keyframes figcaption-up {
	  0% { opacity: 0; transform: translateY(10px); }
	 50% { opacity: 0; transform: translateY(10px); }
	100% { opacity: 1; transform: translateY(0); }
}
.hero figure picture {
	animation: cover-scale 6s ease-out forwards;
	inset: 0;
	position: absolute;
	text-align: center;
	z-index: -2;
}
@keyframes cover-scale {
	  0% { transform: scale(1.1) translateY(-5px); }
	100% { transform: scale(1.0) translateY(0px); }
}
.hero figure picture img {
	height: 100%;
	max-width: none;
	width: 100%;
	will-change: transform;
}


section header h2 {
	font-size: .8em;
	font-weight: normal;
	margin-block: .2em;
}
section header p {
	font-family: 'Montserrat', sans-serif;
	font-size: 1.8em;
	font-weight: 800;
	margin-block: .2em;
	text-transform: uppercase;
}
section header p span {
	font-weight: 300;
}

/* Story
──────────────────────────────────────────────── */
#story .content h3 span {
	font-size: .6em;
	font-weight: 300;
	vertical-align: middle;
}
#story .content div {
	position: relative;
}
#story .content h3.copy {
	font-size: 5em;
	left: 0;
	margin: 0;
	position: absolute;
	top: 15%;
	z-index: 2;
}
#story .content h3.copy span {
	color: #4d4d4d;
	text-transform: uppercase;
	vertical-align: baseline;
}
#story .content figure {
	margin: 0 -12.5% 0 0;
	position: relative;
	z-index: 1;
}
#story .content figure img {
	aspect-ratio: 3 / 4;
	margin: 0 0 0 24%;
}
@media (min-width: 1024px) {
	#story .content figure { margin: 0; }
	#story .content figure img { aspect-ratio: 3 / 4; }
}
#story .content h6 {
	bottom: 0;
	left: 0;
	position: absolute;
	text-transform: uppercase;
	writing-mode: vertical-rl;
	z-index: 2;
}