@import url('https://fonts.googleapis.com/css2?family=Funnel+Sans:ital,wght@0,300..800;1,300..800&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap');

:root {
	--fg: #eee;
	--accent: #AFD5F1;

	--padding: 0.5rem;
	--gap: 0.5rem;
	--gallery-gap: 0.75rem;

	--bg: #000509;
	--bg-repeat: 2rem;
	--bg-circle: color-mix(in srgb, var(--fg), transparent 80%);
	--bg-circle-size: 0.1rem;
	--bg-scroll: 25vh;

	--num-icons: 5;
	--num-icons-small: 3;
	--scrollbar-icon-size: 1.25rem;
	--scrollbar-icon-gap: 2.25rem;
	--scrollbar-icon-gap-compact: 1.25rem;

	--scrollbar-bg: color-mix(in srgb, var(--bg), transparent 10%);
	--scrollbar-icon-bg: radial-gradient(circle at center, var(--scrollbar-bg) 0, transparent 80%);
	--scrollbar-height: 2rem;
	--scrollbar-padding: 0.2rem;
	--scrollbar-padding-full: 1rem;
	--scrollbar-fadeout: 1rem;
	--scrollbar-line-height: 1px;
	--scrollbar-line-color: color-mix(in srgb, var(--fg), transparent 60%);
}

* {
	color: var(--fg);
	box-sizing: border-box;
}

html {
	font-family: "Inter", sans-serif;
	font-optical-sizing: auto;
	font-weight: 500;
	font-style: normal;
	font-size: 16pt;
	line-height: 1.5;

	scroll-behavior: smooth;
}

body {
	position: relative;

	width: 100vw;
	max-width: 100%;
	min-width: 300px;
	min-height: 200vh;

	display: flex;
	flex-direction: column;

	margin: 0;
	overflow-x: hidden;

	background-color: var(--bg);
}

body::before,
body::after {
	content: '';
	position: fixed;
	z-index: -99;
	top: 0;
	width: 100%;
	height: 1000%;

	animation-name: body_bg_scroll;
	animation-timeline: scroll(y root);
	animation-timing-function: linear;
	background-position: 0 0;
}

body::before {
	background-image: radial-gradient(circle at center, var(--bg-circle) 0, var(--bg-circle) var(--bg-circle-size), transparent var(--bg-circle-size), transparent var(--bg-repeat));
	background-repeat: repeat;
	background-size: var(--bg-repeat) var(--bg-repeat);
}

body::after {
	opacity: 10%;

	--scroll-multiplier: 0.8;
	--circle-1: #F8C630;
	--circle-2: #E54F6D;
	--circle-3: #7A28CB;
	--circle-4: #0E7C7B;
	--circle-5: #F2FF49;
	--circle-size: 30vw;

	background-image:
		radial-gradient(circle at 15% 25rem, var(--circle-1) 0, transparent var(--circle-size)),
		radial-gradient(circle at 35% 37rem, var(--circle-3) 0, transparent var(--circle-size)),
		radial-gradient(circle at 90% 18rem, var(--circle-2) 0, transparent var(--circle-size)),
		radial-gradient(circle at 75% 23rem, var(--circle-4) 0, transparent var(--circle-size)),
		radial-gradient(circle at 95% 38rem, var(--circle-5) 0, transparent var(--circle-size));
	background-repeat: no-repeat;
	background-size: 100%;
}

@keyframes body_bg_scroll {
	from {
		background-position: 0 0;
	}

	to {
		background-position: 0 calc(-1 * var(--bg-scroll) * var(--scroll-multiplier, 1));
	}
}

header {
	position: sticky;
	top: 0;
	z-index: 500;

	width: 100%;
	height: 3rem;

	display: flex;
	align-items: center;
	justify-content: center;
}

hr {
	margin-block: 1rem;
}

summary {
	padding-bottom: 1rem;
}

a,
a * {
	color: var(--accent);
	text-decoration: none;
}

section>h1 {
	font-size: 2rem;
}

section>h2 {
	font-size: 1.5rem;
}

.hint {
	font-size: 80%;
	opacity: 80%;
}



#image_fullscreen {
	position: fixed;
	z-index: 1000;
	inset: 0;

	background-color: color-mix(in srgb, var(--bg), transparent 70%);
	cursor: pointer;
	backdrop-filter: blur(1rem);
}

