/* =========================
   Single stylesheet by design (I'm lazy)
========================= */



/* =========================
   Variables
========================= */
:root {

    --accent-color: #8b5cf6;
    --accent-bright: #a78bfa;
    --accent-transparent: rgba(139,92,246,0.12);


    --background-dark: rgba(5, 5, 10, 0.88);
    --card-background: rgba(255,255,255,0.04);

    --card-hover: rgba(168, 85, 247, 0.08);

    --border-color: rgba(255,255,255,0.12);

    --text-primary: #f5f5f5;
    --text-secondary: #c4c4c4;
    --text-muted: rgba(255,255,255,0.45);

    --shadow-purple:
        0 0 30px rgba(168,85,247,0.15);

    --code-font:
        "JetBrains Mono",
        "Fira Code",
        "Cascadia Code",
        monospace;
}

/* =========================
   Reset
========================= */

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    scrollbar-width: thin;
}

/* =========================
   Base
========================= */

body {

    font-family:
    Inter,
    -apple-system,
    BlinkMacSystemFont,
    "Segoe UI",
    sans-serif;

    color: var(--text-primary);

    overflow: hidden;

background:
    radial-gradient(
        circle at top,
        rgba(139,92,246,0.06),
        transparent 45%
    ),
    #050507;

}


/* =========================
   Layout
========================= */

.out-container {

    height: 100vh;

    position: relative;

    overflow: hidden;

    background-color: black;

    isolation: isolate;

}


.container {

    width: min(85%, 900px);

    height:100dvh;

    overflow-y: auto;

    margin:auto;

    position:relative;

    display:flex;

    flex-direction:column;

    gap:30px;

    background:var(--background-dark);

    backdrop-filter:blur(12px);

    border-left:1px solid rgba(255,255,255,0.04);

    border-right:1px solid rgba(255,255,255,0.04);

    box-shadow:
        0 0 60px rgba(0,0,0,0.8);

    font-size:18px;

}

/* =========================
   Background
========================= */

#background-video {

    position: absolute;

    inset: 0;

    width: 100%;

    height: 100%;

    object-fit: cover;

    filter:
    blur(12px)
    brightness(35%)
    saturate(60%);

    opacity:0.7;

    transform: scale(1.1);

    z-index: -1;

}


/* =========================
   Navigation
========================= */

.navbar ul {

    padding-top: 30px;

    display: flex;

    justify-content: center;

    gap:40px;

    list-style: none;

    font-family: var(--code-font);

    font-size: clamp(18px, 2vw, 30px);

}


.navbar a {

    display:inline-block;

    padding:8px 12px;

    color:var(--accent-bright);

    text-decoration:none;

    border-radius:8px;

    transition:0.2s ease;

}


.navbar a:hover,
.navbar a:focus {
    --hover-background: rgba(139,92,246,0.12);
    background-color: var(--hover-background);

    border-radius: 8px;

}


.active {

    font-weight: bold;

}


.active::before,
.navbar a:hover::before,
.navbar a:focus::before {

    content: '> ';

    animation: blink 1s infinite;

}


.active::after,
.navbar a:hover::after,
.navbar a:focus::after {

    content: ' ';

    animation: blink 1s infinite;

}


.navbar:has(a:hover) a.active:not(:hover)::before,
.navbar:has(a:focus) a.active:not(:focus)::before{

    content: "";

}


@keyframes blink {

    50% {
        opacity: 0;
    }

}

@keyframes fadeIn {

    from {

    opacity:0;

    transform:translateY(-15px);

    }

    to {

    opacity:1;

    transform:none;

    }

}

/* =========================
   Main
========================= */

main {

    flex: 1;

    padding: clamp(20px, 3vw, 50px);

    font-family: inherit;

    animation: fadeIn .6s ease;


}

main section {

    margin-bottom: 40px;

}

.nerd {
    font-weight: 800;
}





.page-header {

    font-size: clamp(24px, 2.5vw, 36px);

}

.page-header::after {

    content:"_";

    color:var(--accent-color);

    animation:
    blink 1s infinite;

}


.link {

    color:var(--accent-color);

    text-decoration:none;

    transition:0.2s ease;

}


.link:hover {

    color:white;

    text-shadow:
    0 0 4px rgba(139,92,246,0.45);

}


/* =========================
   Character / Volume
========================= */

#volume {
    position: absolute;

    left: 30px;
    bottom: 50%;

    transform: translateY(50%);

    width: 100px;
}


