:root {
	background-color: #242424
}

body {
	display: flex;
	place-content: center;
	margin: 0
}

#root {
	width: 100%
}

@font-face {
	font-family: dreamFont;
	src: url(/assets/d15d836cec5cd645-s.p-B_mG-AkZ.otf) format("opentype");
	font-display: fallback
}

@font-face {
	font-family: outfit;
	src: url(/assets/07a54048a9278940-s.p-iLyop7Ie.woff2);
	font-display: swap
}

@keyframes twinkle {
	0% {
		transform: scale(1);
		opacity: 1;
		animation-timing-function: ease-in
	}

	50% {
		transform: scale(0);
		opacity: 0;
		animation-timing-function: ease-out
	}

	to {
		opacity: 1;
		transform: scale(1)
	}
}

@keyframes reveal {
	0% {
		top: 100%
	}

	to {
		top: 0%
	}
}

@keyframes animateGrad {
	0% {
		background-position: 0
	}

	50% {
		background-position: 100%
	}

	to {
		background-position: 0
	}
}

* {
	box-sizing: border-box
}

:root {
	--traingle-size: 30%;
	--font-dream: "dreamFont", "dreamFont fallback";
	--outfit-font: "outfit", "outfit swap"
}

body {
	overflow-x: hidden
}

body::-webkit-scrollbar {
	width: 5px
}

body::-webkit-scrollbar-track {
	background: linear-gradient(#1c1250, #6f1bb0, #21002e)
}

body::-webkit-scrollbar-thumb {
	background-color: #a895c3;
	border-radius: 25px
}

.app {
	width: 100%;
	position: relative
}

#landing {
	width: 100%;
	min-width: 320px;
	height: 100vh;
	display: grid;
	position: relative;
	grid-template-columns: 1fr 1fr
}

#landing .star-container {
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	position: absolute;
	z-index: -1000
}

#landing .star-container .star {
	aspect-ratio: 1;
	background-color: #faf5eb;
	position: absolute
}

#landing .sky {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	background-color: #571793;
	background: linear-gradient(#1c1250, #6f1bb0, #21002e);
	z-index: -10000
}

#landing .outer {
	padding-inline: 2%;
	display: flex;
	justify-content: end;
	align-items: center
}

#landing .outer .front {
	padding-inline: 2%;
	color: #fff
}

#landing .outer .front h1 {
	margin: 0;
	display: flex;
	flex-direction: column;
	align-items: end;
	justify-content: center;
	font-family: var(--font-dream);
	font-size: clamp(10vw, 1rem + 8vw, 9vmax);
	letter-spacing: .04em;
	transition: font-size .5s ease
}

#landing .outer .front h1 .word {
	font-size: 7vw;
	-webkit-text-stroke: .005rem color-mix(in oklab, white 55%, transparent);
	color: #ffa0ff00
}

#landing .outer .front hr {
	border-color: #fff
}

#landing .outer .front p {
	text-align: right;
	font-family: var(--outfit-font);
	font-size: 2rem
}

#landing .tri {
	justify-self: center;
	display: flex;
	justify-content: center;
	align-items: center;
	width: 100%;
	max-width: 700px
}

#landing .tri svg {
	width: clamp(320px, 90%, 700px)
}

#project {
	display: flex;
	flex-direction: column;
	align-items: center;
	min-width: 320px;
	background: linear-gradient(to bottom, #21002e, #000 20%, #000 80%, #21002e)
}

#project .title {
	width: 100%;
	font-size: 7rem;
	font-family: var(--font-dream);
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 2%;
	margin: 5% 0% 0%;
	padding: 2%
}

#project .title span:nth-of-type(1),
#project .title span:nth-of-type(3) {
	color: #fff
}

#project .title span:nth-of-type(2) {
	padding-inline: 5px;
	-webkit-text-fill-color: transparent;
	background: linear-gradient(288deg, #ff8000, #f0c 53.2394%, #04f);
	-webkit-background-clip: text;
	background-clip: text;
	background-size: 200% 200%;
	animation: animateGrad 6s infinite
}

#project .list {
	width: 100%;
	max-width: 1080px;
	display: flex;
	flex-direction: column;
	align-items: center;
	position: relative
}

#project .list .entry {
	width: 100%;
	display: grid;
	grid-template-columns: 2fr 1fr;
	padding: 7% 2%;
	gap: 2%;
	margin: 5% 0;
	min-width: 280px
}

#project .list .entry .card-container {
	justify-self: center;
	width: 100%;
	align-self: start;
	padding: 2%;
	border-radius: 25px;
	border: 1px solid #262626;
	position: relative
}

#project .list .entry .card-container #custom-cursor {
	position: absolute;
	content: "";
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 10000;
	width: 100px;
	aspect-ratio: 1;
	pointer-events: none;
	border-radius: 50%;
	border: 1px solid white;
	transform: scale(0);
	transition: transform .3s ease-in-out;
	color: #fff;
	display: grid;
	place-content: center;
	background-color: #fff3;
	-webkit-backdrop-filter: blur(3px);
	backdrop-filter: blur(3px)
}

#project .list .entry .card-container #custom-cursor p {
	width: 100%;
	font-size: 1.2rem
}

#project .list .entry .card-container .highlight {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	height: 1px;
	background: linear-gradient(90deg, #0000 5%, #fffc 35%, #fff, #fffc 65%, #0000 95%);
	pointer-events: none
}

#project .list .entry .card-container .card {
	pointer-events: none;
	border-radius: 20px;
	padding: 2% 2% 0%;
	background: linear-gradient(180deg, #1b1e49 49.9%, #373d95 81.7%, #323aa5 93.88%, #777de7 113.5%);
	overflow: hidden;
	position: relative
}

