@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap";:root{--bg:#09090b;--bg-surface:#18181b;--border:#27272a;--border-hover:#3f3f46;--text-main:#fff;--text-muted:#a1a1aa;--transition-snappy:cubic-bezier(.16, 1, .3, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}::selection{color:var(--text-main);background:#ffffff1a}body{background-color:var(--bg);color:var(--text-main);background-image:linear-gradient(90deg,#ffffff05 1px,#0000 1px),linear-gradient(#ffffff05 1px,#0000 1px);background-position:top;background-size:64px 64px;height:100vh;font-family:Outfit,-apple-system,sans-serif;overflow:hidden}.portfolio-root{z-index:1;justify-content:center;align-items:center;height:100vh;display:flex;position:relative}.portfolio-main{flex-direction:column;align-items:center;gap:4rem;width:100%;padding:2rem;display:flex}.hero-name{letter-spacing:-.03em;align-items:center;gap:1.5rem;font-size:clamp(3rem,8vw,6.5rem);font-weight:700;display:flex}.name-part{opacity:0;background:linear-gradient(#fff 0%,#a1a1aa 100%);-webkit-text-fill-color:transparent;filter:blur(8px);-webkit-background-clip:text;transform:translateY(20px)}.name-part.left{animation:crispReveal 1.2s var(--transition-snappy) .2s forwards}.name-part.right{animation:crispReveal 1.2s var(--transition-snappy) .4s forwards}.name-dash{background:var(--text-muted);opacity:0;width:0;height:6px;animation:extendDash 1s var(--transition-snappy) .6s forwards;border-radius:999px}@keyframes crispReveal{to{opacity:1;filter:blur();transform:translateY(0)}}@keyframes extendDash{0%{opacity:0;width:0}to{opacity:.5;width:30px}}.skill-grid{flex-wrap:wrap;justify-content:center;gap:1rem;max-width:750px;display:flex}.skill-node{border:1px solid var(--border);color:var(--text-muted);cursor:default;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);opacity:0;transition:all .3s var(--transition-snappy);background:#18181b99;border-radius:999px;align-items:center;padding:.6rem 1.2rem;font-size:.95rem;font-weight:500;display:flex;transform:translateY(15px);box-shadow:0 4px 6px #0000001a}.skill-node:after{content:attr(data-label);margin-left:.5rem;transition:color .3s}.skill-node svg{transition:all .3s var(--transition-snappy);filter:grayscale();font-size:1.2rem}.skill-node:hover{background:var(--bg-surface);border-color:var(--border-hover);box-shadow:0 10px 25px #0006, 0 0 0 1px var(--hover-color) inset;color:var(--text-main);transform:translateY(-4px)scale(1.02)}.skill-node:hover svg{filter:grayscale(0%);color:var(--hover-color);transform:scale(1.1)}.skill-node:hover:after{color:#fff}.skill-node:first-child{animation:pillFadeIn .8s var(--transition-snappy) .8s forwards}.skill-node:nth-child(2){animation:pillFadeIn .8s var(--transition-snappy) .85s forwards}.skill-node:nth-child(3){animation:pillFadeIn .8s var(--transition-snappy) .9s forwards}.skill-node:nth-child(4){animation:pillFadeIn .8s var(--transition-snappy) .95s forwards}.skill-node:nth-child(5){animation:pillFadeIn .8s var(--transition-snappy) 1s forwards}.skill-node:nth-child(6){animation:pillFadeIn .8s var(--transition-snappy) 1.05s forwards}.skill-node:nth-child(7){animation:pillFadeIn .8s var(--transition-snappy) 1.1s forwards}.skill-node:nth-child(8){animation:pillFadeIn .8s var(--transition-snappy) 1.15s forwards}.skill-node:nth-child(9){animation:pillFadeIn .8s var(--transition-snappy) 1.2s forwards}.skill-node:nth-child(10){animation:pillFadeIn .8s var(--transition-snappy) 1.25s forwards}.skill-node:nth-child(11){animation:pillFadeIn .8s var(--transition-snappy) 1.3s forwards}.skill-node:nth-child(12){animation:pillFadeIn .8s var(--transition-snappy) 1.35s forwards}.skill-node:nth-child(13){animation:pillFadeIn .8s var(--transition-snappy) 1.4s forwards}.skill-node:nth-child(14){animation:pillFadeIn .8s var(--transition-snappy) 1.45s forwards}.skill-node:nth-child(15){animation:pillFadeIn .8s var(--transition-snappy) 1.5s forwards}.skill-node:nth-child(16){animation:pillFadeIn .8s var(--transition-snappy) 1.55s forwards}.skill-node:nth-child(17){animation:pillFadeIn .8s var(--transition-snappy) 1.6s forwards}.skill-node:nth-child(18){animation:pillFadeIn .8s var(--transition-snappy) 1.65s forwards}.skill-node:nth-child(19){animation:pillFadeIn .8s var(--transition-snappy) 1.7s forwards}.skill-node:nth-child(20){animation:pillFadeIn .8s var(--transition-snappy) 1.75s forwards}@keyframes pillFadeIn{to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.hero-name{gap:1rem;font-size:clamp(2.8rem,7vw,4rem)}.name-dash{height:4px}.skill-grid{gap:.75rem;max-width:500px;padding:0 1rem}.skill-node{padding:.5rem 1rem;font-size:.9rem}.skill-node svg{font-size:1.1rem}}@media (max-width:480px){.hero-name{letter-spacing:-.02em;flex-direction:column;gap:0;font-size:3.5rem}.name-dash{display:none}.name-part.left,.name-part.right{animation:mobileCrispReveal 1.2s var(--transition-snappy) forwards}.name-part.left{animation-delay:.2s}.name-part.right{animation-delay:.4s}@keyframes mobileCrispReveal{0%{opacity:0;filter:blur(8px);transform:translateY(20px)}to{opacity:1;filter:blur();transform:translateY(0)}}.skill-grid{gap:.6rem}.skill-node{padding:.5rem .85rem;font-size:.85rem}.skill-node svg{font-size:1rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
