.ec-comments[data-astro-cid-godm52ds]{--ec-comment-gap:1.5rem;--ec-comment-indent:2rem;--ec-comment-border:1px solid #e5e7eb}.ec-comments-list[data-astro-cid-godm52ds],.ec-comment-replies[data-astro-cid-godm52ds]{margin:0;padding:0;list-style:none}.ec-comments-list[data-astro-cid-godm52ds]>li[data-astro-cid-godm52ds]+li[data-astro-cid-godm52ds]{margin-top:var(--ec-comment-gap)}.ec-comment[data-astro-cid-godm52ds]{padding-bottom:var(--ec-comment-gap);border-bottom:var(--ec-comment-border)}.ec-comment-replies[data-astro-cid-godm52ds]{margin-top:var(--ec-comment-gap);padding-left:var(--ec-comment-indent)}.ec-comment-replies[data-astro-cid-godm52ds]>li[data-astro-cid-godm52ds]+li[data-astro-cid-godm52ds]{margin-top:var(--ec-comment-gap)}.ec-comment-header[data-astro-cid-godm52ds]{flex-wrap:wrap;align-items:baseline;gap:.5rem;display:flex}.ec-comment-author[data-astro-cid-godm52ds]{font-weight:600}.ec-comment-author[data-astro-cid-godm52ds] a[data-astro-cid-godm52ds]{color:inherit}.ec-comment-badge[data-astro-cid-godm52ds]{vertical-align:super;font-size:.75em}.ec-comment-date[data-astro-cid-godm52ds]{opacity:.6;font-size:.875em}.ec-comment-body[data-astro-cid-godm52ds]{white-space:pre-wrap;word-break:break-word;margin-top:.5rem}.ec-comment-actions[data-astro-cid-godm52ds]{margin-top:.5rem}.ec-reaction[data-astro-cid-godm52ds]{font:inherit;color:inherit;border:var(--ec-comment-border);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:.35rem;padding:.15rem .6rem;font-size:.875em;display:inline-flex}.ec-reaction[data-astro-cid-godm52ds][aria-pressed=true]{border-color:currentColor;font-weight:600}.ec-reaction[data-astro-cid-godm52ds][aria-pressed=true] .ec-reaction-icon[data-astro-cid-godm52ds]{color:#e0245e}.ec-reaction[data-astro-cid-godm52ds]:disabled{opacity:.5;cursor:default}.ec-reaction-count[data-astro-cid-godm52ds]{font-variant-numeric:tabular-nums}.ec-comment-form[data-astro-cid-myimadtb]{--ec-form-gap:.75rem}.ec-comment-form-fields[data-astro-cid-myimadtb]{gap:var(--ec-form-gap);display:grid}@media (width>=640px){.ec-comment-form-fields[data-astro-cid-myimadtb]{grid-template-columns:1fr 1fr}}.ec-comment-form-field[data-astro-cid-myimadtb]{margin-top:var(--ec-form-gap);flex-direction:column;gap:.25rem;display:flex}.ec-comment-form-field[data-astro-cid-myimadtb]:first-child,.ec-comment-form-fields[data-astro-cid-myimadtb] .ec-comment-form-field[data-astro-cid-myimadtb]{margin-top:0}.ec-comment-form-field[data-astro-cid-myimadtb] input[data-astro-cid-myimadtb],.ec-comment-form-field[data-astro-cid-myimadtb] textarea[data-astro-cid-myimadtb]{border:1px solid var(--ec-form-border,#d1d5db);font:inherit;background:var(--ec-form-bg,#fff);color:var(--ec-form-color,inherit);border-radius:.25rem;padding:.5rem}.dark .ec-comment-form-field[data-astro-cid-myimadtb] input[data-astro-cid-myimadtb],.dark .ec-comment-form-field[data-astro-cid-myimadtb] textarea[data-astro-cid-myimadtb]{--ec-form-bg:#1f2937;--ec-form-border:#4b5563;--ec-form-color:#f9fafb}.ec-comment-user-info[data-astro-cid-myimadtb]{background:var(--ec-form-user-bg,#f3f4f6);border:1px solid var(--ec-form-user-border,#d1d5db);border-radius:.375rem;align-items:center;gap:.5rem;padding:.75rem;font-size:.875rem;display:flex}.dark .ec-comment-user-info[data-astro-cid-myimadtb]{background:var(--ec-form-user-bg-dark,#374151)}.ec-comment-user-name[data-astro-cid-myimadtb]{font-weight:600}.ec-comment-user-email[data-astro-cid-myimadtb]{opacity:.7}.ec-comment-user-email[data-astro-cid-myimadtb]:before{content:"·";margin-right:.5rem}.ec-comment-form-submit[data-astro-cid-myimadtb]{margin-top:var(--ec-form-gap);font:inherit;cursor:pointer;background:var(--ec-form-submit-bg,#1f2937);color:var(--ec-form-submit-color,#fff);border:none;border-radius:.25rem;padding:.5rem 1.5rem;font-weight:600}.ec-comment-form-submit[data-astro-cid-myimadtb]:disabled{opacity:.6;cursor:not-allowed}.ec-comment-form-status[data-astro-cid-myimadtb]{margin-top:var(--ec-form-gap);font-size:.875em}.ec-comment-form-status[data-astro-cid-myimadtb]:empty{display:none}.ec-comment-form-success[data-astro-cid-myimadtb]{color:var(--ec-form-success-color,#059669)}.ec-comment-form-error[data-astro-cid-myimadtb]{color:var(--ec-form-error-color,#dc2626)}.emdash-image-media[data-astro-cid-6depetnu]{max-width:100%;height:auto}.emdash-image[data-astro-cid-nzlefzml]{margin:1.5rem 0}.emdash-image[data-astro-cid-nzlefzml] img[data-astro-cid-nzlefzml]{max-width:100%;height:auto}.emdash-image[data-astro-cid-nzlefzml] figcaption[data-astro-cid-nzlefzml]{color:var(--emdash-caption-color,var(--color-muted,#666));text-align:center;margin-top:.5rem;font-size:.875rem}.emdash-image--align-left[data-astro-cid-nzlefzml],.emdash-image--align-right[data-astro-cid-nzlefzml]{width:fit-content;max-width:50%}.emdash-image--align-left[data-astro-cid-nzlefzml]{float:left;margin:0 1.5rem 1rem 0}.emdash-image--align-right[data-astro-cid-nzlefzml]{float:right;margin:0 0 1rem 1.5rem}.emdash-image--align-center[data-astro-cid-nzlefzml]{width:fit-content;margin-inline:auto}.emdash-image--align-wide[data-astro-cid-nzlefzml],.emdash-image--align-full[data-astro-cid-nzlefzml]{width:100%}@media (width<=640px){.emdash-image--align-left[data-astro-cid-nzlefzml],.emdash-image--align-right[data-astro-cid-nzlefzml]{float:none;width:100%;max-width:100%;margin-inline:0}}.emdash-code[data-astro-cid-dgremz56]{margin:1.5rem 0}.emdash-code-filename[data-astro-cid-dgremz56]{color:#ccc;background:#2d2d2d;border-radius:.5rem .5rem 0 0;padding:.5rem 1rem;font-family:monospace;font-size:.75rem}.emdash-code[data-astro-cid-dgremz56] pre[data-astro-cid-dgremz56]{background:#1e1e1e;border-radius:.5rem;margin:0;padding:1rem;overflow-x:auto}.emdash-code-filename[data-astro-cid-dgremz56]+pre[data-astro-cid-dgremz56]{border-radius:0 0 .5rem .5rem}.emdash-code[data-astro-cid-dgremz56] code[data-astro-cid-dgremz56]{color:#e0e0e0;font-family:Fira Code,Consolas,monospace;font-size:.875rem}.emdash-embed[data-astro-cid-n4v2ghzc]{margin:1.5rem 0}.emdash-embed-video[data-astro-cid-n4v2ghzc]{height:0;padding-bottom:56.25%;position:relative;overflow:hidden}.emdash-embed-video[data-astro-cid-n4v2ghzc] iframe[data-astro-cid-n4v2ghzc],.emdash-embed-video[data-astro-cid-n4v2ghzc] video[data-astro-cid-n4v2ghzc]{border:0;width:100%;height:100%;position:absolute;top:0;left:0}.emdash-embed-audio[data-astro-cid-n4v2ghzc],.emdash-embed-audio[data-astro-cid-n4v2ghzc] audio[data-astro-cid-n4v2ghzc]{width:100%}.emdash-embed[data-astro-cid-n4v2ghzc] figcaption[data-astro-cid-n4v2ghzc]{color:var(--emdash-caption-color,var(--color-muted,#666));text-align:center;margin-top:.5rem;font-size:.875rem}.emdash-gallery[data-astro-cid-d6nmylgu]{grid-template-columns:repeat(var(--columns,3), 1fr);gap:1rem;margin:1.5rem 0;display:grid}.emdash-gallery-item[data-astro-cid-d6nmylgu]{margin:0}.emdash-gallery-item[data-astro-cid-d6nmylgu] img[data-astro-cid-d6nmylgu]{object-fit:cover;aspect-ratio:1;width:100%;height:auto}.emdash-gallery-item[data-astro-cid-d6nmylgu] figcaption[data-astro-cid-d6nmylgu]{color:var(--emdash-caption-color,var(--color-muted,#666));text-align:center;margin-top:.25rem;font-size:.75rem}@media (width<=640px){.emdash-gallery[data-astro-cid-d6nmylgu]{grid-template-columns:repeat(2,1fr)}}.emdash-columns[data-astro-cid-sjaxkm7w]{gap:2rem;margin:1.5rem 0;display:flex}.emdash-column[data-astro-cid-sjaxkm7w]{flex:1;min-width:0}@media (width<=768px){.emdash-columns[data-astro-cid-sjaxkm7w]{flex-direction:column;gap:1rem}}.emdash-break[data-astro-cid-gvovdxls]{margin:2rem 0}.emdash-break-line[data-astro-cid-gvovdxls]{border:none;border-top:1px solid var(--emdash-break-color,var(--color-border,#e0e0e0))}.emdash-break-dots[data-astro-cid-gvovdxls]{text-align:center;color:var(--emdash-break-dots-color,var(--color-muted,#999));letter-spacing:.5em}.emdash-break-space[data-astro-cid-gvovdxls]{height:2rem}.emdash-html-block[data-astro-cid-7hlqo6bn]{margin:1.5rem 0}.emdash-table-wrapper[data-astro-cid-7uypp5bz]{margin:1.5rem 0;overflow-x:auto}.emdash-table[data-astro-cid-7uypp5bz]{border-collapse:collapse;width:100%;font-size:.9rem}.emdash-table[data-astro-cid-7uypp5bz] th[data-astro-cid-7uypp5bz],.emdash-table[data-astro-cid-7uypp5bz] td[data-astro-cid-7uypp5bz]{border:1px solid var(--color-border,#ddd);text-align:left;padding:.75rem}.emdash-table[data-astro-cid-7uypp5bz] th[data-astro-cid-7uypp5bz] p,.emdash-table[data-astro-cid-7uypp5bz] td[data-astro-cid-7uypp5bz] p{margin:0}.emdash-table[data-astro-cid-7uypp5bz] th[data-astro-cid-7uypp5bz]{background:var(--color-surface,#f5f5f5);font-weight:600}.emdash-table[data-astro-cid-7uypp5bz] tbody[data-astro-cid-7uypp5bz] tr[data-astro-cid-7uypp5bz]:nth-child(2n){background:var(--color-bg-subtle,#fafafa)}.emdash-table[data-astro-cid-7uypp5bz] tbody[data-astro-cid-7uypp5bz] tr[data-astro-cid-7uypp5bz]:hover{background:var(--color-surface,#f0f0f0)}.emdash-button[data-astro-cid-i644adhy]{cursor:pointer;border-radius:4px;padding:.75em 1.5em;font-weight:500;text-decoration:none;transition:background-color .2s,border-color .2s,color .2s;display:inline-block}.emdash-button--default[data-astro-cid-i644adhy],.emdash-button--fill[data-astro-cid-i644adhy]{background-color:var(--emdash-button-bg,#0073aa);color:var(--emdash-button-color,#fff);border:2px solid var(--emdash-button-bg,#0073aa)}.emdash-button--default[data-astro-cid-i644adhy]:hover,.emdash-button--fill[data-astro-cid-i644adhy]:hover{background-color:var(--emdash-button-bg-hover,#005177);border-color:var(--emdash-button-bg-hover,#005177)}.emdash-button--outline[data-astro-cid-i644adhy]{color:var(--emdash-button-bg,#0073aa);border:2px solid var(--emdash-button-bg,#0073aa);background-color:#0000}.emdash-button--outline[data-astro-cid-i644adhy]:hover{background-color:var(--emdash-button-bg,#0073aa);color:var(--emdash-button-color,#fff)}.emdash-buttons[data-astro-cid-pxkpowas]{flex-wrap:wrap;gap:.75rem;margin:1.5rem 0;display:flex}.emdash-buttons--vertical[data-astro-cid-pxkpowas]{flex-direction:column;align-items:flex-start}.emdash-buttons--horizontal[data-astro-cid-pxkpowas]{flex-direction:row;align-items:center}.emdash-cover[data-astro-cid-g6rigryn]{background-color:var(--emdash-cover-fallback-bg,#333);border-radius:4px;align-items:center;margin:1.5rem 0;padding:2rem;display:flex;position:relative;overflow:hidden}.emdash-cover__background[data-astro-cid-g6rigryn]{object-fit:cover;z-index:0;width:100%;height:100%;position:absolute;inset:0}.emdash-cover__video[data-astro-cid-g6rigryn]{object-fit:cover}.emdash-cover__overlay[data-astro-cid-g6rigryn]{z-index:1;position:absolute;inset:0}.emdash-cover__content[data-astro-cid-g6rigryn]{z-index:2;width:100%;color:var(--emdash-cover-text-color,#fff);position:relative}.emdash-cover--align-left[data-astro-cid-g6rigryn]{text-align:left;justify-content:flex-start}.emdash-cover--align-center[data-astro-cid-g6rigryn]{text-align:center;justify-content:center}.emdash-cover--align-right[data-astro-cid-g6rigryn]{text-align:right;justify-content:flex-end}.emdash-cover__content[data-astro-cid-g6rigryn] h1,.emdash-cover__content[data-astro-cid-g6rigryn] h2,.emdash-cover__content[data-astro-cid-g6rigryn] h3,.emdash-cover__content[data-astro-cid-g6rigryn] h4,.emdash-cover__content[data-astro-cid-g6rigryn] p{color:inherit}.emdash-file[data-astro-cid-dsnn5jk3]{background-color:var(--emdash-file-bg,#f5f5f5);border:1px solid var(--emdash-file-border,#e0e0e0);border-radius:4px;align-items:center;gap:.75rem;margin:1rem 0;padding:1rem;display:flex}.emdash-file__link[data-astro-cid-dsnn5jk3]{color:var(--emdash-file-color,#333);flex:1;align-items:center;gap:.5rem;text-decoration:none;display:flex}.emdash-file__link[data-astro-cid-dsnn5jk3]:hover{text-decoration:underline}.emdash-file__icon[data-astro-cid-dsnn5jk3]{width:1.5rem;height:1.5rem;color:var(--emdash-file-icon-color,#666);flex-shrink:0}.emdash-file__name[data-astro-cid-dsnn5jk3]{word-break:break-all;font-weight:500}.emdash-file__download[data-astro-cid-dsnn5jk3]{background-color:var(--emdash-button-bg,#0073aa);width:2.5rem;height:2.5rem;color:var(--emdash-button-color,#fff);border-radius:4px;justify-content:center;align-items:center;transition:background-color .2s;display:flex}.emdash-file__download[data-astro-cid-dsnn5jk3]:hover{background-color:var(--emdash-button-bg-hover,#005177)}.emdash-file__download[data-astro-cid-dsnn5jk3] svg[data-astro-cid-dsnn5jk3]{width:1.25rem;height:1.25rem}.emdash-pullquote[data-astro-cid-mtrxdgkr]{border-top:4px solid var(--emdash-pullquote-border,#0073aa);border-bottom:4px solid var(--emdash-pullquote-border,#0073aa);text-align:center;margin:2rem 0;padding:1.5rem 2rem}.emdash-pullquote__text[data-astro-cid-mtrxdgkr]{color:var(--emdash-pullquote-color,#333);margin:0;font-size:1.5rem;font-style:italic;line-height:1.4}.emdash-pullquote__citation[data-astro-cid-mtrxdgkr]{color:var(--emdash-pullquote-citation-color,#666);margin-top:1rem;font-size:.9rem;font-style:normal}@layer base{:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--color-bg:var(--lightningcss-light,#fff)var(--lightningcss-dark,#0d0d0d);--color-bg-subtle:var(--lightningcss-light,#fafafa)var(--lightningcss-dark,#141414);--color-text:var(--lightningcss-light,#1a1a1a)var(--lightningcss-dark,#ededed);--color-text-secondary:var(--lightningcss-light,#525252)var(--lightningcss-dark,#a0a0a0);--color-muted:var(--lightningcss-light,#8b8b8b)var(--lightningcss-dark,#6b6b6b);--color-border:var(--lightningcss-light,#e5e5e5)var(--lightningcss-dark,#2a2a2a);--color-border-subtle:var(--lightningcss-light,#f0f0f0)var(--lightningcss-dark,#1f1f1f);--color-surface:var(--lightningcss-light,#f7f7f7)var(--lightningcss-dark,#181818);--color-brand:var(--lightningcss-light,#06c)var(--lightningcss-dark,#4d9fff);--color-brand-hover:var(--lightningcss-light,#0052a3)var(--lightningcss-dark,#6eb0ff);--color-on-brand:white;--color-brand-ring:color-mix(in srgb, var(--color-brand) 25%, transparent);--emdash-search-bg:var(--color-bg);--emdash-search-text:var(--color-text);--emdash-search-muted:var(--color-muted);--emdash-search-border:var(--color-border);--emdash-search-hover:var(--color-surface);--emdash-search-highlight:var(--color-text);--font-heading:var(--font-body);--font-weight-heading:600;--font-weight-display:700;--font-size-xs:.8125rem;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:2rem;--font-size-4xl:2.5rem;--font-size-5xl:3.5rem;--leading-tight:1.15;--leading-snug:1.3;--leading-normal:1.5;--leading-relaxed:1.7;--tracking-tight:-.03em;--tracking-snug:-.02em;--tracking-wide:.06em;--tracking-wider:.08em;--spacing-1:.25rem;--spacing-2:.5rem;--spacing-3:.75rem;--spacing-4:1rem;--spacing-5:1.25rem;--spacing-6:1.5rem;--spacing-8:2rem;--spacing-10:2.5rem;--spacing-12:3rem;--spacing-16:4rem;--spacing-20:5rem;--spacing-24:6rem;--spacing-xs:var(--spacing-1);--spacing-sm:var(--spacing-2);--spacing-md:var(--spacing-4);--spacing-lg:var(--spacing-6);--spacing-xl:var(--spacing-8);--spacing-2xl:var(--spacing-12);--spacing-3xl:var(--spacing-16);--content-width:680px;--wide-width:1200px;--max-width:var(--content-width);--gutter-width:200px;--meta-col-width:180px;--nav-height:64px;--search-input-width:180px;--radius:4px;--radius-lg:8px;--transition-fast:.12s ease;--transition-base:.18s ease;--avatar-size-xs:18px;--avatar-size-sm:20px;--avatar-size-md:24px;--avatar-size-lg:32px;--shadow-sm:0 1px 2px #0000000d;--shadow-lg:0 8px 30px #0000001f;--tag-padding-y:2px}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@supports not (color:light-dark(#000, #fff)){:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-bg:#fff;--color-bg-subtle:#fafafa;--color-text:#1a1a1a;--color-text-secondary:#525252;--color-muted:#8b8b8b;--color-border:#e5e5e5;--color-border-subtle:#f0f0f0;--color-surface:#f7f7f7;--color-brand:#06c;--color-brand-hover:#0052a3}}}:root{--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-bg:#f0eee6;--color-bg-subtle:#faf9f5;--color-text:#1a1714;--color-text-secondary:#46413a;--color-muted:#6b6b63;--color-border:#dad6c8;--color-border-subtle:#e6e2d6;--color-surface:#faf9f5;--color-brand:#d97757;--color-brand-hover:#b85b3c;--color-on-brand:#fff;--color-brand-ring:#d9775738;--font-heading:"New York", ui-serif, "Source Serif 4", Georgia, serif;--font-body:-apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--font-weight-heading:600;--font-weight-display:600;--content-width:42.5rem;--wide-width:65rem;--radius:2px;--radius-lg:3px;--shadow-sm:none;--shadow-lg:0 18px 40px #1a171414;--tag-padding-y:0;--bg:#f0eee6;--panel:#faf9f5;--panel-deep:#e9e5d8;--paper-1:#f5f3ea;--paper-2:#ece8db;--ink:#1a1714;--ink-soft:#46413a;--muted:#6b6b63;--accent:#d97757;--line:#dad6c8;--line-soft:#e6e2d6;--line-strong:#cdc7b4;--max:65rem;--narrow:42.5rem;--serif:"New York", ui-serif, "Source Serif 4", Georgia, serif;--sans:-apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--ease:cubic-bezier(.2, .7, .2, 1);--reveal-travel:22px;--reveal-duration:.64s;--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23g)' opacity='0.028'/%3E%3C/svg%3E")}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background-color:var(--bg);background-image:var(--grain), radial-gradient(130% 90% at 50% 112%, #cdc7b438, #cdc7b400 62%);min-height:100vh;color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-position:0 0,50% 0;background-repeat:repeat,no-repeat;background-size:140px 140px,100% 100%;background-attachment:scroll,fixed;flex-direction:column;margin:0;font-size:1.0625rem;line-height:1.65;display:flex}#biskt-widget{inset:auto max(16px, env(safe-area-inset-right,0px)) max(16px, env(safe-area-inset-bottom,0px)) auto;pointer-events:auto;z-index:2147483000!important;width:auto!important;height:auto!important;position:fixed!important}a{color:inherit;text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{color:var(--accent)}img{max-width:100%;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}h1,h2,h3,h4,.card-title,.result-title,.archive-title,.search-title{font-family:var(--serif);font-weight:600}main{flex:1 0 auto}.wrap{width:min(100% - 2.5rem, var(--max));margin:0 auto}.wrap-narrow{width:min(100% - 2.5rem, var(--narrow));margin:0 auto}html.js [data-reveal]{opacity:0;transform:translateY(var(--reveal-travel));transition:opacity var(--reveal-duration) var(--ease), transform var(--reveal-duration) var(--ease);transition-delay:var(--reveal-delay,0s);will-change:opacity, transform}html.js [data-reveal].is-revealed{opacity:1;will-change:auto;transform:none}.draw{transition:background-size .3s var(--ease);background-image:linear-gradient(currentColor,currentColor);background-position:0 100%;background-repeat:no-repeat;background-size:0% 1px;padding-bottom:1px}a:hover>.draw,a:hover .draw,a.draw:hover,.writing-row:hover .draw,.repo-row:hover .draw,a.work-item:hover .draw,a:hover.writing-row .draw{background-size:100% 1px}.site-header{z-index:50;background:color-mix(in srgb, var(--bg) 86%, transparent);-webkit-backdrop-filter:blur(14px)saturate(1.1);backdrop-filter:blur(14px)saturate(1.1);border-bottom:1px solid var(--line);position:sticky;top:0}.site-header .inner{width:min(100% - 2.5rem, var(--max));justify-content:space-between;align-items:center;gap:1.75rem;min-height:4.5rem;margin:0 auto;display:flex}.brand{font-family:var(--serif);letter-spacing:-.01em;white-space:nowrap;background-image:linear-gradient(var(--accent), var(--accent));transition:background-size .3s var(--ease);background-position:0 100%;background-repeat:no-repeat;background-size:0% 1px;padding-bottom:1px;font-size:1.05rem;font-weight:600;text-decoration:none}.brand:hover{color:var(--ink);background-size:100% 1px}.nav{flex-wrap:wrap;justify-content:flex-end;gap:1.4rem;display:flex}.nav a{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);background-image:linear-gradient(var(--accent), var(--accent));transition:color .18s ease, background-size .3s var(--ease);background-position:0 100%;background-repeat:no-repeat;background-size:0% 1px;padding:.4rem 0;font-size:.72rem;font-weight:500;text-decoration:none}.nav a:hover,.nav a[aria-current=page]{color:var(--ink);background-size:100% 1px}.hero{border-bottom:1px solid var(--line);background:radial-gradient(115% 130% at 78% -25%, var(--panel) 0%, #faf9f500 62%), radial-gradient(90% 130% at 4% 122%, #cdc7b44d, #cdc7b400 58%), linear-gradient(180deg, #efebe0 0%, var(--bg) 80%);padding:5.5rem 0 4.5rem;position:relative}.hero-name{font-family:var(--serif);letter-spacing:-.035em;flex-direction:column;margin:0;font-size:clamp(3rem,11.5vw,7rem);font-weight:600;line-height:.95;display:flex}.hero-line{margin-bottom:-.08em;padding-bottom:.08em;display:block;overflow:hidden}.hero-name .word{display:block}.hero-name .word em{color:var(--accent);font-style:normal}.hero-rule{background:var(--accent);transform-origin:0;width:3.25rem;height:2px;margin-top:1.8rem;display:block}.hero-foot{grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:1rem 2.5rem;margin-top:2.75rem;padding-top:1.5rem;display:grid;position:relative}.hero-foot:before{content:"";background:var(--line);transform-origin:0;height:1px;position:absolute;top:0;left:0;right:0}.hero-role{max-width:40ch;font-family:var(--serif);letter-spacing:-.005em;color:var(--ink-soft);margin:0;font-size:clamp(1.05rem,1.7vw,1.3rem);line-height:1.45}.hero-links{flex-wrap:wrap;justify-content:flex-end;gap:.6rem 1.9rem;font-size:.85rem;display:flex}.hero-links a{color:var(--ink-soft);background-image:linear-gradient(var(--accent), var(--accent));transition:color .18s ease, background-size .3s var(--ease);background-position:0 100%;background-repeat:no-repeat;background-size:0% 1px;padding-bottom:2px;text-decoration:none}.hero-links a:hover{color:var(--accent);background-size:100% 1px}.section{border-bottom:1px solid var(--line);padding:4.5rem 0}#writing{background:var(--bg)}#work{background:var(--panel)}#github{background:var(--paper-1)}#experience{background:var(--paper-2)}.section-head{border-top:1px solid var(--line-strong);grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:.75rem 1.5rem;margin-bottom:1.75rem;padding-top:1.1rem;display:grid}.section-heading{flex-direction:column;gap:.6rem;display:flex}.section-title{font-family:var(--serif);letter-spacing:-.015em;color:var(--ink);margin:0;font-size:clamp(1.45rem,2.6vw,1.9rem);font-weight:600;line-height:1.1}.section-sub{max-width:52ch;font-family:var(--sans);letter-spacing:0;color:var(--muted);margin:0;font-size:.95rem;line-height:1.5}.section-note{letter-spacing:.12em;text-transform:uppercase;text-align:right;margin:0;padding-top:.15rem;font-size:.7rem;font-weight:500}.section-note a{color:var(--muted);background-image:linear-gradient(var(--accent), var(--accent));transition:color .18s ease, background-size .3s var(--ease);background-position:0 100%;background-repeat:no-repeat;background-size:0% 1px;padding-bottom:2px;text-decoration:none}.section-note a:hover{color:var(--ink);background-size:100% 1px}.writing-list{border-top:1px solid var(--line-soft)}.writing-row{border-bottom:1px solid var(--line-soft);transition:background-color .32s var(--ease);grid-template-columns:6.5rem minmax(0,1fr) auto;grid-template-areas:"meta body go";align-items:start;gap:.4rem 2rem;padding:1.5rem 0 1.6rem;text-decoration:none;display:grid}.writing-meta{flex-direction:column;grid-area:meta;gap:.28rem;padding-top:.3rem;display:flex}.writing-row time{font-variant-numeric:tabular-nums;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);white-space:nowrap;font-size:.72rem}.writing-rt{font-variant-numeric:tabular-nums;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);white-space:nowrap;transition:color .32s var(--ease);font-size:.72rem}.writing-body{grid-area:body;min-width:0}.writing-title{letter-spacing:-.015em;transition:color .24s var(--ease);margin:0;font-size:clamp(1.2rem,2.1vw,1.5rem);line-height:1.25}.writing-title .draw{padding-bottom:2px}.writing-summary{max-width:62ch;color:var(--muted);-webkit-line-clamp:2;line-clamp:2;transition:color .32s var(--ease);-webkit-box-orient:vertical;margin:.5rem 0 0;font-size:.95rem;line-height:1.55;display:-webkit-box;overflow:hidden}.writing-go{color:var(--muted);transition:color .24s var(--ease), transform .32s var(--ease);grid-area:go;align-self:center;padding-left:.5rem;font-size:1rem}.writing-row:hover{background-color:color-mix(in srgb, var(--accent) 5%, transparent)}.writing-row:hover .writing-title{color:var(--accent)}.writing-row:hover .writing-rt{color:var(--muted)}.writing-row:hover .writing-summary{color:var(--ink-soft)}.writing-row:hover .writing-go{color:var(--accent);transform:translate(4px)}.work-grid{border-top:1px solid var(--line-soft);grid-template-columns:repeat(2,minmax(0,1fr));gap:0 3.5rem;display:grid}.work-item{border-bottom:1px solid var(--line-soft);transition:background-color .32s var(--ease);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title go""desc desc";align-items:baseline;column-gap:1rem;padding:1.6rem 0 1.8rem;text-decoration:none;display:grid}.work-item h3{letter-spacing:-.012em;grid-area:title;margin:0;font-size:1.3rem;line-height:1.2;transition:color .2s}.work-item .desc{max-width:34ch;color:var(--muted);grid-area:desc;margin:.55rem 0 0;font-size:.92rem;line-height:1.5}.work-item .go{color:var(--muted);transition:color .2s ease, transform .26s var(--ease);grid-area:go;font-size:.9rem}a.work-item:hover h3{color:var(--accent)}a.work-item:hover .go{color:var(--accent);transform:translate(2px,-2px)}a.work-item:hover{background-color:color-mix(in srgb, var(--accent) 5%, transparent)}.repo-list{border-top:1px solid var(--line-soft);grid-template-columns:repeat(2,minmax(0,1fr));gap:0 2.75rem;display:grid}.repo-row{border-bottom:1px solid var(--line-soft);transition:background-color .32s var(--ease);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title go""desc desc";align-items:baseline;column-gap:1rem;padding:.85rem 0;text-decoration:none;display:grid}.repo-row h3{font-family:var(--sans);letter-spacing:0;grid-area:title;margin:0;font-size:.95rem;font-weight:600;line-height:1.4;transition:color .2s}.repo-row .desc{max-width:44ch;color:var(--muted);grid-area:desc;margin:.2rem 0 0;font-size:.85rem;line-height:1.5}.repo-row .go{color:var(--muted);transition:color .2s ease, transform .26s var(--ease);grid-area:go;font-size:.8rem}.repo-row:hover h3{color:var(--accent)}.repo-row:hover .go{color:var(--accent);transform:translate(2px,-2px)}.repo-row:hover{background-color:color-mix(in srgb, var(--accent) 5%, transparent)}.tag{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:.78rem;text-decoration:none;display:inline-block}.exp-table{border-collapse:collapse;width:100%}.exp-table tr,.exp-table tr:first-child{border-top:1px solid var(--line-soft)}.exp-table td{vertical-align:baseline;padding:1.05rem 1.5rem 1.05rem 0;font-size:.95rem}.exp-table td:first-child{font-variant-numeric:tabular-nums;letter-spacing:.1em;text-transform:uppercase;width:7.5rem;color:var(--muted);white-space:nowrap;font-size:.72rem}.exp-table .org{width:15rem;font-family:var(--serif);font-size:1.1rem;line-height:1.35}.exp-table .role{color:var(--ink-soft)}.exp-table .detail{color:var(--muted);font-size:.88rem}.exp-table a{color:var(--ink-soft);text-decoration-thickness:1px}.section-contact{background:var(--bg);border-bottom:0;padding:5rem 0 5.5rem}.contact-panel{background:var(--panel-deep);padding:clamp(2.25rem,5vw,3.75rem)}.contact-label{font-family:var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--ink);margin:0;font-size:.74rem;font-weight:600}.contact-label:before{content:"";background:var(--accent);width:2.75rem;height:2px;margin-bottom:1.5rem;display:block}.contact-mail{font-family:var(--serif);letter-spacing:-.02em;color:var(--ink);border-bottom:2px solid color-mix(in srgb, var(--accent) 55%, transparent);transition:border-color .24s var(--ease);margin-top:1.5rem;padding-bottom:.18rem;font-size:clamp(1.55rem,4.6vw,2.9rem);font-weight:600;line-height:1.05;text-decoration:none;display:inline-block}.contact-mail:hover{color:var(--ink);border-bottom-color:var(--accent)}.contact-links{border-top:1px solid var(--line-strong);letter-spacing:.12em;text-transform:uppercase;flex-wrap:wrap;gap:.75rem 2rem;margin-top:clamp(1.75rem,4vw,2.75rem);padding-top:1.25rem;font-size:.72rem;font-weight:500;display:flex}.contact-links a{color:var(--ink-soft);background-image:linear-gradient(var(--accent), var(--accent));transition:color .18s ease, background-size .3s var(--ease);background-position:0 100%;background-repeat:no-repeat;background-size:0% 1px;padding-bottom:2px;text-decoration:none}.contact-links a:hover{color:var(--accent);background-size:100% 1px}.site-footer{border-top:1px solid var(--line-strong);background:var(--bg);color:var(--muted);padding:2.5rem 0 3rem;font-size:.72rem}.site-footer .inner{width:min(100% - 2.5rem, var(--max));flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.75rem 1.5rem;margin:0 auto;display:flex}.footer-year{font-variant-numeric:tabular-nums;letter-spacing:.12em;text-transform:uppercase}.footer-name{font-family:var(--serif);color:var(--ink-soft);margin-left:.55rem;font-size:.95rem}.site-footer .links{letter-spacing:.12em;text-transform:uppercase;flex-wrap:wrap;gap:.35rem 1.15rem;display:flex}.site-footer a{color:var(--muted);background-image:linear-gradient(var(--accent), var(--accent));transition:color .18s ease, background-size .3s var(--ease);background-position:0 100%;background-repeat:no-repeat;background-size:0% 1px;padding-bottom:2px;text-decoration:none}.site-footer a:hover{color:var(--ink);background-size:100% 1px}.page-hero{padding:4.5rem 0 1.75rem;position:relative}.page-hero h1{letter-spacing:-.03em;margin:0 0 .7rem;font-size:clamp(2.4rem,6vw,3.6rem);line-height:1}.page-hero p{max-width:44ch;color:var(--muted);margin:0}.page-hero .section-sub{font-family:var(--serif);color:var(--ink-soft);font-size:clamp(1rem,1.6vw,1.18rem);line-height:1.4}.reading-progress{z-index:120;background:color-mix(in srgb, var(--line) 70%, transparent);pointer-events:none;height:2px;position:fixed;top:0;left:0;right:0}.reading-progress-bar{background:var(--accent);transform-origin:0;width:100%;height:100%;display:block;transform:scaleX(0)}.article{padding:3rem 0 4.5rem}.article-header{margin-bottom:2.25rem}.article-header .eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 .9rem;font-size:.72rem;font-weight:500}.article-header h1{letter-spacing:-.025em;margin:0 0 .75rem;font-size:clamp(1.9rem,4.5vw,2.9rem);line-height:1.06}.article-header .dek{max-width:40rem;color:var(--muted);margin:0 0 1rem}.post-meta{color:var(--muted);font-variant-numeric:tabular-nums;letter-spacing:.1em;text-transform:uppercase;flex-wrap:wrap;gap:.4rem 1.1rem;font-size:.72rem;display:flex}.prose{font-size:1.0625rem}.prose h2{letter-spacing:-.01em;margin:2.25rem 0 .75rem;font-size:1.45rem}.prose h3{letter-spacing:-.01em;margin:1.6rem 0 .5rem;font-size:1.15rem}.prose p{color:var(--ink-soft);margin:0 0 1rem}.prose ul,.prose ol{color:var(--ink-soft);margin:0 0 1rem;padding-left:1.3rem}.prose li{margin:.35rem 0}.prose:not(.prose-research)>p:first-of-type:first-letter{float:left;font-family:var(--serif);color:var(--accent);margin:.06em .09em 0 0;font-size:3.2em;font-weight:600;line-height:.82}.prose blockquote{font-family:var(--serif);letter-spacing:-.01em;color:var(--ink);margin:2.25rem 0;padding:.1rem 0 .1rem 1.4rem;font-size:clamp(1.2rem,2.6vw,1.5rem);line-height:1.42;position:relative}.prose blockquote:before{content:"";background:var(--accent);width:2px;position:absolute;top:.3rem;bottom:.3rem;left:0}.prose blockquote p{color:inherit;margin:0 0 .6rem}.prose blockquote p:last-child{margin-bottom:0}.prose code{font-family:var(--mono);background:var(--panel);border:1px solid var(--line-soft);border-radius:2px;padding:.08em .3em;font-size:.88em}.prose pre{background:var(--panel);border:1px solid var(--line);font-family:var(--mono);border-radius:3px;padding:1rem 1.15rem;font-size:.85rem;line-height:1.55;overflow:auto}.prose pre code{background:0 0;border:0;padding:0}.prose hr{border:0;border-top:1px solid var(--line);margin:2rem 0}.prose a{color:var(--accent);transition:text-decoration-thickness .18s var(--ease);text-decoration-thickness:1px}.prose a:hover{text-decoration-thickness:2px}.prose figure{margin:1.9rem 0}.prose-figure{border:1px solid var(--line);background:var(--panel);border-radius:3px;overflow:hidden}.prose-figure img{vertical-align:middle;width:100%;height:auto;display:block}.prose-figure figcaption{border-top:1px solid var(--line);color:var(--muted);margin:0;padding:.75rem .95rem;font-size:.82rem;line-height:1.5}.prose table{border-collapse:collapse;width:100%;color:var(--ink-soft);margin:0 0 1.25rem;font-size:.95rem}.prose th,.prose td{border:1px solid var(--line);vertical-align:top;text-align:left;padding:.55rem .7rem}.prose th{background:var(--panel-deep);color:var(--ink);font-weight:600}.wrap-research{width:min(100% - 2.5rem,52rem);margin:0 auto}.article-research .article-header .dek{max-width:58ch}.prose-research .prose-figure{background:#fff;margin:1.6rem 0 1.75rem}.prose-research .prose-figure img{object-fit:contain;background:#fff;width:100%;height:auto}.prose-research table{border-collapse:collapse;width:100%;color:var(--ink-soft);margin:0 0 1.1rem;font-size:.95rem}.prose-research th,.prose-research td{border:1px solid var(--line);vertical-align:top;text-align:left;padding:.55rem .7rem}.prose-research tr td:first-child{width:8.5rem;color:var(--ink);background:var(--panel);font-weight:600}.empty{color:var(--muted);font-family:var(--serif);padding:1.75rem 0;font-size:1.1rem}@media (prefers-reduced-motion:no-preference){.hero-line .word{animation:mask-rise .88s var(--ease) both}.hero-line:first-child .word{animation-delay:80ms}.hero-line:nth-child(2) .word{animation-delay:.22s}.hero-rule{animation:rule-draw .68s var(--ease) .47s both}.hero-foot:before{animation:rule-draw .68s var(--ease) .54s both}.hero-role{animation:rise .7s var(--ease) .62s both}.hero-links{animation:rise .7s var(--ease) .72s both}}@keyframes mask-rise{0%{transform:translateY(112%)}to{transform:translateY(0)}}@keyframes rule-draw{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@media (width<=720px){.hero{padding:3.5rem 0 3rem}.hero-name{font-size:clamp(2.75rem,15vw,4.5rem)}.hero-foot{grid-template-columns:minmax(0,1fr);gap:1.1rem}.hero-links{justify-content:flex-start}.hero-role{max-width:30ch}.section{padding:3.25rem 0}.section-head{grid-template-columns:minmax(0,1fr);gap:.4rem;margin-bottom:1.25rem}.section-note{text-align:left;padding-top:0}.writing-row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"meta go""body body";gap:.3rem 1rem;padding:1.25rem 0 1.35rem}.writing-meta{flex-direction:row;align-items:baseline;gap:.7rem;padding-top:0}.writing-go{align-self:start;padding-top:.05rem}.work-grid,.repo-list{grid-template-columns:minmax(0,1fr);gap:0}.work-item,.repo-row{padding-top:1.25rem;padding-bottom:1.35rem}.exp-table tr{border-top:1px solid var(--line-soft);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"org date""role role""detail detail";column-gap:1rem;padding:.9rem 0;display:grid}.exp-table td{border:0;padding:0;display:block}.exp-table td:first-child{text-align:right;grid-area:date;width:auto}.exp-table .org{grid-area:org;width:auto}.exp-table .role{grid-area:role}.exp-table .detail{grid-area:detail;margin-top:.2rem}.contact-links{gap:.6rem 1.5rem}}@media (width<=640px){.site-header .inner{flex-direction:column;align-items:flex-start;gap:.25rem;min-height:0;padding:.85rem 0 .8rem}.nav{justify-content:flex-start;gap:.2rem .85rem}.nav a{letter-spacing:.08em;font-size:.63rem}.site-footer{padding-bottom:5.5rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}html.js [data-reveal],.hero-line .word,.hero-rule,.hero-foot:before{opacity:1!important;transform:none!important}}
