@layer theme.reset{@custom-media --motionOK (prefers-reduced-motion: no-preference);@custom-media --motionNotOK (prefers-reduced-motion: reduce);@custom-media --opacityOK (prefers-reduced-transparency: no-preference);@custom-media --opacityNotOK (prefers-reduced-transparency: reduce);@custom-media --useDataOK (prefers-reduced-data: no-preference);@custom-media --useDataNotOK (prefers-reduced-data: reduce);@custom-media --OSdark (prefers-color-scheme: dark);@custom-media --OSlight (prefers-color-scheme: light);@custom-media --highContrast (prefers-contrast: more);@custom-media --lowContrast (prefers-contrast: less);@custom-media --invertedColors (inverted-colors: inverted);@custom-media --forcedColors (forced-colors: active);@custom-media --portrait (orientation: portrait);@custom-media --landscape (orientation: landscape);@custom-media --HDcolor (dynamic-range: high) or (color-gamut: p3);@custom-media --touch (hover: none) and (pointer: coarse);@custom-media --stylus (hover: none) and (pointer: fine);@custom-media --pointer (hover) and (pointer: coarse);@custom-media --mouse (hover) and (pointer: fine);@custom-media --xxs-only (0px <= width < 240px);@custom-media --xxs-n-above (width >= 240px);@custom-media --xxs-n-below (width < 240px);@custom-media --xxs-phone (--xxs-only) and (--portrait);@custom-media --xs-only (240px <= width < 360px);@custom-media --xs-n-above (width >= 360px);@custom-media --xs-n-below (width < 360px);@custom-media --xs-phone (--xs-only) and (--portrait);@custom-media --sm-only (360px <= width < 480px);@custom-media --sm-n-above (width >= 480px);@custom-media --sm-n-below (width < 480px);@custom-media --sm-phone (--sm-only) and (--portrait);@custom-media --md-only (480px <= width < 768px);@custom-media --md-n-above (width >= 768px);@custom-media --md-n-below (width < 768px);@custom-media --md-phone (--md-only) and (--portrait);@custom-media --lg-only (768px <= width < 1024px);@custom-media --lg-n-above (width >= 1024px);@custom-media --lg-n-below (width < 1024px);@custom-media --lg-phone (--lg-only) and (--portrait);@custom-media --xl-only (1024px <= width < 1440px);@custom-media --xl-n-above (width >= 1440px);@custom-media --xl-n-below (width < 1440px);@custom-media --xxl-only (1440px <= width < 1920px);@custom-media --xxl-n-above (width >= 1920px);@custom-media --xxl-n-below (width < 1920px);}@layer theme.reset{:where(html){color-scheme:light;--link: var(--indigo-7);--link-visited: var(--purple-7);--text-1: var(--gray-12);--text-2: var(--gray-7);--surface-1: var(--gray-0);--surface-2: var(--gray-2);--surface-3: var(--gray-3);--surface-4: var(--gray-4);--scrollthumb-color: var(--gray-7)}@media (--HDcolor){@supports (color: color(display-p3 0 0 0)){:where(html){--link: color(display-p3 .1 .39 1);--link-visited: color(display-p3 .6 .2 1)}}}:where(html) :where(dialog){background-color:var(--surface-1)}:where(html) :where(button,.btn){--_highlight: var(--_highlight-light);--_bg: var(--_bg-light);--_ink-shadow: var(--_ink-shadow-light)}:where(html) :where(button,.btn) :where([type=reset]){--_text: var(--red-6);--_border: var(--red-3)}:where(html) :where(button,.btn,input:is([type=button],[type=submit],[type=reset]))[disabled]{--_text: var(--gray-6)}:where(html) :where(textarea,select,input:not([type=button],[type=submit],[type=reset])){background-color:var(--surface-2)}}@layer theme.reset{@media (--OSdark){:where(html){color-scheme:dark;--link: var(--indigo-3);--link-visited: var(--purple-3);--text-1: var(--gray-1);--text-2: var(--gray-4);--surface-1: var(--gray-9);--surface-2: var(--gray-8);--surface-3: var(--gray-7);--surface-4: var(--gray-6);--scrollthumb-color: var(--gray-6)}}}@layer theme.reset{:where(html){scrollbar-color:var(--scrollthumb-color) transparent;accent-color:var(--brand, var(--link));caret-color:var(--brand, var(--link));color:var(--text-1);background-color:var(--surface-1)}:where(a[href]){color:var(--brand, var(--link))}:where(a[href]):where(:visited){color:var(--link-visited)}:focus-visible{outline-color:var(--brand, var(--link))}}@layer theme.reset{*,:before,:after{box-sizing:border-box}:where(:not(dialog)){margin:0}:where(:not(fieldset,progress,meter)){border-width:0;border-style:solid;background-origin:border-box;background-repeat:no-repeat}:where(html){block-size:100%;font-family:var(--font-system-ui);line-height:var(--font-lineheight-3);-webkit-text-size-adjust:none}@media (--motionOK){:where(html){scroll-behavior:smooth}}@media (--motionOK){:where(:focus-visible){transition:outline-offset 145ms var(--ease-2)}:where(:not(:active):focus-visible){transition-duration:.25s}}:where(:not(:active):focus-visible){outline-offset:5px}:where(body){min-block-size:100%}:where(h1,h2,h3,h4,h5,h6){line-height:var(--font-lineheight-1);font-weight:var(--font-weight-9);text-wrap:balance}:where(h1){font-size:var(--font-size-8);max-inline-size:var(--size-header-1)}:where(h2){font-size:var(--font-size-6);max-inline-size:var(--size-header-2)}:where(h3){font-size:var(--font-size-5)}:where(h4){font-size:var(--font-size-4)}:where(h5){font-size:var(--font-size-3)}:where(h3,h4,h5,h6,dt){max-inline-size:var(--size-header-3)}:where(p,ul,ol,dl,h6){font-size:var(--font-size-2)}:where(a,u,ins,abbr){text-underline-offset:1px}@supports (-moz-appearance: none){:where(a,u,ins,abbr){text-underline-offset:2px}}:where(a[href],area,button,input:not([type=text],[type=email],[type=number],[type=password],[type=""],[type=tel],[type=url]),label[for],select,summary,[tabindex]:not([tabindex*="-"],pre)){cursor:pointer}:where(a[href],area,button,input,label[for],select,summary,textarea,[tabindex]:not([tabindex*="-"])){touch-action:manipulation;-webkit-tap-highlight-color:transparent}:where(a):where([href]){text-decoration-color:var(--indigo-2)}:where(a):where([href]):where(:visited){text-decoration-color:var(--purple-2)}:where(a):where(:not(:hover)){text-decoration:inherit}:where(img,svg,video,canvas,audio,iframe,embed,object){display:block}:where(img,svg,video){max-inline-size:100%;block-size:auto}:where(input,button,textarea,select),:where(input[type=file])::-webkit-file-upload-button{font:inherit;font-size:inherit;color:inherit;letter-spacing:inherit}::placeholder{color:var(--gray-7);opacity:.75}:where(input:not([type=range]),textarea){padding-inline:var(--size-2);padding-block:var(--size-1)}:where(select){padding-inline:var(--size-relative-4) 0;padding-block:.75ch;field-sizing:content}:where(textarea,select,input:not([type=button],[type=submit],[type=reset])){background-color:var(--surface-2);border-radius:var(--radius-2)}:where(textarea){resize:block;field-sizing:content;min-inline-size:var(--size-content-1);min-block-size:2lh}:where(input[type=checkbox],input[type=radio]){block-size:var(--size-3);inline-size:var(--size-3)}:where(svg:not([width])){inline-size:var(--size-10)}:where(code,kbd,samp,pre){font-family:var(--font-monospace-code),monospace}:where(:not(pre)>code,kbd){white-space:nowrap}:where(pre){white-space:pre;min-inline-size:0;max-inline-size:max-content;writing-mode:lr;direction:ltr}:where(:not(pre)>code){padding:var(--size-1) var(--size-2);background:var(--surface-2);border-radius:var(--radius-2);writing-mode:lr}:where(kbd,var){padding:var(--size-1) var(--size-2);border-width:var(--border-size-1);border-color:var(--surface-4);border-radius:var(--radius-2)}:where(mark){border-radius:var(--radius-2);padding-inline:var(--size-1)}:where(ol,ul){padding-inline-start:var(--size-8)}:where(li){padding-inline-start:var(--size-2)}:where(li,dd,figcaption){max-inline-size:var(--size-content-2)}:where(p){max-inline-size:var(--size-content-3);text-wrap:pretty}:where(dt,summary){font-weight:var(--font-weight-7)}:where(dt:not(:first-of-type)){margin-block-start:var(--size-5)}:where(small){font-size:max(.5em,var(--font-size-0));max-inline-size:var(--size-content-1)}:where(hr){margin-block:var(--size-fluid-5);height:var(--border-size-2);background-color:var(--surface-3)}:where(figure){display:grid;gap:var(--size-2);place-items:center}:where(figure)>:where(figcaption){font-size:var(--font-size-1);text-wrap:balance}:where(blockquote,:not(blockquote)>cite){border-inline-start-width:var(--border-size-3)}:where(blockquote){display:grid;gap:var(--size-3);padding-block:var(--size-3);padding-inline:var(--size-4);max-inline-size:var(--size-content-2)}:where(:not(blockquote)>cite){padding-inline-start:var(--size-2)}:where(summary){background:var(--surface-3);padding:var(--size-2) var(--size-3);margin:calc(var(--size-2) * -1) calc(var(--size-3) * -1);border-radius:var(--radius-2)}:where(details){padding-inline:var(--size-3);padding-block:var(--size-2);background:var(--surface-2);border-radius:var(--radius-2)}:where(details[open]>summary){margin-bottom:var(--size-2);border-end-start-radius:0;border-end-end-radius:0}:where(fieldset){border-radius:var(--radius-2);border:var(--border-size-1) solid var(--surface-4)}:where(del){background:var(--red-9);color:var(--red-2)}:where(ins){background:var(--green-9);color:var(--green-1)}:where(abbr){text-decoration-color:var(--blue-5)}:where(dialog){background-color:var(--surface-1);color:inherit;border-radius:var(--radius-3);box-shadow:var(--shadow-6)}:where(menu){padding-inline-start:0;display:flex;gap:var(--size-3)}:where(sup){font-size:.5em}:where(table){width:fit-content;border:1px solid var(--surface-2);background:var(--surface-2);border-radius:var(--radius-3);--nice-inner-radius: calc(var(--radius-3) - 2px)}:where(table:not(:has(tfoot)) tr:last-child td:first-child){border-end-start-radius:var(--nice-inner-radius)}:where(table:not(:has(tfoot)) tr:last-child td:last-child){border-end-end-radius:var(--nice-inner-radius)}:where(table thead tr:first-child th:first-child){border-start-start-radius:var(--nice-inner-radius)}:where(table thead tr:first-child th:last-child){border-start-end-radius:var(--nice-inner-radius)}:where(tfoot tr:last-child :is(th,td):first-of-type){border-end-start-radius:var(--nice-inner-radius)}:where(tfoot tr:last-child :is(th,td):last-of-type){border-end-end-radius:var(--nice-inner-radius)}:where(th){color:var(--text-1);background-color:var(--surface-2)}:where(table :is(a,button,[contenteditable]):is(:focus-visible)){outline-offset:-2px}:where(td){background:var(--surface-1);max-inline-size:var(--size-content-2);text-wrap:pretty}:where(td,th){text-align:left;padding:var(--size-2)}:where(:is(td,th):not([align])){text-align:center}:where(thead){border-collapse:collapse}:where(table tr:hover td),:where(tbody tr:nth-child(2n):hover td){background-color:var(--surface-3)}:where(table>caption){margin:var(--size-3)}:where(tfoot button){padding-block:var(--size-1);padding-inline:var(--size-3)}}@layer theme.reset{@media (--OSdark){:where(textarea,select,input:not([type=button],[type=submit],[type=reset])){background-color:#171a1c}:where(dialog){background-color:var(--surface-2)}:where(html){--shadow-strength: 10%;--shadow-color: 220 40% 2%}::placeholder{color:var(--gray-6)}}}@layer theme{@layer tokens,elements,components,widgets,utilities;@layer tokens{:root{--font-brand: "Outfit", system-ui, sans-serif;--brand-color: oklch(.64 .25 15.46);--bg-color: oklch(from var(--brand-color) 99% .01 h / .6);--text-color: oklch(from var(--brand-color) 30% .04 h);--text-muted: oklch(from var(--text-color) 50% c h);--radius-sm: 4px;--radius: 6px;--radius-rounded: 9999px;--text-size-1: clamp(2.486rem, 2.2698rem + 1.0811vw, 2.986rem);--text-size-2: clamp(2.088rem, 1.915rem + .8649vw, 2.488rem);--text-size-3: clamp(1.774rem, 1.6443rem + .6486vw, 2.074rem);--text-size-4: clamp(1.428rem, 1.2983rem + .6486vw, 1.728rem);--text-size-5: clamp(1.24rem, 1.1535rem + .4324vw, 1.44rem);--text-size-6: clamp(1.1rem, 1.0568rem + .2162vw, 1.2rem);--text-size-7: 1rem;--text-size-8: .833rem;--text-size-9: .694rem}}@layer elements{html{font-family:var(--font-brand, "Outfit", system-ui, sans-serif);font-weight:300;font-size:var(--text-size-7, 1rem);line-height:1.6;color:var(--text-color, #342e28);background-color:var(--bg-color, whitesmoke)}}@layer utilities{.hidden{display:none}.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}.row{display:flex;gap:var(--row-gap, .75rem);flex-wrap:wrap}.prose>div>div>:where(*+*){margin-block-start:var(--prose-flow, 1.5em)}.stack{display:flex;flex-direction:column;gap:var(--stack-gap, 1rem)}.pile{display:grid;grid-template-areas:"pile";place-content:center}.pile>*{grid-area:pile}.breakout-container{--content-max-size: calc(72ch + 19rem) ;--header-gutter-size: 3ex;--content-gutter-size: 2rem;container-type:inline-size;display:grid;grid-template-columns:[full-width-start] minmax(calc(var(--content-gutter-size) - var(--header-gutter-size)),1fr) [header-start] var(--header-gutter-size) [content-start] min(100% - var(--content-gutter-size) * 2,var(--content-max-size)) [content-end] var(--header-gutter-size) [header-end] minmax(calc(var(--content-gutter-size) - var(--header-gutter-size)),1fr) [full-width-end];align-content:start}.breakout-container>*{grid-column:content}.breakout-container>.header{grid-column:header}.breakout-container>.full-width{grid-column:full-width}}}.page{padding-block-start:2rem;min-height:100vh}.page:is(.breakout-container){grid-template-rows:min-content 1fr min-content}.page-content{margin-block-end:4rem;font-size:1rem;color:var(--text-color)}.widget-content-narrow{margin-inline:auto;max-width:72ch;width:100%;margin-block-end:4rem}@layer theme.components{@scope (.intro){:scope{display:grid;grid-template-columns:1fr;gap:2rem}@media (min-width: 48rem){:scope{grid-template-columns:2fr 3fr;gap:0}}:scope>.left-column{top:0;align-self:start;display:flex;gap:8rem;flex-direction:column;min-height:100vh;padding-block-start:2rem}@media (min-width: 48rem){:scope>.left-column{position:sticky}}:scope>.left-column>.breakout-container{min-height:calc(100vh - 2rem)}.homepage :is(:scope>.left-column)>.breakout-container{gap:6rem 0;grid-template-rows:min-content 1fr min-content}:scope>.right-column{padding:2rem}}}@layer theme.components{@scope (.site-header){:scope{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-block-end:3rem}@container (inline-size > 480px){:scope{justify-content:space-between}}.logo{font-size:1.5rem;font-weight:700;text-decoration:none;color:inherit}.logo b{color:var(--brand-color);font-size:1.3em;opacity:.8}nav{display:flex;align-items:center}ul{--row-gap: .25rem;list-style:none;margin:0;padding:0}li a{display:block;color:inherit;border-radius:var(--radius-rounded);padding-block:.375rem;padding-inline:.875rem;text-decoration:none;transition:background .15s,color .15s;white-space:nowrap}li a:hover{background:oklch(from var(--bg-color) 95% c h);color:var(--brand-color)}li a.active{color:var(--brand-color);background:oklch(from var(--brand-color) 99% .1 h)}}}.project-card[data-v-95fc890c]{--bg: oklch(from var(--bg-color) 100% c h / 1);--border: oklch(from var(--brand-color) 92% calc(c/2) h);--shadow: oklch(from var(--brand-color) 53.994% .19066 h / .1);display:flex;flex-direction:column;position:relative;padding:1rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-color);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:var(--text-size-8);transition:border-color .15s ease,box-shadow .15s ease}.project-card[data-v-95fc890c]:hover{border-color:var(--brand-color);box-shadow:0 0 0 3px var(--shadow)}.project-card__body[data-v-95fc890c]{flex:1;min-width:0}.project-card__name[data-v-95fc890c]{display:block;margin:0 0 8px;font-weight:700;color:var(--text-color);text-decoration:none;word-break:break-word}.project-card__name[data-v-95fc890c]:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0}.project-card__description[data-v-95fc890c]{margin:0 0 12px;color:var(--text-color);font-size:var(--text-size-9);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-clamp:2;overflow:hidden}.project-card__footer[data-v-95fc890c]{display:flex;align-items:center;justify-content:space-between;margin-top:12px;gap:8px}.project-card__meta[data-v-95fc890c]{display:grid;align-items:center;gap:12px;flex-wrap:wrap}.project-card__topics[data-v-95fc890c],.project-card__deets[data-v-95fc890c]{display:flex;flex-wrap:wrap;gap:4px}.project-card__deets[data-v-95fc890c]{gap:16px}.project-card__language[data-v-95fc890c]{display:flex;align-items:center;gap:4px;font-size:var(--text-size-9);color:var(--text-muted);white-space:nowrap}.project-card__language-dot[data-v-95fc890c]{width:12px;height:12px;border-radius:50%;flex-shrink:0}.project-card__pushed[data-v-95fc890c]{font-size:var(--text-size-9);color:var(--text-muted)}.project-card__pill[data-v-95fc890c]{font-size:var(--text-size-9);color:var(--text-muted);background:oklch(from var(--bg) 98% c h / .9);border:1px solid oklch(from var(--border) l c h / .8);border-radius:var(--radius-rounded);padding:0 6px;white-space:nowrap}.project-card__logo[data-v-95fc890c]{width:16px;height:16px;fill:#1f2328;flex-shrink:0;align-self:end}.blog-post-card[data-v-3399ea99]{--bg: oklch(from var(--bg-color) 100% c h / 1);--border: oklch(from var(--brand-color) 92% calc(c/2) h);--shadow: oklch(from var(--brand-color) 53.994% .19066 h / .1);display:block;padding:1rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-color);text-decoration:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:var(--text-size-8);transition:border-color .15s ease,box-shadow .15s ease}.blog-post-card[data-v-3399ea99]:hover,.blog-post-card[data-v-3399ea99]:focus-visible{border-color:var(--brand-color);box-shadow:0 0 0 3px var(--shadow);outline:none}.blog-post-card__title[data-v-3399ea99]{margin:0 0 8px;font-weight:700;color:var(--text-color)}.blog-post-card__excerpt[data-v-3399ea99]{margin:0 0 12px;color:var(--text-color);word-break:break-word}.blog-post-card__footer[data-v-3399ea99]{display:flex;align-items:center;justify-content:space-between;margin-top:12px}.blog-post-card__meta[data-v-3399ea99]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.blog-post-card__date[data-v-3399ea99]{color:var(--text-muted);font-size:var(--text-size-9)}.blog-post-card__categories[data-v-3399ea99]{display:flex;flex-wrap:wrap;gap:4px;list-style:none;margin:0;padding:0}.blog-post-card__categories li[data-v-3399ea99]{font-size:var(--text-size-9);color:var(--text-muted);background:oklch(from var(--bg) 98% c h / .9);border:1px solid oklch(from var(--border) l c h / .8);border-radius:var(--radius-rounded);padding:0 6px;white-space:nowrap}.blog-post-card__logo[data-v-3399ea99]{font-size:1rem;font-weight:700;flex-shrink:0;line-height:1;align-self:end}.blog-post-card__logo b[data-v-3399ea99]{color:var(--brand-color);font-family:Outfit;font-size:22px;font-weight:700}.bsky-embed[data-v-3067587d]{--bg: oklch(from var(--bg-color) 99% c h / 1);--border: oklch(from var(--brand-color) 92% calc(c/2) h);--shadow: oklch(from var(--brand-color) 53.994% .19066 h / .1)}.bsky-embed__images[data-v-3067587d]{display:grid;gap:2px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border)}.bsky-embed__image[data-v-3067587d]{width:100%;display:block;color:transparent;object-fit:cover}.bsky-embed__images--2[data-v-3067587d]{grid-template-columns:1fr 1fr}.bsky-embed__images--2 .bsky-embed__image[data-v-3067587d]{aspect-ratio:1 / 1}.bsky-embed__images--3[data-v-3067587d]{grid-template-columns:1fr 1fr}.bsky-embed__images--3 .bsky-embed__image[data-v-3067587d]:first-child{grid-row:span 2;aspect-ratio:1 / 1}.bsky-embed__images--3 .bsky-embed__image[data-v-3067587d]:not(:first-child){aspect-ratio:2 / 1}.bsky-embed__images--4[data-v-3067587d]{grid-template-columns:1fr 1fr}.bsky-embed__images--4 .bsky-embed__image[data-v-3067587d]{aspect-ratio:3 / 2}.bsky-embed__video-wrap[data-v-3067587d]{border-radius:var(--radius);overflow:hidden;border:1px solid var(--border)}.bsky-embed__video[data-v-3067587d]{width:100%;display:block;background:#000}.bsky-embed__external[data-v-3067587d]{display:block;border:1px solid var(--border);border-radius:var(--radius);text-decoration:none;color:inherit;transition:border-color .15s ease,box-shadow .15s ease}.bsky-embed__external[data-v-3067587d]:hover{border-color:var(--brand-color);box-shadow:0 0 0 3px var(--shadow)}.bsky-embed__gif-img[data-v-3067587d]{width:100%;display:block;border-radius:6px;color:transparent}.bsky-embed__link-thumb[data-v-3067587d]{width:100%;aspect-ratio:16 / 9;object-fit:cover;display:block;border-radius:6px 6px 0 0;border-bottom:1px solid var(--border);color:transparent}.bsky-embed__link-body[data-v-3067587d]{padding:.5rem .75rem .625rem;background:var(--bg);border-radius:0 0 6px 6px}.bsky-embed__link-title[data-v-3067587d]{font-weight:700;color:var(--text-color);font-size:var(--text-size-8);line-height:1.4}.bsky-embed__link-desc[data-v-3067587d]{color:var(--text-muted);font-size:var(--text-size-9);line-height:1.5;margin-top:.125rem;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.bsky-embed__link-url[data-v-3067587d]{display:flex;align-items:center;gap:.25rem;color:var(--text-muted);font-size:var(--text-size-9);margin-top:.25rem}.bsky-embed__link-icon[data-v-3067587d]{display:block;width:.75rem;height:.75rem;fill:none;stroke:currentColor;stroke-width:1.5;flex-shrink:0}.bsky-embed__quote[data-v-3067587d]{margin:0;padding:.625rem .75rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);font-size:var(--text-size-8);line-height:1.5;overflow:hidden;min-width:0}.bsky-embed__quote-header[data-v-3067587d]{display:grid;grid-template-columns:20px 1fr;align-items:center;gap:.5rem;margin-bottom:.375rem}.bsky-embed__quote-avatar[data-v-3067587d]{width:1.25rem;height:1.25rem;border-radius:50%;object-fit:cover;flex-shrink:0}.bsky-embed__quote-author-info[data-v-3067587d]{display:flex;align-items:baseline;gap:.25rem;min-width:0}.bsky-embed__quote-display-name[data-v-3067587d]{color:var(--text-color);font-weight:700;white-space:nowrap;flex-shrink:0}.bsky-embed__quote-handle[data-v-3067587d]{color:var(--text-muted);font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.bsky-embed__quote-text[data-v-3067587d]{color:var(--text-color);margin:0;white-space:pre-wrap;word-break:break-word}.bsky-embed__quote-embeds[data-v-3067587d]{margin-top:.5rem}.bsky-embed__rwm[data-v-3067587d]{display:flex;flex-direction:column;gap:.5rem}.bsky-post[data-v-3c8656b8]{--bg: oklch(from var(--bg-color) 100% c h / 1);--border: oklch(from var(--brand-color) 92% calc(c/2) h);--shadow: oklch(from var(--brand-color) 53.994% .19066 h / .1);display:block;padding:1rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-color);text-decoration:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:var(--text-size-8);transition:border-color .15s ease,box-shadow .15s ease}.bsky-post[data-v-3c8656b8]:hover,.bsky-post[data-v-3c8656b8]:focus-visible{border-color:var(--brand-color);box-shadow:0 0 0 3px var(--shadow);text-decoration:none;outline:none}.bsky-post__text[data-v-3c8656b8]{margin:0 0 12px;color:var(--text-color);white-space:pre-wrap;word-break:break-word}.bsky-post__footer[data-v-3c8656b8]{display:flex;align-items:center;justify-content:space-between;margin-top:12px}.bsky-post__date[data-v-3c8656b8]{color:var(--text-muted);font-size:var(--text-size-9)}.bsky-post__logo[data-v-3c8656b8]{width:16px;height:16px;fill:#0085ff;flex-shrink:0}.bsky-post__sr-only[data-v-3c8656b8]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.review-card[data-v-7cc8d589]{--bg: oklch(from var(--bg-color) 100% c h / 1);--border: oklch(from var(--brand-color) 92% calc(c/2) h);--shadow: oklch(from var(--brand-color) 53.994% .19066 h / .1);--popfeed: oklch(.53 .26 279.22);display:grid;grid-template-columns:111px 1fr;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-color);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:var(--text-size-8);overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease}.poster-wrap[data-v-7cc8d589]{width:111px;aspect-ratio:37 / 54;flex-shrink:0;overflow:hidden}.poster[data-v-7cc8d589]{width:100%;height:100%;object-fit:cover;display:block}.poster-placeholder[data-v-7cc8d589]{width:100%;height:100%;min-height:5rem;background:oklch(var(--bg) 99% c h)}.card-body[data-v-7cc8d589]{padding:12px 16px;display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.title[data-v-7cc8d589]{margin:0;font-weight:700;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rating[data-v-7cc8d589]{display:flex;gap:.05em;font-size:.75rem}.star[data-v-7cc8d589]{color:var(--brand-color)}.star.half[data-v-7cc8d589]{font-style:normal}.text[data-v-7cc8d589]{margin:0;color:var(--text-color);font-size:var(--text-size-9);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-clamp:2;overflow:hidden}.text--expandable[data-v-7cc8d589]{cursor:pointer}.read-more[data-v-7cc8d589]{background:none;border:none;padding:0;margin:0;font-size:var(--text-size-9);color:var(--brand-color);cursor:pointer;font-family:inherit;text-decoration:none;text-underline-offset:2px;text-align:left;line-height:1}.read-more[data-v-7cc8d589]:hover{text-decoration:underline}.card-footer[data-v-7cc8d589]{display:flex;align-items:center;justify-content:space-between;margin-top:auto}.card-meta[data-v-7cc8d589]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.card-date[data-v-7cc8d589]{font-size:var(--text-size-9);color:var(--text-muted)}.type-badge[data-v-7cc8d589]{display:flex;align-items:center;justify-content:center;flex-shrink:0;height:18px;background:oklch(from var(--bg) 98% c h / .9);border:1px solid oklch(from var(--border) l c h / .8);border-radius:var(--radius-rounded);padding:3px;box-sizing:border-box;gap:2px;white-space:nowrap;font-size:var(--text-size-9)}.type-icon[data-v-7cc8d589]{height:100%;object-fit:contain;display:block}.popfeed-logo[data-v-7cc8d589]{width:18px;height:18px;border-radius:4px;background-color:#5a3ffb;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:2px;box-sizing:border-box}.popfeed-icon[data-v-7cc8d589]{width:100%;height:100%;object-fit:contain;display:block}.text-popover[data-v-7cc8d589]{position:fixed;inset:unset;margin:0;top:anchor(top);left:anchor(left);width:anchor-size(width);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 2rem 1rem 1rem;box-shadow:0 8px 24px var(--shadow);opacity:0;transform-origin:top center;transition:opacity .2s ease,overlay .2s ease allow-discrete}.text-popover[data-v-7cc8d589]:popover-open{opacity:1}@starting-style{.text-popover[data-v-7cc8d589]:popover-open{opacity:0;transform:scaleY(.4)}}.text-popover-body[data-v-7cc8d589]{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:var(--text-size-9);line-height:1.5;color:var(--text-color)}.text-popover-close[data-v-7cc8d589]{position:absolute;top:.25rem;right:.25rem;background:none;border:none;width:1.375rem;height:1.375rem;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:var(--text-size-9);color:var(--text-muted);border-radius:calc(var(--radius) / 2);padding:0;line-height:1}.text-popover-close[data-v-7cc8d589]:hover{background:oklch(from var(--bg-color) 99% c h / 1);color:var(--text-color)}.channel-content[data-v-66f734f7]{container-type:inline-size}.channel-content__status[data-v-66f734f7]{color:var(--text-muted);font-size:.875rem}.channel-content__feed[data-v-66f734f7]{position:relative;list-style:none;margin:0;padding:0}.channel-content__item[data-v-66f734f7]{width:100%;margin-bottom:1rem}@container (min-width: 640px){.channel-content__item[data-v-66f734f7]{width:calc(50% - 8px)}}@container (min-width: 1024px){.channel-content__item[data-v-66f734f7]{width:calc(33.333% - 11px)}}@layer theme.components{@scope (.social-links){:scope{--row-gap: 1.5rem}.markdown-content__homepage :scope{margin-block-start:2rem}:scope a{display:flex;align-items:center;gap:.4em;text-decoration:none;color:inherit;font-size:inherit;background:none}:scope a:after{display:none}:scope a:hover{text-decoration:underline}:scope a svg{width:1.1em;height:1.1em;fill:currentColor;flex-shrink:0}:scope a.github svg{fill:#000}:scope a.bluesky svg{fill:#0085ff}}}@layer theme.components{@scope (.site-footer){:scope{align-items:center;justify-content:space-between;margin-top:auto;padding-block:1.5rem;padding-inline:0;font-size:var(--text-size-8);color:var(--text-muted)}}}@layer theme.components{@scope (.page-header){:scope{--stack-gap: .75rem;padding-block-end:2rem;border-bottom:1px solid oklch(from var(--text-muted) l c h / .1);margin-block-end:2.5rem}.page-header__tags{--row-gap: 1rem;list-style:none;margin:0;padding:0}.page-header__tags li{margin:0;font-size:var(--text-size-8);font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--brand-color)}.page-header__tags li::marker{content:""}.page-header__tags li:before{content:"+"}.page-header__excerpt{font-size:var(--text-size-6)}.page-header__meta{--row-gap: 1ch;align-items:baseline;font-size:var(--text-size-8);color:var(--text-muted)}.page-header__changelog-link{display:flex;align-items:baseline;gap:.3em;color:var(--brand-color);background:none;text-decoration-color:color-mix(in oklch,var(--brand-color),transparent 60%);transition:color .15s,text-decoration-color .15s}.page-header__changelog-link svg{flex-shrink:0;fill:currentColor;align-self:center;width:1.5em}}}section[data-v-6213655f]{container-type:inline-size}h2[data-v-6213655f]{font-family:var(--font-brand);font-size:var(--text-size-5);font-weight:700;margin:0;margin-block-end:1.5rem}.post-grid[data-v-6213655f]{display:grid;grid-template-columns:1fr;gap:1rem;list-style:none;margin:0;padding:0}@container (min-width: 30rem){.post-grid--grid[data-v-6213655f]{grid-template-columns:repeat(2,1fr)}}@container (min-width: 48rem){.post-grid--grid[data-v-6213655f]{grid-template-columns:repeat(3,1fr)}}.cta[data-v-6213655f]{display:flex;justify-content:center;margin-top:2rem}.cta__link[data-v-6213655f]{display:inline-block;background:var(--text-muted);color:var(--bg-color);border-radius:var(--radius-rounded);padding:.5rem 1.5rem;font-family:var(--font-brand);font-size:var(--text-size-7);text-decoration:none;transition:background .15s}.cta__link[data-v-6213655f]:hover,.cta__link[data-v-6213655f]:focus-visible{background:var(--text-color);outline:none}.pagination[data-v-6213655f]{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:2rem}.pagination__btn[data-v-6213655f]{background:var(--text-muted);color:oklch(from var(--bg-color) l c h / 1);border:none;border-radius:var(--radius-rounded);padding:.5rem 1.5rem;font-family:var(--font-brand);font-size:var(--text-size-7);cursor:pointer;transition:background .15s}.pagination__btn[data-v-6213655f]:hover:not(:disabled),.pagination__btn[data-v-6213655f]:focus-visible:not(:disabled){background:var(--text-color);outline:none}.pagination__btn[data-v-6213655f]:disabled{opacity:.35;cursor:not-allowed}.pagination__counter[data-v-6213655f]{font-family:var(--font-brand);font-size:var(--text-size-7);color:inherit}@layer theme.components{@scope (.toc-wrapper){.toc{margin-block-end:2rem;font-size:var(--text-size-8);border:1px solid oklch(0 0 0 / .12);border-radius:var(--radius);overflow:hidden;width:100%}.toc__toggle{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;font-size:var(--text-size-8);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-color);background:#eaebef;cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none}.toc__toggle::-webkit-details-marker{display:none}.toc__toggle:after{content:"";flex-shrink:0;width:.5rem;height:.5rem;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);transition:transform .2s}.toc[open] .toc__toggle:after{transform:rotate(-135deg)}.toc__nav{padding:.5rem 0}.toc__label{display:none}.toc__list{list-style:none;margin:0;padding:0}.toc__link{display:block;padding:.35rem 1rem;color:var(--text-muted);text-decoration:none;transition:color .15s}.toc__link:hover{color:var(--text-color)}.toc__item--h3 .toc__link{padding-inline-start:2rem}.toc__item--active>.toc__link{color:var(--brand-color);font-weight:700}@media (min-width: 901px){.toc{border:none;border-radius:0;overflow:visible}.toc__toggle{display:none}.toc__nav{padding:0}.toc__label{display:block;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin:0;margin-block-end:.75rem}.toc__link{padding:.3rem .75rem;border-left:2px solid oklch(from var(--text-muted) l c h / .1);transition:color .15s,border-color .15s}.toc__link:hover{color:var(--text-color);border-left-color:var(--text-color)}.toc__item--h3 .toc__link{padding-inline-start:1.5rem}.toc__item--active>.toc__link{color:var(--brand-color);border-left-color:var(--brand-color)}}}}@layer theme.components{@scope (.changelog){:scope{margin-block-start:3rem;padding-block-start:1.5rem;border-top:1px solid oklch(from var(--text-muted) l c h / .1)}.changelog__heading{font-size:var(--text-size-9);font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin:0;margin-block-end:.75rem}.changelog__list{--stack-gap: .375rem;margin:0;padding-inline-start:1.25rem}.changelog__item{font-size:var(--text-size-8);color:var(--text-muted)}}}@layer theme.components{@scope (.timeline){:scope{list-style:none;margin:0;padding:0;padding-inline-start:1.5rem;border-inline-start:2px solid oklch(from var(--text-muted) l c h / .2)}.timeline-item{position:relative;padding-block:.25rem;margin-block-end:2rem}.timeline-item:before{content:"";position:absolute;inset-inline-start:calc(-1.5rem - 5px);top:50%;transform:translateY(-50%);width:10px;height:10px;border-radius:50%;background:var(--brand-color);border:2px solid var(--bg-color);outline:2px solid var(--brand-color)}.timeline-item__dates{display:flex;gap:.4ch;font-size:var(--text-size-8);font-weight:500;letter-spacing:.02em;color:var(--text-muted);margin:0;margin-block-end:.25rem}.timeline-item__title{font-size:var(--text-size-7);font-weight:700;margin:0;margin-block-end:.125rem}.timeline-item__company{font-size:var(--text-size-8);color:var(--text-muted);margin:0}.work-positions__cta{display:inline-block;margin-block-start:.5rem;font-size:var(--text-size-8)}}}@layer theme.elements{@scope (.markdown-content){:scope{margin-inline:auto;width:100%;max-width:72ch}:where(p,ul,ol,dl,li,dt,dd){font-size:var(--text-size-7, 1rem)}.markdown-content__homepage :where(p,ul,ol,dl,li,dt,dd){font-size:var(--text-size-6)}.markdown-content__homepage :where(h1)+:where(p,ul,ol,dl,li,dt,dd){font-size:var(--text-size-4)}:where(h1,h2,h3,h4,h5,h6){font-weight:700;line-height:1.25;position:relative}:where(h1,h2,h3,h4,h5,h6):before{content:"⁕" "";color:var(--brand-color);position:absolute;inset-inline-start:0;inset-block-start:0;z-index:-1;pointer-events:none;translate:-50% -25%;opacity:.8}:where(h1){font-size:var(--text-size-1)}:where(h2){font-size:var(--text-size-2)}:where(h3){font-size:var(--text-size-3)}:where(h4){font-size:var(--text-size-4)}:where(h5){font-size:var(--text-size-5)}:where(h6){font-size:var(--text-size-6)}:where(a:not(.header-anchor)){font-weight:400;background:linear-gradient(to bottom,oklch(from var(--brand-color) l c h / .8),oklch(from var(--brand-color) l c h / .8));background-position:0 100%;background-repeat:repeat-x;background-size:3px 3px}@media (prefers-reduced-motion: no-preference){:where(a:not(.header-anchor)):hover{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg id='squiggle-link' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:ev='http://www.w3.org/2001/xml-events' viewBox='0 0 20 4'%3E%3Cstyle type='text/css'%3E.squiggle{animation:shift 450ms linear infinite;}@keyframes shift {from {transform:translateX(0);}to {transform:translateX(-20px);}}%3C/style%3E%3Cpath fill='none' stroke='oklch(0.64 0.25 15.46)' stroke-width='2' class='squiggle' d='M0,3.5 c 5,0,5,-3,10,-3 s 5,3,10,3 c 5,0,5,-3,10,-3 s 5,3,10,3'/%3E%3C/svg%3E");background-position:0 100%;background-size:auto 6px;background-repeat:repeat-x;text-decoration:none}}:where(a:not(.header-anchor))[target=_blank]:after{content:"↗";font-size:.75em;color:var(--brand-color);margin-left:.125em;text-decoration:none}:where(strong){font-weight:700}:where(em){font-style:italic}:where(del){text-decoration:line-through}:where(ul,ol){padding-inline-start:1.5rem}:where(ul,ol)>*+*{margin-block-start:1.5em}:where(ul,ol) li::marker{font-size:1.2em;font-weight:500;color:oklch(from var(--brand-color) l c h / .8)}:where(ul,ol) :where(ul,ol){margin-block:.25rem}:where(ul li)::marker{content:"→  "}:where(blockquote){display:grid;grid-template-areas:"quote content";grid-template-columns:42px 1fr;gap:2rem;padding-block:1rem;font-size:var(--text-size-5);font-weight:500;font-style:italic;border:none}:where(blockquote):before{content:"“";font-size:4em;line-height:1;color:oklch(from var(--brand-color) l c h / .8);grid-area:quote;align-self:start}:where(blockquote) p{font:inherit;grid-area:content}:where(blockquote) p+p{margin-block-start:var(--prose-flow, 1em)}:where(img){display:block;max-width:100%;border-radius:var(--radius)}:where(:not(pre)>code){font-family:Consolas,Courier New,monospace;font-weight:400;padding:.25rem .5rem;color:var(--text-color);background-color:oklch(from var(--bg-color) calc(l*.95) c h / .8);border-radius:var(--radius-sm)}:where(hr){--prose-flow: 3em;border:none;height:1px;background-color:#0000001a;margin-block:var(--prose-flow, 3em)}:where(details){--_duration: .2s;border-radius:var(--radius);border:#a8a8a8 solid 1px;background-color:#fff}@media (prefers-reduced-motion: no-preference){:where(details){interpolate-size:allow-keywords}}:where(details)::details-content{opacity:0;block-size:0;overflow-y:clip;transition:content-visibility var(--_duration) allow-discrete,opacity var(--_duration),block-size var(--_duration)}:where(details)[open]::details-content{opacity:1;block-size:auto}:where(details)>p{padding:1rem}:where(details) summary{--padding: 1rem;display:grid;grid-template-columns:1fr 40px;align-items:center;padding-inline-start:var(--padding);padding-block:calc(var(--padding) / 2);font-weight:700}:where(details) summary:after{content:"+";display:block;justify-self:center;font-size:1.25em}:where(details)[open] summary:after{content:"−"}:where(.custom-block:not(details)){--padding: 1rem;font-size:var(--text-size-7);line-height:1.6;border-radius:var(--radius);border:1px solid var(--block-color);overflow:clip}:where(.custom-block:not(details))>.custom-block-title{padding-inline:var(--padding);padding-block:calc(var(--padding) / 2);font-weight:700;color:var(--block-color);border-bottom:1px solid var(--block-color);background-color:oklch(from var(--block-color) .9 .1 h)}:where(.custom-block:not(details))>p:not(.custom-block-title){padding:var(--padding);margin:0}:where(.custom-block:not(details)).info{--block-color: oklch(.45 .18 250)}:where(.custom-block:not(details)).warning{--block-color: oklch(.52 .18 70)}:where(.custom-block:not(details)).danger{--block-color: oklch(.52 .25 15.46)}:where(.custom-block:not(details)).tip{--block-color: oklch(.42 .18 155)}:where(table){--prose-flow: 2em;margin-block:var(--prose-flow, 2em);width:100%;border-collapse:separate;border-spacing:0;font-size:var(--text-size-8);border:1px solid oklch(0 0 0 / .1);border-radius:var(--radius);overflow:hidden}:where(table) thead tr{background:#0000000a}:where(table) thead th{padding:.625rem .875rem;text-align:start;font-weight:600;font-size:var(--text-size-9);text-transform:uppercase;letter-spacing:.06em;color:#545558;border-bottom:1px solid oklch(0 0 0 / .1);white-space:nowrap}:where(table) tbody tr{transition:background .1s}:where(table) tbody tr:hover{background:#00000006}:where(table) tbody tr:not(:last-child) td{border-bottom:1px solid oklch(0 0 0 / .06)}:where(table) tbody td{padding:.625rem .875rem;text-align:start;color:#393a3d;font-variant-numeric:tabular-nums;vertical-align:top}@scope (:where(div[class^="language-"],div[class*=" language-"])){:scope{--prose-flow: 2em;position:relative;border-radius:var(--radius);overflow:hidden;margin:0;margin-block:var(--prose-flow, 2em);background-color:#1e1e1e}pre{margin:0;padding:2.75rem 1.5rem 1.25rem;overflow-x:auto;background-color:#1e1e1e}pre code{display:block;background-color:transparent;font-family:Consolas,Courier New,monospace;font-size:.875rem;line-height:1.6;color:#d4d4d4}.lang{position:absolute;top:.75rem;left:1rem;font-size:.75rem;color:#858585;font-family:Consolas,Courier New,monospace;-webkit-user-select:none;user-select:none}.copy{position:absolute;top:.5rem;right:.5rem;width:1.75rem;height:1.75rem;border:1px solid #3e3e3e;border-radius:var(--radius-sm);background-color:#2d2d2d;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23858585' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='13' height='13' rx='2' ry='2'%3E%3C/rect%3E%3Cpath d='M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1'%3E%3C/path%3E%3C/svg%3E");background-repeat:no-repeat;background-position:center;cursor:pointer;transition:border-color .15s,background-color .15s}.copy:hover{border-color:#858585;background-color:#3e3e3e}.copy.copied{border-color:#4ec9b0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%234ec9b0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E")}}}}:is(.post-layout[data-v-57886da0],.about-layout[data-v-57886da0]){display:grid;grid-template-columns:100%;grid-auto-rows:min-content;grid-template-areas:"header" "aside" "content";column-gap:3rem;align-items:start;max-width:calc(72ch + 19rem);margin-inline:auto;width:100%;flex:1}.about-layout[data-v-57886da0]{max-width:calc(72ch + 19rem);grid-template-areas:"header" "content" "aside"}:is(.post-layout[data-v-57886da0],.about-layout[data-v-57886da0]) .page-header{grid-area:header;max-width:none;margin-inline:0}:is(.post-layout[data-v-57886da0],.about-layout[data-v-57886da0]) .page-header :is(h1,p){max-width:86ch}.career-history[data-v-57886da0]{grid-area:aside}.toc-sidebar[data-v-57886da0]{grid-area:aside;position:static;top:2rem;min-width:0}@media (min-width: 901px){:is(.post-layout[data-v-57886da0],.about-layout[data-v-57886da0]){grid-template-columns:minmax(0,72ch) 16rem;grid-auto-rows:min-content;grid-template-areas:"header header" "content aside"}.about-layout[data-v-57886da0]{grid-template-columns:auto 16rem}.toc-sidebar[data-v-57886da0]{position:sticky}}
