.squares-canvas{width:100%;height:100%;border:none;display:block}.curved-loop-jacket{min-height:auto;display:flex;align-items:center;justify-content:center;width:100%;pointer-events:none}.curved-loop-svg{pointer-events:auto;width:100%;aspect-ratio:100/12;overflow:visible;display:block;font-size:6rem;fill:#fff;user-select:none;-moz-user-select:none;-webkit-user-select:none;font-weight:700;text-transform:uppercase;line-height:1}.pill-nav-container{position:fixed;bottom:1em;left:50%;transform:translateX(-50%);z-index:99}@media (max-width:768px){.pill-nav-container{width:100%;left:0;transform:none}}.pill-nav{--nav-h:42px;--logo:36px;--pill-pad-x:18px;--pill-gap:3px;width:-moz-max-content;width:max-content;display:flex;align-items:center;box-sizing:border-box}@media (max-width:768px){.pill-nav{width:100%;justify-content:space-between;padding:0 1rem;background:transparent}}.pill-nav-items{position:relative;display:flex;border-radius:9999px}.pill-logo,.pill-nav-items{align-items:center;height:var(--nav-h);background:var(--base,#000)}.pill-logo{width:var(--nav-h);border-radius:50%;padding:8px;display:inline-flex;justify-content:center;overflow:hidden}.pill-logo img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.pill-list{list-style:none;align-items:stretch;gap:var(--pill-gap);margin:0;padding:3px}.pill-list,.pill-list>li{display:flex;height:100%}.pill{display:inline-flex;align-items:center;justify-content:center;height:100%;padding:0 var(--pill-pad-x);background:var(--pill-bg,#fff);color:var(--pill-text,var(--base,#000));text-decoration:none;border-radius:9999px;box-sizing:border-box;font-weight:600;font-size:16px;line-height:0;text-transform:uppercase;letter-spacing:.2px;white-space:nowrap;cursor:pointer;position:relative;overflow:hidden;transition:background-color .3s ease}.pill:hover{background:#fff!important;color:#000!important}.pill .hover-circle{position:absolute;left:50%;bottom:0;border-radius:50%;background:var(--base,#000);z-index:1;display:none;pointer-events:none;will-change:transform}.pill .label-stack,.pill .pill-label{position:relative;display:inline-block;line-height:1;z-index:2}.pill .pill-label{will-change:transform}.pill .pill-label-hover{position:absolute;left:0;top:0;color:var(--hover-text,#fff);z-index:3;display:inline-block;will-change:transform,opacity}.desktop-only{display:block}.mobile-only{display:none}@media (max-width:768px){.desktop-only{display:none}.mobile-only{display:block}}.mobile-menu-button{width:var(--nav-h);height:var(--nav-h);border-radius:50%;background:var(--base,#000);border:none;display:none;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;padding:0;position:relative}@media (max-width:768px){.mobile-menu-button{display:flex}}.hamburger-line{width:16px;height:2px;background:var(--pill-bg,#fff);border-radius:1px;transition:all .01s ease;transform-origin:center}.mobile-menu-popover{position:absolute;top:3em;left:1rem;right:1rem;background:var(--base,#f0f0f0);border-radius:27px;box-shadow:0 8px 32px rgba(0,0,0,.12);z-index:998;opacity:0;transform-origin:top center;visibility:hidden}.mobile-menu-list{list-style:none;margin:0;padding:3px;display:flex;flex-direction:column;gap:3px}.mobile-menu-popover .mobile-menu-link{display:block;padding:12px 16px;color:var(--pill-text,#fff);background-color:var(--pill-bg,#fff);text-decoration:none;font-size:16px;font-weight:500;border-radius:50px;transition:all .2s ease}.mobile-menu-popover .mobile-menu-link:hover{cursor:pointer;background-color:var(--base);color:var(--hover-text,#fff)}.shuffle-parent{display:inline-block;white-space:normal;word-wrap:break-word;will-change:transform;line-height:1;font-size:6rem;font-family:JetBrains Mono,Fira Code,Consolas,Monaco,monospace;text-transform:uppercase;visibility:hidden;min-height:auto;pointer-events:none}.shuffle-parent.is-ready{visibility:visible}.shuffle-char-wrapper{display:inline-block;overflow:hidden;vertical-align:baseline;position:relative}.shuffle-char-wrapper>span{display:inline-flex;will-change:transform}.shuffle-char{line-height:1;display:inline-block;text-align:center}:root{--border-color:#333;--background-dark:#1a1a1a;--white:#fff}.project-card-grid{display:grid;gap:1rem;padding:.75rem;max-width:1200px;margin:0 auto;font-size:clamp(1rem,.9rem + .5vw,1.5rem)}.project-bento-card{display:flex;flex-direction:column;justify-content:space-between;position:relative;min-height:300px;width:100%;padding:2rem;border-radius:20px;border:1px solid var(--border-color);background:var(--background-dark);background-image:radial-gradient(circle at 20% 30%,hsla(0,0%,100%,.03) 0,transparent 50%),radial-gradient(circle at 80% 70%,hsla(0,0%,100%,.02) 0,transparent 50%),radial-gradient(circle at 40% 80%,hsla(0,0%,100%,.025) 0,transparent 50%),radial-gradient(circle at 90% 20%,hsla(0,0%,100%,.02) 0,transparent 50%),radial-gradient(circle at 10% 90%,hsla(0,0%,100%,.03) 0,transparent 50%),url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.08'/%3E%3C/svg%3E");font-weight:300;overflow:hidden;transition:all .3s ease;cursor:pointer;--glow-x:50%;--glow-y:50%;--glow-intensity:0;--glow-radius:200px}.project-bento-card:hover{transform:translateY(-2px);box-shadow:0 8px 25px rgba(0,0,0,.15)}.project-bento-card__header{display:flex;gap:.75rem;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.project-bento-card__label{font-size:12px;font-weight:700;letter-spacing:.1em;padding:4px 12px;background:hsla(0,0%,100%,.1);border-radius:4px;border:1px solid hsla(0,0%,100%,.2);color:var(--white)}.project-github-link{color:var(--white);opacity:.8;transition:opacity .2s ease,transform .2s ease;text-decoration:none}.project-github-link:hover{opacity:1;transform:scale(1.1)}.project-bento-card__content{display:flex;flex-direction:column;gap:1rem;color:var(--white)}.project-bento-card__title{font-weight:700;font-size:28px;margin:0;line-height:1.2;color:var(--white)}.project-bento-card__description{font-size:16px;line-height:1.6;opacity:.9;margin:0;color:var(--white)}.project-tech-stack{display:flex;gap:12px;margin-top:1rem;flex-wrap:wrap}.project-tech-logo{width:36px;height:36px;border-radius:50%;background-color:hsla(0,0%,100%,.9);display:flex;align-items:center;justify-content:center;padding:6px;transition:transform .2s ease}.project-tech-logo:hover{transform:scale(1.15)}.project-tech-logo img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}@media (max-width:767px){.project-card-grid{grid-template-columns:1fr;width:95%;margin:0 auto;padding:.5rem}.project-bento-card{min-height:250px}.project-bento-card__title{font-size:22px}.project-bento-card__description{font-size:14px}}@media (min-width:768px) and (max-width:1023px){.project-card-grid{grid-template-columns:repeat(2,1fr)}.project-bento-card:first-child{grid-column:span 2}}@media (min-width:1024px){.project-card-grid{grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(2,1fr)}.project-bento-card:first-child{grid-column:1/3;grid-row:2}.project-bento-card:nth-child(2){grid-column:3/4;grid-row:1}.project-bento-card:nth-child(3){grid-column:4/5;grid-row:1}.project-bento-card:nth-child(4){grid-column:3/4;grid-row:2}.project-bento-card:nth-child(5){grid-column:1/3;grid-row:1}.project-bento-card:nth-child(6){grid-column:4/5;grid-row:2}}.project-bento-card--border-glow:after{content:"";position:absolute;inset:0;padding:6px;background:radial-gradient(var(--glow-radius) circle at var(--glow-x) var(--glow-y),rgba(255,0,255,calc(var(--glow-intensity) * .8)) 0,rgba(255,0,255,calc(var(--glow-intensity) * .4)) 30%,transparent 60%);border-radius:inherit;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:1;transition:opacity .3s ease;z-index:1}.project-bento-card--border-glow:hover:after{opacity:1}.project-bento-card--border-glow:hover{box-shadow:0 4px 20px rgba(255,0,255,.4),0 0 30px rgba(255,0,255,.2)}.project-bento-section{position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.global-spotlight{mix-blend-mode:screen;will-change:transform,opacity;z-index:200!important;pointer-events:none}