@import "https://use.typekit.net/iyf5qnt.css";
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-serif:ui-serif,Georgia,Cambria,"Times New Roman",Times,serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:#fef2f2;--color-red-200:#ffcaca;--color-red-400:#ff6568;--color-red-600:#e40014;--color-red-800:#9f0712;--color-red-900:#82181a;--color-gray-50:#f9fafb;--color-gray-400:#99a1af;--color-gray-500:#6a7282;--color-gray-900:#101828;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-thin:100;--font-weight-extralight:200;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--leading-tight:1.25;--leading-relaxed:1.625;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}@supports (color:lab(0% 0 0)){:root,:host{--color-red-50:lab(96.5005% 4.18508 1.52328);--color-red-200:lab(86.017% 19.8815 7.75869);--color-red-400:lab(63.7053% 60.745 31.3109);--color-red-600:lab(48.4493% 77.4328 61.5452);--color-red-800:lab(33.7174% 55.8993 41.0293);--color-red-900:lab(28.5139% 44.5539 29.0463);--color-gray-50:lab(98.2596% -.247031 -.706708);--color-gray-400:lab(65.9269% -.832707 -8.17473);--color-gray-500:lab(47.7841% -.393182 -10.0268);--color-gray-900:lab(8.11897% .811279 -12.254)}}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.top-4{top:calc(var(--spacing)*4)}.right-1\/2{right:50%}.right-4{right:calc(var(--spacing)*4)}.-left-4{left:calc(var(--spacing)*-4)}.left-1\/2{left:50%}.z-10{z-index:10}.z-\[100\]{z-index:100}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-mx-\[50vw\]{margin-inline:-50vw}.my-8{margin-block:calc(var(--spacing)*8)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-6{margin-top:calc(var(--spacing)*6)}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-7{margin-bottom:calc(var(--spacing)*7)}.mb-10{margin-bottom:calc(var(--spacing)*10)}.mb-12{margin-bottom:calc(var(--spacing)*12)}.mb-\[1\.75\]{margin-bottom:1.75px}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-3{margin-left:calc(var(--spacing)*3)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-auto{height:auto}.max-h-\[85vh\]{max-height:85vh}.max-h-full{max-height:100%}.w-auto{width:auto}.w-full{width:100%}.w-screen{width:100vw}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\[90vw\]{max-width:90vw}.max-w-\[600px\]{max-width:600px}.max-w-full{max-width:100%}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*5)*calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{-moz-column-gap:calc(var(--spacing)*3);column-gap:calc(var(--spacing)*3)}.gap-y-1{row-gap:calc(var(--spacing)*1)}.self-start{align-self:flex-start}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-current{border-color:currentColor}.border-red-200{border-color:var(--color-red-200)}.bg-black\/90{background-color:#000000e6}@supports (color:color-mix(in lab, red, red)){.bg-black\/90{background-color:color-mix(in oklab,var(--color-black)90%,transparent)}}.bg-gray-50{background-color:var(--color-gray-50)}.bg-red-50{background-color:var(--color-red-50)}.object-contain{-o-object-fit:contain;object-fit:contain}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-10{padding:calc(var(--spacing)*10)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-4{padding-block:calc(var(--spacing)*4)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-16{padding-top:calc(var(--spacing)*16)}.pr-3{padding-right:calc(var(--spacing)*3)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-8{padding-bottom:calc(var(--spacing)*8)}.pl-0{padding-left:calc(var(--spacing)*0)}.text-center{text-align:center}.text-justify{text-align:justify}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extralight{--tw-font-weight:var(--font-weight-extralight);font-weight:var(--font-weight-extralight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.font-thin{--tw-font-weight:var(--font-weight-thin);font-weight:var(--font-weight-thin)}.tracking-\[0\.07em\]{--tw-tracking:.07em;letter-spacing:.07em}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-nowrap{text-wrap:nowrap}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.text-gray-400{color:var(--color-gray-400)}.text-red-600{color:var(--color-red-600)}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab, red, red)){.text-white\/80{color:color-mix(in oklab,var(--color-white)80%,transparent)}}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.decoration-\[0\.1rem\]{text-decoration-thickness:.1rem}.underline-offset-6{text-underline-offset:6px}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-65{opacity:.65}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-90{opacity:.9}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.grayscale{--tw-grayscale:grayscale(100%);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,)}.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,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-100:hover{opacity:1}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-white\/50:focus{--tw-ring-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.focus\:ring-white\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-white)50%,transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}@media (min-width:48rem){.md\:-mx-10{margin-inline:calc(var(--spacing)*-10)}}@media (prefers-color-scheme:dark){.dark\:border-red-800{border-color:var(--color-red-800)}.dark\:bg-gray-900\/20{background-color:#10182833}@supports (color:color-mix(in lab, red, red)){.dark\:bg-gray-900\/20{background-color:color-mix(in oklab,var(--color-gray-900)20%,transparent)}}.dark\:bg-red-900\/20{background-color:#82181a33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-900\/20{background-color:color-mix(in oklab,var(--color-red-900)20%,transparent)}}.dark\:text-gray-500{color:var(--color-gray-500)}.dark\:text-red-400{color:var(--color-red-400)}.dark\:opacity-65{opacity:.65}.dark\:opacity-70{opacity:.7}}}:root{--foreground-rgb:0,0,0;--background-start-rgb:252,250,246;--background-end-rgb:255,255,255;--font-serif:"source-serif-pro","Iowan Old Style","Palatino Linotype",Palatino,serif;--font-sans:"ibm-plex-sans",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;--font-mono:"source-code-pro",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--text-leading:1.75}@media (prefers-color-scheme:dark){:root{--foreground-rgb:245,245,245;--background-start-rgb:0,0,0;--background-end-rgb:0,0,0}}html{text-rendering:geometricPrecision;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scrollbar-gutter:stable}body{color:rgb(var(--foreground-rgb));font-family:var(--font-serif);font-optical-sizing:auto;background:linear-gradient(to bottom,transparent,rgb(var(--background-end-rgb)))rgb(var(--background-start-rgb));-moz-text-size-adjust:100%;text-size-adjust:100%;font-synthesis:none;font-size:1.25rem;font-weight:350;line-height:var(--text-leading)}p{line-height:var(--text-leading)}.app-page p.mb-4{margin-top:0!important;margin-bottom:1rem!important;font-size:1.25rem!important;line-height:1.75!important}.app-page p.mb-10{margin-top:0!important;margin-bottom:2.5rem!important;font-size:1.25rem!important;line-height:1.75!important}h1,h2,h3,h4,h5,h6{line-height:1.2}h2.font-mono{-moz-text-size-adjust:100%;text-size-adjust:100%;min-height:1.125rem;margin-top:0;margin-bottom:3rem;padding-top:0;line-height:1.5}.body-text{font-family:var(--font-serif);font-size:1.25rem;font-weight:350;line-height:var(--text-leading);-moz-text-size-adjust:100%;text-size-adjust:100%}.cv-title{font-weight:350}.works-subtitle{font-family:var(--font-serif);color:#0009;font-style:normal;font-weight:350;line-height:var(--text-leading);-moz-text-size-adjust:100%;text-size-adjust:100%}@media (prefers-color-scheme:dark){.works-subtitle{color:#fff9}}.works-title{font-weight:450}.works-item{margin-bottom:1.25rem!important;padding:.75rem .75rem .75rem 0!important}.works-item>div.flex.items-baseline{margin-bottom:.5rem!important}.works-item>div.pt-2{margin-bottom:1.25rem!important;padding-top:.5rem!important;line-height:1.75!important}.works-item>div.pt-2 p{margin-top:0!important;margin-bottom:0!important;line-height:1.75!important}.works-item>div.w-full.mb-6{margin-bottom:1.5rem!important}.works-item h2.text-xl{margin-bottom:.5rem!important;font-size:1.25rem!important;line-height:1.2!important}.works-item .works-subtitle{margin-top:0!important;margin-bottom:0!important;font-size:1.125rem!important;line-height:1.75!important}h2.text-xl.font-sans{font-size:1.25rem!important;line-height:1.2!important;font-family:var(--font-sans)!important}.works-section>:last-child .works-divider{display:none}.works-section-collapsed{clip:rect(0,0,0,0);white-space:nowrap;visibility:hidden;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.works-section:not(.works-section-collapsed){width:auto;height:auto;padding:inherit;margin:inherit;clip:auto;white-space:normal;visibility:visible;position:static;overflow:visible}.tiny-text{font-size:.25rem;line-height:120%;font-family:var(--font-mono);font-variant-ligatures:none;letter-spacing:0}.player-wrapper{padding-top:56.25%;position:relative;overflow:hidden}.react-player{position:absolute;top:0;left:0;width:100%!important;height:100%!important}.prose{line-height:var(--text-leading)!important;font-family:var(--font-serif)!important;font-weight:350!important}.prose img{width:100%;max-width:100%;height:auto;display:block}.prose .doc-figure{cursor:pointer;margin:1.2em auto 1.6em}.prose .doc-figure img{margin:0}.prose .doc-figure figcaption{text-align:center;font-family:var(--font-mono);letter-spacing:.02em;opacity:.62;margin-top:.5em;margin-bottom:0;font-size:.78em;font-style:normal;display:block}.prose h1,.prose h2,.prose h3{font-family:var(--font-sans)!important;letter-spacing:.025em!important}.prose h1{font-size:2.25em!important;font-weight:550!important;line-height:1.11111!important;font-family:var(--font-sans)!important;margin-top:0!important;margin-bottom:.888889em!important}.prose h2{text-transform:uppercase!important;letter-spacing:.04em!important;opacity:.8!important;font-size:1.35em!important;font-weight:550!important;line-height:1.33333!important;font-family:var(--font-sans)!important;margin-top:3.5rem!important;margin-bottom:.875rem!important}.prose h2:first-of-type{margin-top:0!important}.prose h2:first-of-type+*+h2,.prose h2:nth-of-type(2){margin-top:5rem!important;margin-bottom:.75rem!important}.prose h3{font-size:1.25em!important;font-weight:550!important;line-height:1.6!important;font-family:var(--font-sans)!important;margin-top:1.6em!important;margin-bottom:.6em!important}.prose p{font-style:normal!important;font-weight:350!important;line-height:1.5!important;font-family:var(--font-serif)!important;margin-top:1rem!important;margin-bottom:.6rem!important}.prose h2:first-of-type+p{opacity:.92!important;max-width:93%!important;margin-bottom:.5rem!important;line-height:1.425!important}.prose h2:first-of-type+p:first-line{opacity:1!important;font-weight:375!important}.prose p.intro-italic{opacity:.7!important;width:92.5%!important;max-width:92.5%!important;font-size:.9em!important;line-height:var(--text-leading)!important;font-style:italic!important;font-family:var(--font-serif)!important;letter-spacing:.01em!important;margin-bottom:1.5em!important}.prose h2+p:has(>em:only-child){opacity:.7!important;width:92.5%!important;max-width:92.5%!important;font-size:.9em!important;line-height:var(--text-leading)!important;font-style:italic!important;font-family:var(--font-serif)!important;letter-spacing:.01em!important;margin-bottom:1.5em!important}.prose p em{display:inline}.prose a{color:inherit;text-underline-offset:.18em;font-weight:500;text-decoration:underline;text-decoration-thickness:1px}.prose strong{font-weight:650}.prose h2+p strong:last-of-type,.prose blockquote strong:only-child{opacity:.6!important;border-left:2px solid!important;margin-top:1.5em!important;margin-bottom:1.5em!important;padding-left:1em!important;font-weight:400!important;line-height:1.75!important;display:block!important}.prose em{font-style:italic!important;line-height:inherit!important;font-size:inherit!important;font-family:var(--font-serif)!important;letter-spacing:.01em!important;font-weight:inherit!important}.prose ul,.prose ol{margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose ul{list-style-type:disc}.prose h2:has(+ul)+ul{font-size:.95em;list-style-type:circle}.prose h2:has(+ul)+ul li{margin-top:.75em;margin-bottom:.75em;line-height:1.8}.prose ol{list-style-type:decimal}.prose li{margin-top:.5em;margin-bottom:.5em}.prose code{font-family:var(--font-mono);font-variant-ligatures:none;background-color:#0000000f;border-radius:.25rem;padding:.14em .32em;font-size:.9em;font-weight:550}@media (prefers-color-scheme:dark){.prose code{background-color:#ffffff14}}.prose pre{background-color:#0000000f;border-radius:.5rem;margin-top:1.71429em;margin-bottom:1.71429em;padding:1em;overflow-x:auto}@media (prefers-color-scheme:dark){.prose pre{background-color:#ffffff14}}.prose pre code{font-weight:450;font-size:inherit;background-color:#0000;padding:0}.prose blockquote{font-style:italic!important;line-height:var(--text-leading)!important;font-family:var(--font-serif)!important;letter-spacing:.01em!important;border-left:.25em solid #0000002e!important;margin-top:1.6em!important;margin-bottom:1.6em!important;padding-left:1em!important}@media (prefers-color-scheme:dark){.prose blockquote{border-left-color:#ffffff2e}}.prose hr{display:none}.prose h2:first-of-type~hr:first-of-type{text-align:center;background:0 0;border:none;height:auto;margin:1.5em auto .75em;display:block}.prose h2:first-of-type~hr:first-of-type:before{content:"* * *";font-family:var(--font-mono);opacity:.2;font-size:1em;line-height:1;display:inline-block}.header-ascii{font-size:clamp(.72rem,4vw,1.5rem)!important;line-height:1.2!important;font-family:var(--font-mono)!important;font-variant-ligatures:none!important;letter-spacing:0!important;white-space:pre!important;margin:0!important;padding:0!important;font-weight:400!important}pre.header-ascii{font-size:clamp(.72rem,4vw,1.5rem)!important;line-height:1.2!important;font-family:var(--font-mono)!important;margin:0!important;padding:0!important}.header-ascii+div{font-size:.75rem!important;line-height:1.5!important;font-family:var(--font-mono)!important;margin:0!important;padding-top:.75rem!important}.header-nav h2{font-size:clamp(1.05rem,4.4vw,1.5rem);font-weight:400;line-height:1.2;font-family:var(--font-sans);letter-spacing:.04em}@media (max-width:480px){.header-nav .nav-caret{font-size:.9rem!important;line-height:1!important}.header-nav .nav-caret-top{top:-.62rem!important}.header-nav .nav-caret-bottom{bottom:-.95rem!important}}.header-ascii+div{font-size:.75rem;line-height:1.5}h2.text-3xl{font-size:1.875rem!important;font-weight:700!important;line-height:1.2!important;font-family:var(--font-serif)!important}article h2.text-3xl{font-size:1.875rem!important;font-weight:700!important;line-height:1.2!important;font-family:var(--font-serif)!important;margin-top:0!important;margin-bottom:.5rem!important}p.text-xl,p.text-gray-600{line-height:var(--text-leading);margin-bottom:.5rem}article p{line-height:var(--text-leading);margin-top:0;margin-bottom:.5rem}time{font-size:.875rem;line-height:1.5}article header h1.text-5xl{margin-bottom:1rem;font-size:3rem;font-weight:700;line-height:1.2}article header p.text-2xl{font-size:1.5rem!important;line-height:var(--text-leading)!important;font-style:italic!important;font-family:var(--font-serif)!important;letter-spacing:.01em!important;margin-bottom:.125rem!important}article header time.text-sm{margin-bottom:0;font-size:.875rem;line-height:1.5}.prose{line-height:1.5}.prose h1{margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:550;line-height:1.11111}.prose h2{margin-top:3.5rem;margin-bottom:.875rem;font-size:1.35em;font-weight:550;line-height:1.33333}.prose h3{margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:550;line-height:1.6}.prose p{font-weight:350;line-height:1.5;font-size:inherit;margin-top:1rem;margin-bottom:.6rem}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--paper:#f7f6f1;--ink:#000;--ink-2:#2e2e2b;--muted:#65655f;--rule:#000;--rule-soft:#d5d4cc;--font-display:var(--font-mono);--tile:#ecebe4;--dither:#000;--link:#00e;--visited:#551a8b;--portfolio-muted:var(--muted);--portfolio-line:var(--rule-soft);--diagram-background:var(--paper);--diagram-surface:var(--tile);--diagram-ink:var(--ink);--diagram-accent:#3b3b37}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--paper:#000;--ink:#f3f2ec;--ink-2:#d2d1ca;--muted:#9b9a93;--rule:#f3f2ec;--rule-soft:#2c2c2a;--tile:#101010;--dither:#8a8983;--link:#9a9aff;--visited:#c9a2ff;--diagram-accent:#c4c3bb}}body{background:var(--paper);color:var(--ink);font:400 18px/1.6 var(--font-serif);margin:0}*{box-sizing:border-box}::selection{background:var(--link);color:var(--paper)}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--link);outline-offset:4px}button,a{touch-action:manipulation}.portfolio-shell{width:min(1160px,100%);margin:0 auto;padding:0 48px}.portfolio-header{font-family:var(--font-mono);justify-content:space-between;align-items:flex-end;gap:24px 40px;padding:36px 0 26px;display:flex;position:relative}.portfolio-header:after,.portfolio-section-heading:before,.portfolio-footer:before{content:"";background:radial-gradient(circle,var(--dither).75px,transparent 1px)0 0/3px 3px;opacity:.55;height:5px;position:absolute;left:0;right:0}.portfolio-header:after{bottom:0}.portfolio-brand{color:var(--ink);flex-direction:column;flex-shrink:0;gap:10px;display:flex}.portfolio-brand pre{font:400 7.5px/1.02 var(--font-mono);letter-spacing:0;margin:0}.portfolio-brand span{font:400 12px/1.4 var(--font-mono);letter-spacing:.14em;text-transform:lowercase;color:var(--muted)}.portfolio-brand:hover span{color:var(--ink)}.portfolio-header nav{font:400 17px/1.5 var(--font-mono);flex-wrap:wrap;gap:4px 26px;display:flex}.portfolio-header nav a{min-height:40px;color:var(--ink);text-transform:lowercase;align-items:center;display:inline-flex;position:relative}.portfolio-header nav a:hover{color:var(--link);text-underline-offset:5px;text-decoration:underline}.portfolio-header nav a[aria-current]:before,.portfolio-header nav a[aria-current]:after{color:var(--muted);font-size:11px;line-height:1;position:absolute;left:50%;transform:translate(-50%)}.portfolio-header nav a[aria-current]:before{content:"v";top:-5px}.portfolio-header nav a[aria-current]:after{content:"^";bottom:-5px}.portfolio-skip{z-index:100;background:var(--ink);color:var(--paper);font:13px/1.5 var(--font-mono);padding:8px 14px;position:fixed;top:-100px;left:20px}.portfolio-skip:focus{top:12px}.portfolio-preview{color:var(--paper);background:var(--ink);font:11px/1.5 var(--font-mono);justify-content:space-between;align-items:center;gap:16px;padding:7px max(24px,50vw - 532px);display:flex}.portfolio-preview a{white-space:nowrap;text-underline-offset:3px;text-decoration:underline}#main:focus{outline:none}.portfolio-prose a,.portfolio-back,.portfolio-edit,.portfolio-source,.portfolio-project-link a,.portfolio-related a,.portfolio-section-heading a,.portfolio-cv-controls :is(a,button),.portfolio-footer a:hover{color:var(--link)}.portfolio-prose a:visited,.portfolio-related a:visited{color:var(--visited)}.portfolio-caption,.portfolio-meta{font:400 13px/1.6 var(--font-mono);color:var(--muted);font-variant-numeric:tabular-nums;margin:0}.portfolio-edit{font:12px/1.5 var(--font-mono);text-underline-offset:3px;margin:12px 0;text-decoration:underline;display:inline-block}.portfolio-opening{max-width:800px;margin:32px 0 24px}.portfolio-opening .portfolio-prose{font:400 clamp(22px,3vw,34px)/1.25 var(--font-display);letter-spacing:-.035em}.portfolio-card-role{color:var(--ink-2);margin:8px 0;font-size:13px;line-height:1.5}.portfolio-intro{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:40px 64px;margin:64px 0 32px;padding:56px 0 24px;display:grid;position:relative}.portfolio-intro:before{content:"";background:radial-gradient(circle,var(--dither).75px,transparent 1px)0 0/3px 3px;opacity:.55;height:5px;position:absolute;top:0;left:0;right:0}.portfolio-intro-text{max-width:680px}.portfolio-home>.portfolio-section:first-of-type{margin-top:34px;margin-bottom:0}.portfolio-home>.portfolio-section:first-of-type>.portfolio-section-heading{padding-top:0}.portfolio-home>.portfolio-section:first-of-type>.portfolio-section-heading:before{display:none}.portfolio-intro .portfolio-prose{color:var(--ink-2);text-wrap:pretty;font-size:20px;line-height:1.55}.portfolio-intro .portfolio-prose p{margin:0 0 .8em}.portfolio-intro-text>.portfolio-prose:first-child>p:first-child{font:400 clamp(22px,2.4vw,30px)/1.25 var(--font-display);letter-spacing:-.045em;color:var(--ink);margin-bottom:.9em}.portfolio-statue{font:400 4.4px/1 var(--font-mono);letter-spacing:0;color:var(--ink);opacity:.8;-webkit-user-select:none;user-select:none;margin:0}.portfolio-section{margin:34px 0 88px}.portfolio-section-heading{font:400 13px/1.5 var(--font-mono);justify-content:space-between;align-items:baseline;gap:20px;margin:0 0 26px;padding-top:26px;display:flex;position:relative}.portfolio-section-heading:before{top:0}.portfolio-section-heading h2,.portfolio-section-title{font:400 12px/1.5 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink);margin:0 0 22px}.portfolio-section-heading h2:before,.portfolio-section-title:before{content:"[ ";color:var(--muted)}.portfolio-section-heading h2:after,.portfolio-section-title:after{content:" ]";color:var(--muted)}.portfolio-section-heading h2{margin:0}.portfolio-section-heading a{text-underline-offset:4px;text-decoration:underline}.portfolio-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:48px 32px;display:grid}.portfolio-grid-three{grid-template-columns:repeat(3,minmax(0,1fr));gap:40px 24px}.portfolio-card{min-width:0}.portfolio-card-link{color:var(--ink);display:block}.portfolio-card-image{aspect-ratio:4/3;position:relative;overflow:hidden}.portfolio-card-image img{-o-object-fit:contain;object-fit:contain;-o-object-position:left bottom;object-position:left bottom}.portfolio-card-heading{margin:16px 0 6px}.portfolio-card-heading :is(h2,h3){font:400 23px/1.2 var(--font-display);letter-spacing:-.04em;overflow-wrap:anywhere;margin:0}.portfolio-grid-three .portfolio-card-heading :is(h2,h3){font-size:19px}.portfolio-card-link:hover .portfolio-card-heading :is(h2,h3){color:var(--link);text-underline-offset:5px;text-decoration:underline;text-decoration-thickness:1px}.portfolio-card-context{font:italic 400 17px/1.45 var(--font-serif);color:var(--ink-2);margin:0 0 8px}.portfolio-card-text{border-top:1px solid var(--rule);min-height:120px}.portfolio-card .portfolio-caption+.portfolio-caption{border:1px solid;margin-top:6px;padding:0 6px;font-size:11px;display:inline-block}.portfolio-index{padding-top:52px}.portfolio-index>h1,.portfolio-reading>h1,.portfolio-reading-heading h1,.portfolio-cv-heading h1,.portfolio-notfound h1{font:400 clamp(24px,3vw,32px)/1.15 var(--font-display);letter-spacing:.03em;text-transform:uppercase;margin:0 0 36px}.portfolio-reading-heading{justify-content:space-between;align-items:baseline;gap:24px;margin-bottom:32px;display:flex}.portfolio-reading-heading h1,.portfolio-reading-heading .portfolio-edit{margin:0}.portfolio-index-intro{max-width:620px;color:var(--muted);margin:-12px 0 40px}.portfolio-back{font:400 13px/1.5 var(--font-mono);margin:0 0 30px;display:inline-block}.portfolio-back:hover,.portfolio-source:hover,.portfolio-related a:hover{text-underline-offset:4px;text-decoration:underline}.portfolio-project{max-width:1000px;margin:44px 0 0}.portfolio-project-heading{max-width:780px;margin-bottom:32px}.portfolio-project-heading h1{font:400 clamp(34px,5.6vw,62px)/1.05 var(--font-display);letter-spacing:-.055em;overflow-wrap:anywhere;text-wrap:balance;margin:0 0 18px}.portfolio-post header h1{font:400 clamp(32px,4.6vw,52px)/1.08 var(--font-display);letter-spacing:-.045em;overflow-wrap:anywhere;text-wrap:balance;margin:0 0 18px}.portfolio-project-heading>.portfolio-prose{font:400 13px/1.65 var(--font-mono);color:var(--ink-2);max-width:62ch;margin:4px 0 0}.portfolio-project-heading>.portfolio-prose p{margin:0}.portfolio-project-subtitle{font:italic 400 23px/1.4 var(--font-serif);color:var(--ink-2);margin:0 0 14px}.portfolio-project-heading .portfolio-project-introduction .portfolio-prose{font:400 21px/1.5 var(--font-serif);color:var(--ink)}.portfolio-project-heading .portfolio-meta{color:var(--ink-2);margin-top:4px}.portfolio-project-heading>:is(h1,.portfolio-project-subtitle,.portfolio-project-introduction)+.portfolio-meta{border-top:1px solid var(--rule);margin-top:26px;padding-top:12px}.portfolio-media{margin:0 0 44px}.portfolio-image-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-bottom:44px;display:grid}.portfolio-image-grid .portfolio-media{min-width:0;margin:0}@media (max-width:550px){.portfolio-image-grid{grid-template-columns:1fr;gap:24px}}.portfolio-media img{width:auto;max-width:100%;height:auto;max-height:82vh;display:block}.portfolio-image-grid .portfolio-media img{width:100%}.portfolio-media>a{width:fit-content;max-width:100%;display:block}.portfolio-media>a:hover img{outline:2px solid var(--link);outline-offset:3px}@media (min-width:900px){.portfolio-project>figure.portfolio-media-image~figure.portfolio-media-image{grid-template-columns:fit-content(760px) minmax(0,220px);align-items:end;gap:0 28px;margin-bottom:56px;display:grid}.portfolio-project>figure.portfolio-media-image~figure.portfolio-media-image img{max-height:78vh}.portfolio-project>figure.portfolio-media-image~figure.portfolio-media-image figcaption{padding-top:0}}.portfolio-media figcaption{max-width:820px;color:var(--muted);font:400 12px/1.6 var(--font-mono);flex-wrap:wrap;gap:4px 10px;padding-top:12px;display:flex}.portfolio-media figcaption span+span:before{content:"//";margin-right:10px}.portfolio-media figcaption .portfolio-prose{font:inherit}.portfolio-media figcaption .portfolio-prose p{margin:0}.portfolio-source{font:12px/1.5 var(--font-mono);text-underline-offset:4px;text-decoration:underline}.portfolio-video{aspect-ratio:16/9;outline:1px solid var(--rule);background:#000;width:100%;margin-bottom:12px}.portfolio-video iframe{border:0;width:100%;height:100%}.portfolio-media video{background:#000;width:100%;max-height:80vh}.portfolio-diagram{border-block:1px solid var(--rule);padding:22px 0}.portfolio-diagram summary{cursor:pointer;font:400 13px/1.6 var(--font-mono);color:var(--muted);padding:10px 0}.portfolio-diagram summary:hover{color:var(--link)}.portfolio-diagram-graphic>summary{display:none}.portfolio-diagram-svg svg{width:100%;height:auto;display:block}.portfolio-diagram-graphic>.portfolio-source{margin:16px 0;display:inline-block}.portfolio-diagram-reading>div{max-width:700px;font:400 17px/1.65 var(--font-serif);padding:18px 0 6px}.portfolio-diagram-reading .procedure{margin:0;padding-left:1.8em;list-style:decimal-leading-zero}.portfolio-diagram-reading li{padding:0 0 15px 5px}.portfolio-diagram-reading li::marker{font:12px var(--font-mono);color:var(--muted)}.portfolio-diagram-reading p{margin:6px 0 12px}.portfolio-diagram-reading h3{font:400 18px/1.35 var(--font-display);letter-spacing:-.03em;margin:0 0 8px}.portfolio-diagram-reading :is(.response,.outcome){border-top:1px solid var(--rule-soft);margin:18px 0;padding-top:18px}.portfolio-diagram-reading .eyebrow{color:var(--muted);font:400 12px/1.6 var(--font-mono);margin-bottom:8px}.portfolio-diagram-reading .note{color:var(--muted);font-size:15px}.portfolio-diagram-reading dl{grid-template-columns:130px 1fr;gap:6px 12px;margin:12px 0;display:grid}.portfolio-diagram-reading dt{font:400 13px/1.8 var(--font-mono)}.portfolio-diagram-reading dd{color:var(--ink-2);margin:0}.portfolio-project-copy{max-width:680px;margin:48px 0 64px}.portfolio-project-link{font:13px/1.5 var(--font-mono);margin:34px 0}.portfolio-project-link a{border:1px solid;padding:6px 14px;display:inline-block}.portfolio-project-link a:hover{background:var(--link);color:var(--paper);border-color:var(--link)}.portfolio-related{border-top:1px solid var(--rule);font:400 14px/1.6 var(--font-mono);flex-wrap:wrap;gap:12px 28px;margin:64px 0;padding-top:22px;display:flex}.portfolio-related>span{color:var(--muted)}.portfolio-related>span:before{content:"[ "}.portfolio-related>span:after{content:" ]"}.portfolio-reading{max-width:720px;margin:52px 0 80px}.portfolio-reading>section{margin-top:48px}.portfolio-reading>.portfolio-reading-heading+section{margin-top:0}.portfolio-reading>section>h2{font:400 12px/1.5 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 18px}.portfolio-reading>section>h2:before{content:"[ "}.portfolio-reading>section>h2:after{content:" ]"}.portfolio-prose{font:400 19px/1.7 var(--font-serif);overflow-wrap:break-word}.portfolio-prose p{line-height:inherit;margin:0 0 1.2em}.portfolio-prose h1,.portfolio-prose h2,.portfolio-prose h3{font-family:var(--font-display);letter-spacing:-.025em;margin:2em 0 .7em;font-weight:400;line-height:1.3}.portfolio-prose h1{font-size:1.35em}.portfolio-prose h2{font-size:1.1em}.portfolio-prose h3{font-size:.95em}.portfolio-prose a{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.portfolio-prose ul,.portfolio-prose ol{margin:1em 0;padding-left:1.3em}.portfolio-prose ul{list-style:square}.portfolio-prose ol{list-style:decimal}.portfolio-prose li{margin:.4em 0}.portfolio-prose li::marker{color:var(--muted)}.portfolio-prose blockquote{border-left:1px solid var(--rule);margin:1.5em 0;padding-left:22px;font-style:italic}.portfolio-prose hr{text-align:center;font:13px/1 var(--font-mono);color:var(--muted);border:0;margin:2.4em 0}.portfolio-prose hr:after{content:"---"}.portfolio-prose img{width:auto;max-width:100%;height:auto;max-height:80vh;margin:2.2em 0 12px;display:block}.portfolio-prose p:has(>img){font:400 12px/1.6 var(--font-mono);color:var(--muted);margin:0 0 .4em}.portfolio-prose p:has(>img)+p:not(:has(img)){font:400 12px/1.6 var(--font-mono);color:var(--muted);margin:0 0 .4em}.portfolio-prose p:has(>img)+p:not(:has(img)){margin-bottom:2.4em}.portfolio-prose p:has(>img)+p:not(:has(img))+p:not(:has(img)){font:400 12px/1.6 var(--font-mono);color:var(--muted);margin:-2.2em 0 2.4em}.portfolio-prose figcaption{font:12px/1.6 var(--font-mono);color:var(--muted)}.portfolio-prose pre{background:var(--tile);border:1px solid var(--rule-soft);padding:18px 20px;font-size:14px;line-height:1.5;overflow:auto}.portfolio-prose code{font-family:var(--font-mono);font-size:.8em}.portfolio-prose table{border-collapse:collapse;font-size:15px;display:block;overflow-x:auto}.portfolio-prose th,.portfolio-prose td{border:1px solid var(--rule-soft);padding:8px}.portfolio-post-list article{grid-template-columns:170px minmax(0,1fr);gap:24px;padding:28px 0;display:grid}.portfolio-post-list article+article{border-top:1px dashed var(--rule-soft)}.portfolio-post-list :is(h2,h3){font:400 22px/1.25 var(--font-display);letter-spacing:-.035em;margin:0 0 8px}.portfolio-post-list :is(h2,h3) a{color:var(--ink)}.portfolio-post-list :is(h2,h3) a:hover{color:var(--link);text-underline-offset:5px;text-decoration:underline;text-decoration-thickness:1px}.portfolio-post-list p{margin:0 0 8px;font-size:17px}.portfolio-post-list p:not(.portfolio-post-summary){color:var(--ink-2);font-style:italic}.portfolio-post-summary{color:var(--ink-2);max-width:62ch}.portfolio-post-list-images article{grid-template-columns:170px minmax(0,1fr) minmax(0,300px);padding:36px 0}.portfolio-post-list-images :is(h2,h3){letter-spacing:-.045em;margin-bottom:12px;font-size:clamp(24px,2.6vw,30px);line-height:1.15}.portfolio-post-list-images p{font-size:18px}.portfolio-post-image img{width:auto;max-width:100%;height:auto;max-height:260px;margin-left:auto;display:block}.portfolio-post-image:hover img{outline:2px solid var(--link);outline-offset:3px}.portfolio-post-date,.portfolio-post-dates{color:var(--muted);font:400 13px/1.7 var(--font-mono);font-variant-numeric:tabular-nums}.portfolio-post-date time,.portfolio-post-dates time{font:inherit}.portfolio-post-date span,.portfolio-post-dates span{width:fit-content;font:400 11px/1.7 var(--font-mono);text-transform:lowercase;border:1px solid;margin-top:6px;padding:0 6px;display:inline-block}.portfolio-post-date span{display:block}.portfolio-post-dates{flex-wrap:wrap;align-items:center;gap:8px 16px;margin:22px 0 6px;display:flex}.portfolio-post-dates span{margin:0}.portfolio-post-history{color:var(--muted);font:400 12px/1.6 var(--font-mono);margin:0}.portfolio-post header{margin-bottom:36px}.portfolio-subtitle{font:italic 400 22px/1.45 var(--font-serif);color:var(--ink-2)}.portfolio-note-media{margin-top:56px}@media (min-width:900px){.portfolio-reading .portfolio-note-media{width:min(1000px,100vw - 96px)}.portfolio-note-media>figure.portfolio-media-image{grid-template-columns:fit-content(720px) minmax(0,220px);align-items:end;gap:0 28px;margin-bottom:56px;display:grid}.portfolio-note-media>figure.portfolio-media-image img{max-height:78vh}.portfolio-note-media>figure.portfolio-media-image figcaption{padding-top:0}}.portfolio-fragments{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-flow:dense;align-items:start;gap:52px 28px;display:grid}.portfolio-fragment-strip{grid-column:span 2}.portfolio-fragment>a{color:var(--ink);display:block}.portfolio-fragment-images img{-o-object-fit:contain;object-fit:contain;-o-object-position:left bottom;object-position:left bottom;width:100%;height:auto;max-height:420px;display:block}.portfolio-fragment-strip .portfolio-fragment-images{align-items:flex-end;gap:6px;height:230px;display:flex;overflow:hidden}.portfolio-fragment-strip .portfolio-fragment-images img{-o-object-fit:contain;object-fit:contain;-o-object-position:left bottom;object-position:left bottom;flex:0 auto;width:auto;min-width:0;height:100%;max-height:none}.portfolio-fragment>a:hover img{outline:2px solid var(--link);outline-offset:-2px}.portfolio-fragment-quote{background:var(--tile);font:400 17px/1.5 var(--font-serif);text-wrap:pretty;margin:0;padding:14px 16px 16px}.portfolio-fragment-quote:before{content:"> ";font:400 14px var(--font-mono);color:var(--muted)}.portfolio-fragment>a:hover .portfolio-fragment-quote{background:var(--rule-soft)}.portfolio-fragment-meta{font:400 12px/1.6 var(--font-mono);color:var(--muted);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:8px 0 0;display:flex}.portfolio-fragment-meta span{text-transform:lowercase;border:1px solid;padding:0 5px;font-size:10.5px}.portfolio-fragment :is(h2,h3){font:400 20px/1.25 var(--font-display);letter-spacing:-.025em;text-wrap:balance;margin:14px 0 0}.portfolio-fragment>a:hover :is(h2,h3){color:var(--link);text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:1px}.portfolio-fragment-subtitle{font:italic 400 15px/1.45 var(--font-serif);color:var(--ink-2);margin:4px 0 0}@media (max-width:1000px){.portfolio-fragments{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:720px){.portfolio-fragments{grid-template-columns:repeat(2,minmax(0,1fr));gap:40px 16px}.portfolio-fragment-strip .portfolio-fragment-images{height:180px}.portfolio-fragment-quote{padding:12px 12px 14px;font-size:16px}}@media (max-width:460px){.portfolio-fragments{grid-template-columns:1fr}.portfolio-fragment-strip{grid-column:auto}}.portfolio-cv-page{max-width:900px}.portfolio-cv-heading{justify-content:space-between;align-items:baseline;gap:18px 32px;margin-bottom:26px;display:flex}.portfolio-cv-heading h1{flex-shrink:0;margin:0}.portfolio-cv-controls{font:400 13px/1.6 var(--font-mono);color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px 18px;display:flex}.portfolio-cv-controls a,.portfolio-cv-controls button{font:inherit;text-underline-offset:4px;cursor:pointer;text-decoration:underline}.portfolio-cv-controls .portfolio-edit{font:inherit;margin:0}.portfolio-cv-summary{max-width:760px;color:var(--ink-2);font-size:18px;line-height:1.6}.portfolio-cv-section{border-top:1px solid var(--rule);margin-top:40px;padding-top:20px}.portfolio-cv-section>h2{font:400 12px/1.5 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;text-wrap:balance;margin:0 0 28px}.portfolio-cv-section>h2:before{content:"> ";color:var(--muted)}.portfolio-cv-section article{-moz-column-break-inside:avoid;break-inside:avoid;grid-template-columns:132px minmax(0,1fr);gap:24px;padding-bottom:28px;display:grid}.portfolio-cv-section article:last-child{padding-bottom:0}.portfolio-cv-date{padding-top:5px}.portfolio-cv-section h3{font:400 20px/1.3 var(--font-display);letter-spacing:-.035em;margin:0 0 6px}.portfolio-cv-section h3 a{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--link);text-decoration-color:var(--link);text-underline-offset:4px;text-decoration-thickness:2px}.portfolio-cv-section h3 a:hover{color:var(--link)}.portfolio-cv-section .portfolio-prose{font-size:16px;line-height:1.55}.portfolio-cv-section .portfolio-prose p{margin:0 0 8px}.portfolio-cv-section .portfolio-cv-subtitle{color:var(--ink-2);font-style:italic}.portfolio-cv-section .portfolio-cv-location{color:var(--muted);font:400 13px/1.6 var(--font-mono);margin:8px 0}.portfolio-cv-section .portfolio-cv-details{color:var(--ink-2);font:400 15px/1.6 var(--font-serif);margin-top:10px}.portfolio-notfound{padding:96px 0 140px}.portfolio-notfound h1{margin:6px 0 28px}.portfolio-notfound p:last-child{font:15px/1.5 var(--font-mono);gap:24px;display:flex}.portfolio-notfound a{color:var(--link);text-underline-offset:4px;text-decoration:underline}.portfolio-footer{font:400 12px/1.7 var(--font-mono);color:var(--muted);justify-content:space-between;gap:20px;margin-top:80px;padding:30px 0 44px;display:flex;position:relative}.portfolio-footer:before{top:0}.portfolio-footer>div{flex-wrap:wrap;gap:6px 20px;display:flex}.portfolio-footer a:hover{text-underline-offset:3px;text-decoration:underline}@media (max-width:860px){.portfolio-grid-three{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:720px){.portfolio-diagram{padding:10px 0}.portfolio-diagram-graphic>summary{display:list-item}.portfolio-diagram-reading>div{padding-top:14px;font-size:16px}.portfolio-diagram-reading dl{grid-template-columns:1fr;gap:3px}.portfolio-diagram-reading dd{margin-bottom:8px}.portfolio-shell{padding:0 16px}.portfolio-header{flex-direction:column;align-items:flex-start;gap:14px;padding:24px 0 28px}.portfolio-brand pre{font-size:6px}.portfolio-header nav{gap:0 14px;font-size:14px}.portfolio-preview{padding:7px 16px;font-size:10px}.portfolio-intro{grid-template-columns:1fr;margin:44px 0 8px;padding:32px 0}.portfolio-intro .portfolio-prose{font-size:18px}.portfolio-statue{font-size:2.3px}.portfolio-grid,.portfolio-grid-three{grid-template-columns:1fr;gap:36px}.portfolio-card-heading :is(h2,h3){font-size:21px}.portfolio-section{margin-bottom:56px}.portfolio-project{margin-top:26px}.portfolio-reading{margin-top:32px}.portfolio-project-copy{margin:32px 0 42px}.portfolio-prose{font-size:18px}.portfolio-media{margin-bottom:28px}.portfolio-post-list article{grid-template-columns:1fr;gap:8px}.portfolio-post-date{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.portfolio-post-date span{margin:0}.portfolio-post-list :is(h2,h3){font-size:20px}.portfolio-post-list-images article{grid-template-columns:1fr}.portfolio-post-image img{max-height:220px;margin-left:0}.portfolio-cv-section article{grid-template-columns:1fr;gap:4px}.portfolio-cv-heading{flex-direction:column;gap:18px}.portfolio-cv-summary{font-size:16px}.portfolio-cv-section h3{font-size:21px}.portfolio-cv-controls{gap:10px 18px}.portfolio-footer{flex-direction:column}.portfolio-project-heading h1{font-size:34px}.portfolio-post header h1{font-size:30px}}@media print{@page{margin:18mm}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#fff;--ink:#000;--ink-2:#333;--muted:#444;--rule:#999;--link:#000;--visited:#000}body{font-size:11pt;color:#000!important;background:#fff!important}.portfolio-header,.portfolio-footer,.portfolio-preview,.portfolio-skip,.portfolio-cv-controls,.portfolio-edit{display:none!important}.portfolio-shell,.portfolio-reading{width:100%;max-width:none;margin:0;padding:0}.portfolio-cv-heading{margin-bottom:20px}.portfolio-cv-heading h1{font-size:24pt}.portfolio-cv-section{margin-top:20px}.portfolio-cv-section article{grid-template-columns:90px minmax(0,1fr);padding-bottom:14px}.portfolio-cv-section>h2{font-size:10pt}.portfolio-cv-date{font-size:9pt}.portfolio-cv-section .portfolio-prose{font-size:10pt}.portfolio-cv>.portfolio-prose{color:#444;font-size:11pt}.portfolio-cv-section h3{font-size:12pt}a{color:#000}}.portfolio-sound-intro{max-width:66ch;margin-bottom:32px}.portfolio-sound-tracks{gap:32px;display:grid}.portfolio-sound-track{border-top:1px solid var(--rule);grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:32px;min-width:0;padding-top:24px;display:grid}.portfolio-sound-track h3{font:400 22px/1.25 var(--font-display);letter-spacing:-.035em;overflow-wrap:anywhere;margin:0 0 12px}.portfolio-sound-track .portfolio-prose{font-size:15px;line-height:1.55}.portfolio-sound-track .portfolio-prose p{margin:0 0 12px}.portfolio-sound-player{min-width:0}.portfolio-sound-player iframe{border:0;width:100%;height:166px;display:block}.portfolio-sound-direct{font:12px/1.5 var(--font-mono);text-underline-offset:3px;margin-top:10px;text-decoration:underline;display:inline-block}@media (max-width:640px){.portfolio-sound-track{grid-template-columns:minmax(0,1fr);gap:16px}.portfolio-sound-track h3{font-size:21px}}
