@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/Inter.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Besley;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/Besley-Italic.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.prose *{margin:0;padding:0;font-size:var(--font-size-m)}.prose{margin-bottom:8rem}.prose .content>:first-child{margin-top:0}.prose .title{margin-bottom:2.5em}.prose .title h1{margin:0 0 .375rem}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5{font-size:var(--font-size-m);font-weight:var(--font-weight-bold);line-height:1.75;margin:3.75em 0 1.75em}.prose strong,.prose b{font-weight:var(--font-weight-bold)}.prose em{font-family:var(--serif);font-style:italic;letter-spacing:0}.prose a{color:var(--text-primary);text-decoration:underline;text-decoration-color:var(--text-tertiary);transition:text-decoration-color .2s ease-out}.prose a:hover{color:var(--text-primary);text-decoration-color:var(--text-primary)}.prose p{line-height:1.75;margin:1.75em 0}.prose table{table-layout:fixed;width:100%;border-collapse:separate;border-spacing:0;margin:1.75em 0;font-size:var(--font-size-m);border:1px solid var(--border);border-radius:8px;overflow:hidden}.prose th,.prose td{border:none;border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:.5em 1em;text-align:left}.prose th:last-child,.prose td:last-child{border-right:none}.prose tr:last-child td{border-bottom:none}.prose th{background:var(--astro-code-background);font-weight:var(--font-weight-bold)}.prose img{max-width:100%;height:auto;display:block;margin:2em 0}.img-placeholder{background:var(--code-bg);display:block}.prose img[loading=lazy]{opacity:0;animation:fadeIn .3s ease-out forwards}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.prose figure{margin-bottom:2em;text-align:center}.prose figure img{margin-bottom:1em}.prose figure figcaption{color:var(--text-secondary);font-size:var(--font-size-s);text-align:center}.prose p>img{position:relative;margin-bottom:2em}.prose p>img:after{content:attr(alt);display:block;position:absolute;left:0;width:100%;text-align:center;color:var(--text-secondary);font-size:var(--font-size-s);margin-top:.75em}.prose .img-caption{display:block;text-align:center;color:var(--text-secondary);font-size:var(--font-size-s);margin-bottom:2em}.prose code{padding:2.5px 3.5px;border-radius:5px;background-color:var(--code-bg);border:.5px solid var(--border);font-family:var(--mono);font-size:.9em;font-feature-settings:"liga" 0,"calt" 0;-webkit-font-feature-settings:"liga" 0,"calt" 0}.prose blockquote{border-left:2px solid var(--border);margin:0 0 1.75em .125em;padding:0 0 0 1.375em;text-align:left}.prose blockquote p{margin:0}.prose blockquote cite{display:inline-block;margin-top:.5em}.prose ul{list-style-type:none;padding-left:0;margin-left:1rem;margin-bottom:1.75em;line-height:1.75}.prose ul ul{margin-left:.625rem;margin-top:.5em;margin-bottom:.5em}.prose ul li{position:relative;padding-left:.125rem;margin-bottom:.5em}.prose ul li:last-child{margin-bottom:0}.prose ul li>ul{margin-top:.5em;margin-bottom:.5em}.prose ul li:before{--size: .3125rem;content:"";position:absolute;left:-.785rem;top:calc((1.75em - var(--size)) / 2);width:var(--size);height:var(--size);border-radius:50%;background-color:var(--text-tertiary)}.prose ol{list-style-position:outside;padding-left:0;margin-left:1.25rem;margin-bottom:1.75em;counter-reset:item}.prose ol li{display:block;position:relative;padding-left:.125rem;margin-bottom:.5em}.prose ol li:last-child{margin-bottom:0}.prose ol li:before{content:counter(item) ".";counter-increment:item;position:absolute;left:-1.15rem;width:1.5rem;text-align:left;color:var(--text-secondary);opacity:.75;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1,"zero" 0,"cv01" 1,"cv02" 1,"calt" 1,"ss03" 1,"liga" 1,"ordn" 1}.prose ul.contains-task-list{list-style:none;margin-left:0;white-space:nowrap}.prose ul.contains-task-list li:before{content:none}.prose ul.contains-task-list li.task-list-item{padding-left:.125em;margin-bottom:.5em}.prose ul.contains-task-list li.task-list-item:last-child{margin-bottom:0}.prose ul.contains-task-list li.task-list-item input[type=checkbox]{margin-right:.625em;position:relative;top:.15em;width:1em;height:1em;border:1.35px solid var(--text-tertiary);border-radius:4px;background:transparent;appearance:none;-webkit-appearance:none}.prose ul.contains-task-list li.task-list-item input[type=checkbox]:checked{position:relative;background:var(--code-bg);font-family:var(--sans);border:1.35px solid var(--text-tertiary);opacity:.75}.prose ul.contains-task-list li.task-list-item input[type=checkbox]:checked:after{content:"✓";position:absolute;top:50%;left:50%;transform:translate(-45%,-55%);font-family:var(--sans);font-size:10px;font-weight:650;color:var(--text-primary);opacity:.55}.prose ul.contains-task-list li.task-list-item input[type=checkbox]+*{display:inline;margin-left:0;line-height:1.75;white-space:nowrap}.prose sup,.prose sub,.prose sup a{margin:0 .125em;font-size:.875em;line-height:1}.prose hr{margin:3.75em 0;height:auto;border:none;background:none;text-align:center;position:relative}.prose hr:before{content:"***";font-family:var(--mono);color:var(--text-tertiary);font-size:.875em;letter-spacing:.25em}.prose kbd{font-family:var(--mono);font-size:var(--font-size-s);border:1px solid var(--text-tertiary);padding:1px 4px;border-radius:5px;min-width:1.75em;display:inline-block;text-align:center}.prose mark{background-color:var(--mark);color:var(--text-primary);padding:3px 1px}.prose .footnotes{margin-top:4rem;padding-top:1.75rem;position:relative}.prose .footnotes:before{content:"";position:absolute;top:0;left:0;width:4rem;height:1px;background-color:var(--border)}.prose cite{font-style:normal}.prose [data-footnote-backref]{position:relative;font-family:var(--mono);font-size:var(--font-size-l);top:-.05em}.prose [data-footnote-ref]{font-size:1em;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1,"zero" 0,"cv01" 1,"cv02" 1,"calt" 1,"ss03" 1,"liga" 1,"ordn" 1}.prose [data-footnote-ref],.prose [data-footnote-backref]{color:var(--text-secondary);opacity:.875;text-decoration:none;transition:color .2s ease-out;padding-right:.125em}.prose [data-footnote-ref]:hover,.prose [data-footnote-backref]:hover{color:var(--text-primary)}.prose .footnotes li.footnote-highlight,.prose sup.footnote-highlight,.prose cite.footnote-highlight{animation:footnote-highlight 1.35s ease-out}@keyframes footnote-highlight{0%,87%{background-color:var(--selection)}to{background-color:transparent}}.prose pre{background-color:var(--astro-code-background);border-radius:8px;padding:1.25em 1.5em;margin:2em 0;overflow-x:auto}@media(max-width:768px){.prose pre{padding:1em 1.25em}}.prose pre>code{font-family:var(--mono);font-feature-settings:"liga" 0,"calt" 0;display:block;white-space:pre;word-break:normal;overflow-wrap:normal;padding:0;margin:0;background:none;border:none;line-height:1.5;border-radius:0}.prose pre>code *{font-size:var(--font-size-s)}.katex-mathml{display:none!important}.katex-display{text-align:center;margin:1.75em 0}.katex *{box-sizing:content-box}.katex,.katex *{color:inherit}.katex .base,.katex .strut,.katex .mathit,.katex .mathrm,.katex .mathbf,.katex .mathsf,.katex .mathtt{line-height:initial;vertical-align:baseline}@media(prefers-color-scheme:dark){.katex,.katex *{color:inherit}}.reading-time{color:var(--text-secondary);letter-spacing:-.025em}.reading-time .separator{margin:0 .25em}.prose iframe{width:100%;aspect-ratio:16/9;border:none;border-radius:6px;margin:.25em 0 0}.prose iframe[src*="spotify.com"]{aspect-ratio:auto}:root{--content-width: 25rem;--sans: Inter, -apple-system, BlinkMacSystemFont, sans-serif;--serif: Besley, Baskerville, Georgia, "Times New Roman", Times, serif;--mono: "SF Mono", SFMono-Regular, ui-monospace;--font-size-s: .8125rem;--font-size-m: .9375rem;--font-size-l: 1.0625rem;--font-weight-light: 350;--font-weight-regular: 400;--font-weight-bold: 500;--spacing-s: -.08em;--spacing-m: -.02em;--bg: #ffffff;--text-primary: rgba(0, 0, 0, .85);--text-secondary: rgba(0, 0, 0, .4);--text-tertiary: rgba(0, 0, 0, .24);--border: rgba(0, 0, 0, .1);--selection: rgba(0, 0, 0, .08);--code-bg: rgba(0, 0, 0, .04);--mark: #f3ffc4;--astro-code-foreground: rgba(0, 0, 0, .85);--astro-code-background: rgba(0, 0, 0, .03);--astro-code-token-constant: rgba(0, 0, 0, .85);--astro-code-token-string: rgba(0, 0, 0, .85);--astro-code-token-comment: rgba(0, 0, 0, .35);--astro-code-token-keyword: rgba(0, 0, 0, .55);--astro-code-token-parameter: rgba(0, 0, 0, .85);--astro-code-token-function: rgba(0, 0, 0, .85);--astro-code-token-string-expression: rgba(0, 0, 0, .55);--astro-code-token-punctuation: rgba(0, 0, 0, .55);--astro-code-token-link: rgba(0, 0, 0, .55)}html.light{--bg: #ffffff;--text-primary: rgba(0, 0, 0, .85);--text-secondary: rgba(0, 0, 0, .4);--text-tertiary: rgba(0, 0, 0, .24);--border: rgba(0, 0, 0, .1);--selection: rgba(0, 0, 0, .08);--code-bg: rgba(0, 0, 0, .04);--mark: #f3ffc4;--astro-code-foreground: rgba(0, 0, 0, .85);--astro-code-background: rgba(0, 0, 0, .03);--astro-code-token-constant: rgba(0, 0, 0, .85);--astro-code-token-string: rgba(0, 0, 0, .85);--astro-code-token-comment: rgba(0, 0, 0, .35);--astro-code-token-keyword: rgba(0, 0, 0, .5);--astro-code-token-parameter: rgba(0, 0, 0, .85);--astro-code-token-function: rgba(0, 0, 0, .85);--astro-code-token-string-expression: rgba(0, 0, 0, .55);--astro-code-token-punctuation: rgba(0, 0, 0, .55);--astro-code-token-link: rgba(0, 0, 0, .55)}html.dark{--bg: #1c1c1c;--text-primary: rgba(255, 255, 255, .9);--text-secondary: rgba(255, 255, 255, .4);--text-tertiary: rgba(255, 255, 255, .24);--border: rgba(255, 255, 255, .1);--selection: rgba(255, 255, 255, .08);--code-bg: rgba(255, 255, 255, .04);--mark: #545b37;--astro-code-foreground: rgba(255, 255, 255, .9);--astro-code-background: rgba(255, 255, 255, .03);--astro-code-token-constant: rgba(255, 255, 255, .9);--astro-code-token-string: rgba(255, 255, 255, .9);--astro-code-token-comment: rgba(255, 255, 255, .35);--astro-code-token-keyword: rgba(255, 255, 255, .55);--astro-code-token-parameter: rgba(255, 255, 255, .9);--astro-code-token-function: rgba(255, 255, 255, .9);--astro-code-token-string-expression: rgba(255, 255, 255, .55);--astro-code-token-punctuation: rgba(255, 255, 255, .55);--astro-code-token-link: rgba(255, 255, 255, .55)}html{background-color:var(--bg);scroll-behavior:smooth;scrollbar-gutter:stable;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:transparent;transition:background-color .2s ease-out}body{font-family:var(--sans);font-feature-settings:"ss03" 1;font-size:var(--font-size-m);line-height:1.75;color:var(--text-primary);min-height:100vh;display:flex;flex-direction:column;box-sizing:border-box;letter-spacing:var(--spacing-m);margin:0 auto;width:100%;overscroll-behavior-y:contain;text-autospace:normal;text-spacing-trim:space-first;text-rendering:optimizeLegibility;font-synthesis:none;word-wrap:break-word;overflow-wrap:break-word}body[data-centered=true]{padding:6rem 1.5rem 1.5rem}body[data-centered=false]{padding:6rem 0 1.5rem;margin:0 1.5rem 0 8rem}@media(max-width:768px){body[data-centered=true],body[data-centered=false]{padding:4rem 1.35rem 1.35rem;margin:0 auto}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}::selection{background-color:var(--selection)}:focus:not(:focus-visible){outline:none}:focus-visible{outline:1.5px dashed var(--text-tertiary);border-radius:.25rem}body[data-width]{max-width:var(--content-width)}main{flex:1;display:flex;flex-direction:column;box-sizing:border-box}.date{margin:0;font-weight:var(--font-weight-light);color:var(--text-secondary);opacity:.75;flex-shrink:0;letter-spacing:var(--spacing-s);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1,"zero" 0,"cv01" 1,"cv02" 1,"calt" 1,"ss03" 1,"ordn" 1}.date .month{letter-spacing:var(--spacing-m)}.sr-only{border:0;padding:0;margin:0;position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);clip-path:inset(50%);white-space:nowrap}.site-footer[data-astro-cid-35ed7um5]{font-size:var(--font-size-s);font-weight:var(--font-weight-light);line-height:1.75;color:var(--text-secondary);opacity:.75;margin-top:5rem;text-align:center}.social-links[data-astro-cid-35ed7um5]{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:.95rem;width:100%;margin-bottom:.55rem}.social-link[data-astro-cid-35ed7um5]{width:1.2rem;height:1.2rem;display:inline-flex;align-items:center;justify-content:center}.social-link[data-astro-cid-35ed7um5] svg[data-astro-cid-35ed7um5]{width:100%;height:100%;display:block}.weibo-icon[data-astro-cid-35ed7um5]{width:1.26rem;height:1.26rem;display:inline-flex;align-items:center;justify-content:center;overflow:visible}.weibo-icon[data-astro-cid-35ed7um5] svg[data-astro-cid-35ed7um5]{width:1.35rem;height:1.35rem;transform:translateY(.02rem) scale(1.08);transform-origin:center}.copyright[data-astro-cid-35ed7um5]{margin:0}.site-footer[data-astro-cid-35ed7um5] a[data-astro-cid-35ed7um5]{color:var(--text-secondary);text-decoration:none;transition:color .2s ease-out}.site-footer[data-astro-cid-35ed7um5] a[data-astro-cid-35ed7um5]:hover{color:var(--text-primary)}@media(max-width:768px){.site-footer[data-astro-cid-35ed7um5]{margin-top:3.5rem}}.theme-toggle[data-astro-cid-lfoluaxz]{background:none;border:none;cursor:pointer;display:flex;align-items:center;justify-content:flex-end;width:1.5rem;height:1.5rem;color:var(--text-primary);opacity:.4;transition:opacity .2s ease-out;padding:0;position:relative}.theme-toggle[data-astro-cid-lfoluaxz]:hover{opacity:1}@media(hover:none)and (pointer:coarse){.theme-toggle[data-astro-cid-lfoluaxz]:hover{opacity:.4}}.floating-tools{position:fixed;right:1.25rem;bottom:1.25rem;z-index:40;display:flex;flex-direction:column;gap:.65rem;align-items:center}.floating-tools .tool-button,.floating-tools .theme-toggle{width:1.75rem;height:1.75rem;display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;background:transparent;color:var(--text-secondary);cursor:pointer;opacity:.85;transition:color .2s ease-out,opacity .2s ease-out}#back-to-top{opacity:0;pointer-events:none}#back-to-top.is-visible{opacity:.85;pointer-events:auto}.floating-tools .tool-button:hover,.floating-tools .theme-toggle:hover{color:var(--text-primary);opacity:1}.search-panel[hidden]{display:none}.search-backdrop{position:fixed;inset:0;z-index:50;background:#00000047;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.search-dialog{position:fixed;left:50%;top:17vh;z-index:60;width:min(39rem,calc(100vw - 2rem));transform:translate(-50%);display:flex;flex-direction:column;gap:.65rem}.search-head{display:flex;align-items:center;gap:.75rem;min-height:3.25rem;box-sizing:border-box;border:1px solid var(--border);border-radius:8px;background:var(--bg);box-shadow:0 .85rem 2.5rem #0000002e;padding:0 .9rem}.search-head-icon{color:var(--text-secondary);flex:0 0 auto}#search-input{flex:1;min-width:0;border:0;background:transparent;color:var(--text-primary);font:inherit;padding:.55rem 0;outline:none}.search-close{width:1.75rem;height:1.75rem;border:0;background:transparent;color:var(--text-secondary);cursor:pointer;font:inherit;font-size:1.65rem;line-height:1;opacity:.9;transition:color .2s ease-out}.search-close:hover{color:var(--text-primary)}.search-results{box-sizing:border-box;max-height:55vh;overflow:auto;border:1px solid var(--border);border-radius:8px;background:var(--bg);box-shadow:0 .85rem 2.5rem #0000001f;padding:.8rem 1rem}.search-empty{margin:0;color:var(--text-secondary)}.search-result{display:flex;flex-direction:column;gap:.2rem;padding:.8rem 0;color:var(--text-primary);text-decoration:none;border-bottom:1px solid var(--border)}.search-result:first-child{padding-top:0}.search-result:last-child{padding-bottom:0;border-bottom:0}.search-result-title{font-size:1rem;font-weight:var(--font-weight-bold);line-height:1.55}.search-result-meta,.search-result-excerpt{color:var(--text-secondary);line-height:1.55}.search-result-excerpt{display:-webkit-box;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical}.search-result mark{color:#d97706;background:transparent;font-weight:var(--font-weight-bold);padding:0}html.search-open,html.search-open body{overflow:hidden}@media(max-width:768px){.floating-tools{right:.9rem;bottom:.9rem}.search-dialog{top:12vh}.search-results{max-height:58vh}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}.layout-wrapper{display:flex;flex-direction:column;flex:1;min-height:0}.gradient-mask[data-astro-cid-5gze4ep5]{--gradient-mask-image: linear-gradient( to bottom, rgba(0, 0, 0, .92) 0%, rgba(0, 0, 0, .738) 19%, rgba(0, 0, 0, .541) 34%, rgba(0, 0, 0, .382) 47%, rgba(0, 0, 0, .278) 56.5%, rgba(0, 0, 0, .194) 65%, rgba(0, 0, 0, .126) 73%, rgba(0, 0, 0, .075) 80.2%, rgba(0, 0, 0, .042) 86.1%, rgba(0, 0, 0, .021) 91%, rgba(0, 0, 0, .008) 95.2%, rgba(0, 0, 0, .002) 98.2%, transparent 100% );position:fixed;top:0;left:0;width:100%;height:2rem;z-index:99;pointer-events:none;opacity:0;transition:opacity .2s ease-out}.gradient-mask__blur[data-astro-cid-5gze4ep5],.gradient-mask__background[data-astro-cid-5gze4ep5]{position:absolute;inset:0;mask-image:var(--gradient-mask-image);-webkit-mask-image:var(--gradient-mask-image)}.gradient-mask__blur[data-astro-cid-5gze4ep5]{backdrop-filter:blur(1.5px);-webkit-backdrop-filter:blur(1.5px)}.gradient-mask__background[data-astro-cid-5gze4ep5]{background-color:var(--bg);transition:background-color .2s ease-out}@media(min-width:768px){.gradient-mask[data-astro-cid-5gze4ep5]{height:4rem}}
