.bg{color:#e6edf3;background-color:#0d1117}.chroma{color:#e6edf3;background-color:#0d1117}.chroma .x{}.chroma .err{color:#f85149}.chroma .cl{}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#6e7681}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}.chroma .line{display:flex}.chroma .k{color:#ff7b72}.chroma .kc{color:#79c0ff}.chroma .kd{color:#ff7b72}.chroma .kn{color:#ff7b72}.chroma .kp{color:#79c0ff}.chroma .kr{color:#ff7b72}.chroma .kt{color:#ff7b72}.chroma .n{}.chroma .na{}.chroma .nb{}.chroma .bp{}.chroma .nc{color:#f0883e;font-weight:700}.chroma .no{color:#79c0ff;font-weight:700}.chroma .nd{color:#d2a8ff;font-weight:700}.chroma .ni{color:#ffa657}.chroma .ne{color:#f0883e;font-weight:700}.chroma .nf{color:#d2a8ff;font-weight:700}.chroma .fm{}.chroma .nl{color:#79c0ff;font-weight:700}.chroma .nn{color:#ff7b72}.chroma .nx{}.chroma .py{color:#79c0ff}.chroma .nt{color:#7ee787}.chroma .nv{color:#79c0ff}.chroma .vc{}.chroma .vg{}.chroma .vi{}.chroma .vm{}.chroma .l{color:#a5d6ff}.chroma .ld{color:#79c0ff}.chroma .s{color:#a5d6ff}.chroma .sa{color:#79c0ff}.chroma .sb{color:#a5d6ff}.chroma .sc{color:#a5d6ff}.chroma .dl{color:#79c0ff}.chroma .sd{color:#a5d6ff}.chroma .s2{color:#a5d6ff}.chroma .se{color:#79c0ff}.chroma .sh{color:#79c0ff}.chroma .si{color:#a5d6ff}.chroma .sx{color:#a5d6ff}.chroma .sr{color:#79c0ff}.chroma .s1{color:#a5d6ff}.chroma .ss{color:#a5d6ff}.chroma .m{color:#a5d6ff}.chroma .mb{color:#a5d6ff}.chroma .mf{color:#a5d6ff}.chroma .mh{color:#a5d6ff}.chroma .mi{color:#a5d6ff}.chroma .il{color:#a5d6ff}.chroma .mo{color:#a5d6ff}.chroma .o{color:#ff7b72;font-weight:700}.chroma .ow{color:#ff7b72;font-weight:700}.chroma .p{}.chroma .c{color:#8b949e;font-style:italic}.chroma .ch{color:#8b949e;font-style:italic}.chroma .cm{color:#8b949e;font-style:italic}.chroma .c1{color:#8b949e;font-style:italic}.chroma .cs{color:#8b949e;font-weight:700;font-style:italic}.chroma .cp{color:#8b949e;font-weight:700;font-style:italic}.chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}.chroma .g{}.chroma .gd{color:#ffa198;background-color:#490202}.chroma .ge{font-style:italic}.chroma .gr{color:#ffa198}.chroma .gh{color:#79c0ff;font-weight:700}.chroma .gi{color:#56d364;background-color:#0f5323}.chroma .go{color:#8b949e}.chroma .gp{color:#8b949e}.chroma .gs{font-weight:700}.chroma .gu{color:#79c0ff}.chroma .gt{color:#ff7b72}.chroma .gl{text-decoration:underline}.chroma .w{color:#6e7681}@font-face{font-family:ibm plex sans;src:url(/fonts/plex/plex-sans-400-normal.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:ibm plex sans;src:url(/fonts/plex/plex-sans-400-italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:ibm plex sans;src:url(/fonts/plex/plex-sans-500-normal.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:ibm plex sans;src:url(/fonts/plex/plex-sans-600-normal.woff2)format("woff2");font-weight:600 700;font-style:normal;font-display:swap}@font-face{font-family:ibm plex sans;src:url(/fonts/plex/plex-sans-600-italic.woff2)format("woff2");font-weight:600 700;font-style:italic;font-display:swap}@font-face{font-family:ibm plex mono;src:url(/fonts/plex/plex-mono-400-normal.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:ibm plex mono;src:url(/fonts/plex/plex-mono-400-italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:ibm plex mono;src:url(/fonts/plex/plex-mono-500-normal.woff2)format("woff2");font-weight:500 700;font-style:normal;font-display:swap}:root{color-scheme:dark;--bg:#1d1f21;--bg-bar:#17181a;--bg-card:#25282b;--bg-card-hover:#2b2f33;--bg-code:#2a2d30;--bg-codeblock:#141618;--fg:#d6dbe0;--fg-strong:#f2f4f5;--dim:#8a939b;--rule:#34383c;--rule-soft:#2b2f32;--acc:#2fe7ed;--acc-dim:color-mix(in srgb, var(--acc) 50%, transparent);--acc-line:color-mix(in srgb, var(--acc) 35%, transparent);--font-body:"IBM Plex Sans", -apple-system, "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--page:880px;--measure:42rem}:root[data-theme=green]{--acc:#39ff7a}:root[data-theme=amber]{--acc:#ffb000}:root[data-theme=blue]{--acc:#6cb6ff}:root[data-theme=red]{--acc:#ff6b6b}:root[data-theme=pink]{--acc:#ff79c6}:root[data-theme=white]{--acc:#e8eaec}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}[id]{scroll-margin-top:72px}body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:17px;line-height:1.7;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6{font-family:var(--font-mono);font-weight:500;color:var(--fg-strong);line-height:1.3;letter-spacing:-.01em}a{color:var(--acc);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}strong,b{font-weight:600;color:var(--fg-strong)}code,kbd,samp,pre{font-family:var(--font-mono)}img{max-width:100%;height:auto}::selection{background:color-mix(in srgb,var(--acc) 30%,transparent);color:var(--fg-strong)}:focus-visible{outline:2px solid var(--acc);outline-offset:2px}.flexWrapper{display:flex;flex-direction:column;min-height:100vh;flex:1 auto}.content{flex:1 auto;display:flex;justify-content:center}.main{width:100%;max-width:var(--page);padding:0 20px}.headerWrapper{position:sticky;top:0;z-index:70;background:var(--bg-bar);border-bottom:1px solid var(--rule-soft);display:flex;justify-content:center;flex-shrink:0}.header{font-family:var(--font-mono);font-size:15px;width:100%;max-width:var(--page);height:56px;padding:0 20px;display:flex;justify-content:space-between;align-items:center}.terminal,.terminal:hover{color:var(--fg-strong);text-decoration:none}.prompt-host{color:var(--fg-strong)}.prompt-path{color:var(--acc)}.prompt-sign{color:var(--dim)}.cursor{display:inline-block;width:.55em;height:1.1em;margin-left:.35em;vertical-align:-.2em;background:var(--acc);animation:blink 1.1s steps(1)infinite}@keyframes blink{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.cursor{animation:none}}.headerLinks ul{list-style:none;margin:0;padding:0}.headerLinks li{display:inline;margin-left:1.1em}.headerLinks a{color:var(--dim)}.headerLinks a:hover{color:var(--fg-strong);text-decoration:none}.headerLinks a[aria-current=page]{color:var(--fg-strong)}.side-menu{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;margin:0}.header{position:relative}.hamb{cursor:pointer;display:none;padding:12px 4px}.hamb-line,.hamb-line::before,.hamb-line::after{display:block;position:relative;width:22px;height:2px;background:var(--fg-strong)}.hamb-line::before,.hamb-line::after{content:"";position:absolute;transition:all .2s ease-out}.hamb-line::before{top:6px}.hamb-line::after{top:-6px}.side-menu:checked~.hamb .hamb-line{background:0 0}.side-menu:checked~.hamb .hamb-line::before{transform:rotate(-45deg);top:0}.side-menu:checked~.hamb .hamb-line::after{transform:rotate(45deg);top:0}@media(max-width:768px){.header{font-size:14px}.hamb{display:block}.headerLinks{position:fixed;top:56px;left:0;width:100%;height:100%;z-index:50;background:var(--bg);overflow:hidden;max-height:0;transition:max-height .4s ease-out;display:flex;justify-content:center;align-items:flex-start}.side-menu:checked~.headerLinks{max-height:100%}.headerLinks ul{display:flex;flex-direction:column;gap:1.2em;padding-top:3rem;font-size:18px}.headerLinks li{margin:0}}.footer{margin-top:4rem;padding:20px;text-align:center;font-family:var(--font-mono);font-size:13px;line-height:1.7;color:var(--dim);background:var(--bg-bar);border-top:1px solid var(--rule-soft)}.footer p{margin:0}.footer a{color:var(--fg)}.footer a:hover{color:var(--acc)}.footerHint{margin-top:.5rem!important;font-size:12px;opacity:.8}.footer kbd{font-family:inherit;font-size:11.5px;color:var(--fg);border:1px solid var(--rule);border-radius:3px;padding:0 .35em}.intro{min-height:calc(100vh - 200px);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:3rem 0}.intro-logo{font-family:var(--font-mono);font-weight:500;font-size:3.4rem;line-height:1;letter-spacing:-.04em;color:var(--acc);margin-bottom:1.6rem;user-select:none}.intro-title{font-family:var(--font-mono);font-weight:500;font-size:3rem;line-height:1;color:var(--fg-strong);margin:0 0 .9rem}.intro-headline{margin:0;color:var(--dim);font-size:1rem}.intro .motd{margin-top:4.5rem}.motd{width:100%;max-width:36rem;text-align:left;font-family:var(--font-mono);font-size:14.5px;line-height:1.75}.motdCmd{color:var(--fg);margin-top:1.3rem}.motdCmd:first-child{margin-top:0}.motdCmd::before{content:"$ ";color:var(--acc)}.motdCmd a{color:inherit}.motdCmd a:hover{color:var(--acc);text-decoration:none}.motdPosts{list-style:none;margin:.1rem 0 0;padding:0}.motdPosts li{display:flex;gap:1.2ch;min-width:0}.motdPosts time{flex:none;color:var(--dim)}.motdPosts a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.motdRow{margin:.1rem 0 0;display:flex;flex-wrap:wrap;gap:0 1.6ch}.motdRow a.dim{color:var(--dim)}.motdRow a.dim:hover{color:var(--acc)}.postWrapper{max-width:var(--measure);margin:0 auto;padding:2.5rem 0 1rem}.postWrapper>h1{font-size:2rem;margin:0 0 .9rem;text-wrap:balance}.postDescription{color:var(--dim);font-size:1.1em;margin:-.3rem 0 1.2rem}.postMeta{font-family:var(--font-mono);font-size:13.5px;line-height:1.75;color:var(--dim);border-left:2px solid var(--acc);padding:.1rem 0 .1rem 14px;margin:0 0 2.4rem}.postMeta .cmd{color:var(--fg)}.postMeta .cmd::before{content:"$ ";color:var(--acc)}.postMeta dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:0 1.2em;margin:0}.postMeta dt,.postMeta dd{margin:0}.postMeta a{margin-right:.3em;white-space:nowrap}.prose>:first-child{margin-top:0}.prose p,.prose ul,.prose ol,.prose dl,.prose blockquote,.prose table,.prose figure{margin:0 0 1.25em}.prose h2{font-size:1.4rem;margin:2.4em 0 .7em}.prose h3{font-size:1.15rem;margin:2em 0 .6em}.prose h4{font-size:1rem;margin:1.8em 0 .5em}.prose h1::before,.prose h2::before,.prose h3::before,.prose h4::before{color:var(--acc-dim);font-weight:400}.prose h1::before{content:"# "}.prose h2::before{content:"## "}.prose h3::before{content:"### "}.prose h4::before{content:"#### "}.prose h1{font-size:1.6rem;margin:2.4em 0 .7em}.postWrapper .prose>h1:first-child{display:none}.aboutPage .listHead{padding-top:0;margin-bottom:1.6rem}.aboutPage .prose>p:first-child img{margin:0 0 1.6rem;border-radius:10px}.prose a{text-decoration:underline;text-decoration-color:var(--acc-line);text-decoration-thickness:1px;text-underline-offset:3px}.prose a:hover{text-decoration-color:var(--acc)}.prose ul,.prose ol{padding-left:1.4em}.prose li{margin:.3em 0}.prose li::marker{color:var(--dim)}.prose ul>li::marker{content:"- ";font-family:var(--font-mono)}.prose blockquote{margin-left:0;padding:.1em 0 .1em 1.1em;border-left:2px solid var(--rule);color:var(--dim)}.prose hr{border:0;border-top:1px dashed var(--rule);margin:2.5em 0}.prose img{border-radius:8px;display:block;margin:1.6em auto}.prose figure img{margin-bottom:.5em}.prose figcaption{text-align:center;font-size:.85em;color:var(--dim)}.prose :not(pre)>code{font-size:.86em;background:var(--bg-code);color:var(--fg-strong);padding:.12em .38em;border-radius:4px;overflow-wrap:anywhere}.prose pre,.highlight pre{font-size:14px;line-height:1.6;padding:14px 16px;border-radius:8px;overflow-x:auto;margin:0 0 1.4em;background:var(--bg-codeblock);border:1px solid var(--rule-soft);tab-size:4}.highlight{margin:0 0 1.4em}.highlight pre{margin:0}.prose pre code{font-size:inherit;background:0 0;padding:0;color:inherit}.codeBlock{margin:0 0 1.4em}.codeBlock>pre,.codeBlock pre{margin:0;border-top-left-radius:0;border-top-right-radius:0;border-top:0}.codeBar{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:0 6px 0 14px;height:32px;font-family:var(--font-mono);font-size:12px;color:var(--dim);background:var(--bg-bar);border:1px solid var(--rule-soft);border-bottom:1px solid var(--rule);border-radius:8px 8px 0 0}.codeLang::before{content:"~ ";color:var(--acc-dim)}.codeLang:empty::before{content:""}.codeCopy{font:inherit;color:var(--dim);background:0 0;border:0;border-radius:4px;padding:3px 8px;cursor:pointer}.codeCopy::before{content:"$ ";color:var(--acc-dim)}.codeCopy:hover{color:var(--fg-strong);background:var(--bg-card)}.codeCopy.done{color:var(--acc)}.prose table{width:100%;border-collapse:collapse;font-size:.92em;line-height:1.5}.prose th{font-family:var(--font-mono);font-weight:500;font-size:.85em;color:var(--dim);text-align:left;border-bottom:1px solid var(--rule);padding:.5em .8em .5em 0}.prose td{border-bottom:1px dashed var(--rule-soft);padding:.55em .8em .55em 0;vertical-align:top}.prose tr:last-child td{border-bottom:0}.prose dt{font-weight:600;color:var(--fg-strong)}.prose dd{margin:0 0 .6em 1.2em}.listHead{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding:2.5rem 0 .5rem;font-family:var(--font-mono);font-size:15px}.listHead .cmd{color:var(--fg);margin:0;font-size:inherit;font-weight:400}.listHead .cmd::before{content:"$ ";color:var(--acc)}.listHead a{color:var(--dim)}.listHead a:hover{color:var(--acc)}.listIntro{color:var(--dim);margin:.5rem 0 0}.postYear a{color:inherit}.postYear a:hover{color:var(--acc);text-decoration:none}.postYear{font-family:var(--font-mono);font-weight:400;font-size:13px;color:var(--dim);letter-spacing:.08em;margin:2.2rem 0 .2rem;padding-bottom:.4rem;border-bottom:1px solid var(--rule-soft)}.postList{list-style:none;margin:0;padding:0}.postRow{display:grid;grid-template-columns:6.5ch minmax(0,1fr);gap:0 1.2rem;padding:1rem 0;border-bottom:1px dashed var(--rule-soft)}.postRow:last-child{border-bottom:0}.postRow time{font-family:var(--font-mono);font-size:13.5px;color:var(--dim);padding-top:.2em;white-space:nowrap}.postRow h2{font-size:1.08rem;margin:0 0 .3rem}.postRow h2 a{color:var(--fg-strong)}.postRow h2 a:hover{color:var(--acc);text-decoration:none}.postRow p{margin:0;color:var(--fg);font-size:.95em;line-height:1.6}.postTags{margin-top:.4rem;font-family:var(--font-mono);font-size:12.5px}.postTags a{color:var(--dim);margin-right:.5em;white-space:nowrap}.postTags a:hover{color:var(--acc)}@media(max-width:600px){.postRow{grid-template-columns:minmax(0,1fr)}.postRow time{padding:0 0 .2rem}}.tagCloud{display:flex;flex-wrap:wrap;gap:.6rem 1.2rem;padding:1.5rem 0;font-family:var(--font-mono);line-height:1.4}.tagCloud a{color:var(--fg)}.tagCloud a::before{content:"#";color:var(--acc-dim)}.tagCloud a:hover{color:var(--acc);text-decoration:none}.tagCloud .count{color:var(--dim);font-size:.7em;margin-left:.3em}.vertical{flex-direction:column;align-items:center}.indexWrapper{display:flex;flex-direction:column;justify-content:center}.indexHeader{font-size:3em}@media(max-width:600px){body{font-size:16.5px}.main{padding:0 16px}.header{padding:0 16px}.postWrapper{padding-top:1.8rem}.postWrapper>h1{font-size:1.55rem}.prose h2{font-size:1.25rem}.intro-title{font-size:2.4rem}.motd{font-size:13.5px}.intro .motd{margin-top:3.2rem}.intro-headline{font-size:.95rem}.prose pre,.highlight pre{font-size:13px;border-radius:6px}}.postThumb{float:right;width:120px;height:90px;margin:.3rem 0 .4rem 1.1rem;border-radius:6px;overflow:hidden;background:var(--bg-card);border:1px solid var(--rule-soft);display:flex;align-items:center;justify-content:center}.postThumb img{display:block;width:100%;height:100%;object-fit:cover}.postThumb.portrait{width:90px;height:120px}.postThumb:hover{border-color:var(--acc)}.postRow>div{display:flow-root}.postTags{clear:none}@media(max-width:600px){.postThumb{width:96px;height:72px;margin-left:.9rem}.postThumb.portrait{width:66px;height:88px}}.prompt{display:flex;align-items:center;gap:.55ch;min-width:0;white-space:nowrap}.prompt-host:hover{color:var(--acc)}.shellLine{display:flex;align-items:center;min-width:0;cursor:text;padding:10px 6px 10px 0;margin:-10px 0}.shellInput{width:1px;max-width:34ch;padding:0;margin:0;border:0;outline:0;background:0 0;color:var(--fg-strong);font:inherit;caret-color:transparent}.shellLine .cursor{margin-left:0;flex:none}.shellInput:focus+.cursor{animation-duration:.9s}.shellOut{position:absolute;top:100%;left:50%;transform:translateX(-50%);width:min(var(--page),100%);max-height:min(65vh,560px);overflow-y:auto;z-index:60;margin:0;padding:14px 20px 16px;background:var(--bg-bar);border:1px solid var(--rule);border-top:0;border-radius:0 0 8px 8px;font-family:var(--font-mono);font-size:14px;line-height:1.6;color:var(--fg);white-space:pre-wrap;overflow-wrap:anywhere;box-shadow:0 18px 40px rgba(0,0,0,.45)}.shellOut[hidden]{display:none}.shellOut .echo{color:var(--fg-strong)}.shellOut .echo .p{color:var(--dim)}.shellOut .dim{color:var(--dim)}.shellOut .acc{color:var(--acc)}.shellOut .err{color:#ff6b6b}.shellOut .ascii{line-height:1.25}.shellOut a{color:var(--acc)}.shellOut .grid{display:grid;grid-template-columns:max-content 1fr;gap:0 2ch;margin-bottom:.9em}.shellOut .hint{color:var(--dim);font-size:12.5px;margin-top:.4rem}:root[data-crt] body{text-shadow:0 0 .35em color-mix(in srgb,var(--acc) 35%,transparent)}:root[data-crt] body::after{content:"";position:fixed;inset:0;z-index:100;pointer-events:none;background:repeating-linear-gradient(to bottom,rgba(0,0,0,.22) 0 1px,transparent 1px 3px);mix-blend-mode:multiply}.matrixRain{position:fixed;inset:0;z-index:90;pointer-events:none}@media(max-width:768px){.prompt:focus-within .prompt-host{display:none}.prompt{gap:.5ch}.shellInput{max-width:16ch}.shellOut{font-size:13px;padding:12px 16px 14px;border-radius:0;border-left:0;border-right:0;max-height:70vh}}.prose img.shot{border:1px solid var(--rule)}.prose img.shot-phone{max-width:min(360px,100%)}.notFound{min-height:calc(100vh - 260px);display:flex;align-items:center;justify-content:center;padding:3rem 0}.nfTerm{margin:0;width:100%;max-width:var(--measure);font-family:var(--font-mono);font-size:15px;line-height:1.75;color:var(--fg);white-space:pre-wrap;overflow-wrap:anywhere}.nfTerm .dim{color:var(--dim)}.nfTerm .err{color:#ff6b6b}.nfTerm .acc{color:var(--acc)}.nfTerm .nfEcho{color:var(--fg-strong)}.nfTerm .nfSuggest[hidden]{display:none}.nfShell{font:inherit;color:var(--acc);background:0 0;border:0;padding:0;cursor:pointer}.nfShell:hover{text-decoration:underline;text-underline-offset:3px}@media(max-width:600px){.nfTerm{font-size:13.5px}}img.zoomable{cursor:zoom-in}.lightbox{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;background:rgba(10,11,12,.92);cursor:zoom-out}.lightbox[hidden]{display:none}.lightbox img{max-width:100%;max-height:calc(100% - 40px);object-fit:contain;border-radius:6px;box-shadow:0 20px 60px rgba(0,0,0,.6)}.lightboxCaption{margin:0;max-width:70ch;text-align:center;font-family:var(--font-mono);font-size:13px;color:var(--dim)}.lightboxClose{position:absolute;top:12px;right:16px;font:28px/1 var(--font-mono);color:var(--dim);background:0 0;border:0;padding:6px 10px;cursor:pointer}.lightboxClose:hover{color:var(--fg-strong)}html.lightboxOpen{overflow:hidden}