@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:optional;src:url(/fonts/inter-latin-400-normal.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:optional;src:url(/fonts/inter-latin-500-normal.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:optional;src:url(/fonts/inter-latin-600-normal.woff2) format("woff2")}@font-face{font-family:Archivo Narrow;font-style:normal;font-weight:400;font-display:optional;src:url(/fonts/archivo-narrow-latin-400-normal.woff2) format("woff2")}@font-face{font-family:Archivo Narrow;font-style:italic;font-weight:400;font-display:optional;src:url(/fonts/archivo-narrow-latin-400-italic.woff2) format("woff2")}@font-face{font-family:Archivo Narrow;font-style:normal;font-weight:600;font-display:optional;src:url(/fonts/archivo-narrow-latin-600-normal.woff2) format("woff2")}@font-face{font-family:Archivo Narrow;font-style:normal;font-weight:700;font-display:optional;src:url(/fonts/archivo-narrow-latin-700-normal.woff2) format("woff2")}@font-face{font-family:Libre Baskerville;font-style:normal;font-weight:400;font-display:optional;src:url(/fonts/libre-baskerville-latin-400-normal.woff2) format("woff2")}@font-face{font-family:Libre Baskerville;font-style:italic;font-weight:400;font-display:optional;src:url(/fonts/libre-baskerville-latin-400-italic.woff2) format("woff2")}@font-face{font-family:Libre Baskerville;font-style:normal;font-weight:700;font-display:optional;src:url(/fonts/libre-baskerville-latin-700-normal.woff2) format("woff2")}@font-face{font-family:Inter Fallback;src:local("Arial");size-adjust:107%;ascent-override:90%;descent-override:25%;line-gap-override:0%}@font-face{font-family:Archivo Fallback;src:local("Arial Narrow"),local("Arial");size-adjust:95%;ascent-override:100%;descent-override:25%;line-gap-override:0%}@font-face{font-family:Baskerville Fallback;src:local("Georgia"),local("Times New Roman");size-adjust:105%;ascent-override:92%;descent-override:25%;line-gap-override:0%}:root{--blue-strong: #2e59a4;--blue-medium: #99a3cc;--blue-light: #dddfeb;--orange-strong: #fe8540;--orange-medium: #ffbb9f;--orange-light: #ffe5de;--plum-strong: #61253e;--plum-medium: #ac727d;--plum-light: #e1c8ce;--ivory-light: #f0eee6;--color-primary: var(--orange-strong);--color-secondary: var(--blue-strong);--color-accent: var(--plum-strong);--color-dark: var(--plum-strong);--color-text: #2d2d3a;--color-text-muted: var(--plum-medium);--color-surface: var(--ivory-light);--color-background: #ffffff;--color-light: var(--blue-light);--theme-light: var(--ivory-light);--theme-medium: var(--plum-medium);--theme-strong: var(--plum-strong);--theme-bg: var(--theme-light);--theme-border: var(--theme-medium);--theme-muted: var(--theme-medium);--theme-accent: var(--theme-strong);--step--2: clamp(.7813rem, .7747rem + .0294vw, .8rem);--step--1: clamp(.9375rem, .9158rem + .0966vw, 1rem);--step-0: clamp(1.125rem, 1.0819rem + .1918vw, 1.25rem);--step-1: clamp(1.35rem, 1.2761rem + .3291vw, 1.5625rem);--step-2: clamp(1.62rem, 1.5023rem + .5241vw, 1.9531rem);--step-3: clamp(1.944rem, 1.7654rem + .7956vw, 2.4414rem);--step-4: clamp(2.3328rem, 2.0708rem + 1.1667vw, 3.0518rem);--step-5: clamp(2.7994rem, 2.4251rem + 1.6667vw, 3.8147rem);--space-3xs: clamp(.3125rem, .3125rem + 0vw, .3125rem);--space-2xs: clamp(.5625rem, .5398rem + .1011vw, .625rem);--space-xs: clamp(.875rem, .8523rem + .1011vw, .9375rem);--space-s: clamp(1.125rem, 1.0795rem + .2022vw, 1.25rem);--space-m: clamp(1.6875rem, 1.6193rem + .3034vw, 1.875rem);--space-l: clamp(2.25rem, 2.1591rem + .4045vw, 2.5rem);--space-xl: clamp(3.375rem, 3.2386rem + .6067vw, 3.75rem);--space-2xl: clamp(4.5rem, 4.3182rem + .809vw, 5rem);--space-3xl: clamp(6.75rem, 6.4773rem + 1.2135vw, 7.5rem);--space-s-m: clamp(1.125rem, .8295rem + 1.3146vw, 1.875rem);--space-m-l: clamp(1.6875rem, 1.3693rem + 1.4157vw, 2.5rem);--space-l-xl: clamp(2.25rem, 1.6591rem + 2.6292vw, 3.75rem);--space-s-l: clamp(1.125rem, .5795rem + 2.4269vw, 2.5rem);--font-display: "Archivo Narrow", "Archivo Fallback", "Arial Narrow", sans-serif;--font-body: "Libre Baskerville", "Baskerville Fallback", Georgia, serif;--font-nav: "Inter", "Inter Fallback", Arial, sans-serif;--font-mono: "IBM Plex Mono", "Courier New", monospace;--measure: 65ch;--gutter: var(--space-s-m);--sidebar-width: 280px;--border-thin: 1px;--border-thick: 2px;--transition-fast: .15s ease;--transition-base: .25s ease}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none}body{min-height:100vh;line-height:1.6;font-family:var(--font-body);font-size:var(--step-0);color:var(--color-text);background:var(--theme-bg);-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:600;line-height:1.1;text-wrap:balance}p,li,figcaption{max-width:var(--measure);text-wrap:pretty}img,picture,video,canvas,svg{display:block;max-width:100%;height:auto}input,button,textarea,select{font:inherit}a{color:var(--theme-strong);text-decoration-thickness:max(.08em,1px);text-underline-offset:.15em}a:hover{color:var(--theme-medium)}a:focus-visible{outline:2px solid var(--theme-strong);outline-offset:2px}.flow>*+*{margin-block-start:var(--flow-space, 1em)}.with-sidebar{display:flex;flex-wrap:wrap;gap:var(--gutter)}.with-sidebar>:first-child{flex-basis:var(--sidebar-width);flex-grow:1}.with-sidebar>:last-child{flex-basis:0;flex-grow:999;min-inline-size:50%}.stack{display:flex;flex-direction:column;justify-content:flex-start}.stack>*+*{margin-block-start:var(--space, var(--space-s))}.cluster{display:flex;flex-wrap:wrap;gap:var(--space, var(--space-s));justify-content:flex-start;align-items:center}.center{box-sizing:content-box;max-inline-size:var(--measure);margin-inline:auto;padding-inline:var(--gutter)}.region{padding-block:var(--region-space, var(--space-l-xl))}.text-sm{font-size:var(--step--1)}.text-base{font-size:var(--step-0)}.text-lg{font-size:var(--step-1)}.text-xl{font-size:var(--step-2)}.text-2xl{font-size:var(--step-3)}.text-3xl{font-size:var(--step-4)}.text-4xl{font-size:var(--step-5)}.font-display{font-family:var(--font-display)}.font-body{font-family:var(--font-body)}.font-mono{font-family:var(--font-mono)}.color-primary{color:var(--color-primary)}.color-secondary{color:var(--color-secondary)}.color-muted{color:var(--color-text-muted)}.weight-normal{font-weight:400}.weight-bold{font-weight:700}.uppercase{text-transform:uppercase;letter-spacing:.05em}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.site-layout{display:grid;grid-template-columns:var(--sidebar-width) 1fr;min-height:100vh}@media(max-width:768px){.site-layout{grid-template-columns:1fr}}.site-nav{position:sticky;top:0;height:100vh;overflow-y:auto;padding:var(--space-m);font-family:var(--font-nav);scrollbar-color:var(--theme-medium) transparent;scrollbar-width:thin}.site-nav::-webkit-scrollbar{width:6px}.site-nav::-webkit-scrollbar-track{background:transparent}.site-nav::-webkit-scrollbar-thumb{background:var(--theme-medium);border-radius:3px}.site-nav::-webkit-scrollbar-thumb:hover{background:var(--theme-strong)}@media(max-width:768px){.site-nav{position:static;height:auto}}.site-nav__back{display:inline-flex;align-items:center;gap:var(--space-3xs);font-size:var(--step--1);color:var(--color-text);text-decoration:none;margin-block-end:2lh;margin-inline-start:calc(-16px - var(--space-3xs))}.site-nav__back:hover{color:var(--color-text);text-decoration:underline;text-underline-offset:.25em}.site-nav__back svg{flex-shrink:0}.site-nav__home{display:block;font-size:var(--step--1);color:var(--color-text);text-decoration:none;margin-block-end:2lh}.site-nav__home:hover{color:var(--color-text);text-decoration:underline;text-underline-offset:.25em}.site-nav__list{list-style:none}.site-nav__list>li+li{margin-block-start:.5lh}.site-nav__section{font-size:var(--step--1);font-weight:400;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text)}.site-nav__link{display:block;text-decoration:none;color:var(--color-text);font-weight:400;font-size:var(--step--1)}.site-nav__link:hover{color:var(--color-text);text-decoration:underline;text-underline-offset:.25em}.site-nav__link[aria-current=page],.site-nav__link[aria-current=page]:hover{color:var(--color-text)}.site-nav__nested{list-style:none}.site-nav__nested .site-nav__link,.site-nav__nested .site-nav__link:hover{color:var(--theme-strong)}.site-nav__nested .site-nav__link[aria-current=page],.site-nav__nested .site-nav__link[aria-current=page]:hover{color:var(--color-text)}.site-nav__link--draft{font-style:italic}.site-main{padding:var(--space-m);padding-block-end:var(--space-l);max-width:900px}@media(max-width:768px){.site-main{padding:var(--space-m)}}.page-header{margin-block-end:var(--space-l)}.page-header__nav-title{font-family:var(--font-nav);font-size:var(--step--1);color:var(--color-text);text-decoration:underline;text-underline-offset:.25em;margin-block-end:var(--space-xs)}.page-header__title{font-size:var(--step-4);color:var(--theme-strong);margin-block-end:var(--space-2xs)}.page-header__meta{font-size:var(--step--1);color:var(--theme-medium);font-family:var(--font-display)}.page-header__description{font-size:var(--step-1);color:var(--color-text);margin-block-start:var(--space-xs)}.page-header__description:first-child{margin-block-start:4.5rem}.page-header__tech{display:flex;flex-wrap:wrap;gap:var(--space-2xs);margin-block-start:var(--space-s)}.page-header__tag{font-family:var(--font-display);font-size:var(--step--2);text-transform:uppercase;letter-spacing:.05em;padding:var(--space-3xs) var(--space-2xs);background:var(--theme-accent-light);color:var(--theme-accent-medium);border-radius:2px}.content{--flow-space: var(--space-m)}.content>*+*{margin-block-start:var(--flow-space)}.content h2{font-size:var(--step-2);color:var(--theme-strong);margin-block-start:var(--space-xl);padding-block-end:var(--space-2xs);border-block-end:var(--border-thin) solid var(--theme-medium)}.content h3{font-size:var(--step-1);color:var(--theme-strong);margin-block-start:var(--space-l)}.content ul,.content ol{padding-inline-start:var(--space-m)}.content li+li{margin-block-start:var(--space-2xs)}.content a{color:var(--theme-strong)}.content a:hover{color:var(--theme-medium)}.content strong{font-weight:600;color:var(--theme-strong)}.content pre{font-family:var(--font-mono);font-size:var(--step--1);padding:var(--space-s);background:var(--theme-light);border:var(--border-thin) solid var(--theme-medium);border-radius:4px;overflow-x:auto;max-width:100%}.content code{font-family:var(--font-mono);font-size:.9em;background:var(--theme-light);padding:.1em .3em;border-radius:2px}.content pre code{background:none;padding:0}.content figure{margin-block:var(--space-m)}.content figcaption{font-size:var(--step--1);color:var(--theme-medium);margin-block-start:var(--space-2xs);font-style:italic}.image-stack{--flow-space: var(--space-m)}.image-stack>*+*{margin-block-start:var(--flow-space)}.image-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-s);margin-block:var(--space-m)}.image-grid img{width:100%;height:auto;object-fit:cover}.image-grid-custom{display:grid;gap:var(--space-s);margin-block:var(--space-m)}.image-grid-custom figure{margin:0}.image-grid-custom img{width:100%;height:auto}.figure-single{margin-block:var(--space-m)}.slideshow{--flow-space: var(--space-m)}.slideshow>*+*{margin-block-start:var(--flow-space)}.process-note{border-inline-start:var(--border-thick) solid var(--theme-strong);padding-inline-start:var(--space-s);margin-block:var(--space-m)}.process-note header{font-family:var(--font-display);font-size:var(--step--1);color:var(--theme-medium);margin-block-end:var(--space-2xs);display:flex;gap:var(--space-xs);align-items:baseline}.process-note time{font-style:normal}.process-note .status{font-weight:600;text-transform:uppercase;letter-spacing:.05em;font-size:var(--step--2)}.process-note .status[data-status=done]{color:#2a9d8f}.process-note .status[data-status=exploring],.process-note .status[data-status=active]{color:var(--theme-strong)}.process-note .status[data-status=paused]{color:var(--theme-medium)}.process-note .status[data-status=blocked]{color:#e63946}.process-note .note-content{font-size:var(--step--1)}.process-note .note-content p:first-child{margin-block-start:0}.section-title{font-family:var(--font-nav);font-size:var(--step--1);font-weight:400;line-height:1.6;color:var(--color-text);text-decoration:underline;text-underline-offset:.25em;margin-block-end:var(--space-l)}.section-list{list-style:none}.section-list>li+li{margin-block-start:var(--space-m);padding-block-start:var(--space-m);border-block-start:var(--border-thin) solid var(--theme-medium)}.section-list__link{display:block;font-family:var(--font-display);font-size:var(--step-2);font-weight:600;color:var(--theme-strong);text-decoration:none}.section-list p{font-size:var(--step--1);color:var(--theme-medium);margin-block-start:var(--space-2xs)}.home-section{margin-block-end:var(--space-xl)}.home-section__title{font-size:var(--step-1);font-family:var(--font-display);text-transform:uppercase;letter-spacing:.1em;color:var(--theme-medium);margin-block-end:var(--space-s);padding-block-end:var(--space-2xs);border-block-end:var(--border-thin) solid var(--theme-medium)}.home-section__list{list-style:none}.home-section__list li+li{margin-block-start:var(--space-xs)}.home-section__list a{text-decoration:none;display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-s)}.home-section__list span{font-family:var(--font-display);font-size:var(--step--1);color:var(--theme-medium)}.site-nav:focus-within{outline:2px solid var(--theme-strong);outline-offset:-2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media print{.site-nav{display:none}.site-layout{display:block}.site-main{padding:0}}[data-theme=ivory]{--theme-bg: var(--ivory-light);--theme-orange-light: var(--orange-light);--theme-orange-medium: var(--orange-medium);--theme-orange-strong: var(--orange-strong);--theme-blue-light: var(--blue-light);--theme-blue-medium: var(--blue-medium);--theme-blue-strong: var(--blue-strong);--theme-medium: var(--orange-medium);--theme-strong: var(--orange-strong);--theme-border: var(--orange-medium);--theme-muted: var(--orange-medium)}[data-theme=blue]{--theme-bg: var(--blue-light);--theme-medium: var(--blue-medium);--theme-strong: var(--blue-strong);--theme-border: var(--blue-medium);--theme-muted: var(--blue-medium);--theme-accent-light: var(--plum-light);--theme-accent-medium: var(--plum-medium);--theme-accent-strong: var(--plum-strong);--theme-knockout-light: var(--orange-light);--theme-knockout-medium: var(--orange-medium);--theme-knockout-strong: var(--orange-strong)}[data-theme=orange]{--theme-bg: var(--orange-light);--theme-medium: var(--orange-medium);--theme-strong: var(--orange-strong);--theme-border: var(--orange-medium);--theme-muted: var(--orange-medium);--theme-accent-light: var(--plum-light);--theme-accent-medium: var(--plum-medium);--theme-accent-strong: var(--plum-strong);--theme-knockout-light: var(--blue-light);--theme-knockout-medium: var(--blue-medium);--theme-knockout-strong: var(--blue-strong)}[data-theme=orange-blue]{--theme-bg: var(--plum-light);--theme-medium: var(--plum-medium);--theme-strong: var(--plum-strong);--theme-border: var(--plum-medium);--theme-muted: var(--plum-medium);--theme-accent-light: var(--plum-light);--theme-accent-medium: var(--plum-medium);--theme-accent-strong: var(--plum-strong);--theme-knockout-light: var(--orange-light);--theme-knockout-medium: var(--orange-medium);--theme-knockout-strong: var(--orange-strong)}