#project .list .entry .card-container .card span {
	display: block;
	font-style: var(--font-dream);
	font-size: 3rem;
	color: #fff;
	height: 30%;
	text-align: center
}

#project .list .entry .card-container .card .img {
	margin-top: 5%;
	overflow: hidden
}

#project .list .entry .card-container .card .img img {
	width: 100%;
	height: 100%;
	display: block;
	pointer-events: none
}

#project .list .entry .card-container .card .extra {
	font-size: 4rem;
	right: 0;
	bottom: 0;
	left: 0;
	display: block;
	position: absolute;
	top: 50%;
	transform: translateY(-50%)
}

#project .list .entry .card-container .extra-card {
	position: relative;
	width: 100%;
	aspect-ratio: 2/1
}

#project .list .entry .meta-container {
	display: grid;
	gap: 2%;
	grid-template-columns: 5% 3fr;
	font-family: var(--outfit-font)
}

#project .list .entry .meta-container>div:nth-of-type(1) {
	padding-top: 30px
}

#project .list .entry .meta-container>div:nth-of-type(1) div {
	background-color: #e30076;
	background-color: oklch(.592 .249 .584);
	width: 100%;
	height: 10px
}

#project .list .entry .meta-container .data {
	padding-top: 3%
}

#project .list .entry .meta-container .data>span {
	display: block;
	font-size: 2rem;
	line-height: 1.33;
	font-weight: 700;
	margin-bottom: 0;
	color: #fafafa
}

#project .list .entry .meta-container .data>p {
	margin: .3rem 0;
	width: 100%;
	color: #a3a3a3;
	line-height: 1
}

#project .list .entry .meta-container .data>ul {
	list-style: none;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: .5rem;
	font-size: 1rem;
	line-height: 1.5;
	color: color-mix(in oklab, #fafafa 85%, transparent);
	margin-right: 5%
}

#project .list .entry .meta-container .data>ul li {
	display: flex;
	align-items: center;
	gap: 2%;
	font-size: .875rem;
	line-height: 1.42857
}

#project .list .entry .meta-container .data>ul li div {
	width: 30px
}

#project .list .entry .meta-container .data>ul li div svg {
	color: #fb64b6;
	fill: #e30076;
	fill: oklch(.592 .249 .584)
}

#project .list .entry .meta-container .data>ul li span {
	display: block
}

#project .list .entry .meta-container .data>.stack {
	margin-right: 5%;
	display: flex;
	flex-wrap: wrap;
	gap: 2%;
	color: #fafafa
}

#project .list .entry .meta-container .data>.stack>span {
	margin-top: 2%;
	border: 1px solid black;
	border-color: color-mix(in oklab, #ffffe3 14%, transparent);
	padding: .5% 2%;
	border-radius: 10px;
	font-weight: 600;
	font-family: var(--outfit-font)
}

#project .list .entry .meta-container .data>.links {
	display: none;
	margin: 5% 0;
	place-content: center
}

#project .list .entry .meta-container .data>.links button {
	background: none;
	border: 1px solid white;
	padding: 2% 6%;
	font-size: 1.5rem;
	border-radius: 10px;
	color: #fff;
	display: flex;
	gap: 10px;
	place-content: center
}

#contact {
	background: linear-gradient(#21002e, #6f1bb0, #1c1250)
}

#contact .top span {
	display: block;
	font-family: var(--font-dream);
	letter-spacing: .04rem;
	font-size: 10rem;
	text-align: center;
	color: #fff
}

#contact .bottom {
	padding: clamp(2px, 5%, 20px);
	display: flex;
	flex-wrap: wrap;
	gap: 2%;
	justify-content: center
}

#contact .bottom button {
	max-width: 100%;
	display: block;
	border: none;
	border-radius: 25px;
	padding: 1% 5%;
	font-size: 2rem;
	margin: 2% 0;
	position: relative;
	z-index: 10;
	overflow: hidden
}

#contact .bottom button:hover {
	color: #fff
}

#contact .bottom button:hover:after {
	transform: translateY(0);
	transition-duration: .3s;
	transition-timing-function: ease-out
}

#contact .bottom button:after {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	background-color: #000;
	border-radius: 25px;
	transform: translateY(100%);
	transition-duration: .3s;
	transition-timing-function: ease-in;
	z-index: -1
}

@media screen and (max-width: 768px) {
	#landing {
		grid-template-columns: 1fr;
		grid-template-rows: 1fr 1fr;
		place-content: center
	}

	#landing .tri svg {
		width: clamp(320px, 100%, 400px)
	}

	#landing .outer .front {
		width: 100%
	}

	#landing .outer .front h1 {
		font-size: 6rem
	}

	#landing .outer .front h1 .word {
		font-size: 10vw
	}

	#landing .outer .front p {
		font-size: 1.5rem;
		margin: 2% 0
	}

	#project .title {
		font-size: 4rem
	}

	#project .list .entry {
		grid-template-columns: 1fr
	}

	#project .list .entry .card-container #custom-cursor {
		display: none
	}

	#project .list .entry .card-container .card>span {
		display: none;
		font-size: 1.5rem
	}

	#project .list .entry .card-container .card>.extra {
		font-size: 2rem
	}

	#project .list .entry .meta-container {
		grid-template-columns: 1fr
	}

	#project .list .entry .meta-container>div:nth-of-type(1) {
		display: none
	}

	#project .list .entry .meta-container>.data>.links {
		display: flex
	}

	#contact .top span {
		font-size: clamp(4rem, 80vw, 6rem)
	}

	#contact .bottom button {
		overflow-wrap: break-word;
		font-size: 1.5rem
	}
}

@media screen and (max-width: 500px) {
	#landing .outer>.front>h1 {
		font-size: 4rem
	}
}
