:root{--color-page:#fcfbf8;--color-panel:#ffffffc7;--color-heading:#1b1a1f;--color-body:#3f3a44;--color-muted:#7f778a;--color-line:#31283d1f;--color-accent:#ef5b9b;--color-accent-strong:#cc2f7a;--color-tag-bg:#ef5b9b1a;--color-callout-bg:#ef5b9b14;--font-display:"Arial Rounded MT Bold", "Nunito", ui-rounded, "SF Pro Rounded", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-serif:"Iowan Old Style", "Palatino Linotype", "Book Antiqua", "Source Han Serif SC", "Noto Serif CJK SC", Georgia, serif;--font-sans:"Avenir Next", "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-mono:"SFMono-Regular", "JetBrains Mono", "Fira Code", "Cascadia Code", "Source Code Pro", Consolas, monospace;color:var(--color-body);font-family:var(--font-sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:radial-gradient(circle at top,#fffffff5,#0000 42%),linear-gradient(#fffcf5 0%,#fcfbf8 36%,#fbfaf7 100%)}:root[data-theme=dark]{--color-page:#11151c;--color-panel:#141921c2;--color-heading:#f5f2ee;--color-body:#c1b8c6;--color-muted:#8f8797;--color-line:#e8e0ec1a;--color-accent:#f08cbc;--color-accent-strong:#ffc1dd;--color-tag-bg:#f08cbc24;--color-callout-bg:#f08cbc1a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{min-height:100%}body{background:radial-gradient(circle at top left, #ffd6e86b, transparent 24%), radial-gradient(circle at top right, #ffeccc66, transparent 18%), var(--color-page);min-height:100vh;margin:0}:root[data-theme=dark] body{background:radial-gradient(circle at top left, #66497847, transparent 24%), radial-gradient(circle at top right, #a45d822e, transparent 20%), radial-gradient(circle at bottom right, #3c578c33, transparent 22%), var(--color-page)}body:before{content:"";pointer-events:none;background-image:linear-gradient(#ffffff73,#ffffff73),radial-gradient(#1e182508 .7px,#0000 .7px);background-size:auto,18px 18px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#00000073,#0000 72%);mask-image:linear-gradient(#00000073,#0000 72%)}:root[data-theme=dark] body:before{background-image:linear-gradient(#0c0f1533,#0c0f1533),radial-gradient(#ffffff07 .7px,#0000 .7px)}a{color:inherit}button,input,textarea,select{font:inherit}img{max-width:100%}#root{min-height:100vh}::selection{background:#ef5b9b2e}.shell{width:min(100%,760px);margin:0 auto;padding:46px 32px 88px}.site-header{justify-content:space-between;align-items:flex-start;gap:24px;width:min(100%,680px);margin:0 auto 56px;display:flex}.wordmark,.post-title,.back-link,.signature-button{cursor:pointer;background:0 0;border:0;padding:0}.wordmark{font:900 clamp(1.35rem, 2vw, 1.85rem) / .98 var(--font-display);letter-spacing:-.06em;color:var(--color-accent);text-align:left}.signature{color:var(--color-heading);align-items:center;gap:10px;display:flex}.header-actions{align-items:center;gap:10px;display:flex}.signature-button{border-radius:999px}.theme-toggle{border:1px solid var(--color-line);background:#ffffff85;border-radius:999px;place-items:center;width:1.9rem;height:1.9rem;transition:transform .16s,border-color .16s,background-color .16s;display:grid;box-shadow:0 8px 22px #120f170f,inset 0 1px #fff9}.theme-toggle:hover,.theme-toggle:focus-visible{border-color:var(--color-accent);transform:translateY(-1px)}.theme-toggle-icon{width:1rem;height:1rem;display:block;position:relative}.theme-toggle-sun,.theme-toggle-moon{margin:auto;transition:opacity .18s,transform .18s;position:absolute;inset:0}.theme-toggle-sun{border:1.6px solid var(--color-accent);background:color-mix(in srgb, var(--color-accent) 14%, transparent);border-radius:999px;width:.52rem;height:.52rem}.theme-toggle-sun:before{content:"";background:linear-gradient(var(--color-accent), var(--color-accent)) center top / 1.4px .22rem no-repeat, linear-gradient(var(--color-accent), var(--color-accent)) center bottom / 1.4px .22rem no-repeat, linear-gradient(var(--color-accent), var(--color-accent)) left center / .22rem 1.4px no-repeat, linear-gradient(var(--color-accent), var(--color-accent)) right center / .22rem 1.4px no-repeat, linear-gradient(var(--color-accent), var(--color-accent)) 20% 20% / .18rem 1.4px no-repeat, linear-gradient(var(--color-accent), var(--color-accent)) 80% 20% / .18rem 1.4px no-repeat, linear-gradient(var(--color-accent), var(--color-accent)) 20% 80% / .18rem 1.4px no-repeat, linear-gradient(var(--color-accent), var(--color-accent)) 80% 80% / .18rem 1.4px no-repeat;border-radius:999px;position:absolute;inset:-.28rem;transform:rotate(45deg)}.theme-toggle-moon{background:var(--color-accent);border-radius:999px;width:.78rem;height:.78rem}.theme-toggle-moon:before{content:"";background:var(--color-panel);border-radius:999px;width:.68rem;height:.68rem;position:absolute;top:.04rem;left:.22rem}.theme-toggle-light .theme-toggle-sun{opacity:1;transform:scale(1)rotate(0)}.theme-toggle-light .theme-toggle-moon{opacity:0;transform:scale(.7)rotate(24deg)}.theme-toggle-dark .theme-toggle-sun{opacity:0;transform:scale(.7)rotate(-24deg)}.theme-toggle-dark .theme-toggle-moon{opacity:1;transform:scale(1)rotate(0)}.signature-by{font-family:var(--font-serif);font-size:1.45rem;font-style:italic}.signature-avatar{width:2.35rem;height:2.35rem;font:700 .92rem / 1 var(--font-display);color:#fff;background:linear-gradient(135deg,#1e1e24,#5563b3 48%,#ec5e9a 100%);border-radius:999px;place-items:center;display:grid;box-shadow:0 10px 25px #ed5a8e2e}.signature-button:hover .signature-avatar,.signature-button:focus-visible .signature-avatar{transform:translateY(-1px);box-shadow:0 12px 28px #ed5a8e3d}:root[data-theme=dark] .theme-toggle{background:#11151cb8;box-shadow:0 10px 22px #00000038,inset 0 1px #ffffff08}:root[data-theme=dark] .theme-toggle-moon{background:var(--color-accent)}:root[data-theme=dark] .theme-toggle-moon:before{background:#171b23}.page{animation:.42s rise}.intro{margin-bottom:48px}.eyebrow,.post-kicker,.toc-title{font:800 .68rem / 1.2 var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted);margin:0 0 10px}.intro h1,.article-header h1{color:var(--color-heading);font-family:var(--font-display);letter-spacing:-.08em;margin:0;font-size:clamp(1.25rem,2.6vw,2rem);line-height:1.04}.intro-copy{max-width:38rem;color:var(--color-body);margin:18px 0 0;font-size:1.06rem;line-height:1.72}.post-list{gap:42px;width:min(100%,680px);margin:0 auto;display:grid}.post-card{max-width:40rem}.post-title{color:var(--color-accent);font-family:var(--font-display);letter-spacing:-.07em;text-align:left;margin:0;font-size:clamp(1.15rem,2.4vw,1.75rem);font-weight:900;line-height:1.08;transition:color .18s,transform .18s;display:inline}.post-title:hover,.post-title:focus-visible,.wordmark:hover,.wordmark:focus-visible,.back-link:hover,.back-link:focus-visible{color:var(--color-accent-strong)}.post-title:hover,.post-title:focus-visible{transform:translate(4px)}.post-meta,.article-meta{color:var(--color-muted);flex-wrap:wrap;gap:12px;margin:10px 0 0;font-size:.78rem;display:flex}.post-tags{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.tag{background:var(--color-tag-bg);color:var(--color-heading);font:700 .66rem / 1 var(--font-display);letter-spacing:.01em;border-radius:999px;padding:.28rem .62rem}.page-article,.page-about{justify-content:center;display:flex}.about-page{width:100%}.about-hero h1{color:var(--color-heading);font-family:var(--font-display);letter-spacing:-.06em;margin:0;font-size:clamp(1.25rem,2.6vw,2rem);line-height:1.08}.about-copy{gap:14px;margin-top:18px;display:grid}.about-copy p,.about-card p{font-family:var(--font-serif);color:var(--color-heading);margin:0;font-size:1.02rem;line-height:1.86}.about-section{margin-top:40px}.about-cards{gap:14px;display:grid}.about-card{border:1px solid var(--color-line);color:inherit;background:#ffffff94;border-radius:18px;padding:16px 18px;text-decoration:none;transition:transform .18s,border-color .18s;display:block}.about-card:hover,.about-card:focus-visible,.about-link:hover,.about-link:focus-visible{border-color:#ef5b9b4d;transform:translateY(-1px)}.about-card strong{font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-heading);margin-bottom:8px;font-size:.98rem;display:block}.about-links{flex-wrap:wrap;gap:10px;display:flex}.about-link{border:1px solid var(--color-line);min-height:2.25rem;color:var(--color-heading);font:700 .76rem / 1 var(--font-display);background:#ffffff94;border-radius:999px;justify-content:center;align-items:center;padding:.3rem .8rem;text-decoration:none;transition:transform .18s,border-color .18s;display:inline-flex}.article{width:100%}.back-link{color:var(--color-muted);font:800 .7rem / 1.2 var(--font-display);letter-spacing:.06em;text-transform:uppercase;margin-bottom:28px}.article-header{width:100%;margin-bottom:34px}.article-layout{position:relative}.article-main{min-width:0}.toc-rail{z-index:20;position:fixed;top:50%;right:clamp(14px,2vw,28px);transform:translateY(-50%)}.toc{-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none;background:0 0;border:0;margin:0;padding:0;position:relative}.toc-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.toc-item a{color:#0000;background:#342c4033;border-radius:999px;width:8px;height:8px;font-size:0;text-decoration:none;transition:background-color .16s,transform .16s;display:block;position:relative;overflow:visible}.toc-item a:after{content:attr(data-label);white-space:nowrap;color:var(--color-heading);font:700 .68rem / 1 var(--font-display);letter-spacing:.01em;opacity:0;pointer-events:none;background:#ffffffeb;border:1px solid #31283d1f;border-radius:999px;padding:.35rem .55rem;transition:opacity .16s,transform .16s;position:absolute;top:50%;right:calc(100% + 12px);transform:translateY(-50%)translate(6px);box-shadow:0 10px 30px #14111b14}.toc-item-3{padding-left:0}.toc-item-3 a{width:6px;height:6px;margin-left:1px}.toc-title{display:none}.toc-item a:hover,.toc-item a:focus-visible{background:var(--color-accent);color:var(--color-accent-strong);transform:scale(1.15)}.toc-item a:hover:after,.toc-item a:focus-visible:after{opacity:1;transform:translateY(-50%)translate(0)}.article-markdown{color:var(--color-heading)}.article-markdown>*+*{margin-top:22px}.article-heading-l2,.article-markdown section[data-footnotes] h2{color:var(--color-heading);font-family:var(--font-display);letter-spacing:-.05em;margin:44px 0 0;scroll-margin-top:24px;font-size:clamp(1.55rem,2.5vw,2rem);line-height:1.08}.article-subheading{color:var(--color-heading);font-family:var(--font-display);letter-spacing:-.03em;scroll-margin-top:24px;font-size:clamp(1.15rem,1.7vw,1.42rem);line-height:1.2}.article-paragraph,.article-list li,.article-figure figcaption,.article-markdown section[data-footnotes] li{font-family:var(--font-serif);font-size:1.12rem;line-height:1.88}.article-list{padding-left:1.35em}.article-list li+li,.article-markdown section[data-footnotes] li+li{margin-top:.7em}.callout{border-left:4px solid var(--color-accent);background:var(--color-callout-bg);color:var(--color-heading);font-family:var(--font-serif);margin-left:0;padding:16px 18px;font-size:1rem;line-height:1.72}.code-block-shell{margin-top:24px;position:relative}.code-copy-button{z-index:1;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff1a;border-radius:12px;width:2rem;height:2rem;padding:0;transition:background-color .16s,border-color .16s,transform .16s;position:absolute;top:12px;right:12px}.code-copy-icon{width:.9rem;height:.9rem;margin:0 auto;display:block;position:relative}.code-copy-square{background:0 0;border:1.4px solid #f5f0f7db;border-radius:.18rem;width:.56rem;height:.56rem;position:absolute}.code-copy-square-back{opacity:.62;top:.02rem;left:.2rem}.code-copy-square-front{top:.22rem;left:.02rem}.code-copy-button:hover,.code-copy-button:focus-visible{background:#ffffff1a;border-color:#ffffff2e;transform:translateY(-1px)}.code-block{background:linear-gradient(#2e3647f5,#232a38fa);border:1px solid #1b1f2a1f;border-radius:22px;margin:0;padding:20px 18px 16px;overflow-x:auto;box-shadow:inset 0 1px #ffffff0a,0 18px 40px #13161e1f}.code-block code,.article-paragraph code,.article-list code,.article-markdown section[data-footnotes] code{font-family:var(--font-mono);font-size:.9em}.code-block code{color:#f5eef9;white-space:pre;line-height:1.65;display:block}.article-paragraph code,.article-list code,.article-markdown section[data-footnotes] code{background:#ef5b9b14;border-radius:.45rem;padding:.12rem .35rem}.article-figure{margin-inline:0}.article-figure img{border:1px solid var(--color-line);background:#fff;border-radius:22px;width:100%;display:block;box-shadow:0 28px 60px #120f1714}.article-figure figcaption{color:var(--color-muted);margin-top:10px;font-size:.88rem}.article-rule{border:0;border-top:1px solid var(--color-line)}.inline-link{color:var(--color-heading);text-underline-offset:.16em;text-decoration-color:#ef5b9b73;transition:color .16s,text-decoration-color .16s}.article-markdown .inline-link:hover,.article-markdown .inline-link:focus-visible{color:#1b1a1fd6;text-decoration-color:#ef5b9bb8}.article-markdown section[data-footnotes]{margin-top:56px;padding-top:8px}.article-markdown section[data-footnotes] ol{padding-left:1.3em}.article-markdown a[data-footnote-ref]{color:var(--color-accent-strong);margin-left:.18rem;font-size:.7em;text-decoration:none}@keyframes rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@media (width<=720px){.shell{padding:24px 18px 64px}.site-header{width:100%;margin-bottom:34px}.signature-by{font-size:1.2rem}.intro-copy,.article-paragraph,.article-list li,.article-markdown section[data-footnotes] li,.about-copy p,.about-card p{font-size:1rem;line-height:1.78}.post-list{gap:34px}.article-header{width:100%;margin-bottom:28px}.article-layout{display:block}.toc-rail{margin-bottom:24px;position:static;transform:none}.toc{border:1px solid var(--color-line);background:#ffffffc2;border-radius:18px;padding:14px 16px;box-shadow:0 18px 40px #19122412,inset 0 1px #ffffffa6}.toc-title{display:block}.toc-list{gap:10px}.toc-item a{width:auto;height:auto;color:var(--color-heading);background:0 0;border-radius:0;font-size:.8rem;transform:none}.toc-item a:after{display:none}.toc-item-3{padding-left:18px}.toc-item-3 a{width:auto;height:auto;margin-left:0}}
