.container{max-width:708px;margin:0 auto;width:100%;padding-right:16px;padding-left:16px;margin-right:auto;margin-left:auto}.container.medium{max-width:500px}.container.small{max-width:400px}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:0}img{max-width:100%}ul{list-style:disclosure-closed;padding-left:15px;margin:0}.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{gap:12px}#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,0.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,0.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:translateX(-50%) scaleY(0);background:var(--accent-color);backdrop-filter:blur(12px);border:1px solid rgba(82,82,82,0.2);padding:.375rem .75rem;border-radius:12px 12px 0 0;opacity:0;transition:top 200ms ease,opacity 200ms ease,transform 200ms 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:translateX(-50%) scaleY(100%)}.text-input[name="filter"]{transition:border-radius 200ms 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:rgba(114,120,136,0.6)}#intro .profile span{background-image:linear-gradient(90deg,#4589ff 0%,#08bdba 100%);-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{gap:12px}#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,0.2)}#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 500ms ease,background-color 250ms 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:rgba(28,22,47,0.9)}}.tag,.tag.gradient{width:auto;border:1px solid rgba(82,82,82,0.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(60%)}.tag.gradient:hover{border-color:transparent}.tag .count{margin-left:4px;opacity:.7;font-size:.9em;font-weight:normal}.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,0.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}.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:rgba(236,237,238,0.6);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}}#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(90%)}@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}}.gradient-banner{position:fixed;width:100vw;height:100vh;z-index:-1;color:#fff;background-image:linear-gradient(90deg,#00fff1 0%,#0003ff 25%,#f400e8 50%,#f40000 75%,#e0f400 100%);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}@-moz-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)}100%{filter:blur(var(--gradient-blur)) hue-rotate(0deg)}}@-webkit-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)}100%{filter:blur(var(--gradient-blur)) hue-rotate(0deg)}}@-o-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)}100%{filter:blur(var(--gradient-blur)) hue-rotate(0deg)}}@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)}100%{filter:blur(var(--gradient-blur)) hue-rotate(0deg)}}@-moz-keyframes huey{0%{filter:hue-rotate(0deg)}50%{filter:hue-rotate(180deg)}100%{filter:hue-rotate(360deg)}}@-webkit-keyframes huey{0%{filter:hue-rotate(0deg)}50%{filter:hue-rotate(180deg)}100%{filter:hue-rotate(360deg)}}@-o-keyframes huey{0%{filter:hue-rotate(0deg)}50%{filter:hue-rotate(180deg)}100%{filter:hue-rotate(360deg)}}@keyframes huey{0%{filter:hue-rotate(0deg)}50%{filter:hue-rotate(180deg)}100%{filter:hue-rotate(360deg)}}.banner{gap:12px}.banner img{border-radius:32px;box-shadow:rgba(0,0,0,0.15) 0 4px 11px 0,rgba(59,59,59,0.29) 17px 21px 31px -11px}.banner p{font-size:14px;color:rgba(74,87,111,0.7);color:rgba(114,120,136,0.6);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 200ms ease-in-out,background-color 200ms ease-in-out,border-color 200ms 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 0%,#08bdba 100%);-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 auto !important;height:2px;background:radial-gradient(circle at center,rgba(114,120,136,0.6),transparent)}#page-header + hr{margin-top:20px !important}.heading{justify-content:center;color:rgba(114,120,136,0.6)}.heading h2{color:rgba(114,120,136,0.6);font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:3px}a.gradient{gap:12px;width:min-content;padding:12px 12px;border-radius:12px;position:relative}a.gradient.outline{border:1px solid rgba(82,82,82,0.2)}a.gradient.outline:hover{border-color:transparent}a.gradient::after{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-image:linear-gradient(90deg,#1b1a26,#23171c);backdrop-filter:blur(12px);transform:scale(60%);transform-origin:50% 50% 0;transition:transform 200ms ease-out,opacity 200ms ease-out;border-radius:12px;opacity:0;z-index:-1}a.gradient.active::after,a.gradient:hover::after{transform:scale(100%) !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,0.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,0.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 #727888;padding-bottom:6px}.project-markdown h1{font-size:18px}.project-markdown h2{font-size:16px}.project-markdown h3{font-size:14px}.project-markdown h4{font-size:12px}.project-markdown h5{font-size:12px}.project-markdown img{border-radius:10px;border:1px solid #000;align-self:center}.project-markdown > img{margin-bottom:20px}.project-markdown hr{border:0;height:1px;width:100%;background:rgba(255,255,255,0.2)}.project-markdown pre{overflow-x:auto;width:100%;border-radius:12px}.project-markdown h1,.project-markdown h2,.project-markdown h3,.project-markdown h4,.project-markdown h5{margin:1rem 0 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:rgba(114,120,136,0.6)}.showcase .heading h2,#projects .heading h2,#latest-posts .heading h2{color:rgba(114,120,136,0.6);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 0%,#004964 100%);-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,0.2)}: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:#0a0a0d;--background-secondary:rgba(28,22,47,0.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:"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}