:root {
	--black: #000000;
	--white: #e8ebe2;
}

* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
	font-family: aktiv-grotesk, sans-serif;
	font-weight: 300; 
	color: var(--white);
	cursor: none;
}

#cursor {
	position:fixed;
	z-index:1000;
	top:var(--y);
	left:var(--x);
	right:0;
	bottom:0; 
	width:30px;
	height:30px;
	border-radius:50%;
	transform:translate(-50%,-50%);
	background: var(--white);
	mix-blend-mode:difference;
	pointer-events: none;
	transition-property: width, height;
	transition-duration: 50ms;
	transition-timing-function: ease-out;
  }
#cursor2 {
	position:fixed;
	z-index:1000;
	top:var(--y);
	left:var(--x);
	right:0;
	bottom:0; 
	width:180px;
	height:180px;
	border-radius:50%;
	transform:translate(-50%,-50%);
	background: radial-gradient(rgba(232, 235, 226, 0.25), transparent);
	pointer-events: none;
	filter: blur(30px);
	opacity: 0;
	transition: opacity 0.4s ease;
}

.dropdown-open {
	height: 100% !important;
}


/* ============================================
	Starting Page
============================================ */


.start-background {
	animation: mesh-background 10s linear -2.5s reverse;
	background-color:hsla(339,76%,39%,1);
	width: 100vw;
	height: 100vh;
	display: flex;
	justify-content: center;
	align-items: center;
	overflow: hidden;
}

.start-letter {
	animation: start-letter 5s ease;
	font-size: 40vh;
	font-weight: 900;
	transform: scale(50);
	color: var(--black);
}

.start-arrow {
	animation: fade-in 1s ease 4.5s forwards;
	position: absolute;
	top: 60vh;
	width: 100%;
	display: flex;
	justify-content: center;
	opacity: 0;
}
.start-arrow img {
	width: 50px;
}
.start-arrow a {
	color: var(--white);
	font-weight: 300;
	font-style: italic;
	text-decoration: none;
	font-size: 22px;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	width: min-content;
	white-space: nowrap;
}


/* ============================================
	General Page
============================================ */

.general header {
	width: 100%;
	padding: 50px;
	margin-top: 0;
	display: grid;
}

.general header .header-title {
	place-self: center;
	font-size: 48px;
	font-weight: 800;
	text-decoration: none;
}

.general .back-icon {
	position: absolute;
	top: 30px;
	left: 30px;
	width: 48px;
	height: 62px;
	display: flex;
	align-items: center;
}

.general .back-icon img {
	width: 100%;
}

.general main {
	width: 100%;
	padding: 8vw 25vw;
	line-height: 1.5;
}

.general h1 {
	padding-bottom: 40px;
}

.general h2 {
	padding-top: 30px;
}

strong {
	font-weight: 600;
}

.general ul {
	margin: 20px 40px;
}

nav {
	width: 100%;
	display: flex;
	justify-content: end;
	position: absolute;
	top: 0;
	padding: 20px;
	opacity: 0;
	animation: fade-in 0.5s ease 0.5s forwards;
}

nav #language-list {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	padding: 10px 0 0 12px;
  	gap: 5px;
	height: 0;
	transition: height 0.6s;
}

nav #language-list a {
	text-decoration: none;
}

nav #language-list a:hover {
	text-decoration: underline;
}

/* ============================================
	About Page
============================================ */

/* general animations */

.fly-in-trigger {
    transform: translateY(20px);
    opacity: 0;
    transition: transform 0.6s ease-out, opacity 0.6s ease-out;
}

.fly-in {
    transform: translateY(0);
    opacity: 1;
}


/* elements */

body {
	background: var(--black);
	transition: background 0.5s ease; 
}

.noscroll {
    overflow: hidden;
}

header {
	width: 100%;
	padding: 0 25vw;
	margin-top: 40vh;
}

header h1 {
	font-size: 42px;
	z-index: -100;
	opacity: 0;
	animation: fade-in 0.5s ease 0.5s forwards;
}

header .subtitle {
	padding: 10px 2px;
	font-size: 22px;
	background: var(--black);
    opacity: 0;
    transform: translateY(50px); 
    transition: all 0.5s ease-out; 
    position: relative;
}

header .sticky {
	position: sticky;
	top: 40vh;
}

header .clear-sticky {
	padding-top: 30vh;
}

