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

:root {
    
    --body-bgc: #fafafa;
    --nav-color: #000000;
    --text-primary: #000000;
    --text-secondary: #909090;
    --text-light: #8d8d8d;
    --link-hover: #5e5e5e;
    

    --glass-shadow: rgba(255, 255, 255, 0.18);
    --pseudo-glass: rgba(180, 180, 180, 0.37);
    

    --intro-shadow: #2d2d2d;
    --portofolio-shadow: #29434c;
    

    --github-hover: #202020;
    --discord-hover: #5e52ef;
    --twitter-hover: #1DA1F2;
    --instagram-hover: #E4405F;
    --facebook-hover: #1877F2;
    --steam-hover: #13171f;
    --chess-hover: #00B388;
    

    --scrollbar-thumb: #353535;
    

    --transition-fast: 0.2s ease-in-out;
    --transition-normal: 0.3s ease-in-out;
    --transition-slow: 0.8s ease-in-out;
    

    --padding-sm: 15px;
    --padding-md: 30px;
    --padding-lg: 50px;
    --gap-sm: 40px;
    --gap-md: 70px;
    --gap-lg: 100px;
    

    --scale-factor: 1.07;
    --shadow-spread: 7px;
}

:root[data-theme="dark"] {
    --body-bgc: #131313;
    --nav-color: #272727;
    --text-primary: #ffffff;
    --text-secondary: #8d8d8d;
    --link-hover: #636363;
    --glass-shadow: rgba(19, 19, 19, 0.8);
    --pseudo-glass: rgba(0, 0, 0, 0.42);
    --scrollbar-thumb: #b8b8b8;
}


*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    scrollbar-width: thin;
    scrollbar-color: var(--text-primary) var(--body-bgc);
    margin: 0;
    padding: 0;
}

body {
    font-family: "Inter", sans-serif;
    background-color: var(--body-bgc);
    color: var(--text-primary);
    margin: 0;
    padding: 0;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--gap-lg);
    transition: background-color var(--transition-normal), color var(--transition-normal);
    overflow-x: hidden;
}


::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}

::-webkit-scrollbar-track {
    background: var(--body-bgc);
}

::-webkit-scrollbar-thumb {
    background: var(--text-primary);
    border-radius: 6px;
    transition: background var(--transition-fast);
}

::-webkit-scrollbar-thumb:hover {
    background: var(--scrollbar-thumb);
}


p,
a {
    font-family: "Inter", sans-serif;
    font-weight: 600;
    text-decoration: none;
    margin: 0;
    padding: 0;
}

.head-title,
body > p:not(.head-title) {
    font-size: clamp(2.5rem, 5vw, 4rem);
    color: var(--text-primary);
    text-align: center;
    user-select: none;
    transition: color var(--transition-normal);
    margin: 0;
    padding: 0;
}

body > p:not(.head-title) {
    margin-top: clamp(150px, 15vw, 300px);
}

::selection {
    background-color: var(--text-primary);
    color: var(--body-bgc);
}


.nav {
    background-color: var(--nav-color);
    border-bottom-left-radius: 35px;
    border-bottom-right-radius: 35px;
    width: min(90vw, 1400px);
    max-width: 100%;
    height: 70px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--padding-md);
    transition: all var(--transition-normal);
    z-index: 100;
}

.nav > p {
    font-size: clamp(1.2rem, 2.5vw, 1.5rem);
    color: white;
    user-select: none;
}

.nav > img {
    width: clamp(40px, 5vw, 50px);
    height: auto;
}


.intro {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: clamp(30px, 5vw, 50px);
    width: 100%;
    max-width: 1400px;
    padding: 0 20px;
}

.portofolio {
    position: relative;
    padding: clamp(30px, 4vw, 40px);
    border-radius: 20px;
    box-shadow: 0 0 10px var(--glass-shadow);
    width: min(90vw, 450px);
    min-height: 320px;
    display: flex;
    flex-direction: column;
    justify-content: space-around;
    align-items: center;
    gap: 20px;
    transition: transform var(--transition-normal);
}

.portofolio:hover,
.intro > img:hover {
    transform: scale(var(--scale-factor)) translateY(-10px);
}

