:root{color-scheme:dark;--bg: #0c0d10;--home-bg: #0a0b11;--fg: #fefefe;--link: #93ffd7;--link-hover-bg: #153329;--link-hover: #c7ffe9;--text-font: "gohu";--text-size: 14px;--cjk-size: 13px;--cjk-link-size: 14px;--text-cell: 8px;--home-size: 14px;--fit-scale: 1;--ansi-black: #15161e;--ansi-red: #f7768e;--ansi-green: #9ece6a;--ansi-yellow: #e0af68;--ansi-blue: #7aa2f7;--ansi-magenta: #bb9af7;--ansi-cyan: #7dcfff;--ansi-white: #a9b1d6;--ansi-bright-black: #414868;--ansi-bright-red: #ff899d;--ansi-bright-green: #b4f9a8;--ansi-bright-yellow: #e0c989;--ansi-bright-blue: #8db0ff;--ansi-bright-magenta: #c7a9ff;--ansi-bright-cyan: #a4daff;--ansi-bright-white: #c0caf5}html{background:var(--bg);-webkit-text-size-adjust:100%;text-size-adjust:100%}body{box-sizing:border-box;margin:0 auto;padding:1em 0;min-height:100vh;background:var(--bg);color:var(--fg);font-family:var(--text-font);font-synthesis:none;text-rendering:optimizeSpeed;-webkit-font-smoothing:none;-moz-osx-font-smoothing:auto}.screen{position:relative;z-index:1;text-align:center;max-width:100vw;overflow-x:auto;-webkit-overflow-scrolling:touch}a{color:var(--link);text-decoration:none}a:hover,a:focus-visible{background:var(--link-hover-bg);color:var(--link-hover);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;outline:0}.textmode-pre{margin:0;white-space:pre;overflow-wrap:normal;color:var(--fg);font-family:var(--text-font);font-size:var(--text-size);line-height:1}.textmode-wrap{display:inline-block;text-align:left;max-width:100vw;overflow-x:auto}.tm-strong{text-shadow:1px 0 0 currentColor}.ascii-particles{position:fixed;inset:0;z-index:2;overflow:hidden;pointer-events:none;contain:layout paint style}.ascii-particles span{position:absolute;top:0;left:0;color:var(--particle-home);font-family:var(--text-font);font-size:calc(var(--text-size) + 1px);line-height:1;opacity:0;mix-blend-mode:screen;text-shadow:0 0 4px var(--particle-home-glow);backface-visibility:hidden;will-change:opacity,transform}body:has(.phile-wrap) .ascii-particles span,body:has(.volume-wrap) .ascii-particles span{color:var(--particle-page);text-shadow:0 0 2px var(--particle-page-glow)}body:has(.volume-wrap) .ascii-particles span{color:var(--particle-volume);text-shadow:0 0 3px var(--particle-volume-glow)}body:has(.home-shell),html:has(.home-shell){background-color:var(--home-bg)}.screen:has(.home-shell){display:flex;align-items:center;justify-content:center;min-height:calc(100vh - 2em);text-align:center}.home-shell{display:inline-block;text-align:left}.home-pre{font-family:var(--text-font);font-size:var(--home-size);padding-left:20px}.ascii-hero{position:relative;display:inline-block;margin-bottom:var(--text-size)}.ascii-hero:before,.ascii-hero:after{position:absolute;pointer-events:none;content:"";opacity:0}.ascii-hero:before{top:var(--ascii-scan-top, 0);left:var(--ascii-scan-left, 0);width:var(--ascii-scan-width, 0);height:var(--ascii-scan-height, 0);background:currentColor;mix-blend-mode:screen}.ascii-hero:after{top:var(--ascii-bloom-y, 50%);left:var(--ascii-bloom-x, 50%);width:calc(var(--text-cell) * 7);height:calc(var(--text-size) * 2);background:currentColor;filter:blur(8px);transform:translate(-50%,-50%)}.ascii-hero.is-glitching:before{opacity:var(--ascii-scan-opacity, .6)}.ascii-hero.is-glitching:after{opacity:var(--ascii-bloom-opacity, .03)}.ascii-pre{position:relative;z-index:1;padding-left:0;color:var(--fg)}.ascii-glitch{position:absolute;inset:0;z-index:2;color:var(--link);opacity:0;text-shadow:var(--ascii-glitch-shadow-a, 2px) 0 var(--fg),var(--ascii-glitch-shadow-b, -2px) 0 var(--link-hover);transform:translate(var(--ascii-glitch-shift-x, 0),var(--ascii-glitch-shift-y, 0));clip-path:inset(var(--ascii-glitch-clip-top, 0) var(--ascii-glitch-clip-right, 0) var(--ascii-glitch-clip-bottom, 0) var(--ascii-glitch-clip-left, 0))}.ascii-hero.is-glitching .ascii-glitch{opacity:var(--ascii-glitch-opacity, .72)}.life-art{color:var(--fg);position:relative;overflow:visible}.life-grid{--life-grid-size: 13px;display:grid;position:absolute;grid-template-columns:repeat(var(--life-grid-width),var(--life-grid-size));grid-template-rows:repeat(var(--life-grid-height),var(--life-grid-size));width:calc(var(--life-grid-width) * var(--life-grid-size));height:calc(var(--life-grid-height) * var(--life-grid-size));pointer-events:none;z-index:3}.life-pixel{display:block;width:var(--life-grid-size);height:var(--life-grid-size)}.life-pixel.is-alive{background:currentColor;box-shadow:0 0 0 .5px currentColor}.ansi{--cjk-ink: currentColor}.ansi-black{color:var(--ansi-black, #000000)}.ansi-red{color:var(--ansi-red, #aa0000)}.ansi-green{color:var(--ansi-green, #00aa00)}.ansi-yellow{color:var(--ansi-yellow, #aa5500)}.ansi-blue{color:var(--ansi-blue, #0000aa)}.ansi-magenta{color:var(--ansi-magenta, #aa00aa)}.ansi-cyan{color:var(--ansi-cyan, #00aaaa)}.ansi-white{color:var(--ansi-white, #aaaaaa)}.ansi-bright-black{color:var(--ansi-bright-black, #555555)}.ansi-bright-red{color:var(--ansi-bright-red, #ff5555)}.ansi-bright-green{color:var(--ansi-bright-green, #55ff55)}.ansi-bright-yellow{color:var(--ansi-bright-yellow, #ffff55)}.ansi-bright-blue{color:var(--ansi-bright-blue, #5555ff)}.ansi-bright-magenta{color:var(--ansi-bright-magenta, #ff55ff)}.ansi-bright-cyan{color:var(--ansi-bright-cyan, #55ffff)}.ansi-bright-white{color:var(--ansi-bright-white, #ffffff)}.phile-wrap{position:relative;width:calc(var(--text-cell) * 85);overflow-x:hidden}.textmode-nav{margin-bottom:var(--text-size)}.phile-nav-row{display:flex;align-items:baseline;gap:calc(var(--text-cell) * 2);flex-wrap:wrap;margin-bottom:var(--text-size)}.phile-nav-row .phile-nav{margin-bottom:0;flex:1 1 auto}.phile-lang-switcher{margin:0 0 0 auto;flex:0 0 auto}.lang-sep{color:var(--fg);opacity:.45}.lang-current{color:var(--fg);opacity:.55}.crumb-sep{color:var(--fg);opacity:.45}.crumb-current{color:var(--fg)}.volume-pre-mobile{display:none}.volume-wrap,.phile-wrap{margin-top:var(--text-size)}.phile-header{position:relative;z-index:2;width:calc(var(--text-cell) * 85);height:calc(var(--text-size) * max(18,17 + var(--phile-meta-lines)))}.phile-header-side{position:absolute;top:0;left:calc(var(--text-cell) * 60)}.phile-header-meta{position:absolute;top:calc(var(--text-size) * 16);left:0;padding-left:calc(var(--text-cell) * 4)}.phile-body-pre,.phile-footer-pre{position:relative;z-index:2;padding-left:calc(var(--text-cell) * 4)}.phile-redacted-pre{color:var(--fg)}.phile-media{position:relative;z-index:2;padding-left:calc(var(--text-cell) * 4);margin:calc(var(--text-size) * 3) 0}.phile-code{margin:calc(var(--text-size) * 3) 0;padding:calc(var(--text-size) * 1) 0;background-color:#ffffff08;overflow-x:auto;max-width:100%;background-image:linear-gradient(to left,var(--bg),transparent),radial-gradient(ellipse at right,rgba(255,255,255,.22),transparent 70%);background-repeat:no-repeat,no-repeat;background-position:right center,right center;background-size:calc(var(--text-cell) * 4) 100%,calc(var(--text-cell) * 3) 100%;background-attachment:local,scroll}.phile-body-pre.tm-strong{margin:calc(var(--text-size) * 3) 0}.phile-image{margin:calc(var(--text-size) * 1) 0;max-width:calc(var(--text-cell) * 80)}.phile-image img{display:block;max-width:100%;height:auto;image-rendering:auto}.phile-image-trigger{display:block;max-width:100%;margin:0;padding:0;border:0;background:transparent;color:inherit;cursor:zoom-in;font:inherit}.phile-image-trigger:hover,.phile-image-trigger:focus-visible{background:transparent;outline:0}.phile-image figcaption{margin-top:var(--text-size);color:var(--fg);font-family:var(--text-font);font-size:var(--text-size);line-height:1}.phile-mermaid{margin:calc(var(--text-size) * 3) 0;max-width:calc(var(--text-cell) * 90);overflow-x:auto}.phile-mermaid pre.mermaid{margin:0;padding:0;border:0;background:transparent;font-family:monospace;line-height:normal}.phile-mermaid pre.mermaid:not([data-processed]){visibility:hidden}.phile-mermaid svg{max-width:100%!important;height:auto}.phile-mermaid svg .node rect,.phile-mermaid svg .node polygon,.phile-mermaid svg .cluster rect,.phile-mermaid svg rect.actor,.phile-mermaid svg .actor,.phile-mermaid svg .note,.phile-mermaid svg .labelBox,.phile-mermaid svg .label-container{rx:0;ry:0}body.image-lightbox-open{overflow:hidden;touch-action:none}body.image-lightbox-open .screen{filter:blur(5px) saturate(.75);transition:filter .12s ease-out}.image-lightbox{width:100vw;max-width:none;height:100vh;max-height:none;margin:0;padding:0;border:0;background:transparent;color:var(--fg);cursor:zoom-out;overflow:hidden;overscroll-behavior:contain;touch-action:none}.image-lightbox::backdrop{background:#00000094;backdrop-filter:blur(4px)}.image-lightbox-frame{display:grid;place-items:center;gap:var(--text-size);width:100%;height:100%;margin:0;padding:calc(var(--text-size) * 3);box-sizing:border-box;touch-action:none}.image-lightbox-image{display:block;max-width:min(92vw,calc(var(--text-cell) * 140));max-height:86vh;cursor:grab;object-fit:contain;touch-action:none;transform-origin:center center;user-select:none;will-change:transform}.image-lightbox-image-dragging{cursor:grabbing}.image-lightbox-caption{max-width:min(92vw,calc(var(--text-cell) * 120));color:var(--fg);font-family:var(--text-font);font-size:var(--text-size);line-height:1;text-align:center}.wh-trigger-line{position:fixed;left:0;right:0;bottom:calc(var(--text-size) * .75);z-index:3;margin:0;padding:0;text-align:center;pointer-events:none}.wh-trigger{margin:0;padding:0;border:0;pointer-events:auto;background:transparent;color:var(--fg);font-family:var(--text-font);font-size:var(--text-size);line-height:1;opacity:.18;cursor:pointer;transition:opacity .16s ease-out,color .16s ease-out}.wh-trigger:hover,.wh-trigger:focus-visible{opacity:.85;color:var(--ansi-red);outline:0;text-shadow:0 0 6px var(--ansi-red)}body.wh-terminal-open{overflow:hidden}body.wh-terminal-open .screen{filter:blur(4px) saturate(.7);transition:filter .12s ease-out}.wh-terminal{width:100vw;max-width:none;height:100vh;max-height:none;margin:0;padding:0;border:0;background:transparent;color:var(--ansi-green)}.wh-terminal::backdrop{background:#000000b8;backdrop-filter:blur(3px)}.wh-terminal-frame{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:min(92vw,calc(var(--text-cell) * 78));max-height:80vh;display:flex;flex-direction:column;padding:0;background:#03060a;border:1px solid var(--ansi-green);box-shadow:0 0 0 1px #9ece6a40,0 0 28px #9ece6a2e,inset 0 0 60px #9ece6a0f;overflow:hidden}.wh-terminal-frame:after{content:"";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(to bottom,#0000 0 2px,#00000047 3px);mix-blend-mode:multiply}.wh-terminal-bar{display:flex;align-items:center;gap:calc(var(--text-cell) * 1.5);padding:calc(var(--text-size) * .6) var(--text-size);background:#9ece6a1a;border-bottom:1px solid rgba(158,206,106,.4);font-family:var(--text-font);font-size:var(--text-size);color:var(--ansi-bright-green);text-shadow:0 0 6px rgba(158,206,106,.6)}.wh-terminal-led{width:var(--text-cell);height:var(--text-cell);border-radius:50%;background:var(--ansi-red);box-shadow:0 0 8px var(--ansi-red);animation:wh-led-blink 1.4s steps(1,end) infinite}@keyframes wh-led-blink{50%{opacity:.25}}.wh-terminal-log{flex:1 1 auto;overflow-y:auto;padding:var(--text-size);font-family:var(--text-font);font-size:var(--text-size);line-height:1.45;color:var(--ansi-green);text-shadow:0 0 5px rgba(158,206,106,.45)}.wh-terminal-line{white-space:pre-wrap;overflow-wrap:anywhere}.wh-terminal-question{color:var(--ansi-bright-green)}.wh-terminal-echo{color:var(--ansi-white)}.wh-terminal-ok{color:var(--ansi-bright-green);text-shadow:0 0 8px rgba(180,249,168,.7)}.wh-terminal-deny{color:var(--ansi-red);text-shadow:0 0 8px rgba(247,118,142,.7)}.wh-terminal-form{display:flex;align-items:center;gap:var(--text-cell);padding:calc(var(--text-size) * .6) var(--text-size) var(--text-size);border-top:1px solid rgba(158,206,106,.25)}.wh-terminal-prompt{flex:0 0 auto;font-family:var(--text-font);font-size:var(--text-size);color:var(--ansi-bright-green)}.wh-terminal-input{flex:0 0 auto;min-width:1ch;max-width:100%;margin:0;padding:0;border:0;background:transparent;color:var(--ansi-green);font-family:var(--text-font);font-size:var(--text-size);caret-color:transparent;outline:0;text-shadow:0 0 5px rgba(158,206,106,.45)}.wh-terminal-input:disabled{opacity:.5}.wh-terminal-cursor{flex:0 0 auto;margin-left:calc(var(--text-cell) * -1);color:var(--ansi-bright-green);text-shadow:0 0 6px rgba(180,249,168,.7);animation:wh-cursor-blink 1s steps(1,end) infinite}.wh-terminal-typing .wh-terminal-cursor{display:none}@keyframes wh-cursor-blink{50%{opacity:0}}.wh-terminal-line-typing:after{content:"█";color:var(--ansi-bright-green);animation:wh-cursor-blink 1s steps(1,end) infinite}.wh-terminal-denied .wh-terminal-frame{animation:wh-terminal-shake .36s linear 1;border-color:var(--ansi-red)}@keyframes wh-terminal-shake{0%,to{transform:translate(-50%,-50%)}25%{transform:translate(calc(-50% - 4px),-50%)}75%{transform:translate(calc(-50% + 4px),-50%)}}@media(prefers-reduced-motion:reduce){.wh-terminal-led,.wh-terminal-denied .wh-terminal-frame{animation:none}}.wh-gallery-wrap{display:block;width:100%;max-width:calc(var(--text-cell) * 110);margin:0 auto;padding:0 var(--text-size);text-align:left}.wh-gallery-nav{margin-bottom:calc(var(--text-size) * 2)}.wh-gallery-title{color:var(--ansi-red);margin-bottom:var(--text-size)}.wh-gallery-intro,.wh-gallery-empty{font-family:var(--text-font);font-size:var(--text-size);line-height:1.4;color:var(--fg);margin:0 0 calc(var(--text-size) * 3)}.wh-gallery-empty{color:var(--ansi-yellow)}.wh-gallery-section{margin-bottom:calc(var(--text-size) * 4)}.wh-gallery-heading{margin-bottom:calc(var(--text-size) * 1.5);color:var(--ansi-green)}.wh-gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(calc(var(--text-cell) * 30),1fr));gap:calc(var(--text-size) * 2)}.wh-gallery-item{margin:0}.wh-gallery-trigger{display:block;width:100%;margin:0;padding:0;border:1px solid rgba(254,254,254,.18);background:#ffffff05;color:inherit;cursor:zoom-in;transition:border-color .14s ease-out,box-shadow .14s ease-out}.wh-gallery-trigger:hover,.wh-gallery-trigger:focus-visible{outline:0;border-color:var(--ansi-red);box-shadow:0 0 14px #f7768e4d}.wh-gallery-trigger img{display:block;width:100%;height:auto;aspect-ratio:1 / 1;object-fit:cover}.wh-gallery-caption{margin-top:calc(var(--text-size) * .6);font-family:var(--text-font);font-size:var(--text-size);line-height:1.3;color:var(--fg)}.cjk{display:inline-block;width:calc(var(--text-cell) * 2);font-family:var(--text-font);font-size:var(--cjk-size);font-synthesis:none;font-weight:400;font-variant-ligatures:none;font-kerning:none;line-height:var(--text-size);position:relative;text-rendering:optimizeSpeed;-webkit-font-smoothing:none;-moz-osx-font-smoothing:auto;vertical-align:baseline}.cjk-bitmap{--cjk-ink: var(--fg);color:transparent;font-family:var(--text-font)}.cjk-bitmap:before{content:"";position:absolute;top:-1px;left:0;width:16px;height:16px;background:var(--cjk-ink);pointer-events:none;-webkit-mask-image:url(/assets/cjk/wqy-cjk-body.png);mask-image:url(/assets/cjk/wqy-cjk-body.png);-webkit-mask-position:var(--cjk-x) var(--cjk-y);mask-position:var(--cjk-x) var(--cjk-y);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}a .cjk{font-size:var(--cjk-link-size);top:-1px}a .cjk-bitmap{--cjk-ink: var(--link)}a .cjk-bitmap:before{top:-2px;-webkit-mask-image:url(/assets/cjk/wqy-cjk-link.png);mask-image:url(/assets/cjk/wqy-cjk-link.png)}a:hover .cjk-bitmap,a:focus-visible .cjk-bitmap{--cjk-ink: var(--link-hover)}a:hover .cjk:after,a:focus-visible .cjk:after{content:"";position:absolute;right:0;bottom:-2px;left:0;border-bottom:1px solid var(--cjk-ink, currentColor)}@supports not ((mask-image: url()) or (-webkit-mask-image: url())){.cjk-bitmap{color:inherit}.cjk-bitmap:before{display:none}}@media(max-width:760px){body{padding:8px 0}.screen{box-sizing:border-box;width:100%;max-width:100%;padding:0 14px;text-align:left;overflow-x:clip;overflow-y:visible;-webkit-overflow-scrolling:auto}.textmode-wrap,.home-shell{display:block;width:100%;max-width:100%;margin:0;overflow-x:visible;zoom:normal;transform:none}.textmode-pre{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;font-size:13px;line-height:1.35}.phile-soft-break{display:none}.textmode-nav{margin:0 0 calc(var(--text-size) * 1.25);font-size:14px}.textmode-nav a{display:inline-block;padding:2px 0}.volume-pre-desktop{display:none}.volume-pre-mobile{display:block}.notfound-pre{white-space:pre;overflow-wrap:normal;word-break:normal;font-size:min(13px,calc((100vw - 28px) / 48));line-height:1.25}.phile-wrap,.phile-header{width:100%;max-width:100%;overflow-x:clip}.phile-header{height:auto}.phile-header-meta{position:static;padding-left:0}.phile-body-pre,.phile-footer-pre,.phile-media{padding-left:0}.phile-pre-block{white-space:pre;overflow-wrap:normal;word-break:normal;max-width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.phile-header-side{display:none}.screen:has(.home-shell){text-align:center}.home-shell{text-align:center}.home-pre{margin:0;padding:0}.ascii-pre{white-space:pre;font-size:min(14px,calc((100vw - 40px)/40));line-height:1}.ascii-hero:after{display:none}}@media(prefers-reduced-motion:reduce){.ascii-particles{display:none}}@media(max-width:700px){:root{--mobile-scale: .86}.image-lightbox-frame{padding:calc(var(--text-size) * 2) calc(var(--text-cell) * 2)}.image-lightbox-image{max-width:calc(100vw - var(--text-cell) * 4);max-height:82vh}}@media(max-width:620px){:root{--mobile-scale: .76}}@media(max-width:540px){:root{--mobile-scale: .66}}@media(max-width:470px){:root{--mobile-scale: .58}}@media(max-width:410px){:root{--mobile-scale: .52}}@media(max-width:360px){:root{--mobile-scale: .47}}
