.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}.main-header[data-astro-cid-5blmo7yk]{max-width:var(--container-4xl);margin-inline:auto}.main-header__inner[data-astro-cid-5blmo7yk]{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:var(--space-16);padding:var(--space-12) var(--space-24);min-height:calc(var(--space-4) * 18)}.main-header__brand[data-astro-cid-5blmo7yk]{display:inline-block;font-size:var(--fs12);font-family:var(--font-mono);font-weight:600;color:var(--color-white);padding:var(--space-4) var(--space-8);background-color:var(--color-neutral-900);border-radius:var(--radius-2);text-decoration:none;transform:rotate(-3deg);transition:transform .2s,background-color .2s;&[data-astro-cid-5blmo7yk]:hover,&[data-astro-cid-5blmo7yk]:focus-visible{background-color:var(--color-neutral-800);transform:rotate(-2deg);outline:none}&[data-astro-cid-5blmo7yk]:focus-visible{box-shadow:0 0 0 3px var(--color-primary-400)}}.main-header__navbar[data-astro-cid-5blmo7yk]{position:fixed;bottom:var(--space-24);left:0;right:0;z-index:50;display:flex;justify-content:center}.main-header__nav[data-astro-cid-5blmo7yk]{position:relative;display:flex;gap:var(--space-4);padding:var(--space-6);border-radius:9999px;background:var(--color-white);backdrop-filter:blur(10px);border:1px solid var(--color-neutral-200)}.main-header__thumb[data-astro-cid-5blmo7yk]{position:absolute;top:var(--space-4);left:0;height:calc(100% - var(--space-8));border-radius:9999px;box-shadow:var(--shadow-sm);background:none;border:1px solid var(--color-white);border-radius:2rem;filter:drop-shadow(0 3px 6px gray);pointer-events:none;overflow:hidden;transition:transform .25s ease-out,width .25s ease-out;will-change:transform,width}.main-header__link[data-astro-cid-5blmo7yk]{position:relative;z-index:1;padding:var(--space-6) var(--space-16);font-size:var(--fs14);font-weight:500;color:var(--muted);border-radius:9999px;line-height:1;text-decoration:none;transition:color .15s ease-in-out;&[data-astro-cid-5blmo7yk]:hover:not([aria-current=page]){color:var(--color-neutral-700)}&[data-astro-cid-5blmo7yk]:focus-visible{outline:none;box-shadow:0 0 0 3px var(--color-primary-400)}}.main-header__link[data-astro-cid-5blmo7yk][aria-current=page]{color:var(--color-secondary-500);font-weight:600}.main-header__link[data-astro-cid-5blmo7yk]>span[data-astro-cid-5blmo7yk]{pointer-events:none}.main-header__social[data-astro-cid-5blmo7yk]{display:flex;align-items:center;gap:var(--space-4)}@media (width >= 48rem){.main-header__navbar[data-astro-cid-5blmo7yk]{position:static}}@media (width >= 64rem){.main-header[data-astro-cid-5blmo7yk]{position:sticky;top:0;z-index:100}}@media (prefers-reduced-motion: reduce){#thumb[data-astro-cid-5blmo7yk],.main-header__link[data-astro-cid-5blmo7yk]{transition:none!important}}@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}}@font-face{font-family:Figtree;src:local("Figtree"),url(/fonts/figtree-vf.woff2) format("woff2") tech(variations),url(/fonts/figtree-vf.woff) format("woff") tech(variations),url(/fonts/figtree-vf.ttf) format("truetype") tech(variations);font-weight:300 900;font-style:normal;font-display:swap;font-optical-sizing:auto}@supports (font-variation-settings: normal){@font-face{font-family:Figtree;src:local("Figtree"),url(/fonts/figtree-vf.woff2) format("woff2-variations"),url(/fonts/figtree-vf.woff) format("woff-variations"),url(/fonts/figtree-vf.ttf) format("ttf-variations");font-weight:300 900;font-style:normal;font-display:swap}}@font-face{font-family:Figtree;src:local("Figtree"),url(/fonts/figtree-italic-vf.woff2) format("woff2") tech(variations),url(/fonts/figtree-italic-vf.woff) format("woff") tech(variations),url(/fonts/figtree-italic-vf.ttf) format("truetype") tech(variations);font-weight:300 900;font-style:italic;font-display:swap;font-optical-sizing:auto}@supports (font-variation-settings: normal){@font-face{font-family:Figtree;src:local("Figtree"),url(/fonts/figtree-italic-vf.woff2) format("woff2-variations"),url(/fonts/figtree-italic-vf.woff) format("woff-variations"),url(/fonts/figtree-italic-vf.ttf) format("ttf-variations");font-weight:300 900;font-style:italic;font-display:swap}}@font-face{font-family:Bricolage Grotesque;src:local("Bricolage Grotesque"),url(/fonts/bricolage-grotesque-vf.woff2) format("woff2") tech(variations),url(/fonts/bricolage-grotesque-vf.woff) format("woff") tech(variations),url(/fonts/bricolage-grotesque-vf.ttf) format("truetype") tech(variations);font-weight:200 800;font-style:normal;font-display:swap;font-optical-sizing:auto}@supports (font-variation-settings: normal){@font-face{font-family:Bricolage Grotesque;src:local("Bricolage Grotesque"),url(/fonts/bricolage-grotesque-vf.woff2) format("woff2-variations"),url(/fonts/bricolage-grotesque-vf.woff) format("woff-variations"),url(/fonts/bricolage-grotesque-vf.ttf) format("ttf-variations");font-weight:200 800;font-style:normal;font-display:swap}}@font-face{font-family:Nothing You Could Do;src:local("Nothing You Could Do"),url(/fonts/nothing-you-could-do.woff2) format("woff2"),url(/fonts/nothing-you-could-do.woff) format("woff"),url(/fonts/nothing-you-could-do.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono,monospace;src:local("JetBrains Mono"),url(/fonts/jetbrains-mono-vf.woff2) format("woff2") tech(variations),url(/fonts/jetbrains-mono-vf.woff) format("woff") tech(variations),url(/fonts/jetbrains-mono-vf.ttf) format("truetype") tech(variations);font-weight:100 800;font-style:normal;font-display:swap;font-optical-sizing:auto}@supports (font-variation-settings: normal){@font-face{font-family:JetBrains Mono,monospace;src:local("JetBrains Mono"),url(/fonts/jetbrains-mono-vf.woff2) format("woff2-variations"),url(/fonts/jetbrains-mono-vf.woff) format("woff-variations"),url(/fonts/jetbrains-mono-vf.ttf) format("ttf-variations");font-weight:100 800;font-style:normal;font-display:swap}}@font-face{font-family:JetBrains Mono,monospace;src:local("JetBrains Mono"),url(/fonts/jetbrains-mono-italic-vf.woff2) format("woff2") tech(variations),url(/fonts/jetbrains-mono-italic-vf.woff) format("woff") tech(variations),url(/fonts/jetbrains-mono-italic-vf.ttf) format("truetype") tech(variations);font-weight:100 800;font-style:italic;font-display:swap;font-optical-sizing:auto}@supports (font-variation-settings: normal){@font-face{font-family:JetBrains Mono,monospace;src:local("JetBrains Mono"),url(/fonts/jetbrains-mono-italic-vf.woff2) format("woff2-variations"),url(/fonts/jetbrains-mono-italic-vf.woff) format("woff-variations"),url(/fonts/jetbrains-mono-italic-vf.ttf) format("ttf-variations");font-weight:100 800;font-style:italic;font-display:swap}}:root{--color-primary: oklch(.38 .18 260);--color-primary-hover: oklch(.35 .19 260);--color-primary-light: oklch(.9 .08 260);--color-primary-50: oklch(.95 .04 260);--color-primary-100: oklch(.9 .08 260);--color-primary-200: oklch(.8 .12 260);--color-primary-300: oklch(.7 .14 260);--color-primary-400: oklch(.6 .16 260);--color-primary-500: oklch(.48 .18 260);--color-primary-600: var(--color-primary);--color-primary-700: oklch(.3 .16 260);--color-primary-800: oklch(.24 .14 260);--color-primary-900: oklch(.18 .12 260);--color-primary-950: oklch(.12 .08 260);--color-secondary: oklch(.4 .2 10);--color-secondary-hover: oklch(.35 .22 10);--color-secondary-light: oklch(.9 .08 10);--color-secondary-50: oklch(.95 .04 10);--color-secondary-100: oklch(.9 .08 10);--color-secondary-200: oklch(.8 .12 10);--color-secondary-300: oklch(.7 .16 10);--color-secondary-400: oklch(.6 .18 10);--color-secondary-500: oklch(.5 .2 10);--color-secondary-600: var(--color-secondary);--color-secondary-700: oklch(.35 .18 10);--color-secondary-800: oklch(.28 .16 10);--color-secondary-900: oklch(.2 .14 10);--color-secondary-950: oklch(.14 .1 10);--color-accent: var(--color-accent-600);--color-accent-hover: oklch(.39 .17 190);--color-accent-light: var(--color-accent-100);--color-accent-50: oklch(.95 .04 190);--color-accent-100: oklch(.88 .08 190);--color-accent-200: oklch(.78 .12 190);--color-accent-300: oklch(.68 .14 190);--color-accent-400: oklch(.58 .16 190);--color-accent-500: var(--color-accent);--color-accent-600: oklch(.42 .16 190);--color-accent-700: oklch(.35 .14 190);--color-accent-800: oklch(.28 .12 190);--color-accent-900: oklch(.2 .1 190);--color-accent-950: oklch(.13 .08 190);--color-tertiary: oklch(.5 .18 335);--color-tertiary-hover: oklch(.45 .2 335);--color-tertiary-light: oklch(.92 .07 335);--color-tertiary-50: oklch(.96 .03 335);--color-tertiary-100: oklch(.92 .07 335);--color-tertiary-200: oklch(.85 .1 335);--color-tertiary-300: oklch(.75 .14 335);--color-tertiary-400: oklch(.65 .16 335);--color-tertiary-500: var(--color-tertiary);--color-tertiary-600: oklch(.42 .17 335);--color-tertiary-700: oklch(.35 .15 335);--color-tertiary-800: oklch(.28 .12 335);--color-tertiary-900: oklch(.2 .1 335);--color-tertiary-950: oklch(.14 .08 335);--color-white: oklch(100% 0 0);--color-dark: oklch(12.9% .042 264.695);--muted: oklch(.62 .02 260);--border: oklch(.86 .015 260);--color-neutral-50: #F8FAFC;--color-neutral-100: #F1F5F9;--color-neutral-200: #E2E8F0;--color-neutral-300: #CBD5E1;--color-neutral-400: #94A3B8;--color-neutral-500: #64748B;--color-neutral-600: #475569;--color-neutral-700: #334155;--color-neutral-800: #1E293B;--color-neutral-900: #0F172A;--color-title:#0F172A;--color-text:#1F2937;--color-success: oklch(.5 .18 135);--color-success-foreground: oklch(.98 .01 135);--color-success-light: oklch(.9 .06 135);--color-warning: oklch(.65 .18 80);--color-warning-foreground: oklch(.15 .02 80);--color-warning-light: oklch(.95 .06 80);--destructive: var(--color-secondary);--destructive-foreground: var(--color-secondary-light);--chart-1: var(--color-primary);--chart-2: var(--color-secondary);--chart-3: var(--color-accent);--chart-4: var(--color-tertiary);--chart-5: oklch(.7 .15 80);--font-primary: "Figtree", sans-serif;--font-secondary: "Bricolage Grotesque", sans-serif;--font-hand: "Nothing You Could Do", cursive;--font-mono: "JetBrains Mono", monospace;--fs56: 3.5rem;--fs48: 3rem;--fs44: 2.75rem;--fs42: 2.625rem;--fs40: 2.5rem;--fs36: 2.25rem;--fs32: 2rem;--fs30: 1.875rem;--fs28: 1.75rem;--fs26: 1.625rem;--fs24: 1.5rem;--fs22: 1.375rem;--fs20: 1.25rem;--fs18: 1.125rem;--fs17: 1.0625rem;--fs16: 1rem;--fs15: .9375rem;--fs14: .875rem;--fs13: .8125rem;--fs12: .75rem;--fs11: .6875rem;--fs10: .625rem;--font-size-heading-1: var(--fs40);--font-size-heading-2: clamp(1.75rem, 1.75rem + ((1vw - .2rem) * .392), 2rem);--font-size-heading-3: var(--fs28);--font-size-heading-4: var(--fs24);--font-size-heading-5: var(--fs20);--font-size-heading-6: var(--fs18);--font-size-base: var(--fs15);--container-sm: 24rem;--container-md: 28rem;--container-lg: 32rem;--container-xl: 36rem;--container-2xl: 42rem;--container-3xl: 48rem;--container-4xl: 64rem;--space-1: .0625rem;--space-2: .125rem;--space-3: .1875rem;--space-4: .25rem;--space-6: .375rem;--space-8: .5rem;--space-10: .625rem;--space-12: .75rem;--space-16: 1rem;--space-20: 1.25rem;--space-24: 1.5rem;--space-28: 1.75rem;--space-32: 2rem;--space-36: 2.25rem;--space-40: 2.5rem;--space-48: 3rem;--space-56: 3.5rem;--space-64: 4rem;--space-72: 4.5rem;--space-80: 5rem;--radius-1: .0625rem;--radius-2: .125rem;--radius-4: .25rem;--radius-6: .375rem;--radius-8: .5rem;--radius-10: .75rem;--radius-12: .875rem;--radius-16: 1rem;--radius-24: 1.5rem;--radius-32: 2rem;--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--box-shadow: 2px 2px var(--color-neutral-700);--btn-shadow: 2px 2px 0px 0 rgba(0, 0, 0, 1);--card-shadow: rgba(0, 0, 0, .05) 0px 6px 24px 0px, rgba(0, 0, 0, .08) 0px 0px 0px 1px}.bg-primary{background-color:var(--color-primary)}.bg-secondary{background-color:var(--color-secondary)}.bg-tertiary{background-color:var(--color-tertiary)}.bg-accent{background-color:var(--color-accent)}.border-base-900{border-color:var(--color-dark)}*,*:before,*:after{box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;text-shadow:1px 0px 0px rgba(0,0,0,.002)}html{margin:0;padding:0;scroll-behavior:smooth;scroll-padding-top:6.25rem}body{font-family:Figtree,system-ui,-apple-system,BlinkMacSystemFont,Roboto,DM Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:var(--fs16);line-height:1.75;color:var(--color-text);background-color:var(--color-neutral-50);min-height:100svh;margin:0;padding:0;letter-spacing:-.2px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}footer{padding:var(--space-16) 0;border-top:1px solid var(--color-neutral-200);margin-top:var(--space-32);display:none;.footer__text{font-size:var(--fs12);color:var(--color-neutral-400);margin:0;text-align:center}}.skip-link{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}.skip-link:focus{position:fixed;left:var(--space-16);top:var(--space-16);width:auto;height:auto;z-index:9999;background:var(--color-neutral-900);color:var(--color-white);padding:var(--space-8) var(--space-12);border-radius:var(--radius-2);outline:2px solid var(--color-white)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.container{width:100%;padding:3.3vw 1.6vw}strong{font-weight:600;color:var(--color-dark)}code,kbd,pre,samp{font-family:var(--font-mono)}pre{border-radius:.5rem;padding:1rem;margin-block:var(--space-32);max-width:100%;overflow-x:auto;white-space:pre}code{background-color:var(--color-neutral-200);padding:var(--space-3) var(--space-6);border-radius:var(--radius-4);font-family:var(--font-mono);font-size:var(--fs13);font-weight:600;word-break:break-all;white-space:pre-wrap}pre code{background:transparent;padding:0}code[class*=language-],pre[class*=language-]{text-align:left;white-space:pre;word-break:normal;word-spacing:normal;word-wrap:normal;hyphens:none;tab-size:4}blockquote{border-left:3px solid var(--color-neutral-900);padding:var(--space-8) var(--space-24);color:var(--color-dark);font-style:italic;margin:var(--space-40) 0;background-color:var(--color-white);font-weight:500}blockquote p{margin:0;padding:0}blockquote strong{font-weight:700;color:var(--color-dark)}h1,h2,h3,h4,h5,h6{font-family:Bricolage Grotesque,sans-serif;font-weight:600;margin:0}.heading-1{font-family:var(--font-secondary);font-size:var(--font-size-heading-1);color:var(--color-dark);text-align:center;font-style:normal;font-weight:700;line-height:130%;letter-spacing:-.08rem;margin-bottom:var(--spacing-16)}.heading-2{font-family:var(--font-secondary);font-size:var(--font-size-heading-2);color:var(--color-dark);font-style:normal;font-weight:600;line-height:130%;letter-spacing:-.3px;margin-bottom:var(--spacing-10)}.heading-3{font-family:var(--font-secondary);font-size:var(--font-size-heading-3);color:var(--color-dark);font-style:normal;font-weight:600;line-height:130%;letter-spacing:-.3px;margin-bottom:var(--spacing-10)}.tagline{color:var(--color-dark);font-family:var(--font-hand);font-style:normal;font-weight:600;line-height:120%}.hero .tagline{font-weight:500}.section-alternated .tagline{color:var(--color-primary)}p.role{font-size:1rem}section{width:100%}main{min-height:75vh}article.contents{padding:3em clamp(1rem,4vw,4rem);max-width:var(--max-width-page);margin:auto}.grid-cards{width:100%}.grid-posts{display:grid;justify-content:center;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1rem;width:100%}.related-projects,.related-posts{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2rem}.budget{display:inline-block;padding:.1em .4em;border-radius:var(--radius-6);text-align:center;line-height:1.2}.budget--sm{font-size:var(--fs14);padding:var(--space-2) var(--space-4)}.budget--md{font-size:var(--fs15);padding:var(--space-2) var(--space-4)}.budget--lg{font-size:var(--fs16);padding:var(--space-2) var(--space-4)}.budget--primary{background-color:var(--color-primary-light);color:var(--color-primary)}.budget--secondary{background-color:var(--color-secondary-light);color:var(--color-secondary)}.budget--terciary{background-color:var(--color-tertiary-light);color:var(--color-tertiary)}.budget--accent{background-color:var(--color-accent-light);color:var(--color-accent)}.mark-secondary{background-color:var(--color-secondary-600);color:var(--color-white);padding:var(--space-2) var(--space-6);border-radius:var(--space-2);font-family:var(--font-secondary);font-size:var(--fs15);margin-inline:var(--space-1)}.mark-dark{background-color:var(--color-neutral-600);color:var(--color-white);padding:var(--space-2) var(--space-6);border-radius:var(--space-2);font-family:var(--font-secondary);font-size:var(--fs15);margin-inline:var(--space-1)}.mark-neutral{background-color:var(--color-neutral-200);color:var(--color-dark);padding:var(--space-2) var(--space-6);border-radius:var(--space-2);font-family:var(--font-secondary);font-size:var(--fs15);font-weight:700;margin-inline:var(--space-1)}@media (width < 48rem){main{margin-bottom:var(--space-64)}}@media (width >= 48rem){.footer{display:block}}