.portofolio::before {
    position: absolute;
    content: "";
    inset: 0;
    z-index: -2;
    border-radius: inherit;
    background: url("imgs/cool-bgc.jpg") center/cover no-repeat;
    box-shadow: inset 0 0 0 5px var(--pseudo-glass);
    border: 5px solid var(--pseudo-glass);
    filter: blur(4px);
    transition: all var(--transition-normal);
}

.portofolio::after {
    position: absolute;
    content: "";
    inset: 0;
    z-index: -1;
    border-radius: inherit;
    background-color: var(--pseudo-glass);
    box-shadow: inset 0 0 0 10px var(--pseudo-glass);
    filter: blur(15px);
    transition: all var(--transition-normal);
}

.portofolio > img {
    width: clamp(140px, 30vw, 170px);
    height: clamp(140px, 30vw, 170px);
    border-radius: 20px;
    filter: drop-shadow(0 0 10px var(--portofolio-shadow));
    transition: all var(--transition-normal);
    object-fit: cover;
}

.portofolio > img:hover {
    border-radius: 15px;
    filter: drop-shadow(0 0 13px var(--portofolio-shadow));
}

.portofolio > div {
    width: 100%;
}

.portofolio > div > p:first-child {
    color: white;
    font-size: clamp(1.1rem, 2.5vw, 1.25rem);
    text-shadow: 0 0 15px white;
    text-align: center;
}

.portofolio > div > p:last-child {
    color: azure;
    font-size: clamp(0.875rem, 2vw, 0.938rem);
    text-align: center;
    line-height: 1.5;
}

.intro > img {
    width: min(90vw, 600px);
    height: auto;
    max-height: 400px;
    object-fit: contain;
    filter: drop-shadow(0 0 15px var(--intro-shadow));
    transition: transform var(--transition-fast);
}


.so-cont {
    display: flex;
    justify-content: space-around;
    align-items: center;
    gap: 20px;
    width: 100%;
    max-width: 200px;
    margin: 0 auto;
}

.so-cont > a {
    font-size: clamp(1.3rem, 3vw, 1.563rem);
    color: white;
    filter: drop-shadow(0 0 7px white);
    transition: all var(--transition-fast);
}

.so-cont a:first-child:hover {
    color: var(--github-hover);
    filter: drop-shadow(0 0 7px var(--github-hover));
}

.so-cont a:nth-child(2):hover {
    color: var(--discord-hover);
    filter: drop-shadow(0 0 7px var(--discord-hover));
}

.so-cont a:last-child:hover {
    color: var(--twitter-hover);
    filter: drop-shadow(0 0 7px var(--twitter-hover));
}


.infos {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--gap-sm);
    width: 100%;
    max-width: 1400px;
    padding: 0 20px;
}

.infos > div {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: clamp(40px, 5vw, 70px);
    width: 100%;
}

.infos > div > div {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: min(90vw, 500px);
    min-height: 300px;
    padding: var(--padding-lg);
    border-radius: 30px;
    transition: transform var(--transition-normal);
}

.infos > div > div:hover {
    transform: translateY(-10px);
}

.infos > div > div > p:first-child {
    font-size: clamp(2.5rem, 5vw, 3.125rem);
    color: var(--text-primary);
    margin-bottom: 20px;
}

.infos > div > div > p:last-child {
    font-size: clamp(1.1rem, 2.5vw, 1.563rem);
    color: var(--text-secondary);
    text-align: center;
    line-height: 1.4;
}


.samples-cont {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: flex-start;
    gap: clamp(40px, 6vw, 80px);
    width: 100%;
    max-width: 1400px;
    padding: 0 20px;
    margin-bottom: var(--gap-lg);
}

.samples-cont > div {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    gap: 30px;
    min-height: 400px;
}

.samples-cont > div > img {
    width: min(90vw, 600px);
    height: auto;
    max-height: 400px;
    border-radius: clamp(20px, 3vw, 40px);
    object-fit: cover;
    transition: all var(--transition-normal);
    filter: brightness(0.85);
}

.samples-cont > div > img:hover {
    filter: brightness(1);
    transform: scale(1.05);
}

.samples-cont > div:first-child > img {
    box-shadow: 0 0 15px rgba(250, 235, 215, 0.5);
}

.samples-cont > div:last-child > img {
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.3);
}

