:root{--bg: #020403;--bg-elevated: #0a0f0c;--text: #f0f0f0;--text-muted: #888888;--text-dim: #555555;--border: #1a1a1a;--border-hover: #333333;--font-heading: "Space Grotesk", sans-serif;--font-body: "Inter", sans-serif;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--space-3xl: 64px;--space-4xl: 96px;--space-5xl: 128px;--ease-out-expo: cubic-bezier(.16, 1, .3, 1);--ease-out-quint: cubic-bezier(.22, 1, .36, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--dur-fast: .2s;--dur-normal: .4s;--dur-slow: .8s;--dur-slower: 1.2s;--container-max: 1200px;--container-pad: 24px}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);background-color:var(--bg);color:var(--text);line-height:1.6;overflow-x:hidden}body.loading,body.menu-open{overflow:hidden}a{color:inherit;text-decoration:none}button{background:none;border:none;color:inherit;font:inherit}img{max-width:100%;display:block}ul,ol{list-style:none}::selection{background:#f0f0f026;color:var(--text)}.container{max-width:var(--container-max);margin:0 auto;padding:0 var(--container-pad)}.section{padding:var(--space-5xl) 0;position:relative}.section__label{display:inline-block;font-family:var(--font-body);font-size:.75rem;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--space-3xl);position:relative;padding-left:28px}.section__label:before{content:"";position:absolute;left:0;top:50%;width:16px;height:1px;background:var(--text-muted)}.reveal{opacity:0;transform:translateY(24px);transition:opacity var(--dur-slow) ease,transform var(--dur-slow) var(--ease-out-expo)}.reveal.visible{opacity:1;transform:translateY(0)}.cursor-dot{position:fixed;top:0;left:0;width:8px;height:8px;background:var(--text);border-radius:50%;pointer-events:none;z-index:10001;transform:translate(-50%,-50%);transition:width var(--dur-fast) ease,height var(--dur-fast) ease,background var(--dur-fast) ease;mix-blend-mode:difference}.cursor-ring{position:fixed;top:0;left:0;width:40px;height:40px;border:1px solid rgba(240,240,240,.25);border-radius:50%;pointer-events:none;z-index:10000;transform:translate(-50%,-50%);transition:width .3s var(--ease-out-expo),height .3s var(--ease-out-expo),border-color .3s ease,opacity .3s ease}.cursor-dot.hovering{width:50px;height:50px;background:#f0f0f014;mix-blend-mode:normal}.cursor-ring.hovering{width:50px;height:50px;border-color:#f0f0f080;opacity:.6}.loader{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg);display:flex;align-items:center;justify-content:center;z-index:9999;transition:transform 1s var(--ease-out-expo)}.loader.done{transform:translateY(-100%);pointer-events:none}.loader__content{text-align:center}.loader__name{font-family:var(--font-heading);font-size:clamp(1.4rem,3.5vw,2.4rem);font-weight:300;letter-spacing:1.2em;padding-right:1.2em;opacity:0;transition:opacity .8s ease,letter-spacing .8s var(--ease-out-expo)}.loader__name.visible{opacity:1}.loader__name.contract{letter-spacing:.3em;padding-right:.3em}.loader__line{width:0;height:1px;background:var(--text-dim);margin:var(--space-lg) auto;transition:width .6s var(--ease-out-expo)}.loader__line.grow{width:60px}.loader__subtitle{font-family:var(--font-body);font-size:.8rem;letter-spacing:.2em;color:var(--text-muted);opacity:0;transform:translateY(10px);transition:opacity .6s ease,transform .6s var(--ease-out-expo)}.loader__subtitle.visible{opacity:1;transform:translateY(0)}.header{position:fixed;top:0;left:0;width:100%;padding:var(--space-lg) var(--space-xl);display:flex;align-items:center;justify-content:space-between;z-index:100;opacity:0;transform:translateY(-20px);transition:opacity .6s ease,transform .6s var(--ease-out-expo),background .3s ease,backdrop-filter .3s ease}.header.visible{opacity:1;transform:translateY(0)}.header.scrolled{background:#020403cc;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid rgba(255,255,255,.04)}.header__logo{font-family:var(--font-heading);font-size:1.1rem;font-weight:600;letter-spacing:.08em;transition:opacity var(--dur-fast) ease}.header__logo:hover{opacity:.7}.header__nav{display:flex;align-items:center;gap:var(--space-xl)}.nav-link{font-size:.85rem;font-weight:400;letter-spacing:.02em;color:var(--text-muted);transition:color var(--dur-fast) ease;position:relative}.nav-link:hover{color:var(--text)}.nav-link:after{content:"";position:absolute;bottom:-4px;left:0;width:0;height:1px;background:var(--text);transition:width var(--dur-normal) var(--ease-out-expo)}.nav-link:hover:after{width:100%}.nav-link--cta{padding:6px 18px;border:1px solid var(--border);border-radius:100px;transition:color var(--dur-fast) ease,border-color var(--dur-fast) ease,background var(--dur-fast) ease}.nav-link--cta:after{display:none}.nav-link--cta:hover{border-color:var(--text-muted);background:#f0f0f00a}.header__menu-btn{display:none;flex-direction:column;gap:6px;padding:8px 4px;z-index:200}.header__menu-btn span{display:block;width:24px;height:1px;background:var(--text);transition:transform .3s var(--ease-out-expo),opacity .3s ease;transform-origin:center}.header__menu-btn.active span:first-child{transform:translateY(3.5px) rotate(45deg)}.header__menu-btn.active span:last-child{transform:translateY(-3.5px) rotate(-45deg)}.mobile-menu{position:fixed;top:0;right:0;bottom:0;left:0;background:#020403f5;backdrop-filter:blur(40px);-webkit-backdrop-filter:blur(40px);z-index:99;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .4s ease,visibility .4s ease}.mobile-menu.active{opacity:1;visibility:visible}.mobile-menu__nav{display:flex;flex-direction:column;align-items:center;gap:var(--space-2xl)}.mobile-menu__link{font-family:var(--font-heading);font-size:clamp(2rem,8vw,3.5rem);font-weight:300;letter-spacing:.05em;opacity:0;transform:translateY(24px);transition:opacity .4s ease,transform .4s var(--ease-out-expo),color var(--dur-fast) ease}.mobile-menu.active .mobile-menu__link{opacity:1;transform:translateY(0)}.mobile-menu.active .mobile-menu__link:nth-child(1){transition-delay:.08s}.mobile-menu.active .mobile-menu__link:nth-child(2){transition-delay:.14s}.mobile-menu.active .mobile-menu__link:nth-child(3){transition-delay:.2s}.mobile-menu.active .mobile-menu__link:nth-child(4){transition-delay:.26s}.mobile-menu__link:hover{color:var(--text-muted)}.hero{position:relative;height:100vh;min-height:600px;display:flex;align-items:center;justify-content:center;overflow:hidden}.hero__grid{position:absolute;top:-40px;right:-40px;bottom:-40px;left:-40px;background-image:linear-gradient(rgba(240,240,240,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(240,240,240,.025) 1px,transparent 1px);background-size:80px 80px;will-change:transform;pointer-events:none}.hero__glow{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:600px;height:600px;background:radial-gradient(circle,rgba(240,240,240,.04) 0%,transparent 70%);pointer-events:none;animation:glowPulse 6s ease-in-out infinite}@keyframes glowPulse{0%,to{opacity:.6;transform:translate(-50%,-50%) scale(1)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.15)}}.hero__content{position:relative;text-align:center;z-index:1;padding:0 var(--container-pad)}.hero__title{font-family:var(--font-heading);font-size:clamp(2.5rem,7vw,5.5rem);font-weight:400;line-height:1.15;letter-spacing:-.02em;margin-bottom:var(--space-xl)}.hero__title .word{display:inline-block;opacity:0;transform:translateY(40px);filter:blur(8px);transition:opacity .7s var(--ease-out-expo),transform .7s var(--ease-out-expo),filter .7s var(--ease-out-expo)}.hero__title .word.visible{opacity:1;transform:translateY(0);filter:blur(0)}.hero__subtitle{font-size:clamp(.85rem,1.4vw,1.1rem);font-weight:300;color:var(--text-muted);letter-spacing:.1em;opacity:0;transform:translateY(16px);transition:opacity .8s ease,transform .8s var(--ease-out-expo)}.hero__subtitle.visible{opacity:1;transform:translateY(0)}.hero__scroll{position:absolute;bottom:var(--space-2xl);left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);opacity:0;transition:opacity 1s ease}.hero__scroll.visible{opacity:1}.hero__scroll-text{font-size:.6rem;letter-spacing:.25em;text-transform:uppercase;color:var(--text-dim)}.hero__scroll-line{width:1px;height:40px;background:linear-gradient(to bottom,var(--text-dim),transparent);animation:scrollPulse 2.5s ease-in-out infinite}@keyframes scrollPulse{0%,to{opacity:.2;transform:scaleY(.4);transform-origin:top}50%{opacity:1;transform:scaleY(1)}}.about__grid{display:grid;grid-template-columns:1.6fr 1fr;gap:var(--space-4xl);align-items:start}.about__paragraph{font-size:clamp(1.15rem,2.2vw,1.55rem);font-weight:300;line-height:1.8;color:var(--text)}.about__paragraph .reveal-word{display:inline;opacity:.12;transition:opacity .35s ease}.about__paragraph .reveal-word.active{opacity:1}.about__stats{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2xl) var(--space-xl);padding-top:var(--space-xl)}.stat{opacity:0;transform:translateY(24px);transition:opacity .6s ease,transform .6s var(--ease-out-expo)}.stat.visible{opacity:1;transform:translateY(0)}.stat:nth-child(1){transition-delay:0s}.stat:nth-child(2){transition-delay:.08s}.stat:nth-child(3){transition-delay:.16s}.stat:nth-child(4){transition-delay:.24s}.stat__value{display:flex;align-items:baseline}.stat__number{font-family:var(--font-heading);font-size:clamp(2.5rem,4vw,3.5rem);font-weight:300;line-height:1}.stat__suffix{font-family:var(--font-heading);font-size:clamp(1.5rem,2vw,2rem);font-weight:300;color:var(--text-muted);margin-left:2px}.stat__label{display:block;margin-top:var(--space-sm);font-size:.72rem;letter-spacing:.1em;color:var(--text-dim);text-transform:uppercase}.skills__constellation{position:relative;width:100%;height:520px;margin-top:var(--space-xl)}.skills__constellation canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.skill-node{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%) scale(.85);font-family:var(--font-heading);font-size:.82rem;font-weight:400;letter-spacing:.04em;color:var(--text-dim);padding:var(--space-sm) var(--space-md);border:1px solid var(--border);border-radius:100px;background:var(--bg);white-space:nowrap;z-index:1;cursor:pointer;opacity:0;transition:color .3s ease,border-color .3s ease,box-shadow .4s ease,transform .4s var(--ease-out-expo),opacity .6s ease}.skill-node.visible{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:calc(var(--i, 0) * .06s)}.skill-node:hover,.skill-node.active{color:var(--text);border-color:var(--text-muted);transform:translate(-50%,-50%) scale(1.1)}.skill-node[data-category=frontend]:hover,.skill-node[data-category=frontend].active{box-shadow:0 0 28px #64b4ff1f,0 0 6px #64b4ff0f;border-color:#64b4ff4d}.skill-node[data-category=backend]:hover,.skill-node[data-category=backend].active{box-shadow:0 0 28px #64ffa01f,0 0 6px #64ffa00f;border-color:#64ffa04d}.skill-node[data-category=creative]:hover,.skill-node[data-category=creative].active{box-shadow:0 0 28px #ffb4641f,0 0 6px #ffb4640f;border-color:#ffb4644d}.skill-node[data-category=modern]:hover,.skill-node[data-category=modern].active{box-shadow:0 0 28px #c878ff1f,0 0 6px #c878ff0f;border-color:#c878ff4d}.skill-node[data-category=me]:hover,.skill-node[data-category=me].active{box-shadow:0 0 28px #ffffff26,0 0 6px #ffffff14;border-color:#ffffff80;color:#fff}.skills__grid{display:none}.skills__category{margin-bottom:var(--space-2xl)}.skills__category:last-child{margin-bottom:0}.skills__category-name{font-family:var(--font-heading);font-size:.7rem;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--text-dim);margin-bottom:var(--space-md)}.skills__items{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.skill-pill{font-size:.82rem;padding:var(--space-sm) var(--space-md);border:1px solid var(--border);border-radius:100px;color:var(--text-muted);transition:border-color var(--dur-fast) ease,color var(--dur-fast) ease}.skill-pill:hover{border-color:var(--text-muted);color:var(--text)}.work__list{display:flex;flex-direction:column}.project{border-bottom:1px solid var(--border);opacity:0;transform:translateY(30px);transition:opacity var(--dur-slow) ease,transform var(--dur-slow) var(--ease-out-expo),background var(--dur-normal) ease;will-change:transform;position:relative;overflow:hidden}.project:first-child{border-top:1px solid var(--border)}.project.visible{opacity:1;transform:translateY(0)}.project__inner{padding:var(--space-3xl) 0;transition:padding var(--dur-normal) var(--ease-out-expo)}.project:hover .project__inner{padding-left:var(--space-lg)}.project__header{margin-bottom:var(--space-lg)}.project__name{font-family:var(--font-heading);font-size:clamp(1.8rem,3.5vw,2.8rem);font-weight:400;letter-spacing:-.01em;margin-bottom:var(--space-xs);transition:letter-spacing var(--dur-normal) var(--ease-out-expo)}.project:hover{background:#f0f0f004}.project__number{position:absolute;top:20px;right:24px;font-family:var(--font-heading);font-size:clamp(4rem,8vw,7rem);font-weight:700;color:#f0f0f008;line-height:1;pointer-events:none;transition:color var(--dur-normal) ease;-webkit-user-select:none;user-select:none}.project:hover .project__number{color:#f0f0f00f}.project:hover .project__name{letter-spacing:.02em}.project__tagline{font-size:.9rem;color:var(--text-dim);font-style:italic;letter-spacing:.02em}.project__body{max-width:700px}.project__description{font-size:.95rem;line-height:1.75;color:var(--text-muted);margin-bottom:var(--space-lg)}.project__meta{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);flex-wrap:wrap}.project__tech{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.tech-pill{font-size:.72rem;padding:4px 12px;border:1px solid var(--border);border-radius:100px;color:var(--text-dim);letter-spacing:.04em;transition:border-color var(--dur-fast) ease,color var(--dur-fast) ease,background var(--dur-fast) ease}.project:hover .tech-pill{border-color:var(--border-hover);color:var(--text-muted);background:#f0f0f008}.project__link{display:inline-flex;align-items:center;gap:var(--space-sm);font-size:.82rem;font-weight:400;letter-spacing:.04em;color:var(--text-muted);padding:10px 20px;border:1px solid var(--border);border-radius:100px;transition:border-color .3s ease,color .3s ease,background .3s ease;white-space:nowrap;flex-shrink:0}.project__link:hover{border-color:var(--text-muted);color:var(--text);background:#f0f0f00a}.project__link svg{transition:transform .3s var(--ease-out-expo)}.project__link:hover svg{transform:translate(2px,-2px)}.contact{text-align:center;padding-bottom:var(--space-4xl)}.contact__heading{font-family:var(--font-heading);font-size:clamp(2.5rem,6vw,4.5rem);font-weight:300;letter-spacing:-.02em;margin-bottom:var(--space-lg)}.contact__text{font-size:1.05rem;color:var(--text-muted);max-width:480px;margin:0 auto var(--space-3xl);line-height:1.7;font-weight:300}.contact__cards{display:flex;justify-content:center;gap:var(--space-lg);flex-wrap:wrap}.contact-card{display:flex;flex-direction:column;align-items:center;gap:10px;padding:var(--space-2xl) var(--space-xl);border:1px solid var(--border);border-radius:16px;min-width:200px;background:#f0f0f003;transition:border-color .3s ease,background .3s ease,transform .4s var(--ease-out-expo),box-shadow .4s ease}.contact-card:hover{border-color:#f0f0f033;background:#f0f0f00a;transform:translateY(-6px);box-shadow:0 16px 40px #0000004d,0 0 30px #f0f0f008}.contact-card__icon{width:24px;height:24px;color:var(--text-dim);transition:color .3s ease}.contact-card:hover .contact-card__icon{color:var(--text)}.contact-card__label{font-size:.65rem;letter-spacing:.18em;text-transform:uppercase;color:var(--text-dim)}.contact-card__value{font-size:.85rem;color:var(--text-muted);transition:color .3s ease}.contact-card:hover .contact-card__value{color:var(--text)}.footer{border-top:1px solid var(--border);padding:var(--space-lg) 0}.footer__content{display:flex;justify-content:space-between;align-items:center}.footer p{font-size:.72rem;color:var(--text-dim);letter-spacing:.04em}.noise-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9998;pointer-events:none;opacity:.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.85' 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}.marquee{padding:var(--space-xl) 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);overflow:hidden;white-space:nowrap}.marquee__track{display:flex;width:max-content;animation:marqueeScroll 20s linear infinite}.marquee__group{display:flex;align-items:center;gap:var(--space-xl);padding-right:var(--space-xl);flex-shrink:0}.marquee__item{font-family:var(--font-heading);font-size:clamp(.85rem,1.5vw,1.1rem);font-weight:400;letter-spacing:.2em;color:var(--text-muted)}.marquee__sep{font-size:.5rem;color:var(--text-dim)}@keyframes marqueeScroll{0%{transform:translate(0)}to{transform:translate(-50%)}}@media(max-width:1024px){.about__grid{grid-template-columns:1fr;gap:var(--space-3xl)}.about__stats{grid-template-columns:repeat(4,1fr)}.project__meta{flex-direction:column;align-items:flex-start}}@media(max-width:768px){:root{--container-pad: 20px}.section{padding:var(--space-4xl) 0}.section__label{margin-bottom:var(--space-2xl)}.header{padding:var(--space-md) var(--space-lg)}.header__nav{display:none}.header__menu-btn{display:flex}.hero__title{font-size:clamp(2rem,9vw,3.5rem)}.skills__constellation{display:none}.skills__grid{display:block;margin-top:var(--space-lg)}.about__stats{grid-template-columns:1fr 1fr;gap:var(--space-xl)}.contact__cards{flex-direction:column;align-items:center}.contact-card{width:100%;max-width:320px}.project:hover .project__inner{padding-left:0}}@media(max-width:480px){.footer__content{flex-direction:column;gap:var(--space-xs);text-align:center}.about__stats{grid-template-columns:1fr 1fr}.hero{min-height:500px}}@media(hover:none)and (pointer:coarse){.cursor-dot,.cursor-ring{display:none!important}}