#image_fullscreen>img {
	width: 100%;
	height: 100%;
	padding: 1rem;
	box-sizing: border-box;
	object-fit: contain;
}



#scrollbar,
#scrollbar::before,
#scrollbar * {
	transition-timing-function: ease;
	transition-duration: 0.5s;
	user-select: none;
}

#scrollbar:hover,
#scrollbar:hover:before,
#scrollbar:hover * {
	transition-duration: 0.3s;
}

#scrollbar {
	position: relative;

	--width-small: calc(var(--num-icons-small) * var(--scrollbar-icon-size) + (var(--num-icons-small) - 1) * var(--scrollbar-icon-gap) + 2 * var(--scrollbar-padding));
	--width-full: calc(var(--num-icons) * var(--scrollbar-icon-size) + (var(--num-icons) - 1) * var(--scrollbar-icon-gap-compact) + 2 * var(--scrollbar-padding-full));
	--middle-offset: calc((var(--width-small) - var(--scrollbar-icon-size)) / 2);

	width: var(--width-full);
	height: var(--scrollbar-height);

	display: flex;
	justify-content: center;

	--offset: 0;

	cursor: pointer;
}

#scrollbar::before {
	content: '^';

	position: absolute;
	left: 0;
	bottom: -1rem;

	width: var(--scrollbar-icon-size);
	height: var(--scrollbar-icon-size);

	text-align: center;

	pointer-events: none;
	background-image: var(--scrollbar-icon-bg);

	--transform-offset: calc(var(--scrollbar-padding-full) + (var(--scrollbar-icon-size) + var(--scrollbar-icon-gap-compact)) * var(--offset));
	transform: translateX(var(--transform-offset));
}

#scrollbar_icons {
	position: absolute;

	left: 0;
	height: 100%;

	display: flex;
	align-items: center;
	gap: var(--scrollbar-icon-gap-compact);
	transform: translateX(var(--scrollbar-padding-full));
}

.scrollbar_icon {
	width: var(--scrollbar-icon-size);
	height: var(--scrollbar-icon-size);
	background-image: var(--scrollbar-icon-bg);

	opacity: 80%;
	transition-property: opacity, transform;
	transition-duration: 0.2s;
	transition-timing-function: ease;
}

.scrollbar_icon:hover {
	opacity: 100%;
	transform-origin: center;
	transform: scale(110%);
}

.scrollbar_icon img {
	width: 100%;
	height: 100%;
}

@media (hover: hover) {
	#scrollbar {
		width: var(--width-small);
	}

	#scrollbar:hover {
		width: var(--width-full);
	}

	#scrollbar::before {
		transform: translateX(var(--middle-offset));
	}

	#scrollbar:hover::before {
		transform: translateX(var(--transform-offset));
	}

	#scrollbar_icons {
		gap: var(--scrollbar-icon-gap);
		transform: translateX(calc(var(--middle-offset) - (var(--scrollbar-icon-size) + var(--scrollbar-icon-gap)) * var(--offset)));
	}

	#scrollbar:hover #scrollbar_icons {
		gap: var(--scrollbar-icon-gap-compact);
		transform: translateX(var(--scrollbar-padding-full));
	}
}

#scrollbar_fade {
	position: relative;
	width: 100%;
	height: 100%;

	overflow: hidden;
	mask-image: linear-gradient(to right,
			transparent 0,
			white var(--scrollbar-fadeout) calc(100% - var(--scrollbar-fadeout)),
			transparent 100%);
	mask-repeat: no-repeat;
}

/* black background thing */
#scrollbar_fade::before {
	content: '';

	position: absolute;
	z-index: -20;
	width: 100%;
	height: 100%;

	background-color: var(--scrollbar-bg);
}

/* thin line that goes behind the icons */
#scrollbar_fade::after {
	content: '';

	position: absolute;
	z-index: -10;
	top: 50%;

	width: 100%;
	outline: var(--scrollbar-line-height) solid var(--scrollbar-line-color);
	border-radius: var(--scrollbar-line-height);
}



#content {
	width: 100%;
	max-width: 24rem;
	margin: 0 auto;

	flex-grow: 1;

	display: flex;
	flex-direction: column;
	align-items: center;

	padding: var(--padding);
	margin-bottom: 5rem;
}

