:root{color-scheme:light;--bg:#fbfaf7;--bg-elevated:#fff;--bg-subtle:#f4f1ea;--text:#16181c;--text-muted:#5f646c;--text-faint:#8b9099;--border:#e6e1d8;--border-strong:#d4ccbf;--accent:#0f766e;--accent-hover:#0b5f59;--bg-rgb:251 250 247;--text-rgb:22 24 28;--accent-rgb:15 118 110;--accent-soft:rgb(var(--accent-rgb) / .1);--code-bg:#f4f1ea;--inline-code-bg:rgb(var(--text-rgb) / .06);--header-bg:var(--bg);--shadow-sm:0 0 0 1px #16181c08, 0 1px 2px #16181c0a;--shadow-md:0 1px 2px #16181c0a, 0 10px 30px -16px #16181c38;--radius-sm:6px;--radius:10px;--radius-lg:16px;--font-sans:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Microsoft YaHei", sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", "Noto Sans Mono CJK SC", monospace;--maxw:44rem;--maxw-wide:64rem;--header-h:3.75rem}[data-theme=dark]{color-scheme:dark;--bg:#0e0f11;--bg-elevated:#16181c;--bg-subtle:#191b1f;--text:#e8e6e1;--text-muted:#9ca1a9;--text-faint:#6f747d;--border:#26282d;--border-strong:#34373d;--accent:#5eead4;--accent-hover:#99f6e4;--bg-rgb:14 15 17;--text-rgb:232 230 225;--accent-rgb:94 234 212;--accent-soft:rgb(var(--accent-rgb) / .14);--code-bg:#14161a;--inline-code-bg:rgb(var(--text-rgb) / .09);--header-bg:var(--bg);--shadow-sm:0 0 0 1px #ffffff0a;--shadow-md:0 1px 2px #00000080, 0 12px 32px -18px #000c}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 1.5rem)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}body{background-color:var(--bg);min-height:100dvh;color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-feature-settings:"kern" 1, "liga" 1;flex-direction:column;font-size:1rem;line-height:1.75;transition:background-color .2s,color .2s;display:flex}img,picture,svg,video{max-width:100%;height:auto;display:block}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none}a{color:var(--accent);text-underline-offset:.2em;text-decoration:none;transition:color .15s}a:hover{color:var(--accent-hover)}::selection{background:var(--accent-soft);color:var(--text)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:1.5rem}.wrap-wide{max-width:var(--maxw-wide)}main{flex:1 0 auto;padding-block:3rem 5rem}.skip-link{background:var(--text);color:var(--bg);z-index:999;border-radius:0 0 var(--radius-sm) 0;padding:.5rem 1rem;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}.site-header{z-index:50;background:var(--header-bg);border-bottom:1px solid var(--border);position:sticky;top:0}.site-header__inner{height:var(--header-h);justify-content:space-between;align-items:center;gap:1.5rem;display:flex}.brand{font-family:var(--font-mono);letter-spacing:-.01em;color:var(--text);align-items:baseline;gap:.4rem;font-size:.95rem;font-weight:600;display:inline-flex}.brand:hover{color:var(--text)}.brand__mark{color:var(--accent)}.brand__caret{background:var(--accent);width:.55ch;height:1.05em;animation:1.2s steps(2,start) infinite blink;display:inline-block;transform:translateY(.16em)}@keyframes blink{to{visibility:hidden}}.nav{align-items:center;gap:.25rem;display:flex}.nav__link{border-radius:var(--radius-sm);color:var(--text-muted);padding:.35rem .6rem;font-size:.875rem;transition:color .15s,background-color .15s}.nav__link:hover{color:var(--text);background:var(--bg-subtle)}.nav__link[aria-current=page]{color:var(--accent);font-weight:500}.theme-toggle{border-radius:var(--radius-sm);width:2rem;height:2rem;color:var(--text-muted);border:1px solid var(--border);place-items:center;margin-left:.35rem;transition:color .15s,border-color .15s,background-color .15s;display:inline-grid}.theme-toggle:hover{color:var(--text);border-color:var(--border-strong);background:var(--bg-subtle)}.theme-toggle svg{width:1rem;height:1rem}[data-theme=dark] .theme-toggle .icon-sun,:root:not([data-theme=dark]) .theme-toggle .icon-moon{display:none}.site-footer{border-top:1px solid var(--border);color:var(--text-faint);padding-block:2rem;font-size:.8125rem}.site-footer__inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.site-footer a{color:var(--text-muted)}.site-footer a:hover{color:var(--accent)}.site-footer__legal{font-family:var(--font-mono);color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:.3rem;margin-top:.85rem;font-size:.75rem;display:flex}.site-footer__icp{color:var(--text-muted);white-space:nowrap;text-decoration:underline;text-decoration-color:rgb(var(--accent-rgb) / .35);text-underline-offset:.18em}.site-footer__icp:hover{color:var(--accent)}.hero{border-bottom:1px solid var(--border);padding-block:1.5rem 3.5rem}.hero__eyebrow{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);align-items:center;gap:.5rem;margin-bottom:1.25rem;font-size:.75rem;display:inline-flex}.hero__eyebrow:before{content:"";background:var(--border-strong);width:1.5rem;height:1px}.hero__title{letter-spacing:-.03em;text-wrap:balance;font-size:clamp(1.9rem,5.2vw,2.75rem);font-weight:650;line-height:1.2}.hero__title em{color:var(--accent);font-style:normal}.hero__lede{max-width:38rem;color:var(--text-muted);text-wrap:pretty;margin-top:1.25rem;font-size:1.0625rem}.hero__meta{font-family:var(--font-mono);color:var(--text-faint);flex-wrap:wrap;gap:.5rem 1.25rem;margin-top:1.75rem;font-size:.8125rem;display:flex}.hero__meta span:before{content:"→ ";color:var(--accent)}.section{margin-top:3.5rem}.section__head{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:1.5rem;display:flex}.section__title{font-size:.75rem;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-weight:600}.section__more{color:var(--text-faint);font-size:.8125rem}.section__more:hover{color:var(--accent)}.post-list{flex-direction:column;padding:0;list-style:none;display:flex}.post-item{border-top:1px solid var(--border)}.post-item:first-child{border-top:none}.post-item__link{color:inherit;grid-template-columns:5.5rem 1fr;gap:0 1.25rem;padding-block:1.125rem;transition:opacity .15s;display:grid}.post-item__link:hover{color:inherit}.post-item__link:hover .post-item__title{color:var(--accent)}.post-item__date{font-family:var(--font-mono);color:var(--text-faint);letter-spacing:-.01em;padding-top:.35rem;font-size:.75rem}.post-item__title{letter-spacing:-.012em;font-size:1.0625rem;font-weight:550;line-height:1.45;transition:color .15s}.post-item__desc{color:var(--text-muted);text-wrap:pretty;margin-top:.3rem;font-size:.875rem;line-height:1.6}.post-item__tags{flex-wrap:wrap;gap:.375rem;margin-top:.55rem;display:flex}.tag{font-family:var(--font-mono);color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:999px;padding:.1rem .45rem;font-size:.6875rem;line-height:1.6;transition:color .15s,border-color .15s;display:inline-block}a.tag:hover{color:var(--accent);border-color:var(--accent)}.tag-cloud{flex-wrap:wrap;gap:.5rem;padding:0;list-style:none;display:flex}.tag-cloud__item{border:1px solid var(--border);color:var(--text-muted);border-radius:999px;align-items:center;gap:.4rem;padding:.3rem .7rem;font-size:.875rem;transition:color .15s,border-color .15s,background-color .15s;display:inline-flex}.tag-cloud__item:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.tag-cloud__count{font-family:var(--font-mono);color:var(--text-faint);font-size:.6875rem}.article-header{border-bottom:1px solid var(--border);padding-bottom:1.75rem}.article-header__title{letter-spacing:-.025em;text-wrap:balance;font-size:clamp(1.6rem,4.4vw,2.125rem);font-weight:650;line-height:1.25}.article-header__desc{color:var(--text-muted);text-wrap:pretty;margin-top:.9rem;font-size:1.0625rem;line-height:1.65}.article-header__meta{font-family:var(--font-mono);color:var(--text-faint);flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-top:1.25rem;font-size:.75rem;display:flex}.article-header__meta time{color:var(--text-muted)}.prose{color:var(--text);margin-top:2.25rem;font-size:1.0625rem;line-height:1.8}.prose>*+*{margin-top:1.25em}.prose h2,.prose h3,.prose h4{letter-spacing:-.02em;scroll-margin-top:calc(var(--header-h) + 1.5rem);margin-top:2.5em;margin-bottom:.75em;font-weight:620;line-height:1.35}.prose h2{border-bottom:1px solid var(--border);padding-bottom:.4em;font-size:1.375rem}.prose h3{font-size:1.125rem}.prose h4{color:var(--text-muted);font-size:1rem}.prose p{text-wrap:pretty}.prose a{text-decoration:underline;text-decoration-color:rgb(var(--accent-rgb) / .35);text-decoration-thickness:1px}.prose a:hover{text-decoration-color:var(--accent)}.prose strong{color:var(--text);font-weight:620}.prose ul,.prose ol{padding-left:1.35em}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--text-faint)}.prose blockquote{border-left:2px solid var(--accent);color:var(--text-muted);padding-left:1.25rem;font-style:normal}.prose blockquote p+p{margin-top:.75em}.prose hr{border:none;border-top:1px solid var(--border);margin-block:2.5em}.prose img{border-radius:var(--radius);border:1px solid var(--border)}.prose figure{margin-inline:0}.prose figcaption{color:var(--text-faint);text-align:center;margin-top:.6rem;font-size:.8125rem}.prose :not(pre)>code{font-family:var(--font-mono);border-radius:var(--radius-sm);background:var(--inline-code-bg);border:1px solid var(--border);word-break:break-word;padding:.15em .4em;font-size:.875em}.prose pre{border-radius:var(--radius);border:1px solid var(--border);tab-size:2;-webkit-overflow-scrolling:touch;padding:1.1rem 1.25rem;font-size:.875rem;line-height:1.65;position:relative;overflow-x:auto}.prose pre code{font-family:var(--font-mono);font-size:inherit;background:0 0;border:none;padding:0}.astro-code,.astro-code span{color:var(--shiki-light);background-color:var(--shiki-light-bg);font-style:var(--shiki-light-font-style);font-weight:var(--shiki-light-font-weight);text-decoration:var(--shiki-light-text-decoration)}[data-theme=dark] .astro-code,[data-theme=dark] .astro-code span{color:var(--shiki-dark);background-color:var(--shiki-dark-bg);font-style:var(--shiki-dark-font-style);font-weight:var(--shiki-dark-font-weight);text-decoration:var(--shiki-dark-text-decoration)}.prose pre.astro-code{background-color:var(--shiki-light-bg)}[data-theme=dark] .prose pre.astro-code{background-color:var(--shiki-dark-bg)}.code-copy{font-family:var(--font-mono);color:var(--text-faint);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);opacity:0;padding:.25rem .5rem;font-size:.6875rem;transition:opacity .15s,color .15s;position:absolute;top:.5rem;right:.5rem}pre:hover .code-copy,.code-copy:focus-visible{opacity:1}.code-copy:hover,.code-copy[data-copied=true]{color:var(--accent)}.prose table{border-collapse:collapse;width:100%;font-size:.9375rem;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--border);text-align:left;padding:.55rem .75rem}.prose th{background:var(--bg-subtle);font-size:.875rem;font-weight:600}.toc{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-subtle);margin-top:2rem;padding:1rem 1.25rem;font-size:.875rem}.toc__title{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);margin-bottom:.6rem;font-size:.6875rem}.toc ul{flex-direction:column;gap:.3rem;padding:0;list-style:none;display:flex}.toc a{color:var(--text-muted)}.toc a:hover{color:var(--accent)}.toc__item--depth-3{padding-left:1rem}.note{border-top:1px solid var(--border);scroll-margin-top:calc(var(--header-h) + 1rem);padding-block:1.5rem}.note:first-of-type{border-top:none}.note__meta{font-family:var(--font-mono);color:var(--text-faint);flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:.75rem;font-size:.75rem;display:flex}.note__anchor{color:var(--text-muted)}.note__anchor:hover{color:var(--accent)}.note__body{color:var(--text-muted);font-size:1rem;line-height:1.75}.note__body>*+*{margin-top:.75em}.note__body :not(pre)>code{font-family:var(--font-mono);border-radius:var(--radius-sm);background:var(--inline-code-bg);border:1px solid var(--border);padding:.1em .35em;font-size:.875em}.note__body h2,.note__body h3{font-size:.8125rem;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin-top:1.75em;font-weight:600}.note__body ul,.note__body ol{padding-left:1.35em}.note__body li+li{margin-top:.35em}.search-form{margin-top:2rem}.search-input{background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius);width:100%;padding:.75rem 1rem;font-size:1rem;transition:border-color .15s,box-shadow .15s}.search-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.search-results{margin-top:2rem;padding:0;list-style:none}.search-result{border-bottom:1px solid var(--border);padding-block:1rem}.search-result__title{font-size:1rem;font-weight:550}.search-result__excerpt{color:var(--text-muted);margin-top:.35rem;font-size:.875rem;line-height:1.6}.search-result__excerpt mark{background:var(--accent-soft);color:var(--accent);border-radius:2px;padding:0 .1em}.search-empty{color:var(--text-faint);margin-top:2rem;font-size:.9375rem}.page-title{letter-spacing:-.025em;font-size:clamp(1.6rem,4.4vw,2.125rem);font-weight:650;line-height:1.25}.page-lede{color:var(--text-muted);text-wrap:pretty;margin-top:.9rem;font-size:1.0625rem}.back-link{font-family:var(--font-mono);color:var(--text-faint);margin-top:3rem;font-size:.8125rem;display:inline-block}.back-link:hover{color:var(--accent)}.email-link{font:inherit;color:var(--accent);cursor:pointer;border-bottom:1px dashed rgb(var(--accent-rgb) / .45);padding:0;transition:color .15s,border-color .15s}.email-link:hover{color:var(--accent-hover);border-bottom-color:currentColor}.year-group{margin-top:2.5rem}.year-group__label{font-family:var(--font-mono);letter-spacing:.08em;color:var(--text-faint);margin-bottom:.5rem;font-size:.75rem}@media (width<=40rem){.post-item__link{grid-template-columns:1fr;gap:.15rem}.post-item__date{padding-top:0}.hero{padding-block:.5rem 2.5rem}.nav__link{padding:.35rem .45rem;font-size:.8125rem}.nav--default .nav__link:nth-child(2),.nav--default .nav__link:nth-child(3){display:none}}
