:root {
    --bgColor: #161b22;
    --textColor: #fff0f0;
    --textColorShade: #c9d1d9;
    --secondaryColor: #21262d;
    --secondaryColorDark: #0d1117;
    --secondaryColorLight: #2f353b;
    --accentBlue: #008cff;
    --accentGreen: #00ff22;
    --accentPurple: #9900ff;
    --cardPadding: 1.5rem;
}

.lightTheme {
    --bgColor: #fff0f0;
    --textColor: #161b22;
    --textColorShade: #3f3f3f;
    --secondaryColor: #e0d9d9;
    --secondaryColorDark: #e0dddd;
    --secondaryColorLight: #f0f0f0;
    --accentBlue: #0063b4;
    --accentGreen: #009213;
    --accentPurple: #9900ff;
}
/* keyframe for scroll to explore indicator in Hero section */
@keyframes infiniteJump {
    0% { transform: translateY(0); }
    45% { transform: translateY(-10px); }
    75% { transform: translateY(-10px); }
    100% { transform: translateY(0); }
}
@keyframes fadeSlideInRightBottom {
    from {
        opacity: 0;
        transform: translateX(50%) translateY(50%);
    }
    to {
        opacity: 1;
        transform: translateX(0) translateY(0);
    }
}
@keyframes basicFadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}
body{
    padding: 0;
    background-color: var(--bgColor);
    color: var(--textColor);
    font-family: ui-sans-serif,system-ui,sans-serif;
    margin: 0;
}
main {
    margin: 0;
    padding: 0;
    max-width: 90%;
    margin: auto;
    display: grid;
    gap: 2rem;
}




#menu {
	background: var(--secondaryColorDark);
	height: 60px;
	padding: 0 1rem;
	border-radius: 1rem;
	position: fixed;
	top: .5vh;
	left: .5vw;
	right: .5vw;
	z-index: 999;
    transition: all .2s;
    &:hover{
        box-shadow: 0 0 5px var(--accentBlue), 0 0 7px var(--accentPurple), 0 0 7px var(--accentPurple);
    }
}
#menu ul, #menu li {
	margin: 0 auto;
	padding: 0;
	list-style: none;
}
#menu ul {
	width: 100%;
	text-align: right;
    padding-bottom: 1rem;
}
#menu li {
	display: inline-block;
	position: relative;
}
#menu a {
	display: block;
	line-height: 60px;
	padding: 0 1em;
	text-decoration: none;
	color: var(--textColor);
	font-size: 1em;
}
#menu a.dropdown-arrow:after {
	content: "\25BE";
	margin-left: .25em;
}
#menu li a:hover {
	color: var(--textColorShade);
}
#menu input#responsive-menu {
	display: none;
	margin: 0;
	padding: 0;
	height: 60px;
	width: 100%;
	opacity: 0;
	cursor: pointer;
}
#menu label#menu-button {
	display: none;
	line-height: 60px;
	text-align: center;
	position: absolute;
	left: 2em;
}
#menu #logo a{
	width: max-content;
    background-color: var(--secondaryColorDark);
    &:hover{
        background-color: var(--secondaryColorDark);
    }
}
#menu label#menu-button:before {
	font-size: 1.6em;
	color: var(--textColor);
	content: "\2261";
	margin-left: 1em;
}
#menu ul.sub-menus {
	height: auto;
	overflow: hidden;
	width: 15ch;
	background: var(--secondaryColorDark);
	position: absolute;
	z-index: 99;
	display: none;
    border-radius: 1rem;
    border-top-left-radius: 0;
    transition: all .2s;
    &:hover{
        box-shadow: 0 0 5px var(--accentBlue), 0 0 7px var(--accentPurple), 0 0 7px var(--accentPurple);
    }
}
#menu ul.sub-menus li {
	display: block;
	text-align: left;
	width: 100%;
}
#menu ul.sub-menus a {
	color: var(--textColor);
	font-size: 1em;
}
#menu li:hover ul.sub-menus {
	display: block;
}
#menu ul.sub-menus a:hover {
	color: var(--textColorShade);
}

/* Desktop layout */
@media screen and (min-width: 801px) {
	#menu ul {
		text-align: right;
	}
	#menu #logo {
		float: left;
	}
	#menu li {
		display: inline-block;
	}
    .slider{
        transform: translatey(-18%);
    }
}

/* Mobile layout */
@media screen and (max-width: 800px) {
	#menu ul {
		background: var(--secondaryColorDark);
		position: absolute;
		top: 100%;
		right: 0;
		left: 0;
		z-index: 3;
		height: auto;
		display: none;
		text-align: left;
	}
	#menu ul.sub-menus {
		width: 100%;
		position: static;
        margin-bottom: 1rem;
	}
	#menu ul.sub-menus a {
		padding-left: 2em;
	}
	#menu li {
		display: block;
		float: none;
		width: auto;
	}
	#menu input#responsive-menu, #menu label#menu-button {
		position: absolute;
		top: 0;
		left: 0;
		display: block;
	}
	#menu input {
		z-index: 4;
	}
	#menu input:checked + label#menu-button {
		color: var(--textColor);
	}
	#menu input:checked + label#menu-button:before {
		content: "\00d7";
	}
	#menu input#responsive-menu:checked ~ ul {
		display: block;
	}
}








