@font-face{font-family:zpixa;font-style:normal;font-weight:400;src:url(../fonts/zpix_fusion.woff2)format("woff2")}@font-face{font-family:fusion;font-style:normal;font-weight:400;src:url(../fonts/fusion.woff2)format("woff2")}@font-face{font-family:dos;font-style:normal;font-weight:400;src:url(../fonts/Fixedsys500c.woff)format("woff")}@font-face{font-family:dos-c;font-style:normal;font-weight:400;src:url(../fonts/ipix.woff2)format("woff2")}:root{color-scheme:light;--paper:#fbfaf6;--paper-2:#f3f0e9;--ink:#2f3038;--ink-soft:#77736d;--rule:#c9c2b8;--grid:rgba(47, 48, 56, 0.055);--accent:#b64f5c;--accent-strong:#9f3f4b;--accent-2:#2b8ea6;--accent-3:#f2c94c;--on-accent:#fffaf2;--slab-bg:var(--ink);--slab-fg:var(--paper);--window-edge:var(--ink);--dot:color-mix(in srgb, var(--ink) 10%, transparent);--grain:color-mix(in srgb, #000 14%, transparent);--marker:color-mix(in srgb, var(--accent) 20%, transparent);--marker-strong:color-mix(in srgb, var(--accent) 32%, transparent);--marker-yellow:rgba(242, 201, 76, 0.6);--tag-bg:var(--ink);--tag-fg:var(--paper);--tag-shadow:var(--accent);--key-face:var(--paper);--key-side:color-mix(in srgb, var(--ink) 16%, var(--paper));--key-edge:var(--ink);--key-legend:var(--ink);--lift:3px;--frame-shadow:color-mix(in srgb, var(--ink) 16%, transparent);--photo-mat:var(--paper);--photo-line:var(--rule);--photo-shadow:var(--frame-shadow);--misregister:-1px 0 0 color-mix(in srgb, var(--accent) 55%, transparent),
    1px 0 0 color-mix(in srgb, var(--accent-2) 45%, transparent);--code-block-bg:var(--paper-2);--mask-bg:var(--ink);--selection-text:#fff;--crt-overlay:linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.14) 50%),
    linear-gradient(90deg, rgba(255, 0, 0, 0.03), rgba(0, 255, 0, 0.01), rgba(0, 0, 255, 0.03));--crt-opacity:0.18;--crt-shadow:inset 0 0 42px rgba(0, 0, 0, 0.2);--font-body:"ZpixA", "fusion", "DOS-c";--font-ui:"DOS", "DOS-c", "ZpixA";--fs-2xs:0.625rem;--fs-xs:0.75rem;--fs-sm:0.875rem;--reading-leading:1.72;--content-max-width:74ch;--page-gutter:clamp(1rem, 4vw, 1.5rem);--grid-size:16px;--spine-width:5.5rem;--space-text:0.78rem;--space-block:1.25rem;--space-subsection:1.5rem;--space-section:2.25rem;--motion-fast:120ms;--motion-normal:180ms;--maincolor:var(--accent);--hovercolor:var(--accent-strong);--textcolor:var(--ink);--mutedcolor:var(--ink-soft);--linecolor:var(--rule);--pagebg:var(--paper);--surfacecolor:var(--paper-2);text-autospace:normal}@media(prefers-color-scheme:dark){:root{color-scheme:dark;--paper:#202124;--paper-2:#292b2f;--ink:#efeee9;--ink-soft:#aaa7a0;--rule:#55575d;--grid:rgba(255, 255, 255, 0.035);--accent:#9bd6ac;--accent-strong:#b5e3c2;--accent-2:#e58fb0;--accent-3:#f7c948;--on-accent:#15171a;--slab-bg:#e9e8e2;--slab-fg:#1a1b1e;--window-edge:#8b8d93;--dot:color-mix(in srgb, var(--ink) 9%, transparent);--grain:color-mix(in srgb, #000 22%, transparent);--marker:color-mix(in srgb, var(--accent) 24%, transparent);--marker-strong:color-mix(in srgb, var(--accent) 38%, transparent);--marker-yellow:rgba(247, 201, 72, 0.32);--frame-shadow:color-mix(in srgb, var(--ink) 22%, transparent);--photo-mat:#ffffff;--photo-line:#ffffff;--photo-shadow:#55575d;--key-side:#17181b;--code-block-bg:#1c1c1c;--mask-bg:var(--ink);--selection-text:#161719;--crt-overlay:linear-gradient(rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 0.35) 50%),
      linear-gradient(90deg, rgba(255, 0, 0, 0.04), rgba(0, 255, 0, 0.02), rgba(0, 0, 255, 0.04));--crt-opacity:0.22;--crt-shadow:inset 0 0 58px rgba(0, 0, 0, 0.62)}}*,*::before,*::after{box-sizing:border-box}html{overflow-y:scroll;scrollbar-width:none;font-family:var(--font-body);font-size:1rem;line-height:var(--reading-leading);-webkit-text-size-adjust:100%!important;text-size-adjust:100%!important}body{margin:0;color:var(--ink);background-color:var(--paper);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:var(--grid-size)var(--grid-size);background-attachment:fixed;font-kerning:normal;font-synthesis:none;text-rendering:optimizeLegibility}*{cursor:default!important}::selection{background:var(--accent);color:var(--selection-text)}::-webkit-scrollbar{display:none;width:0;height:0}a{color:inherit;text-decoration:none}a:focus-visible,summary:focus-visible{outline:1px dashed var(--accent);outline-offset:3px}hr{height:1px;margin:var(--space-section)0;border:0;background:repeating-linear-gradient(90deg,var(--rule) 0 8px,transparent 8px 12px)}article a{--link-underline:2px;background-image:linear-gradient(var(--marker-strong),var(--marker-strong)),linear-gradient(var(--accent),var(--accent));background-repeat:no-repeat;background-position:0 100%,0 100%;background-size:100% 0,100% var(--link-underline);box-decoration-break:clone;-webkit-box-decoration-break:clone;transition:background-size var(--motion-normal)steps(3,end)}article a:hover{background-size:100% 100%,100% var(--link-underline)}article a:visited{color:color-mix(in srgb,var(--accent) 60%,var(--ink))}article a:has(img),.media-figure>a{background:0 0}article strong{font-weight:700}article em{font-style:normal;text-emphasis:filled dot var(--accent);-webkit-text-emphasis:filled dot var(--accent);text-emphasis-position:over right;-webkit-text-emphasis-position:over right}article del{color:var(--ink-soft);text-decoration-line:line-through;text-decoration-color:var(--accent);text-decoration-thickness:2px;text-decoration-skip-ink:none}article mark{color:inherit;background:linear-gradient(transparent 45%,var(--marker-yellow) 45%)}article ruby rt{color:var(--ink-soft);font-family:var(--font-ui);font-size:var(--fs-2xs);letter-spacing:.05em}article kbd{display:inline-block;margin:0 .1em;padding:0 .35em;font-size:var(--fs-sm);line-height:1.4;vertical-align:.1em}ul:not(.pagination){list-style:none;padding-left:2ch}ul:not(.pagination)>li{position:relative}ul:not(.pagination)>li::before{content:"・";position:absolute;inset-inline-start:-2ch;color:var(--accent);font-weight:700}ol{padding-inline-start:2em}ol>li::marker{color:var(--accent);font-family:var(--font-ui)}article :where(ul,ol) :where(ul,ol){margin-block:.25rem}article li>p{margin-block:.25rem}article li+li{margin-top:.2rem}article li:has(>input[type=checkbox])::before{content:none}article input[type=checkbox]{margin:0 .45em 0 0;accent-color:var(--accent)}dl{margin-block:var(--space-text)}dt{color:var(--accent);font-weight:700}dd{margin:.25rem 0 .7rem 2ch}blockquote{position:relative;width:fit-content;max-width:100%;margin:var(--space-block)0;padding:.3rem 1.45rem .3rem 1.05rem;background-image:radial-gradient(var(--dot) .6px,transparent 1px);background-size:4px 4px}blockquote::before,blockquote::after{position:absolute;color:var(--accent);font-size:1.25rem;line-height:1}blockquote::before{content:"「";top:.5rem;left:-.2rem}blockquote::after{content:"」";right:-.2rem;bottom:.5rem}blockquote p{margin:.2rem 0}blockquote blockquote{margin:.25rem 0;padding:.15rem .65rem;background:0 0}blockquote blockquote::before,blockquote blockquote::after{color:var(--ink-soft);font-size:1rem}blockquote p:last-child::after,.callout p:last-child::after{content:"▼";display:inline-block;margin-left:.4rem;color:var(--accent);font-size:.75em;animation:page-wait .8s steps(2,start)infinite}@keyframes page-wait{0%,100%{opacity:1;transform:translateY(0)}50%{opacity:0;transform:translateY(2px)}}table{display:block;width:max-content;max-width:100%;margin-inline:auto;border:1px solid var(--rule);border-collapse:collapse;overflow-x:auto;overscroll-behavior-inline:contain;font-size:var(--fs-sm);box-shadow:var(--lift)var(--lift)0 var(--frame-shadow)}table th,table td{padding:.35rem .75rem;text-align:left}table th+th{border-left:1px solid color-mix(in srgb,var(--tag-fg) 25%,transparent)}table td+td{border-left:1px dashed var(--rule)}table tr+tr td{border-top:1px dashed var(--rule)}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.tag,.post-header .post-date,.log-page article>h2,.post-toc-label,.error-label,table th{color:var(--tag-fg);background:var(--tag-bg);font-family:var(--font-ui);font-weight:400;letter-spacing:.06em}.tag,.post-header .post-date,.log-page article>h2,.error-label{display:inline-block;padding:.05rem .45rem;font-size:var(--fs-xs);line-height:1.5;box-shadow:2px 2px 0 var(--tag-shadow)}.tag--outline,.draft-label{display:inline-block;padding:0 .35rem;border:1px solid var(--accent);color:var(--accent);background:0 0;box-shadow:none;font-family:var(--font-ui);font-size:var(--fs-2xs);line-height:1.6;letter-spacing:.08em;vertical-align:.15em}.keycap,article kbd,.pagination .page-link,.collapsible .bar::after{border:1px solid var(--key-edge);color:var(--key-legend);background:var(--key-face);box-shadow:inset 0 -3px 0 var(--key-side),0 2px 0 var(--key-edge);font-family:var(--font-ui);transition:transform 60ms steps(1,end),box-shadow 60ms steps(1,end),color var(--motion-fast)ease}.keycap--accent{--key-face:var(--accent);--key-side:var(--accent-strong);--key-legend:var(--on-accent)}:is(.keycap,.pagination a.page-link):not(.keycap--accent):hover{color:var(--accent)}:is(.keycap,.pagination a.page-link):active{box-shadow:inset 0 -1px 0 var(--key-side),0 0 0 var(--key-edge);transform:translateY(2px)}.marker,article strong,.site-description{background-image:linear-gradient(transparent 62%,var(--marker) 62%);box-decoration-break:clone;-webkit-box-decoration-break:clone}.page{min-height:100svh}.content{display:flex;flex-direction:column;width:100%;max-width:calc(var(--content-max-width) + 2 * var(--page-gutter));min-height:100svh;margin:0 auto;padding:0 var(--page-gutter);background:var(--paper);box-shadow:1px 0 0 var(--rule),-1px 0 0 var(--rule);overflow-wrap:break-word}.content>main{flex:1 0 auto;min-width:0;padding-bottom:2.5rem}article{min-width:0;hanging-punctuation:first last;line-height:var(--reading-leading)}article :where(p,li,dd,figcaption,blockquote){overflow-wrap:anywhere}.site-spine{position:sticky;top:0;z-index:40;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 1rem;padding:.75rem var(--page-gutter).6rem;color:var(--ink);background:var(--paper);border-bottom:1px solid var(--rule);transition:transform 160ms steps(4,end)}html.spine-hidden .site-spine{transform:translateY(-100%)}.spine-title{font-size:1.5rem;line-height:1.2;letter-spacing:.08em;text-shadow:2px 2px 0 color-mix(in srgb,var(--accent) 55%,transparent)}.spine-title:hover{color:var(--accent)}.spine-nav{display:flex;align-items:baseline;font-family:var(--font-ui);font-size:1rem;letter-spacing:.06em}.spine-nav .nav-sep{margin:0 .5rem;color:var(--rule)}.spine-nav a{padding:0 .15rem}.spine-nav a:hover{color:var(--accent)}.spine-nav a[aria-current=page]{background-image:linear-gradient(transparent 58%,var(--marker) 58%)}@media(min-width:1024px){.site-spine{position:fixed;top:0;bottom:0;left:0;width:var(--spine-width);flex-direction:column;flex-wrap:nowrap;justify-content:space-between;align-items:center;padding:1.5rem 0;background:0 0;border-bottom:0;border-right:1px solid var(--rule)}html.spine-hidden .site-spine{transform:translateX(-100%);border-right-color:transparent}.spine-title,.spine-nav{writing-mode:vertical-rl}.spine-title{font-size:3rem;letter-spacing:.15em;text-shadow:3px 3px 0 color-mix(in srgb,var(--accent) 55%,transparent)}.spine-nav .nav-sep{margin:.6rem 0}.spine-nav a{padding:.2rem 0}.spine-nav a[aria-current=page]{background-image:linear-gradient(90deg,transparent 42%,var(--marker) 42%)}}.site-footer{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem;padding:.9rem 0 calc(1.25rem + env(safe-area-inset-bottom,0px));background:repeating-linear-gradient(90deg,var(--rule) 0 8px,transparent 8px 12px)top/100% 1px no-repeat}.footer-social{display:flex;flex-wrap:wrap;gap:.65rem}.soc{display:inline-flex;color:var(--ink-soft);transition:color var(--motion-fast)ease,transform 60ms steps(1,end)}.soc svg{display:block;width:20px;height:20px;fill:currentColor}.soc:hover{color:var(--accent);transform:translateY(-2px)}.no-ai-logo{display:block;line-height:0}.no-ai-logo img{width:128px;height:auto;margin:0}h1,h2,h3,h4,h5,h6{position:relative;font-family:inherit;line-height:1.4;letter-spacing:.01em;text-wrap:balance;overflow-wrap:anywhere;scroll-margin-top:1.5rem}h1{font-size:1.25rem;font-weight:700}h2{font-size:1.125rem;font-weight:700}h3{font-size:1.0625rem;font-weight:600}h4{font-size:1rem;font-weight:600}h5{font-size:1rem;font-weight:600}h6{font-size:var(--fs-sm);font-weight:600;color:var(--ink-soft);letter-spacing:.04em}article>h1{width:fit-content;max-width:100%;padding:.1rem .65rem;color:var(--slab-fg);background:var(--slab-bg);box-shadow:var(--lift)var(--lift)0 var(--accent)}article>h2{width:fit-content;background-image:linear-gradient(transparent 60%,var(--marker-strong) 60%)}article>:is(h3,h4)::before{margin-right:.45em;color:var(--accent);font-size:.75em;font-weight:400;vertical-align:.1em}article>h3::before{content:"◆"}article>h4::before{content:"◇"}article :where(h3,h4,h5,h6):target{color:var(--accent)}article>h1:target{box-shadow:var(--lift)var(--lift)0 var(--accent-2)}.site-description{width:fit-content;margin:0;color:var(--ink-soft)}.post-header{display:grid;gap:.6rem;margin:0 calc(-1 * var(--page-gutter));padding:1.25rem var(--page-gutter).9rem;border-bottom:1px solid var(--rule)}.post-header .meta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:0}.post-header time{font:inherit;color:inherit}.post-header h1.title{margin:0;font-size:1.5rem;font-weight:700;line-height:1.35;text-shadow:-2px 0 0 color-mix(in srgb,var(--accent) 80%,transparent),2px 0 0 color-mix(in srgb,var(--accent-2) 70%,transparent)}.body{margin-top:1.5rem}article>:where(p,ul,ol){margin-block:var(--space-text)}article>p+p{margin-top:.92rem}article>:where(.callout,.highlight,.katex-display,.mermaid-scroll,table,.collapsible){margin-block:var(--space-block)}article>:where(h1,h2){margin:2rem 0 .6rem}article>h3{margin:var(--space-subsection)0 .5rem}article>:where(h4,h5,h6){margin:1.25rem 0 .4rem}article>:where(h1,h2,h3,h4,h5,h6)+*{margin-top:0}article>:first-child{margin-top:0!important}article>:last-child{margin-bottom:0}a[href^="#fn:"],a[href^="#fnref:"]{color:var(--accent);background-image:none}a[href^="#fn:"]{font-family:var(--font-ui);font-size:var(--fs-xs);vertical-align:super;line-height:0}a[href^="#fn:"]::before{content:"※"}.footnotes{margin-top:var(--space-section);color:color-mix(in srgb,var(--ink) 85%,var(--ink-soft));font-size:var(--fs-sm)}.footnotes hr{margin-bottom:1rem}.footnotes ol{list-style:none;counter-reset:footnote;padding-inline-start:2.6em}.footnotes li{position:relative;counter-increment:footnote}.footnotes li::before{content:"※" counter(footnote);position:absolute;inset-inline-start:-2.6em;color:var(--accent);font-family:var(--font-ui)}.footnotes li:target{background:var(--marker)}.post-nav{display:grid;grid-template-columns:minmax(0,1fr)minmax(0,1fr);gap:.75rem 1.5rem;margin-top:var(--space-section);padding-top:1rem;border-top:1px dashed var(--rule);font-size:var(--fs-sm)}.post-nav a{display:grid;gap:.15rem;min-width:0}.post-nav .post-nav-next{grid-column:2;text-align:right}.post-nav-label{color:var(--ink-soft);font-family:var(--font-ui);font-size:var(--fs-xs);letter-spacing:.08em}.post-nav-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color var(--motion-fast)ease}.post-nav a:hover .post-nav-title{color:var(--accent)}@media(max-width:480px){.post-nav{grid-template-columns:1fr}.post-nav .post-nav-next{grid-column:1}}img{display:block;max-width:100%;margin:0 auto;border:0}article>img,.media-figure img{box-shadow:0 0 0 4px var(--photo-mat),0 0 0 5px var(--photo-line),var(--lift)var(--lift)0 5px var(--photo-shadow)}.media-item,.responsive-embed,.media-embed{box-shadow:0 0 0 1px var(--ink)}.pixel-reveal-pending{opacity:0}.pixel-reveal-frame{position:relative}.pixel-reveal-canvas{position:absolute;z-index:1;display:block;image-rendering:pixelated;pointer-events:none}figure.media-figure{width:100%;margin:calc(var(--space-block) + .5rem)auto;text-align:center}article>:is( .media-figure--wide,.media-embed--wide,.media-figure--full,div:has(>iframe[src*="youtube.com/embed"]),div:has(>iframe[src*="youtube-nocookie.com/embed"]) ){position:relative;left:50%;max-width:calc(100vw - 1rem);transform:translateX(-50%)}article>:is( .media-figure--wide,.media-embed--wide,div:has(>iframe[src*="youtube.com/embed"]),div:has(>iframe[src*="youtube-nocookie.com/embed"]) ){width:min(calc(100% + 2 * var(--page-gutter)),100vw)}@media(max-width:720px){article>figure.media-figure--wide:has(img){left:auto;width:100%;transform:none}}article>.media-figure--full{width:min(74rem,calc(100vw - 1rem))}article>.media-figure img,article>.media-figure .media-item{width:auto;max-width:100%;height:auto}.media-item{display:block;max-width:100%;margin:0 auto;background:#000}.media-embed,.responsive-embed,.mermaid-scroll{width:100%;margin-block:var(--space-block)}.responsive-embed{position:relative;aspect-ratio:16/9}.responsive-embed iframe{position:absolute;inset:0;width:100%;height:100%}.mermaid-scroll{overflow-x:auto;text-align:center}.mermaid-scroll>.mermaid{min-width:600px}.masonry-gallery{display:flex;flex-wrap:wrap;justify-content:center;width:100%;margin-inline:auto;gap:1.25rem}.masonry-gallery-item{display:flex;justify-content:center;width:100%;margin-inline:auto}.media-figure .caption{margin:.9rem 0 0;color:var(--ink-soft);font-size:var(--fs-sm);line-height:1.4;text-align:center}.media-figure .caption::before{content:"▲ ";color:var(--accent);font-size:.75em}.media-figure .caption p{display:inline;margin:0}.media-figure .caption a{--link-underline:1px}.medium-zoom-overlay{z-index:2}.medium-zoom-image--opened{z-index:3}.dateDisplay{display:flex;align-items:center;justify-content:center}.digit{margin:0;padding:0;border:0;max-width:10%;max-height:10rem}.dplayer-full-in-icon{display:none!important}.twitter-tweet-rendered{display:block;margin-inline:auto}.katex-display{max-width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}article :where(iframe,video,audio,embed,object,svg){max-width:100%}article iframe{border:0}iframe.spotify{color-scheme:light;border-radius:12px}article>.pdf-embed{position:relative;left:50%;width:min(62rem,calc(100vw - 2rem));height:min(calc(min(62rem,100vw - 2rem) * 1.414),90vh);margin-block:var(--space-block);transform:translateX(-50%);border:2px solid var(--window-edge);box-shadow:var(--lift)var(--lift)0 var(--frame-shadow)}.pdf-embed iframe,.pdf-embed embed{display:block;width:100%;height:100%;border:0}.bg{color:#272822;background-color:#fafafa}.chroma{color:#272822;background-color:#fafafa}.chroma .err{color:#960050;background-color:#1e0010}.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:#e1e1e1}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .k{color:#00a8c8}.chroma .kc{color:#00a8c8}.chroma .kd{color:#00a8c8}.chroma .kn{color:#f92672}.chroma .kp{color:#00a8c8}.chroma .kr{color:#00a8c8}.chroma .kt{color:#00a8c8}.chroma .na{color:#75af00}.chroma .nc{color:#75af00}.chroma .no{color:#00a8c8}.chroma .nd{color:#75af00}.chroma .ne{color:#75af00}.chroma .nf{color:#75af00}.chroma .nx{color:#75af00}.chroma .nt{color:#f92672}.chroma .l{color:#ae81ff}.chroma .ld{color:#d88200}.chroma .s{color:#d88200}.chroma .sa{color:#d88200}.chroma .sb{color:#d88200}.chroma .sc{color:#d88200}.chroma .dl{color:#d88200}.chroma .sd{color:#d88200}.chroma .s2{color:#d88200}.chroma .se{color:#8045ff}.chroma .sh{color:#d88200}.chroma .si{color:#d88200}.chroma .sx{color:#d88200}.chroma .sr{color:#d88200}.chroma .s1{color:#d88200}.chroma .ss{color:#d88200}.chroma .m{color:#ae81ff}.chroma .mb{color:#ae81ff}.chroma .mf{color:#ae81ff}.chroma .mh{color:#ae81ff}.chroma .mi{color:#ae81ff}.chroma .il{color:#ae81ff}.chroma .mo{color:#ae81ff}.chroma .o{color:#f92672}.chroma .ow{color:#f92672}.chroma .c{color:#75715e}.chroma .ch{color:#75715e}.chroma .cm{color:#75715e}.chroma .c1{color:#75715e}.chroma .cs{color:#75715e}.chroma .cp{color:#75715e}.chroma .cpf{color:#75715e}.chroma .ge{font-style:italic}.chroma .gs{font-weight:700}@media(prefers-color-scheme:dark){.bg{color:#f8f8f2}.chroma{color:#f8f8f2}.chroma .err{color:#960050;background-color:#1e0010}.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:#3c3d38}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .k{color:#66d9ef}.chroma .kc{color:#66d9ef}.chroma .kd{color:#66d9ef}.chroma .kn{color:#f92672}.chroma .kp{color:#66d9ef}.chroma .kr{color:#66d9ef}.chroma .kt{color:#66d9ef}.chroma .na{color:#a6e22e}.chroma .nc{color:#a6e22e}.chroma .no{color:#66d9ef}.chroma .nd{color:#a6e22e}.chroma .ne{color:#a6e22e}.chroma .nf{color:#a6e22e}.chroma .nx{color:#a6e22e}.chroma .nt{color:#f92672}.chroma .l{color:#ae81ff}.chroma .ld{color:#e6db74}.chroma .s{color:#e6db74}.chroma .sa{color:#e6db74}.chroma .sb{color:#e6db74}.chroma .sc{color:#e6db74}.chroma .dl{color:#e6db74}.chroma .sd{color:#e6db74}.chroma .s2{color:#e6db74}.chroma .se{color:#ae81ff}.chroma .sh{color:#e6db74}.chroma .si{color:#e6db74}.chroma .sx{color:#e6db74}.chroma .sr{color:#e6db74}.chroma .s1{color:#e6db74}.chroma .ss{color:#e6db74}.chroma .m{color:#ae81ff}.chroma .mb{color:#ae81ff}.chroma .mf{color:#ae81ff}.chroma .mh{color:#ae81ff}.chroma .mi{color:#ae81ff}.chroma .il{color:#ae81ff}.chroma .mo{color:#ae81ff}.chroma .o{color:#f92672}.chroma .ow{color:#f92672}.chroma .c{color:#75715e}.chroma .ch{color:#75715e}.chroma .cm{color:#75715e}.chroma .c1{color:#75715e}.chroma .cs{color:#75715e}.chroma .cp{color:#75715e}.chroma .cpf{color:#75715e}.chroma .gd{color:#f92672}.chroma .ge{font-style:italic}.chroma .gi{color:#a6e22e}.chroma .gs{font-weight:700}.chroma .gu{color:#75715e}}code{font-family:var(--font-ui)}article :not(pre)>code{margin:0 .15em;padding:0 .3em;border:1px solid var(--rule);background:var(--paper-2);overflow-wrap:anywhere}article a code{border:0;background:0 0;margin:0;padding:0}pre{margin:0;overflow-x:auto;overscroll-behavior-inline:contain}pre code{font-size:100%}.highlight{--titlebar:1.6rem;position:relative;padding-top:var(--titlebar);border:2px solid var(--window-edge);background:var(--window-edge);box-shadow:var(--lift)var(--lift)0 var(--frame-shadow);-webkit-overflow-scrolling:touch}.highlight::after{content:"─ □ ╳";position:absolute;top:0;right:.6rem;color:var(--slab-fg);font-family:var(--font-ui);font-size:var(--fs-xs);line-height:var(--titlebar);letter-spacing:.2em}.highlight>.chroma,.chroma{margin:0;padding:.7em .75em;border:0;border-radius:0;background-color:var(--code-block-bg)}.highlight ::selection{background:var(--marker-strong);color:inherit}.highlight pre code[data-lang]::before{content:attr(data-lang);position:absolute;top:0;left:.6rem;color:var(--slab-fg);font-family:var(--font-ui);font-size:var(--fs-xs);line-height:var(--titlebar);letter-spacing:.1em;text-transform:uppercase}.highlight pre code:is([data-lang=fallback],[data-lang=""])::before{content:none}.highlight pre code:is([data-lang=cpp],[data-lang="c++"],[data-lang=cc])::before{content:"C++"}.highlight pre code:is([data-lang="c#"],[data-lang="C#"],[data-lang=csharp],[data-lang=cs])::before{content:"C#"}.highlight pre code:is([data-lang=javascript],[data-lang=javaScript],[data-lang=js])::before{content:"JS"}.highlight pre code:is([data-lang=typescript],[data-lang=ts])::before{content:"TS"}.highlight pre code:is([data-lang=python],[data-lang=python3],[data-lang=py])::before{content:"PY"}.highlight pre code:is([data-lang=shell],[data-lang=bash],[data-lang=sh],[data-lang=zsh],[data-lang=console])::before{content:"SHELL"}.highlight pre code:is([data-lang=yml],[data-lang=yaml])::before{content:"YAML"}.highlight pre code:is([data-lang=markdown],[data-lang=md])::before{content:"MARKDOWN"}.highlight pre code:is([data-lang=tex],[data-lang=TeX],[data-lang=TEX],[data-lang=latex],[data-lang=LaTeX])::before{content:"LATEX"}.highlight pre code[data-lang=dockerfile]::before{content:"DOCKER"}.post-toc{color:var(--mutedcolor);font-family:var(--font-ui);font-size:var(--fs-xs);line-height:1.35}.post-toc[hidden]{display:none!important}.post-toc--desktop{position:fixed;top:0;left:0;z-index:20;display:block;width:min(11rem,calc(100vw - 1rem));min-width:min(9rem,calc(100vw - 1rem));min-height:min(6rem,calc(100vh - 1rem));max-width:calc(100vw - 1rem);max-height:calc(100vh - 1rem);overflow:hidden}.post-toc-card{border:2px solid var(--window-edge);color:var(--textcolor);background:var(--pagebg);box-shadow:var(--lift)var(--lift)0 var(--frame-shadow)}.post-toc-label{letter-spacing:.14em}.post-toc-card nav{max-height:min(60vh,26rem);overflow-x:hidden;overflow-y:auto;padding-block:.42rem;scrollbar-width:none}.post-toc-header{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.5rem;min-height:2rem;padding:.42rem .55rem;background:var(--tag-bg)}ul.post-toc-list{margin:0;padding:0;list-style:none}ul.post-toc-list>li{--toc-indent:0.42rem;width:100%;margin:0}ul.post-toc-list>li::before{display:none}.post-toc-level-1>a{font-weight:700}.post-toc a{display:flex;align-items:baseline;width:100%;padding:.28rem .42rem .28rem var(--toc-indent);border-block:1px solid transparent;color:inherit;text-decoration:none;overflow-wrap:anywhere;transition:color var(--motion-fast)steps(2,end),background-color var(--motion-fast)steps(2,end),border-color var(--motion-fast)steps(2,end)}.post-toc-branch{flex:none;margin-right:.35em;color:var(--rule);font-family:var(--font-ui);white-space:pre}.post-toc a:is(:hover,.is-active) .post-toc-branch{color:var(--accent)}.post-toc-text{min-width:0}.post-toc a:is(:hover,.is-active){color:var(--textcolor);border-color:color-mix(in srgb,var(--maincolor) 24%,var(--linecolor))}.post-toc a:hover{background:color-mix(in srgb,var(--maincolor) 9%,var(--pagebg))}.post-toc a.is-active{background:color-mix(in srgb,var(--maincolor) 12%,var(--pagebg));font-weight:700}.post-toc--desktop .post-toc-card{position:relative;display:flex;flex-direction:column;width:100%;max-height:inherit;min-height:0}.post-toc--desktop .post-toc-header{flex:none;user-select:none}.post-toc--desktop .post-toc-card nav{flex:auto;min-height:0}.post-toc--desktop.is-user-sized .post-toc-card{height:100%}.post-toc--desktop.is-user-sized .post-toc-card nav{max-height:none;padding-bottom:.9rem}.post-toc-resize-handle{position:absolute;right:0;bottom:0;z-index:1;width:1.1rem;height:1.1rem;touch-action:none;cursor:nwse-resize!important;background:linear-gradient( 135deg,transparent 0 46%,var(--linecolor) 46% 52%,transparent 52% 64%,var(--maincolor) 64% 70%,transparent 70% )}html.has-context-toc{-webkit-touch-callout:none}.hero{margin-inline:calc((100% - 100vw)/2);background-color:var(--paper);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:var(--grid-size)var(--grid-size);background-attachment:fixed;padding:3.5rem 0;border-bottom:1px solid var(--rule)}.hero-window{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:1.5rem;width:calc(100% - 2 * var(--page-gutter));max-width:var(--content-max-width);margin:0 auto;padding:1.25rem 2.75rem 1.25rem 1.25rem;border:2px solid var(--window-edge);background:color-mix(in srgb,var(--paper) 88%,transparent);box-shadow:inset 0 0 0 2px var(--paper),inset 0 0 0 4px var(--window-edge),var(--lift)var(--lift)0 var(--frame-shadow)}.hero-face{width:112px;height:112px;margin:0;border:2px solid var(--window-edge);image-rendering:pixelated}.hero-window .site-description{width:auto;margin:0;color:var(--ink);background:0 0;font-size:1.25rem;line-height:1.6}.hero-window::after{content:"▼";position:absolute;right:1.1rem;bottom:.9rem;color:var(--accent);font-size:.75rem;animation:page-wait .8s steps(2,start)infinite}@media(max-width:560px){.hero-window{gap:1rem;padding:.9rem 2.25rem .9rem .9rem}.hero-face{width:64px;height:64px}.hero-window .site-description{font-size:1rem}}.list{margin-top:3rem}.year-group+.year-group{margin-top:2.25rem}.year-heading{display:flex;align-items:center;gap:.9rem;margin:0 0 .6rem}.year-heading .year-label{padding:.05rem .55rem .2rem;font-size:var(--fs-sm);font-weight:400;line-height:1.4;letter-spacing:.08em}.post-list-entry{position:relative;display:grid;grid-template-columns:minmax(0,max-content)minmax(0,1fr)auto;align-items:baseline;gap:.6rem;padding:.3rem .35rem;transition:background-color var(--motion-fast)steps(2,end)}.list-item{color:var(--ink);line-height:1.6}.list-item::after{content:"";position:absolute;inset:0}.list-item:visited{color:color-mix(in srgb,var(--ink) 70%,var(--paper))}.entry-title .draft-label{margin-left:.5rem}.entry-leader{align-self:end;height:.55em;margin-bottom:.45em;background:radial-gradient(circle,var(--rule) 1px,transparent 1.5px)0/6px 6px repeat-x}.entry-date{color:var(--ink-soft);font-family:var(--font-ui);font-size:var(--fs-sm);white-space:nowrap;transition:color var(--motion-fast)ease}.post-list-entry:hover{background-color:var(--marker)}.post-list-entry:hover .entry-date{color:var(--accent)}@media(max-width:480px){.post-list-entry{grid-template-columns:minmax(0,1fr)auto;gap:.4rem;padding-inline:0}.entry-leader{display:none}.entry-date{font-size:var(--fs-xs)}}.pagination{display:grid;grid-template-columns:minmax(0,1fr)auto minmax(0,1fr);align-items:center;gap:.75rem;margin:2rem 0 .25rem}.pagination .page-item{display:flex;min-width:0}.pagination .page-prev{justify-content:flex-start}.pagination .page-next{justify-content:flex-end}.pagination .page-link{display:inline-flex;align-items:center;gap:.5rem;padding:.35rem .7rem;font-size:var(--fs-xs);letter-spacing:.08em}.pagination .page-link.is-disabled{color:var(--ink-soft);border-color:var(--rule);box-shadow:0 2px 0 var(--rule);opacity:.6}.pagination .page-link-arrow{color:var(--accent)}.pagination .page-status{margin:0;color:var(--ink-soft);font-family:var(--font-ui);font-size:var(--fs-xs);letter-spacing:.08em;white-space:nowrap}.pagination .page-status strong{color:var(--accent);font-weight:400}@media(max-width:480px){.pagination{grid-template-columns:1fr 1fr}.pagination .page-status{grid-column:1/-1;grid-row:1;justify-self:center}.pagination .page-item{grid-row:2}}.collapsible{margin:var(--space-block)0;border:2px solid var(--window-edge);box-shadow:var(--lift)var(--lift)0 var(--frame-shadow)}.collapsible .bar{position:relative;display:block;padding:.55rem 3rem .55rem .8rem;background:var(--paper-2);user-select:none;transition:color var(--motion-fast)ease}.collapsible .bar::-webkit-details-marker{display:none}.collapsible .bar::marker{content:""}.collapsible .bar::after{content:"+";position:absolute;top:50%;right:.75rem;width:1.4rem;height:1.4rem;margin-top:-.8rem;font-size:1rem;line-height:1.25rem;text-align:center}.collapsible[open]>.bar{border-bottom:1px dashed var(--rule)}.collapsible[open]>.bar::after{content:"−";box-shadow:inset 0 -1px 0 var(--key-side),0 0 0 var(--key-edge);transform:translateY(2px)}.collapsible .bar:hover{color:var(--accent)}.collapsible .collapsible-content{padding:.75rem .9rem}.collapsible .collapsible-content>:first-child{margin-top:0}.collapsible .collapsible-content>:last-child{margin-bottom:0}.callout{--callout-color:var(--accent);position:relative;margin-top:calc(var(--space-block) + 1.4rem)!important;padding:.8rem 1rem;border:2px solid var(--window-edge);background:var(--paper);box-shadow:var(--lift)var(--lift)0 var(--frame-shadow)}.callout-note,.callout-tip{--callout-color:var(--accent-2)}.callout::before,.callout-label{position:absolute;left:-2px;bottom:100%;padding:.1rem .7rem .05rem;color:var(--slab-fg);background:var(--window-edge);box-shadow:inset 0 3px 0 var(--callout-color);font-family:var(--font-ui);font-size:var(--fs-xs);letter-spacing:.1em;line-height:1.5;text-transform:uppercase}.callout:not(:has(>.callout-label))::before{content:"MEMO"}.callout>:first-child,.callout>div>:first-child{margin-top:0}.callout>:last-child,.callout>div>:last-child{margin-bottom:0}.moe-mask{display:inline-block;padding:0 4px;color:transparent;background-color:var(--mask-bg);transition:color .3s ease,background-color .3s ease}.moe-mask:hover{color:inherit;background-color:transparent}article>.moe-mask{display:table;margin-block:var(--space-text)}.log-page article>h2{display:table;margin:var(--space-section)0 .75rem;font-size:var(--fs-xs)}.log-page article>h2::before{content:none}.log-page article>h2:first-child{margin-top:0}.error-page{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6rem;text-align:center}.error-page .error-label{margin:0}.error-page .error-code{margin:.25rem 0 0;color:var(--accent);font-size:clamp(3rem,18vw,7rem);line-height:1;text-shadow:-3px 0 0 color-mix(in srgb,var(--accent-2) 60%,transparent)}.error-page p{margin:0}.error-page .error-return{margin:.5rem 0 1rem;padding:.3rem .8rem;font-size:var(--fs-xs);letter-spacing:.08em}.error-page img{width:min(18rem,70vw)}.aplayer{max-width:100%;margin:var(--space-block)auto;border:2px solid var(--window-edge);box-shadow:var(--lift)var(--lift)0 var(--frame-shadow);border-radius:0;color:var(--textcolor);background:var(--surfacecolor);font-family:inherit}.aplayer .aplayer-body,.aplayer .aplayer-list{background:var(--surfacecolor)}.aplayer .aplayer-pic{border-right:1px solid var(--linecolor);filter:saturate(.82)contrast(.96)}.aplayer .aplayer-pic .aplayer-button{border-radius:0;background:rgba(32,33,36,.52);box-shadow:none}.aplayer .aplayer-info .aplayer-music .aplayer-title{color:var(--textcolor);font-family:inherit;font-size:var(--fs-sm)}.aplayer .aplayer-info .aplayer-music .aplayer-author,.aplayer .aplayer-info .aplayer-controller .aplayer-time,.aplayer .aplayer-list ol li .aplayer-list-index,.aplayer .aplayer-list ol li .aplayer-list-author,.aplayer .aplayer-lrc p{color:var(--mutedcolor)}.aplayer .aplayer-info .aplayer-controller .aplayer-bar-wrap .aplayer-bar,.aplayer .aplayer-info .aplayer-controller .aplayer-volume-wrap .aplayer-volume-bar-wrap .aplayer-volume-bar{border-radius:0;background:var(--linecolor)}.aplayer .aplayer-info .aplayer-controller .aplayer-bar-wrap .aplayer-bar .aplayer-loaded{background:color-mix(in srgb,var(--mutedcolor) 58%,transparent)}.aplayer .aplayer-info .aplayer-controller .aplayer-bar-wrap .aplayer-bar .aplayer-played,.aplayer .aplayer-info .aplayer-controller .aplayer-volume-wrap .aplayer-volume-bar-wrap .aplayer-volume-bar .aplayer-volume,.aplayer .aplayer-list ol li .aplayer-list-cur{background:var(--maincolor)!important}.aplayer .aplayer-info .aplayer-controller .aplayer-bar-wrap .aplayer-bar .aplayer-played .aplayer-thumb{border-radius:0;background:var(--maincolor)}.aplayer .aplayer-info .aplayer-controller .aplayer-time .aplayer-icon path,.aplayer .aplayer-miniswitcher .aplayer-icon path{fill:var(--mutedcolor)}.aplayer .aplayer-info .aplayer-controller .aplayer-time .aplayer-icon:hover path,.aplayer .aplayer-miniswitcher .aplayer-icon:hover path{fill:var(--maincolor)}.aplayer.aplayer-withlist .aplayer-info,.aplayer .aplayer-list ol li{border-color:var(--linecolor)}.aplayer .aplayer-list ol li:hover,.aplayer .aplayer-list ol li.aplayer-list-light{background:color-mix(in srgb,var(--maincolor) 8%,var(--surfacecolor))}.aplayer .aplayer-lrc::before{background:linear-gradient(to bottom,var(--surfacecolor),transparent)}.aplayer .aplayer-lrc::after{background:linear-gradient(to bottom,transparent,var(--surfacecolor))}.aplayer.aplayer-fixed{border:1px solid var(--key-edge);border-width:1px 1px 0 0;box-shadow:none;bottom:0!important;z-index:99999!important;max-width:400px}.aplayer.aplayer-fixed .aplayer-body{bottom:0!important;padding-bottom:env(safe-area-inset-bottom,0);border-top:1px solid var(--linecolor);background:var(--surfacecolor)}@media(min-width:1024px){.aplayer.aplayer-fixed,.aplayer.aplayer-fixed .aplayer-body,.aplayer.aplayer-fixed .aplayer-lrc{left:var(--spine-width)!important;transition:left 160ms steps(4,end)}html.spine-hidden .aplayer.aplayer-fixed,html.spine-hidden .aplayer.aplayer-fixed .aplayer-body,html.spine-hidden .aplayer.aplayer-fixed .aplayer-lrc{left:0!important}}.aplayer.aplayer-fixed .aplayer-info{border-top-color:var(--linecolor)}.aplayer .aplayer-miniswitcher{border-radius:0;border-left:1px solid var(--linecolor);background:var(--surfacecolor)}.crt-overlay{position:fixed;inset:0;z-index:9998;background:var(--crt-overlay);background-size:100% 4px,8px 100%;box-shadow:var(--crt-shadow);opacity:var(--crt-opacity);pointer-events:none}.decrypt-cursor{display:inline-block;margin-left:4px;color:var(--accent);font-size:.85em;animation:page-wait .3s steps(2,start)infinite}@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.post-list-entry:hover .entry-arrow,:is(.keycap,.pagination a.page-link):active{transform:none!important}.crt-overlay{opacity:.12}}