@import url("https://fonts.googleapis.com/css2?family=Archivo:wght@300;400;500;600&display=swap");

/*
! tailwindcss v3.3.3 | MIT License | https://tailwindcss.com
*/*,:after,:before{box-sizing:border-box;border:0 solid}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-sans);font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}body{background:var(--theme-page);color:var(--theme-ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main:focus{outline:none}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid currentColor;outline-offset:4px}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.article-prose{max-width:var(--measure)}.article-prose :where(section+section){margin-top:1.5rem}.article-prose :where(p){font-size:var(--type-body);line-height:var(--leading-body);letter-spacing:0;font-weight:400;color:var(--theme-copy)}.article-prose :where(p+p){margin-top:1.5rem}.article-prose :where(.lead){font-size:var(--type-lead);line-height:var(--leading-ui);letter-spacing:var(--tracking-lead);font-weight:400;color:var(--theme-ink)}.article-prose :where(h2){margin-bottom:1.25rem;margin-top:4rem;border-top-width:1px;border-color:var(--theme-rule);padding-top:.75rem;font-size:var(--type-title);line-height:var(--leading-title);letter-spacing:var(--tracking-title);font-weight:400;color:var(--theme-ink);text-wrap:balance}.article-prose :where(.lead+h2){margin-top:3rem;border-top-width:0;padding-top:0}.article-prose :where(section:first-child h2){margin-top:0;border-top-width:0;padding-top:0}.article-prose :where(h3){margin-bottom:1rem;margin-top:2rem;font-size:var(--type-label);line-height:var(--leading-ui);letter-spacing:var(--tracking-label);font-weight:500;color:var(--theme-ink);text-transform:uppercase}.article-prose :where(blockquote){margin-top:4rem;margin-bottom:4rem;font-size:var(--type-section);line-height:var(--leading-heading);letter-spacing:var(--tracking-heading);font-weight:400;color:var(--theme-ink)}.article-prose :where(code){background-color:var(--theme-surface);padding-left:.25rem;padding-right:.25rem}.article-prose :where(pre){margin-top:2rem;margin-bottom:2rem;overflow-x:auto;border-width:1px;border-color:var(--theme-rule);background-color:var(--theme-surface);padding:1.5rem;font-size:var(--type-small);line-height:var(--leading-ui);letter-spacing:0;font-weight:400;-moz-tab-size:2;-o-tab-size:2;tab-size:2}.article-prose :where(pre code){background-color:transparent;padding:0}.article-prose :where(a){text-decoration-line:underline;text-underline-offset:4px}.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}.\!visible{visibility:visible!important}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.top-4{top:1rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-40{z-index:40}.z-\[80\]{z-index:80}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.col-span-full{grid-column:1/-1}.col-start-1{grid-column-start:1}.row-start-1{grid-row-start:1}.float-left{float:left}.clear-both{clear:both}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-8{margin-top:2rem;margin-bottom:2rem}.-mb-px{margin-bottom:-1px}.mb-12{margin-bottom:3rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-7{margin-bottom:1.75rem}.mb-8{margin-bottom:2rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-3\.5{margin-top:.875rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-7{margin-top:1.75rem}.mt-8{margin-top:2rem}.mt-9{margin-top:2.25rem}.mt-auto{margin-top:auto}.mt-section-block{margin-top:var(--space-section-block)}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-\[5\/4\]{aspect-ratio:5/4}.aspect-square{aspect-ratio:1/1}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-full{height:100%}.h-px{height:1px}.max-h-preview{max-height:calc(100svh - 9rem)}.min-h-0{min-height:0}.min-h-64{min-height:16rem}.min-h-9{min-height:2.25rem}.min-h-panel{min-height:48svh}.min-h-section{min-height:100svh}.min-h-target{min-height:2.75rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-24{width:6rem}.w-28{width:7rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-8{width:2rem}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-0{min-width:0}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-headline{max-width:16ch}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-measure{max-width:var(--measure)}.max-w-page{max-width:100rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.basis-0{flex-basis:0px}.border-collapse{border-collapse:collapse}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.touch-pan-y{--tw-pan-y:pan-y;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.resize{resize:both}.scroll-mt-20{scroll-margin-top:5rem}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-column{gap:var(--space-column-gap)}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.gap-y-2{row-gap:.5rem}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-7>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.75rem * var(--tw-space-y-reverse))}.self-start{align-self:flex-start}.self-center{align-self:center}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hyphens-auto{hyphens:auto}.break-words{overflow-wrap:break-word}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-y{border-top-width:1px}.border-b,.border-y{border-bottom-width:1px}.border-l-4{border-left-width:4px}.border-t{border-top-width:1px}.border-current{border-color:currentColor}.border-ink{border-color:var(--theme-ink)}.border-rule{border-color:var(--theme-rule)}.border-transparent{border-color:transparent}.border-l-\[var\(--solid-memo\)\]{border-left-color:var(--solid-memo)}.border-l-\[var\(--solid-signal\)\]{border-left-color:var(--solid-signal)}.bg-ink{background-color:var(--theme-ink)}.bg-interstitial{background-color:var(--theme-interstitial)}.bg-muted{background-color:var(--theme-muted)}.bg-page{background-color:var(--theme-page)}.bg-surface{background-color:var(--theme-surface)}.bg-transparent{background-color:transparent}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-5{padding:1.25rem}.p-\[3px\]{padding:3px}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-section-inline{padding-left:var(--space-section-inline);padding-right:var(--space-section-inline)}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-section-block{padding-top:var(--space-section-block);padding-bottom:var(--space-section-block)}.pb-12{padding-bottom:3rem}.pb-24{padding-bottom:6rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-8{padding-bottom:2rem}.pb-section-block{padding-bottom:var(--space-section-block)}.pb-section-inline{padding-bottom:var(--space-section-inline)}.pl-3{padding-left:.75rem}.pt-11{padding-top:2.75rem}.pt-20{padding-top:5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.pt-section-block{padding-top:var(--space-section-block)}.text-left{text-align:left}.text-right{text-align:right}.text-body{font-size:var(--type-body);line-height:var(--leading-body);letter-spacing:0;font-weight:400}.text-display{font-size:var(--type-display);line-height:var(--leading-display);letter-spacing:var(--tracking-heading);font-weight:400}.text-label{font-size:var(--type-label);letter-spacing:var(--tracking-label);font-weight:500}.text-label,.text-lead{line-height:var(--leading-ui)}.text-lead{font-size:var(--type-lead);letter-spacing:var(--tracking-lead);font-weight:400}.text-section{font-size:var(--type-section);line-height:var(--leading-heading);letter-spacing:var(--tracking-heading);font-weight:400}.text-small{font-weight:400}.text-small,.text-small-strong{font-size:var(--type-small);line-height:var(--leading-ui);letter-spacing:0}.text-small-strong{font-weight:500}.text-title{font-size:var(--type-title);line-height:var(--leading-title);letter-spacing:var(--tracking-title);font-weight:400}.uppercase{text-transform:uppercase}.not-italic{font-style:normal}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.text-copy{color:var(--theme-copy)}.text-ink{color:var(--theme-ink)}.text-muted{color:var(--theme-muted)}.text-page{color:var(--theme-page)}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.underline-offset-\[\.15em\]{text-underline-offset:.15em}.accent-ink{accent-color:var(--theme-ink)}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-duration:.15s!important}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-700{transition-duration:.7s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.text-label{text-transform:uppercase}.text-balance{text-wrap:balance}nextjs-portal{display:none}.nav-theme-switcher{--switch-tray:color-mix(in srgb,var(--theme-ink) 6%,var(--theme-page));--switch-thumb:var(--theme-page);left:var(--space-section-inline);isolation:isolate;background:var(--switch-tray)}html[data-theme=dark] .nav-theme-switcher{--switch-thumb:color-mix(in srgb,var(--theme-ink) 16%,var(--theme-page))}.nav-theme-switcher:before{content:"";position:absolute;z-index:-1;top:3px;bottom:3px;left:3px;width:calc(50% - 3px);border-radius:.5rem;background:var(--switch-thumb);box-shadow:0 1px 2px rgba(0,0,0,.08),0 0 0 1px color-mix(in srgb,var(--theme-ink) 5%,transparent);opacity:0;transition:transform .3s cubic-bezier(.22,1,.36,1),opacity .2s ease}.nav-theme-switcher[data-active]:before{opacity:1}.nav-theme-switcher[data-active=dark]:before{transform:translateX(100%)}@media (prefers-reduced-motion:reduce){.nav-theme-switcher:before{transition:none}}body:has(.simple-hero) .nav-theme-switcher{left:var(--space-hero-inline)}@media (max-width:767px){.nav-theme-switcher,body:has(.simple-hero) .nav-theme-switcher{left:auto;right:max(1.5rem,env(safe-area-inset-right))}}#top{transition:transform .75s cubic-bezier(.77,0,.18,1);will-change:transform}@media (prefers-reduced-motion:reduce){#top{transition:none}}.contact-study-image{--contact-band-1:#183c42;--contact-band-2:#33736d;--contact-band-3:#82b8a3;--contact-band-4:#dbdca8;--contact-band-5:#f3d9a0;--contact-stroke:#183c42;position:absolute;inset:0;width:100%;height:100%;background:var(--contact-band-5)}.contact-tile{transition:fill .35s ease,stroke .35s ease;stroke:var(--contact-stroke);stroke-width:1.15;stroke-linejoin:round}.contact-line,.contact-tile{vector-effect:non-scaling-stroke}.contact-line{fill:none;stroke:var(--contact-stroke);stroke-opacity:.55;stroke-width:1}@media (prefers-reduced-motion:reduce){.contact-tile{transition:none}}.hero-grid{position:absolute;inset:-2px;z-index:1;pointer-events:none;opacity:.28;background-image:linear-gradient(var(--theme-rule) 1px,transparent 1px),linear-gradient(90deg,var(--theme-rule) 1px,transparent 1px),linear-gradient(color-mix(in srgb,var(--theme-rule) 48%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--theme-rule) 48%,transparent) 1px,transparent 1px);background-size:80px 80px,80px 80px,20px 20px,20px 20px;-webkit-mask-image:linear-gradient(to bottom right,rgba(0,0,0,.88),rgba(0,0,0,.3));mask-image:linear-gradient(to bottom right,rgba(0,0,0,.88),rgba(0,0,0,.3))}.contact-reveal .contact-copy{opacity:0;transform:translateY(18px)}.contact-reveal[data-shown] .contact-copy{animation:contact-copy-in .8s ease-out .45s forwards}@keyframes contact-copy-in{to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:no-preference){.contact-reveal .contact-tile{fill-opacity:0;stroke-opacity:0}.contact-reveal[data-shown] .contact-tile{animation:contact-tile-in .3s ease-out var(--arrive) forwards}.contact-reveal .contact-line{stroke-dasharray:1;stroke-dashoffset:1}.contact-reveal[data-shown] .contact-line{animation:contact-line-draw var(--span) linear var(--draw) forwards}}@keyframes contact-tile-in{to{fill-opacity:1;stroke-opacity:1}}@keyframes contact-line-draw{to{stroke-dashoffset:0}}.boids-overlay{pointer-events:none;position:absolute;inset:0;z-index:2;display:block;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.boids-overlay--disabled{opacity:0!important}.boids-controls{position:absolute;bottom:1rem;right:1rem;z-index:6;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.125rem;border-radius:.75rem;padding:3px;color:var(--theme-ink);--tw-backdrop-blur:blur(12px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);border:1px solid color-mix(in srgb,var(--theme-ink) 28%,transparent);background:color-mix(in srgb,var(--theme-page) 82%,transparent)}.boids-controls button{display:grid;height:2.25rem;width:2.25rem;place-items:center;border-radius:.5rem;padding:.5rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.boids-controls button:hover{background-color:var(--theme-control);color:var(--theme-control-ink)}.boids-controls svg{height:1rem;width:1rem;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}#about .boids-controls{left:1rem;right:auto}.hero-tiling{position:absolute;inset:0;z-index:2;display:block;width:100%;height:100%}.hero-tile{stroke:var(--hero-stroke);stroke-width:.7;stroke-linejoin:round;vector-effect:non-scaling-stroke}@media (prefers-reduced-motion:no-preference){.hero-tiling:not([data-ready]) .hero-tile{opacity:0}}:root{--hero-band-1:#0d2748;--hero-band-2:#173e74;--hero-band-3:#4f7fb8;--hero-band-4:#a9c6e0;--hero-band-5:#e8f0f4;--hero-stroke:#173e74}.hero-flocks{z-index:3}@media (prefers-reduced-motion:reduce){.contact-reveal .boids-overlay,.contact-reveal .contact-copy{opacity:1;transform:none}.contact-reveal[data-shown] .boids-overlay,.contact-reveal[data-shown] .contact-copy{animation:none}}:root{--space-section-block:clamp(3rem,6vw,6rem);--space-section-inline:clamp(1.5rem,4vw,4rem);--space-column-gap:clamp(1.5rem,3vw,3rem);--measure:62ch;--space-hero-inline:clamp(4.5rem,8vw,9rem)}:root,html[data-theme=light]{--theme-page:#fff;--theme-surface:#f5f4f2;--theme-ink:#141414;--theme-copy:#4a4a4a;--theme-muted:#8a8a8a;--theme-rule:#d4d4d4;--theme-control:#141414;--theme-control-ink:#fff;--theme-interstitial:#ececeb;--boid-horizontal:#000;--boid-vertical:#fff;--penrose-primary:#404080;--penrose-secondary:#ff4a80}html[data-theme=dark]{--theme-page:#101010;--theme-surface:#171717;--theme-ink:#ededed;--theme-copy:#aaa;--theme-muted:#8d8d8d;--theme-rule:#414141;--theme-control:#ededed;--theme-control-ink:#101010;--theme-interstitial:#101010;--boid-horizontal:#fff;--boid-vertical:#000;--penrose-primary:#1e5a8a;--penrose-secondary:#5ec4c4}.about-art{--about-band-1:#0b2b3a;--about-band-2:#115a6b;--about-band-3:#2f93a0;--about-band-4:#7ccfc9;--about-band-5:#d9f0ea;--about-stroke:#06161f;position:absolute;inset:0;width:100%;height:100%;background:#06161f}.about-art:after,.about-art:before{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(var(--theme-ink) 1px,transparent 1px),linear-gradient(90deg,var(--theme-ink) 1px,transparent 1px)}.about-art:before{background-size:20px 20px;opacity:.035}.about-art:after{background-size:100px 100px;opacity:.065}.about-tiling{position:absolute;inset:0;z-index:1;display:block;width:100%;height:100%}.about-tile{stroke:var(--about-stroke);stroke-width:.45;stroke-linejoin:round}.about-tile,.about-trace{vector-effect:non-scaling-stroke}.about-trace{fill:none;stroke:#d9f0ea;stroke-opacity:.95;stroke-width:1.3;stroke-linejoin:round;stroke-dasharray:1;pointer-events:none}.about-spotlight{position:absolute;inset:0;z-index:2;pointer-events:none;background:radial-gradient(circle 13rem at var(--spot-x,50%) var(--spot-y,50%),rgba(217,240,234,.55),transparent 72%);mix-blend-mode:soft-light;opacity:0;transition:opacity .5s ease}.about-spotlight[data-active]{opacity:1}.about-flocks{z-index:3}@keyframes about-tile-turn{0%{opacity:0;transform:rotate(-30deg) scale(.7)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:no-preference){.about-reveal .about-tile{opacity:0;transform-box:fill-box;transform-origin:center}.about-reveal[data-shown] .about-tile{animation:about-tile-turn .5s cubic-bezier(.22,1,.36,1) var(--arrive) both}.about-reveal .about-flocks{opacity:0}.about-reveal[data-shown] .about-flocks{opacity:1;transition:opacity .8s ease-out 1.9s}.about-reveal .about-copy>*{opacity:0;transform:translateY(14px)}.about-reveal[data-shown] .about-copy>*{animation:section-copy-in .7s cubic-bezier(.2,.75,.25,1) .55s forwards}.about-reveal[data-shown] .about-copy>:nth-child(2){animation-delay:.65s}.about-reveal[data-shown] .about-copy>:nth-child(3){animation-delay:.75s}.about-reveal[data-shown] .about-copy>:nth-child(4){animation-delay:.85s}.about-reveal[data-shown] .about-copy>:nth-child(n+5){animation-delay:.95s}}@keyframes section-copy-in{to{opacity:1;transform:none}}@media (prefers-reduced-motion:no-preference){.about-reveal .about-copy{opacity:0;transform:translateY(12px)}.about-reveal[data-shown] .about-copy{animation:about-panel-arrive .7s cubic-bezier(.22,1,.36,1) .2s both}}@keyframes about-panel-arrive{to{opacity:1;transform:none}}.work-panel{visibility:hidden;transition:visibility 0s linear .4s}.work-panel[data-active]{visibility:visible;transition:none}.work-panel>*{opacity:0;transition:opacity .15s ease}.work-panel[data-active]>*{opacity:1;transition:opacity .25s ease .15s}.arch-root{width:100%;container-type:inline-size}.arch{display:block;width:100%;height:auto;overflow:visible;font-family:inherit}.arch--mobile{display:none}.arch__grid{opacity:.5;pointer-events:none}.arch-grid__minor{fill:none;stroke:color-mix(in srgb,var(--theme-rule) 48%,transparent);stroke-width:.6}.arch-grid__major{fill:none;stroke:var(--theme-rule);stroke-width:1.1}.arch-edge__line{fill:none;stroke:color-mix(in srgb,var(--theme-ink) 72%,transparent);stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}.arch-edge--secondary .arch-edge__line{stroke:color-mix(in srgb,var(--theme-ink) 50%,transparent);stroke-width:1}.arch-edge--dashed .arch-edge__line{stroke:color-mix(in srgb,var(--theme-ink) 45%,transparent);stroke-width:1;stroke-dasharray:4 4}.arch-arrow{fill:color-mix(in srgb,var(--theme-ink) 72%,transparent)}.arch-edge--dashed .arch-arrow,.arch-edge--secondary .arch-arrow{fill:color-mix(in srgb,var(--theme-ink) 50%,transparent)}.arch-facet{stroke-width:.6;stroke-linejoin:round;transform-box:view-box;transition:stroke-width .25s ease}.arch-pulse{fill:none;stroke:var(--theme-ink);stroke-width:2.6;stroke-linecap:round;stroke-dasharray:.16 2;stroke-dashoffset:2;opacity:.9}.arch-shard{transform-box:fill-box;transform-origin:center;pointer-events:none}.arch-node__body{transform-box:view-box;transition:transform .25s ease}.arch-label{fill:var(--theme-muted);font-size:max(9.5px,calc(12px / var(--arch-scale, 1)));font-weight:500;letter-spacing:.08em}.arch-label__name{fill:var(--theme-ink);font-size:max(11px,calc(13px / var(--arch-scale, 1)));font-weight:600}.arch-label--edge{font-size:max(9px,calc(12px / var(--arch-scale, 1)))}.arch--mobile .arch-label__name{font-size:max(10.5px,calc(13px / var(--arch-scale, 1)))}.arch-edge,.arch-label,.arch-node{transition:opacity .2s ease}.arch .is-dim{opacity:.6}.arch .is-focus .arch-node__body{transform:scale(1.02)}.arch-edge:not(.is-dim) .arch-edge__line{transition:stroke .25s ease,stroke-width .2s ease}.arch-root[data-armed] :is(.arch-facet,.arch-label,.arch-arrow){opacity:0}.arch-root[data-armed] :is(.arch-edge__line--solid,.arch-edge__reveal){stroke-dasharray:1 1;stroke-dashoffset:1}.arch-mark{fill:none;stroke-width:1.1;stroke-linejoin:round;transform-box:view-box;transform-origin:0 0;pointer-events:none}.arch-edge.is-live .arch-edge__line{stroke:var(--theme-ink);stroke-width:1.7}.arch-node.is-live .arch-facet{stroke-width:1.8}.arch-label.is-live{fill:var(--theme-copy)}.arch-label--step{opacity:0;transition:opacity .35s ease}.arch-label--step.is-shown{opacity:1}.arch-replay{display:block;margin:.9rem 0 0 auto;padding:.25rem 0;color:var(--theme-muted);background:none;cursor:pointer;border:0;border-bottom:1px solid transparent;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;visibility:hidden;opacity:0;transition:opacity .3s ease,color .2s ease,border-color .2s ease}.arch-root[data-flowed] .arch-replay{visibility:visible;opacity:1}.arch-replay:hover{color:var(--theme-ink);border-bottom-color:var(--theme-ink)}.arch-replay:focus-visible{outline:1px solid var(--theme-ink);outline-offset:2px}@container (max-width: 899px){.arch--desktop{display:none}.arch--mobile{display:block;max-width:520px;margin-inline:auto}}@media (prefers-reduced-motion:reduce){.arch-edge,.arch-facet,.arch-label,.arch-node,.arch-node__body,.work-panel,.work-panel>*,.work-panel[data-active]>*{transition:none}.arch-label--step{opacity:1}.arch-replay{display:none}}.education__segment{--segment:var(--hero-band-3)}.education__segment--1{--segment:var(--hero-band-1)}.education__segment--2{--segment:var(--hero-band-2)}.education__segment--4{--segment:var(--hero-band-4)}.education__segment--5{--segment:var(--hero-band-5)}.education__line{background:var(--segment);border-color:var(--hero-band-3);transform-origin:left center}@keyframes education-draw{0%{transform:scaleX(0)}to{transform:none}}@media (prefers-reduced-motion:no-preference){.education-reveal :is(.education__title,.education__text){opacity:0;transform:translateY(10px)}.education-reveal .education__line{transform:scaleX(0)}.education-reveal[data-shown] .education__title{animation:section-copy-in .5s cubic-bezier(.2,.75,.25,1) forwards}.education-reveal[data-shown] .education__line{animation:education-draw var(--draw) linear var(--start) forwards}.education-reveal[data-shown] .education__text{animation:section-copy-in .45s cubic-bezier(.2,.75,.25,1) var(--start) forwards}}.experience__tiling{position:absolute;inset:0;z-index:0;display:block;width:100%;height:100%;fill:none;stroke:var(--theme-ink);stroke-width:.6;stroke-linejoin:round;vector-effect:non-scaling-stroke;opacity:.06;-webkit-mask-image:linear-gradient(180deg,transparent,#000 22%,#000 78%,transparent);mask-image:linear-gradient(180deg,transparent,#000 22%,#000 78%,transparent)}.experience{--timeline-ease:cubic-bezier(.22,1,.36,1);--timeline-1:#4f8a5e;--timeline-2:#3f8f7f;--timeline-3:#2f93a0;--timeline-4:#4f7fb8;--timeline-5:#5f6fc0;--timeline-6:#7665a7}.experience__arrow{display:none}.experience__timeline{margin:0;padding:0;list-style:none}.experience__entry{--entry-gap:clamp(2.5rem,4vw,3.5rem);display:grid;grid-template-columns:1rem minmax(0,1fr);-moz-column-gap:clamp(1rem,2vw,1.5rem);column-gap:clamp(1rem,2vw,1.5rem);padding-bottom:var(--entry-gap)}.experience__entry:last-child{padding-bottom:0}.experience__rail{position:relative;display:flex;justify-content:flex-start}.experience__rail:after,.experience__rail:before{content:"";position:absolute;left:calc(.35rem - .5px);top:1.4rem;bottom:calc(-1 * var(--entry-gap));width:1px}.experience__rail:before{background:color-mix(in srgb,var(--theme-ink) 14%,transparent)}.experience__rail:after{background:var(--ink);transform:scaleY(var(--fill,1));transform-origin:top}@media (max-width:1279px){.experience__entry:last-child .experience__rail:after,.experience__entry:last-child .experience__rail:before{display:none}}.experience__marker{position:relative;width:.7rem;height:.7rem;border-radius:50%;background:var(--ink)}.experience__entry:first-child .experience__marker{box-shadow:0 0 0 .22rem var(--theme-page),0 0 0 calc(.22rem + 1px) var(--ink)}.experience__block{position:relative}.experience__block:after{content:"";position:absolute;right:100%;top:.5rem;width:clamp(1rem,2vw,1.5rem);height:1px;transform-origin:left;background:repeating-linear-gradient(90deg,var(--theme-rule) 0 3px,transparent 3px 6px)}@media (min-width:768px) and (max-width:1279px){.experience__timeline{--overlap:5rem}.experience__entry{grid-template-columns:minmax(0,1fr) 1rem minmax(0,1fr);min-height:calc(var(--overlap) * 2 + 1rem)}.experience__entry+.experience__entry{margin-top:calc(-1 * var(--overlap))}.experience__rail{grid-row:1;grid-column:2;justify-content:center}.experience__rail:after,.experience__rail:before{left:calc(50% - .5px);bottom:calc(var(--overlap) - var(--entry-gap))}.experience__block{grid-row:1}.experience__entry:nth-child(odd) .experience__block{grid-column:1;text-align:right}.experience__entry:nth-child(odd) .experience__block ul{justify-content:flex-end}.experience__entry:nth-child(odd) .experience__block:after{right:auto;left:100%;transform-origin:right}.experience__entry:nth-child(2n) .experience__block{grid-column:3}}@media (prefers-reduced-motion:no-preference){.experience__marker{transition:opacity .2s var(--timeline-ease),transform .2s var(--timeline-ease)}.experience__block:after{transition:opacity .25s var(--timeline-ease)}.experience__block>*{transition:opacity .3s var(--timeline-ease) var(--delay,0s),transform .3s var(--timeline-ease) var(--delay,0s)}.experience__block>:nth-child(2){--delay:.04s}.experience__block>:nth-child(3),.experience__block>:nth-child(4){--delay:.07s}.experience__block>:nth-child(5){--delay:.09s}.experience__timeline[data-progress] .experience__marker{opacity:.3;transform:scale(.85)}.experience__timeline[data-progress] .experience__arrow{opacity:.3;transition:opacity .2s var(--timeline-ease)}.experience__timeline[data-progress] .experience__block:after{opacity:.3}.experience__timeline[data-progress] .experience__block>*{opacity:.3;transform:translateX(-3px)}.experience__timeline[data-progress] .experience__entry[data-on] .experience__marker{opacity:1;transform:none}.experience__timeline[data-progress] .experience__entry[data-on] .experience__arrow,.experience__timeline[data-progress] .experience__entry[data-on] .experience__block:after{opacity:1}.experience__timeline[data-progress] .experience__entry[data-on] .experience__block>*{opacity:1;transform:none}}@media (prefers-reduced-motion:no-preference) and (min-width:768px) and (max-width:1279px){.experience__timeline[data-progress] .experience__entry:nth-child(odd):not([data-on]) .experience__block>*{transform:translateX(3px)}}@media (min-width:1280px){.experience__timeline{--connector:2.5rem;display:grid;grid-template-columns:repeat(var(--count),minmax(0,1fr));grid-template-rows:1fr auto 1fr;row-gap:var(--connector);-moz-column-gap:clamp(1rem,1.8vw,2.25rem);column-gap:clamp(1rem,1.8vw,2.25rem)}.experience__entry{grid-row:1/span 3;grid-column:calc(var(--count) - var(--index));grid-template-columns:none;grid-template-rows:subgrid;padding-bottom:0}.experience__entry:nth-child(odd) .experience__block{grid-row:1;align-self:end}.experience__entry:nth-child(2n) .experience__block{grid-row:3;align-self:start}.experience__rail{grid-row:2;width:100%;height:1rem}.experience__rail:after,.experience__rail:before{left:.35rem;right:calc(-1 * clamp(1rem, 1.8vw, 2.25rem));top:calc(50% - 1px);bottom:auto;width:auto;height:2px;display:block}.experience__rail:after{transform:scaleX(var(--fill,1));transform-origin:left;background:linear-gradient(90deg,var(--ink),var(--next-ink))}.experience__entry:last-child .experience__rail:after,.experience__entry:last-child .experience__rail:before{left:calc(-1 * clamp(1.5rem, 4vw, 4rem))}.experience__entry:first-child .experience__rail:after,.experience__entry:first-child .experience__rail:before{right:0}.experience__entry:first-child .experience__rail:after{background:linear-gradient(90deg,var(--ink),var(--ink)) 0 /62% 100% no-repeat,repeating-linear-gradient(90deg,color-mix(in srgb,var(--ink) 60%,transparent) 0 .4rem,transparent .4rem .85rem) 0 /100% 100% no-repeat}.experience__block:after{left:.35rem;right:auto;top:auto;width:1px;height:var(--connector);background:repeating-linear-gradient(var(--theme-rule) 0 3px,transparent 3px 6px)}.experience__entry:nth-child(odd) .experience__block:after{top:100%;transform-origin:bottom}.experience__entry:nth-child(2n) .experience__block:after{bottom:100%;transform-origin:top}.experience__arrow{display:block;position:absolute;right:-.35rem;top:calc(50% - .25rem);width:0;height:0;border-left:.4rem solid var(--ink);border-top:.25rem solid transparent;border-bottom:.25rem solid transparent}@media (prefers-reduced-motion:no-preference){.experience__timeline[data-progress] .experience__entry:nth-child(odd) .experience__block>*{transform:translateY(3px)}.experience__timeline[data-progress] .experience__entry:nth-child(2n) .experience__block>*{transform:translateY(-3px)}.experience__timeline[data-progress] .experience__entry[data-on] .experience__block>*{transform:none}}}.two-trees{width:min(100%,92rem);margin:0 auto clamp(6rem,10vw,10rem);border:1px solid var(--theme-rule);background:var(--theme-surface);overflow:hidden}.two-trees>footer,.two-trees>header{display:flex;align-items:center;justify-content:space-between;gap:2rem;padding:1.2rem 1.4rem}.two-trees>header{border-bottom:1px solid var(--theme-rule)}.two-trees>header span{color:var(--theme-muted);font-size:.6rem;letter-spacing:.14em;text-transform:uppercase}.two-trees>header strong{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase}.two-trees__stage{position:relative;display:grid;grid-template-columns:1fr 1fr;min-height:36rem;overflow:hidden;background-image:linear-gradient(var(--theme-rule) 1px,transparent 1px),linear-gradient(90deg,var(--theme-rule) 1px,transparent 1px);background-size:24px 24px}.two-tree{position:relative;z-index:2;padding:2rem;transition:opacity .5s ease}.two-tree>p{color:var(--theme-muted);font-size:.6rem;letter-spacing:.13em;text-transform:uppercase}.two-tree svg{width:100%;height:30rem}.two-tree__edges{fill:none;stroke:var(--theme-rule);stroke-width:.3}.two-tree__node rect{fill:var(--theme-page);stroke:var(--theme-ink);stroke-width:.3}.two-tree__node text{fill:var(--theme-ink);font-family:Archivo,sans-serif;font-size:2.7px;text-anchor:middle}.two-tree--alternate{opacity:.14}.two-trees--2 .two-tree--alternate,.two-trees--3 .two-tree--alternate,.two-trees--4 .two-tree--alternate{opacity:1}.two-trees__links{position:absolute;inset:0;z-index:3;pointer-events:none}.two-trees__links i{position:absolute;left:42%;width:16%;height:1px;opacity:0;transform:scaleX(0);background:repeating-linear-gradient(90deg,var(--theme-control) 0 5px,transparent 5px 10px)}.two-trees__links i:first-child{top:25%}.two-trees__links i:nth-child(2){top:44%}.two-trees__links i:nth-child(3){top:44.5%}.two-trees__links i:nth-child(4){top:66%}.two-trees__links i:nth-child(5){top:67%}.two-trees--1 .two-trees__links i,.two-trees--2 .two-trees__links i,.two-trees--3 .two-trees__links i,.two-trees--4 .two-trees__links i{animation:alternate-link .45s ease-out forwards;animation-delay:calc(var(--i,0) * .08s)}.two-trees__links i:nth-child(2){--i:1}.two-trees__links i:nth-child(3){--i:2}.two-trees__links i:nth-child(4){--i:3}.two-trees__links i:nth-child(5){--i:4}.two-trees--4 .two-tree--current{animation:tree-swap-right .9s cubic-bezier(.7,0,.2,1) forwards}.two-trees--4 .two-tree--alternate{animation:tree-swap-left .9s cubic-bezier(.7,0,.2,1) forwards}.two-trees>footer{min-height:5rem;border-top:1px solid var(--theme-rule)}.two-trees>footer p{color:var(--theme-copy);font-size:.78rem}.two-trees>footer div{display:flex;gap:.35rem}.two-trees button{padding:.55rem .75rem;border:1px solid var(--theme-rule);font-size:.58rem;letter-spacing:.12em;text-transform:uppercase}@keyframes alternate-link{to{opacity:.85;transform:scaleX(1)}}@keyframes tree-swap-right{to{transform:translateX(100%);opacity:.28}}@keyframes tree-swap-left{to{transform:translateX(-100%);opacity:1}}@media(max-width:760px){.two-trees__stage{min-height:25rem}.two-tree{padding:1rem}.two-tree svg{height:20rem}.two-trees__links{display:none}.two-trees>footer{align-items:flex-start;flex-direction:column}}.render-viz{--viz-accent:var(--theme-control);width:min(100%,92rem);margin:0 auto clamp(5rem,10vw,10rem);border:1px solid var(--theme-rule);background:var(--theme-surface)}.render-viz__footer,.render-viz__topline{display:flex;align-items:center;justify-content:space-between;padding:1.2rem 1.4rem}.render-viz__topline{border-bottom:1px solid var(--theme-rule)}.render-viz__topline>div{display:flex;align-items:baseline;gap:1.25rem}.render-viz__count,.render-viz__topline span{color:var(--theme-muted);font-size:.6rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase}.render-viz__topline strong{font-size:.72rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase}.render-viz__stage{position:relative;display:grid;grid-template-columns:1fr 4rem 1fr;min-height:34rem;background-image:linear-gradient(var(--theme-rule) 1px,transparent 1px),linear-gradient(90deg,var(--theme-rule) 1px,transparent 1px);background-size:24px 24px;overflow:hidden}.fiber-tree{position:relative;display:flex;padding:2rem;flex-direction:column;justify-content:center;opacity:.16;transition:opacity .45s ease,transform .65s cubic-bezier(.2,.75,.25,1)}.fiber-tree--work{transform:translateX(1.5rem)}.fiber-tree.is-visible{opacity:1;transform:translateX(0)}.fiber-tree__label{display:flex;gap:.7rem;align-items:center;color:var(--theme-muted);font-size:.62rem;font-weight:500;letter-spacing:.13em;text-transform:uppercase}.fiber-tree__label span{display:grid;width:1.4rem;height:1.4rem;place-items:center;border:1px solid var(--theme-rule);color:var(--theme-ink)}.fiber-tree svg{display:block;width:100%;max-height:25rem;margin-top:1rem;overflow:visible}.fiber-tree__edges path{fill:none;stroke:var(--theme-rule);stroke-width:1;vector-effect:non-scaling-stroke}.fiber-node rect{fill:var(--theme-page);stroke:var(--theme-ink);stroke-width:1;vector-effect:non-scaling-stroke}.fiber-node text{fill:var(--theme-ink);font-family:Archivo,sans-serif;font-size:10px;text-anchor:middle}.fiber-node circle{fill:var(--viz-accent)}.render-viz--phase-1 .fiber-tree--current .fiber-node--counter rect{animation:fiber-scheduled 1s cubic-bezier(.2,.75,.25,1) infinite}.render-viz--phase-1 .fiber-tree--current .fiber-node--app rect,.render-viz--phase-1 .fiber-tree--current .fiber-node--main rect{stroke:var(--viz-accent)}.fiber-tree--work .fiber-node{opacity:0;transform-box:fill-box;transform-origin:center}.render-viz--phase-2 .fiber-tree--work .fiber-node,.render-viz--phase-3 .fiber-tree--work .fiber-node,.render-viz--phase-4 .fiber-tree--work .fiber-node{animation:fiber-clone .35s ease-out forwards;animation-delay:calc(var(--node-index) * 95ms)}.render-viz--phase-2 .fiber-node.is-skipped,.render-viz--phase-3 .fiber-node.is-skipped{opacity:.22!important}.fiber-node.is-changed rect{fill:var(--viz-accent);stroke:var(--viz-accent)}.fiber-node.is-changed text{fill:var(--theme-control-ink)}.fiber-tree__cursor{fill:var(--viz-accent);opacity:0}.render-viz--phase-2 .fiber-tree__cursor{animation:fiber-cursor 1.2s cubic-bezier(.45,0,.2,1) infinite}.render-viz__exchange{display:grid;place-content:center;gap:.65rem;border-inline:1px solid var(--theme-rule);color:var(--theme-muted)}.render-viz__exchange span{font-size:.5rem;letter-spacing:.12em;text-transform:uppercase;writing-mode:vertical-rl}.render-viz__exchange i{display:block;width:1px;height:3rem;margin:auto;background:var(--theme-muted)}.render-viz__commit-sweep{position:absolute;inset:0;z-index:4;pointer-events:none;background:var(--viz-accent);transform:translateX(-101%);mix-blend-mode:difference;opacity:.12}.render-viz--phase-4 .render-viz__commit-sweep{animation:commit-sweep .75s cubic-bezier(.7,0,.2,1) both}.render-viz__footer{gap:2rem;min-height:5rem;border-top:1px solid var(--theme-rule)}.render-viz__footer p{max-width:46rem;color:var(--theme-copy);font-size:.78rem;line-height:1.5}.render-viz__controls{display:flex;gap:.35rem}.render-viz__controls button{padding:.55rem .75rem;border:1px solid var(--theme-rule);color:var(--theme-ink);font-size:.58rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;transition:background .2s ease,color .2s ease}.render-viz__controls button:hover{color:var(--theme-control-ink);background:var(--theme-control)}@keyframes fiber-clone{0%{opacity:0;transform:scale(.75)}to{opacity:1;transform:scale(1)}}@keyframes fiber-scheduled{0%,to{stroke-width:1}50%{fill:var(--theme-surface);stroke:var(--viz-accent);stroke-width:3}}@keyframes fiber-cursor{0%{transform:translate(0);opacity:1}35%{transform:translate(-78px,94px);opacity:1}68%{transform:translate(78px,188px);opacity:1}to{transform:translate(40px,94px);opacity:1}}@keyframes commit-sweep{50%{transform:translateX(0)}to{transform:translateX(101%)}}@media (max-width:760px){.render-viz__stage{grid-template-columns:1fr}.fiber-tree{padding:1.25rem}.fiber-tree--current,.render-viz__exchange{display:none}.render-viz__footer{align-items:flex-start;flex-direction:column}}@media (prefers-reduced-motion:reduce){.fiber-tree,.render-viz__controls button{transition:none}.render-viz .fiber-node,.render-viz .fiber-tree__cursor,.render-viz__commit-sweep{animation:none!important}.render-viz--phase-2 .fiber-tree--work .fiber-node,.render-viz--phase-3 .fiber-tree--work .fiber-node,.render-viz--phase-4 .fiber-tree--work .fiber-node{opacity:1;transform:none}}.simple-hero [data-enter]{opacity:0}.simple-hero[data-shown] [data-enter=rise]{animation:landing-copy-in .6s cubic-bezier(.22,1,.36,1) var(--enter-delay) both}.simple-hero [data-enter=rule]{transform-origin:left center}.simple-hero[data-shown] [data-enter=rule]{animation:landing-rule-in .55s cubic-bezier(.22,1,.36,1) var(--enter-delay) both}.simple-hero[data-shown] [data-enter=fade]{animation:hero-boids-reveal .45s ease-out var(--enter-delay) both}@keyframes hero-boids-reveal{to{opacity:1}}@keyframes landing-copy-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes landing-rule-in{0%{opacity:0;transform:scaleX(.35)}to{opacity:1;transform:scaleX(1)}}@media (prefers-reduced-motion:reduce){.simple-hero [data-enter],.simple-hero[data-shown] .boids-controls{animation:none;opacity:1;transform:none}}.about-site{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s cubic-bezier(.22,1,.36,1)}.about-site[data-open]{grid-template-rows:1fr;transition:none}@keyframes about-site-in{0%{opacity:0;transform:translateY(24px)}}.about-site[data-open] .about-site__inner{animation:about-site-in .7s cubic-bezier(.22,1,.36,1) .1s both}.about-site:not([data-open]) .about-site__inner{visibility:hidden;transition:visibility 0s linear .45s}@media (prefers-reduced-motion:reduce){.about-site,.about-site:not([data-open]) .about-site__inner{transition:none}.about-site[data-open] .about-site__inner{animation:none}}:root{--penrose-zoom:1.5}@media (max-width:767px){:root{--penrose-zoom:1}}.about-site__visual img,.about-tiling,.hero-tiling,svg.contact-study-image{transform:scale(var(--penrose-zoom));transform-origin:center}.after\:ml-1:after{content:var(--tw-content);margin-left:.25rem}.after\:ml-1\.5:after{content:var(--tw-content);margin-left:.375rem}.after\:h-px:after{content:var(--tw-content);height:1px}.after\:w-12:after{content:var(--tw-content);width:3rem}.after\:w-8:after{content:var(--tw-content);width:2rem}.after\:bg-current:after{content:var(--tw-content);background-color:currentColor}.after\:text-rule:after{content:var(--tw-content);color:var(--theme-rule)}.after\:opacity-60:after{content:var(--tw-content);opacity:.6}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.after\:content-\[\'\B7\'\]:after{--tw-content:"·";content:var(--tw-content)}.last\:after\:content-none:last-child:after{--tw-content:none;content:var(--tw-content)}.hover\:border-ink:hover{border-color:var(--theme-ink)}.hover\:bg-copy:hover{background-color:var(--theme-copy)}.hover\:bg-surface:hover{background-color:var(--theme-surface)}.hover\:text-copy:hover{color:var(--theme-copy)}.hover\:text-ink:hover{color:var(--theme-ink)}.hover\:text-muted:hover{color:var(--theme-muted)}.focus\:not-sr-only:focus{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.focus\:fixed:focus{position:fixed}.focus\:left-4:focus{left:1rem}.focus\:top-4:focus{top:1rem}.focus\:z-\[999\]:focus{z-index:999}.focus\:bg-page:focus{background-color:var(--theme-page)}.focus\:px-4:focus{padding-left:1rem;padding-right:1rem}.focus\:py-3:focus{padding-top:.75rem;padding-bottom:.75rem}.focus\:text-ink:focus{color:var(--theme-ink)}.focus-visible\:text-copy:focus-visible{color:var(--theme-copy)}.focus-visible\:text-ink:focus-visible{color:var(--theme-ink)}.group:hover .group-hover\:scale-\[1\.035\]{--tw-scale-x:1.035;--tw-scale-y:1.035;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:underline{text-decoration-line:underline}.aria-checked\:outline[aria-checked=true]{outline-style:solid}.aria-checked\:outline-2[aria-checked=true]{outline-width:2px}.aria-checked\:outline-offset-2[aria-checked=true]{outline-offset:2px}.aria-checked\:outline-ink[aria-checked=true]{outline-color:var(--theme-ink)}.aria-pressed\:hover\:text-ink:hover[aria-pressed=true],.aria-pressed\:text-ink[aria-pressed=true]{color:var(--theme-ink)}.aria-selected\:border-ink[aria-selected=true]{border-color:var(--theme-ink)}.aria-selected\:text-ink[aria-selected=true]{color:var(--theme-ink)}.aria-selected\:shadow-\[inset_0_-1px_0_var\(--theme-ink\)\][aria-selected=true]{--tw-shadow:inset 0 -1px 0 var(--theme-ink);--tw-shadow-colored:inset 0 -1px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}@media (prefers-reduced-motion:no-preference){.group:hover .motion-safe\:group-hover\:-translate-y-0{--tw-translate-y:-0px}.group:hover .motion-safe\:group-hover\:-translate-y-0,.group:hover .motion-safe\:group-hover\:-translate-y-0\.5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .motion-safe\:group-hover\:-translate-y-0\.5{--tw-translate-y:-0.125rem}.group:hover .motion-safe\:group-hover\:translate-x-0{--tw-translate-x:0px}.group:hover .motion-safe\:group-hover\:translate-x-0,.group:hover .motion-safe\:group-hover\:translate-x-0\.5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .motion-safe\:group-hover\:translate-x-0\.5{--tw-translate-x:0.125rem}.group:hover .motion-safe\:group-hover\:translate-y-1{--tw-translate-y:0.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:focus-visible .motion-safe\:group-focus-visible\:-translate-y-0{--tw-translate-y:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:focus-visible .motion-safe\:group-focus-visible\:-translate-y-0\.5{--tw-translate-y:-0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:focus-visible .motion-safe\:group-focus-visible\:translate-x-0{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:focus-visible .motion-safe\:group-focus-visible\:translate-x-0\.5{--tw-translate-x:0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:focus-visible .motion-safe\:group-focus-visible\:translate-y-1{--tw-translate-y:0.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}@media (prefers-reduced-motion:reduce){.motion-reduce\:transition-none{transition-property:none}}@media (min-width:640px){.sm\:mt-0{margin-top:0}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.sm\:border-l{border-left-width:1px}.sm\:border-t-0{border-top-width:0}.sm\:pr-20{padding-right:5rem}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:absolute{position:absolute}.md\:inset-y-0{top:0;bottom:0}.md\:left-hero{left:var(--space-hero-inline)}.md\:right-section-inline{right:var(--space-section-inline)}.md\:order-1{order:1}.md\:order-2{order:2}.md\:order-none{order:0}.md\:col-span-2{grid-column:span 2/span 2}.md\:mx-0{margin-left:0;margin-right:0}.md\:mb-0{margin-bottom:0}.md\:mt-0{margin-top:0}.md\:mt-12{margin-top:3rem}.md\:flex{display:flex}.md\:grid{display:grid}.md\:min-h-section{min-height:100svh}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-col{flex-direction:column}.md\:items-center{align-items:center}.md\:border-y-0{border-top-width:0}.md\:border-b-0,.md\:border-y-0{border-bottom-width:0}.md\:border-l{border-left-width:1px}.md\:border-r{border-right-width:1px}.md\:border-t-0{border-top-width:0}.md\:p-0{padding:0}.md\:px-0{padding-left:0;padding-right:0}.md\:px-section-inline{padding-left:var(--space-section-inline);padding-right:var(--space-section-inline)}.md\:py-section-block{padding-top:var(--space-section-block);padding-bottom:var(--space-section-block)}.md\:pt-10{padding-top:2.5rem}}@media (min-width:1024px){.lg\:sticky{position:sticky}.lg\:top-20{top:5rem}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:max-w-lg{max-width:32rem}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:border-l{border-left-width:1px}.lg\:border-r{border-right-width:1px}.lg\:border-t-0{border-top-width:0}.lg\:border-rule{border-color:var(--theme-rule)}}@media (min-width:1280px){.xl\:grid{display:grid}.xl\:min-h-section{min-height:100svh}.xl\:content-center{align-content:center}}.\[\&\+\&\]\:before\:absolute+.\[\&\+\&\]\:before\:absolute:before:before{content:var(--tw-content);position:absolute}.\[\&\+\&\]\:before\:-top-6+.\[\&\+\&\]\:before\:-top-6:before:before{content:var(--tw-content);top:-1.5rem}.\[\&\+\&\]\:before\:left-3+.\[\&\+\&\]\:before\:left-3:before:before{content:var(--tw-content);left:.75rem}.\[\&\+\&\]\:before\:text-muted+.\[\&\+\&\]\:before\:text-muted:before:before{content:var(--tw-content);color:var(--theme-muted)}.\[\&\+\&\]\:before\:content-\[\'\2193\'\]+.\[\&\+\&\]\:before\:content-\[\'\2193\'\]:before:before{--tw-content:"↓";content:var(--tw-content)}.\[\&_a\:hover\]\:underline a:hover{text-decoration-line:underline}.\[\&_a\]\:text-ink a{color:var(--theme-ink)}.\[\&_a\]\:underline-offset-4 a{text-underline-offset:4px}:root{--font-sans:"Archivo","Helvetica Neue",Helvetica,Arial,sans-serif;--type-display:clamp(3.5rem,7.5vw,7rem);--type-section:clamp(2.5rem,4.5vw,4rem);--type-title:clamp(1.5rem,2.25vw,2rem);--type-lead:clamp(1.25rem,1.7vw,1.5rem);--type-body:clamp(1rem,1.1vw,1.125rem);--type-small:.875rem;--type-label:.75rem;--leading-display:.98;--leading-heading:1.1;--leading-title:1.2;--leading-ui:1.5;--leading-body:1.65;--tracking-heading:-.035em;--tracking-title:-.025em;--tracking-lead:-.01em;--tracking-label:.08em}@media (max-width:767px){:root{--type-display:clamp(4rem,22vw,5.5rem)}}body{font-family:var(--font-sans);font-size:var(--type-body);line-height:var(--leading-body)}button,input,select,textarea{font-family:inherit}