footer{
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    padding: 10vh 0;
    background-color: var(--secondaryColorDark);
    & p{
        max-width: 90%;
        color: var(--textColorShade);
        text-align: center;
        margin: .3rem 0;
    }
    & div{
        display: flex;
        gap: 1rem;
    }
    & .buttonGlowing, .buttonBasic{
        width: fit-content !important;
        font-size: 1.5rem;
        margin: 1em 0;
    }
    & a:not(.buttonGlowing){
        width: 2rem;
        height: 2rem;
    }
    & a:not(.buttonGlowing) svg{
        width: 100% !important;
        height: 100% !important;
        fill: var(--textColorShade);
        transition: fill 0.3s ease;
    }
}

h1{
    font-size: min(6rem, 10vw);
    text-align: center;
    padding: 1rem;
    margin-bottom: 0;
    margin-top: auto;
}
h2{
    font-size: min(1.8rem, 5vw);
    text-align: center;
    font-weight: bolder;
}
button, a{
    cursor: pointer;
}
button svg, a svg{
    width: 1em !important;
    height: 1em !important;
    margin-left: 0.25em !important;
    transition: transform 0.3s ease;
    display: inline-block;
    vertical-align: middle;
    transform: translateY(-0.05em);
}
p a{
    color: var(--accentBlue);
    text-decoration: none;
    transition: color 0.3s ease;
}
p img{
    width: 1.2em !important;
    height: 1.2em !important;
    padding-top: .5rem;
    margin-right: .5rem;
}
progress{
    width: 100%;
}
section{
    width: 100%;
    max-width: 1200px !important;
    margin: auto;
    margin-bottom: 5vh;
}
/* Button Styles */
.buttonBasic{
    display: inline-block;
    padding: 1rem 2rem;
    border-radius: 2rem;
    background-color: var(--secondaryColor);
    color: var(--textColor);
    text-decoration: none;
    font-weight: normal;
    transition: all 0.3s ease;
    border: 1px solid var(--secondaryColorLight);
    cursor: pointer;
    &:hover{
        background-color: var(--secondaryColorLight);
        border: var(--textColorShade) 1px solid;
    }
}
.buttonGlowing{
    display: inline-block;
    padding: 1rem 2rem;
    border-radius: 2rem;
    background-color: var(--secondaryColor);
    color: var(--textColor);
    text-decoration: none;
    font-weight: normal;
    transition: all 0.3s ease;
    box-shadow: 0 0 5px var(--accentBlue), 0 0 7px var(--accentPurple), 0 0 7px var(--accentPurple);
}
/* Section specific styles */
#hero{
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 90vh;
    text-align: center;
    animation: basicFadeIn 1s ease-in-out;
    & h2{
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 1rem;
        color: var(--accentBlue);
        font-size: min(1.2rem, 3vw);
        font-weight: normal;
        & hr{
            width: 2ch;
            border: none;
            height: 1px;
            background-color: var(--accentBlue);
        }
    }
    & p{
        font-size: min(1rem, 20px);
        color: var(--textColorShade);
        margin-top: 0.5rem;
        max-width: 60ch;
    }
    & div{
        display: flex;;
        gap: 1rem;
    }
    & .buttonGlowing:hover svg{
        transform: translateX(1ch);
    }
    & aside{
        font-size: 12px;
        letter-spacing: 0.1em;
        color: var(--textColorShade);
        cursor: pointer;
        margin-top: auto;
        transition: color 0.3s ease;
        animation: infiniteJump 1s ease-in-out infinite;
        &:hover{
            color: var(--accentGreen);
        }
    }
}
#projects{
    display: grid;
    gap: 2rem;
}
/* for hero section buttons to be responsive */
@media screen and (max-width: 640px) {
    #hero div{
        width: 100%;
        flex-direction: column;
        align-items: stretch;
    }
}
/* Other styles */
.card, .projectCard{
    animation: fadeSlideInRightBottom;
    animation-timeline: view();
    animation-range: 0px 20vh;
}
.skillsList{
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .5rem;
    list-style: none;
    padding: 0;
    max-width: 60ch;
    & li{
        background-color: var(--secondaryColor);
        font-size: .8em;
        padding: 0.5rem 1rem;
        border-radius: 1rem;
        transition: all 0.3s ease;
        border: 1px solid var(--secondaryColorLight);
        cursor: pointer;
        &:hover{
            background-color: var(--secondaryColorLight);
            border-color: var(--accentBlue);
            color: var(--textColor);
        }
    }
}
.cardList{
    width: 100%;
    display: grid;
    gap: 2rem;
    grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
}
.card{
    display: flex;
    flex-direction: column;
    background-color: var(--secondaryColor);
    padding: var(--cardPadding);
    border-radius: .5rem;
    gap: .5rem;
    & h3{
        margin-top: 0;
        font-size: 1.1rem;
    }
    & label{
        font-size: 0.9rem;
        display: flex;
        justify-content: space-between;
        margin-top: .5rem;
        & span{
            color: var(--textColorShade);
            font-size: .8em;
        }
    }
    & progress{
        height: .5rem;
        border-radius: .25rem;
        border: none;
        background-color: var(--secondaryColorLight);
        &::-webkit-progress-bar {
            background-color: var(--secondaryColorLight);
        }
        &::-webkit-progress-value {
            background-color: var(--accentBlue);
        }
    }
    & ul{
        list-style: none;
        padding: 0;
        margin: 0;
        display: grid;
        gap: .5rem;
        & li{
            font-size: 0.8rem;
            color: var(--textColorShade);
        }
    }
}
.card.progressColorGreen progress::-webkit-progress-value {
    background-color: var(--accentGreen) !important;
}
.card.progressColorGreen progress::-moz-progress-bar {
    background-color: var(--accentGreen) !important; 
}
.card.progressColorPurple progress::-webkit-progress-value {
    background-color: var(--accentPurple) !important;
}
.card.progressColorPurple progress::-moz-progress-bar {
    background-color: var(--accentPurple) !important; 
}
span.emoji{
    font-size: 1.5em;
}
aside.emoji{
    font-size: 2em;
}
.projectCard{
    display: grid;
    width: 100%;
    grid-template-columns: 1fr 1fr;
    background-color: var(--secondaryColor);
    border-radius: 1rem;
    overflow: hidden;
    & h3{
        font-size: 1.5rem;
    }
    & div:first-child{
        padding: var(--cardPadding);
        gap: 1rem;
    }
    & img{
        width: 100%;
        object-fit: cover;
        overflow: hidden;
        position: relative;
        display: block;
        aspect-ratio: 2 / 1;
    }
    & .projectDescription{
        color: var(--textColorShade);
    }
    & .projectFeatures{
        list-style: "▹" !important;
        padding-left: 1ch;
        display: grid;
        gap: .8rem;
        /* CUSTOM MARKER FOR LIST ELEMENT */
        li{
            padding-left: 1ch;
            &::marker{
                color: var(--accentGreen);
                font-size: 1rem;
            }
        }
    }
}
.performanceMetrics{
    display: flex;
    justify-content: space-around;
    padding-left: 0;
    & li{
        display: flex;
        flex-direction: column;
        align-items: center;
        font-size: 0.8rem;
        .performanceMetricsScore{
            font-size: 1.5rem;
            font-weight: bold;
            color: var(--accentBlue);
            margin: 0;
        }
        .performanceMetricsName{
            color: var(--textColorShade);
            margin: 0;
        }
    }
}