.scroll-icon-container {
	width: 100%;
	display: flex;
	justify-content: center;
	position: fixed;
	left: 0;
	bottom: 10vh;
	opacity: 1;
	transition: opacity 0.5s ease-out;
}

.scroll-icon {
	width: 26px;
	height:	46px;
	border: 1px solid var(--white);
	border-radius: 24px;
	opacity: 0;
	display: flex;
	justify-content: center;
	position: relative;
	animation: fade-in 0.5s ease 1.5s forwards;
}

.scroll-icon div {
	position: relative;
	width: 5px;
	height: 5px;
	background: var(--white);
	border-radius: 2px;
	margin-top: 10px;
	animation: scroll-icon 3s ease 2s infinite;
}

.scroll-icon::before {
	content: "↓";
	position: absolute;
	top: 54px;
	white-space: nowrap;
	font-size: 24px;
}

main {
	min-height: 80vh;
}

section {
	background: var(--black);
	transition: background-color 0.5s ease;
}

section h2 {
	font-size: max(32px, 3.7vw);
}

#introduction {
	margin-top: 40vh;
	height: 100vh;
	width: 100%;
	display: flex;
	flex-wrap: nowrap;
	position: sticky;
	top: 0;
	z-index: -90;
}

#introduction>div {
	width: 50%;
	padding: 8vw 8vw 8vw 0;
}

#introduction>div * {
	width: 100%;
}

#introduction h2 {
	padding: 4vw 0;
	text-transform: uppercase;
	white-space: nowrap;
	line-height: 1.1;
}

#introduction p {
	padding-left: 6vw;
	min-height: 150px;
	font-size: min(2vw, 20px);
}

#introduction h2,
#introduction p {
  	filter: blur(20px);
	transition: filter 0.3s ease-out;
}

#vision {
	position: relative;
	padding: 35vh 25vw 25vh; 
	overflow: hidden;
}

#vision h2, #vision p {
	opacity: 0; /* Start off invisible */
	position: relative;
	transition: all 1s ease-out; /* Smooth transition */
}

#vision h2 {
	transform: translateX(-100%) rotate(-10deg); 
	font-size: 124px;
	font-weight: 800;
	-webkit-text-stroke: 2px var(--white);
	color: var(--black);
}

#vision p {
	transform: translateX(100%) rotate(10deg);
	margin-top: 24px;
	font-size: 20px;
}

.colored {
	color: var(--white);
	font-weight: 800;
}

#skills {
	padding: 8vw 0;
}

#skills h2 {
	text-transform: uppercase;
	text-align: center;
	margin-bottom: 80px;
	width: 100%;
}

.skills-grid {
	display: grid;
	grid-template-rows: 1fr 1fr 1fr;
	grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
	row-gap: 40px;
	padding: 0 8vw;
}

.skill-1 {
	grid-row: 1;
	grid-column: 1/4;
}

.skill-2 {
	grid-row: 2;
	grid-column: 2/5;
}

.skill-3 {
	grid-row: 3;
	grid-column: 3/6;
}

.skills-grid>div {
	display: flex;
	gap: 40px;
	align-items: center;
}

.skills-grid .svg-container {
    max-width: calc(40% - 20px);
    aspect-ratio: 1 / 1;
    border-radius: 15px;
    background-color: var(--white);
    transition: all 0.5s ease-out;
    overflow: hidden;
    position: relative;
	border: 4px solid var(--black);
}

.skills-grid .svg-container svg {
    max-width: 100%;
    position: absolute;
    z-index: 3;
    top: 0;
    transition: all 0.5s ease-out;
    color: inherit; 
	pointer-events: none;
}

.skills-grid>div>div {
	width: calc(60% - 20px);
}

#skills h3 {
	text-transform: uppercase;
	font-size: 28px;
}

#skills p {
	margin-top: 15px;
	font-size: 18px;
}

.svg-container .fill-circle {
    position: absolute;
    top: 50%;
    left: 50%;
	z-index: 2;
	background: var(--black);
	width: 0;
	aspect-ratio: 1 / 1;
	border-radius: 50%;
	transform: translate(-50%, -50%);
    transition: width 0.5s ease-out; 
}

.skills-grid .svg-container:hover {
    box-shadow: 0 0 20px 5px rgba(232, 235, 226, 0.5);
	border: 4px solid var(--white);
}

