:root {
    --bg: #050505;
    --text: #ffffff;
    --muted: rgba(255, 255, 255, 0.42);
    --border: rgba(255, 255, 255, 0.09);
    --card: rgba(255, 255, 255, 0.045);
    --card-hover: rgba(255, 255, 255, 0.075);
}

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

html {
    min-height: 100%;
}

body {
    min-height: 100vh;

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

    font-family: "Inter", sans-serif;

    overflow-x: hidden;

    -webkit-font-smoothing: antialiased;
}

a {
    color: inherit;
    text-decoration: none;
}


/* =========================
   BACKGROUND
========================= */

.background {
    position: fixed;
    inset: 0;

    z-index: -10;

    overflow: hidden;

    background:
        radial-gradient(
            circle at 50% -10%,
            rgba(255, 255, 255, 0.08),
            transparent 35%
        ),
        #050505;
}


/* Animated blobs */

.gradient {
    position: absolute;

    width: 500px;
    height: 500px;

    border-radius: 50%;

    filter: blur(120px);

    opacity: 0.18;

    animation:
        float 18s ease-in-out infinite;

    pointer-events: none;
}

.gradient-1 {
    top: -250px;
    left: -180px;

    background: #6d5dfc;
}

.gradient-2 {
    right: -250px;
    top: 25%;

    background: #ff2d95;

    animation-delay: -6s;
}

.gradient-3 {
    left: 30%;
    bottom: -300px;

    background: #00c6ff;

    animation-delay: -11s;
}


/* Grid */

.grid {
    position: absolute;
    inset: 0;

    opacity: 0.035;

    background-image:
        linear-gradient(
            rgba(255,255,255,0.15) 1px,
            transparent 1px
        ),
        linear-gradient(
            90deg,
            rgba(255,255,255,0.15) 1px,
            transparent 1px
        );

    background-size: 70px 70px;

    mask-image:
        radial-gradient(
            ellipse at center,
            black 20%,
            transparent 75%
        );
}


/* Noise */

.noise {
    position: absolute;
    inset: 0;

    opacity: 0.045;

    pointer-events: none;

    background-image:
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='.8'/%3E%3C/svg%3E");
}


/* Cursor glow */

#cursor-glow {
    position: fixed;

    width: 450px;
    height: 450px;

    border-radius: 50%;

    pointer-events: none;

    transform:
        translate(-50%, -50%);

    background:
        radial-gradient(
            circle,
            rgba(255,255,255,0.065) 0%,
            rgba(255,255,255,0.025) 25%,
            transparent 70%
        );

    filter: blur(15px);

    z-index: 20;

    opacity: 0;

    transition: opacity 0.3s ease;
}


/* =========================
   PARTICLES
========================= */

.particle {
    position: absolute;

    width: 2px;
    height: 2px;

    border-radius: 50%;

    background: rgba(255,255,255,0.45);

    box-shadow:
        0 0 8px rgba(255,255,255,0.35);

    animation:
        particle-float linear infinite;
}


/* =========================
   MAIN
========================= */

.container {
    width: min(100%, 620px);

    margin: 0 auto;

    padding:
        75px
        20px
        50px;

    display: flex;

    flex-direction: column;

    align-items: center;
}


/* =========================
   PROFILE
========================= */

.profile {
    display: flex;

    flex-direction: column;

    align-items: center;

    text-align: center;

    animation:
        fade-up 0.9s ease forwards;

    opacity: 0;
}


.avatar {
    width: 96px;
    height: 96px;

    display: flex;

    align-items: center;
    justify-content: center;

    margin-bottom: 24px;

    border-radius: 50%;

    position: relative;

    background:
        linear-gradient(
            145deg,
            rgba(255,255,255,0.14),
            rgba(255,255,255,0.025)
        );

    border:
        1px solid
        rgba(255,255,255,0.15);

    box-shadow:
        0 20px 70px rgba(0,0,0,0.5),
        inset 0 1px 1px rgba(255,255,255,0.12);

    backdrop-filter:
        blur(20px);

    animation:
        avatar-float 5s ease-in-out infinite;
}