/* Project responsiveness controller */
@media screen and (min-width: 940px) {
    .projectCard img{
        aspect-ratio: 1 / 1;
        -webkit-mask-image: linear-gradient(to right, transparent, black 200px);
        mask-image: linear-gradient(to right, transparent, black 200px);
        -webkit-mask-repeat: no-repeat;
        mask-repeat: no-repeat;
        background-color: var(--secondaryColor);
    }
}
@media screen and (max-width: 940px) {
    :root{
        --cardPadding: 1rem;
    }
    .projectCard{
        grid-template-columns: 1fr;
    }
}



/* From Uiverse.io by JustCode14 */ 
/* Theme Switch */
/* The switch - the box around the slider */
.switch{
  font-size: 1rem;
  position: relative;
  display: inline-block;
  width: 4em !important;
  height: 2.2em;
  border-radius: 30px;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}

/* Hide default HTML checkbox */
.switch input {
  opacity: 0;
  width: 0;
  height: 0;
}

/* The slider */
.slider {
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: #2a2a2a;
  transition: 0.4s;
  border-radius: 30px;
  overflow: hidden;
}

.slider:before {
  position: absolute;
  content: "";
  height: 1.2em;
  width: 1.2em;
  border-radius: 20px;
  left: 0.5em;
  bottom: 0.5em;
  transition: 0.4s;
  transition-timing-function: cubic-bezier(0.81, -0.04, 0.38, 1.5);
  box-shadow: inset 8px -4px 0px 0px #fff;
}

.switch input:checked + .slider {
  background-color: #00a6ff;
}

.switch input:checked + .slider:before {
  transform: translateX(1.8em);
  box-shadow: inset 15px -4px 0px 15px #ffcf48;
}

.star {
  background-color: #fff;
  border-radius: 50%;
  position: absolute;
  width: 5px;
  transition: all 0.4s;
  height: 5px;
}

.star_1 {
  left: 2.5em;
  top: 0.5em;
}

.star_2 {
  left: 2.2em;
  top: 1.2em;
}

.star_3 {
  left: 3em;
  top: 0.9em;
}

.switch input:checked ~ .slider .star {
  opacity: 0;
}

.cloud {
  width: 3.5em;
  position: absolute;
  bottom: -1.4em;
  left: -1.1em;
  opacity: 0;
  transition: all 0.4s;
}

.switch input:checked ~ .slider .cloud {
  opacity: 1;
}
