@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}:root{--accent-color: #018BBC;--accent-color-hover: #0f9fd4;--accent-rgb: 1, 139, 188;--success-color: #3BA55D;--success-color-hover: #47b86b;--danger-color: #ED4245;--danger-color-hover: #f46c6e;--background-main: #fff;--text-heading: #000;--text-primary: #666;--background-secondary: #fff;--gradient-blur: 100px}body.dark{--text-heading: #fff;--text-primary: #ECEDEE;--text-muted: #666;--background-main: rgb(10, 10, 13);--background-secondary: rgba(28, 22, 47, .4);--background-tertiary: #1D1D1D}*,:before,:after{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;width:100vw}@media only screen and (max-width:768px){html{overflow-x:hidden}}body{margin:0;font-family:var(--font-inter),Arial,sans-serif;background:var(--background-main);font-size:16px;line-height:1.333;font-weight:400;color:var(--text-primary);overflow-x:hidden;padding-bottom:24px}a{color:var(--accent-color);text-decoration:none;background-color:transparent;transition:.3s all ease}a:hover{text-decoration:none;color:var(--accent-color-hover)}button{border:none;cursor:pointer}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:0;line-height:1.2;color:var(--text-heading)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}p{margin-top:0;margin-bottom:0rem}img{max-width:100%;height:auto}ul{list-style:disclosure-closed;padding-left:15px;margin:0}.container{max-width:708px;width:100%;padding-right:16px;padding-left:16px;margin:0 auto}.container.medium{max-width:500px}.container.small{max-width:400px}.flex{display:flex;flex-wrap:wrap}.column{flex-direction:column}.flex-wrap{flex-wrap:wrap}.no-wrap{flex-wrap:nowrap}.flex-center{justify-content:center;align-items:center}.flex-align-center{align-items:center}.flex-justify-center{justify-content:center}.flex-space-evenly{justify-content:space-evenly}.flex-25{flex:0 0 25%;max-width:25%}.flex-33{flex:0 0 33.33333%;max-width:33.33333%}.flex-50{flex:0 0 50%;max-width:50%}.flex-66{flex:0 0 66.666666%;max-width:66.666666%}.flex-75{flex:0 0 75%;max-width:75%}@media only screen and (max-width:768px){.flex-25,.flex-33,.flex-50,.flex-66,.flex-75{flex:0 0 100%;max-width:100%}}.content-pad{padding:3rem}section.padded{padding:7em 0}section.half-padded{padding:3.5em 0}#about,#about .paragraph{gap:12px}#about .paragraph p{letter-spacing:-.09px}#about .paragraph+.paragraph{margin-top:30px}#contact .heading{justify-content:center;align-items:center}#contact .heading h2{font-size:50px;font-weight:700}#contact img.contact-avatar{width:50%;margin-bottom:1rem;clip-path:var(--hex-clip)}#contactform #honeypot,#contactform #company,#contactform [for=company],#contactform [for=honeypot]{display:none}#contactform{margin-bottom:40px;padding:2rem;gap:12px;background-color:var(--background-secondary);backdrop-filter:blur(12px);border-radius:12px;border:1px solid rgba(82,82,82,.2);flex:1}#contactform .left{gap:12px;position:relative}#contactform .right{flex:1;gap:12px}#contactform .right textarea{flex:1;resize:none}@media only screen and (max-width:768px){#contactform{padding:2rem}#contactform .left{flex:1;order:2}}#contactform label{display:none}.text-input{height:52px;background:var(--background-secondary);backdrop-filter:blur(12px);color:#fff;border-radius:12px;outline:none;font-size:16px;padding:.375rem .75rem;border:1px solid rgba(82,82,82,.2);transition:border-color .15s ease-in-out;font-family:inherit;max-width:100%}.text-input:focus{border-color:var(--accent-color)}textarea.text-input{height:inherit}#captcha-wrap{pointer-events:none;height:64px;width:100%;position:absolute;top:0;left:50%;transform:translate(-50%) scaleY(0);background:var(--accent-color);backdrop-filter:blur(12px);border:1px solid rgba(82,82,82,.2);padding:.375rem .75rem;border-radius:12px 12px 0 0;opacity:0;transition:top .2s ease,opacity .2s ease,transform .2s ease;display:flex;justify-content:center;transform-origin:0 100%}#captcha{pointer-events:none;width:100px;height:100%}.text-input:focus+#captcha-wrap{opacity:1;transform:translate(-50%) scaleY(1)}.text-input[name=filter]{transition:border-radius .2s ease}.text-input[name=filter]:focus{border-radius:0 0 12px 12px}#intro{gap:18px;margin-top:40px;margin-bottom:24px}.avatar-container{display:flex;gap:24px;align-items:center}#links-header .avatar-container div{align-items:center}.intro-avatar{width:96px;height:96px;border-radius:50%}.avatar-container h1{font-size:32px;letter-spacing:-1.5px;margin:0;line-height:1}.avatar-container p{color:var(--text-muted);font-weight:600;letter-spacing:-.18px;margin:0}#intro p{margin:0}#intro .blurb{font-size:20px;letter-spacing:-.34px;line-height:29px}#intro .profile{font-size:18px;font-weight:500;letter-spacing:-.25px;color:#72788899}#intro .profile span{background-image:linear-gradient(90deg,#4589ff,#08bdba);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;font-weight:600;display:inline-block}#marquee{overflow:hidden;margin:0 16px;position:relative;height:64px;border-radius:12px}#marquee:before,#marquee:after{content:"";display:block;position:absolute;top:0;left:0;bottom:0;width:10%;background-image:linear-gradient(to right,#0A0A0D,transparent);z-index:10}#marquee:after{left:unset;right:0;background-image:linear-gradient(to left,#0A0A0D,transparent)}#marquee>div{display:flex;gap:32px;flex-wrap:nowrap;position:absolute;width:100%;margin-left:0}#marquee .stat{color:var(--text-muted);text-transform:capitalize}#links-container .list,.stats,#links-icons{gap:8px}#links-header{gap:18px;margin-top:40px;margin-bottom:0}#links-header .blurb{font-size:18px;letter-spacing:0;line-height:1.4;text-align:center}#links-header .blurb span{color:var(--accent-color)}#links-icons{justify-content:space-around}#links-icons a{display:flex;padding:12px}#links-icons a img{min-width:24px;height:24px}#links-container .listbox,#links-container .list{gap:12px}#links-container .list .link{width:auto;justify-content:space-between;padding:12px}#links-container .list .link .label{gap:12px;align-items:center}#links-container .list .link .label img{width:20px}#links-container .list .link .label span{font-size:18px;font-weight:600;letter-spacing:-.25px;color:var(--text-primary)}#links-container .list .link .external{opacity:.6}.expand{display:none}button.expand{position:relative;border-radius:4px;background:0 0;color:#fff;transition:transform .5s;padding:0;line-height:0}button.expand img{height:18px;width:18px}.expanded button.expand{background-color:#000;transition:transform .5s,background-color .5s;transform:rotate(90deg)}#main-wrapper{padding:0}#links-container{max-width:400px;margin:0 auto;display:flex;flex-direction:column;gap:32px;padding-bottom:32px}#main-nav{display:flex;justify-content:space-between;margin:24px 0;padding:16px;background-color:var(--background-secondary);backdrop-filter:blur(12px);border-radius:12px;border:1px solid rgba(82,82,82,.2);z-index:100}#main-nav ul{display:flex;padding-left:0;margin:0;list-style:none}#main-nav ul li{font-size:16px;color:#000;font-weight:500;height:22px;display:flex;justify-content:center;align-items:center}#main-nav ul li a{color:var(--text-primary);position:relative;height:22px;display:flex;justify-content:center;align-items:center}#main-nav ul li a:hover{text-decoration:none;color:var(--text-muted)}#main-nav ul li a.active:after{transform:scaleX(1)}#main-nav .nav{display:flex;justify-content:center;align-items:center;gap:24px}#main-nav .nav-socials{display:flex;justify-content:center;align-items:center;gap:16px}#main-nav .nav-socials a,#main-nav .nav-socials .social-icon{height:18px;width:18px}#main-nav .nav>a{height:18px;display:flex;justify-content:center;align-items:center}#main-nav img.brand{border-radius:37.5%;height:18px;width:18px;background-color:var(--accent-color)}@media only screen and (max-width:1000px){.expand{display:inline-block}#main-nav{white-space:nowrap;margin:24px;position:absolute;top:0;left:0;right:0}#main-wrapper{padding-top:76px}#main-nav .container{justify-content:space-between}#main-nav.collapse{align-items:flex-start;height:52px;transition:height .5s ease,background-color .25s ease;overflow:hidden}#main-nav.collapse ul{padding:16px}#main-nav.collapse ul{display:flex;gap:20px;position:absolute;top:50px;right:0;left:0;justify-content:space-between}#main-nav.expanded{height:106px;background-color:#1c162fe6}}.tag,.tag.gradient{width:auto;border:1px solid rgba(82,82,82,.5);display:inline-block;padding:4px 8px;margin:2px;background:none;color:#fff;text-decoration:none;border-radius:12px;font-size:.85em;font-weight:500;transition:background-color .2s ease}.tag.gradient:after{transform:scale(.6)}.tag.gradient:hover{border-color:transparent}.tag .count{margin-left:4px;opacity:.7;font-size:.9em;font-weight:400}.tag-cloud{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:1rem}.blog-post-preview{padding:1.5rem 0;border-bottom:1px solid rgba(255,255,255,.1);gap:1rem}.blog-post-preview:last-child{border-bottom:none}.blog-post-preview h3 a{text-decoration:none}.blog-post-preview h3 a:hover{color:var(--accent-color-hover);text-decoration:underline dotted}.blog-tags{max-width:75%}.read-more{color:var(--accent-color);text-decoration:none;font-weight:500;width:auto!important}.read-more:hover{color:var(--accent-color-hover);text-decoration:underline dotted}.blog-post-preview,.blog-preview-info{display:flex;flex-direction:column;gap:.5rem}.blog-post-meta{display:flex;justify-content:space-between;align-items:center;font-size:.9em;color:var(--text-primary)}.blog-navigation{display:flex;justify-content:space-between;align-items:center;margin-top:1rem}.blog-navigation>a{height:min-content}.blog-share{gap:12px}.share-links{justify-content:space-evenly}#projects .project-row{justify-content:space-between}#projects .project{gap:8px}#projects .project img{min-width:200px;max-width:200px;height:200px;border-radius:12px;background-color:#14151b;backdrop-filter:blur(12px)}#projects .project .info{gap:4px}#projects .project .info h3{font-size:16px;font-weight:600;letter-spacing:-.11px;color:var(--text-primary)}#projects .project .info p{font-size:15px;letter-spacing:-.09px;color:var(--text-primary);opacity:.6}#projects .project a.gradient:after{transform:scale(.9)}@media only screen and (max-width:768px){#projects .project-row{flex-direction:column}#projects .project img{min-width:96px;max-width:96px;min-height:96px;max-height:96px}#projects .project a{flex:1;flex-direction:row;flex-wrap:nowrap;align-items:center;padding:12px;width:auto}}.stats-wrap{margin-bottom:24px;gap:12px}.stats{padding-left:0;white-space:nowrap;width:100%;justify-content:space-evenly}.stats .stat{display:flex;align-items:center;gap:6px;font-size:15px;letter-spacing:-.09px;color:#ecedee99;min-width:70px}.stats .stat span{color:var(--text-primary);font-weight:600}.stats .stat svg{height:16px;width:16px;min-width:16px;color:var(--text-primary)}.stats .stat a{text-overflow:ellipsis;overflow:hidden}@media only screen and (max-width:1000px){.stats{gap:0}.stats.licensed{gap:20px}}.gradient-banner{position:fixed;width:100vw;height:100vh;z-index:-1;color:#fff;background-image:linear-gradient(90deg,#00fff1,#0003ff,#f400e8,#f40000,#e0f400);background-position:center top;background-repeat:no-repeat;background-size:40% 25%;filter:blur(var(--gradient-blur)) hue-rotate(0deg);opacity:.35;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translate3d(0,-15%,0);-moz-transform:translate3d(0,-15%,0);-ms-transform:translate3d(0,-15%,0);-o-transform:translate3d(0,-15%,0);transform:translate3d(0,-15%,0);will-change:filter}@media only screen and (max-width:1000px){.gradient-banner{background-size:100% 25%;animation:none}.gradient-banner.bottom{display:none}}.gradient-banner.bottom{background-position:center top;transform:translate3d(0,100%,0);animation-delay:1s}@keyframes huey-blurry{0%{filter:blur(var(--gradient-blur)) hue-rotate(0deg)}25%{filter:blur(var(--gradient-blur)) hue-rotate(180deg)}50%{filter:blur(var(--gradient-blur)) hue-rotate(360deg)}75%{filter:blur(var(--gradient-blur)) hue-rotate(180deg)}to{filter:blur(var(--gradient-blur)) hue-rotate(0deg)}}@keyframes huey{0%{filter:hue-rotate(0deg)}50%{filter:hue-rotate(180deg)}to{filter:hue-rotate(360deg)}}.banner{gap:12px}.banner img{border-radius:32px;box-shadow:#00000026 0 4px 11px,#3b3b3b4a 17px 21px 31px -11px}.banner p{font-size:14px;color:#4a576fb3;color:#72788899;font-weight:600;letter-spacing:3px;text-transform:uppercase}@media only screen and (max-width:768px){.banner p{padding:0 16px;text-align:center}}.banner+section{margin-top:32px}.btn{display:inline-block;text-align:center;vertical-align:middle;line-height:1.5;cursor:pointer;font-size:12px;text-transform:uppercase;letter-spacing:2px;font-weight:600;padding:1rem;color:#fff;transition:color .2s ease-in-out,background-color .2s ease-in-out,border-color .2s ease-in-out;border-radius:12px}.btn.btn-primary{background:var(--accent-color)}.btn.btn-primary:hover{background:var(--accent-color-hover)}.btn.btn-success{background:var(--success-color)}.btn.btn-success:hover{background:var(--success-color-hover)}.btn.btn-danger{background:var(--danger-color)}.btn.btn-danger:hover{background:var(--danger-color-hover)}section#page-header{gap:18px;margin-top:90px;margin-bottom:0;text-align:center}@media only screen and (max-width:1000px){section#page-header{margin-top:32px;margin-bottom:0}}#page-header h2{font-size:32px;letter-spacing:-.25px;background-image:linear-gradient(90deg,#4589ff,#08bdba);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}#page-header p{font-size:18px;letter-spacing:0;text-align:center}hr{border:0;margin:12px auto 24px!important;height:2px;background:radial-gradient(circle at center,rgba(114,120,136,.6),transparent)}#page-header+hr{margin-top:20px!important}.heading{justify-content:center;color:#72788899}.heading h2{color:#72788899;font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:3px}a.gradient{gap:12px;width:min-content;padding:12px;border-radius:12px;position:relative}a.gradient.outline{border:1px solid rgba(82,82,82,.2)}a.gradient.outline:hover{border-color:transparent}a.gradient:after{content:"";display:block;position:absolute;inset:0;background-image:linear-gradient(90deg,#1b1a26,#23171c);backdrop-filter:blur(12px);transform:scale(.6);transform-origin:50% 50% 0px;transition:transform .2s ease-out,opacity .2s ease-out;border-radius:12px;opacity:0;z-index:-1}a.gradient.active:after,a.gradient:hover:after{transform:scale(1)!important;opacity:1}.project-markdown{display:flex;flex-direction:column;gap:12px;color:hsl(from var(--text-primary) h s calc(l - 5));padding:0}.project-markdown .content{margin-bottom:40px;padding:2rem;gap:12px;background-color:var(--background-secondary);backdrop-filter:blur(12px);border-radius:12px;border:1px solid rgba(82,82,82,.2);flex:1;width:100%}.paragraph p{padding:2rem;background-color:var(--background-secondary);backdrop-filter:blur(12px);border-radius:12px;border:1px solid rgba(82,82,82,.2)}.project-markdown h1,.project-markdown h2,.project-markdown h3,.project-markdown h4,.project-markdown h5{color:#727888;font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:3px;border-bottom:1px dotted rgb(114,120,136);padding-bottom:6px}.project-markdown h1{font-size:18px}.project-markdown h2{font-size:16px}.project-markdown h3{font-size:14px}.project-markdown h4,.project-markdown h5{font-size:12px}.project-markdown img{border-radius:10px;border:1px solid black;align-self:center}.project-markdown>img{margin-bottom:20px}.project-markdown hr{border:0;height:1px;width:100%;background:#fff3}.project-markdown pre{overflow-x:auto;width:100%;border-radius:12px;border:1px solid rgba(82,82,82,.35);padding:1rem 1.25rem;box-shadow:#0000002e 0 8px 20px -12px}.project-markdown pre code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:14px;line-height:1.6}.project-markdown pre.astro-code{background-color:#1b1d26!important}.project-markdown pre.astro-code code{display:block;min-width:max-content}.project-markdown :not(pre)>code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.95em;background:#1b1d26e6;border:1px solid rgba(82,82,82,.35);border-radius:6px;padding:.15rem .35rem}.project-markdown h1,.project-markdown h2,.project-markdown h3,.project-markdown h4,.project-markdown h5{margin:1rem 0 0;max-width:100%}.project-markdown a{text-decoration:dotted underline}.project-markdown a:hover{text-decoration:solid underline}.project-markdown strong{font-weight:600;color:var(--text-heading)}.paginator{justify-content:space-between;align-items:center;padding:0 16px;margin:10px 0}.page-numbers{list-style:none;display:inline-flex;font-size:1.2em;justify-content:center;gap:12px}.page-numbers li{margin:0 5px}.paginator a.disabled{pointer-events:none;opacity:0}.paginator+hr{margin-top:20px!important}.paginator .ellipsis{display:inline-flex;justify-content:center;align-items:center}.paginator a.gradient{display:inline-flex;justify-content:center;align-items:center;width:auto;font-weight:600;letter-spacing:-.25px;color:var(--text-primary)}.showcase,#projects,#latest-posts{gap:10px}.showcase .heading,#projects .heading,#latest-posts .heading{justify-content:space-between;color:#72788899}.showcase .heading h2,#projects .heading h2,#latest-posts .heading h2{color:#72788899;font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:3px}.showcase .heading a,#projects .heading a,#latest-posts .heading a{font-size:12px;background-image:linear-gradient(90deg,#018bbc,#004964);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;font-weight:600;display:inline-block}.showcase .heading a:hover,#projects .heading a:hover,#latest-posts .heading a:hover{animation:huey 3s infinite;animation-timing-function:ease}.showcase .blog-post-preview{margin-bottom:16px;padding-left:16px;padding-right:16px}.showcase .no-posts{padding:24px;text-align:center;background-color:var(--background-secondary);backdrop-filter:blur(12px);border-radius:12px;border:1px solid rgba(82,82,82,.2)}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}
