@layer reset{*,:before,:after{box-sizing:border-box}html{text-size-adjust:100%}body,h1,h2,h3,h4,p,ul,ol,figure,blockquote{margin:0}img,svg{max-width:100%;display:block}}@layer base{:root{color-scheme:light dark;--color-bg:#fcfcfb;--color-text:#21201c;--color-text-2:#4f4e49;--color-text-3:#6b6a64;--color-border:#e4e3df;--color-inline:#f1f0ef;--color-hover:#f1f0ef;--font-sans:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Microsoft YaHei", sans-serif;--font-mono:ui-monospace, "SFMono-Regular", "Cascadia Code", Menlo, Consolas, "Noto Sans Mono CJK SC", monospace;--width-page:40rem;--radius:.375rem}@media (prefers-color-scheme:dark){:root{--color-bg:#111110;--color-text:#eeeeec;--color-text-2:#c4c3be;--color-text-3:#95948d;--color-border:#2a2a28;--color-inline:#1d1d1b;--color-hover:#1d1d1b}}::selection{background:color-mix(in srgb, var(--color-text) 16%, transparent)}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;font-size:1rem;line-height:1.65}a{color:inherit;text-decoration-color:color-mix(in srgb, currentColor 35%, transparent);text-underline-offset:.2em;text-decoration-thickness:1px}a:hover{text-decoration-color:currentColor}:focus-visible{outline-offset:2px;border-radius:.15rem;outline:2px solid}h1,h2,h3,h4{text-wrap:balance;font-weight:600;line-height:1.35}code,pre,kbd{font-family:var(--font-mono)}}@layer components{.skip-link{z-index:100;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);padding:.4rem .75rem;position:fixed;top:.75rem;left:.75rem;translate:0 -200%}.skip-link:focus{translate:0}.site-header,.site-main,.site-footer{width:min(100% - 2rem, var(--width-page));margin-inline:auto}.site-header{justify-content:space-between;align-items:center;gap:1rem;padding-block:2.5rem 3rem;display:flex}.site-brand{align-items:center;gap:.6rem;font-weight:600;text-decoration:none;display:inline-flex}.site-brand__mark{border-radius:50%;width:1.75rem;height:1.75rem}.site-nav{gap:1.25rem;display:flex}.site-nav a{color:var(--color-text-2);text-decoration:none}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--color-text)}.site-main{min-height:50vh}.site-footer{border-top:1px solid var(--color-border);color:var(--color-text-3);gap:.5rem;margin-top:5rem;padding-block:1.5rem 3rem;font-size:.875rem;display:grid}.site-footer nav{flex-wrap:wrap;gap:1.25rem;display:flex}.site-footer a{color:var(--color-text-2)}.page-header{margin-bottom:2rem}.page-header h1{font-size:1.5rem}.page-header p{color:var(--color-text-2);margin-top:.5rem}.muted{color:var(--color-text-3)}.text-link{font-weight:500}.external-link__icon{vertical-align:.04em;opacity:.6;width:.72em;height:.72em;margin-inline-start:.2em;display:inline-block;overflow:visible}.home-intro{color:var(--color-text-2);margin-bottom:3rem}.post-years{gap:2.5rem;display:grid}.post-year h2{color:var(--color-text-3);font-variant-numeric:tabular-nums;margin-bottom:.75rem;font-size:.875rem;font-weight:500}.post-year ul{gap:.25rem;padding:0;list-style:none;display:grid}.post-year li{border-radius:var(--radius);justify-content:space-between;align-items:baseline;gap:1rem;margin-inline:-.5rem;padding:.35rem .5rem;display:flex;position:relative}.post-year li:hover{background:var(--color-hover)}.post-title{align-items:baseline;gap:.5rem;display:flex}.post-year li a{text-decoration:none}.post-year li a:after{content:"";position:absolute;inset:0}.post-year time{color:var(--color-text-3);font-variant-numeric:tabular-nums;flex:none;font-size:.875rem}.empty-state{color:var(--color-text-3)}.article-header{margin-bottom:2.5rem}.article-header h1{font-size:1.75rem}.article-title{flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem;display:flex}.draft-badge{border:1px solid var(--color-border);color:var(--color-text-3);border-radius:999px;flex:none;padding:0 .5em;font-size:.75rem;font-weight:500;line-height:1.6}.article-meta{color:var(--color-text-3);flex-wrap:wrap;gap:0 1rem;margin-top:.5rem;font-size:.875rem;display:flex}.article-meta time{margin-inline-start:.25em}.article-cover{margin-bottom:2.5rem}.article-cover img{border-radius:var(--radius);width:100%;height:auto}.article-footer{border-top:1px solid var(--color-border);gap:2.5rem;margin-top:3rem;padding-top:1.5rem;display:grid}.article-license{color:var(--color-text-3);font-size:.875rem}.comments-section h2{margin-bottom:1rem;font-size:1.125rem}.giscus-container{min-height:8rem}.prose{overflow-wrap:anywhere;line-height:1.8}.prose :where(p,ul,ol,blockquote,pre,table,figure){margin-block:1.25rem}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose :where(ul,ol){padding-left:1.4rem}.prose li+li{margin-top:.35rem}.prose :where(h2,h3,h4){margin-top:2.25rem;margin-bottom:.75rem;scroll-margin-top:2rem}.prose h2{font-size:1.3rem}.prose h3{font-size:1.125rem}.prose h4{font-size:1rem}.heading-anchor{color:var(--color-text-3);font-family:var(--font-mono);font-size:inherit;opacity:0;margin-left:.4rem;text-decoration:none}.heading-anchor:before{content:"#"}:where(h2,h3,h4):hover .heading-anchor,.heading-anchor:focus-visible{opacity:1}.prose img{border-radius:var(--radius);height:auto;margin-inline:auto}.prose img.article-image--placeholder{background-image:var(--article-image-placeholder);background-position:50%;background-repeat:no-repeat;background-size:cover}.prose img.article-image--diagram{background:#f7f7f5;width:100%;padding:clamp(.65rem,2vw,1rem)}.prose img.article-image--diagram.article-image--portrait{width:var(--article-image-intrinsic-width);max-width:100%}.prose blockquote{border-left:2px solid var(--color-border);color:var(--color-text-2);padding-left:1rem}.prose blockquote>:first-child{margin-top:0}.prose blockquote>:last-child{margin-bottom:0}.prose :not(pre)>code{background:var(--color-inline);border-radius:.25rem;padding:.1rem .3rem;font-size:.875em}.prose pre{border:1px solid var(--color-border);border-radius:var(--radius);tab-size:2;max-width:100%;padding:.9rem 1rem;font-size:.85rem;line-height:1.6;overflow-x:auto}@media (prefers-color-scheme:dark){.astro-code,.astro-code span{background-color:var(--shiki-dark-bg)!important;color:var(--shiki-dark)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;text-decoration:var(--shiki-dark-text-decoration)!important}}.prose table{border-collapse:collapse;width:max-content;max-width:100%;font-size:.9rem;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--color-border);text-align:left;vertical-align:top;padding:.5rem .75rem}.prose th{background:var(--color-inline)}.prose hr{background:var(--color-border);border:0;height:1px;margin-block:2rem}.friend-list{gap:.25rem;display:grid}.friend-entry{grid-template-columns:auto 1fr auto;align-items:center;gap:.15rem 1rem;padding-block:.75rem;display:grid}.friend-entry__identity{display:contents}.friend-entry__avatar{border-radius:50%;grid-row:span 2;width:3rem;height:3rem}.friend-entry h2{font-size:1rem}.friend-entry__description{color:var(--color-text-3);grid-column:2;font-size:.875rem}.friend-entry__link{grid-area:1/3/span 2;font-size:.875rem}.friend-exchange{border-top:1px solid var(--color-border);color:var(--color-text-2);margin-top:2.5rem;padding-top:1.5rem;font-size:.9rem}.friend-exchange h2{color:var(--color-text);margin-bottom:.5rem;font-size:1rem}.privacy-highlight{margin-bottom:2rem;font-weight:500}.content-sections{gap:2rem;display:grid}.content-section h2{margin-bottom:.5rem;font-size:1.125rem}.content-section p{color:var(--color-text-2)}.not-found{gap:.75rem;display:grid}.not-found__code{color:var(--color-text-3);font-size:.875rem}.not-found h1{font-size:1.5rem}}@layer utilities{.visually-hidden{clip:rect(1px, 1px, 1px, 1px)!important;clip-path:inset(50%)!important;white-space:nowrap!important;width:1px!important;height:1px!important;position:absolute!important;overflow:hidden!important}}.giscus-container .giscus-frame{color-scheme:normal}@media (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}}.site-header{view-transition-name:site-header}.post-year li a,.article-header h1{view-transition-class:post-title}.draft-badge{view-transition-class:post-draft}.article-header h1{width:fit-content}::view-transition-group(.post-title),::view-transition-group(.post-draft){animation-duration:.3s;animation-timing-function:cubic-bezier(.2,0,0,1)}@media (width<=480px){.site-header{padding-block:1.5rem 2rem}.friend-entry{grid-template-columns:auto 1fr}.friend-entry__link{grid-area:auto/2}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}@media print{:root{--color-bg:#fff;--color-text:#000;--color-text-2:#333;--color-text-3:#555}.site-header,.site-footer,.comments-section,.external-link__icon,.skip-link{display:none!important}.prose a[href^=http]:after{content:" (" attr(href) ")";font-size:.8em}.prose pre,.prose table,.prose img{break-inside:avoid}}
