@import"https://fonts.googleapis.com/css2?family=Spline+Sans+Mono:ital,wght@0,300..700;1,300..700&display=swap";:root{--background-color: #FFF;--page-color: #FFF;--text-color--white: #FFF;--text-color--white-dull: #CCC;--text-color--black: #111;--text-color--black-dull: #222;--text-color: var(--text-color--black);--text-color-dull: var(--text-color--black-dull);--text-color-negative: var(--text-color--white);--text-color-negative-dull: var(--text-color--white-dull);--backdrop-color: 10,10,10;--highlight-color: 200,200,200;--primary: #6ba7d8;--primaryRGB: 107, 167, 216;--secondary: #f1826e;--secondaryRGB: 241, 130, 110;--link-color: hsl(from var(--primary) h s calc(l - 10) );--link-color--visited: hsl(from var(--primary) h s calc(l - 30) );--very-mild-radius: calc(.25*var(--default-radius));--mild-radius: calc(.5*var(--default-radius));--default-radius: 1rem;--high-radius: calc(2*var(--default-radius));--aggressive-radius: calc(3*var(--default-radius));--duration-veryslow: calc(3*var(--duration-medium));--duration-slow: calc(2*var(--duration-medium));--duration-medium: .5s;--duration-fast: calc(.5*var(--duration-medium));--duration-veryfast: calc(.25*var(--duration-medium));--page-width: min(100vw, max(1920px, 70vh));font-family:Spline Sans Mono,Arial,Helvetica,sans-serif;font-size:12pt;line-height:1.5em}[data-dark--mode=true]{--background-color: #111;--page-color: #222;--text-color: var(--text-color--white);--text-color-dull: var(--text-color--white-dull);--text-color-negative: var(--text-color--black);--text-color-negative-dull: var(--text-color--black-dull);--backdrop-color: 150,150,150;--highlight-color: 10,10,10;--primary: #f1826e;--primaryRGB: 241, 130, 110;--secondary: #6ba7d8;--secondaryRGB: 107, 167, 216}*,*:after,*:before{margin:0;padding:0;box-sizing:border-box;color:var(--text-color)}html{background-color:var(--background-color)}body{min-height:100vh;width:100%;z-index:0;background-color:var(--page-color);--menu-compensation: calc(var(--menu-height) + var(--menu-offset))}@supports selector(:has(.main-menu)){body:has(.main-menu){padding-top:var(--menu-compensation)}}@supports not selector(:has(.main-menu)){body{padding-top:var(--menu-compensation)}}#content-containers{margin:0 auto;min-height:100vh;max-width:var(--page-width)}.content-container{width:80%;margin:0 auto;padding:5em 10% 10% 5em;background-color:var(--page-color)}.content-container:not(:first-of-type){padding:1em 10% 5em 5em}.content-container.content-container--centered{display:flex;justify-content:center;padding:5em}.content-container:not(:first-of-type).content-container--centered{padding-top:0}.content-container.content-container--thinner{width:70%}h1,h2,h3,h4,h5,h6{margin:1em 0 .5em}p+p{margin-top:1em}article{min-width:100%}article>p{padding-right:30%}.article--centered{display:flex;flex-direction:column;justify-content:center;min-width:60%}.article--centered>*,.centered-text{--padding: 15%;padding-left:var(--padding);padding-right:var(--padding)}p a,.text-wavy-underline,.text-wavy-underline--on-hover:hover{text-decoration-style:wavy;text-decoration-thickness:.05em;text-underline-offset:.2em;color:var(--link-color)}p a:visited{color:var(--link-color--visited)}p a:hover{filter:brightness(130%)}.centered-text{text-align:center}.context{font-style:italic;color:var(--text-color-dull)}hr{--thickness: .15em;--color: rgba(var(--backdrop-color),.1);width:95%;margin:2em auto;border:none;border-top:var(--thickness) solid var(--color);border-bottom:var(--thickness) solid var(--color);border-radius:var(--mild-radius)}mark{--radius: var(--very-mild-radius);--_color: var(--color, var(--primaryRGB));background-color:rgba(var(--_color),.8);padding:var(--radius);margin:calc(-1*var(--radius));border-radius:var(--radius);color:var(--text-color-dull);mix-blend-mode:multiply}ul,ol{margin:1em 0}ul{margin-left:1em}ol{margin-left:2em}li+li{margin-top:.5em}ul ul,ol ol{margin:0 0 0 1em}pre,.github-dark,.astro-code,code:not(pre code){--_radius: var(--radius, var(--init-radius));--opacity: .1;padding:var(--init-radius);margin:var(--init-radius) 0;border-radius:var(--_radius);background-color:rgba(var(--backdrop-color),var(--opacity))!important;transition-property:border-radius,background-color;transition-duration:var(--duration-fast)}pre{--init-radius: var(--default-radius);word-wrap:normal;white-space:pre-wrap;overflow:hidden;width:80%}pre code{filter:contrast(30%) saturate(300%)}pre:hover,code:hover{--opacity: .15}pre:hover{--radius: var(--aggressive-radius)}code:hover{--radius: var(--default-radius)}code,code:not(pre code){display:inline-block;width:fit-content;height:fit-content;padding:0 .2em;margin:0;--init-radius: var(--mild-radius);color:var(--primary)}table{--radius: var(--default-radius);--opacity: .3;max-width:80%;margin:var(--radius) 0;border-radius:var(--radius);background-color:rgba(var(--backdrop-color),.1);border-spacing:0;overflow:hidden}tr *{padding:var(--radius);border-right:solid rgba(var(--backdrop-color),.1) .1em;border-bottom:solid solid rgba(var(--backdrop-color),.1) .1em}td:last-child,th:last-child{border-right:none}tr:last-child *{border-bottom:none}th{background-color:rgba(var(--backdrop-color),.05)}blockquote{position:relative;--radius: var(--default-radius);font-size:.95em;color:var(--text-color-dull);width:fit-content;max-width:80%;background-color:rgba(var(--backdrop-color),.1);border-radius:0 var(--radius) var(--radius) 0;border-left:solid rgba(var(--backdrop-color),.1) .5em;padding:calc(1.5*var(--radius));margin:var(--radius) 0}blockquote blockquote{margin-bottom:0;border-radius:var(--radius)}blockquote em:before,blockquote em:after{position:absolute;margin-top:-.25em;content:'"';font-size:1.1em;font-weight:960;color:var(--text-color-dull);opacity:.5}blockquote em:before{margin-left:-.75em}blockquote em{margin-right:.75em}:root{--footer-height: 3em}footer{display:flex;justify-content:center;align-items:center;width:100%;height:var(--footer-height);overflow:hidden;background-color:var(--secondary);z-index:3}footer .link-object p{color:var(--text-color--white)!important}footer>:nth-child(n+2){height:60%;border-left:.1em solid var(--text-color--white)}@media(max-width:960px){body:has(.main-menu){padding-top:calc(var(--menu-height))}footer{flex-direction:column;align-items:flex-start;height:fit-content;padding-right:4em}footer p{flex-grow:1;width:100%}footer .link-object{text-align:start;flex-direction:row-reverse}footer .link-container{width:100%}footer>:nth-child(n+2){border:none}article>p{padding-right:10%}blockquote{max-width:95%}.content-container,.content-container.content-container--centered{width:100%;padding:4%}.article--centered>*,.centered-text{--padding: 0%}}.page-header{width:80%;text-align:center;padding:3em 15%;margin:2em;background-color:rgba(var(--backdrop-color),.1);border-radius:var(--default-radius);overflow:hidden}.page-header h1{font-size:4em;margin:.75em 0}.page-header img{height:150px}.page-header--centered{margin:2em auto}@media(max-width:960px){.page-header{width:90%;margin:5%;padding:2em 5%}.page-header h1{font-size:2.5em}}.image,.blog-post>p>img,.blog-post>img{object-fit:contain}.blog-post>img{object-fit:cover}.image--flatten{--filter: brightness(0%) grayscale(100%) invert(1);filter:var(--filter);-webkit-filter:var(--filter)}[data-dark--mode=false] .image--flatten{--filter: brightness(0%) grayscale(100%)}.image--mirror{transform:rotate(180deg)}.image--standalone,.blog-post>p>img,.blog-post>img{--radius: var(--default-radius);--opacity: .1;max-height:40vh;width:unset;max-width:min(80%,80vh);padding:var(--default-radius);margin:var(--default-radius) 0;border-radius:var(--radius);background-color:rgba(var(--backdrop-color),var(--opacity));transition-property:border-radius background-color;transition-duration:var(--duration-fast)}.image--standalone:hover,.blog-post>p>img:hover,.blog-post>img:hover{--radius: var(--aggressive-radius);--opacity: .2}.image--standalone__wrapper:has(.image--standalone.image--centered){display:flex;align-items:center;justify-content:center}@media(max-width:960px){.image--standalone,.blog-post>p>img{--radius: var(--default-radius);--opacity: .1;max-height:60vh;min-height:30vh;max-width:100%;object-fit:cover;padding:0}}button,select,input[type=submit]{background:none;color:inherit;border:none;padding:0;font:inherit;cursor:pointer;outline:inherit;-webkit-appearance:none}.select,.check-button,.slider-toggle-button,.button,input[type=submit]{--_default-brightness: var(--default-brightness, 110%);--_brightness: var(--brightness, var(--default-brightness));--_bg-color: var(--bg-color, var(--primary));width:max-content;margin:.25em 0;padding:calc(.5 * var(--default-radius)) var(--default-radius);background:var(--_bg-color);border-radius:var(--default-radius);filter:brightness(var(--_brightness));color:var(--text-color--white);text-align:center;white-space:nowrap;transition-property:border-radius,filter,color,background-color;transition-duration:var(--duration-veryfast),var(--duration-veryfast),var(--duration-veryfast),var(--duration-fast)}.select:first-child{margin-left:0}.select{padding:0;border:transparent solid calc(.5 * var(--default-radius))}.select option{background-color:hsl(from var(--_bg-color) h s calc(l + 10))}.button:hover,.select:hover,.check-button:hover,.slider-toggle-button:hover,.button:focus,.select:focus,.check-button:focus,.slider-toggle-button:focus{--brightness: calc(var(--default-brightness) - 10%);border-radius:var(--aggressive-radius)}.button-group{display:flex;flex-wrap:wrap;--gap: .5em;gap:var(--gap);min-width:40%;max-width:max(50%,fit-content)}@supports not (gap: 1em){.button-group{margin:calc(-1*var(--gap)) 0 0 calc(-1*var(--gap))}.button-group>*{margin:var(--gap) 0 0 var(--gap)}}.button-group.button-group--left-align{width:fit-content;justify-content:start;align-self:flex-start}.button-group.button-group--fill *{flex:1}.button__image{width:100%;height:100%;user-select:none;pointer-events:none}.check-button{--bg-color: var(--secondary)}.check-button[data-toggled=false]{--default-brightness: 80%}.slider-toggle-button{position:relative;--default-contrast: 80%;min-width:8em;min-height:calc(2*var(--default-radius));filter:contrast(var(--default-contrast))}.slider-toggle-button p{color:var(--text-color--white)}.slider-toggle-button[data-toggled=false]{--default-contrast: 60%}.slider-toggle-button:after{position:absolute;content:"";width:50%;height:100%;top:0;border-radius:var(--default-radius);background-color:var(--text-color--white);z-index:2;transition-property:left,right,opacity,border-radius;transition-duration:var(--duration-fast);pointer-events:none;mix-blend-mode:luminosity;opacity:.2}.slider-toggle-button:hover:after,.slider-toggle-button:focus:after{opacity:.3;border-radius:var(--aggressive-radius)}.slider-toggle-button[data-toggled=true]:after{left:50%;opacity:.3}.slider-toggle-button[data-toggled=false]:after{left:0;opacity:.2}.slider-toggle-button p{z-index:3;pointer-events:none}.form{position:relative;--radius: var(--default-radius);width:55%;margin:2em 0;padding:var(--radius) 10% calc(3*var(--radius)) 3%;border-radius:var(--radius);background-color:rgba(var(--backdrop-color),.1)}.form__notice,.form__legend{color:var(--text-color-dull);font-size:.85em;line-height:1.25em;margin:1em 0;opacity:.75;pointer-events:none}form[data-success=true]:after{display:flex;align-items:center;justify-content:center;position:absolute;top:0;left:0;content:"Form submitted successfully! I'll get back to you when I can :)";width:100%;height:100%;padding:10%;border-radius:var(--radius);background-color:rgba(var(--backdrop-color),.1);--backdrop-filter: blur(var(--radius));backdrop-filter:var(--backdrop-filter);-webkit-backdrop-filter:var(--backdrop-filter)}.input__wrapper{display:flex;flex-direction:column;gap:.5em;margin:1em 0;width:80%}@supports not (gap: 1em){.input__wrapper{margin:.5em 0}.input__wrapper>*{margin:.5em 0}}.input,.textarea{--__radius: var(--_radius, var(--mild-radius));--_opacity: var(--opacity, .1);border:none}.input[type=text],.input[type=email],.textarea,.input[type=submit]{width:100%;border-radius:var(--__radius);transition-property:background-color,border-radius;transition-duration:var(--duration-fast),var(--duration-fast)}.input[type=text],.input[type=email]{height:2.5em}.input[type=text],.input[type=email],.textarea{line-height:1em;padding:var(--radius);background-color:rgba(var(--backdrop-color),var(--_opacity))}.input:hover,.input:focus,.input:active,.textarea:hover,.textarea:focus,.textarea:active{--_radius: var(--default-radius);--opacity: .2;--outline-color: var(--text-color-negative-dull);--style: dashed;outline:.2em var(--style) var(--outline-color)}.input[required=true]:hover,.input[required=true]:focus,.input[required=true]:active,.textarea[required=true]:hover,.textarea[required=true]:focus,.textarea[required=true]:active{--outline-color: var(--secondary);--style: solid}.input[type=submit]{margin-top:1em;width:fit-content;cursor:pointer}.textarea{resize:vertical;min-height:4em;max-height:40vh}.input__label{display:flex;gap:.2em}.input__label--required{color:var(--secondary);font-weight:960;filter:saturate(200%)}@media(max-width:960px){.form{width:100%;padding:var(--radius)}}.link-object{display:flex;align-items:center;justify-content:center;text-align:center;height:100%;width:100%;padding:.5em 1em;--gap: .75em;gap:var(--gap)}@supports (not (aspect-ratio: 1 / 1)) or (not (gap: 0)){.link-object{margin:calc(-1*var(--gap)) 0 0 calc(-1*var(--gap))}.link-object>*{margin:var(--gap) 0 0 var(--gap)!important}}p .link-object{display:inline-flex;padding:0}.link-object img{height:var(--_img-size)}.link-object p{margin:0;padding:0}.link-object[data-mute=true],.link-object[data-mute=true] p{color:var(--text-color--white);text-decoration:none}.link-container{--_img-size: var(--img-size, 2em);display:inline-flex;z-index:2}.link-container.small{--img-size: 1.75em}.link-container.medium{--img-size: 2em}.link-container.large{--img-size: 3em}.link-container[data-highlight=true]{margin:1em 0;max-width:300px;background-color:var(--primary);border-radius:var(--default-radius)}.link-group.link-group--fill .link-container[data-highlight=true]{flex:1}.link-container[data-highlight=true]:hover{--brightness: 110%;border-radius:var(--aggressive-radius)}.link-container[data-imageOnly=true],.link-container[data-highlight=true]{--brightness: 100%;filter:brightness(var(--brightness));text-align:center;transition-property:border-radius filter;transition-duration:var(--duration-veryfast)}.link-container[data-imageOnly=true]{width:var(--_img-size);height:var(--_img-size)}.link-container[data-imageOnly=true] img{height:100%;width:100%}.link-container[data-imageOnly=true] .link-object{padding:0}.link-group{--_gap: var(--gap, .75em);display:flex;align-items:center;gap:var(--_gap);margin:var(--_gap) 0;min-width:40%;max-width:max(50%,fit-content)}@supports ((not (aspect-ratio: 1 / 1)) or (not (gap: 0))){.link-group{margin:calc(-1 * var(--_gap) + 1em) 0 0 calc(-1 * var(--_gap) + 1em)!important}.link-group .link-container{margin:var(--_gap) 0 0 var(--_gap)!important}}.link-group:has(.link-container.small){--gap: .25em}.link-group:has(.link-container.medium){--gap: .5em}.link-group:has(.link-container.large){--gap: .75em}.link-group.link-group--centered{justify-content:center}.link-group .link-container[data-highlight=true]{max-width:unset}@media(max-width:960px){.link-group{flex-wrap:wrap}@supports (not (aspect-ratio: 1 / 1)) or (not (gap: 0)){.link-group .link-container+.link-container{margin-left:0;margin-top:var(--_gap)}}.link-group .link-container{white-space:nowrap;margin:0}.link-container[data-imageOnly=false]{flex:1}}.notification{display:flex;align-items:center;justify-content:center;position:absolute;top:-150%;width:100%;z-index:999}.notification p{width:fit-content;padding:.25em 1em;text-wrap:nowrap;border-radius:var(--default-border-radius);background-color:rgba(var(--backdrop-color),.3)}@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}}