.skills-grid .svg-container:hover svg {
    fill: var(--white);
	filter: drop-shadow(0px 0px 5px rgba(232, 235, 226, 0.5));
}

#resume {
	width: 100%;
	padding: 25vh 8vw 8vh;
	overflow-x: hidden;
}

#resume .resume-container {
	display: flex;
	justify-content: center;
	display: flex;
	flex-wrap: nowrap;
	gap: 12vh;
    transform: translateX(50%);
}

#resume .resume-content {
	flex: 1 1 0px;
}

#resume h2 {
	text-transform: uppercase;
	align-self: center;
}

#resume h3 {
	text-transform: uppercase;
	font-size: 28px;
}

#resume h4 {
	font-size: 26px;
	font-weight: 700;
}

#resume .resume-date {
	font-size: 15px;
	margin: 40px 0 0;
	display: block;
}

#resume .resume-place {
	font-style: italic;
	margin: 5px 0 0;
	display: block;
}

#projects {
	position: relative;
	padding: 25vh 8vw 25vh; 
}

#projects h2 {
	font-size: 28px;
	text-transform: uppercase;
	width: min(100%, 940px);
	margin: 0 auto 20px;
}

#projects .project-container {
	width: min(100%, 940px);
	height: 100%;
	min-height: 260px;
	margin: auto;
	display: flex;
	border: 1px solid var(--white);
}

#projects .project-container .project-image {
	flex-shrink: 0;
	width: 375px;
	background-image: url(../media/cypher2u.png);
	background-size: cover;
	opacity: 1;
	transition: opacity 0.5s ease;
}

#projects .project-container .project-text-container {
	position: relative;
	width: 60%;
	height: 300px;
	overflow: hidden;
	border-left: 1px solid var(--white);
	transition: height 0.5s ease;
}

#projects .project-container .project-text {
	width: 100%;
	height: 100%;
	position: absolute;
	left: 0;
	top: 0;
	padding: 20px;
	transition: top 0.5s ease;
}

#projects .project-container .project-link {
	width: 100%;
	height: 100%;
	position: absolute;
	left: 0;
	top: 100%;
	padding: 20px;
	transition: top 0.5s ease;
}

#projects .project-container:hover .project-text {
	top: -100%;
}
#projects .project-container:hover .project-link {
	top: 0;
}

#projects .project-container .project-text h3 {
	font-size: 28px;
	font-weight: 700;
	margin-bottom: 20px;
	border-bottom: 1px solid var(--white);
}

#projects .project-container .project-text p {
	font-size: 18px;
}

#projects .project-container .project-link a,
#projects .project-container .project-link-mobile a {
	display: flex;
	width: 100%;
	height: 100%;
	justify-content: center;
	align-items: center;
	gap: 5px;
	font-size: 28px;
	text-decoration: none;
}

#projects .project-container .project-link a svg,
#projects .project-container .project-link-mobile a svg {
	height: 36px;
}

#projects .project-container .project-link-mobile {
	border-top: 1px solid var(--white);
	padding: 10px;
	display: none;
}

.fade-out-object {
	opacity: 1;
	transition: opacity 0.5s ease; 
}

#contact {
	width: 100%;
	padding: 8vw;
	text-align: center;
	position: relative;
}

#contact h2 {
	font-weight: 700;
}

#contact a {
	font-size: 8vw;
	margin: 8vw 0 16vh;
	display: block;
	text-shadow: 0 0 80px var(--white);
    position: relative;
    z-index: 4;
	transition: color 0.5s ease; 
}

#contact .contact-slogan {
	position: absolute;
	left: 22%;
	transform: rotate(-8deg);
	font-family: "carrotflower", sans-serif;
	font-weight: 400;
	font-style: normal;
	font-size: 3vw;
	color: var(--black);
	opacity: 0;
	transition: opacity 0.5s ease; 
}
#contact .contact-slogan-mobile {
	position: absolute;
	left: 16%;
	top: 26%;
	transform: rotate(-16deg);
	font-weight: 400;
	font-size: 5.5vw;
	color: var(--white);
	display: none;
}

.mobile-break {
	display: none;
}

footer {
	width: 100%;
	padding: 30px 8vw;
	display: flex;
	gap: 50px;
	background-color: var(--black);
	transition: background-color 0.5s ease; 
}

