@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/ibm-plex-mono-cyrillic-ext-300-normal-BbtBtHoB.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-300-normal-B8O3uHbr.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/ibm-plex-mono-cyrillic-300-normal-ByB2hQUF.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-300-normal-Ba-HN6uq.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/ibm-plex-mono-vietnamese-300-normal-CpdbWO_2.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-300-normal-B6fSpYYV.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/ibm-plex-mono-latin-ext-300-normal-BEtQ2wm2.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-300-normal-CQbCaAQ4.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/ibm-plex-mono-latin-300-normal-BRS-C4KA.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-300-normal-BPU54Tw3.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,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 Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@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");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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: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");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,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 Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#06080b;--bg-raise:#0b0f14;--text:#c8d3da;--text-dim:#6c7a85;--text-faint:#36424c;--water:#a8dcea;--water-glow:#a8dcea59;--code:#3ddc84;--rule:#c8d3da1a;--font-mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--fs:clamp(14px, .5vw + 9px, 17px);--lh:1.65;--gutter:clamp(16px, 3vw, 48px)}:root[data-theme=light]{--bg:#eef2f3;--bg-raise:#e4eaec;--text:#1b2730;--text-dim:#5b6a74;--text-faint:#a9b5bc;--water:#1f5d70;--water-glow:#1f5d7040;--code:#0f8a4c;--rule:#1b27301f}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font-mono);font-size:var(--fs);font-weight:300;line-height:var(--lh);-webkit-font-smoothing:antialiased}::selection{background:var(--water);color:var(--bg)}a{color:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--text-faint);text-decoration-color:var(--text-faint);text-underline-offset:.2em;transition:color .12s,text-decoration-color .12s}a:hover{color:var(--code);-webkit-text-decoration-color:var(--code);text-decoration-color:var(--code)}:focus-visible{outline:1px solid var(--code);outline-offset:2px}h1,h2,h3{margin:0 0 .75em;font-size:1em;font-weight:400}p{margin:0 0 1em}.dim{color:var(--text-dim)}.scene{z-index:0;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.shell{z-index:1;column-gap:var(--gutter);min-height:100%;padding:var(--gutter);grid-template:"head head""index content"1fr"foot foot"/minmax(12ch,16ch) minmax(0,62ch);display:grid;position:relative}.masthead{border-bottom:1px solid var(--rule);flex-wrap:wrap;grid-area:head;align-items:baseline;gap:0 2ch;margin-bottom:1.5em;padding-bottom:1.25em;display:flex}.masthead .name{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-weight:500;text-decoration:none}.masthead .surname{color:var(--text-dim);opacity:0;transition:opacity .9s}.masthead[data-calm] .surname{opacity:1}.index{flex-direction:column;grid-area:index;align-self:stretch;gap:.15em;display:flex}.index a{width:fit-content;color:var(--text-dim);white-space:nowrap;text-decoration:none}.index .dot{width:2ch;color:var(--text-faint);transition:color .2s;display:inline-block}.index .label{opacity:0;transition:opacity .25s,color .12s}.index:hover .label,.index:focus-within .label,.index[data-open] .label,.index a[aria-current=page] .label{opacity:1}.index a:hover .dot{color:var(--code)}.index a[aria-current=page] .label{color:var(--text)}.index a[aria-current=page] .dot{color:var(--water)}.index a[aria-current=page] .label:after{content:"_";color:var(--code);margin-left:.5ch;animation:1.1s step-end infinite blink}.content{grid-area:content;min-width:0}.is-cover .masthead{border-bottom-color:#0000}.is-cover .index a{opacity:0;pointer-events:none;transition:opacity .3s}.is-cover .index:hover a,.is-cover .index:focus-within a,.is-cover .index[data-open] a{opacity:1;pointer-events:auto}.start-here{left:50%;bottom:calc(var(--gutter) + 3vh);z-index:1;color:var(--text-dim);text-decoration:none;position:fixed;transform:translate(-50%)}.start-here:after{content:"_";color:var(--code);margin-left:.25ch;animation:1.1s step-end infinite blink}.credit{right:var(--gutter);bottom:var(--gutter);z-index:1;color:var(--text-faint);margin:0;font-size:.8em;position:fixed}.credit a{color:var(--text-dim);-webkit-text-decoration-color:var(--text-faint);text-decoration-color:var(--text-faint)}.theme-toggle{top:var(--gutter);right:var(--gutter);z-index:2;width:22px;height:22px;color:var(--text-dim);cursor:pointer;background:0 0;border:0;padding:0;transition:color .12s,transform .3s;position:fixed}.theme-toggle svg{fill:currentColor;width:100%;height:100%;display:block}.theme-toggle:hover{color:var(--water);transform:rotate(20deg)}@keyframes blink{50%{opacity:0}}@media (hover:none){.index .label{opacity:1}}@media (width<=640px){.shell{grid-template:"head""index""content"1fr"foot"/minmax(0,1fr)}.index{flex-flow:wrap;gap:.25em 2ch;margin-bottom:1.5em}.index .label{opacity:1}.masthead{padding-right:calc(22px + 2ch)}}@media (prefers-reduced-motion:reduce){.index a[aria-current=page] .label:after,.start-here:after{animation:none}.theme-toggle:hover{transform:none}}.thought-day+.thought-day{margin-top:1.75em}.thought-day h2{border-bottom:1px solid var(--rule);color:var(--text-faint);margin-bottom:.5em;padding-bottom:.4em;font-size:.85em}.thought{grid-template-columns:6ch minmax(0,1fr);gap:1.5ch;padding:.3em 0;display:grid}.thought time{color:var(--text-dim);font-size:.85em;line-height:calc(var(--lh) / .85)}.thought p{margin:0}.post-list>li{justify-content:space-between;gap:2ch;display:flex}.post h1{margin-bottom:.25em;font-weight:500}.post .meta{color:var(--text-dim)}.post-nav{border-top:1px solid var(--rule);justify-content:space-between;gap:2ch;margin-top:2em;padding-top:1em;display:flex}.github-activity{margin:2.5em 0 0}.github-activity figcaption{margin-top:.5em;font-size:.8em}.dot-calendar{width:100%;max-width:640px;height:auto;display:block}.dot-calendar circle{fill:var(--water)}.dot-calendar .l0{fill:var(--text-faint);opacity:.6}.dot-calendar .l1{opacity:.55}.dot-calendar .l2{opacity:.7}.dot-calendar .l3{opacity:.85}.dot-calendar circle:hover{fill:var(--code);opacity:1}.list{margin:0;padding:0;list-style:none}.list>li{border-bottom:1px solid var(--rule);padding:.6em 0}.list>li:last-child{border-bottom:0}.list .meta{color:var(--text-dim)}.shelf-group+.shelf-group{margin-top:1.75em}.chat-log{max-height:55vh;overflow-y:auto}.chat-log p{white-space:pre-wrap}.chat-user{color:var(--text-dim)}.prompt,.caret{color:var(--code)}.caret{margin-left:.25ch;animation:1.1s step-end infinite blink}.chat-suggestions{flex-wrap:wrap;gap:.4em 1ch;margin:0 0 1em;padding:0;list-style:none;display:flex}.chat-suggestions button{font:inherit;color:var(--text-dim);border:1px solid var(--rule);cursor:pointer;background:0 0;padding:.15em .8ch;transition:color .12s,border-color .12s}.chat-suggestions button:hover{color:var(--code);border-color:var(--code)}.chat-input{border-top:1px solid var(--rule);align-items:baseline;gap:1ch;padding-top:.75em;display:flex}.chat-input input{min-width:0;font:inherit;color:var(--text);caret-color:var(--code);background:0 0;border:0;outline:none;flex:1}.chat-input input::placeholder{color:var(--text-faint)}
