:root{color-scheme:light dark;--paper:#f7f7f9;--paper-raised:#ffffff;--ink:#14141a;--ink-soft:#4d4d59;--ink-faint:#686875;--line:rgba(20, 20, 26, .12);--line-strong:rgba(20, 20, 26, .28);--grad-blue:#2563eb;--grad-violet:#6d4ae0;--grad-pink:#c8287a;--sec-about:var(--grad-blue);--sec-work:#4956e6;--sec-projects:var(--grad-violet);--sec-notes:#9a39ad;--sec-facts:var(--grad-pink);--focus:var(--grad-violet);--font-sans:'Golos Text', system-ui, -apple-system, 'Segoe UI', sans-serif;--font-mono:'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;--space-1:4px;--space-2:8px;--gutter:16px;--space-4:24px;--space-5:40px;--radius-s:4px;--radius-m:10px;--measure:640px;--wide:960px;--header-height:56px;--topline:3px;--nav-row:48px;--section:48px;--pad:var(--gutter);--hero-top:28px;--nav-top:28px;--planet:124px}@media(prefers-color-scheme:dark){:root{--paper:#0c0c10;--paper-raised:#16161c;--ink:#ededf2;--ink-soft:#a8a8b5;--ink-faint:#8b8b98;--line:rgba(237, 237, 242, .12);--line-strong:rgba(237, 237, 242, .30);--grad-blue:#4d8bf8;--grad-violet:#9b7cf8;--grad-pink:#ff6aa8;--sec-work:#7484f8;--sec-notes:#cd73d0}}@media(max-width:359px){:root{--planet:88px}}@media(min-width:768px){:root{--pad:var(--space-5);--hero-top:48px;--section:56px;--planet:220px}}@media(min-width:1024px){:root{--planet:300px}}[data-section=about]{--sec:var(--sec-about)}[data-section=work]{--sec:var(--sec-work)}[data-section=projects]{--sec:var(--sec-projects)}[data-section=notes]{--sec:var(--sec-notes)}[data-section=facts]{--sec:var(--sec-facts)}@font-face{font-family:golos text;font-style:normal;font-display:swap;font-weight:400 600;src:url(../fonts/golos-text-cyrillic-wght-normal.woff2)format('woff2');unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:golos text;font-style:normal;font-display:swap;font-weight:400 600;src:url(../fonts/golos-text-latin-wght-normal.woff2)format('woff2');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:jetbrains mono;font-style:normal;font-display:swap;font-weight:400 500;src:url(../fonts/jetbrains-mono-cyrillic-wght-normal.woff2)format('woff2');unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:jetbrains mono;font-style:normal;font-display:swap;font-weight:400 500;src:url(../fonts/jetbrains-mono-latin-wght-normal.woff2)format('woff2');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}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}.tb-wrap{max-width:calc(var(--measure) + 2 * var(--pad));margin:0 auto;padding:0 var(--pad)}.tb-topline{height:var(--topline);background:linear-gradient(90deg,var(--grad-blue),var(--grad-violet),var(--grad-pink))}.tb-mono{font-family:var(--font-mono)}.name{margin:0;font-size:44px;line-height:1.02;font-weight:600;letter-spacing:-.03em}.lede{margin:var(--gutter)0 0;font-size:19px;line-height:1.55;color:var(--ink-soft)}.label{font-family:var(--font-mono);font-size:13px;line-height:1.4;font-weight:500}.meta{font-family:var(--font-mono);font-size:13px;line-height:1.5;font-weight:400;color:var(--ink-faint)}.small{font-size:15px;line-height:1.5}.note-title{font-size:17px;line-height:1.45;font-weight:500}.link-mono{font-family:var(--font-mono);font-size:17px;line-height:1.45;font-weight:500}.nav{font-family:var(--font-mono);font-size:14px;line-height:1.2;font-weight:500}.page-title{margin:12px 0 0;font-size:32px;line-height:1.15;font-weight:600;letter-spacing:-.02em;overflow-wrap:break-word;hyphens:auto}@media(min-width:768px){.name{font-size:72px;line-height:1;letter-spacing:-.035em}.lede{margin-top:var(--space-4)}}.tb-link{color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:var(--line-strong)}.tb-link:hover{text-decoration-color:var(--grad-violet)}.tb-link-mono{color:var(--ink);text-decoration:none;display:inline-flex;align-items:baseline;gap:var(--space-1);width:fit-content}.tb-arrow{color:var(--ink-faint)}.tb-link-mono:hover .tb-arrow,.tb-link-mono:focus-visible .tb-arrow{color:var(--sec,var(--grad-violet))}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:var(--radius-s)}.tb-mx{position:relative;display:inline-block}.tb-mx-layer{position:absolute;inset:0;white-space:nowrap;overflow:hidden;pointer-events:none}.tb-mx-layer i{font-style:normal}.tb-mx-layer b{font-weight:inherit}.tb-mx.is-scrambling{color:transparent}.tb-header{border-bottom:1px solid var(--line)}.tb-header .tb-wrap{height:var(--header-height);display:flex;align-items:center;justify-content:space-between;gap:var(--gutter)}.tb-mark{color:var(--ink);text-decoration:none;display:inline-flex;align-items:center;gap:3px;min-height:44px}.tb-cursor,.tb-sq{display:inline-block;flex:none;width:8px;height:15px}.tb-sq{background:var(--sec,var(--ink-faint))}.tb-cursor,.tb-sq--grad{background:linear-gradient(135deg,var(--grad-blue),var(--grad-violet),var(--grad-pink))}.tb-cursor--sec{background:var(--sec)}.tb-crumb{display:flex;align-items:center;gap:var(--space-2);min-width:0}.tb-crumb__sep{color:var(--ink-faint)}.tb-crumb__here{color:var(--ink-soft);text-decoration:none;display:inline-flex;align-items:center;min-height:44px;white-space:nowrap}a.tb-crumb__here:hover{color:var(--ink)}.tb-header__nav{display:none}.tb-lang{min-height:44px;align-items:center;padding-left:var(--gutter)}@media(min-width:768px){.tb-crumb__sep,.tb-crumb__here{display:none}.tb-header__nav{display:flex;align-items:center;gap:20px;margin-left:auto}.tb-header__nav a{color:var(--ink-soft);text-decoration:none;display:inline-flex;align-items:center;min-height:44px;white-space:nowrap}.tb-header__nav a:hover,.tb-header__nav a[aria-current]{color:var(--ink)}.tb-header__nav a[aria-current]{text-decoration:underline;text-decoration-color:var(--sec,var(--line-strong));text-decoration-thickness:2px;text-underline-offset:6px}.tb-lang{padding-left:0}}@media(min-width:768px){.is-home .tb-wrap{max-width:calc(var(--wide) + 2 * var(--pad))}.is-home .lede{max-width:var(--measure)}}.tb-hero{padding-top:var(--hero-top)}.tb-role{margin:0 0 12px;color:var(--ink-faint)}.tb-hero__grid{display:grid;grid-template-columns:minmax(0,1fr)auto;align-items:center;column-gap:var(--space-2)}.tb-hero__grid .name{grid-column:1}.tb-hero__grid .lede{grid-column:1/-1}.tb-hero__grid .tb-planet{grid-column:2;grid-row:1;margin-right:-4px}.name .tb-mx-layer{white-space:normal}@media(max-width:359px){.name{font-size:36px}}@media(min-width:768px){.tb-hero__grid{column-gap:var(--space-5)}.tb-hero__grid .lede{grid-column:1}.tb-hero__grid .tb-planet{grid-row:1/span 2;margin-right:0}}@media(min-width:1024px){.tb-home-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:64px;align-items:start}.tb-channels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:64px}.tb-channels .tb-label{grid-column:1/-1}.tb-channels .tb-row:first-of-type{padding-top:var(--gutter);border-top:1px solid var(--line)}}.tb-sky{position:absolute;left:0;top:0;width:100%;height:0;pointer-events:none}.tb-topline,.tb-header,body>main,.tb-footer{position:relative}.tb-planet{width:var(--planet);max-width:100%;aspect-ratio:1;flex:none}.tb-planet canvas{display:block;width:100%;height:100%;touch-action:manipulation}.tb-section{margin-top:var(--section)}.tb-label{margin:0 0 var(--space-2);color:var(--ink-faint)}.tb-label-row{display:flex;justify-content:space-between;align-items:baseline;gap:var(--gutter);margin-bottom:var(--space-2)}.tb-label-row .tb-label{margin:0}.tb-now{margin:0}.tb-home-nav{margin-top:var(--nav-top)}.tb-nav{display:grid}.tb-nav--ext{margin-top:var(--gutter)}.tb-nav-row{display:flex;align-items:center;gap:12px;min-height:var(--nav-row);border-top:1px solid var(--line);color:var(--ink);text-decoration:none}.tb-nav-row:last-child{border-bottom:1px solid var(--line)}.tb-nav-row__count{margin-left:auto}.tb-nav-row .tb-mx-text+.tb-arrow{margin-left:auto}.tb-nav-row:hover .tb-arrow,.tb-nav-row:focus-visible .tb-arrow{color:var(--sec,var(--grad-violet))}@media(min-width:768px){.tb-home-nav{display:none}}.tb-page-head{padding-top:var(--hero-top)}.tb-kicker{margin:0;display:flex;align-items:center;gap:var(--space-2);color:var(--sec,var(--ink-faint))}.tb-next{margin-top:48px}.tb-row{padding:var(--gutter)0;border-top:1px solid var(--line);display:grid;gap:var(--space-1)}.tb-row:first-of-type{border-top:0;padding-top:var(--space-2)}.tb-row__desc{margin:0;color:var(--ink-soft)}.tb-row__meta{margin:0}.tb-row--plain{margin:0;color:var(--ink)}.tb-row--link{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;column-gap:var(--gutter)}.tb-row--link>:last-child{overflow-wrap:anywhere}.tb-list{margin-top:var(--space-5)}.tb-list>.tb-row:first-child{padding-top:0}.tb-note{color:var(--ink);text-decoration:none;width:fit-content}.tb-note:hover{text-decoration:underline;text-decoration-color:var(--sec-notes);text-underline-offset:3px}.tb-more{margin-top:var(--space-2)}.tb-more .tb-link-mono{min-height:44px;align-items:center}.tb-meta-list{display:flex;flex-wrap:wrap;gap:var(--space-1)var(--gutter);margin:0;color:var(--ink-faint)}.tb-tags{display:flex;flex-wrap:wrap;column-gap:12px;margin:0}.tb-tag{color:var(--ink-soft);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;text-decoration-color:var(--line-strong)}.tb-tag:hover{color:var(--ink);text-decoration-color:var(--sec-notes)}.tb-tag[aria-current]{color:var(--ink);text-decoration-color:var(--sec-notes);text-decoration-thickness:2px}.tb-topics{margin-top:32px}.tb-topics .tb-tag{display:inline-flex;align-items:center;min-height:44px}.tb-topics__title{display:none}.tb-notes-sky .tb-topics{margin-top:var(--space-2)}.tb-sky-notes{position:relative;height:200px;margin-top:var(--space-4);overflow:hidden}.tb-sky-notes--mini{height:132px;margin:0 0 var(--space-2)}.tb-sky-notes__field{position:absolute;inset:18px 14px 26px 6px}.tb-sky-notes--mini .tb-sky-notes__field{inset:12px 14px 24px 6px}.tb-sky-notes svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.tb-sky-notes svg *{fill:none;stroke-width:1px;vector-effect:non-scaling-stroke}.tb-sky-notes__grid{stroke:var(--line);stroke-dasharray:1 3}.tb-sky-notes__path{stroke:var(--line-strong);stroke-dasharray:1 4}.tb-sky-notes__dust{stroke:var(--ink);stroke-width:1.5px;stroke-linecap:square;opacity:.18;transition:opacity 1.2s ease}.tb-sky-notes__dust.is-lit{opacity:.42}.tb-sky-notes__topic{display:none;stroke:var(--sec-notes)}.tb-sky-notes__topic.is-on,.tb-sky-notes__topic.is-peek{display:inline}.tb-sky-notes__topic.is-peek:not(.is-on){opacity:.45}.tb-star{position:absolute;width:24px;height:24px;margin:-12px 0 0 -12px;display:grid;place-items:center}.tb-star::before{content:"";width:var(--s);height:var(--s);background:var(--c)}.tb-star.is-dim::before{opacity:.35}.tb-star--cur::before{width:8px;height:15px;background:var(--sec-notes)}.tb-sky-notes__tick{position:absolute;top:calc(100% + 9px);font:11px/1 var(--font-mono);color:var(--ink-faint);white-space:nowrap}.tb-sky-notes__label{position:absolute;transform:translate(-50%,calc(-100% - 10px));color:var(--sec-notes);white-space:nowrap}@media(min-width:1024px){.tb-notes-sky{display:grid;grid-template-columns:minmax(0,1fr)200px;column-gap:var(--space-5);align-items:start}.tb-notes-sky .tb-sky-notes{height:260px}.tb-notes-sky .tb-topics{margin-top:var(--space-4);display:grid}.tb-topics__title{display:block;padding-bottom:var(--space-1);color:var(--ink-faint)}.tb-notes-sky .tb-tag{min-height:36px;gap:10px;border-top:1px solid var(--line);text-decoration:none}.tb-notes-sky .tb-tag::before{content:"";flex:none;width:6px;height:11px;background:var(--line-strong)}.tb-notes-sky .tb-tag--all::before{background:linear-gradient(135deg,var(--grad-blue),var(--grad-violet),var(--grad-pink))}.tb-notes-sky .tb-tag[aria-current]::before{background:var(--sec-notes)}.tb-notes-sky .tb-tag::after{content:attr(data-count);margin-left:auto;color:var(--ink-faint)}.tb-notes-sky .tb-tag[aria-current]{color:var(--sec-notes)}}@media(min-width:1100px){.tb-notes-sky{margin-right:calc((var(--measure) - var(--wide))/2);grid-template-columns:minmax(0,1fr)240px}}.tb-tip{position:absolute;z-index:3;width:240px;padding:10px 12px;display:grid;gap:var(--space-1);background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-s);pointer-events:none}.tb-tip span{font:12px/1.4 var(--font-mono);color:var(--ink-faint)}.tb-tip b{font-size:15px;line-height:1.4;font-weight:500;color:var(--ink)}.tb-tip p{margin:0;font-size:13px;line-height:1.45;color:var(--ink-soft)}.tb-tip[hidden]{display:none}.tb-orbits{position:relative;height:180px;margin-top:var(--space-4)}.tb-orbits svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.tb-orbits__o{fill:none;stroke:var(--line);stroke-width:1px;vector-effect:non-scaling-stroke}.tb-orbits__o.is-on{stroke:var(--c)}.tb-orbits__sun{position:absolute;left:50%;top:50%;z-index:1;display:flex;align-items:center;gap:3px;padding:2px 0 2px 4px;transform:translate(calc(4px - 100%),-50%);background:var(--paper);font:500 14px/1 var(--font-mono);color:var(--ink)}.tb-orb{position:absolute;z-index:2;color:var(--c);text-decoration:none;font:500 7px/7px var(--font-mono)}.tb-orb.is-back{z-index:0}.tb-orb__d{position:absolute;display:grid;justify-items:center;transform:translate(-50%,-50%)}.tb-orb.is-back .tb-orb__d{opacity:.6}.tb-orb__name{position:absolute;left:10px;top:0;transform:translateY(-50%);font:12px/1 var(--font-mono);color:var(--ink-faint);white-space:nowrap}.tb-orb.is-left .tb-orb__name{left:auto;right:10px}.tb-orb:hover .tb-orb__d{transform:translate(-50%,-50%)scale(1.3);opacity:1}.tb-orb:hover .tb-orb__name{color:var(--ink)}.tb-orbits__note{margin:var(--space-1)0 0}.tb-orbits__note+.tb-list{margin-top:var(--space-4)}@media(min-width:768px){.tb-orbits{height:200px}}@media(min-width:1100px){.tb-orbits{margin-right:calc((var(--measure) - var(--wide))/2)}}.tb-follow{margin-top:48px;display:grid;gap:var(--space-2)}.tb-follow p{margin:0;color:var(--ink-soft)}.tb-follow__links{display:flex;flex-wrap:wrap;column-gap:var(--space-4)}.tb-follow__links .tb-link-mono{min-height:44px;align-items:center}.tb-reviewed{margin:12px 0 0}.tb-dl{margin:var(--space-5)0 0}.tb-dl>div{padding:var(--gutter)0;border-top:1px solid var(--line);display:grid;gap:var(--space-1)}.tb-dl>div:first-child{border-top:0;padding-top:0}.tb-dl>div:last-child{border-bottom:1px solid var(--line)}.tb-dl dt{color:var(--ink-faint)}.tb-dl dd{margin:0}.tb-dl__alt{color:var(--ink-soft)}.tb-profiles{display:grid}.tb-profiles a{color:var(--ink);text-decoration:none;display:flex;justify-content:space-between;align-items:center;gap:var(--gutter);min-height:44px}.tb-profiles a span:last-child{color:var(--ink-faint);overflow-wrap:anywhere;text-align:right}.tb-profiles a:hover span:last-child{color:var(--sec,var(--grad-violet))}.tb-article{padding-top:var(--hero-top)}.tb-article__head{display:grid;gap:var(--space-2)}.tb-article h1{margin:var(--gutter)0 0;font-size:32px;line-height:1.15;font-weight:600;letter-spacing:-.02em}.tb-toc{margin-top:var(--space-4);padding-bottom:12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.tb-toc summary{display:flex;align-items:center;min-height:44px;color:var(--ink-faint);cursor:pointer}.tb-toc ol{margin:0;padding-left:20px;display:grid;gap:6px;font-size:15px;line-height:1.5}.tb-toc a{color:var(--ink-soft);text-decoration:none}.tb-toc a:hover{color:var(--ink);text-decoration:underline;text-decoration-color:var(--sec-notes);text-underline-offset:3px}.tb-signoff{margin-top:var(--space-5);padding:var(--gutter)0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:grid;gap:var(--space-2)}.tb-signoff p{margin:0}.tb-signoff .tb-link-mono{min-height:44px;align-items:center}.tb-signoff .tb-meta-list a,.tb-copy{display:inline-flex;align-items:center;min-height:44px}.tb-copy{font:inherit;color:var(--ink-soft);background:0 0;border:0;padding:0;cursor:pointer;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:var(--line-strong)}.tb-copy:hover{text-decoration-color:var(--grad-violet)}.tb-copy[hidden]{display:none}.tb-related{margin-top:48px}.tb-prose>:first-child{margin-top:var(--space-4)}.tb-prose p,.tb-prose ul,.tb-prose ol,.tb-prose blockquote{margin:var(--gutter)0 0}.tb-prose ul,.tb-prose ol{padding-left:1.4em}.tb-prose li+li{margin-top:var(--space-1)}.tb-prose h2,.tb-prose h3{margin:32px 0 0;font-size:22px;line-height:1.3;font-weight:600;letter-spacing:-.01em}.tb-prose h3{font-size:19px}.tb-prose h2+*,.tb-prose h3+*{margin-top:var(--gutter)}.tb-prose blockquote{padding-left:var(--gutter);border-left:2px solid var(--line-strong);color:var(--ink-soft)}.tb-prose a{color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:var(--line-strong)}.tb-prose a:hover{text-decoration-color:var(--grad-violet)}.tb-prose code{font-family:var(--font-mono);font-size:.875em}.tb-prose pre{margin:var(--space-4)0 0;padding:var(--gutter);background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-s);font-family:var(--font-mono);font-size:14px;line-height:1.6;overflow-x:auto}.tb-prose pre code{font-size:inherit}.tb-prose img{display:block;max-width:100%;height:auto;border-radius:var(--radius-m);background:var(--paper-raised)}.tb-prose picture{display:block}.tb-prose figure,.tb-prose p:has(>img:only-child),.tb-prose p:has(>picture:only-child){margin:var(--space-4)0 0}.tb-prose hr{margin:var(--space-5)0 0;border:0;border-top:1px solid var(--line)}.tb-pager{margin-top:48px;padding-top:var(--gutter);border-top:1px solid var(--line);display:flex;flex-wrap:wrap;justify-content:space-between;gap:0 var(--gutter)}.tb-pager__side{display:flex;flex-direction:column;align-items:flex-end}.tb-pager .tb-link-mono{min-height:44px;align-items:center}.tb-404{padding-top:var(--hero-top)}.tb-404 .tb-planet{--planet:300px;margin:0 auto var(--space-4)}@media(min-width:768px){.tb-404 .tb-planet{--planet:360px}}.tb-404 h1{margin:0;font-size:32px;line-height:1.15;font-weight:600;letter-spacing:-.02em}.tb-404 p{margin:var(--gutter)0 0;color:var(--ink-soft)}.tb-404 .tb-link-mono{margin-top:var(--space-2);min-height:44px;align-items:center}.tb-404__other{margin-top:var(--space-5)}.tb-far{width:168px;margin:var(--space-5)0 0 auto;opacity:.7}.tb-far svg{display:block;overflow:visible}.tb-far ellipse{fill:none;stroke:var(--line-strong);stroke-width:1px}.tb-footer{margin-top:var(--section)}.tb-footer__inner{padding:var(--gutter)0 var(--space-5);border-top:1px solid var(--line);display:grid;gap:var(--space-1)}.tb-footer__row{display:flex;flex-wrap:wrap;align-items:center;column-gap:var(--gutter)}.tb-footer a{color:var(--ink-soft);text-decoration:none;display:inline-flex;align-items:center;min-height:44px}.tb-footer a:hover,.tb-footer a[aria-current]{color:var(--ink)}.tb-footer .tb-footer__service a{text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:3px}.tb-footer .tb-footer__service a:hover{text-decoration-color:var(--grad-violet)}@media(min-width:768px){.tb-footer__inner{grid-template-columns:minmax(0,1fr)auto;column-gap:var(--gutter)}.tb-footer__service{grid-column:1/-1}}