@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-cyrillic-ext-wght-normal-cHuGMAiY.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-cyrillic-wght-normal-DwHjdM4S.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-greek-wght-normal-ece1310W.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-vietnamese-wght-normal-D-yuW59g.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-latin-ext-wght-normal-CxNHBx-q.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-latin-wght-normal-D9elroTD.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-cyrillic-ext-wght-italic-BXuSHrjR.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-cyrillic-wght-italic-RLIThRd4.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-greek-wght-italic-F2ziEGcb.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-vietnamese-wght-italic-C3q834ic.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-latin-ext-wght-italic-CpkvI5hy.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-latin-wght-italic-D2yaqPoE.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff) format("woff")}:root{--paper: #f7f6f2;--paper-raised: #ffffff;--ink: #1c1c1a;--ink-2: #5c5b55;--ink-3: #a09f97;--rule: #dcdad2;--accent-engineering: #2b4b6f;--accent-philosophy: #6e6b5e;--accent-writings: #8a3b2e;--accent-music: #574c6e;--accent-hobbies: #5e7259;--accent: var(--ink);--font-serif: "Source Serif 4 Variable", "Literata", Georgia, serif;--font-sans: "IBM Plex Sans", "Inter", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--t-display: clamp(2.4rem, 5vw, 3.6rem);--t-title: 1.5rem;--t-body: 1.0625rem;--t-meta: .8125rem;--space-section: 4rem;--measure: 68ch}[data-theme=dark]{--paper: #161614;--paper-raised: #1e1e1b;--ink: #e8e6df;--ink-2: #a3a199;--ink-3: #6b6a63;--rule: #2c2b27}@media(max-width:899px){:root{--space-section: 2.5rem}}*,*:before,*:after{box-sizing:border-box}:root{color-scheme:light;--col-left: clamp(7rem, 18vw, 20rem);--pad-x: 1.5rem}[data-theme=dark]{color-scheme:dark}@media(max-width:899px){:root{--col-left: 24px;--pad-x: 24px}}html{background:var(--paper)}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-serif);font-size:var(--t-body);line-height:1.7;text-rendering:optimizeLegibility}#root{display:flex;flex-direction:column;min-height:100vh}::selection{background:color-mix(in srgb,var(--accent) 25%,transparent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.skip-link{position:absolute;left:var(--pad-x);top:-3rem;z-index:10;padding:.4rem .8rem;background:var(--paper-raised);border:1px solid var(--rule);color:var(--ink);font-family:var(--font-sans);font-size:var(--t-meta);text-decoration:none}.skip-link:focus{top:.75rem}.site-header{padding:1.4rem var(--pad-x) 0}.site-nav{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.wordmark{font-family:var(--font-sans);font-size:var(--t-meta);letter-spacing:.08em;color:var(--ink);text-decoration:none;white-space:nowrap}.nav-list{display:flex;gap:1.4rem;margin:0;padding:0;list-style:none;font-family:var(--font-sans);font-size:var(--t-meta);letter-spacing:.04em}.nav-link{color:var(--ink-2);text-decoration:none}.nav-link:hover{text-decoration:underline;text-underline-offset:.25em}.nav-link[aria-current]{color:var(--link-accent, var(--ink))}.nav-toggle{display:none}@media(max-width:899px){.nav-toggle{display:block;border:0;background:none;padding:.25rem 0;font-family:var(--font-sans);font-size:var(--t-meta);letter-spacing:.04em;color:var(--ink);cursor:pointer}.nav-list{display:none}.nav-list[data-open=true]{display:flex;position:fixed;inset:0;z-index:9;flex-direction:column;justify-content:center;gap:1.9rem;padding:0 var(--pad-x);background:var(--paper);font-size:1.25rem;animation:fade .15s ease-out}.nav-list[data-open=true] .nav-close{position:absolute;top:1.4rem;right:var(--pad-x)}}.nav-close{display:none}.nav-list[data-open=true] .nav-close{display:block;border:0;background:none;font-family:var(--font-sans);font-size:var(--t-meta);letter-spacing:.04em;color:var(--ink-2);cursor:pointer}@keyframes fade{0%{opacity:0}to{opacity:1}}.page{position:relative;flex:1;display:flex;flex-direction:column}.main{flex:1;width:100%;padding:3.5rem var(--pad-x) var(--space-section);padding-left:var(--col-left)}.spine{position:absolute;top:0;bottom:0;left:calc(var(--col-left) - 2.75rem);width:2px;pointer-events:none}.spine:before{content:"";position:absolute;inset:0;background:var(--accent);opacity:.4}.spine:after{content:"";position:absolute;inset:0;background:var(--accent);transform:scaleY(0);transform-origin:top}@supports (animation-timeline: scroll()){.spine:after{animation:spine-progress linear both;animation-timeline:scroll(root)}}@keyframes spine-progress{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@media(max-width:899px){.spine{display:none}.page[data-section] .main{border-top:2px solid var(--accent);margin-top:1.25rem;padding-top:2.5rem}}.meta{font-family:var(--font-sans);font-size:var(--t-meta);letter-spacing:.04em;color:var(--ink-2)}.meta a{color:inherit;text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:.22em}.meta-quiet{color:var(--ink-3)}.lang-badge{display:inline-block;padding:0 .4em;border:1px solid var(--rule);font-size:.6875rem;letter-spacing:.06em}.page-title{margin:.6rem 0 0;font-weight:300;font-size:var(--t-display);line-height:1.15;letter-spacing:-.01em;max-width:26ch}.kicker{display:block;margin:0}.prose{max-width:var(--measure)}.prose>:first-child{margin-top:0}.prose p,.prose ul,.prose ol{margin:0 0 1.25em}.prose-indent p{margin:0;text-indent:1.6em}.prose-indent p:first-of-type,.prose-indent h2+p,.prose-indent h3+p,.prose-indent hr+p{text-indent:0}.prose-indent p+p{margin-top:.1em}.prose h2{margin:2.4em 0 .8em;font-size:1.35rem;font-weight:500;line-height:1.3}.prose h3{margin:2em 0 .6em;font-size:1.125rem;font-weight:500}.prose a{color:inherit;text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.22em;transition:text-decoration-thickness .15s ease-out}.prose a:hover{text-decoration-thickness:2px}.prose blockquote{margin:1.6em 0;padding-left:1.25rem;border-left:2px solid var(--rule);color:var(--ink-2)}.prose hr{margin:3em 0;border:0;border-top:1px solid var(--rule)}.prose code{font-family:var(--font-mono);font-size:.875em;background:var(--paper-raised);border:1px solid var(--rule);padding:.05em .3em}.prose pre{margin:1.6em 0;padding:1rem 1.25rem;background:var(--paper-raised)!important;border:1px solid var(--rule);overflow-x:auto;font-size:.8125rem;line-height:1.6}.prose pre code{background:none;border:0;padding:0;font-size:inherit}.prose pre.shiki span{color:var(--shiki-light)}[data-theme=dark] .prose pre.shiki span{color:var(--shiki-dark)}.prose img{max-width:100%;height:auto}.prose table{border-collapse:collapse;font-size:.9375rem}.prose th,.prose td{padding:.45rem 1rem .45rem 0;border-bottom:1px solid var(--rule);text-align:left}.prose .footnotes{margin-top:3.5em;padding-top:1.25em;border-top:1px solid var(--rule);font-size:.9375rem;color:var(--ink-2)}.prose .footnotes :is(h2,h3){font-family:var(--font-sans);font-size:var(--t-meta);letter-spacing:.04em;font-weight:400;color:var(--ink-3)}.home{padding-top:clamp(5rem,20vh,14rem);padding-bottom:clamp(5rem,18vh,12rem)}.home-name{margin:0;font-weight:300;font-size:var(--t-display);line-height:1.1;letter-spacing:-.01em}.home-intro{margin:1.4rem 0 0;max-width:44ch;color:var(--ink-2)}.home-doors{margin:clamp(3.5rem,10vh,7rem) 0 0;padding:0;list-style:none;display:grid;gap:1.35rem;max-width:var(--measure)}.door{position:relative;display:block;padding-left:1.35rem;text-decoration:none;color:var(--ink)}.door:before{content:"";position:absolute;left:0;top:.2rem;bottom:.2rem;width:2px;background:var(--door-accent);transition:width .15s ease-out}.door:hover:before,.door:focus-visible:before{width:4px}.door-name{font-size:1.1875rem;font-weight:500}.door-tagline{color:var(--ink-2)}.post-list{margin:3rem 0 0;padding:0;list-style:none;display:grid;gap:2.6rem;max-width:var(--measure)}.post-item .meta{display:block}.post-item-title{display:inline-block;margin:.3rem 0 0;font-size:var(--t-title);font-weight:500;line-height:1.3;color:var(--ink);text-decoration:none}.post-item-title:hover{text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:2px;text-underline-offset:.22em}.post-item-summary{margin:.4rem 0 0;max-width:60ch;color:var(--ink-2);font-size:.9375rem}.article-header{margin-bottom:3rem}.article-footer{margin-top:var(--space-section);padding-top:1.25rem;border-top:1px solid var(--rule);max-width:var(--measure);display:flex;justify-content:space-between;gap:2rem}.article-footer a{color:var(--ink-2);text-decoration:none}.article-footer a:hover{text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:.22em}.cv-group{margin-top:3.5rem;max-width:var(--measure)}.cv-group:first-of-type{margin-top:3rem}.cv-group-title{margin:0 0 .4rem;padding-bottom:.5rem;border-bottom:1px solid var(--rule);font-family:var(--font-sans);font-size:var(--t-meta);font-weight:400;letter-spacing:.06em;color:var(--ink-2)}.cv-list{margin:0}.cv-entry{display:grid;grid-template-columns:6.5rem 1fr;gap:.2rem 1.5rem;padding:1.1rem 0}.cv-year{font-family:var(--font-sans);font-size:var(--t-meta);letter-spacing:.04em;color:var(--ink-3);padding-top:.25rem}.cv-body{margin:0}.cv-entry-title{font-weight:500}.cv-entry-title a{color:inherit;text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.22em}.cv-entry-title a:hover{text-decoration-thickness:2px}.cv-detail{color:var(--ink-2)}.cv-note{margin:.35rem 0 0;max-width:55ch;font-size:.9375rem;color:var(--ink-2)}.cv-empty{margin-top:3rem;color:var(--ink-2)}@media(max-width:599px){.cv-entry{grid-template-columns:1fr;gap:.15rem}}.embed{margin:.8rem 0 0;max-width:var(--measure)}.embed-button{display:flex;align-items:center;gap:.85rem;width:100%;padding:.95rem 1.1rem;background:var(--paper-raised);border:1px solid var(--rule);font-family:var(--font-sans);font-size:var(--t-meta);letter-spacing:.04em;color:var(--ink-2);text-align:left;cursor:pointer}.embed-button:before{content:"";width:0;height:0;border-left:9px solid var(--accent);border-top:5.5px solid transparent;border-bottom:5.5px solid transparent}.embed-button:hover{color:var(--ink)}.embed iframe{display:block;width:100%;border:0}.section-more{margin-top:2.6rem}.notfound{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:4rem var(--pad-x)}.notfound .door{text-align:left}.notfound-doors{margin:2.5rem 0 0;padding:0;list-style:none;display:grid;gap:1rem}.site-footer{border-top:1px solid var(--rule)}.footer-inner{display:flex;flex-wrap:wrap;align-items:baseline;gap:1.4rem;padding:1.2rem var(--pad-x) 1.8rem;padding-left:var(--col-left);font-family:var(--font-sans);font-size:var(--t-meta);letter-spacing:.04em;color:var(--ink-3)}.footer-inner a{color:var(--ink-2);text-decoration:none}.footer-inner a:hover{text-decoration:underline;text-underline-offset:.25em}.theme-toggle{border:0;background:none;padding:0;font:inherit;letter-spacing:inherit;color:var(--ink-3);cursor:pointer}.theme-toggle .opt{color:var(--ink-3)}[data-theme=light] .theme-toggle .opt-light,[data-theme=dark] .theme-toggle .opt-dark{color:var(--ink-2);text-decoration:underline;text-underline-offset:.25em}.footer-copy{margin-left:auto}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.site-header{animation:rise .35s ease-out backwards}.rise-1{animation:rise .35s ease-out .06s backwards}.rise-2{animation:rise .35s ease-out .12s backwards}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;transition-duration:1ms!important}.spine:after{animation:none}}@media print{:root,[data-theme=dark]{--paper: #ffffff;--paper-raised: #ffffff;--ink: #000000;--ink-2: #333333;--ink-3: #555555;--rule: #bbbbbb;--accent: #000000}.site-header,.site-footer,.spine,.skip-link,.article-footer{display:none!important}.main{padding:0}body{background:#fff;color:#000;font-size:11pt}.prose a{text-decoration:none;color:#000}.prose a[href^=http]:after{content:" (" attr(href) ")";font-size:.85em;color:#333;word-break:break-all}.prose pre{border:1px solid #bbb;white-space:pre-wrap}}