footer a {
	text-decoration: none;
}




@media screen and (max-width: 1080px) {
	#introduction {
		top: 20vh;
	}
	#introduction h2 {
		padding-top: 2vw;
	}
	#introduction p {
		padding: 0;
	}
}

@media screen and (max-width: 840px) {
	.general main {
		padding: 8vw;
	}
	#introduction {
		top: 0;
		flex-direction: column;
		gap: 8vw;
	}
	#introduction>div {
		padding: 0 16vw;
		margin: 0 auto;
		width: 100%;
	}
	#introduction h2 {
		padding-top: 0;
		font-size: 32px;
	}
	#introduction p {
		padding-left: 6vw;
		font-size: 20px;
	}
	#vision {
		padding: 35vh 8vw 25vh;
	}
	.skills-grid {
		row-gap: 8vw;
	}
	.skills-grid div {
		grid-column: 1/6;
	}
	#resume h2 {
		width: 100%;
  		text-align: center
	}
	#resume .resume-container {
		flex-wrap: wrap;
  		gap: 8vw;
	}
	#projects {
		padding: 25vh 16vw;
	}
	#projects .project-container {
		flex-direction: column;
	}
	#projects .project-image {
		display: none;
	}
	#projects .project-container .project-text-container {
		width: 100%;
		border: none;
	}
	#projects .project-container .project-text {
		top: 100%;
	}
	#projects .project-container .project-link {
		top: 0;
		background-image: url(../media/cypher2u.png);
		background-size: cover;
	}
	#projects .project-container .project-link a {
		display: none;
	}
	#projects .project-container:hover .project-text,
	#projects .project-container.hover .project-text {
		top: 0;
	}
	#projects .project-container:hover .project-link,
	#projects .project-container.hover .project-link {
		top: -100%;
	}
	#projects .project-container .project-link-mobile {
		display: block;
	}
	#contact h2 {
		font-size: 36px;
	}
	#contact span {
		font-size: 4vw;
		left: 18%;
	}
}

@media screen and (max-width: 580px) {
	.general header {
		padding: 8vw;
	}
	.general header .header-title {
		margin-top: 80px;
		font-size: 32px;
	}
	.general .back-icon {
		top: 8vw;
		left: 8vw;
	}
	header {
		padding: 0 16vw;
	}
	#introduction div {
		padding: 0 8vw;
	}
	#introduction div:first-child {
		padding: 0;
	}
	#introduction h2 {
		font-size: min(28px, 7.5vw);
	}
	#introduction p {
		padding: 0;
		font-size: 18px;
	}
	#vision h2 {
		font-size: 90px;
	}
	#vision p {
		font-size: 18px;
	}
	#skills h2 {
		font-size: 36px;
	}
	#skills h3 {
		font-size: min(28px, 10vw);
	}
	.skills-grid {
		row-gap: 16vw;
	}
	.skills-grid > div {
		flex-direction: column;
		gap: 20px;
	}
	.skills-grid .svg-container {
		max-width: 60%;
	}
	.skills-grid > div > div {
		width: 100%;
	}
	#resume h2 {
		text-align: start;
		font-size: 36px;
	}
	#resume h3 {
		font-size: 24px;
	}
	#resume .resume-content {
		padding-bottom: 24px
	}
	#resume .resume-date {
		margin: 24px 0 0;
	}
	#projects {
		padding: 16vw 8vw;
	}
	#projects .project-container .project-text-container {
		height: 220px;
	}
	#projects .project-container:hover .project-text-container,
	#projects .project-container.hover .project-text-container {
		height: 340px;
	}
	#contact {
		padding: 24vw 8vw 8vw;
	}
	#contact h2 {
		display: none;
	}
	.mobile-break {
		display: inline;
	}
	#contact a {
		font-size: 14vw;
		font-weight: 700;
		text-decoration: none;
		text-align: end;
		line-height: 1;
	}
	#contact .contact-slogan {
		display: none;
	}
	#contact .contact-slogan-mobile {
		display: block;
	}
	footer {
		gap: 20px;
		padding-right: 0;
	}
}


@media screen and (max-height: 780px) {
	#introduction {
		margin-bottom: 30vh;
	}
	#introduction div:first-child {
		max-height: 50%;
    	overflow: hidden;
	}
	#introduction p {
		font-size: 16px;
	}
}