.avatar::before {
    content: "";

    position: absolute;

    inset: -7px;

    border-radius: inherit;

    border:
        1px solid
        rgba(255,255,255,0.035);

    animation:
        avatar-ring 4s ease-in-out infinite;
}

.avatar span {
    font-size: 34px;

    font-weight: 800;

    letter-spacing: -0.06em;

    background:
        linear-gradient(
            135deg,
            #fff,
            rgba(255,255,255,0.45)
        );

    -webkit-background-clip: text;
    background-clip: text;

    color: transparent;
}


h1 {
    font-size:
        clamp(38px, 8vw, 56px);

    line-height: 1;

    font-weight: 800;

    letter-spacing: -0.065em;

    text-shadow:
        0 0 40px rgba(255,255,255,0.08);
}


.subtitle {
    margin-top: 14px;

    color: var(--muted);

    font-size: 14px;

    letter-spacing: 0.01em;
}


/* Social */

.socials {
    margin-top: 20px;
}

.social {
    width: 42px;
    height: 42px;

    display: flex;

    align-items: center;
    justify-content: center;

    border-radius: 13px;

    color:
        rgba(255,255,255,0.6);

    font-size: 11px;

    font-weight: 700;

    letter-spacing: 0.03em;

    background:
        rgba(255,255,255,0.035);

    border:
        1px solid
        rgba(255,255,255,0.08);

    backdrop-filter:
        blur(15px);

    transition:
        transform 0.3s ease,
        background 0.3s ease,
        color 0.3s ease,
        border-color 0.3s ease;
}

.social:hover {
    transform:
        translateY(-4px)
        scale(1.05);

    color: #fff;

    background:
        rgba(255,255,255,0.08);

    border-color:
        rgba(255,255,255,0.18);
}


/* =========================
   LINKS
========================= */

.links {
    width: 100%;

    display: flex;

    flex-direction: column;

    gap: 13px;

    margin-top: 38px;
}


.link-card {
    width: 100%;

    min-height: 84px;

    position: relative;

    display: flex;

    align-items: center;

    padding:
        13px
        17px
        13px
        13px;

    border-radius: 21px;

    overflow: hidden;

    background:
        linear-gradient(
            110deg,
            rgba(255,255,255,0.075),
            rgba(255,255,255,0.025)
        );

    border:
        1px solid
        var(--border);

    box-shadow:
        0 20px 60px rgba(0,0,0,0.2),
        inset 0 1px 0 rgba(255,255,255,0.055);

    backdrop-filter:
        blur(20px);

    transform-style:
        preserve-3d;

    transition:
        border-color 0.35s ease,
        background 0.35s ease,
        box-shadow 0.35s ease;

    animation:
        card-in 0.7s ease forwards;

    opacity: 0;
}


.link-card:nth-child(1) {
    animation-delay: 0.15s;
}

.link-card:nth-child(2) {
    animation-delay: 0.25s;
}

.link-card:nth-child(3) {
    animation-delay: 0.35s;
}

.link-card:nth-child(4) {
    animation-delay: 0.45s;
}

.link-card:nth-child(5) {
    animation-delay: 0.55s;
}


.link-card::before {
    content: "";

    position: absolute;

    inset: 0;

    background:
        radial-gradient(
            circle at var(--mx, 50%) var(--my, 50%),
            rgba(255,255,255,0.12),
            transparent 32%
        );

    opacity: 0;

    transition:
        opacity 0.35s ease;

    pointer-events: none;
}


.link-card:hover::before {
    opacity: 1;
}


.link-card:hover {
    border-color:
        rgba(255,255,255,0.18);

    background:
        linear-gradient(
            110deg,
            rgba(255,255,255,0.105),
            rgba(255,255,255,0.035)
        );

    box-shadow:
        0 25px 80px rgba(0,0,0,0.35),
        0 0 40px rgba(255,255,255,0.035),
        inset 0 1px 0 rgba(255,255,255,0.09);
}


