:root{--color-light: #eaeaea;--color-dark: #002642;--color-theme-100: #2250f4;--color-theme-200: #183dd1;--color-theme-300: #112caf;--color-theme-400: #061475;--color-accent-100: #d13745;--color-accent-200: #e5653f;--color-accent-300: #fabd37;--carrot: #fd7b2b;--beyond-the-stars: #002642;--sand: #ede0d4;--sand-10: #F0E5DB;--sand-80: hsla(29, 31%, 78%, 100%);--midnight: #002A54;--porcelain: #FAFBF4;--salmon: #E3A9A0;--blush: #ED6B5D;--color-background: var(--color-theme-300);--scheme-color: var(--color-light);--step--2: clamp(.69rem, calc(.66rem + .18vw) , .8rem);--step--1: clamp(.83rem, calc(.78rem + .29vw) , 1rem);--step-0: clamp(1rem, calc(.91rem + .43vw) , 1.25rem);--step-1: clamp(1.2rem, calc(1.07rem + .63vw) , 1.56rem);--step-2: clamp(1.44rem, calc(1.26rem + .89vw) , 1.95rem);--step-3: clamp(1.73rem, calc(1.48rem + 1.24vw) , 2.44rem);--step-4: clamp(2.07rem, calc(1.73rem + 1.7vw) , 3.05rem);--step-5: clamp(2.49rem, calc(2.03rem + 2.31vw) , 3.82rem);--space-3xs: clamp(.31rem, calc(.31rem + 0vw) , .31rem);--space-2xs: clamp(.56rem, calc(.54rem + .11vw) , .63rem);--space-xs: clamp(.88rem, calc(.85rem + .11vw) , .94rem);--space-s: clamp(1.13rem, calc(1.08rem + .22vw) , 1.25rem);--space-m: clamp(1.69rem, calc(1.62rem + .33vw) , 1.88rem);--space-l: clamp(2.25rem, calc(2.16rem + .43vw) , 2.5rem);--space-xl: clamp(3.38rem, calc(3.24rem + .65vw) , 3.75rem);--space-2xl: clamp(4.5rem, calc(4.33rem + .87vw) , 5rem);--space-3xl: clamp(6.75rem, calc(6.49rem + 1.3vw) , 7.5rem);--space-3xs-2xs: clamp(.31rem, calc(.2rem + .54vw) , .63rem);--space-2xs-xs: clamp(.56rem, calc(.43rem + .65vw) , .94rem);--space-xs-s: clamp(.88rem, calc(.74rem + .65vw) , 1.25rem);--space-s-m: clamp(1.13rem, calc(.86rem + 1.3vw) , 1.88rem);--space-m-l: clamp(1.69rem, calc(1.4rem + 1.41vw) , 2.5rem);--space-l-xl: clamp(2.25rem, calc(1.73rem + 2.61vw) , 3.75rem);--space-xl-2xl: clamp(3.38rem, calc(2.81rem + 2.83vw) , 5rem);--space-2xl-3xl: clamp(4.5rem, calc(3.46rem + 5.22vw) , 7.5rem);--space-s-l: clamp(1.13rem, calc(.65rem + 2.39vw) , 2.5rem);--grid-columns: 12;--flow-space: var(--space-s);--leading-standard: 1.6;--leading-loose: 1.8;--leading-tight: 1.4;--wrapper-width: 80rem;--dynamic-space: calc((100vw - var(--wrapper-width)) / 2);--negative-dynamic-space: calc(var(--wrapper-width) * -1);--line-length: 65ch;--border-radius-m: 4px;--border-radius-s: 2px;--theme-background: var(--light, var(--color-background)) var(--dark, var(--color-theme-400));--theme-transition: .2s ease-in-out;--ON: initial;--OFF: ;--serif: "IBM Plex Serif", "Times New Roman", Times, serif;--sans-serif: "Lexend", -system-ui, sans-serif;--sans-serif: "IBM Plex Sans", -system-ui, sans-serif;--sans-serif: fira-sans, -system-ui, sans-serif;--body: var(--sans-serif);--titles: var(--sans-serif);--shadows: 0px 0px 1px rgba(20, 20, 21, .18), 0px 8px 16px -8px rgba(20, 20, 21, .15), 0px 12px 26px -8px rgba(20, 20, 21, .2);--shadows-alt: 0px 0px 1px rgba(20, 20, 21, .18), 0px 3px 8px var(--border), 0px 13px 20px rgba(20, 20, 21, .09);--shadows-elevation1: 0px 0px 1px rgba(20, 20, 21, .18), 0px 2px 3px -2px rgba(20, 20, 21, .3);--shadows-elevation2: 0px 0px 1px rgba(20, 20, 21, .14), 0px 4px 8px -4px rgba(20, 20, 21, .35);--shadows-elevation3: 0px 0px 1px rgba(20, 20, 21, .14), 0px 6px 16px -6px rgba(20, 20, 21, .4);color-scheme:light dark;--mesh-gradient: radial-gradient( at 40% 20%, hsla(28, 100%, 74%, 1) 0px, transparent 50% ), radial-gradient(at 80% 0%, hsla(189, 100%, 56%, 1) 0px, transparent 50%), radial-gradient(at 0% 50%, hsla(355, 100%, 93%, 1) 0px, transparent 50%), radial-gradient(at 80% 50%, hsla(340, 100%, 76%, 1) 0px, transparent 50%), radial-gradient(at 0% 100%, hsla(22, 100%, 77%, 1) 0px, transparent 50%), radial-gradient(at 80% 100%, hsla(242, 100%, 70%, 1) 0px, transparent 50%), radial-gradient(at 0% 0%, hsla(343, 100%, 76%, 1) 0px, transparent 50%)}html,.theme-light{--light: var(--ON);--dark: var(--OFF)}.theme-dark{--light: var(--OFF);--dark: var(--ON)}@media (prefers-color-scheme: dark){body{--light: var(--OFF);--dark: var(--ON)}}@layer reset{*,*:before,*:after{box-sizing:border-box}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin:0}ul[role=list],ol[role=list]{list-style:none}html:focus-within{scroll-behavior:smooth}body{min-height:100vh;text-rendering:optimizeLegibility;line-height:1.5}a:not([class]){text-decoration-skip-ink:auto}img,picture{max-width:100%;display:block}input,button,textarea,select{font:inherit}@media (prefers-reduced-motion: reduce){html:focus-within{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}svg{display:block;max-width:100%;height:auto}}:root{--background: var(--sand-10);--background--hero: var(--sand);--text: var(--beyond-the-stars);--accent: var(--carrot);--border: var(--sand-80);--card-bg: #fff;--badge-bg: var(--beyond-the-stars);--badge-fg: var(--card-bg);--card-footer-bg: hsl(206,32%,98%);--card-shadow: 0px 0px 1px hsla(29, 31%, 28%, .14), 0px 4px 8px -4px hsla(29, 31%, 28%, .35)}:root.theme-dark{--background: var(--beyond-the-stars);--background--hero: hsl(206,72%, 20%);--text: var(--sand);--accent: var(--beyond-the-stars);--border: hsl(206,72%, 16%);--badge-bg: hsl(206,72%,7%);--badge-fg: var(--text);--card-bg: hsl(206,72%, 20%);--card-footer-bg: hsl(206,72%,18%);--card-shadow: 0px 0px 1px hsla(206, 72%, 5%, .14), 0px 4px 8px -4px hsla(206, 72%, 5%, .35)}@font-feature-values "Fira Sans"{@styleset{alta:4}}body{background-color:var(--background);color:var(--text);font-family:var(--body);font-size:var(--step-0);font-feature-settings:"onum","zero","ss04","ss03","liga","clig";line-height:var(--leading-standard, 1.6)}@layer typography{h1,h2,h3,h4,h5,h6{font-weight:700;text-wrap:balance}h1{font-size:var(--step-5);max-width:25ch}.jumbo{font-size:clamp(4.5rem,17vw,13rem)}h2{font-size:var(--step-4)}h3{font-size:var(--step-3)}h1,h2,h3{font-family:var(--titles);line-height:1.1}:is(h1,h2,h3,blockquote){--flow-space: 1.5em}:is(h1,h2,h3)+*{--flow-space: .5em}.lede b{font-weight:600}figcaption{margin-block-start:var(--space-2xs);font-size:var(--step-0);font-style:italic;max-width:65ch}a{color:currentColor;text-decoration-color:var(--text);text-decoration-thickness:2px;text-underline-offset:.2ex}a:hover,a:focus{text-underline-offset:.3ex}a:focus-visible:not(.logo){background:var(--text);color:var(--background);outline:2px solid var(--text);outline-offset:2px}.toc{margin-block-start:var(--space-xl)!important;border-top:1px solid var(--border)}.toc>ol{font-size:var(--step-0)}.toc ol ol{font-size:var(--step--1)}.summary{margin-block-start:var(--space-xl, 1em)}.lede{font-family:var(--titles);text-wrap:balance}.lede+*{--flow-space: 1em}}@layer utilities{.wrapper{padding-inline:max(var(--space-xs),(50% - 40rem))}.img-fluid{height:auto;max-width:100%}.flow>*+*{margin-block-start:var(--flow-space, 1em)}.space-apart{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}}.filmstrip{background-color:var(--background--hero);padding-block:var(--space-xs);font-size:var(--step--1);text-align:center}.banner{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;padding-block:var(--space-xl) 0}.skip-link{position:absolute;top:0;left:0;padding:var(--space-xs)}#quadtree{display:block;height:4rem;width:4rem}.logo{display:flex;align-items:center}.logo:focus-visible{outline:none}.logo:focus-visible .avatar{background-color:var(--text);outline:2px solid var(--text);outline-offset:2px}.logo span{padding-left:var(--space-s)}.logo:not(:focus):not(:focus-within) span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (min-width: 30rem){.banner{margin-block-end:var(--space-l)}}.logotype{font-size:var(--step--1);font-weight:700}@media (max-width: 30rem){.grid>*:not(.card:last-child){margin-block-end:var(--space-xl)}}@media (min-width: 30rem){.grid{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-flow:dense;gap:var(--space-xs)}}canvas{--hue-rotate: 40deg;opacity:.25;filter:hue-rotate(var(--hue-rotate));animation:pulse 20s linear infinite}@keyframes pulse{0%{opacity:.25}50%{opacity:.5}to{opacity:.25}}.terrazo{background-color:var(--background);background-image:linear-gradient(transparent,var(--background) 10%),url(./img/terrazo.svg)}.hero{position:relative;background-color:var(--background--hero);background-image:url(/img/noise.svg);background-blend-mode:overlay}#waves path{fill:var(--background)}header hgroup{padding-block:var(--space-l-xl);text-wrap:pretty;font-size:var(--step-1)}@media (min-width: 30rem){header hgroup{font-size:var(--step-2);padding-block-start:0}}footer{font-size:var(--step--1)}footer>div{border-top:1px solid var(--border);margin-block-start:var(--space-xl);padding-block:var(--space-xl) var(--space-s)}.socials{display:flex;padding:0;list-style:none;flex-wrap:wrap;margin-block:0}.socials li:not(:last-child):after{content:"/";margin-inline-start:var(--space-3xs)}.socials li:not(:last-child){margin-inline-end:var(--space-3xs)}figure img{border-radius:max(0px,min(var(--border-radius-m),calc((100vw - 4px - 100%)*9999)));box-shadow:var(--shadows-elevation2)}@layer components{.badge{background-color:var(--badge-bg);color:var(--badge-fg)}.card{position:relative;background-color:var(--card-bg);border:1px solid var(--border);border-radius:12px;transition:box-shadow .2s cubic-bezier(.645,.045,.355,1)}.card--project{overflow:hidden}.card--project p{font-size:var(--step--1)}.card__cover{position:relative;background-color:var(--accent);width:100%;overflow:hidden}.card__cover:before{content:"";position:absolute;inset:0;z-index:1;height:100%;width:100%;background-color:var(--accent);mix-blend-mode:soft-light}.thumb-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);rotate:-25deg;gap:var(--space-xs);transform:scale(1.5);transition:transform .2s cubic-bezier(.215,.61,.355,1)}.thumb-grid__thumb{border-radius:var(--border-radius-m);overflow:hidden;filter:grayscale(100%);mix-blend-mode:luminosity;box-shadow:8px 8px #14141533}.card__content{padding:var(--space-l) var(--space-m)}.card:hover,.card:focus-within{box-shadow:var(--card-shadow)}:is(.card:focus-within,.card:hover) .thumb-grid{transform:scale(1.6)}.card a{display:block;transition:transform .2s ease;text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:2px;text-underline-offset:.2ex;text-decoration-skip-ink:auto;transition:text-underline-offset .2s ease}.card a:hover{text-underline-offset:.3ex;transition:text-underline-offset .2s ease}.card a:focus{outline:2px solid var(--text);outline-offset:2px}.card a:after{position:absolute;content:"";display:block;inset:0}.card img{display:block;height:100%;width:100%;object-fit:cover}.wrapper--links{margin-top:var(--space-xl);padding-top:var(--space-xl);border-top:1px solid var(--border)}.elsewhere,.talks{display:grid}@media (min-width: 30rem){.elsewhere,.talks{gap:var(--space-xl);grid-template-columns:1fr 3fr}}.elsewhere li,.talks li{padding-block-end:var(--space-xs);border-bottom:1px dashed var(--border)}.wrapper--projects{position:relative;grid-template-columns:auto 1fr;gap:var(--space-m);margin-top:var(--space-l);padding-top:var(--space-l)}.wrapper--quotes{margin-top:var(--space-xl);padding-top:var(--space-xl);border-top:1px solid var(--border)}.projects{container-type:inline-size;container-name:work;list-style:none;padding:0;perspective:50cm;perspective-origin:center}@container work (min-width: 30rem){.card--project{display:flex;align-items:flex-start}.project-details{font-size:3rem}}.project-listing{display:flex;flex-wrap:wrap;justify-content:space-between}.project-details{display:flex;align-items:flex-start;justify-content:flex-end;flex-direction:column;margin:var(--space-s)}a.title{font-family:var(--titles);line-height:var(--leading-tight);font-weight:700;font-size:var(--step-1)}.meta{display:flex;font-size:var(--step--1);margin-block-start:var(--space-3xs)}.meta>*:not(:last-child):after{content:"·";padding-inline-start:var(--space-3xs);margin-inline-end:var(--space-3xs)}.meta>*+*{margin-top:0}[role=list]{padding:0;list-style:none}.roles{display:flex;font-size:var(--step-0)}.roles{list-style-type:none;padding:0;margin-block-end:0}.roles{font-size:var(--step--2);flex-wrap:wrap}.roles li{background-color:var(--badge-bg);padding:var(--space-3xs) var(--space-2xs);color:var(--badge-fg);border-radius:var(--border-radius-m);margin-inline-end:var(--space-3xs);margin-block-start:var(--space-3xs)}time,.org{display:block}@media (min-width: 30rem){.quotes{display:grid;grid-template-columns:1fr 75%}.quotes>hgroup{padding-block-start:var(--space-m-l);padding-inline-end:var(--space-3xs);align-self:center}}.quote-container{position:relative;border-radius:1rem}.js-at-start:before,.js-at-end:after{position:absolute;top:0;bottom:0;width:1rem;z-index:1;content:"";background-image:linear-gradient(90deg,var(--sand-80),transparent)}.js-at-start:before{border-top-right-radius:2rem;border-bottom-right-radius:2rem}.js-at-end:after{right:0;background-image:linear-gradient(-90deg,var(--sand-80),transparent);border-top-left-radius:2rem;border-bottom-left-radius:2rem}.quote-scroller{display:flex;align-items:flex-start;padding-block-start:var(--space-l);overflow-x:scroll;gap:var(--space-s);scroll-snap-type:both mandatory}@media (min-width: 30rem){.quote-scroller{align-items:center;padding-inline:var(--space-s);padding-block:var(--space-m-l)}}.quote-scroller:focus-visible{outline:2px solid var(--text)}.card--quote{position:relative;display:flex;height:100%;flex-direction:column;justify-content:space-between;flex:1 0 auto;max-width:40ch;scroll-snap-align:start;scroll-margin:var(--space-l)}.card--quote:before{position:absolute;top:0;left:50%;content:"";background-color:#05141f;color:#fff;border-radius:50%;height:3rem;width:3rem;transform:translate(-1.5rem,-1.5rem);z-index:1}.quote-icon{position:absolute;top:0;left:50%;width:3rem;height:3rem;margin:0;transform:translate(-1.5rem,-1.5rem) scale(.5);z-index:10}.card--quote{padding:0}.card--quote p{font-size:var(--step-0);line-height:var(--leading-tight);padding:var(--space-m-l)}.card--quote .meta{display:flex;font-size:var(--step--1);padding:var(--space-s) var(--space-l);background-color:var(--card-footer-bg);border-bottom-left-radius:12px;border-bottom-right-radius:12px;justify-content:center}.card--quote .meta>*:not(:last-child):after{content:"·";padding-inline-start:var(--space-3xs);margin-inline-end:var(--space-3xs)}}.content{font-size:var(--step-1)}.content{margin-block-start:var(--space-xl);padding-block-start:var(--space-xl)}.content>*:not(figure){max-width:65ch}@media (min-width: 30rem){.content h3{line-height:1.6}}@media (prefers-color-scheme: dark){input,textarea,button{border:2px solid var(--scheme-color)}:is(input,textarea,button):focus{outline-color:var(--scheme-color)}}@keyframes fade-in{0%{opacity:0}}@keyframes fade-out{to{opacity:0}}@keyframes slide-from-right{0%{transform:translate(30px)}}@keyframes slide-to-left{to{transform:translate(-30px)}}::view-transition-old(root){animation:90ms cubic-bezier(.4,0,1,1) both fade-out,.3s cubic-bezier(.4,0,.2,1) both slide-to-left}::view-transition-new(root){animation:.21s cubic-bezier(0,0,.2,1) 90ms both fade-in,.3s cubic-bezier(.4,0,.2,1) both slide-from-right}