#content>section {
	width: 100%;
	min-height: 20rem;
	margin-bottom: 3rem;
}

#content>section>h1 {
	--scoll-margin: 3rem;
	scroll-margin-top: var(--scoll-margin);
	scroll-snap-margin-top: var(--scoll-margin);
}

#links_list {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--gap);
}

#links_list>a {
	display: flex;
	align-items: center;
	gap: 1rem;
}

#links_list>a>span {
	position: relative;
}

#links_list>a>span::before {
	content: '';
	position: absolute;
	bottom: -5px;
	width: 100%;
	border-bottom: 1px solid;
	transform: scaleX(0);
	transform-origin: center;
	transition: transform 0.2s ease;
}

#links_list>a:hover>span::before {
	transform: scaleX(1);
}

.link_img_wrapper {
	display: inline-block;
	position: relative;
	width: 2rem;
	height: 2rem;

	--hover-transition-duration: 0.25s;
}

.link_img_wrapper>img {
	width: 100%;
	height: 100%;
}

#mcsr_ranked_img>img {
	position: absolute;

	z-index: var(--index);

	--translate: 0.25rem;
	--transition-delay: 0.1s;
	transition: transform var(--hover-transition-duration) ease;
	transition-delay: calc((var(--index) - 1) * var(--transition-delay));
}

#mcsr_ranked_img>img:nth-child(1) {
	--index: 1;
}

#mcsr_ranked_img>img:nth-child(2) {
	--index: 2;
}

#mcsr_ranked_img>img:nth-child(3) {
	--index: 3;
}

#mcsr_ranked_img>img:nth-child(4) {
	--index: 4;
}

a:hover>#mcsr_ranked_img>img {
	transform: translate(var(--translate), calc(-1 * var(--translate)));
	transition-delay: calc(calc(4 - var(--index)) * var(--transition-delay));
}

#bsky_img>img {
	transition: transform var(--hover-transition-duration) ease;
	transform-origin: center;
}

a:hover>#bsky_img>img {
	transform: scaleX(30%);
}

#pronouns_page_img::after {
	content: '';
	position: absolute;
	left: 0;
	width: 100%;
	height: 100%;
	z-index: 99;
	--blue: #5acefa;
	--pink: #f5a9b8;
	background-image: linear-gradient(to bottom,
			var(--blue) 0 20%,
			var(--pink) 20% 40%,
			white 40% 60%,
			var(--pink) 60% 80%,
			var(--blue) 80% 100%);

	transition: opacity var(--hover-transition-duration) ease;
	opacity: 0;
}

a:hover>#pronouns_page_img::after {
	opacity: 60%;
	transition-duration: 10s;
}

#discord_img {
	transition: transform 0.5s ease;
	transform: rotate(0);
}

a:hover>#discord_img {
	transform: rotate(1turn);
}



#project_list {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--gap);
}



.gallery {
	height: 15rem;
	width: 100%;
	overflow-x: scroll;

	margin-block: 1rem;

	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gallery-gap);

	scroll-snap-type: x mandatory;

	--mask-margins: 1rem;
	--mask-opacity: 50%;
	mask-image: linear-gradient(to right,
			rgba(0, 0, 0, var(--mask-opacity)) 0,
			white var(--mask-margins) calc(100% - var(--mask-margins)),
			rgba(0, 0, 0, var(--mask-opacity)) 100%);
}

.gallery img {
	height: 100%;
	max-width: 100%;
	object-fit: contain;

	scroll-snap-align: center;

	user-select: none;
	cursor: pointer;

	--margins: 25%;
}

.gallery img:first-child {
	margin-left: var(--margins);
}

.gallery img:last-child {
	margin-right: var(--margins);
}

#color_palette_section {
	display: flex;
	flex-direction: column;
	gap: var(--gap);
}

.colors {
	display: flex;
	align-items: flex-start;
	gap: var(--gap);
	flex-wrap: wrap;
}

.colors>span {
	min-width: 4rem;
}

.colors>div {
	height: 1.5rem;
	aspect-ratio: 1/1;

	border: 2px solid var(--fg);
	border-radius: 50%;
	background-color: var(--color, #000);

	cursor: pointer;
}
