@keyframes portfolio-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.85)}}.portfolio-pulse{animation:2.4s ease-in-out infinite portfolio-pulse}.bg{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.bg .blob{filter:blur(120px);opacity:.35;mix-blend-mode:screen;border-radius:50%;position:absolute}.bg .blob.a{background:radial-gradient(circle,#ffffff2e,#0000 60%);width:700px;height:700px;top:-180px;left:-150px}.bg .blob.b{background:radial-gradient(circle,#cc643733,#0000 60%);width:900px;height:900px;bottom:-260px;right:-300px}.bg .blob.c{background:radial-gradient(circle,#ffffff12,#0000 60%);width:500px;height:500px;top:30%;left:40%}.bg .cursor-light{width:600px;height:600px;left:var(--cx,50vw);top:var(--cy,50vh);filter:blur(40px);background:radial-gradient(circle,#ffffff14,#0000 60%);transition:opacity .3s;position:absolute;transform:translate(-50%,-50%)}.bg .grid-lines{background-image:linear-gradient(90deg,#ffffff06 1px,#0000 1px),linear-gradient(#ffffff06 1px,#0000 1px);background-size:80px 80px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(#000 30%,#0000 80%);mask-image:radial-gradient(#000 30%,#0000 80%)}.bg .noise{opacity:.04;pointer-events:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 0.6 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");position:absolute;inset:0}.hero-grain{opacity:.06;pointer-events:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");position:absolute;inset:0}.hero-legibility{pointer-events:none;background:linear-gradient(#0b0b0bbf 0%,#0b0b0b59 12%,#0b0b0b0d 28%,#0b0b0b00 50%,#0b0b0b4d 78%,#0b0b0beb 100%);position:absolute;inset:0}
