/* ── Reset & Base ── */
        *,
        *::before,
        *::after {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        html {
            scroll-behavior: smooth;
            cursor: none;
        }
        body {
            background: #050505;
            color: #FFFFFF;
            font-family: 'Inter', sans-serif;
            overflow-x: hidden;
            -webkit-user-select: none;
            -moz-user-select: none;
            -ms-user-select: none;
            user-select: none;
        }
        :where(a, button, .magnetic-wrap, .skill-row, .contact-icon),
        :where(a, button, .magnetic-wrap, .skill-row, .contact-icon) * {
            cursor: none;
        }
        ::selection {
            background: #FFFFFF;
            color: #050505;
        }

        /* ── Scrollbar ── */
        ::-webkit-scrollbar {
            width: 6px;
        }
        ::-webkit-scrollbar-track {
            background: #050505;
        }
        ::-webkit-scrollbar-thumb {
            background: #1A1A1A;
            border-radius: 3px;
        }
        ::-webkit-scrollbar-thumb:hover {
            background: #FFFFFF;
        }

        /* ── Custom Cursor ── */
        .cursor-dot {
            position: fixed;
            left: 0;
            top: 0;
            pointer-events: none;
            border-radius: 999px;
            opacity: 0;
            transform: translate3d(-50%, -50%, 0);
            transition: opacity 0.2s ease;
            z-index: 9999;
            width: 8px;
            height: 8px;
            background: #FFFFFF;
            box-shadow: 0 0 12px rgba(255, 255, 255, 0.85), 0 0 28px rgba(255, 255, 255, 0.35);
            will-change: left, top, opacity;
        }
        .cursor-visible .cursor-dot {
            opacity: 1;
        }
        /* ── Noise Texture ── */
        .noise {
            position: fixed;
            top: 0;
            left: 0;
            width: 100vw;
            height: 100vh;
            pointer-events: none;
            z-index: 0;
            opacity: 0.035;
            background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
            background-repeat: repeat;
            background-size: 256px 256px;
        }

        /* ── Stars ── */
        .stars-container {
            position: fixed;
            top: 0;
            left: 0;
            width: 100vw;
            height: 100vh;
            pointer-events: none;
            z-index: 0;
            overflow: hidden;
        }
        .star {
            position: absolute;
            background: #fff;
            border-radius: 50%;
            animation: twinkle var(--dur, 3s) ease-in-out infinite alternate;
            will-change: opacity, transform;
        }
        @keyframes twinkle {
            0% {
                opacity: 0.15;
                transform: scale(0.8);
            }
            100% {
                opacity: 0.8;
                transform: scale(1.2);
            }
        }

        /* ── Cross particles ── */
        .cross {
            position: absolute;
            color: rgba(255, 255, 255, 0.04);
            font-size: var(--size, 12px);
            pointer-events: none;
            user-select: none;
            animation: crossDrift var(--dur, 20s) linear infinite;
            will-change: opacity, transform;
        }

        .tech-bg {
            position: fixed;
            inset: 0;
            z-index: 0;
            pointer-events: none;
            overflow: hidden;
        }
        .tech-logo {
            position: absolute;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            min-width: 72px;
            height: 38px;
            padding: 0 16px;
            border: 1px solid rgba(255, 255, 255, 0.08);
            border-radius: 8px;
            color: rgba(255, 255, 255, 0.085);
            font-family: 'Space Grotesk', sans-serif;
            font-size: clamp(0.82rem, 1.4vw, 1.1rem);
            font-weight: 700;
            letter-spacing: 0;
            text-transform: none;
            --logo-x: 10px;
            --logo-y: -16px;
            --logo-x-end: -7px;
            --logo-y-end: 8px;
            --logo-tilt: 0deg;
            transform: translate3d(0, 0, 0) rotate(var(--logo-rotate, 0deg));
            will-change: transform, opacity;
            animation: logoLevitate var(--logo-speed, 18s) ease-in-out infinite;
            animation-delay: var(--logo-delay, 0s);
        }
        .tech-logo:nth-child(1) {
            left: 8%;
            top: 16%;
            --logo-rotate: -9deg;
            --logo-tilt: -5deg;
            --logo-speed: 17s;
            --logo-delay: -2s;
        }
        .tech-logo:nth-child(2) {
            right: 10%;
            top: 22%;
            --logo-rotate: 7deg;
            --logo-tilt: 11deg;
            --logo-speed: 21s;
            --logo-delay: -7s;
        }
        .tech-logo:nth-child(3) {
            left: 18%;
            top: 54%;
            --logo-rotate: 5deg;
            --logo-tilt: 1deg;
            --logo-speed: 19s;
            --logo-delay: -4s;
        }
        .tech-logo:nth-child(4) {
            right: 18%;
            top: 58%;
            --logo-rotate: -6deg;
            --logo-tilt: -10deg;
            --logo-speed: 23s;
            --logo-delay: -11s;
        }
        .tech-logo:nth-child(5) {
            left: 62%;
            top: 76%;
            --logo-rotate: 10deg;
            --logo-tilt: 6deg;
            --logo-speed: 18s;
            --logo-delay: -6s;
        }
        .tech-logo:nth-child(6) {
            left: 5%;
            top: 82%;
            --logo-rotate: 4deg;
            --logo-tilt: 8deg;
            --logo-speed: 22s;
            --logo-delay: -13s;
        }
        .tech-logo:nth-child(7) {
            right: 6%;
            top: 84%;
            --logo-rotate: -8deg;
            --logo-tilt: -3deg;
            --logo-speed: 20s;
            --logo-delay: -9s;
        }
        .tech-logo:nth-child(8) {
            left: 48%;
            top: 8%;
            --logo-rotate: 6deg;
            --logo-tilt: 10deg;
            --logo-speed: 24s;
            --logo-delay: -15s;
        }
        @keyframes logoLevitate {
            0% {
                transform: translate3d(0, 0, 0) rotate(var(--logo-rotate, 0deg));
                opacity: 0.58;
            }
            50% {
                transform: translate3d(var(--logo-x), var(--logo-y), 0) rotate(var(--logo-tilt, 0deg));
                opacity: 0.92;
            }
            100% {
                transform: translate3d(var(--logo-x-end), var(--logo-y-end), 0) rotate(var(--logo-rotate, 0deg));
                opacity: 0.62;
            }
        }
        @keyframes crossDrift {
            0% {
                transform: translateY(0) rotate(0deg);
                opacity: 0.3;
            }
            50% {
                opacity: 0.7;
            }
            100% {
                transform: translateY(-120vh) rotate(360deg);
                opacity: 0.1;
            }
        }

        /* ── Animations ── */
        @keyframes fadeInUp {
            from {
                opacity: 0;
                transform: translateY(40px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }
        @keyframes fadeIn {
            from {
                opacity: 0;
            }
            to {
                opacity: 1;
            }
        }
        @keyframes blurIn {
            from {
                opacity: 0;
                filter: blur(12px);
                transform: scale(0.98);
            }
            to {
                opacity: 1;
                filter: blur(0);
                transform: scale(1);
            }
        }
        @keyframes slideInLeft {
            from {
                opacity: 0;
                transform: translateX(-60px);
            }
            to {
                opacity: 1;
                transform: translateX(0);
            }
        }
        @keyframes slideInRight {
            from {
                opacity: 0;
                transform: translateX(60px);
            }
            to {
                opacity: 1;
                transform: translateX(0);
            }
        }
        @keyframes scaleIn {
            from {
                opacity: 0;
                transform: scale(0.92);
            }
            to {
                opacity: 1;
                transform: scale(1);
            }
        }
        .animate-fade-up {
            animation: fadeInUp 0.9s cubic-bezier(0.16, 1, 0.3, 1) forwards;
        }
        .animate-fade {
            animation: fadeIn 0.8s ease forwards;
        }
        .animate-blur {
            animation: blurIn 1s cubic-bezier(0.16, 1, 0.3, 1) forwards;
        }
        .animate-slide-left {
            animation: slideInLeft 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
        }
        .animate-slide-right {
            animation: slideInRight 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
        }
        .animate-scale {
            animation: scaleIn 0.7s cubic-bezier(0.16, 1, 0.3, 1) forwards;
        }
        .delay-100 {
            animation-delay: 0.1s;
        }
        .delay-200 {
            animation-delay: 0.2s;
        }
        .delay-300 {
            animation-delay: 0.3s;
        }
        .delay-400 {
            animation-delay: 0.4s;
        }
        .delay-500 {
            animation-delay: 0.5s;
        }
        .delay-600 {
            animation-delay: 0.6s;
        }
        .delay-700 {
            animation-delay: 0.7s;
        }
        .delay-800 {
            animation-delay: 0.8s;
        }
        .opacity-0 {
            opacity: 0;
        }

        /* ── Glow underlines ── */
        .glow-underline {
            position: relative;
            display: inline-block;
        }
        .glow-underline::after {
            content: '';
            position: absolute;
            bottom: -4px;
            left: 0;
            width: 0;
            height: 2px;
            background: #FFFFFF;
            box-shadow: 0 0 20px rgba(255, 255, 255, 0.45);
            transition: width 0.5s cubic-bezier(0.16, 1, 0.3, 1);
        }
        .glow-underline:hover::after {
            width: 100%;
        }

        /* ── Magnetic button wrapper ── */
        .magnetic-wrap {
            display: inline-block;
            transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1);
        }

        /* ── Project card glow border ── */
        .project-card {
            transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1);
            border: 1px solid #1A1A1A;
        }
        .project-link {
            color: inherit;
            text-decoration: none;
        }
        .project-card:hover {
            border-color: #FFFFFF;
            box-shadow: 0 0 40px rgba(255, 255, 255, 0.06), inset 0 0 40px rgba(255, 255, 255, 0.03);
            transform: translateY(-4px);
        }
        .profile-panel {
            position: relative;
            overflow: hidden;
            transform-style: preserve-3d;
            will-change: transform;
            transition: border-color 0.25s ease, box-shadow 0.25s ease, transform 0.28s cubic-bezier(0.16, 1, 0.3, 1);
        }
        .profile-panel.project-card:hover {
            transform: none;
        }
        .profile-panel::before {
            content: '';
            position: absolute;
            inset: -1px;
            pointer-events: none;
            opacity: 0;
            transition: opacity 0.28s ease;
            background: radial-gradient(circle at var(--panel-x, 50%) var(--panel-y, 50%), rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.04) 28%, transparent 58%);
        }
        .profile-panel.is-moving::before {
            opacity: 1;
        }
        .profile-panel.is-moving {
            border-color: rgba(255, 255, 255, 0.42);
            box-shadow: 0 22px 55px rgba(0, 0, 0, 0.34), 0 0 36px rgba(255, 255, 255, 0.06), inset 0 0 42px rgba(255, 255, 255, 0.025);
        }
        .profile-panel > * {
            position: relative;
            z-index: 1;
        }

        /* ── Skill row hover ── */
        .skills-list {
            width: 100%;
        }
        .skill-row {
            display: grid;
            grid-template-columns: minmax(96px, 0.8fr) minmax(150px, 1.1fr) minmax(80px, 2.5fr) minmax(120px, auto);
            align-items: center;
            gap: 24px;
            min-height: 70px;
            padding: 0 18px;
            position: relative;
            overflow: hidden;
            transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
            border-bottom: 1px solid #1A1A1A;
            cursor: none;
        }
        .skill-row::before {
            content: '';
            position: absolute;
            left: 0;
            top: 16px;
            bottom: 16px;
            width: 2px;
            background: #FFFFFF;
            opacity: 0;
            transform: scaleY(0.35);
            transition: opacity 0.25s ease, transform 0.25s ease;
            pointer-events: none;
        }
        .skill-row > * {
            position: relative;
            z-index: 1;
            pointer-events: none;
        }
        .skill-row:hover {
            background: rgba(255, 255, 255, 0.04);
            border-color: #FFFFFF;
            box-shadow: inset 0 0 26px rgba(255, 255, 255, 0.025);
        }
        .skill-row:hover::before {
            opacity: 1;
            transform: scaleY(1);
        }
        .skill-category {
            color: #7A7A7A;
            font-family: 'Inter', sans-serif;
            font-size: 0.86rem;
            font-weight: 600;
        }
        .skill-name {
            color: #FFFFFF;
            font-family: 'Space Grotesk', sans-serif;
            font-size: clamp(1.05rem, 2vw, 1.35rem);
            font-weight: 700;
        }
        .skill-line {
            width: 100%;
            height: 1px;
            background: linear-gradient(90deg, rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0.04));
        }
        .skill-level {
            color: #D4D4D4;
            font-family: 'Inter', sans-serif;
            font-size: 0.92rem;
            font-weight: 600;
            text-align: right;
            white-space: nowrap;
        }

        /* ── Stat card ── */
        .stat-card {
            border: 1px solid #1A1A1A;
            transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
            background: #0B0B0B;
        }
        .stat-card:hover {
            border-color: #FFFFFF;
            transform: translateY(-2px);
            box-shadow: 0 0 30px rgba(255, 255, 255, 0.05);
        }

        /* ── Contact icon glow ── */
        .contact-icon {
            transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
            color: #7A7A7A;
        }
        .contact-icon:hover {
            color: #FFFFFF;
            text-shadow: 0 0 30px rgba(255, 255, 255, 0.35);
            transform: translateY(-2px);
        }

        /* ── Section reveal ── */
        .site-footer {
            padding-top: 34px;
            padding-bottom: 34px;
            border-top: 1px solid rgba(255, 255, 255, 0.08);
            background: linear-gradient(180deg, rgba(0, 0, 0, 0), rgba(255, 255, 255, 0.025));
        }
        .site-footer-inner {
            display: grid;
            grid-template-columns: 1fr auto 1fr;
            align-items: center;
            gap: 24px;
            min-height: 86px;
        }
        .footer-brand {
            display: flex;
            align-items: center;
            gap: 14px;
            min-width: 0;
        }
        .footer-avatar {
            width: 42px;
            height: 42px;
            border-radius: 999px;
            border: 1px solid rgba(255, 255, 255, 0.22);
            background: #0B0B0B;
            object-fit: cover;
            filter: grayscale(1) contrast(1.08);
            box-shadow: 0 0 24px rgba(255, 255, 255, 0.08);
            flex-shrink: 0;
        }
        .footer-name {
            color: #FFFFFF;
            font-family: 'Space Grotesk', sans-serif;
            font-size: 1rem;
            font-weight: 700;
            line-height: 1.1;
        }
        .footer-subtitle {
            color: #7A7A7A;
            font-family: 'Inter', sans-serif;
            font-size: 0.82rem;
            line-height: 1.4;
            margin-top: 3px;
        }
        .footer-links {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 18px;
        }
        .footer-links a {
            color: #A3A3A3;
            font-family: 'Inter', sans-serif;
            font-size: 0.88rem;
            font-weight: 600;
            text-decoration: none;
            transition: color 0.2s ease, text-shadow 0.2s ease;
        }
        .footer-links a:hover {
            color: #FFFFFF;
            text-shadow: 0 0 18px rgba(255, 255, 255, 0.3);
        }
        .footer-meta {
            justify-self: end;
            color: #7A7A7A;
            font-family: 'Inter', sans-serif;
            font-size: 0.86rem;
            font-weight: 600;
            white-space: nowrap;
        }

        .section-reveal {
            opacity: 0;
            transform: translateY(60px);
            transition: all 0.9s cubic-bezier(0.16, 1, 0.3, 1);
        }
        .section-reveal.visible {
            opacity: 1;
            transform: translateY(0);
        }

        /* ── Responsive tweaks ── */
        @media (max-width: 768px) {
            .cursor-dot {
                display: none;
            }
            html {
                cursor: auto;
            }
            body {
                cursor: auto;
            }
            .profile-panel {
                transform: none !important;
            }
            .profile-panel::before {
                display: none;
            }
            .tech-logo {
                min-width: 58px;
                height: 30px;
                padding: 0 10px;
                opacity: 0.7;
            }
            .tech-logo:nth-child(n+5) {
                display: none;
            }
            .skill-row {
                grid-template-columns: 1fr;
                gap: 6px;
                min-height: auto;
                padding: 18px 0;
                transform: none !important;
            }
            .skill-line {
                display: none;
            }
            .skill-level {
                text-align: left;
                white-space: normal;
            }
            .site-footer {
                padding-top: 30px;
                padding-bottom: 30px;
            }
            .site-footer-inner {
                grid-template-columns: 1fr;
                justify-items: center;
                text-align: center;
                gap: 18px;
                min-height: auto;
            }
            .footer-brand {
                justify-content: center;
            }
            .footer-links {
                flex-wrap: wrap;
                gap: 14px;
            }
            .footer-meta {
                justify-self: center;
            }
        }

        /* ── Loading shimmer ── */
        @media (prefers-reduced-motion: reduce) {
            *,
            *::before,
            *::after {
                animation-duration: 0.001ms !important;
                animation-iteration-count: 1 !important;
                scroll-behavior: auto !important;
                transition-duration: 0.001ms !important;
            }
            .tech-logo,
            .star,
            .cross {
                animation: none !important;
            }
            .profile-panel {
                transform: none !important;
            }
        }

        .shimmer {
            background: linear-gradient(90deg, #0B0B0B 25%, #1A1A1A 50%, #0B0B0B 75%);
            background-size: 200% 100%;
            animation: shimmer 1.5s infinite;
        }
        @keyframes shimmer {
            0% {
                background-position: 200% 0;
            }
            100% {
                background-position: -200% 0;
            }
        }

        /* ── Smooth scroll offset ── */
        .scroll-offset {
            scroll-margin-top: 80px;
        }

        .profile-avatar {
            position: relative;
            overflow: hidden;
            flex-shrink: 0;
            background: #0B0B0B;
        }
        .profile-avatar img {
            display: block;
            width: 100%;
            height: 100%;
            object-fit: cover;
            filter: grayscale(1) contrast(1.08);
        }
        .profile-avatar::after {
            content: '';
            position: absolute;
            inset: 0;
            pointer-events: none;
            border-radius: inherit;
            box-shadow: inset 0 0 22px rgba(0, 0, 0, 0.35);
        }
