@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(../media/7fea77d1d19108bf-s.2y65deuc30pmy.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(../media/1bcd0e671759a44c-s.2qt3tdwt-y9x_.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(../media/e15f58668ad64cb8-s.3cvcemwuzoywn.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(../media/90c51ce8fb754fe8-s.02z5rrbg5nt92.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(../media/57215795b8570f5c-s.2rixgazldzomk.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(../media/03fc1b4a8d284b5e-s.p.0wiir8udbzjvx.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/7fea77d1d19108bf-s.2y65deuc30pmy.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/1bcd0e671759a44c-s.2qt3tdwt-y9x_.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/e15f58668ad64cb8-s.3cvcemwuzoywn.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/90c51ce8fb754fe8-s.02z5rrbg5nt92.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/57215795b8570f5c-s.2rixgazldzomk.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/03fc1b4a8d284b5e-s.p.0wiir8udbzjvx.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/7fea77d1d19108bf-s.2y65deuc30pmy.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/1bcd0e671759a44c-s.2qt3tdwt-y9x_.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/e15f58668ad64cb8-s.3cvcemwuzoywn.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/90c51ce8fb754fe8-s.02z5rrbg5nt92.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/57215795b8570f5c-s.2rixgazldzomk.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/03fc1b4a8d284b5e-s.p.0wiir8udbzjvx.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/7fea77d1d19108bf-s.2y65deuc30pmy.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/1bcd0e671759a44c-s.2qt3tdwt-y9x_.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/e15f58668ad64cb8-s.3cvcemwuzoywn.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/90c51ce8fb754fe8-s.02z5rrbg5nt92.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/57215795b8570f5c-s.2rixgazldzomk.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/03fc1b4a8d284b5e-s.p.0wiir8udbzjvx.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans Fallback;src:local(Arial);ascent-override:101.32%;descent-override:27.18%;line-gap-override:0.0%;size-adjust:101.17%}.ibm_plex_sans_dbe1d8f4-module__noTjiW__className{font-family:IBM Plex Sans,IBM Plex Sans Fallback;font-style:normal}.ibm_plex_sans_dbe1d8f4-module__noTjiW__variable{--font-ibm-plex-sans:"IBM Plex Sans", "IBM Plex Sans Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-s.0rgnxg2b64rzs.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/59b15b4bcd7b1eb5-s.2vemzm0itqzfy.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e532fa1b9921e1cd-s.3cb5lpr2l6xud.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2fe89d53234c61d4-s.1u30mmyq6lnsd.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/99e609270109b47d-s.p.40sczeszzbjw1.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5e05ae5b48faa55e-s.1yd4_i3e35931.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a7afbb44bec2bb18-s.1qc6dx89jd2qv.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/02263ebadd758ea4-s.29yke99gs9qpn.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/68757d6cddeff913-s.1i-sca43-qwng.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/effe91970fc4db64-s.p.0oace-s_gkfks.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.ibm_plex_mono_c7d8cc32-module__U1BAtG__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.ibm_plex_mono_c7d8cc32-module__U1BAtG__variable{--font-ibm-plex-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
*{box-sizing:border-box}html,body{margin:0;padding:0}body{color:#e6ecf5;font-family:var(--font-ibm-plex-sans), "IBM Plex Sans", sans-serif;-webkit-font-smoothing:antialiased;background:#060b1a;overflow-x:hidden}a{color:#38bdf8;text-decoration:none}a:hover{color:#7dd3fc}::selection{color:#e6ecf5;background:#38bdf840}:focus-visible{outline-offset:2px;outline:2px solid #d4af37}:focus:not(:focus-visible){outline:none}.orbit-ring{will-change:transform;border-radius:50%;position:absolute;top:50%;left:50%}.orbit-outer{z-index:1;background:radial-gradient(closest-side,#0000 74%,#00f3ff0a 78%,#00f3ff3d 82%,#00f3ffb3 84.5%,#fff 85.75% 87.25%,#00f3ffb3 89%,#00f3ff4d 94%,#00f3ff1a 98%,#0000 100%);width:87vw;height:87vw;animation:45s linear infinite alternate rotate-outer}.orbit-mid{z-index:2;background:radial-gradient(closest-side,#0000 55%,#ff00ff0a 66%,#ff00ff3d 78%,#ff00ffb3 84%,#fff 85.75% 87.25%,#ff00ffb3 89%,#ff00ff47 94%,#ff00ff0f 98%,#0000 100%);width:72vw;height:72vw;animation:35s linear infinite alternate-reverse rotate-mid}.orbit-inner{z-index:3;background:radial-gradient(closest-side,#0000 55%,#8a2be20d 66%,#8a2be247 78%,#8a2be2bf 84%,#fff 85.75% 87.25%,#8a2be2bf 89%,#8a2be252 94%,#8a2be212 98%,#0000 100%);width:57vw;height:57vw;animation:25s linear infinite alternate rotate-inner}.orbit-core{z-index:4;background:radial-gradient(closest-side,#0000 55%,#ffd70000 66% 78%,#ffd70005 84%,#fff 85.75% 87.25%,#ffd700a6 89%,#ffd70042 94%,#ffd7000d 98%,#0000 100%);width:42vw;height:42vw;animation:18s linear infinite alternate-reverse rotate-core}@keyframes rotate-outer{0%{transform:translate(-50%,-50%)rotateX(70deg)rotateY(10deg)rotate(0)}to{transform:translate(-50%,-50%)rotateX(80deg)rotateY(-10deg)rotate(360deg)}}@keyframes rotate-mid{0%{transform:translate(-50%,-50%)rotateX(80deg)rotateY(-10deg)rotate(0)}to{transform:translate(-50%,-50%)rotateX(70deg)rotateY(15deg)rotate(360deg)}}@keyframes rotate-inner{0%{transform:translate(-50%,-50%)rotateX(75deg)rotateY(5deg)rotate(0)}to{transform:translate(-50%,-50%)rotateX(85deg)rotateY(-5deg)rotate(360deg)}}@keyframes rotate-core{0%{transform:translate(-50%,-50%)rotateX(60deg)rotateY(15deg)rotate(0)}to{transform:translate(-50%,-50%)rotateX(90deg)rotateY(-15deg)rotate(360deg)}}@keyframes twinkle{0%,to{opacity:.35}50%{opacity:.9}}@keyframes bob{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,8px)}}@keyframes sunGlow{0%,to{box-shadow:0 0 #ffd70066,0 0 30px #ffd70099}50%{box-shadow:0 0 10px 5px #ffd70080,0 0 70px 15px #ffd700e1}}.sun-glow{animation:3.5s ease-in-out infinite sunGlow}@keyframes node-appear-flash{0%{filter:brightness()drop-shadow(0 0 #fff0)}20%{filter:brightness(1.8)drop-shadow(0 0 25px #d4af37e6)}to{filter:brightness()drop-shadow(0 0 #fff0)}}@media (max-width:768px){@keyframes node-appear-flash{0%,to{filter:brightness()}20%{filter:brightness(1.4)}}}html.perf-low{--node-flash-brightness:1.4}html.perf-low .node-flash{animation:1.2s ease-out forwards node-appear-flash-low}@keyframes node-appear-flash-low{0%,to{filter:brightness()}20%{filter:brightness(var(--node-flash-brightness,1.4))}}.node-flash{animation:1.2s ease-out forwards node-appear-flash}.dot-ping{border:1.5px solid var(--dot-color,#9fdbff);opacity:0;pointer-events:none;border-radius:50%;width:26px;height:26px;margin:-13px 0 0 -13px;animation:2.8s cubic-bezier(.2,.6,.4,1) infinite dot-ping;position:absolute;top:50%;left:50%}.dot-ping-2{animation-delay:1.4s}.proj-dot{animation:2.8s ease-in-out infinite dot-breath}.proj-node:hover .dot-ping,.proj-node:focus .dot-ping{opacity:0;animation-play-state:paused}@keyframes dot-ping{0%{opacity:.85;transform:scale(.5)}70%,to{opacity:0;transform:scale(2)}}@keyframes dot-breath{0%,to{transform:scale(1)}50%{transform:scale(1.18)}}.proj-card{position:relative}.proj-card:before{content:"";opacity:.9;background:linear-gradient(90deg,#0000,#fff6,#0000);height:1px;position:absolute;top:0;left:18px;right:18px}.proj-card-glow{border-radius:inherit;background:radial-gradient(240px circle at var(--mx,50%) var(--my,50%), #fff 0%, var(--card-color,#d4af37) 32%, transparent 68%);-webkit-mask-composite:xor;opacity:0;pointer-events:none;z-index:2;padding:1.5px;transition:opacity .35s;position:absolute;inset:-1px;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.proj-card[data-open=true] .proj-card-glow,.proj-card:hover .proj-card-glow,.proj-card:focus-within .proj-card-glow{opacity:1}.proj-card:after{content:"";pointer-events:auto;height:44px;position:absolute;left:-20px;right:-20px}.proj-card[style*=bottom]:after{bottom:-44px}.proj-card[style*=top]:after{top:-44px}.proj-stack-pill{font-family:var(--font-ibm-plex-mono), "IBM Plex Mono", monospace;letter-spacing:.03em;color:#b7c2d4;white-space:nowrap;background:#94a3b814;border:1px solid #94a3b840;border-radius:999px;align-items:center;padding:3px 10px;font-size:11px;display:inline-flex}.proj-visit-link{transition:color .2s}.proj-visit-link:hover{color:#f2cf6a}.proj-role{-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;-webkit-mask-image:linear-gradient(#000 62%,#00000059 100%);mask-image:linear-gradient(#000 62%,#00000059 100%)}.proj-hint{pointer-events:none;z-index:40;opacity:0;transition:opacity .3s;position:absolute;top:50%;left:50%;overflow:visible;translate:-50% -50%}.proj-hint text{fill:#e6ecf5;font-family:var(--font-ibm-plex-mono), "IBM Plex Mono", monospace;letter-spacing:.14em;text-transform:lowercase;filter:drop-shadow(0 2px 4px #000000e6)drop-shadow(0 4px 12px #000c);font-size:14px}.proj-hint[data-visible=true]{opacity:1;animation:2.8s ease-in-out infinite proj-hint-breathe}@keyframes proj-hint-breathe{0%,to{opacity:.78}50%{opacity:1}}html.perf-low .proj-hint[data-visible=true]{animation:none}@media (prefers-reduced-motion:reduce){.proj-hint[data-visible=true]{animation:none}}.proj-hint-aside{white-space:nowrap;font-family:var(--font-ibm-plex-mono), "IBM Plex Mono", monospace;letter-spacing:.06em;color:#e6ecf5;text-shadow:0 2px 4px #000000e6,0 4px 12px #000c;pointer-events:none;z-index:40;opacity:0;align-items:center;gap:7px;font-size:15px;transition:opacity .3s;display:flex;position:absolute;top:50%;left:50%}.proj-hint-aside[data-points=left]{transform:translate(34px,-50%)}.proj-hint-aside[data-points=right]{transform:translate(calc(-100% - 34px),-50%)}.proj-hint-aside[data-visible=true]{opacity:1}.proj-hint-arrow{color:var(--dot-color,#9fdbff);font-size:17px;line-height:1}.proj-hint-aside[data-visible=true] .proj-hint-arrow{animation:1.4s ease-in-out infinite proj-hint-nudge}.proj-hint-aside[data-points=right][data-visible=true] .proj-hint-arrow{animation-name:proj-hint-nudge-right}@keyframes proj-hint-nudge{0%,to{transform:translate(0)}50%{transform:translate(-7px)}}@keyframes proj-hint-nudge-right{0%,to{transform:translate(0)}50%{transform:translate(7px)}}html.perf-low .proj-hint-aside .proj-hint-arrow{animation:none!important}@media (prefers-reduced-motion:reduce){.proj-hint-aside .proj-hint-arrow{animation:none!important}}html.perf-low .proj-card:before{opacity:.5}.galaxy-button{--transition:.25s;--hue:245;width:100%;margin-top:14px;display:block;position:relative}.galaxy-button .galaxy-btn{--cut:.1em;--active:0;--bg:radial-gradient(120% 120% at 126% 126%, hsl(var(--hue) calc(var(--active) * 97%) 98% / calc(var(--active) * .9)) 40%, transparent 50%) calc(100px - (var(--active) * 100px)) 0 / 100% 100% no-repeat, radial-gradient(120% 120% at 120% 120%, hsl(var(--hue) calc(var(--active) * 97%) 70% / calc(var(--active) * 1)) 30%, transparent 70%) calc(100px - (var(--active) * 100px)) 0 / 100% 100% no-repeat, hsl(var(--hue) calc(var(--active) * 100%) calc(12% - (var(--active) * 8%)));background:var(--bg);font-family:var(--font-ibm-plex-mono), "IBM Plex Mono", monospace;letter-spacing:.14em;text-transform:uppercase;cursor:pointer;white-space:nowrap;width:100%;box-shadow:0 0 calc(var(--active) * 6em) calc(var(--active) * 3em) hsl(var(--hue) 97% 61% / .5), 0 .05em 0 0 hsl(var(--hue) calc(var(--active) * 97%) calc((var(--active) * 50%) + 30%)) inset, 0 -.05em 0 0 hsl(var(--hue) calc(var(--active) * 97%) calc(var(--active) * 10%)) inset;transition:box-shadow var(--transition), scale var(--transition), background var(--transition);scale:calc(1 + (var(--active) * .05));transform-style:preserve-3d;perspective:100vmin;border:0;border-radius:999px;justify-content:center;align-items:center;gap:.4em;padding:.75em 1.1em;font-size:11px;font-weight:500;display:flex;position:relative;overflow:hidden}.galaxy-button .galaxy-btn:active{scale:1}.galaxy-button .galaxy-btn:is(:hover,:focus-visible){--active:1}.galaxy-button .galaxy__container{pointer-events:none;position:absolute;inset:0;overflow:hidden;container-type:inline-size}.galaxy-button .galaxy-star{height:calc(var(--size,3) * 1px);aspect-ratio:1;top:calc(var(--y,50) * 1%);opacity:var(--alpha,.6);animation:galaxy-drift calc(var(--duration,10) * 1s) calc(var(--delay,0) * -1s) infinite linear;pointer-events:none;will-change:transform;background:#fff;border-radius:50%;position:absolute;left:0;transform:translate(-10cqw,-50%)}@keyframes galaxy-drift{0%{transform:translate(-10cqw,-50%)}to{transform:translate(110cqw,-50%)}}.galaxy-button .galaxy-backdrop{inset:var(--cut);background:var(--bg);transition:background var(--transition);pointer-events:none;border-radius:999px;position:absolute}.galaxy-button .galaxy-text{letter-spacing:.14em;color:hsl(0 0% calc(60% + (var(--active) * 26%)));align-items:center;gap:7px;display:inline-flex;position:relative;translate:2% -6%}.galaxy-button .galaxy-arrow{flex-shrink:0;transition:transform .25s}.galaxy-button .galaxy-btn:is(:hover,:focus-visible) .galaxy-arrow{transform:translate(3px)}html.perf-low .galaxy-button .galaxy-star{animation:none}.proj-card:not([data-open=true]) .galaxy-star{animation-play-state:paused!important}@media (prefers-reduced-motion:reduce){.neon-ring,.scroll-cue{animation:none!important}.dot-ping{opacity:0!important;animation:none!important}.proj-dot,.galaxy-button .galaxy-star,.esfera-particulas{animation:none!important}@keyframes panel-fade-in-anim{0%{opacity:0}to{opacity:1}}@keyframes panel-fade-out-anim{0%{opacity:1}to{opacity:0}}}@media (max-width:768px){.orbit-outer{width:clamp(750px,200vw,950px);height:clamp(750px,200vw,950px)}.orbit-mid{width:clamp(630px,170vw,810px);height:clamp(630px,170vw,810px)}.orbit-inner{width:clamp(520px,140vw,680px);height:clamp(520px,140vw,680px)}.orbit-core{width:clamp(335px,98vw,382px);height:clamp(335px,98vw,382px)}}html.perf-low .site-nav{backdrop-filter:none!important;background:#060b1aeb!important}.esfera-scaler{transform-style:flat;pointer-events:none;transform-origin:50%;position:fixed;inset:0}.esfera{width:80vmin;height:80vmin;transform-style:preserve-3d;background:0 0;border-radius:50%;margin-top:-40vmin;margin-left:-40vmin;position:absolute;top:50%;left:50%}.esfera-fondo{background:#000;border-radius:50%;position:absolute;inset:0;transform:translateZ(1px)}.esfera:before{content:"";box-sizing:border-box;background:radial-gradient(circle closest-side,#0000 0 39.8vmin,#fef5ee 40vmin,#f9deb4 55vmin,#f4ae8dcc 70vmin,#84513680 85vmin,#3c1e1403 110vmin);border:none;border-radius:50%;width:220vmin;height:220vmin;margin-top:-110vmin;margin-left:-110vmin;position:absolute;top:50%;left:50%;transform:rotate(-20deg)rotateX(75deg)}.esfera:after{content:"";box-sizing:border-box;background:radial-gradient(circle closest-side,#0000 0 38vmin,#fef5ee 40vmin,#f9deb433 55vmin,#f4ae8d03 70vmin,#84513603 85vmin);border:none;border-radius:50%;width:150vmin;height:150vmin;margin-top:-75vmin;margin-left:-75vmin;position:absolute;top:50%;left:50%;transform:rotateX(0)}@keyframes expand-circle-anim{0%{opacity:1;transform:scale(0)}50%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1)}}.expand-circle{pointer-events:none;background-color:#fff;border-radius:50%;width:150vmax;height:150vmax;margin-top:-75vmax;margin-left:-75vmax;animation:.8s cubic-bezier(.4,0,.2,1) forwards expand-circle-anim;position:absolute;top:50%;left:50%}.warp-canvas{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}@keyframes esfera-emerge-anim{0%{transform:scale(.01)}to{transform:scale(1)}}.esfera-scaler.scaler-emerge{animation:1.2s cubic-bezier(.16,1,.3,1) forwards esfera-emerge-anim}@keyframes panel-fade-in-anim{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.panel-emerge{animation:.8s ease-out forwards panel-fade-in-anim}.esfera-particulas-tilt{pointer-events:none;border-radius:50%;width:220vmin;height:220vmin;margin-top:-110vmin;margin-left:-110vmin;position:absolute;top:50%;left:50%;transform:rotate(-20deg)rotateX(75deg)}.esfera-particulas{pointer-events:none;backface-visibility:hidden;will-change:transform;border-radius:50%;width:100%;height:100%;animation:20s linear infinite spin-particulas;position:absolute;top:0;left:0}@keyframes spin-particulas{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.esfera-particulas:before{content:"";background:0 0;border-radius:50%;width:5px;height:5px;position:absolute;top:50%;left:50%;box-shadow:45vmin 10vmin #fda,30vmin -60vmin #fca,15vmin 85vmin #fda,60vmin 50vmin #fa8,50vmin -50vmin #fda,75vmin -30vmin #fca,85vmin 40vmin #fda,100vmin 10vmin #fa8,65vmin 65vmin #fda,-15vmin 50vmin #fca,40vmin 80vmin #fda,70vmin -70vmin #fca,25vmin -95vmin #fda,-75vmin -55vmin #fa8,-35vmin -45vmin #fda,-95vmin -35vmin #fca,-60vmin 60vmin #fda,-25vmin 25vmin #fa8,-105vmin 10vmin #fda,-50vmin -90vmin #fca,60vmin 15vmin #fda,45vmin -85vmin #fca,10vmin 110vmin #fda,85vmin 70vmin #fa8,75vmin -60vmin #fda,95vmin -40vmin #fca,110vmin 60vmin #fda,125vmin 15vmin #fa8,80vmin 80vmin #fda,-25vmin 65vmin #fca,10vmin 50vmin #fda,15vmin -40vmin #fca}.esfera-scaler.scaler-unemerge{animation:.7s cubic-bezier(.16,1,.3,1) reverse forwards esfera-emerge-anim}@keyframes panel-fade-out-anim{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(20px)}}.panel-shrink{animation:.4s cubic-bezier(.23,1,.32,1) forwards panel-fade-out-anim}.warp-text-screen{z-index:1;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.warp-text{letter-spacing:.2em;color:#ffffffe6;text-transform:uppercase;text-align:center;z-index:10;background:0 0;border:none;font-family:IBM Plex Mono,monospace;font-size:clamp(10px,3vw,14px);text-decoration:none;animation:1.9s cubic-bezier(.4,0,.2,1) forwards warp-text-anim}.warp-text span{animation:.15s linear infinite text-vibrate;display:block}@keyframes warp-text-anim{0%{opacity:0;filter:blur(10px);transform:scale(.8)}15%{opacity:1;filter:blur();transform:scale(1)}85%{opacity:1;filter:blur();transform:scale(1)}to{opacity:0;filter:blur(6px);transform:scale(1.1)}}@keyframes text-vibrate{0%{transform:translate(-1px,1px)}25%{transform:translate(1px,-1px)}50%{transform:translate(-1px,-1px)}75%{transform:translate(1px,1px)}to{transform:translate(-1px,1px)}}.panel-emerge-scroll::-webkit-scrollbar{width:8px;height:8px}.panel-emerge-scroll::-webkit-scrollbar-track{background:#ffffff08;border-radius:4px;margin:10px 0}.panel-emerge-scroll::-webkit-scrollbar-thumb{background:#ffffff26 padding-box padding-box;border:2px solid #0000;border-radius:4px}.panel-emerge-scroll::-webkit-scrollbar-thumb:hover{background-color:#ffffff4d}@media (max-width:768px){.desktop-only{display:none!important}.mobile-only .galaxy-button{margin-top:0}}@media (min-width:769px){.mobile-only{display:none!important}}
html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-behavior:allow-discrete;transition-property:overflow;transition-duration:1ms}