/* Icon */

.link-icon {
    width: 54px;
    height: 54px;

    flex-shrink: 0;

    display: flex;

    align-items: center;
    justify-content: center;

    border-radius: 16px;

    color:
        rgba(255,255,255,0.85);

    font-size: 22px;

    background:
        rgba(255,255,255,0.055);

    border:
        1px solid
        rgba(255,255,255,0.075);

    box-shadow:
        inset 0 1px 0
        rgba(255,255,255,0.06);

    transition:
        transform 0.35s ease,
        background 0.35s ease;
}


.link-card:hover .link-icon {
    transform:
        translateZ(15px)
        rotate(-3deg);

    background:
        rgba(255,255,255,0.09);
}


/* Content */

.link-content {
    display: flex;

    flex-direction: column;

    min-width: 0;

    margin-left: 15px;

    gap: 5px;
}


.link-title {
    font-size: 15px;

    font-weight: 600;

    letter-spacing: -0.015em;
}


.link-description {
    color:
        rgba(255,255,255,0.42);

    font-size: 12px;
}


.link-url {
    margin-left: auto;

    margin-right: 20px;

    color:
        rgba(255,255,255,0.19);

    font-size: 10px;

    transition:
        color 0.3s ease;
}


.link-card:hover .link-url {
    color:
        rgba(255,255,255,0.38);
}


/* Arrow */

.arrow {
    color:
        rgba(255,255,255,0.28);

    font-size: 20px;

    transition:
        transform 0.35s ease,
        color 0.35s ease;
}


.link-card:hover .arrow {
    color: #fff;

    transform:
        translate(4px, -4px);
}


/* =========================
   FOOTER
========================= */

footer {
    display: flex;

    align-items: center;

    gap: 9px;

    margin-top: 42px;

    color:
        rgba(255,255,255,0.2);

    font-size: 9px;

    font-weight: 600;

    letter-spacing: 0.16em;

    animation:
        fade-up 1s ease
        1.2s forwards;

    opacity: 0;
}


.dot {
    opacity: 0.4;
}


/* =========================
   ANIMATIONS
========================= */

@keyframes float {

    0%,
    100% {
        transform:
            translate3d(0,0,0)
            scale(1);
    }

    50% {
        transform:
            translate3d(50px,35px,0)
            scale(1.08);
    }
}


@keyframes particle-float {

    from {
        transform:
            translateY(110vh)
            translateX(0);

        opacity: 0;
    }

    10% {
        opacity: 1;
    }

    90% {
        opacity: 0.5;
    }

    to {
        transform:
            translateY(-10vh)
            translateX(80px);

        opacity: 0;
    }
}


@keyframes avatar-float {

    0%,
    100% {
        transform:
            translateY(0);
    }

    50% {
        transform:
            translateY(-6px);
    }
}


@keyframes avatar-ring {

    0%,
    100% {
        transform:
            scale(1);

        opacity: 0.4;
    }

    50% {
        transform:
            scale(1.06);

        opacity: 0.1;
    }
}


@keyframes fade-up {

    from {
        opacity: 0;

        transform:
            translateY(20px);
    }

    to {
        opacity: 1;

        transform:
            translateY(0);
    }
}


@keyframes card-in {

    from {
        opacity: 0;

        transform:
            translateY(30px)
            scale(0.97);
    }

    to {
        opacity: 1;

        transform:
            translateY(0)
            scale(1);
    }
}


/* =========================
   MOBILE
========================= */

@media (max-width: 650px) {

    .container {
        padding:
            48px
            15px
            35px;
    }

    .avatar {
        width: 82px;
        height: 82px;
    }

    h1 {
        font-size: 40px;
    }

    .links {
        margin-top: 30px;
    }

    .link-card {
        min-height: 76px;

        border-radius: 18px;
    }

    .link-icon {
        width: 47px;
        height: 47px;

        border-radius: 14px;
    }

    .link-url {
        display: none;
    }

    footer {
        margin-top: 32px;
    }

    #cursor-glow {
        display: none;
    }

}
