:root {
	--name-fade-duration: 0.35s;
	--name-fade-delay: 1s;
	--move-up-duration: 2s;
	--move-up-delay: 1s;
	--background-color: #e1e2dd;
	--secondary-color: #747474;
	--font: "Playfair Display", serif;
}

* {
	box-sizing: border-box;
}

html {
	scroll-snap-type: y mandatory;
}

body {
	margin: 0;
	font-family: var(--font);
	color: #000;
	background-color: var(--background-color);
}

.page {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}

section {
	scroll-snap-align: start;
	scroll-snap-stop: always;
}

.landing {
	position: relative;
	height: 100vh;
	overflow: hidden;
	background-color: #000;
}

.landing__background {
	position: absolute;
	inset: 0;
	background-image: url("https://alvin-personal-images.s3.us-west-2.amazonaws.com/reflections.jpeg");
	background-size: cover;
	background-position: center;
	z-index: 0;
}

@media (min-width: 500px) {
	.landing__background {
		background-image: url("https://alvin-personal-images.s3.us-west-2.amazonaws.com/morainelake.jpeg");
	}
}

.landing__name {
	position: absolute;
	display: flex;
	gap: 0.05em;
	font-size: clamp(40px, 7vw, 80px);
	font-weight: 400;
	color: #fff;
	z-index: 1;
}

.landing__name--first {
	top: 60vh;
	left: 10vw;
}

.landing__name--last {
	top: 70vh;
	left: 60vw;
}

@media (max-width: 499px) {
	.landing__name {
		font-size: clamp(66px, 17.6vw, 99px);
	}

	.landing__name--first {
		top: 60vh;
		left: 18vw;
	}

	.landing__name--last {
		top: 68vh;
		left: 60vw;
	}
}

@media (min-width: 500px) and (max-width: 1200px) {
	.landing__name {
		font-size: clamp(4.5rem, 9vw, 7rem);
	}
}

@media (min-width: 500px) and (max-width: 800px) {
	.landing__name--first {
		left: 38vw;
		top: 32vh;
	}

	.landing__name--last {
		left: auto;
		right: 38vw;
		top: 38vh;
	}
}

@media (min-width: 800px) and (max-width: 1200px) {
	.landing__name--first {
		left: 32vw;
		top: 28vh;
	}

	.landing__name--last {
		left: auto;
		right: 32vw;
		top: 34vh;
	}
}

@media (min-width: 1201px) {
	.landing__name--first {
		left: 43vw;
		top: 25vh;
	}

	.landing__name--last {
		left: auto;
		right: 43vw;
		top: 33vh;
	}
}

:root {
	--letter-base-delay: 1s;
}

.letter {
	display: inline-block;
	opacity: 0;
	animation: letterFade 0.8s ease-out forwards;
	animation-delay: calc(var(--letter-base-delay, 0s) + var(--letter-delay, 0s));
}

.letter--a {
	--letter-delay: 0s;
}

.letter--l {
	--letter-delay: 0.1s;
}

.letter--v {
	--letter-delay: 0.2s;
}

.letter--i {
	--letter-delay: 0.3s;
}

.letter--n {
	--letter-delay: 0.45s;
}

.letter--x {
	--letter-delay: 0.8s;
}

.letter--u {
	--letter-delay: 0.95s;
}

@keyframes letterFade {
	from {
		opacity: 0;
	}

	to {
		opacity: 1;
	}
}

.about,
.experience {
	min-height: 100vh;
	display: flex;
	justify-content: center;
	align-items: center;
	padding: 3rem 5vw;
}

.about {
	background-color: var(--background-color);
}

.about__inner {
	max-width: 900px;
}

.about__inner h1 {
	font-size: clamp(3.25rem, 6vw, 5.5rem);
	font-weight: 400;
	margin: 0 0 clamp(1.2rem, 4vh, 2.5rem);
	line-height: 0.9;
}

.about__inner h3 {
	font-size: clamp(22px, 3vw, 28px);
	font-weight: 400;
	color: var(--secondary-color);
	margin: 0 0 2.5rem;
}
.about__inner hr {
	height: 1px;
	border: none;
	background: #333;
	margin: clamp(0.75rem, 2.4vh, 1.3rem) 0;
}

.about__inner p {
	font-size: clamp(18px, 2.2vw, 23px);
	line-height: 1.5;
	margin: 0 0 1.5rem;
}

.experience {
	background-color: var(--background-color);
}

.experience__inner {
	max-width: 900px;
	font-size: clamp(18px, 2.1vw, 22px);
	line-height: 1.6;
	display: grid;
	gap: 1.75rem;
	opacity: 0;
	animation: fadeIn 0.6s ease-out forwards;
	animation-delay: 0.5s;
}


.js .fade-in-on-view {
  opacity: 0;
  transition: opacity 0.8s ease-out;
}

.js .fade-in-on-view.is-visible {
  opacity: 1;
}

.links {
	background-color: var(--background-color);
	min-height: 100vh;
	padding: 12rem 20vw 6rem;
}

.links h1 {
	font-size: clamp(48px, 8vw, 70px);
	font-weight: 400;
	margin: 0 0 clamp(0.75rem, 1.8vh, 1.2rem);
}

.links__list {
	list-style: none;
	padding: 0 0 0 2.25rem;
	margin: 0;
	display: grid;
	gap: 0.75rem;
}

.links__list a {
	font-size: clamp(28px, 4.5vw, 36px);
	color: inherit;
	text-decoration: none;
	font-weight: 300;
	display: inline-block;
	position: relative;
}

.underline::after {
	content: "";
	position: absolute;
	inset-inline-start: 0;
	inset-block-end: -4px;
	width: 100%;
	height: 2px;
	background-color: currentColor;
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 0.3s ease-out;
}

.underline:hover::after,
.underline:focus-visible::after {
	transform: scaleX(1);
}

@keyframes fadeIn {
	from {
		opacity: 0;
	}

	to {
		opacity: 1;
	}
}

@keyframes moveUp {
	0% {
		opacity: 0;
		top: 15%;
	}

	50% {
		top: 15%;
	}

	100% {
		opacity: 1;
		top: 0;
	}
}

@media (min-width: 800px) {
	.about__inner {
		padding: 0 10vw;
	}

	.experience__inner {
		padding: 0 10vw;
	}

	.links {
		padding: 18vh 30vw 8vh;
	}
}
