:root{--bg-1: #0a0a0f;--bg-2: #0d0d1a;--bg-3: #141422;--fg-1: #e8e8ed;--fg-2: #8888a0;--green: #00cc66;--green-dim: #00cc6633;--font-kode: "Kode Mono", monospace;--hilight-1: #ff0;--hilight-2: #f70;--radius: .75rem;--transition: .25s cubic-bezier(.4, 0, .2, 1)}html{scroll-behavior:smooth}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}body{background-color:var(--bg-1);color:var(--fg-1);font-family:Montserrat,sans-serif;font-weight:400;font-style:normal;line-height:1.7;width:100vw;overflow-x:hidden}a{text-decoration:none}.header{position:fixed;top:0;width:100vw;background-color:#0d0d1acc;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,.06);z-index:10}.header-container{max-width:48rem;width:100%;height:3rem;padding-inline:1rem;margin-inline:auto;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.logo-svg{height:30px}.anchor{display:block;color:var(--fg-2);position:relative;font-size:.9rem;letter-spacing:.02em;transition:color var(--transition),text-shadow var(--transition)}.anchor:before{content:"";height:2px;width:0%;position:absolute;bottom:-.25rem;left:0;background-color:var(--green);box-shadow:0 2px 8px -1px var(--green);transition:width var(--transition)}.anchor:hover{color:var(--fg-1);text-shadow:0 0 4px rgba(232,232,237,.3)}.anchor:hover:before{width:100%}.content{margin-top:3.5rem}::-webkit-scrollbar{display:none}.element{scrollbar-width:none;-ms-overflow-style:none}@media (max-width: 768px){.header-container{max-width:100%;padding-inline:1rem;gap:.5rem;font-size:.8rem}.anchor{font-size:.8rem}}@media (max-width: 480px){.header-container{gap:.25rem;font-size:.75rem}.anchor{font-size:.75rem}.logo-svg img{width:24px}}.kode-mono{font-family:Kode Mono,monospace;font-optical-sizing:auto;font-weight:700;font-style:normal}.reveal{opacity:0;min-height:1rem;transition:opacity .6s cubic-bezier(.4,0,.2,1),transform .6s cubic-bezier(.4,0,.2,1)}.revealed{opacity:1;transform:translateY(0)}.wide{max-width:66rem;width:calc(100% - 2rem);margin:auto}.title-content{min-height:70vh;display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding-block:3rem}.image-container{width:20rem}.picture{width:14rem;height:21rem;margin:auto;border:2px solid var(--green);border-radius:var(--radius);background-color:var(--bg-1);background-image:url(/me.jpg);background-position:center;background-size:450px;position:relative;box-shadow:0 0 40px var(--green-dim),0 8px 32px #0006;transition:box-shadow var(--transition)}.picture:hover{box-shadow:0 0 60px #00cc8826,0 8px 32px #0006}.picture:before{content:"";width:14rem;height:21rem;border:1px solid var(--green-dim);border-radius:var(--radius);position:absolute;top:1rem;right:1rem;z-index:-1;transition:border-color var(--transition)}.picture:hover:before{border-color:#00cc884d}.hero-chevron-link{display:flex;justify-content:center;padding-block:1rem .25rem;color:#8888a073;transition:color var(--transition)}.hero-chevron-link:hover{color:#a0a0b4a6}.hero-chevron-icon{width:1.5rem;height:1.5rem;flex-shrink:0}.title-text-container{flex-grow:1;margin:1rem;max-width:40rem}.title{font-family:Kode Mono,monospace;font-weight:500;font-size:3rem;margin:0;display:flex;flex-direction:row;align-items:center;gap:2px}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.cursor-bar{display:inline-block;width:2px;height:1.3em;margin-left:-.75px;background-color:var(--green);animation:blink 1s step-end infinite}.subtitle{font-size:.875rem;margin-top:1rem;color:var(--fg-2);display:inline-block;letter-spacing:.02em}.text-effect-paste{visibility:hidden}.text-effect-visible{visibility:visible}.intro{margin-top:1.25rem;color:var(--fg-1);line-height:1.8}.footer{height:1.5rem;margin-block:1rem;font-family:Kode Mono,monospace;color:var(--green);display:flex;align-items:center;gap:2rem}.footer:visited{color:var(--green)}.title-footer{justify-content:space-between}.footer-icon-group{display:flex;align-items:center;gap:.5rem;color:var(--green);transition:opacity var(--transition),text-shadow var(--transition)}.footer-icon-group:visited{color:var(--green)}.footer-icon-group:hover{text-shadow:0 0 8px rgba(0,204,136,.4)}.footer-icon{height:1.5rem;width:1.5rem}.contacts-mini{height:1.5rem;margin-right:2rem;display:flex;align-items:center;gap:1rem}.icon-link{height:1.5rem;width:1.5rem;color:var(--green)}.content-container{max-width:48rem;padding-top:5rem;padding-inline:1rem;margin-inline:auto}.section-header{font-family:Kode Mono,monospace;font-size:2rem;margin-bottom:.75rem;letter-spacing:.04em;position:relative;display:inline-block}.section-header:after{content:"";display:block;width:3rem;height:2px;background-color:var(--green);margin-top:.5rem;border-radius:1px}.section-header[data-text-effect=type]:after{opacity:0;transition:opacity .2s ease}.section-header.text-effect-complete:after{opacity:1}.section-text{color:var(--fg-2);margin-bottom:1.5rem}.skills-group-container{margin-block:2rem;display:flex;flex-direction:row;gap:1rem}.card{border:1px solid rgba(255,255,255,.08);border-radius:var(--radius);background-color:#14142299;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:1.25rem;transition:transform var(--transition),box-shadow var(--transition),border-color var(--transition)}.card:hover{transform:translateY(-2px);box-shadow:0 8px 30px #00cc880f;border-color:#ffffff1f}.skills-group{flex-basis:15%;flex-grow:1}.group-title{font-size:1.125rem;line-height:2rem;text-align:center;font-weight:500}.skills-group-contents{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-around}.lang-image{width:4rem;height:4rem;margin:1rem;background-size:4rem;background-repeat:no-repeat;background-position:center}.ts{background-image:url(/ts-logo-round-256.png)}.python{background-image:url(/python-logo-only.svg)}.node{background-image:url(/node.svg)}.cpp{background-image:url(/cpp.png);background-size:3.5rem}.csharp{background-image:url(/Csharp_Logo.png);background-size:6.5rem;background-position:center}.rs{background-image:url(/rust-logo.png)}.java{background-image:url(/java.png);border-radius:50%}.go{background-image:url(/Go-Logo_Blue.png)}.react{background-image:url(/react.png)}.astro{background-color:#44d;border-radius:50%;position:relative;background-image:url(/astro.svg)}.angular{background-image:url(/angular.png)}.html{background-image:url(/html5.svg)}.css{background-image:url(/css.png)}.js{background-image:url(/javascript.png);border-radius:1rem}.aws{background-image:url(/aws.png)}.gcp{background-image:url(/gcp.png)}.sql{background-image:url(/sql.png)}.git{background-image:url(/git.svg)}.docker{background-image:url(/docker.png)}.redis{background-image:url(/redis.png)}.subsection{margin-block:1.25rem}.subsection-header{margin-bottom:.5rem;display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:space-between}.subsection-header-date{color:var(--fg-2);text-align:right;font-size:.875rem;white-space:nowrap}.job-title{margin-bottom:.5rem}.job-body{display:flex;flex-direction:row;gap:2rem}.job-logo{width:4rem;height:4rem;background-size:4rem}.job-description{flex-basis:1rem;flex-grow:1;display:flex;flex-direction:column;gap:.5rem}.tools-list{display:flex;flex-wrap:wrap;gap:.4rem}.tag{font-family:Kode Mono,monospace;font-size:.75rem;color:var(--green);background-color:var(--green-dim);border:1px solid rgba(0,204,136,.15);padding:.2rem .6rem;border-radius:999px;white-space:nowrap}ul li{margin-bottom:.25rem}.deepxl{background-image:url(/deepxl-logo.svg);background-size:cover}.goliath{background-image:url(/goliath-logo.png);background-size:4.6rem;border-radius:4rem;background-position:center}.classlink{background-image:url(/classlink-logo.png)}.hero{display:flex;flex-direction:row;gap:1rem}.hero-image{width:18rem;height:12rem;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius);flex-shrink:0}.statcrusher-screenshot{background-image:url(/statcrusher-screenshot.png);background-size:18rem}.wifi-tui-screenshot{background-image:url(/wifi-tui.png);background-size:18rem;background-repeat:no-repeat;height:10.8rem}.hero-caption{flex-grow:1;flex-basis:1rem;font-size:.875rem}.hero-caption p{margin-bottom:.5rem}.social-container{padding-block:3rem;width:100%;display:flex;flex-direction:row;align-items:stretch;justify-content:center;gap:1.5rem}.social-bottom{color:var(--fg-2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;min-width:10.3rem;padding:2rem 2.5rem;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius);background-color:#14142266;position:relative;transition:color var(--transition),transform var(--transition),border-color var(--transition),box-shadow var(--transition),background-color var(--transition)}.social-bottom:hover{color:var(--fg-1);transform:translateY(-3px) scale(1.03);border-color:#0c83;box-shadow:0 8px 30px #00cc8814;background-color:#141422b3}.social-bottom-icon{width:3.5rem;height:3.5rem;transition:filter var(--transition)}.social-bottom:hover .social-bottom-icon{filter:drop-shadow(0 0 8px rgba(0,204,136,.3))}.social-bottom-text{font-size:1rem;font-family:Kode Mono,monospace;letter-spacing:.04em}.site-footer{border-top:1px solid rgba(255,255,255,.06);margin-top:5rem;padding:2rem 1rem}.site-footer-inner{max-width:48rem;margin-inline:auto;text-align:center;font-family:Kode Mono,monospace;font-size:.8rem;color:var(--fg-2)}.footer-separator{margin-inline:.75rem;opacity:.3}@media (max-width: 768px){.title-content{flex-direction:column;min-height:auto;padding-block:2rem;gap:2rem}.image-container{width:auto}.picture{width:10rem;height:15rem;background-size:320px}.picture:before{width:10rem;height:15rem}.title-text-container{max-width:100%;text-align:center;margin:0 1rem}.title{font-size:2rem;justify-content:center}.subtitle{text-align:center}.title-footer{justify-content:center;gap:1.5rem}.contacts-mini{margin-right:0}.skills-group-container{flex-direction:column}.content-container{padding-inline:1.25rem}.job-body{flex-direction:column;gap:1rem}.job-logo{margin-inline:auto}.hero{flex-direction:column}.hero-image{width:100%;height:10rem;background-size:cover}.social-container{flex-direction:column;gap:1rem;padding-block:2rem}.social-bottom{flex-direction:row;padding:1rem 1.5rem;width:100%}}@media (max-width: 480px){.title{font-size:1.75rem}.section-header{font-size:1.5rem}.picture{width:8rem;height:12rem;background-size:250px}.picture:before{width:8rem;height:12rem;top:.75rem;right:.75rem}.footer{flex-direction:column;gap:.75rem;height:auto}.lang-image{width:3rem;height:3rem;margin:.5rem;background-size:3rem}.csharp{background-size:5rem}.social-bottom-icon{width:2.5rem;height:2.5rem}}
