*,:before,:after{box-sizing:border-box;margin:0}html{--color-bg:#141110;--color-text:#e9e3e2;--color-text-muted:#beaca7;--color-primary:#e53400;--color-primary-light:#ff6a2b;--color-primary-light-faded:color-mix(in srgb, var(--color-primary-light) 35%, transparent);--gradient-primary:linear-gradient(135deg, #e02800 0%, #f25900 100%);--animation-duration:.3s;background-color:var(--color-bg);color:var(--color-text);font-family:var(--font-sans)}body{overflow-wrap:break-word;text-wrap:pretty;line-height:1.5}:focus-visible{outline:2px solid var(--color-primary-light);outline-offset:3px;border-radius:2px}.fluid-font{--min-font-size-rem:var(--font-size-rem);font-size:clamp(var(--min-font-size-rem) * 1rem, var(--min-font-size-rem) * 1rem + (var(--font-size-rem) - var(--min-font-size-rem)) * (100cqi - var(--arc-smallest-item-width-rem) * 1rem) / (var(--arc-breakpoint-item-width-rem) - var(--arc-smallest-item-width-rem)), var(--font-size-rem) * 1rem)}.heading{letter-spacing:-.025em;font-weight:600;line-height:1.2}ul{padding:0;list-style:none}.tag-list{--item-gap:1.75em;margin-right:calc(-1 * var(--item-gap));overflow:clip}.tag-list li{margin-right:var(--item-gap);font-family:var(--font-mono);color:var(--color-text-muted);display:inline-block;position:relative}.tag-list li:before{left:calc(-1 * var(--item-gap) / 2);content:"/";content:"/" / "";color:var(--color-primary-light);position:absolute;transform:translate(-50%)}.icon-links{--font-size-rem:1.125;flex-wrap:wrap;gap:.375em 1em;display:flex}.icon-link{letter-spacing:-.025em;color:var(--color-primary-light);align-items:center;gap:.15em;font-weight:600;text-decoration:none;display:inline-flex}.icon-link span{--underline-height:2px;background:linear-gradient(var(--color-primary-light), var(--color-primary-light)) left bottom / 0% var(--underline-height) no-repeat, linear-gradient(var(--color-primary-light-faded), var(--color-primary-light-faded)) left bottom / 100% var(--underline-height) no-repeat;transition:background-size var(--animation-duration) ease}.icon-link:focus-visible span{background-size:100% var(--underline-height)}@media (hover:hover){.icon-link:hover span{background-size:100% var(--underline-height)}}.icon-link:before{content:"";width:1em;height:1em;mask:var(--icon,url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20256%20256'%3e%3cpath%20fill='currentColor'%20d='M117.18%20188.74a12%2012%200%200%201%200%2017l-5.12%205.12A58.26%2058.26%200%200%201%2070.6%20228a58.62%2058.62%200%200%201-41.46-100.08l34.75-34.75a58.64%2058.64%200%200%201%2098.56%2028.11a12%2012%200%201%201-23.37%205.44a34.65%2034.65%200%200%200-58.22-16.58l-34.75%2034.75A34.62%2034.62%200%200%200%2070.57%20204a34.4%2034.4%200%200%200%2024.49-10.14l5.11-5.12a12%2012%200%200%201%2017.01%200M226.83%2045.17a58.65%2058.65%200%200%200-82.93%200l-5.11%205.11a12%2012%200%200%200%2017%2017l5.12-5.12a34.63%2034.63%200%201%201%2049%2049l-34.81%2034.7A34.4%2034.4%200%200%201%20150.61%20156a34.63%2034.63%200%200%201-33.69-26.72a12%2012%200%200%200-23.38%205.44A58.64%2058.64%200%200%200%20150.56%20180h.05a58.28%2058.28%200%200%200%2041.47-17.17l34.75-34.75a58.62%2058.62%200%200%200%200-82.91'%20/%3e%3c/svg%3e")) center / contain no-repeat;background-color:currentColor}.repo-link{--icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20256%20256'%3e%3cpath%20fill='currentColor'%20d='M228%2064a36%2036%200%201%200-48%2033.94V112a4%204%200%200%201-4%204H80a4%204%200%200%201-4-4V97.94a36%2036%200%201%200-24%200V112a28%2028%200%200%200%2028%2028h36v18.06a36%2036%200%201%200%2024%200V140h36a28%2028%200%200%200%2028-28V97.94A36.07%2036.07%200%200%200%20228%2064M64%2052a12%2012%200%201%201-12%2012a12%2012%200%200%201%2012-12m64%20152a12%2012%200%201%201%2012-12a12%2012%200%200%201-12%2012m64-128a12%2012%200%201%201%2012-12a12%2012%200%200%201-12%2012'%20/%3e%3c/svg%3e")}.website-link{--icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20256%20256'%3e%3cpath%20fill='currentColor'%20d='M128%2020a108%20108%200%201%200%20108%20108A108.12%20108.12%200%200%200%20128%2020m83.13%2096h-31.57a144.3%20144.3%200%200%200-21.35-66.36A84.22%2084.22%200%200%201%20211.13%20116M128%20207c-9.36-10.81-24.46-33.13-27.45-67h54.94a119.74%20119.74%200%200%201-17.11%2052.77A108.6%20108.6%200%200%201%20128%20207m-27.45-91a119.74%20119.74%200%200%201%2017.11-52.77A108.6%20108.6%200%200%201%20128%2049c9.36%2010.81%2024.46%2033.13%2027.45%2067Zm-2.76-66.36A144.3%20144.3%200%200%200%2076.44%20116H44.87a84.22%2084.22%200%200%201%2052.92-66.36M44.87%20140h31.57a144.3%20144.3%200%200%200%2021.35%2066.36A84.22%2084.22%200%200%201%2044.87%20140m113.34%2066.36A144.3%20144.3%200%200%200%20179.56%20140h31.57a84.22%2084.22%200%200%201-52.92%2066.36'%20/%3e%3c/svg%3e")}@media (width<70rem){.icon-links{column-gap:.5em}}@media (width<40rem){.icon-links{--min-font-size-rem:1}}html{scroll-snap-type:y mandatory;overscroll-behavior-y:none}html:has(.arc-scroll.enabled){overflow:hidden}@media (prefers-reduced-motion:no-preference){html.arc-scroll-js .arc-scroll[data-astro-cid-omfq7txy]:not(.enabled){visibility:hidden}}.arc-scroll[data-astro-cid-omfq7txy].enabled{scroll-snap-type:y mandatory;overscroll-behavior-y:none;position:fixed;inset:0;overflow:hidden auto}.arc-scroll[data-astro-cid-omfq7txy]{--arc-min-radius:200vh;--arc-max-height:60rem;--arc-radius:var(--arc-min-radius);--arc-angle:.75;--arc-length:calc(var(--arc-radius) * var(--arc-angle));--arc-line-gap:min(5vw, 3.5rem);--arc-bend:var(--arc-line-gap);--arc-side-space:calc(var(--arc-line-gap) + var(--arc-bend) + var(--arc-line-gap));--arc-item-width:min(100% - 2 * var(--arc-side-space), 55rem);--arc-item-left:calc((100% - var(--arc-item-width)) / 2);--arc-smallest-item-width-rem:16.6;--arc-breakpoint-item-width-rem:30;--arc-item-gap:15vh;--arc-half-view:50vh;--arc-middle:50vh;--arc-fade-length:40vh;--arc-unfocused-opacity:.3}@media (width<70rem){.arc-scroll[data-astro-cid-omfq7txy]{--arc-line-gap:min(4vw, 2rem);--arc-item-min-right-space:calc(1.25 * var(--arc-line-gap));--arc-item-shrink-width:calc(40% + 11.825rem);--arc-item-width:min(clamp(100% - 2 * var(--arc-side-space), var(--arc-item-shrink-width), 100% - var(--arc-side-space) - var(--arc-item-min-right-space)), var(--arc-breakpoint-item-width-rem) * 1rem);--arc-item-left:max(var(--arc-side-space), (100% - var(--arc-item-width)) / 2)}}@media (width<40rem){.arc-scroll[data-astro-cid-omfq7txy]{--arc-breakpoint-item-width-rem:20}}@property --arc-focus{syntax:"<number>";inherits:false;initial-value:1}.arc-scroll[data-astro-cid-omfq7txy].enabled .arc-scroll-view[data-astro-cid-omfq7txy]{height:100%;position:sticky;top:0;overflow:clip}.arc-scroll-items[data-astro-cid-omfq7txy]{padding-block:var(--arc-half-view);flex-direction:column;align-items:flex-start;display:flex;overflow:clip}.arc-scroll-items[data-astro-cid-omfq7txy]>.arc-scroll-snap:first-child{translate:0 -50%}.arc-scroll-items[data-astro-cid-omfq7txy]>.arc-scroll-snap:last-child{margin-top:var(--arc-item-gap);translate:0 50%}.arc-scroll[data-astro-cid-omfq7txy].enabled .arc-scroll-items[data-astro-cid-omfq7txy]{padding-block:calc(var(--arc-middle) - var(--arc-first-half-height)) calc(var(--arc-middle) - var(--arc-last-half-height))}.arc-scroll[data-astro-cid-omfq7txy].enabled .arc-scroll-items[data-astro-cid-omfq7txy]>.arc-scroll-snap:first-child{margin-bottom:var(--arc-item-gap);translate:none}.arc-scroll[data-astro-cid-omfq7txy].enabled .arc-scroll-items[data-astro-cid-omfq7txy]>.arc-scroll-snap:last-child{translate:none}.arc-scroll-items[data-astro-cid-omfq7txy] .arc-scroll-snap{width:var(--arc-item-width);margin-left:var(--arc-item-left);scroll-snap-align:center;container-type:inline-size}.arc-scroll[data-astro-cid-omfq7txy].enabled .arc-scroll-items[data-astro-cid-omfq7txy] .arc-scroll-snap{scroll-snap-align:none}.arc-scroll-items[data-astro-cid-omfq7txy] .arc-scroll-item{height:100%;transform-origin:calc(-1 * var(--arc-radius)) 50%;display:flow-root}.arc-scroll[data-astro-cid-omfq7txy].enabled .arc-scroll-items[data-astro-cid-omfq7txy] .arc-scroll-item{will-change:transform;opacity:calc(var(--arc-unfocused-opacity) + (1 - var(--arc-unfocused-opacity)) * var(--arc-focus))}.arc-scroll-spacer[data-astro-cid-omfq7txy]{pointer-events:none;position:relative}.arc-scroll-spacer[data-astro-cid-omfq7txy] .arc-scroll-snap-point{scroll-snap-align:start;width:1px;height:2px;position:absolute}.arc-scroll-line[data-astro-cid-omfq7txy]{--arc-line-radius:calc(var(--arc-radius) - var(--arc-line-gap));--arc-line-focus-length:15vh;--arc-line-fade-length:45vh;height:0;position:sticky;top:50%}.arc-scroll[data-astro-cid-omfq7txy].enabled .arc-scroll-line[data-astro-cid-omfq7txy]{height:auto;mask-image:linear-gradient(rgb(0 0 0/var(--arc-unfocused-opacity)) calc(var(--arc-middle) - var(--arc-line-fade-length)), #000 calc(var(--arc-middle) - var(--arc-line-focus-length)), #000 calc(var(--arc-middle) + var(--arc-line-focus-length)), rgb(0 0 0/var(--arc-unfocused-opacity)) calc(var(--arc-middle) + var(--arc-line-fade-length)));position:absolute;inset:0}.arc-scroll[data-astro-cid-omfq7txy].enabled .arc-scroll-line-svg[data-astro-cid-omfq7txy],.arc-scroll[data-astro-cid-omfq7txy].enabled .arc-scroll-ticks[data-astro-cid-omfq7txy]{top:var(--arc-middle)}.arc-scroll-line-svg[data-astro-cid-omfq7txy]{top:50%;left:calc(var(--arc-item-left) - var(--arc-radius) - var(--arc-line-radius));width:calc(var(--arc-line-radius) * 2);fill:none;stroke:var(--color-primary);stroke-width:3px;position:absolute;overflow:visible;translate:0 -50%}.arc-scroll-ticks[data-astro-cid-omfq7txy]{top:50%;left:calc(var(--arc-item-left) - var(--arc-radius));position:absolute}.arc-scroll[data-astro-cid-omfq7txy].enabled .arc-scroll-ticks[data-astro-cid-omfq7txy]{will-change:transform}.arc-scroll-ticks[data-astro-cid-omfq7txy] .arc-scroll-tick{--tick-width:1.5px;--tick-length:8px;top:calc(var(--tick-width) / -2);width:var(--tick-length);height:var(--tick-width);transform-origin:0;background-color:color-mix(in srgb, var(--color-text-muted) 45%, transparent);position:absolute}.arc-scroll-ticks[data-astro-cid-omfq7txy] .arc-scroll-tick.major{--tick-width:2px;--tick-length:15px;width:var(--tick-length);background-color:var(--color-primary-light)}.contact-links-email[data-astro-cid-yvptqzqn]{letter-spacing:-.025em;font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:.15em;padding:0;font-weight:500;display:inline-flex}.contact-links-email[data-astro-cid-yvptqzqn] span[data-astro-cid-yvptqzqn]{background:linear-gradient(var(--color-primary-light-faded), var(--color-primary-light-faded)) left / 0% 100% no-repeat;transition:background-size var(--animation-duration) ease}.contact-links-email[data-astro-cid-yvptqzqn]:focus-visible span[data-astro-cid-yvptqzqn]{background-size:100% 100%}@media (hover:hover){.contact-links-email[data-astro-cid-yvptqzqn]:hover span[data-astro-cid-yvptqzqn]{background-size:100% 100%}}.contact-links-email[data-astro-cid-yvptqzqn]:after{content:"";background-color:currentColor;width:1em;height:1em;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20256%20256'%3e%3cpath%20fill='currentColor'%20d='M216%2028H88a12%2012%200%200%200-12%2012v36H40a12%2012%200%200%200-12%2012v128a12%2012%200%200%200%2012%2012h128a12%2012%200%200%200%2012-12v-36h36a12%2012%200%200%200%2012-12V40a12%2012%200%200%200-12-12m-60%20176H52V100h104Zm48-48h-24V88a12%2012%200%200%200-12-12h-68V52h104Z'%20/%3e%3c/svg%3e") 50%/contain no-repeat}.contact-links-email[data-astro-cid-yvptqzqn].copied:after{animation:copy-check-wipe var(--animation-duration) ease forwards;mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20256%20256'%3e%3cpath%20fill='currentColor'%20d='m232.49%2080.49l-128%20128a12%2012%200%200%201-17%200l-56-56a12%2012%200%201%201%2017-17L96%20183L215.51%2063.51a12%2012%200%200%201%2017%2017Z'%20/%3e%3c/svg%3e"),linear-gradient(#000,#000);mask-position:50%,0;mask-size:100% 100%,0% 100%;mask-repeat:no-repeat,no-repeat;mask-clip:border-box,border-box;mask-origin:border-box,border-box;mask-composite:intersect;mask-mode:match-source,match-source}.contact-links-email[data-astro-cid-yvptqzqn].restored:after{animation:copy-fade-in var(--animation-duration) ease}@keyframes copy-check-wipe{to{mask-size:100% 100%,100% 100%}}@keyframes copy-fade-in{0%{opacity:0}}@media (width<70rem){.contact-links[data-astro-cid-yvptqzqn] li[data-astro-cid-yvptqzqn]:last-child{flex-basis:100%}}.header[data-astro-cid-nen7h5rs],.header[data-astro-cid-nen7h5rs] hgroup[data-astro-cid-nen7h5rs]{flex-direction:column;gap:1rem;display:flex}.header[data-astro-cid-nen7h5rs] img[data-astro-cid-nen7h5rs]{color:#0000;width:100%;height:auto;display:block}.header-role[data-astro-cid-nen7h5rs]{--font-size-rem:2.5;text-wrap:wrap}.header-skills[data-astro-cid-nen7h5rs]{--font-size-rem:1.125}@media (width<70rem){.header-role[data-astro-cid-nen7h5rs]{--font-size-rem:2}.header-skills[data-astro-cid-nen7h5rs]{--font-size-rem:1}}@media (width<40rem){.header-role[data-astro-cid-nen7h5rs]{--min-font-size-rem:1.6875}.header-skills[data-astro-cid-nen7h5rs]{--min-font-size-rem:.875}}.project[data-astro-cid-ksimebuj]{flex-direction:row;gap:2rem;height:100%;display:flex}.project[data-astro-cid-ksimebuj] img[data-astro-cid-ksimebuj]{background-color:var(--color-text);min-width:0;height:auto;box-shadow:0 0 20px color-mix(in srgb, var(--color-text) 15%, transparent);filter:brightness(.9);border-radius:3px;flex:1;align-self:center}.project-body[data-astro-cid-ksimebuj]{flex-direction:column;justify-content:space-between;gap:.75rem;width:20rem;display:flex}.project-intro[data-astro-cid-ksimebuj]{flex-direction:column;gap:.75rem;display:flex}.project[data-astro-cid-ksimebuj] h2[data-astro-cid-ksimebuj]{--font-size-rem:1.5}.project-summary[data-astro-cid-ksimebuj]{--font-size-rem:1.125;flex-direction:column;gap:.5rem;display:flex}.project-description[data-astro-cid-ksimebuj]{color:var(--color-text-muted)}.project-highlight[data-astro-cid-ksimebuj]:before{content:">";content:">" / "";font-family:var(--font-mono);color:var(--color-primary-light);padding-right:.5em}.project-meta[data-astro-cid-ksimebuj]{flex-direction:column;gap:.375rem;display:flex}.project-stack[data-astro-cid-ksimebuj]{--font-size-rem:.875}@media (width<70rem){.project[data-astro-cid-ksimebuj]{flex-direction:column;gap:1.25rem}.project[data-astro-cid-ksimebuj] img[data-astro-cid-ksimebuj]{flex:none;width:100%}.project-body[data-astro-cid-ksimebuj]{flex-grow:1;width:auto}}@media (width<40rem){.project[data-astro-cid-ksimebuj] h2[data-astro-cid-ksimebuj]{--min-font-size-rem:1.1875}.project-summary[data-astro-cid-ksimebuj]{--min-font-size-rem:1.0625}.project-stack[data-astro-cid-ksimebuj]{--min-font-size-rem:.875}}.footer[data-astro-cid-jo6i4kqk]{flex-direction:column;gap:1.75rem;display:flex}.footer-about[data-astro-cid-jo6i4kqk]{flex-direction:column;gap:.75rem;display:flex}.footer-credit[data-astro-cid-jo6i4kqk]{--font-size-rem:1.5}.footer-source[data-astro-cid-jo6i4kqk]{color:var(--color-text-muted);gap:1rem;display:flex}@media (width<40rem){.footer-credit[data-astro-cid-jo6i4kqk]{--min-font-size-rem:1.1875}}main[data-astro-cid-lcdefpme]{justify-items:start;gap:var(--arc-item-gap);grid-auto-rows:1fr;width:100%;display:grid}