.samples-cont > div > a,
.samples-cont > div > div > div > a {
    font-size: clamp(1.3rem, 3vw, 1.875rem);
    color: var(--text-secondary);
    transition: color var(--transition-fast);
}

.samples-cont > div > a:hover,
.samples-cont > div > div > div > a:hover {
    color: var(--link-hover);
}

.samples-cont > div > div {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 30px;
}

.samples-cont > div > div > div {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
}

.samples-cont > div > div > div > p {
    color: var(--text-secondary);
    font-size: clamp(0.875rem, 2vw, 1rem);
}


.social-media {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(50px, 6vw, 80px);
    width: 100%;
    max-width: 1400px;
    padding: 0 20px;
    margin-bottom: 50px;
}

.social-media > div {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: stretch;
    gap: clamp(40px, 5vw, 80px);
}

.social-media > div > div {
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 15px;
    padding: 70px 170px;
    border-radius: 30px;
    width: min(85vw, 250px);
    min-height: 200px;
    transition: transform var(--transition-fast);
    overflow: hidden;
}

.social-media > div > div::after {
    position: absolute;
    content: "";
    inset: 0;
    border-radius: inherit;
    background: url("imgs/carbon-fiber.jpg") center/cover no-repeat;
    z-index: -1;
    filter: brightness(0.4) contrast(0.8) opacity(0.8);
}

.social-media > div > div:hover {
    transform: translateY(-15px) scale(1.04);
}

.social-media > div > div > p {
    color: whitesmoke;
    text-align: center;
    transition: all var(--transition-fast);
    z-index: 1;
}

.social-media > div > div > p:first-child {
    font-size: clamp(2rem, 4vw, 2.813rem);
}

.social-media > div > div > p:nth-child(2) {
    font-size: clamp(1.2rem, 3vw, 1.875rem);
}

.social-media > div > div > p:nth-child(3) {
    font-size: clamp(0.875rem, 2vw, 1rem);
}

/* Social Media Icon Hover Effects */
.social-media > div > div[title="Twitter"] > p:first-child:hover {
    color: var(--twitter-hover);
    filter: drop-shadow(0 0 var(--shadow-spread) var(--twitter-hover));
}

.social-media > div > div[title="Discord"] > p:first-child:hover {
    color: var(--discord-hover);
    filter: drop-shadow(0 0 var(--shadow-spread) var(--discord-hover));
}

.social-media > div > div[title="Instagram"] > p:first-child:hover {
    color: var(--instagram-hover);
    filter: drop-shadow(0 0 var(--shadow-spread) var(--instagram-hover));
}

.social-media > div > div[title="Facebook"] > p:first-child:hover {
    color: var(--facebook-hover);
    filter: drop-shadow(0 0 var(--shadow-spread) var(--facebook-hover));
}

.social-media > div > div[title="Github"] > p:first-child:hover {
    color: var(--github-hover);
    filter: drop-shadow(0 0 var(--shadow-spread) var(--github-hover));
}

.social-media > div > div[title="Steam"] > p:first-child:hover {
    color: var(--steam-hover);
    filter: drop-shadow(0 0 var(--shadow-spread) var(--steam-hover));
}

.social-media > div > div[title="Chess"] > p:first-child:hover {
    color: var(--chess-hover);
    filter: drop-shadow(0 0 var(--shadow-spread) var(--chess-hover));
}


.friends {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 30px;
    width: 100%;
    max-width: 1400px;
    padding: 0 20px;
    margin-bottom: var(--gap-md);
}

.friends > div {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: clamp(20px, 3vw, 30px);
}

.friends > div > div {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
}

.friends > div > div > img {
    width: clamp(100px, 15vw, 170px);
    height: clamp(100px, 15vw, 170px);
    border-radius: 50%;
    object-fit: cover;
    transition: transform var(--transition-fast);
    user-select: none;
}

.friends > div > div > img:hover {
    transform: scale(1.08);
}

.friends > div > div > p {
    font-size: clamp(0.938rem, 2vw, 1.25rem);
    color: var(--text-secondary);
    text-align: center;
}


.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-around;
    align-items: center;
    gap: 30px;
    background-color: #222222;
    min-height: 170px;
    width: 100%;
    padding: var(--padding-md);
    margin-top: clamp(100px, 10vw, 150px);
}

