*,*:before,*:after{box-sizing:border-box}*:not(dialog){margin:0}@media(prefers-reduced-motion:no-preference){html{interpolate-size:allow-keywords}}body{line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}p{text-wrap:pretty}h1,h2,h3,h4,h5,h6{text-wrap:balance}#root,#__next{isolation:isolate}.p-5{padding:5rem}@media(max-width:690px){.p-5{padding:2rem}}.px-5{padding-left:5rem;padding-right:5rem}@media(max-width:690px){.px-5{padding-left:2rem;padding-right:2rem}}.py-5{padding-top:5rem;padding-bottom:5rem}@media(max-width:690px){.py-5{padding-top:2rem;padding-bottom:2rem}}.py-10{padding-top:10rem;padding-bottom:10rem}@media(max-width:690px){.py-10{padding-top:5rem;padding-bottom:5rem}}.pt-0{padding-top:0}.pb-5{padding-bottom:5rem}@media(max-width:690px){.pb-5{padding-bottom:2rem}}.mt-2{margin-top:2rem}@media(max-width:690px){.mt-2{margin-top:0}}.full-h{min-height:calc(100dvh - 83px)}@media(max-width:690px){.full-h{min-height:100dvh}}.flex{display:flex}.items-center{align-items:center}.inline-grid{display:inline-grid}.grid-12{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:2rem}.col-7{grid-column:span 7}.col-5{grid-column:span 5}.animate-ping{animation:var(--animate-ping)}.js [data-reveal],.js [data-reveal-item]{opacity:0;transform:translateY(10px)}@media(max-width:1024px){.grid-12{grid-template-columns:1fr}.col-7,.col-5{grid-column:span 1}}:root{color-scheme:dark;--color-base-100: oklch(.0782 .0542 264.05);--color-base-200: oklch(.0925 .0641 264.05);--color-base-300: oklch(22% 0 0);--color-base-content: oklch(87.609% 0 0);--color-primary: oklch(.2582 .1675 271.19);--color-primary-content: oklch(100% 0 0);--color-secondary: oklch(.1416 .0981 264.05);--color-secondary-content: oklch(100% 0 0);--color-accent: oklch(.186 .1121 280.53);--color-accent-content: oklch(100% 0 0);--color-neutral: oklch(35% 0 0);--color-neutral-content: oklch(100% 0 0);--color-info: oklch(45.201% .313 264.052);--color-info-content: oklch(.135 .034 245.173);--color-success: oklch(.866 .295 142.495);--color-success-content: oklch(.187 .054 134.299);--color-warning: oklch(.965 .21 109.766);--color-warning-content: oklch(19.359% .042 109.769);--color-error: oklch(62.795% .257 29.233);--color-error-content: oklch(12.559% .051 29.233);--letter-spacing: .08em;--radius-selector: 1rem;--radius-field: 0rem;--radius-box: .25rem;--size-selector: .25rem;--size-field: .25rem;--border: 1px;--depth: 1;--noise: 0;--font-heading: "General Sans";--font-body: "General Sans";--font-mono: "General Sans";--light: 300;--regular: 400;--medium: 500;--bold: 600;--bg: var(--color-base-100);--text: var(--color-base-content);--text-subdued: color-mix(in oklch, var(--text) 75%, transparent);--active-links: var(--color-primary-content);--border-color: var(--color-base-content);--text-shadow: oklch(from var(--color-secondary) l c h / .5);--ease: cubic-bezier(.4, 0, .2, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-dynamic: cubic-bezier(.16, 1, .3, 1);--ease-elastic: cubic-bezier(.04, 1, .7, 1);--ease-bounce: cubic-bezier(.2, .8, .25, 1);--layer-top: 100;--layer-middle: 50;--layer-default: 0;--layer-under: -50;--layer-hell: -100}@media(prefers-color-scheme:light){:root:not([data-theme]){color-scheme:light;--color-base-100: oklch(98.71% .02 123.72);--color-base-200: oklch(91.8% .018 123.72);--color-base-300: oklch(84.89% .017 123.72);--color-base-content: oklch(19.742% .004 123.72);--color-primary: oklch(58.92% .199 134.6);--color-primary-content: oklch(11.784% .039 134.6);--color-secondary: oklch(77.75% .196 111.09);--color-secondary-content: oklch(15.55% .039 111.09);--color-accent: oklch(85.39% .201 100.73);--color-accent-content: oklch(17.078% .04 100.73);--color-neutral: oklch(30.98% .075 108.6);--color-neutral-content: oklch(86.196% .015 108.6);--color-info: oklch(74% .16 232.661);--color-info-content: oklch(39% .09 240.876);--color-success: oklch(76% .177 163.223);--color-success-content: oklch(37% .077 168.94);--color-warning: oklch(82% .189 84.429);--color-warning-content: oklch(41% .112 45.904);--color-error: oklch(70% .191 22.216);--color-error-content: oklch(39% .141 25.723);--depth: 0;--text-shadow: oklch(from var(--color-secondary) .8377 .1294 128.63 / .35)}}:root[data-theme=light]{color-scheme:light;--color-base-100: oklch(98.71% .02 123.72);--color-base-200: oklch(91.8% .018 123.72);--color-base-300: oklch(84.89% .017 123.72);--color-base-content: oklch(19.742% .004 123.72);--color-primary: oklch(58.92% .199 134.6);--color-primary-content: oklch(11.784% .039 134.6);--color-secondary: oklch(77.75% .196 111.09);--color-secondary-content: oklch(15.55% .039 111.09);--color-accent: oklch(85.39% .201 100.73);--color-accent-content: oklch(17.078% .04 100.73);--color-neutral: oklch(30.98% .075 108.6);--color-neutral-content: oklch(86.196% .015 108.6);--color-info: oklch(74% .16 232.661);--color-info-content: oklch(39% .09 240.876);--color-success: oklch(76% .177 163.223);--color-success-content: oklch(37% .077 168.94);--color-warning: oklch(82% .189 84.429);--color-warning-content: oklch(41% .112 45.904);--color-error: oklch(70% .191 22.216);--color-error-content: oklch(39% .141 25.723);--depth: 0;--text-shadow: oklch(from var(--color-secondary) .8377 .1294 128.63 / .35)}@font-face{font-family:General Sans;src:url(/fonts/GeneralSans-Variable.woff2) format("woff2"),url(/fonts/GeneralSans-Variable.woff) format("woff"),url(/fonts/GeneralSans-Variable.ttf) format("truetype");font-weight:200 700;font-style:normal;font-display:swap}@font-face{font-family:General Sans;src:url(/fonts/GeneralSans-VariableItalic.woff2) format("woff2"),url(/fonts/GeneralSans-VariableItalic.woff) format("woff"),url(/fonts/GeneralSans-VariableItalic.ttf) format("truetype");font-weight:200 700;font-style:italic;font-display:swap}@font-face{font-family:osrs;src:url(/fonts/osrs.woff2) format("woff2"),url(/fonts/osrs.woff) format("woff");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:portfolio;src:url(/fonts/portfolio.ttf?qxjt23) format("truetype"),url(/fonts/portfolio.woff?qxjt23) format("woff"),url(/fonts/portfolio.svg?qxjt23#portfolio) format("svg");font-weight:400;font-style:normal;font-display:block}[class^=icon-],[class*=" icon-"]{font-family:portfolio!important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-moon:before{content:""}.icon-sun:before{content:""}.icon-calendar:before{content:""}.icon-at:before{content:""}.icon-minus:before{content:""}.icon-plus:before{content:""}.icon-arrow-up:before{content:""}.icon-arrow-down:before{content:""}.icon-arrow-left:before{content:""}.icon-arrow-right:before{content:""}.icon-close:before{content:""}.icon-link:before{content:""}.icon-external:before{content:""}.icon-mail:before{content:""}.icon-hand:before{content:""}.icon-pin:before{content:""}.icon-django:before{content:""}.icon-docker:before{content:""}.icon-fastapi:before{content:""}.icon-linkedin:before{content:""}.icon-github:before{content:""}.icon-nextjs:before{content:""}.icon-php:before{content:""}.icon-postcss:before{content:""}.icon-postgresql:before{content:""}.icon-python:before{content:""}.icon-rails:before{content:""}.icon-react:before{content:""}.icon-redis:before{content:""}.icon-ruby:before{content:""}.icon-sass:before{content:""}.icon-swiper:before{content:""}.icon-tailwindcss:before{content:""}.icon-threejs:before{content:""}.icon-typescript:before{content:""}.icon-js:before{content:""}.icon-vitejs:before{content:""}.icon-vuejs:before{content:""}.icon-webpack:before{content:""}.icon-wordpress:before{content:""}.icon-woocommerce:before{content:""}.icon-css3:before{content:""}.icon-html5:before{content:""}.icon-figma:before{content:""}html{font-size:16px;scroll-behavior:auto}@media(max-width:1680px){html{font-size:15px}}@media(max-width:1024px){html{font-size:14px}}@media(max-width:690px){html{font-size:12px}}body{font-family:var(--font-body),sans-serif;background-color:var(--bg);background-image:url(/pattern.svg),url(/noise.png);background-repeat:repeat,repeat;background-position:center,center;background-size:auto,auto;color:var(--text);line-height:1.6}@media(max-width:1024px){body{line-height:1.3}}a{color:inherit;text-decoration:none}html.using-keyboard *:focus{corner-shape:squircle;border-radius:var(--radius-selector);outline:2px solid var(--color-info);transition:none!important;outline-offset:5px}html.using-keyboard .cursor,html.using-keyboard .cursor-ring{display:none!important}html.using-mouse input:focus,html.using-mouse textarea:focus,html.using-mouse select:focus,html.using-mouse button:focus,html.using-mouse a:focus{outline:0}.skip-link{top:0;left:0;right:0;position:absolute;min-width:250px;corner-shape:squircle;border:2px solid transparent;border-radius:0 0 var(--radius-selector) var(--radius-selector)!important;background:radial-gradient(ellipse closest-corner at 50% 50%,oklch(from var(--color-info) l .1 h) 55%,oklch(from var(--color-info) l .15 h)) 100%;inset:-100% 5rem auto;text-decoration:none;font-weight:var(--medium);letter-spacing:var(--letter-spacing);text-align:center;display:inline-flex;justify-content:center;max-width:315px;margin:0 auto;color:var(--text);padding:1rem 1.5rem;z-index:var(--layer-top)}.skip-link:focus{inset:auto 5rem}.site-header{padding-left:5rem;padding-right:5rem}@media(max-width:690px){.site-header{width:100%;padding-left:2rem;padding-right:2rem;position:absolute}}.header-inner{display:flex;align-items:center;justify-content:space-between;padding:1.4rem 0;gap:1.5rem}.logo{font-size:1.85rem;font-weight:var(--light);letter-spacing:var(--letter-spacing)}.nav{display:flex;gap:5rem;font-size:1.85rem;font-weight:var(--light);letter-spacing:var(--letter-spacing);margin-right:0;margin-left:auto}@media(max-width:690px){.nav{position:fixed;width:100%;inset:0;margin:auto;background-color:var(--bg);background-image:url(/light.webp),url(/pattern.svg),url(/noise.png);background-repeat:no-repeat,repeat,repeat;background-position:top center,center,center;background-size:auto,auto,auto;transition:opacity .45s var(--ease-dynamic),transform .45s var(--ease-dynamic);flex-direction:column;align-items:center;justify-content:center;font-size:4rem;gap:2rem;pointer-events:none;will-change:opacity,transform;transform:scale(.95);opacity:0;z-index:var(--layer-middle)}}@media(max-width:690px){html.menu-open .nav{pointer-events:auto;transform:scale(1);opacity:1}}.canvas-light,.canvas-layer{inset:0;position:fixed;pointer-events:none}.canvas-light{background-image:url(/light.webp);background-repeat:no-repeat;background-position:top center;background-size:auto}html[data-theme=light] .canvas-light{filter:invert(1)}@media(prefers-color-scheme:light){.canvas-light{filter:invert(1)}}.canvas-layer{mix-blend-mode:hard-light}html[data-theme=light] .canvas-layer{mix-blend-mode:difference}@media(prefers-color-scheme:light){.canvas-layer{mix-blend-mode:difference}}.canvas-layer canvas{width:100%;height:100%;display:block}html[data-easter-egg] .canvas-layer{mix-blend-mode:unset!important}html[data-easter-egg] .canvas-layer:before{content:attr(data-label);font-family:osrs,monospace;position:absolute;color:#ff0;text-shadow:0 1px 0 black;font-size:2rem;letter-spacing:1px;inset:0 0 auto;text-align:center;padding:1.4rem 0;opacity:0;animation:chat 7.75s linear 1}html[data-easter-egg][data-hitsplat]:before{font-family:osrs,monospace;color:#fff;text-shadow:0 3px 0 black;width:50px;height:50px;position:fixed;background:url(/easter/hitsplat.png) no-repeat center;background-size:cover;display:inline-flex;align-items:center;justify-content:center;font-size:2rem;z-index:var(--layer-top);letter-spacing:1px;text-align:center;opacity:0;animation:hitsplat 1.828571s linear 4}html[data-easter-egg][data-hitsplat="1"]:before{content:"10";inset:4rem calc(50% - 25px) auto calc(50% - 25px)}html[data-easter-egg][data-hitsplat="2"]:before{content:"12";inset:8rem calc(50% - 25px) auto calc(50% - 25px)}html[data-easter-egg][data-hitsplat="3"]:before{content:"23";inset:6rem calc(50% - 65px) auto calc(50% - 65px)}html[data-easter-egg][data-hitsplat="4"]:before{content:"16";inset:6rem calc(50% + 15px) auto calc(50% + 15px)}@keyframes chat{0%{opacity:0}1%{opacity:1}99%{opacity:1}to{opacity:0}}@keyframes hitsplat{0%{opacity:0}38%{opacity:0}39%{opacity:1}85%{opacity:1}86%{opacity:0}to{opacity:0}}.lead{position:relative}@media(max-width:690px){.lead{display:flex;margin:0 auto;flex-direction:column;align-items:center;text-align:center;gap:2rem}}.lead.align-center{display:flex;margin:0 auto;flex-direction:column;align-items:center;gap:2rem}.lead.align-center h1,.lead.align-center h2{text-align:center;max-width:1024px}.lead h1,.lead h2{line-height:1;font-weight:var(--medium);font-family:var(--font-base),sans-serif}.lead h1>span,.lead h2>span{display:block}.lead h1{font-size:8.65rem}@media(max-width:1024px){.lead h1{font-size:8rem}}@media(max-width:690px){.lead h1{font-size:5rem}}.lead h2{font-size:6.85rem}@media(max-width:1024px){.lead h2{font-size:6.25rem}}@media(max-width:690px){.lead h2{font-size:4.65rem}}.lead p:not(.contact-form__status){font-size:1.85rem;font-weight:var(--light);letter-spacing:var(--letter-spacing);color:var(--text-subdued)}.description-status{display:flex;gap:1rem;align-items:center;--animate-ping: ping 1s cubic-bezier(0,0,.2,1) infinite}@media(max-width:690px){.description-status{flex-direction:column;text-align:center}}.section-wrapper{outline:0}.section{border-top:1px solid var(--line)}.section-header{display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;margin-bottom:3rem;flex-wrap:wrap}.section-title{font-family:var(--font-heading);text-transform:uppercase;letter-spacing:.08em;font-size:1.4rem;margin:0}.section-description{color:var(--muted);max-width:28rem;margin:0}.site-footer{padding-left:5rem;padding-right:5rem}@media(max-width:690px){.site-footer{padding-left:2rem;padding-right:2rem}}.footer-inner{display:flex;align-items:center;padding:2rem 0;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}.footer-title{margin:0 auto 0 0;text-transform:uppercase;font-size:.75rem;letter-spacing:var(--letter-spacing);color:var(--text-subdued)}.footer-links{display:flex;gap:1.5rem;flex-wrap:wrap;text-transform:uppercase;font-size:.75rem;letter-spacing:var(--letter-spacing);color:var(--text-subdued)}.footer-links a{display:inline-flex;align-items:center}.has-cursor body{cursor:none}.has-cursor body a,.has-cursor body button{cursor:none;will-change:transform}.cursor,.cursor-ring{position:fixed;top:0;left:0;pointer-events:none;z-index:calc(var(--layer-top) + 5);opacity:0;transition:opacity .06s var(--ease-elastic);mix-blend-mode:exclusion}.cursor{width:5px;height:5px;border-radius:999px;background:var(--text);transform:translateZ(0)}.cursor-ring{width:40px;height:40px;border:none;background:transparent;transform:translateZ(0);transition:width .15s var(--ease-elastic),height .15s var(--ease-elastic),transform .15s var(--ease-elastic)}.cursor-ring-inner{position:absolute;inset:0;transform:translateZ(0);transform-origin:center}.cursor-reticule{position:absolute;inset:0;transform-origin:center}.cursor-corner{position:absolute;background:var(--text)}.reticule-idle{animation:cursor-spin 3s linear infinite}.reticule-target{animation:none}.cursor-active .cursor{transform:translateZ(0) scale(1.8)}.cursor-active .cursor-ring{transform:translateZ(0)}.cursor-ring.ring-target{transform:translateZ(0) scale(1)}.cursor-target .cursor{opacity:0;transform:translateZ(0) scale(0)}.cursor-pressed .cursor{transform:translateZ(0) scale(.8)}.cursor-pressed .cursor-ring{transform:translateZ(0);transition:transform .08s var(--ease-elastic)}.cursor-release .cursor-ring{animation:none}.cursor-active .cursor-ring-inner{transform:translateZ(0) scale(1.15)}.cursor-pressed .cursor-ring-inner{transform:translateZ(0) scale(.85);transition:transform .06s var(--ease-elastic)}.cursor-release .cursor-ring-inner{animation:cursor-bounce .2s var(--ease-bounce) both}@keyframes cursor-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes cursor-bounce{0%{transform:translateZ(0) scale(.85)}60%{transform:translateZ(0) scale(1.08)}to{transform:translateZ(0) scale(1)}}@media(max-width:640px){body{cursor:auto}.cursor,.cursor-ring{display:none}}@media(prefers-reduced-motion:reduce){.cursor-ring{transition:unset}.reticule-idle{animation:cursor-spin 10s linear infinite}.cursor-pressed .cursor-ring-inner{transition:transform 0s linear}.cursor-release .cursor-ring-inner{animation:cursor-bounce 0s linear both}}html[data-theme=light] .cursor,html[data-theme=light] .cursor-ring{filter:invert(1)}@media(prefers-color-scheme:light){.cursor,.cursor-ring{filter:invert(1)}}@property --angle{syntax: "<angle>"; inherits: true; initial-value: 0deg;}.buttons{display:flex;gap:5rem}@media(max-width:690px){.buttons{flex-direction:column;gap:1rem}}.button{justify-content:center;font-weight:var(--regular);display:inline-flex;color:var(--text);padding:1rem 1.5rem;font-size:1.125rem;letter-spacing:var(--letter-spacing);text-transform:uppercase;line-height:1;will-change:transform;gap:1rem}.button.button-primary{min-width:250px;corner-shape:squircle;border:2px solid transparent;border-radius:var(--radius-selector);background:radial-gradient(ellipse closest-corner at 50% 50%,oklch(from var(--color-base-100) l .1 h) 55%,oklch(from var(--color-base-100) l .15 h)) 100% padding-box,linear-gradient(var(--angle),oklch(from var(--color-base-100) l .1 h),oklch(from var(--color-accent) .25 c h)) border-box;transition:--angle 1s var(--ease-dynamic),transform .25s var(--ease-dynamic),padding .25s var(--ease-dynamic),font-weight .25s var(--ease-dynamic),text-shadow .25s var(--ease)}.button.button-primary:hover{--angle: 360deg;transition:--angle 2s var(--ease-elastic),transform .25s var(--ease-dynamic),padding .25s var(--ease-dynamic),font-weight .25s var(--ease-dynamic),text-shadow .25s var(--ease)}html[data-theme=light] .button.button-primary{background:radial-gradient(ellipse closest-corner at 50% 50%,oklch(from var(--color-base-100) .75 .1294 128.63) 55%,oklch(from var(--color-base-100) .7 .1294 128.63)) 100% padding-box,linear-gradient(var(--angle),oklch(from var(--color-base-100) .6383 .1294 128.63),oklch(from var(--color-base-100) .8377 .1294 128.63)) border-box}@media(prefers-color-scheme:light){.button.button-primary{background:radial-gradient(ellipse closest-corner at 50% 50%,oklch(from var(--color-base-100) .75 .1294 128.63) 55%,oklch(from var(--color-base-100) .7 .1294 128.63)) 100% padding-box,linear-gradient(var(--angle),oklch(from var(--color-base-100) .6383 .1294 128.63),oklch(from var(--color-base-100) .8377 .1294 128.63)) border-box}}.button:hover{font-weight:var(--medium);text-shadow:0 2px 1px var(--text-shadow)}.button:hover .icon-hand{animation:hand-wave .35s linear 3 forwards}@keyframes hand-wave{0%{transform:none}25%{transform:rotate(20deg)}50%{transform:none}75%{transform:rotate(-20deg)}to{transform:none}}@media(prefers-reduced-motion:reduce){.button:hover .icon-hand{animation:unset}}.magnetic-target:not(:is(.button,.skip-link,.hamburger)){display:inline-flex;transition:all .25s var(--ease-elastic);will-change:transform}.magnetic-target:not(:is(.button,.skip-link,.hamburger)):hover{font-weight:var(--medium);text-shadow:0 2px 1px var(--text-shadow)}.magnetic-target.is-magnetic{transition:all .12s var(--ease-elastic)}@media(prefers-reduced-motion:reduce){.magnetic-target.is-magnetic{transition:unset}}.ticker-line{top:0;position:relative;overflow:hidden;border-top:1px solid var(--text);border-bottom:1px solid var(--text);padding:2rem 0;min-height:clamp(3rem,6vw,4rem);display:flex;align-items:center;justify-content:center;z-index:var(--layer-under)}.ticker-label{font-size:clamp(2rem,5vw,3.4rem);text-transform:uppercase;font-weight:var(--light);letter-spacing:var(--letter-spacing);opacity:0;position:absolute}.ticker{position:absolute;inset:0;overflow:hidden;display:flex;align-items:center;justify-content:flex-start;color:var(--text);font-style:italic}.ticker-track{display:flex;align-items:center;width:max-content;will-change:transform}.ticker-segment{display:inline-flex;align-items:center;gap:2.5rem;padding:0 2.5rem;white-space:nowrap;flex-shrink:0;font-size:clamp(2rem,5vw,3.4rem);text-transform:uppercase;font-weight:var(--light);letter-spacing:var(--letter-spacing);line-height:1}.status-line{gap:1rem;display:flex;position:relative;align-items:center;text-transform:uppercase;font-size:.75rem;letter-spacing:var(--letter-spacing);--animate-ping: ping 1s var(--ease-dynamic) infinite}.status-line.absolute{position:absolute;bottom:2rem;right:5rem}@media(max-width:690px){.status-line.absolute{bottom:1rem;right:2rem}}.status{grid-area:1/1;background-image:radial-gradient(circle at 35% 30%,oklch(1 0 0/calc(var(--depth) * .5)),var(--bg));vertical-align:middle;background-position:50%;background-repeat:no-repeat;aspect-ratio:1;border-radius:var(--radius-selector);background-color:var(--color-base-content);width:.5rem;height:.5rem;display:inline-flex;box-shadow:0 2px 3px -1px color-mix(in oklab,currentColor calc(var(--depth) * 100%),var(--bg))}.status.status-info{background-color:var(--color-info);color:var(--color-info-content)}.status.status-warning{background-color:var(--color-warning);color:var(--color-warning-content)}.status.status-error{background-color:var(--color-error);color:var(--color-error-content)}.status.status-success{background-color:var(--color-success);color:var(--color-success-content)}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}.featured{gap:5px;display:flex;flex-wrap:wrap;max-width:60%;margin-right:0;margin-left:auto;position:relative}@media(max-width:1024px){.featured{max-width:100%}}.featured-item{font-size:0;width:calc(33.333% - 5px);background:oklch(from var(--color-primary) l c h/0);border-radius:var(--radius-selector);corner-shape:squircle;transition:background .25s var(--ease-elastic)}.featured-item:hover{background:oklch(from var(--color-primary) l c h/.15)}@media(max-width:690px){.featured-item{width:calc(50% - 5px)}}html[data-theme=light] .featured-item{background:oklch(from var(--color-primary) .75 .1294 128.63/0)}html[data-theme=light] .featured-item:hover{background:oklch(from var(--color-primary) .75 .1294 128.63/.15)}html[data-theme=light] .featured-item img{filter:invert(1)}@media(prefers-color-scheme:light){.featured-item{background:oklch(from var(--color-primary) .75 .1294 128.63/0)}.featured-item:hover{background:oklch(from var(--color-primary) .75 .1294 128.63/.15)}.featured-item img{filter:invert(1)}}.open-source{display:flex;flex-direction:row;position:relative;gap:1rem}@media(max-width:1024px){.open-source{flex-direction:column}}.open-source-item{width:100%;padding:2rem;border:1px solid var(--text);transition:color .25s var(--ease),background-color .25s var(--ease)}.open-source-item:hover{background-color:var(--text);color:var(--bg)}.open-source-item-content{display:flex;flex-direction:column;gap:1rem}.open-source-item-title{font-size:2rem;font-weight:var(--medium);line-height:1}.open-source-item-subtitle{font-size:1rem;font-weight:var(--medium);letter-spacing:var(--letter-spacing);text-transform:uppercase;line-height:1}.open-source-item-description{font-size:1.25rem}@media(max-width:690px){.open-source-item-link .button{width:100%}}.technologies{gap:2rem;display:flex;min-height:35px;align-items:center}.technologies p{font-size:1.25rem}html[data-theme=light] .technologies img{filter:invert(1)}@media(prefers-color-scheme:light){.technologies img{filter:invert(1)}}.technologies-item{display:flex;align-items:center}.technologies-item .icon{font-size:1.85rem}.hover-preview{position:fixed;top:0;left:0;width:min(320px,42vw);aspect-ratio:3/4;pointer-events:none;opacity:1;z-index:var(--layer-middle);transform:translateZ(0);will-change:transform}@media(max-width:1024px){.hover-preview{display:none}}.hover-preview-mask{width:100%;height:100%;overflow:hidden;transform:translateZ(0) scale(.6) skew(var(--skew-x, 0deg),var(--skew-y, 0deg));clip-path:inset(50% 50% 50% 50%);transition:transform 1s var(--ease-out),clip-path .65s var(--ease-dynamic);box-shadow:0 24px 60px var(--ease-out);background:var(--bg);will-change:transform,clip-path}.hover-preview.is-active .hover-preview-mask{transform:translateZ(0) scale(1) skew(var(--skew-x, 0deg),var(--skew-y, 0deg));clip-path:inset(0 0 0 0)}.hover-preview.is-exit .hover-preview-mask{transform:translateZ(0) scale(.7) skew(var(--skew-x, 0deg),var(--skew-y, 0deg));clip-path:inset(52% 52% 52% 52%)}.hover-preview-image{width:100%;height:100%;object-fit:cover;display:block}.divider{height:1px;width:100%;background-color:oklch(from var(--color-primary) l c h/.45);margin-top:1rem;margin-bottom:1.25rem}.about{display:flex;padding-top:5rem;padding-bottom:5rem;margin:0 auto;justify-content:center;align-items:flex-start}@media(max-width:1024px){.about{flex-direction:column}}.about-photo{font-size:0;max-width:440px;position:sticky;overflow:hidden;border-radius:var(--radius-selector);background:var(--color-secondary);corner-shape:squircle;z-index:var(--layer-hell);top:4rem}@media(max-width:1024px){.about-photo{top:0;position:relative;margin-left:auto;margin-right:auto}}@media(max-width:690px){.about-photo{max-width:calc(100% - 4rem)}}html[data-theme=light] .about-photo{background:oklch(from var(--color-secondary) .8377 .1294 128.63/.5)}@media(prefers-color-scheme:light){.about-photo{background:oklch(from var(--color-secondary) .8377 .1294 128.63/.5)}}.about-photo img{height:100%;object-fit:cover;mix-blend-mode:luminosity}.about-photo canvas{inset:0;width:100%;height:100%;position:absolute;mix-blend-mode:luminosity}.about-photo.has-glitch img{opacity:0}.about-content-wrapper{max-width:45%;padding:0 5rem;position:relative}@media(max-width:1024px){.about-content-wrapper{max-width:100%}}@media(max-width:690px){.about-content-wrapper{padding-left:2rem;padding-right:2rem;padding-top:3rem}}.about-content{gap:2rem;display:flex;flex-direction:column}.about-content p{margin:0;font-size:1.25rem}.about-content p:first-of-type{font-size:1.85rem}.about-content-based{display:flex;gap:1.5rem;align-items:center}.timeline{list-style:none;display:flex;flex-direction:column;align-items:flex-start;padding:0 0 0 .45rem;margin-top:3rem}.timeline-item{padding-left:2rem;border-left:2px solid;position:relative}.timeline-item:not(:last-child){padding-bottom:5rem}.timeline-middle{position:absolute;height:12px;width:12px;border-radius:1rem;background:var(--text);left:0;top:0;transform:translate(-7px,-1px)}.timeline-content{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;margin-top:-.25rem}.timeline-content-title{font-size:1.25rem;font-weight:var(--medium)}.timeline-content-role{color:var(--text-subdued);font-weight:var(--regular)}.timeline-content-time{font-size:1rem;font-weight:var(--medium);color:var(--text-subdued);letter-spacing:var(--letter-spacing);text-transform:uppercase;line-height:1}.is-preloading{overflow:hidden}.preloader{position:fixed;inset:0;z-index:calc(var(--layer-top) + 10);display:grid;place-items:center;background-color:var(--bg);background-image:url(/pattern.svg),url(/noise.png);color:var(--text);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .6s var(--ease),visibility .6s var(--ease)}.is-preloading .preloader{opacity:1;visibility:visible;pointer-events:all}.preloader-line{width:100px;height:5px;corner-shape:squircle;border-radius:var(--radius-selector);background:oklch(from var(--color-primary) l c h/.25);position:relative;overflow:hidden}.preloader-line:after{content:"";position:absolute;inset:0;background:var(--color-primary);transform-origin:left center;animation:preloader-scan 2s var(--ease-dynamic);animation-iteration-count:1}@keyframes preloader-scan{0%{transform:scaleX(.2);opacity:.35}to{transform:none;opacity:1}}.is-loaded .preloader{opacity:0;visibility:hidden}img[data-blur-up]{filter:blur(18px);transform:scale(1.02);transition:filter .7s var(--ease),transform .7s var(--ease)}img[data-blur-up].is-loaded{filter:blur(0);transform:scale(1)}@media(prefers-reduced-motion:reduce){img[data-blur-up]{transition:none}}.contact-form{width:min(820px,100%);display:grid;gap:1.5rem;margin-top:1.5rem}.contact-form .button{max-width:350px;margin-left:auto;margin-right:0}@media(max-width:690px){.contact-form .button{margin:auto;width:100%;max-width:100%;order:1}}@media(max-width:690px){.contact-form .status-line{order:2}}.contact-form__row{display:grid;gap:1.5rem;grid-template-columns:repeat(2,minmax(0,1fr))}@media(max-width:690px){.contact-form__row{grid-template-columns:1fr}}.contact-form__field{display:grid;gap:.75rem;font-size:.85rem;text-transform:uppercase;letter-spacing:var(--letter-spacing);color:var(--text-subdued);text-align:left}.contact-form__field input,.contact-form__field textarea{width:100%;letter-spacing:var(--letter-spacing);color:var(--text);padding:.9rem 1rem;font-size:1rem;corner-shape:squircle;border:2px solid transparent;border-radius:var(--radius-selector);background:radial-gradient(ellipse closest-corner at 50% 50%,oklch(from var(--color-base-100) l .15 h) 55%,oklch(from var(--color-base-100) l .15 h)) 100% padding-box,linear-gradient(var(--angle),oklch(from var(--color-base-100) l .15 h),oklch(from var(--color-accent) .3 c h)) border-box;transition:--angle 1s var(--ease-dynamic),transform .25s var(--ease-dynamic),padding .25s var(--ease-dynamic),font-weight .25s var(--ease-dynamic),text-shadow .25s var(--ease)}.contact-form__field input:focus,.contact-form__field textarea:focus{--angle: 360deg;transition:--angle 2s var(--ease-elastic),transform .25s var(--ease-dynamic),padding .25s var(--ease-dynamic),font-weight .25s var(--ease-dynamic),text-shadow .25s var(--ease)}html[data-theme=light] .contact-form__field input,html[data-theme=light] .contact-form__field textarea{background:radial-gradient(ellipse closest-corner at 50% 50%,oklch(from var(--color-base-100) .9 .1294 128.63) 55%,oklch(from var(--color-base-100) .9 .1294 128.63)) 100% padding-box,linear-gradient(var(--angle),oklch(from var(--color-base-100) .8 .1294 128.63),oklch(from var(--color-base-100) .98 .1294 128.63)) border-box}@media(prefers-color-scheme:light){.contact-form__field input,.contact-form__field textarea{background:radial-gradient(ellipse closest-corner at 50% 50%,oklch(from var(--color-base-100) .9 .1294 128.63) 55%,oklch(from var(--color-base-100) .9 .1294 128.63)) 100% padding-box,linear-gradient(var(--angle),oklch(from var(--color-base-100) .8 .1294 128.63),oklch(from var(--color-base-100) .98 .1294 128.63)) border-box}}.contact-form__field input.error,.contact-form__field textarea.error{border:2px solid color-mix(in oklch,var(--color-error) 25%,transparent)}.contact-form__field textarea{resize:vertical;min-height:200px}.contact-form__honey{position:absolute;opacity:0;pointer-events:none;height:0;width:0}.contact-form__footer{display:flex;justify-content:space-between;align-items:center}@media(max-width:690px){.contact-form__footer{gap:1.5rem;flex-direction:column}}.contact-form__status{display:flex;padding:1rem;font-size:1rem;text-align:center;position:absolute;align-items:center;justify-content:center;font-weight:var(--regular);letter-spacing:var(--letter-spacing);border-radius:var(--radius-selector);inset:auto auto -5rem;width:min(820px,100%);corner-shape:squircle;line-height:1;gap:1rem}@media(max-width:690px){.contact-form__status{position:static}}.contact-form__status:empty{display:none}.contact-form__status[data-state=success]{color:color-mix(in oklch,var(--color-success) 95%,transparent);background-color:color-mix(in oklch,var(--color-success-content) 20%,transparent);border:1px solid color-mix(in oklch,var(--color-success-content) 60%,transparent)}.contact-form__status[data-state=error]{color:color-mix(in oklch,var(--color-error) 85%,transparent);background-color:color-mix(in oklch,var(--color-error-content) 20%,transparent);border:1px solid color-mix(in oklch,var(--color-error-content) 60%,transparent)}.contact-form__status[data-state=pending]{color:color-mix(in oklch,var(--color-base-content) 85%,transparent);background-color:color-mix(in oklch,var(--color-base-content) 20%,transparent);border:1px solid color-mix(in oklch,var(--color-base-content) 60%,transparent)}.contact-form__status[data-state=pending]:after{content:"";mask-image:url(/loader.svg);pointer-events:none;aspect-ratio:1;vertical-align:middle;background-color:currentColor;display:inline-block;mask-position:50%;mask-size:100%;mask-repeat:no-repeat;height:20px;width:20px}[data-tooltip]{--tt-off: calc(100% + 6px) ;--tt-tail: calc(100% + 3px) ;--tt-mask: url(/tooltip-mask.svg);--tt-text: var(--text);--tt-bg: var(--bg);display:inline-block;position:relative}[data-tooltip][data-tooltip-invert]{--tt-text: var(--bg);--tt-bg: var(--text)}[data-tooltip]:hover:before,[data-tooltip]:hover:after{--tt-pos: 0rem;opacity:1}[data-tooltip]:before,[data-tooltip]:after{opacity:0;position:absolute;transform:translate(-50%) translateY(var(--tt-pos, 6px));transition:opacity .2s var(--ease),transform .2s var(--ease)}[data-tooltip]:before{border-radius:var(--radius-selector);corner-shape:squircle;text-align:center;white-space:normal;max-width:20rem;color:var(--tt-text);background-color:var(--tt-bg);pointer-events:none;content:attr(data-tooltip);width:max-content;padding-block:.25rem;padding-inline:.5rem;font-size:.75rem;letter-spacing:var(--letter-spacing);line-height:1;inset:auto auto var(--tt-off) 50%;z-index:var(--layer-middle)}[data-tooltip]:after{content:"";display:block;background-color:var(--tt-bg);width:10px;height:4px;pointer-events:none;mask-position:-1px 0;mask-repeat:no-repeat;mask-image:var(--tt-mask);inset:auto auto var(--tt-tail) 50%}.toggle{--toggle-p: calc(var(--size) * .125);--size: 24px;--radius-selector-max: 1rem;--input-color: var(--text);width:calc(var(--size) * 2 - (var(--border) + var(--toggle-p)) * 2);border:var(--border) solid currentColor;color:var(--input-color);cursor:none;appearance:none;vertical-align:middle;user-select:none;corner-shape:squircle;border-radius:calc(var(--radius-selector) + min(var(--toggle-p),var(--radius-selector-max)) + min(var(--border),var(--radius-selector-max)));padding:2px;flex-shrink:0;grid-template-columns:0fr 1fr 1fr;place-content:center;display:inline-grid;position:relative;opacity:.45}.toggle>*{z-index:1;appearance:none;border:none;grid-column:2/span 1;grid-row-start:1;height:100%;transition:opacity .2s,rotate .4s;font-size:13px;display:inline-flex;align-items:center;justify-content:center;will-change:transform}.toggle>:nth-child(2){color:var(--color-base-100);rotate:none}.toggle>:nth-child(3){color:var(--color-base-100);opacity:0;rotate:-15deg}.toggle:has(:checked)>:nth-child(2){opacity:0;rotate:15deg}.toggle:has(:checked)>:nth-child(3){opacity:1;rotate:none}.toggle:before{aspect-ratio:1;border-radius:1rem;corner-shape:squircle;--tw-content: "";content:var(--tw-content);height:100%;background-color:currentColor;grid-row-start:1;grid-column-start:2;transition:background-color .1s,translate .2s,inset-inline-start .2s;position:relative;inset-inline-start:0;translate:0}.toggle:before{background-size:auto,calc(var(--noise) * 100%);background-image:none,var(--fx-noise)}.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked){background-color:var(--color-base-100);--input-color: var(--color-base-content);grid-template-columns:1fr 1fr 0fr}:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{background-color:currentColor}.hamburger{--bar-width: 25px;--bar-height: 1px;--bar-spacing: 10px;--bar-color: var(--text);--radius: var(--radius-selector);--duration: .15s;--duration-2: calc(var(--duration) * 2);display:none;width:var(--bar-width);height:calc(var(--bar-height) + var(--bar-spacing) * 2);transition:transform var(--duration-2) var(--ease-elastic),scale var(--duration-2) var(--ease-elastic);will-change:transform;position:relative;cursor:pointer;border:0;margin:0;padding:1rem;background:oklch(from var(--bg) l c h/.5);backdrop-filter:blur(5px);border-radius:var(--radius);corner-shape:squircle;box-sizing:content-box;appearance:none}@media(max-width:690px){.hamburger{display:flex;position:fixed;right:2rem;z-index:calc(var(--layer-top) + 5)}}.hamburger.is-clicked:after{color:var(--bar-color)}.hamburger .bar,.hamburger .bar:after,.hamburger .bar:before{width:var(--bar-width);height:var(--bar-height);border-radius:var(--radius);corner-shape:squircle}.hamburger .bar{position:relative;transform:translateY(var(--bar-spacing));background:oklch(from var(--bar-color) l c h/1);transition:all 0ms var(--duration)}.hamburger .bar:before,.hamburger .bar:after{left:0;content:"";position:absolute;background:oklch(from var(--bar-color) l c h/1)}.hamburger .bar:before{bottom:var(--bar-spacing);transition:bottom var(--duration) var(--duration) var(--ease-elastic),transform var(--duration) 0ms var(--ease-elastic),background-color var(--duration) 0ms var(--ease-elastic)}.hamburger .bar:after{top:var(--bar-spacing);transition:top var(--duration) var(--duration) var(--ease-elastic),transform var(--duration) 0ms var(--ease-elastic),background-color var(--duration) 0ms var(--ease-elastic)}.hamburger .bar.animate{background:oklch(from var(--bar-color) l c h/0)}.hamburger .bar.animate:before{bottom:0;transform:rotate(-45deg);background-color:var(--bar-color);transition:bottom var(--duration) 0ms var(--ease-elastic),transform var(--duration) var(--duration) var(--ease-elastic)}.hamburger .bar.animate:after{top:0;transform:rotate(45deg);background-color:var(--bar-color);transition:top var(--duration) 0ms var(--ease-elastic),transform var(--duration) var(--duration) var(--ease-elastic)}.portfolio{gap:5rem;display:flex}@media(max-width:1024px){.portfolio{flex-direction:column}}@media(max-width:690px){.portfolio{margin-top:5rem}}.portfolio h1{width:100%;text-align:left;padding-right:5rem}@media(max-width:1024px){.portfolio h1{padding-right:0}}.portfolio-col{width:100%}.portfolio-col-sticky{top:4rem;position:sticky;outline:0}@media(max-width:1024px){.portfolio-col-sticky{position:static}}.portfolio-info{display:flex;margin-top:2rem;flex-direction:column;max-width:880px;gap:2rem}.portfolio-info>p{font-size:1.25rem}.portfolio-info>p:first-of-type{font-size:1.85rem;color:var(--text-subdued)}.portfolio-info-footer{gap:2rem;display:flex;justify-content:space-between}@media(max-width:690px){.portfolio-info-footer{flex-direction:column}}.portfolio-info-footer-item{gap:2rem;display:flex;flex-direction:column}
