@import"https://fonts.thu.fail/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap";@property --startup-offset{syntax: "<length>"; inherits: true; initial-value: 0;}@property --var-scale{syntax: "<number>"; inherits: true; initial-value: 1;}@property --var-offset-x{syntax: "<length>"; inherits: true; initial-value: 0;}@property --var-offset-y{syntax: "<length>"; inherits: true; initial-value: 0;}*{box-sizing:inherit;transform-style:inherit}body{padding:0;margin:0;box-sizing:border-box}button{padding:0;margin:0;border:none;background:none;cursor:pointer;outline:none;font-size:inherit;color:inherit;line-height:inherit}a{text-decoration:none;border-bottom:1px dashed var(--color-fg-icon);color:#869bdd;cursor:pointer}@font-face{font-family:"Source Han Serif SC Subset";font-style:normal;font-weight:400;src:url(/assets/subset-BoY4oQLO.woff2) format("woff2-variations"),url(/assets/subset-BoY4oQLO.woff2) format("woff2");font-weight:100 900;font-display:swap}:root{font-family:Inter,Source Sans Pro,Source Han Sans SC,Source Han Sans VF SC,sans-serif;--title-font: "Source Serif Pro", "Source Han Serif SC Subset", "Source Han Serif SC", "Source Han Serif VF SC", "Source Han Serif", "Source Han Serif VF", serif;color-scheme:light dark;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--color-bg: #FFF;--color-fg: #000;--color-fg-secondary: oklab(.3 0 0);--color-fg-icon: oklab(.7 0 0);--color-bg-block: rgba(0,0,0,.05);--shard-lightness-1: .9;--shard-lightness-2: .7;--shard-lightness-3: .4;--shard-lightness-docked: .4;overflow-y:scroll;overflow-x:hidden;background:var(--color-bg);color:var(--color-fg)}@media (prefers-color-scheme: dark){:root:not(.light){--color-bg: #2e2f33;--color-fg: oklab(.95 0 0);--color-fg-secondary: oklab(.8 0 0);--color-fg-icon: oklab(.6 0 0);--color-bg-block: rgba(0,0,0,.2);--shard-lightness-1: .4;--shard-lightness-2: .7;--shard-lightness-3: .9;--shard-lightness-docked: .9}}root{--scroll: 0}#scroll-sentinel{position:absolute;top:0;left:0;width:100%;height:20px;pointer-events:none}#logo{position:fixed;left:20px;top:30px;transform-origin:20px 0;transform:scale(1.5);transition:transform .2s ease;width:160px;height:100px;z-index:10}#logo-shards>.logo-shards-container{filter:drop-shadow(0 var(--shadow) calc(var(--shadow) * 1.5) rgba(0,0,0,.3))}#logo-shards>.logo-shards-container>use{transition:filter .2s ease,transform .2s ease;fill:#fff}#logo-shards>.logo-shards-container:nth-last-child(1)>use{filter:brightness(var(--shard-lightness-1))}#logo-shards>.logo-shards-container:nth-last-child(2)>use{transform:translate(clamp(0px,calc(2 * var(--distance) + var(--startup-offset) / 1.5),var(--distance)));filter:brightness(var(--shard-lightness-2))}#logo-shards>.logo-shards-container:nth-last-child(3)>use{transform:translate(max(calc(2 * var(--distance) + var(--startup-offset) / 1.5),0px));filter:brightness(var(--shard-lightness-3))}#logo-mask>g{transition:transform .2s ease;transform:translate(calc(var(--gap) - var(--distance)))}#lang-sel{position:fixed;top:55px;left:200px;z-index:10;transition:transform .2s ease;font-size:12px;line-height:20px;-webkit-user-select:none;user-select:none;display:flex;align-items:center}#lang-sel>button{display:inline-block;opacity:.3;transition:opacity .2s ease}#lang-sel>button.active,#lang-sel>button:hover{opacity:1}#lang-sel>span{display:inline-block;margin:0 5px;opacity:.18;font-size:6px;line-height:20px}#brand{font-family:var(--title-font);font-weight:900;font-size:48px;position:fixed;left:200px;top:80px;z-index:9;transition:transform .1s ease,opacity .1s ease;margin:0;line-height:56px;clip-path:inset(0 0 0 -100px)}#brand>span{transform:translate(var(--startup-offset));display:inline-block}nav{width:100%}@media (max-width: 800px){nav:after{content:"";position:fixed;opacity:1;width:100vw;height:80px;top:0;left:0;right:0;background:var(--color-bg);box-shadow:0 2px 3px #0000004d;border-bottom:rgba(0,0,0,.3) 5px solid;transition:opacity .2s ease;z-index:1}}#nav-right{position:fixed;width:100%;transition:transform .2s ease;z-index:10}#nav{padding:0;position:fixed;left:200px;top:130px;transform-origin:0 0;transition:transform .2s ease;margin:0;line-height:36px;z-index:10}#nav a{color:var(--color-fg);line-height:20px;font-size:16px;display:inline-flex;align-items:center;margin-right:10px}#nav a:last-child{margin-right:0}#nav a:before{content:">";font-size:10px;font-family:monospace;margin-right:5px}.title{width:calc(var(--optical-width) * var(--size) * 1px);height:calc(var(--line-cnt) * var(--line-height));fill:var(--color-fg);pointer-events:none;overflow:visible}.title .line{transform:translateY(calc(var(--line-idx) * var(--line-height) + var(--baseline-y)))}.title .var-group{transform-origin:0 0;transform:translate(calc(1px * var(--grp-line-xdiff, var(--grp-xdiff)) * var(--size)))}.title .glyph{transform:translate(calc(1px * var(--in-grp-xdiff) * var(--size) * var(--var-scale)))}.title path{transform-origin:0 0;transform:scale(calc(var(--size) * var(--var-scale) / var(--em)))}.surrogate-title{font-family:var(--title-font);font-weight:900}.title-center .line{transform:translateY(calc(var(--line-idx) * var(--line-height) + var(--baseline-y))) translate(calc((var(--optical-width) - var(--line-optical-width)) * var(--size) * .5px))}.list,.search-input-container,.search-result,.not-found,.tags{left:200px;right:0;padding-right:60px}@media (max-width: 800px){.list,.search-input-container,.search-result,.not-found,.tags{top:120px;left:0;padding-left:60px}}@media (max-width: 500px){.list,.search-input-container,.search-result,.not-found,.tags{padding:0 40px}}.list{position:absolute;top:0;padding-top:250px}.entry{margin-bottom:60px;content-visibility:auto;contain-intrinsic-height:80px}.entry-title{--size: 24;--baseline-y: 30px;--line-height: 40px;margin-bottom:10px;position:relative;width:min-content}.entry .surrogate-title{font-size:24px;width:min(calc(100vw - 120px),400px)}.entry-title-tangible{position:absolute;top:0;bottom:0;left:0;right:0;display:inline-block;font-size:calc(var(--size) * 1px);line-height:40px;overflow:hidden;color:transparent;font-family:var(--title-font);font-weight:900}.entry-preview{max-width:600px;color:var(--color-fg-secondary);font-size:14px;line-height:24px;margin-bottom:20px}.entry-time{font-size:14px;color:var(--color-fg-secondary);line-height:24px;display:flex;justify-content:flex-start;align-items:center}.entry-time svg{height:16px;width:16px;margin-left:5px;fill:var(--color-fg-icon)}.tag-list{padding-top:120px;--header-size: 80px}@media (max-width: 800px){.tag-list{--header-size: 64px}}.tag-header{position:relative;margin-bottom:-15px;display:flex;align-items:center;color:var(--color-fg-secondary)}.tag-header svg{height:var(--header-size);width:var(--header-size);transform:translateY(10px);clip-path:inset(0 0 10px 0);fill:var(--color-fg-secondary)}.tag-header:after{content:"";position:absolute;top:0%;bottom:0;left:0;right:0;pointer-events:none;background:linear-gradient(180deg,transparent 50%,var(--color-bg) 80%)}.tag-name{font-size:var(--header-size);line-height:var(--header-size);font-weight:700;font-family:monospace}.post{position:absolute;width:100%;top:0;--title-line-height: 60px;--title-line-cnt: 1;--post-top-gutter: clamp( calc(120px + var(--title-line-height) * var(--title-line-cnt)), 50vh, calc(240px + var(--title-line-height) * var(--title-line-cnt)) )}@media (max-width: 800px){.post{--post-top-gutter: max( calc(160px + var(--title-line-height) * var(--title-line-cnt)), calc(240px + .5 * var(--title-line-height) * var(--title-line-cnt)) ) }}.post>.title{--size: 48;--baseline-y: 48px;--line-height: var(--title-line-height);position:absolute;top:var(--post-top-gutter);left:50%;transform:translate(-50%) translateY(-100%);pointer-events:all}@media (max-width: 1150px){.post>.title{transform:translate(90px) translate(-50%) translateY(-100%)}}@media (max-width: 800px){.post>.title{transform:translate(-50%) translateY(-100%)}}.post>.title .var-group{transform:translate(calc((var(--var-offset-x, 0px) + 1px * var(--grp-line-xdiff, var(--grp-xdiff))) * var(--size)),calc(var(--var-offset-y, 0px) * var(--size) + (0px - 1px * var(--scroll, 0) * (var(--var-scale) - .5) / 2)));opacity:calc(1 - var(--scroll, 0) * (var(--var-scale) - .5) / 200)}.post>.surrogate-title{font-size:48px;text-align:center;position:absolute;left:50%;top:var(--post-top-gutter);width:min(80%,100% - 80px);transform:translate(-50%) translateY(-100%)}@media (max-width: 1150px){.post>.surrogate-title{transform:translate(90px) translate(-50%) translateY(-100%)}}@media (max-width: 800px){.post>.surrogate-title{transform:translate(-50%) translateY(-100%)}}.post-content-wrapper{margin-top:calc(var(--post-top-gutter) + 100px);padding:0 240px 60px;position:relative}@media (max-width: 1150px){.post-content-wrapper{padding:0 60px 60px 240px}}@media (max-width: 800px){.post-content-wrapper{padding:0 60px 60px}}@media (max-width: 500px){.post-content-wrapper{padding:0 40px 60px}}.post-content,.post-banner{max-width:600px;margin:0 auto}@media (max-width: 950px){.post-content,.post-banner{max-width:450px}}.post-content{font-size:16px;line-height:1.75;letter-spacing:.03125em}.post-banner{position:relative;--banner-color: gray;--banner-color-darker: color-mix(in srgb, var(--banner-color) 50%, transparent 50%);--banner-color-lighter: color-mix(in srgb, var(--banner-color) 20%, transparent 80%);background:linear-gradient(45deg,var(--banner-color-darker) 25%,var(--banner-color-lighter) 25%,var(--banner-color-lighter) 50%,var(--banner-color-darker) 50%,var(--banner-color-darker) 75%,var(--banner-color-lighter) 75%);background-size:40px 40px;padding:5px 5px 5px 30px;margin-bottom:10px}@media (prefers-color-scheme: dark){.post-banner:not(.light){--banner-color-darker: var(--banner-color);--banner-color-lighter: color-mix(in srgb, var(--banner-color) 40%, transparent 60%)}}.post-banner-inner{background:color-mix(in srgb,var(--color-bg) 75%,transparent 25%);padding:10px 20px;box-shadow:0 2px 3px #0000004d inset;font-size:16px;font-family:monospace}.post-banner-amber{--banner-color: #c39e50}.post-banner-green{--banner-color: #549518}.post-metadata,.post-metadata-aux{font-size:14px;line-height:18px}.post-metadata .post-metadata-line,.post-metadata-aux .post-metadata-line{display:flex;align-items:center}.post-metadata svg:not(.title),.post-metadata-aux svg:not(.title){height:18px;fill:var(--color-fg-icon)}.post-metadata{position:absolute;left:0;right:0;top:-80px;display:flex;justify-content:center}@media (max-width: 1150px){.post-metadata{left:180px}}@media (max-width: 800px){.post-metadata{left:0}}@media (max-width: 500px){.post-metadata{position:relative;left:0;flex-direction:column;margin-bottom:-40px}.post-metadata .post-metadata-line{justify-content:center;margin-bottom:5px}}.post-metadata .post-metadata-line{margin-right:10px;margin-left:10px}.post-metadata-aux{position:fixed;left:40px;top:140px;display:block;z-index:1}@media (max-width: 800px){.post-metadata-aux{top:0;left:100px;height:80px;width:calc(100% - 260px);display:flex;flex-direction:row;align-items:center}.post-metadata-aux .post-metadata-line{display:none}}.post-metadata-aux .post-metadata-line{margin-bottom:5px}.post-metadata-aux .title{--baseline-y: 18px;--size: 16;--line-height: 24px;margin-bottom:10px}@media (max-width: 800px){.post-metadata-aux .title{margin-bottom:0;margin-right:10px}}.post-metadata-aux .post-metadata-line,.post-metadata-aux .title .var-group{transition-property:opacity,transform;transition-duration:.1s;transition-timing-function:ease-out}.post-metadata-aux .title .var-group{transition-delay:calc(var(--grp-idx) * 15ms)}.post-metadata-aux .surrogate-title{font-size:16px;max-width:160px;margin-bottom:10px}.post.post-exiting .post-metadata-aux .post-metadata-line,.post:not(.post-docked) .post-metadata-aux .post-metadata-line{opacity:0;transform:translate(-5px)}.post.post-exiting .post-metadata-aux .title .var-group,.post:not(.post-docked) .post-metadata-aux .title .var-group{opacity:0;transform:translate(-5px) translate(calc(1px * var(--grp-line-xdiff, var(--grp-xdiff)) * var(--size)))}.post-metadata-tag:not(:first-of-type){margin-left:5px}.post-metadata-tag,.post-metadata-published,.post-metadata-updated{font-family:monospace}.post-comments{max-width:600px;margin:60px auto 0}@media (max-width: 950px){.post-comments{max-width:450px}}blockquote{border-left:rgba(0,0,0,.3) 10px solid;background:var(--color-bg-block);margin:0;padding:0 20px 0 30px;border-radius:8px;box-shadow:0 2px 3px #0000004d;display:flow-root}@media (prefers-color-scheme: dark){blockquote:not(.light){border-left:rgba(0,0,0,.5) 10px solid}}blockquote:has(>ul){padding-left:5px}pre:has(code){background:#002b36;color:#839496;padding:12px 20px;border-radius:8px;box-shadow:0 2px 3px #0000004d;overflow:auto}code:not(pre code){padding:2px 5px;border-radius:5px;background-color:color-mix(in srgb,var(--color-fg) 5%,var(--color-bg) 95%)}@media (prefers-color-scheme: dark){code:not(pre code){background-color:color-mix(in srgb,var(--color-fg) 10%,var(--color-bg) 90%)}}a:has(>code){border-bottom:none;text-decoration-line:underline;text-decoration-color:var(--color-fg-icon);text-decoration-style:dotted;text-decoration-thickness:1px;text-underline-offset:4px}.post img,.post video{max-width:100%}.katex-html{display:none}h2{margin-block-start:1.5em;margin-block-end:.8em}h3{margin-block-start:1.5em;margin-block-end:1em}ol,ul{padding-left:0}ol ol,ol ul,ul ol,ul ul{padding-left:30px}figure{padding:20px 30px;margin:10px 0;background:var(--color-bg-block)}@media (max-width: 500px){figure{padding:10px 15px}}figure.raw{margin:0 auto;padding:0;width:fit-content;line-height:0}figure.raw figcaption{padding:10px 0}.inline-svg{width:100%}@media (prefers-color-scheme: dark){.inline-svg:not(.light){filter:invert(1)}}figcaption{margin:0 20px;font-size:.8em;line-height:1.5em;color:var(--color-fg-secondary)}details{margin:10px 0;position:relative;padding:0 0 10px 20px}details[open]:before{content:"";position:absolute;top:0;bottom:0;left:-30px;width:10px;background:var(--color-bg-block);box-sizing:border-box}summary{background:var(--color-bg-block);padding:10px 20px;cursor:pointer;margin-left:-30px;margin-right:-10px}.footnotes{font-size:.7em;font-weight:300}.about{left:0;right:0}#arrow{position:fixed;width:100px;top:160px;left:200px;transform:rotate(-90deg);overflow:visible;filter:drop-shadow(2px 0 3px rgba(0,0,0,.3));stroke:var(--color-fg);stroke-width:3px;stroke-linecap:round;fill:none;pointer-events:none;z-index:30}@media (max-width: 800px){#arrow{transform:rotate(-30deg);left:140px}}#arrow path{stroke-dasharray:var(--path-length)}.nav-about{transition:opacity .15s ease-out;transition-delay:.3s}root[data-view=about] .nav-about{opacity:0;transition-timing-function:ease-in;transition-delay:0s}.about-title{margin:0 0 20px}.about-content{position:absolute;top:200px;left:240px;right:0;font-size:16px;line-height:28px}@media (max-width: 800px){.about-content{left:0;top:240px}}.about-inner{padding:40px 60px 60px;max-width:600px}@media (max-width: 800px){.about-inner{margin:0 auto}}.about-overlay{position:fixed;top:0;left:0;right:0;height:240px;background:linear-gradient(180deg,var(--color-bg) 70%,transparent 100%);z-index:5}@media (max-width: 800px){.about-overlay{height:280px;background:linear-gradient(180deg,var(--color-bg) 80%,transparent 100%)}}#search-input{border:none;background:transparent;outline:none;padding:20px 30px;font-size:18px;border-radius:6px;width:100%;background:color-mix(in srgb,color-mix(in srgb,var(--color-fg) 5%,var(--color-bg) 95%),transparent 20%);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:#0000004d 0 2px 3px}.search-input-container{position:fixed;top:40px;z-index:50;margin-left:-20px;margin-right:-20px}@media (max-width: 800px){.search-input-container{top:100px}}.search-result{position:absolute;top:0;padding-top:160px}@media (max-width: 800px){.search-result{padding-top:200px}}#search-cnt{color:var(--color-fg-icon);margin-top:-30px;height:30px;padding-right:15px;text-align:end;transition:opacity .2s ease-out;-webkit-user-select:none;user-select:none;pointer-events:none;position:relative;z-index:1}#search-cnt.hidden{opacity:0;transition-timing-function:ease-in}.search-preview{max-width:600px;margin-bottom:20px;color:var(--color-fg-secondary);font-size:14px;line-height:24px}.search-preview strong{color:var(--color-fg)}.search-preview .search-preview-ellipsis{color:var(--color-fg-icon);-webkit-user-select:none;user-select:none}.not-found{position:absolute;height:100vh;display:flex;align-items:center;justify-content:center;top:0;flex-direction:column}#bowl{fill:var(--color-fg-icon);width:70px;margin-bottom:40px}.not-found-text{height:50px;overflow:visible;dominant-baseline:middle;width:200px;font-weight:800;line-height:50px;font-size:48px;fill:transparent;stroke:var(--color-fg-icon);stroke-width:1px;letter-spacing:2px;stroke-dasharray:10px 4px;text-anchor:middle}.not-found-hint{font-size:16px;line-height:24px;color:var(--color-fg-icon);font-family:monospace;font-style:italic}.tags{position:absolute;top:200px;left:200px;right:0}@media (max-width: 800px){.tags{left:0;top:240px}}.tags-tag{font-size:18px;text-decoration:none;display:inline-flex;border-left:45px solid var(--color-fg-icon);padding-right:40px;margin-left:-40px;margin-right:-20px;margin-bottom:10px;background:color-mix(in srgb,var(--color-fg) 10%,transparent 90%);align-items:center;border-bottom:none;color:var(--color-fg);font-family:monospace;clip-path:inset(0 40px 0 40px)}@media (prefers-color-scheme: dark){.tags-tag:not(.light){border-left-color:var(--color-fg)}}.tags-tag:last-child{margin-bottom:40px}.tags-name{font-size:18px;display:inline-block;padding:5px 7px 5px 10px;background:color-mix(in srgb,var(--color-fg) 5%,transparent 95%);color:#697dbc;text-decoration:underline;text-decoration-style:dotted;text-decoration-thickness:1px;text-underline-offset:4px}@media (prefers-color-scheme: dark){.tags-name:not(.light){color:#869bdd;background:color-mix(in srgb,var(--color-fg) 10%,transparent 90%)}}.tags-count{font-size:14px;padding:5px 10px 5px 7px}root.initial{transition:--startup-offset .8s cubic-bezier(0,0,0,1);transition-delay:.2s}root.initial #logo{transition:opacity .2s ease-out}root.initial #logo .logo-shards-container{transition-property:filter;transition-timing-function:ease-out;transition-duration:.2s;transition-delay:0s}root.initial #logo .logo-shards-container:not(:nth-last-child(1)){transition-delay:.4s}root.initial #logo .logo-shards-container>use{transition:filter .2s ease}root.initial #lang-sel,root.initial #nav{transition:opacity .3s ease-out,transform .3s ease-out;transition-delay:.7s}root.initial #brand{transition-delay:0}root.initial .about-content{transition-duration:.2s}root.banner{--startup-offset: 0}root.banner #lang-sel,root.banner #nav{opacity:1}root.banner #brand{transition-delay:.1s,.1s}root.banner #logo{--gap: 0px;--distance: 20px;--shadow: 2px;opacity:1}root.banner nav:after{opacity:0;pointer-events:none}root.banner-trigger{--startup-offset: -200px}root.banner-trigger #logo{--gap: 0px;--distance: 20px;--shadow: 0;opacity:0}root.banner-trigger #lang-sel{transform:translateY(5px);opacity:0}root.banner-trigger #nav,root.banner-trigger .list{transform:translateY(-5px);opacity:0}root.header{--startup-offset: 0}@media (max-width: 800px){root.header #nav-right{transform:translate(calc(100% - 100vw))}}root.header #lang-sel{opacity:1;transform:translate(-90px,-20px)}@media (max-width: 800px){root.header #lang-sel{transform:translate(-100%) translate(100vw) translate(-220px,-40px)}}root.header #nav{opacity:1;transform:translate(-160px,-50px) scale(.75)}@media (max-width: 800px){root.header #nav{transform:translate(-80%,-80%) translate(100vw) translate(-220px,-65px) scale(.8)}}root.header #brand{transform:scale(.9) translate(-20px,-10px);opacity:0;pointer-events:none}root.header #logo{--gap: 10px;--distance: 30px;--shadow: 0;--shard-lightness-1: var(--shard-lightness-docked);--shard-lightness-2: var(--shard-lightness-docked);--shard-lightness-3: var(--shard-lightness-docked);opacity:1;transform:scale(.5);cursor:default}@media (max-width: 800px){root.header #logo{transform:translate(-15px,-15px) scale(.5)}}root.header #logo:has(.logo-shards-container:hover){--distance: 35px;cursor:pointer}root.header-trigger{--startup-offset: -80px}root.header-trigger #logo{--gap: 0px;--distance: 20px;--shadow: 0;opacity:0}root.header-trigger #lang-sel,root.header-trigger #nav{opacity:0}root.header-trigger .list{transform:translateY(-5px);opacity:0}