.footer > div {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
}

.footer > div:last-child {
    min-width: min(250px, 100%);
}

.footer > div > p:first-child {
    color: white;
    font-size: clamp(1rem, 2.5vw, 1.125rem);
}

.footer > div > p {
    color: var(--text-secondary);
    font-size: clamp(0.875rem, 2vw, 1rem);
    text-align: center;
}

.footer > div > div {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
}

.footer a {
    color: var(--text-secondary);
    font-size: clamp(0.875rem, 2vw, 1rem);
    transition: color var(--transition-fast);
}

.footer a:hover {
    color: var(--link-hover);
}


#toggle {
    position: fixed;
    bottom: 30px;
    right: 30px;
    z-index: 1000;
    width: clamp(45px, 5vw, 50px);
    height: clamp(45px, 5vw, 50px);
    border-radius: 50%;
    border: none;
    background-color: var(--text-primary);
    color: var(--body-bgc);
    font-size: clamp(1.2rem, 2.5vw, 1.5rem);
    cursor: pointer;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
    transition: all var(--transition-normal);
    display: flex;
    justify-content: center;
    align-items: center;
}

#toggle:hover {
    transform: scale(1.1) rotate(15deg);
    box-shadow: 0 6px 25px rgba(0, 0, 0, 0.4);
}

#toggle:active {
    transform: scale(0.95);
}

@media (min-width: 1920px) {
    body {
        gap: 120px;
    }
    
    .intro,
    .infos,
    .samples-cont,
    .social-media,
    .friends {
        max-width: 1600px;
    }
    
    body > p:not(.head-title) {
        margin-top: 350px;
    }
}


@media (max-width: 1230px) {
    .intro {
        flex-direction: column;
        gap: 60px;
    }
    
    .portofolio {
        width: min(85vw, 500px);
    }
    
    .intro > img {
        width: min(85vw, 700px);
    }
    
    .so-cont {
        max-width: 250px;
    }
    
    .friends > div > div > img {
        width: clamp(80px, 12vw, 120px);
        height: clamp(80px, 12vw, 120px);
    }
}

/* Tablets */
@media (max-width: 900px) {
    body {
        gap: 70px;
    }
    
    body > p:not(.head-title) {
        margin-top: 150px;
    }
    
    .infos > div > div {
        width: min(85vw, 450px);
        min-height: 250px;
    }
    
    .samples-cont {
        gap: 50px;
    }
}

/* Mobile Devices */
@media (max-width: 600px) {
    body {
        gap: 50px;
    }
    
    .nav {
        width: 85vw;
        padding: 20px;
        border-bottom-left-radius: 25px;
        border-bottom-right-radius: 25px;
    }
    
    .intro {
        gap: 40px;
    }
    
    .portofolio {
        width: 85vw;
        padding: 30px;
        min-height: 280px;
    }
    
    .so-cont {
        max-width: 180px;
    }
    
    .infos > div {
        gap: 30px;
    }
    
    .infos > div > div {
        width: 85vw;
        min-height: 200px;
        padding: 30px;
    }
    
    .samples-cont {
        gap: 40px;
        margin-bottom: 50px;
    }
    
    .samples-cont > div {
        width: 100%;
        min-height: auto;
    }
    
    .samples-cont > div > img {
        width: 85vw;
    }
    
    .social-media {
        gap: 40px;
    }
    
    .social-media > div {
        gap: 30px;
    }
    
    .social-media > div > div {
        width: 85vw;
        padding: 35px;
    }
    
    .friends {
        gap: 20px;
    }
    
    .friends > div {
        gap: 25px;
    }
    
    .footer {
        padding: 30px 20px;
        gap: 25px;
    }
    
    #toggle {
        bottom: 20px;
        right: 20px;
    }
}


@media (max-width: 380px) {
    .portofolio {
        padding: 25px;
    }
    
    .infos > div > div {
        padding: 25px;
    }
    
    .social-media > div > div {
        padding: 30px;
        min-height: 180px;
    }
}

.no-select {
    user-select: none;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
}

@media print {
    #toggle,
    .nav,
    .footer {
        display: none;
    }
    
    body {
        background-color: white;
        color: black;
    }
}