#dance-video,
#idle-video {

    width: min(350px, 20vh);

    padding-bottom: 1%;

    z-index: 10;

}


#dance-video {

    display: none;

}


#idle-video {

    display: block;

}


/* =========================
   Footer
========================= */

footer {

    position: relative;

    display: flex;

    flex-direction: column;

    justify-content: center;

    align-items: center;

    padding-bottom: 3%;

    color: var(--text-muted);

    font-size: 15px;

    margin-top: auto;

}


/* =========================
   Project Page
========================= */

.projects {

    flex: 1;

    padding: 50px;

    overflow-y: auto;

    font-family: var(--code-font);

}


.project-card {

    width: 100%;

    margin-bottom: 25px;

    padding: 20px;

    background-color: var(--card-background);

    border: 1px solid rgba(238, 236, 236, 0.514);

    border-radius: 12px;
    
    transition: .25s ease;

}

.project-card:hover {

    transform:translateY(-5px);

    border-color:
    rgba(139,92,246,0.5);

}

.project-header {

    display: grid;

    grid-template-columns: 1fr auto auto;

    gap: 20px;

    align-items: center;

    padding-bottom: 15px;

    border-bottom: 1px solid var(--accent-transparent);

}


.project-header h2 {

    color: var(--accent-color);

}


.tags {

    color:
    rgba(255,255,255,.45);

    font-size:15px;

    font-family:var(--code-font);

}


.project-header a {

    color: var(--text-primary);

    text-decoration: none;

}


.project-header a:hover {

    color: var(--accent-color);

}


.project-description {

    min-height: 50px;

    padding-top: 15px;

    color: var(--text-secondary);

}


/* =========================
   Blog Page
========================= */

.blog {

    flex: 1;

    padding: 50px;

    overflow-y: auto;

    font-family: var(--code-font);

}


.blog-entry {

    display:flex;

    flex-direction:column;

    gap:12px;

    padding:20px;

    margin-bottom: 20px;

    background-color: var(--card-background);

    border: 1px solid rgba(238, 236, 236, 0.514);

    border-radius:16px;

    transition:.25s ease;

}

.blog-entry:hover {

    transform:translateY(-5px);

    border-color:
    rgba(139,92,246,.5);

}


.date {

    color:
    rgba(255,255,255,.45);

    font-size:14px;

    font-family:var(--code-font);

}


.blog-content {

    display: flex;

    flex-direction: column;

    gap: 8px;

}


.blog-content a {

    color: var(--accent-color);

    font-size:26px;

    font-weight:700;

    text-decoration: none;

}


.blog-content a:hover {

    color: var(--text-primary);

}


.blog-content p {

    color: #aaaaaa;

    font-size: 16px;

}


.rss-button {

    display: inline-block;

    margin-bottom: 25px;

    color: var(--accent-color);

    font-family: var(--code-font);

    font-size: 20px;

    text-decoration: none;

}


.rss-button:hover {

    color: var(--text-primary);

    text-decoration: underline;

}


/* =========================
   Contact Page
========================= */

.contact {

    flex: 1;

    display: flex;

    justify-content: flex-start;

    align-items: center;

    overflow-y: auto;

    padding: 40px 0;

    font-family: var(--code-font);

}


.contact-box {

    display: flex;

    flex-direction: column;

    gap: 20px;

    width: min(600px, 90%);

    margin: auto;

}


.contact-item {

    display: block;

    padding: 20px;

    background-color: var(--card-background);

    border: 1px solid rgba(238, 236, 236, 0.514);

    border-radius: 12px;

    text-decoration: none;

    transition: 0.25s ease;

}


.contact-item:hover {

    transform:translateY(-5px);

    border-color:rgba(139,92,246,0.5);

}


.contact-item h2 {

    margin-bottom: 10px;

    color: var(--accent-color);

    font-size: 18px;

}


.contact-item p {

    color: var(--text-primary);

    font-size:14px;

    font-family:var(--code-font);

}


/* =========================
   Responsive
========================= */

@media (max-width: 768px) {

    .navbar ul {

        flex-wrap: wrap;
        gap: 10px 20px;
        padding-top: 20px;
        padding-left: 20px;
        padding-right: 20px;

        font-size: 18px;

    }


    body {

        overflow-y: auto;

    }


    .out-container,
    .container {

        height: auto;

        min-height: 100vh;
        width: 100%;

    }


    #background-video {

        position: fixed;

    }


    main {

        padding: 20px;

    }


    footer {

        padding-bottom: 30px;
        

    }

}