@import url(https://fonts.googleapis.com/css2?family=Inconsolata:wght@200..900&display=swap&text=slava@home:~$);@import url(https://fonts.googleapis.com/css2?family=Source+Code+Pro:ital,wght@0,200..900;1,200..900&family=Source+Sans+3:ital,wght@0,200..900;1,200..900&display=swap);@layer reset, icons, pygments, page;@layer reset{*,:after,:before{box-sizing:border-box}*{margin:0;padding:0}body{line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}canvas,img,picture,svg,video{display:block;height:auto;max-width:100%}h1,h2,h3,h4,h5,h6{text-wrap:balance}p{overflow-wrap:break-word;text-wrap:pretty}button,input,select,textarea{font:inherit}ol,ul{list-style:none}a{color:inherit;text-decoration:none}}:root{color-scheme:dark light}:root[dark-theme=dark]{color-scheme:dark}:root,:root[data-theme=dark]{--bg:#07110b;--bg-grid:rgba(51,255,119,.055);--code-bg:#050a07;--surface:rgba(10,24,15,.92);--surface-2:rgba(17,40,25,.88);--text:#d7ffe1;--muted:#91b99c;--faint:#63846c;--green:#62ff8b;--green-dim:#25b957;--cyan:#61d6ff;--amber:#ffd166;--purple:#d6a8ff;--danger:#ff6b6b;--border:rgba(110,255,151,.23);--border-strong:rgba(110,255,151,.43);--shadow:rgba(0,0,0,.45);--pygments-highlighted-line:#6e7681;--pygments-comment:#8b949e;--pygments-error:#f85149;--pygments-escape:#e6edf3;--pygments-generic:#e6edf3;--pygments-keyword:#ff7b72;--pygments-literal:#a5d6ff;--pygments-name:#e6edf3;--pygments-operator:#ff7b72;--pygments-other:#e6edf3;--pygments-punctuation:#e6edf3;--pygments-comment-hashbang:#8b949e;--pygments-comment-multiline:#8b949e;--pygments-comment-preproc:#8b949e;--pygments-comment-preproc-file:#8b949e;--pygments-comment-single:#8b949e;--pygments-comment-special:#8b949e;--pygments-generic-deleted:#ffa198;--pygments-generic-deleted-bg:#490202;--pygments-generic-emph:#e6edf3;--pygments-generic-emph-strong:#e6edf3;--pygments-generic-error:#ffa198;--pygments-generic-heading:#79c0ff;--pygments-generic-inserted:#56d364;--pygments-generic-inserted-bg:#0f5323;--pygments-generic-output:#8b949e;--pygments-generic-prompt:#8b949e;--pygments-generic-strong:#e6edf3;--pygments-generic-subheading:#79c0ff;--pygments-generic-traceback:#ff7b72;--pygments-generic-underline:#e6edf3;--pygments-keyword-constant:#79c0ff;--pygments-keyword-declaration:#ff7b72;--pygments-keyword-namespace:#ff7b72;--pygments-keyword-pseudo:#79c0ff;--pygments-keyword-reserved:#ff7b72;--pygments-keyword-type:#ff7b72;--pygments-literal-date:#79c0ff;--pygments-literal-number:#a5d6ff;--pygments-literal-string:#a5d6ff;--pygments-name-attribute:#e6edf3;--pygments-name-builtin:#e6edf3;--pygments-name-class:#f0883e;--pygments-name-constant:#79c0ff;--pygments-name-decorator:#d2a8ff;--pygments-name-entity:#ffa657;--pygments-name-exception:#f0883e;--pygments-name-function:#d2a8ff;--pygments-name-label:#79c0ff;--pygments-name-namespace:#ff7b72;--pygments-name-other:#e6edf3;--pygments-name-property:#79c0ff;--pygments-name-tag:#7ee787;--pygments-name-variable:#79c0ff;--pygments-operator-word:#ff7b72;--pygments-punctuation-marker:#e6edf3;--pygments-text-whitespace:#6e7681;--pygments-literal-number-bin:#a5d6ff;--pygments-literal-number-float:#a5d6ff;--pygments-literal-number-hex:#a5d6ff;--pygments-literal-number-integer:#a5d6ff;--pygments-literal-number-oct:#a5d6ff;--pygments-literal-string-affix:#79c0ff;--pygments-literal-string-backtick:#a5d6ff;--pygments-literal-string-char:#a5d6ff;--pygments-literal-string-delimiter:#79c0ff;--pygments-literal-string-doc:#a5d6ff;--pygments-literal-string-double:#a5d6ff;--pygments-literal-string-escape:#79c0ff;--pygments-literal-string-heredoc:#79c0ff;--pygments-literal-string-interpol:#a5d6ff;--pygments-literal-string-other:#a5d6ff;--pygments-literal-string-regex:#79c0ff;--pygments-literal-string-single:#a5d6ff;--pygments-literal-string-symbol:#a5d6ff;--pygments-name-builtin-pseudo:#e6edf3;--pygments-name-function-magic:#d2a8ff;--pygments-name-variable-class:#79c0ff;--pygments-name-variable-global:#79c0ff;--pygments-name-variable-instance:#79c0ff;--pygments-name-variable-magic:#79c0ff;--pygments-literal-number-integer-long:#a5d6ff;--max:1120px;--radius:18px;--radius-sm:10px;--logo-font:"Inconsolata",monospace;--body-font:"Source Sans 3",system-ui,-apple-system,BlinkMacSystemFont,sans-serif;--mono-font:"Source Code Pro",ui-monospace,monospace;font-family:var(--body-font);font-size:1.125rem}@media(prefers-color-scheme:light){:root{color-scheme:light;--bg:#edf5ed;--bg-grid:rgba(17,93,41,.07);--code-bg:#e9fef1;--surface:rgba(244,255,245,.94);--surface-2:rgba(230,245,232,.9);--text:#102216;--muted:#42624b;--faint:#6f8b76;--green:#087d32;--green-dim:#169548;--cyan:#006f91;--amber:#8a5a00;--purple:#6f3ea2;--danger:#b4232a;--border:rgba(24,119,56,.22);--border-strong:rgba(24,119,56,.38);--shadow:rgba(15,50,25,.16);--pygments-highlighted-line:#ffc;--pygments-comment:#3d7b7b;--pygments-error:red;--pygments-escape:inherit;--pygments-generic:inherit;--pygments-keyword:green;--pygments-literal:inherit;--pygments-name:inherit;--pygments-operator:#666;--pygments-other:inherit;--pygments-punctuation:inherit;--pygments-comment-hashbang:#3d7b7b;--pygments-comment-multiline:#3d7b7b;--pygments-comment-preproc:#9c6500;--pygments-comment-preproc-file:#3d7b7b;--pygments-comment-single:#3d7b7b;--pygments-comment-special:#3d7b7b;--pygments-generic-deleted:#a00000;--pygments-generic-deleted-bg:transparent;--pygments-generic-emph:inherit;--pygments-generic-emph-strong:inherit;--pygments-generic-error:#e40000;--pygments-generic-heading:navy;--pygments-generic-inserted:#008400;--pygments-generic-inserted-bg:transparent;--pygments-generic-output:#717171;--pygments-generic-prompt:navy;--pygments-generic-strong:inherit;--pygments-generic-subheading:purple;--pygments-generic-traceback:#04d;--pygments-generic-underline:inherit;--pygments-keyword-constant:green;--pygments-keyword-declaration:green;--pygments-keyword-namespace:green;--pygments-keyword-pseudo:green;--pygments-keyword-reserved:green;--pygments-keyword-type:#b00040;--pygments-literal-date:inherit;--pygments-literal-number:#666;--pygments-literal-string:#ba2121;--pygments-name-attribute:#687822;--pygments-name-builtin:green;--pygments-name-class:#00f;--pygments-name-constant:#800;--pygments-name-decorator:#a2f;--pygments-name-entity:#717171;--pygments-name-exception:#cb3f38;--pygments-name-function:#00f;--pygments-name-label:#767600;--pygments-name-namespace:#00f;--pygments-name-other:inherit;--pygments-name-property:inherit;--pygments-name-tag:green;--pygments-name-variable:#19177c;--pygments-operator-word:#a2f;--pygments-punctuation-marker:inherit;--pygments-text-whitespace:#bbb;--pygments-literal-number-bin:#666;--pygments-literal-number-float:#666;--pygments-literal-number-hex:#666;--pygments-literal-number-integer:#666;--pygments-literal-number-oct:#666;--pygments-literal-string-affix:#ba2121;--pygments-literal-string-backtick:#ba2121;--pygments-literal-string-char:#ba2121;--pygments-literal-string-delimiter:#ba2121;--pygments-literal-string-doc:#ba2121;--pygments-literal-string-double:#ba2121;--pygments-literal-string-escape:#aa5d1f;--pygments-literal-string-heredoc:#ba2121;--pygments-literal-string-interpol:#a45a77;--pygments-literal-string-other:green;--pygments-literal-string-regex:#a45a77;--pygments-literal-string-single:#ba2121;--pygments-literal-string-symbol:#19177c;--pygments-name-builtin-pseudo:green;--pygments-name-function-magic:#00f;--pygments-name-variable-class:#19177c;--pygments-name-variable-global:#19177c;--pygments-name-variable-instance:#19177c;--pygments-name-variable-magic:#19177c;--pygments-literal-number-integer-long:#666}}:root[data-theme=light]{color-scheme:light;--bg:#edf5ed;--bg-grid:rgba(17,93,41,.07);--code-bg:#e9fef1;--surface:rgba(244,255,245,.94);--surface-2:rgba(230,245,232,.9);--text:#102216;--muted:#42624b;--faint:#6f8b76;--green:#087d32;--green-dim:#169548;--cyan:#006f91;--amber:#8a5a00;--purple:#6f3ea2;--danger:#b4232a;--border:rgba(24,119,56,.22);--border-strong:rgba(24,119,56,.38);--shadow:rgba(15,50,25,.16);--pygments-highlighted-line:#ffc;--pygments-comment:#3d7b7b;--pygments-error:red;--pygments-escape:inherit;--pygments-generic:inherit;--pygments-keyword:green;--pygments-literal:inherit;--pygments-name:inherit;--pygments-operator:#666;--pygments-other:inherit;--pygments-punctuation:inherit;--pygments-comment-hashbang:#3d7b7b;--pygments-comment-multiline:#3d7b7b;--pygments-comment-preproc:#9c6500;--pygments-comment-preproc-file:#3d7b7b;--pygments-comment-single:#3d7b7b;--pygments-comment-special:#3d7b7b;--pygments-generic-deleted:#a00000;--pygments-generic-deleted-bg:transparent;--pygments-generic-emph:inherit;--pygments-generic-emph-strong:inherit;--pygments-generic-error:#e40000;--pygments-generic-heading:navy;--pygments-generic-inserted:#008400;--pygments-generic-inserted-bg:transparent;--pygments-generic-output:#717171;--pygments-generic-prompt:navy;--pygments-generic-strong:inherit;--pygments-generic-subheading:purple;--pygments-generic-traceback:#04d;--pygments-generic-underline:inherit;--pygments-keyword-constant:green;--pygments-keyword-declaration:green;--pygments-keyword-namespace:green;--pygments-keyword-pseudo:green;--pygments-keyword-reserved:green;--pygments-keyword-type:#b00040;--pygments-literal-date:inherit;--pygments-literal-number:#666;--pygments-literal-string:#ba2121;--pygments-name-attribute:#687822;--pygments-name-builtin:green;--pygments-name-class:#00f;--pygments-name-constant:#800;--pygments-name-decorator:#a2f;--pygments-name-entity:#717171;--pygments-name-exception:#cb3f38;--pygments-name-function:#00f;--pygments-name-label:#767600;--pygments-name-namespace:#00f;--pygments-name-other:inherit;--pygments-name-property:inherit;--pygments-name-tag:green;--pygments-name-variable:#19177c;--pygments-operator-word:#a2f;--pygments-punctuation-marker:inherit;--pygments-text-whitespace:#bbb;--pygments-literal-number-bin:#666;--pygments-literal-number-float:#666;--pygments-literal-number-hex:#666;--pygments-literal-number-integer:#666;--pygments-literal-number-oct:#666;--pygments-literal-string-affix:#ba2121;--pygments-literal-string-backtick:#ba2121;--pygments-literal-string-char:#ba2121;--pygments-literal-string-delimiter:#ba2121;--pygments-literal-string-doc:#ba2121;--pygments-literal-string-double:#ba2121;--pygments-literal-string-escape:#aa5d1f;--pygments-literal-string-heredoc:#ba2121;--pygments-literal-string-interpol:#a45a77;--pygments-literal-string-other:green;--pygments-literal-string-regex:#a45a77;--pygments-literal-string-single:#ba2121;--pygments-literal-string-symbol:#19177c;--pygments-name-builtin-pseudo:green;--pygments-name-function-magic:#00f;--pygments-name-variable-class:#19177c;--pygments-name-variable-global:#19177c;--pygments-name-variable-instance:#19177c;--pygments-name-variable-magic:#19177c;--pygments-literal-number-integer-long:#666}@layer page{html{min-height:100%;scroll-behavior:smooth}button.theme-toggle .icon.dark-mode-filled{display:none}:root[data-theme=light] button.theme-toggle .icon.dark-mode-filled,button.theme-toggle .icon.light-mode-filled{display:block}:root[data-theme=light] button.theme-toggle .icon.light-mode-filled{display:none}@media(prefers-color-scheme:light){:root:not([data-theme]) button.theme-toggle .icon.dark-mode-filled{display:block}:root:not([data-theme]) button.theme-toggle .icon.light-mode-filled{display:none}}body{background-color:var(--bg);color:var(--text);margin:0;min-height:100vh}body:before{background:repeating-linear-gradient(0deg,hsla(0,0%,100%,.02),hsla(0,0%,100%,.02) 1px,transparent 1px,transparent 3px),radial-gradient(circle at 18% 12%,rgba(98,255,139,.13),transparent 26rem),radial-gradient(circle at 86% 18%,rgba(97,214,255,.1),transparent 24rem),linear-gradient(90deg,var(--bg-grid) 1px,transparent 1px),linear-gradient(0deg,var(--bg-grid) 1px,transparent 1px),var(--bg);background-attachment:scroll;background-size:auto,auto,auto,34px 34px,34px 34px,auto;content:"";inset:0;pointer-events:none;position:fixed;z-index:-1}a{color:var(--cyan);text-decoration:none}a:hover{color:var(--green);text-decoration:underline;text-decoration-thickness:.08em;text-underline-offset:.18em}a:focus-visible,button:focus-visible{outline:2px solid var(--amber);outline-offset:4px}.shell{container:website-shell/inline-size;margin:0 auto;padding:22px 0 28px;width:min(100% - 28px,var(--max))}footer{color:var(--muted);font-family:var(--body-font);font-size:.9rem;margin-top:22px;padding:18px;text-align:center}.logo{align-items:center;color:var(--green);display:inline-flex;font-family:var(--logo-font);font-size:clamp(1.1rem,2.6vw,1.28rem);font-weight:800;gap:10px;min-width:0;text-shadow:0 0 18px color-mix(in srgb,var(--green) 45%,transparent);user-select:none;white-space:nowrap}.logo,.logo:hover{text-decoration:none}.logo .term-filled{filter:drop-shadow(0 0 8px color-mix(in srgb,var(--green) 40%,transparent));flex:0 0 auto}@keyframes cursor-blink{0%,40%{opacity:1}50%,90%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:no-preference){span.cursor{animation:cursor-blink 1.4s ease-in-out infinite}}.topbar{align-items:center;backdrop-filter:blur(14px);background:color-mix(in srgb,var(--surface) 92%,transparent);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 18px 55px var(--shadow);container:website-head/inline-size;display:grid;gap:10px;grid-template-columns:1fr auto auto;margin-bottom:24px;padding:14px;position:sticky;top:0;transition:translate .2s ease-in-out;translate:0 0;z-index:10}.topbar-hidden{translate:0 -100%}.nav-link,.theme-toggle{align-items:center;background:var(--surface-2);border:1px solid var(--border);border-radius:100vh;color:var(--text);display:inline-flex;font-family:var(--body-font);font-size:.9rem;gap:8px;line-height:1;min-height:42px;padding:9px 12px;text-decoration:none}.nav-link:hover,.theme-toggle:hover{border-color:var(--border-strong);color:var(--green);filter:drop-shadow(0 0 8px color-mix(in srgb,var(--green) 15%,transparent));text-decoration:none;transform:translateY(-1px)}@container website-head (width < 500px){.logo>.icon.term-filled{display:none}}@container website-head (width < 400px){.logo .logo-home{display:none}}@container website-head (width < 340px){.topbar>nav>a>span{display:none}}@container website-head (width < 300px){.logo{display:none}}.content-grid{align-items:start;display:grid;gap:22px;grid-template-columns:minmax(min-content,2.65fr) minmax(28ch,1fr)}.term-pannel{background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 96%,#fff 4%),var(--surface));border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.panel-titlebar{align-items:center;background:color-mix(in srgb,var(--surface-2) 82%,transparent);border-bottom:1px solid var(--border);color:var(--muted);display:flex;font-family:var(--mono-font);gap:14px;justify-content:space-between;padding:12px 16px;user-select:none}.panel-titlebar .cmdline{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-titlebar .cmdline:before{color:var(--green);content:"$ ";font-weight:800}.panel-titlebar>span:nth-child(2){color:var(--amber);white-space:nowrap}.section-body{padding:18px}.posts{display:grid;gap:12px;list-style:none;margin:0;padding:0}.post-card{background:color-mix(in srgb,var(--surface-2) 80%,transparent);border:1px solid var(--border);border-radius:var(--radius-sm);display:grid;gap:16px;grid-template-columns:128px minmax(0,1fr);padding:16px;transition:transform .18s ease,border-color .18s ease,background .18s ease}.post-card:hover{background:color-mix(in srgb,var(--surface-2) 94%,var(--green) 6%);border-color:var(--border-strong);transform:translateY(-2px)}.post-date{align-items:center;color:var(--amber);display:inline-flex;font-family:var(--mono-font);font-size:.86rem;gap:8px;white-space:nowrap}.post-date:before{background-color:currentColor;content:"";display:inline-block;height:1em;mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px"><path d="M200-80q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v560q0 33-23.5 56.5T760-80H200Zm0-80h560v-400H200v400Z"/></svg>');mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:1em}.post-title{font-size:clamp(1.06rem,2.3vw,1.22rem);font-weight:600;margin:0 0 8px}a.post-title{color:var(--text)}.post-description{color:var(--muted);font-size:.96rem;margin:0 0 12px}.post-tags,.tags-cloud{display:flex;flex-wrap:wrap;gap:7px;list-style:none;margin:0;padding:0}.post-tags>li a,.tags-cloud>li a{align-items:center;background:color-mix(in srgb,var(--surface) 75%,transparent);border:1px solid var(--border);border-radius:100vh;box-shadow:0 0 0 color-mix(in srgb,var(--border-strong) 1%,transparent);color:var(--muted);display:inline-flex;font-size:.8rem;gap:5px;line-height:1.25;padding:4px 8px;transition:transform .18s ease,color .18s ease,background .18s ease,border-color .18s ease,box-shadow .18s ease-in-out}.post-tags>li a:hover,.tags-cloud>li a:hover{background:color-mix(in srgb,var(--surface) 94%,var(--green-dim));border-color:var(--border-strong);box-shadow:0 0 10px color-mix(in srgb,var(--border-strong) 35%,transparent);color:var(--text);text-decoration:none;transform:scale(1.02)}.post-tags>li a:before,.tags-cloud>li a:before{color:var(--green);content:"#"}.side-stack{display:flex;flex-wrap:wrap;gap:22px;max-width:100cqi}.side-stack>section{flex:1 1 25ch}.side-stack>section.tags-section{flex:none;width:100%}.links-list{display:grid;gap:12px;list-style:none;margin:0;padding:0}.links-list a{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);display:block;padding:12px;text-decoration:none}.links-list a .icon{margin-right:14px}.links-list a:hover{border-color:var(--border-strong);color:var(--green);text-decoration:none}.friends-links{display:grid;gap:12px;list-style:none;margin:0;padding:0}.friends-links a{background:var(--surface-2);border:1.25px dashed var(--border);border-radius:var(--radius-sm);color:var(--text);display:block;padding:12px;text-decoration:none}.friends-links a:before{background-color:currentColor;content:"";display:inline-block;height:1em;margin-right:14px;mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M318-120q-82 0-140-58t-58-140q0-40 15-76t43-64l134-133 56 56-134 134q-17 17-25.5 38.5T200-318q0 49 34.5 83.5T318-200q23 0 45-8.5t39-25.5l133-134 57 57-134 133q-28 28-64 43t-76 15Zm79-220-57-57 223-223 57 57-223 223Zm251-28-56-57 134-133q17-17 25-38t8-44q0-50-34-85t-84-35q-23 0-44.5 8.5T558-726L425-592l-57-56 134-134q28-28 64-43t76-15q82 0 139.5 58T839-641q0 39-14.5 75T782-502L648-368Z"/></svg>');mask-position:center;mask-repeat:no-repeat;mask-size:contain;vertical-align:-.125em;width:1em}.friends-links a:hover{border-color:var(--border-strong);color:var(--green);text-decoration:none}.post-content,.post-header{padding:clamp(22px,5vw,44px)}.post-header{background:linear-gradient(135deg,color-mix(in srgb,var(--green) 10%,transparent),transparent 42%),color-mix(in srgb,var(--surface-2) 45%,transparent);border-bottom:1px solid var(--border)}.post-header h1{font-size:clamp(2.15rem,6.2vw,4.6rem);line-height:.98;margin:0;text-wrap:balance}.post-header .post-description{color:var(--muted);font-size:clamp(1rem,2vw,1.16rem);margin:18px 0 0}.post-header .post-metadata{margin-top:22px}.post-header .post-tags{margin-top:18px}.post-content{background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 94%,#000),var(--surface))}.post-content p{margin:0 0 1.25em}.post-content em{color:color-mix(in srgb,var(--amber) 80%,var(--text))}.post-content strong{color:var(--green)}.post-content code:not(pre code){background:color-mix(in srgb,var(--code-bg) 82%,transparent);border:1px solid var(--border);border-radius:6px;color:var(--green);font-family:var(--mono-font);font-size:.9em;padding:.12em .34em}.codehilite-container{border:1px solid var(--border-strong);border-radius:var(--radius-sm);margin:1.45em 0;overflow:hidden;padding:0 1px 2px}.codehilite-container .codehilite-toolbar{align-items:center;background-color:rgb(from var(--green) r g b/.08);border-bottom:1px solid var(--border);color:var(--muted);display:flex;font-family:var(--mono-font);gap:6px;padding:4px 12px}.codehilite-container .codehilite-toolbar span{font-size:.78rem;margin-left:1ch;margin-right:auto;text-transform:uppercase;user-select:none}.codehilite-container .codehilite-toolbar button{background-color:transparent;border:0;border-radius:6px;color:var(--text);cursor:pointer;display:flex;padding:8px;transition:background-color .25s ease-in-out}.codehilite-container .codehilite-toolbar button:hover{background-color:var(--surface)}.codehilite-container .codehilite-toolbar button[data-action=codehilite-toggle-lines]:before{background-color:currentColor;content:"";display:inline-block;flex:1;height:1em;mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="m240-160 40-160H120l20-80h160l40-160H180l20-80h160l40-160h80l-40 160h160l40-160h80l-40 160h160l-20 80H660l-40 160h160l-20 80H600l-40 160h-80l40-160H360l-40 160h-80Zm140-240h160l40-160H420l-40 160Z"/></svg>');mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:1em}.codehilite-container .codehilite-toolbar button[data-action=codehilite-copy]:before{background-color:currentColor;content:"";display:inline-block;flex:1;height:1em;mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M360-240q-33 0-56.5-23.5T280-320v-480q0-33 23.5-56.5T360-880h360q33 0 56.5 23.5T800-800v480q0 33-23.5 56.5T720-240H360Zm0-80h360v-480H360v480ZM200-80q-33 0-56.5-23.5T120-160v-560h80v560h440v80H200Zm160-240v-480 480Z"/></svg>');mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:1em}.codehilite-container .codehilite-toolbar button.copied:before{mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z"/></svg>');mask-position:center;mask-repeat:no-repeat;mask-size:contain}.codehilite-container .codehilite-toolbar button.copied{background-color:color-mix(in srgb,var(--surface-2) 35%,var(--shadow))}.codehilite-container .codehilite{background-color:color-mix(in srgb,var(--code-bg) 86%,transparent);max-height:50em;overflow:auto;scrollbar-color:var(--green-dim) transparent;scrollbar-gutter:stable}.codehilite-container .codehilite .linenos{padding:8px 8px 8px 16px}.codehilite-container .codehilite td.code{padding:8px}.codehilite-container .codehilite code,.codehilite-container .codehilite pre{font-family:var(--mono-font);font-size:.92rem;line-height:1.5;tab-size:4;white-space:pre;word-break:normal}.codehilite-container .codehilite td.linenos{color:var(--muted)}html:not([data-linenums]) td.linenos,html[data-linenums=false] td.linenos{display:none}main{container:website-main/inline-size}@container website-main (width < 90ch){.post-card{gap:8px;grid-template-columns:1fr}}@container website-main (width < 72ch){.content-grid{grid-template-columns:1fr}}}@layer icons{.icon.term-filled{align-items:center;display:inline-flex;height:1em;justify-content:center;vertical-align:-.125em;width:1em}.icon.term-filled:before{background-color:currentColor;content:"";display:inline-block;flex:1;height:100%;mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px"><path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h640q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160Zm0-80h640v-400H160v400Zm140-40-56-56 103-104-104-104 57-56 160 160-160 160Zm180 0v-80h240v80H480Z"/></svg>');mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:100%}.icon.home-filled{align-items:center;display:inline-flex;height:1em;justify-content:center;vertical-align:-.125em;width:1em}.icon.home-filled:before{background-color:currentColor;content:"";display:inline-block;flex:1;height:100%;mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px"><path d="M160-120v-480l320-240 320 240v480H560v-280H400v280H160Z"/></svg>');mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:100%}.icon.rss-filled{align-items:center;display:inline-flex;height:1em;justify-content:center;vertical-align:-.125em;width:1em}.icon.rss-filled:before{background-color:currentColor;content:"";display:inline-block;flex:1;height:100%;mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px"><path d="M143.5-143.5Q120-167 120-200t23.5-56.5Q167-280 200-280t56.5 23.5Q280-233 280-200t-23.5 56.5Q233-120 200-120t-56.5-23.5ZM680-120q0-117-44-218.5T516-516q-76-76-177.5-120T120-680v-120q142 0 265 53t216 146q93 93 146 216t53 265H680Zm-240 0q0-67-25-124.5T346-346q-44-44-101.5-69T120-440v-120q92 0 171.5 34.5T431-431q60 60 94.5 139.5T560-120H440Z"/></svg>');mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:100%}.icon.calendar-filled{align-items:center;display:inline-flex;height:1em;justify-content:center;vertical-align:-.125em;width:1em}.icon.calendar-filled:before{background-color:currentColor;content:"";display:inline-block;flex:1;height:100%;mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px"><path d="M200-80q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v560q0 33-23.5 56.5T760-80H200Zm0-80h560v-400H200v400Z"/></svg>');mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:100%}.icon.dark-mode-filled{align-items:center;display:inline-flex;height:1em;justify-content:center;vertical-align:-.125em;width:1em}.icon.dark-mode-filled:before{background-color:currentColor;content:"";display:inline-block;flex:1;height:100%;mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px"><path d="M480-120q-150 0-255-105T120-480q0-150 105-255t255-105q14 0 27.5 1t26.5 3q-41 29-65.5 75.5T444-660q0 90 63 153t153 63q55 0 101-24.5t75-65.5q2 13 3 26.5t1 27.5q0 150-105 255T480-120Z"/></svg>');mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:100%}.icon.light-mode-filled{align-items:center;display:inline-flex;height:1em;justify-content:center;vertical-align:-.125em;width:1em}.icon.light-mode-filled:before{background-color:currentColor;content:"";display:inline-block;flex:1;height:100%;mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px"><path d="M338.5-338.5Q280-397 280-480t58.5-141.5Q397-680 480-680t141.5 58.5Q680-563 680-480t-58.5 141.5Q563-280 480-280t-141.5-58.5ZM200-440H40v-80h160v80Zm720 0H760v-80h160v80ZM440-760v-160h80v160h-80Zm0 720v-160h80v160h-80ZM256-650l-101-97 57-59 96 100-52 56Zm492 496-97-101 53-55 101 97-57 59Zm-98-550 97-101 59 57-100 96-56-52ZM154-212l101-97 55 53-97 101-59-57Z"/></svg>');mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:100%}.icon.github{align-items:center;display:inline-flex;height:1em;justify-content:center;vertical-align:-.125em;width:1em}.icon.github:before{background-color:currentColor;content:"";display:inline-block;flex:1;height:100%;mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="98" height="96" viewBox="0 0 98 96" fill="none"><g clip-path="url%28%23clip0_730_27126%29"><path d="M41.4395 69.3848C28.8066 67.8535 19.9062 58.7617 19.9062 46.9902C19.9062 42.2051 21.6289 37.0371 24.5 33.5918C23.2559 30.4336 23.4473 23.7344 24.8828 20.959C28.7109 20.4805 33.8789 22.4902 36.9414 25.2656C40.5781 24.1172 44.4062 23.543 49.0957 23.543C53.7852 23.543 57.6133 24.1172 61.0586 25.1699C64.0254 22.4902 69.2891 20.4805 73.1172 20.959C74.457 23.543 74.6484 30.2422 73.4043 33.4961C76.4668 37.1328 78.0937 42.0137 78.0937 46.9902C78.0937 58.7617 69.1934 67.6621 56.3691 69.2891C59.623 71.3945 61.8242 75.9883 61.8242 81.252L61.8242 91.2051C61.8242 94.0762 64.2168 95.7031 67.0879 94.5547C84.4102 87.9512 98 70.6289 98 49.1914C98 22.1074 75.9883 6.69539e-07 48.9043 4.309e-07C21.8203 1.92261e-07 -1.9479e-07 22.1074 -4.3343e-07 49.1914C-6.20631e-07 70.4375 13.4941 88.0469 31.6777 94.6504C34.2617 95.6074 36.75 93.8848 36.75 91.3008L36.75 83.6445C35.4102 84.2188 33.6875 84.6016 32.1562 84.6016C25.8398 84.6016 22.1074 81.1563 19.4277 74.7441C18.375 72.1602 17.2266 70.6289 15.0254 70.3418C13.877 70.2461 13.4941 69.7676 13.4941 69.1934C13.4941 68.0449 15.4082 67.1836 17.3223 67.1836C20.0977 67.1836 22.4902 68.9063 24.9785 72.4473C26.8926 75.2227 28.9023 76.4668 31.2949 76.4668C33.6875 76.4668 35.2187 75.6055 37.4199 73.4043C39.0469 71.7773 40.291 70.3418 41.4395 69.3848Z" fill="black"/></g><defs><clipPath id="clip0_730_27126"><rect width="98" height="96" fill="white"/></clipPath></defs></svg>');mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:100%}.icon.stackoverflow{align-items:center;display:inline-flex;height:1em;justify-content:center;vertical-align:-.125em;width:1em}.icon.stackoverflow:before{background-color:currentColor;content:"";display:inline-block;flex:1;height:100%;mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="black" height="72" viewBox="0 0 72 72" width="72"><path d="m58.1448 39.16.1042.0521-.0289.0289-.0753-.0752c-2.3734 3.0333-4.3589 6.3734-5.8929 9.945-.0232.0521-.0463.1042-.0695.1563-1.4761 3.4848-2.5296 7.1838-3.0796 11.0506v.0695c-.2952 2.0492-.4457 4.1447-.4457 6.275 0 1.8118.11 3.6005.3242 5.3545h-44.05791v-11.699h38.25761c.0695-.4804.1563-.9551.2431-1.4298l-36.85671-9.754 3.06802-11.3053 37.31399 9.8755c.1737-.3762.3474-.7525.5268-1.123l-33.4877-19.0911 5.9219-10.1303 33.9855 19.369c.2663-.3183.5383-.6367.822-.9493l-27.8437-27.48481 8.382-8.2778626 28.2895 27.9363726 2.987 2.9522c-3.1433 2.3792-5.9682 5.1577-8.3879 8.2547z"/></svg>');mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:100%}.icon.printables{align-items:center;display:inline-flex;height:1em;justify-content:center;vertical-align:-.125em;width:1em}.icon.printables:before{background-color:currentColor;content:"";display:inline-block;flex:1;height:100%;mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3.678 4.8 12 9.6v9.6l8.322-4.8V4.8L12 0ZM12 19.2l-8.322-4.8V24Z"/></svg>');mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:100%}.icon.pgp{align-items:center;display:inline-flex;height:1em;justify-content:center;vertical-align:-.125em;width:1em}.icon.pgp:before{background-color:currentColor;content:"";display:inline-block;flex:1;height:100%;mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M280-240q-100 0-170-70T40-480q0-100 70-170t170-70q81 0 141.5 45.5T506-560h414v160h-80v160H680v-160H506q-24 69-84.5 114.5T280-240Zm0-160q33 0 56.5-23.5T360-480q0-33-23.5-56.5T280-560q-33 0-56.5 23.5T200-480q0 33 23.5 56.5T280-400Z"/></svg>');mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:100%}.icon.link{align-items:center;display:inline-flex;height:1em;justify-content:center;vertical-align:-.125em;width:1em}.icon.link:before{background-color:currentColor;content:"";display:inline-block;flex:1;height:100%;mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M318-120q-82 0-140-58t-58-140q0-40 15-76t43-64l134-133 56 56-134 134q-17 17-25.5 38.5T200-318q0 49 34.5 83.5T318-200q23 0 45-8.5t39-25.5l133-134 57 57-134 133q-28 28-64 43t-76 15Zm79-220-57-57 223-223 57 57-223 223Zm251-28-56-57 134-133q17-17 25-38t8-44q0-50-34-85t-84-35q-23 0-44.5 8.5T558-726L425-592l-57-56 134-134q28-28 64-43t76-15q82 0 139.5 58T839-641q0 39-14.5 75T782-502L648-368Z"/></svg>');mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:100%}}@layer pygments{.codehilite .hll{background-color:var(--pygments-highlighted-line)}.codehilite .c{color:var(--pygments-comment);font-style:italic}.codehilite .err{color:var(--pygments-error)}.codehilite .esc{color:var(--pygments-escape)}.codehilite .g{color:var(--pygments-generic)}.codehilite .k{color:var(--pygments-keyword)}.codehilite .l{color:var(--pygments-literal)}.codehilite .n{color:var(--pygments-name)}.codehilite .o{color:var(--pygments-operator);font-weight:700}.codehilite .x{color:var(--pygments-other)}.codehilite .p{color:var(--pygments-punctuation)}.codehilite .ch{color:var(--pygments-comment-hashbang);font-style:italic}.codehilite .cm{color:var(--pygments-comment-multiline);font-style:italic}.codehilite .cp{color:var(--pygments-comment-preproc);font-style:italic;font-weight:700}.codehilite .cpf{color:var(--pygments-comment-preproc-file);font-style:italic}.codehilite .c1{color:var(--pygments-comment-single);font-style:italic}.codehilite .cs{color:var(--pygments-comment-special);font-style:italic;font-weight:700}.codehilite .gd{background-color:var(--pygments-generic-deleted-bg);color:var(--pygments-generic-deleted)}.codehilite .ge{color:var(--pygments-generic-emph);font-style:italic}.codehilite .ges{color:var(--pygments-generic-emph-strong);font-style:italic;font-weight:700}.codehilite .gr{color:var(--pygments-generic-error)}.codehilite .gh{color:var(--pygments-generic-heading);font-weight:700}.codehilite .gi{background-color:var(--pygments-generic-inserted-bg);color:var(--pygments-generic-inserted)}.codehilite .go{color:var(--pygments-generic-output)}.codehilite .gp{color:var(--pygments-generic-prompt)}.codehilite .gs{color:var(--pygments-generic-strong);font-weight:700}.codehilite .gu{color:var(--pygments-generic-subheading)}.codehilite .gt{color:var(--pygments-generic-traceback)}.codehilite .g-Underline{color:var(--pygments-generic-underline);text-decoration:underline}.codehilite .kc{color:var(--pygments-keyword-constant)}.codehilite .kd{color:var(--pygments-keyword-declaration)}.codehilite .kn{color:var(--pygments-keyword-namespace)}.codehilite .kp{color:var(--pygments-keyword-pseudo)}.codehilite .kr{color:var(--pygments-keyword-reserved)}.codehilite .kt{color:var(--pygments-keyword-type)}.codehilite .ld{color:var(--pygments-literal-date)}.codehilite .m{color:var(--pygments-literal-number)}.codehilite .s{color:var(--pygments-literal-string)}.codehilite .na{color:var(--pygments-name-attribute)}.codehilite .nb{color:var(--pygments-name-builtin)}.codehilite .nc{color:var(--pygments-name-class);font-weight:700}.codehilite .no{color:var(--pygments-name-constant);font-weight:700}.codehilite .nd{color:var(--pygments-name-decorator);font-weight:700}.codehilite .ni{color:var(--pygments-name-entity)}.codehilite .ne{color:var(--pygments-name-exception);font-weight:700}.codehilite .nf{color:var(--pygments-name-function);font-weight:700}.codehilite .nl{color:var(--pygments-name-label);font-weight:700}.codehilite .nn{color:var(--pygments-name-namespace)}.codehilite .nx{color:var(--pygments-name-other)}.codehilite .py{color:var(--pygments-name-property)}.codehilite .nt{color:var(--pygments-name-tag)}.codehilite .nv{color:var(--pygments-name-variable)}.codehilite .ow{color:var(--pygments-operator-word);font-weight:700}.codehilite .pm{color:var(--pygments-punctuation-marker)}.codehilite .w{color:var(--pygments-text-whitespace)}.codehilite .mb{color:var(--pygments-literal-number-bin)}.codehilite .mf{color:var(--pygments-literal-number-float)}.codehilite .mh{color:var(--pygments-literal-number-hex)}.codehilite .mi{color:var(--pygments-literal-number-integer)}.codehilite .mo{color:var(--pygments-literal-number-oct)}.codehilite .sa{color:var(--pygments-literal-string-affix)}.codehilite .sb{color:var(--pygments-literal-string-backtick)}.codehilite .sc{color:var(--pygments-literal-string-char)}.codehilite .dl{color:var(--pygments-literal-string-delimiter)}.codehilite .sd{color:var(--pygments-literal-string-doc)}.codehilite .s2{color:var(--pygments-literal-string-double)}.codehilite .se{color:var(--pygments-literal-string-escape)}.codehilite .sh{color:var(--pygments-literal-string-heredoc)}.codehilite .si{color:var(--pygments-literal-string-interpol)}.codehilite .sx{color:var(--pygments-literal-string-other)}.codehilite .sr{color:var(--pygments-literal-string-regex)}.codehilite .s1{color:var(--pygments-literal-string-single)}.codehilite .ss{color:var(--pygments-literal-string-symbol)}.codehilite .bp{color:var(--pygments-name-builtin-pseudo)}.codehilite .fm{color:var(--pygments-name-function-magic);font-weight:700}.codehilite .vc{color:var(--pygments-name-variable-class)}.codehilite .vg{color:var(--pygments-name-variable-global)}.codehilite .vi{color:var(--pygments-name-variable-instance)}.codehilite .vm{color:var(--pygments-name-variable-magic)}.codehilite .il{color:var(--pygments-literal-number-integer-long)}}