:root{--orange:#ff9d45;--orange-d:#b8510e;--orange-l:#fff5ec;--amber:#f2bc55;--amber-d:#8a6210;--amber-l:#fdf8ea;--clay:#dd7350;--clay-d:#9c3f22;--clay-l:#fdf1ec;--bg:#fff;--bg-soft:#f8f4f0;--card:#fff;--text-1:#1c1917;--text-2:#57534e;--text-3:#78716c;--line:#f0ece8;--surface-glass:#ffffffbd;--surface-veil:#ffffffe0;--surface-sunk:#1c191752;--code-bg:#f5efe8;--r-lg:20px;--r-md:15px;--r-sm:10px;--r-xs:8px;--r-pill:999px;--shadow-rest:0 1px 2px #29221c0a, 0 2px 8px #29221c0a;--shadow-hover:0 4px 14px #29221c0f, 0 12px 32px #29221c0f;--shadow-pop:0 8px 24px #29221c14, 0 24px 64px #29221c1a;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-8:32px;--s-10:40px;--s-12:48px;--s-16:64px;--s-20:80px;--gap-card:14px;--gap-in-sm:12px;--gap-in-lg:22px;--gap-rel:14px;--gap-sec:40px;--gap-big:72px;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--fs-hero:clamp(1.6rem, 3.2vw, 2.05rem);--fs-h2:1.35rem;--fs-h3:1.2rem;--fs-h4:1.02rem;--fs-body:.94rem;--fs-sm:.86rem;--fs-meta:.71rem;--fs-label:.65rem;--lh-body:1.8;--lh-heading:1.4;--ls-hero:-.03em;--ls-heading:-.018em;--ls-mono:.04em;--ease:cubic-bezier(.2, .7, .3, 1);--t-color:.2s ease;--t-move:.28s cubic-bezier(.2, .7, .3, 1);--t-ring:.5s cubic-bezier(.2, .7, .3, 1);--page-max:1180px;--sidebar-w:17.5rem;--navbar-h:4.25rem;--gutter:16px;color-scheme:light}html.dark{--orange-l:#33200f;--amber-l:#2e2612;--clay-l:#301a14;--bg:#141110;--bg-soft:#1a1614;--card:#1c1817;--text-1:#f2ede9;--text-2:#b5aca6;--text-3:#8a817b;--line:#2a2422;--surface-glass:#141110bd;--surface-veil:#141110e0;--surface-sunk:#0000008f;--code-bg:#221b18;--shadow-rest:0 1px 2px #0000004d, 0 2px 10px #00000042;--shadow-hover:0 6px 18px #00000061, 0 16px 40px #00000057;--shadow-pop:0 10px 30px #00000075, 0 28px 72px #00000070;color-scheme:dark}[data-accent=orange]{--a:var(--orange);--a-d:var(--orange-d);--a-l:var(--orange-l)}[data-accent=amber]{--a:var(--amber);--a-d:var(--amber-d);--a-l:var(--amber-l)}[data-accent=clay]{--a:var(--clay);--a-d:var(--clay-d);--a-l:var(--clay-l)}:root{--a:var(--orange);--a-d:var(--orange-d);--a-l:var(--orange-l);--brand:var(--orange-d);--ring:var(--orange)}@media (width<=1024px){:root{--sidebar-w:0px}}@media (width<=768px){:root{--r-lg:16px;--r-md:14px;--r-sm:10px;--shadow-rest:none;--shadow-hover:none;--gutter:12px;--navbar-h:3.75rem;--gap-sec:32px;--gap-big:48px}}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--navbar-h) + var(--s-4))}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}body{background-color:var(--bg);min-height:100vh;color:var(--text-2);font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;transition:background-color var(--t-color), color var(--t-color);font-weight:400;overflow-x:hidden}html.theme-switching,html.theme-switching *,html.theme-switching :before,html.theme-switching :after{transition:none!important}img,svg,video,canvas{max-width:100%;display:block}img{height:auto}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0}a{color:inherit;text-decoration:none}ul,ol{padding:0;list-style:none}:focus-visible{outline:2px solid var(--clay-d);outline-offset:2px;border-radius:var(--r-xs)}::selection{background:var(--orange-l);color:var(--orange-d)}html.dark ::selection{background:var(--orange-l);color:var(--orange)}::-webkit-scrollbar{width:7px;height:7px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--line);border-radius:var(--r-pill)}::-webkit-scrollbar-thumb:hover{background:var(--text-3)}h1,h2,h3,h4,h5,h6{color:var(--text-1);font-weight:700;line-height:var(--lh-heading);letter-spacing:var(--ls-heading);text-wrap:balance}h1{letter-spacing:var(--ls-hero)}h2{letter-spacing:-.022em}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{top:var(--s-2);left:var(--s-2);z-index:200;padding:var(--s-2) var(--s-4);background:var(--card);color:var(--text-1);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow-hover);transition:transform var(--t-move);position:fixed;transform:translateY(-200%)}.skip-link:focus-visible{transform:translateY(0)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-rest);transition:box-shadow var(--t-move), border-color var(--t-color), transform var(--t-move), background-color var(--t-color);position:relative}.card-pad{padding:var(--gap-in-lg)}.card-hover:hover{box-shadow:var(--shadow-hover);border-color:color-mix(in srgb, var(--a-d) 26%, var(--line));transform:translateY(-4px)}.card-hover:focus-within{border-color:color-mix(in srgb, var(--a-d) 26%, var(--line));box-shadow:var(--shadow-hover)}.pill{border-radius:var(--r-pill);font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:var(--ls-mono);white-space:nowrap;align-items:center;gap:6px;padding:3px 10px;font-weight:700;line-height:1.6;display:inline-flex}.pill-accent{background:var(--a-l);color:var(--a-d)}.pill-quiet{background:var(--bg-soft);color:var(--text-3)}.pill-link:hover{background:var(--a-l);color:var(--a-d);transform:translateY(-1px)}.btn{justify-content:center;align-items:center;gap:var(--s-2);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--card);color:var(--text-2);font-size:var(--fs-meta);letter-spacing:.02em;transition:color var(--t-color), border-color var(--t-color), background-color var(--t-color), transform var(--t-move);padding:8px 16px;font-weight:700;display:inline-flex}.btn:hover{color:var(--a-d);border-color:color-mix(in srgb, var(--a-d) 30%, var(--line));background:var(--a-l);transform:translateY(-2px)}.btn:active{transform:translateY(0)}.btn-solid{background:var(--text-1);border-color:var(--text-1);color:var(--bg)}.btn-solid:hover{background:var(--a-d);border-color:var(--a-d);color:#fff}.icon-btn{border-radius:var(--r-sm);width:34px;height:34px;color:var(--text-2);transition:color var(--t-color), background-color var(--t-color), transform var(--t-move);justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{color:var(--text-1);background:var(--bg-soft)}.icon-btn:active{transform:scale(.94)}.dots{flex:none;align-items:center;gap:4px;display:inline-flex}.dots i{border-radius:50%;width:7px;height:7px;display:block}.dots i:first-child{background:var(--amber)}.dots i:nth-child(2){background:var(--orange)}.dots i:nth-child(3){background:var(--clay)}.dots-sm i{width:5px;height:5px}.meta{font-family:var(--font-mono);font-size:var(--fs-meta);letter-spacing:var(--ls-mono);color:var(--text-3);white-space:nowrap;align-items:center;gap:5px;font-weight:400;display:inline-flex}.meta-sep{color:var(--line);user-select:none}.section-head{align-items:center;gap:var(--s-3);margin-bottom:var(--s-4);display:flex}.section-head h2{font-size:var(--fs-h3);letter-spacing:-.02em;font-weight:700}.section-head .count{font-family:var(--font-mono);font-size:var(--fs-meta);letter-spacing:var(--ls-mono);color:var(--text-3)}.link-quiet{transition:color var(--t-color)}.link-quiet:hover{color:var(--a-d)}.arrow-slide{align-items:center;gap:6px;display:inline-flex}.arrow-slide svg{opacity:0;transition:opacity var(--t-move), transform var(--t-move), color var(--t-color);transform:translate(-8px)}.arrow-slide:hover svg,.card-hover:hover .arrow-slide svg{opacity:1;color:var(--a-d);transform:translate(0)}.container{width:100%;max-width:var(--page-max);padding-inline:var(--gutter);margin-inline:auto}.prose{color:var(--text-2);font-size:var(--fs-body);line-height:var(--lh-body);overflow-wrap:break-word}.prose>*+*{margin-top:var(--s-5)}.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{margin-top:var(--s-12);margin-bottom:var(--s-4);color:var(--text-1);line-height:var(--lh-heading);scroll-margin-top:calc(var(--navbar-h) + var(--s-4));position:relative}.prose h2{padding-bottom:var(--s-3);font-size:var(--fs-h2);border-bottom:1px solid var(--line)}.prose h2:before{content:"";background:var(--orange);width:6px;height:6px;box-shadow:0 0 0 0 var(--amber), 0 0 0 0 var(--clay);border-radius:50%;position:absolute;top:.62em;left:-18px}@media (width<=1024px){.prose h2:before{display:none}}.prose h3{font-size:var(--fs-h3)}.prose h4{font-size:var(--fs-h4)}.prose h5,.prose h6{font-size:var(--fs-body);color:var(--text-2)}.prose .heading-anchor{width:.85em;color:var(--text-3);opacity:0;transition:opacity var(--t-move), transform var(--t-move), color var(--t-color);display:block;position:absolute;top:50%;left:-1.05em;transform:translate(-6px,-50%)}.prose .heading-anchor:before{content:"#";font-family:var(--font-mono);font-size:.72em;font-weight:400}.prose h2:hover .heading-anchor,.prose h3:hover .heading-anchor,.prose h4:hover .heading-anchor,.prose .heading-anchor:focus-visible{opacity:1;color:var(--a-d);transform:translateY(-50%)}@media (width<=768px){.prose .heading-anchor{display:none}}.prose p{margin-top:var(--s-5)}.prose strong{color:var(--text-1);font-weight:700}.prose em{font-style:italic}.prose del{color:var(--text-3)}.prose mark{background:var(--orange-l);color:var(--orange-d);border-radius:5px;padding:1px 5px}html.dark .prose mark{color:var(--orange)}.prose a:not(.heading-anchor){color:var(--text-1);text-decoration:underline;text-decoration-color:color-mix(in srgb, var(--a) 60%, transparent);text-underline-offset:3px;transition:color var(--t-color), text-decoration-color var(--t-color), text-decoration-thickness var(--t-move);font-weight:500;text-decoration-thickness:1.5px}.prose a:not(.heading-anchor):hover{color:var(--a-d);text-decoration-color:var(--a-d);text-decoration-thickness:2px}.prose ul,.prose ol{margin-top:var(--s-4);padding-left:1.4em}.prose ul{list-style:none}.prose ul>li{position:relative}.prose ul>li:before{content:"";background:var(--a);border-radius:50%;width:5px;height:5px;position:absolute;top:.72em;left:-1.1em}.prose ul>li:nth-child(3n+1):before{background:var(--orange)}.prose ul>li:nth-child(3n+2):before{background:var(--amber)}.prose ul>li:nth-child(3n+3):before{background:var(--clay)}.prose ol{list-style:decimal}.prose ol>li::marker{color:var(--text-3);font-family:var(--font-mono);font-size:.85em}.prose li+li,.prose li>ul,.prose li>ol{margin-top:var(--s-2)}.prose li.task-list-item{align-items:flex-start;gap:var(--s-2);display:flex}.prose li.task-list-item:before{display:none}.prose input[type=checkbox]{width:15px;height:15px;accent-color:var(--amber-d);flex:none;margin-top:.42em}.prose blockquote{padding:var(--s-3) var(--s-5) var(--s-3) var(--s-6);border-radius:var(--r-md);background:var(--bg-soft);color:var(--text-2);position:relative}.prose blockquote:before{content:"";border-radius:var(--r-pill);background:var(--orange);width:3px;position:absolute;top:12px;bottom:12px;left:0}.prose blockquote>*+*{margin-top:var(--s-3)}.prose blockquote p:first-child{margin-top:0}.prose :not(pre)>code{background:var(--code-bg);border:1px solid var(--line);color:var(--orange-d);font-family:var(--font-mono);letter-spacing:var(--ls-mono);overflow-wrap:break-word;border-radius:6px;padding:.15em .42em;font-size:.85em}html.dark .prose :not(pre)>code{color:var(--orange)}.prose .code-block{margin-top:var(--s-5);border:1px solid var(--line);border-radius:var(--r-md);background:var(--code-bg);overflow:hidden}.prose .code-head{align-items:center;gap:var(--s-3);padding:9px var(--s-4);border-bottom:1px solid var(--line);background:var(--card);display:flex}.prose .code-head .lang{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--text-3)}.prose .code-head .spacer{flex:1}.prose .code-copy{border-radius:var(--r-pill);border:1px solid var(--line);background:var(--bg-soft);color:var(--text-3);font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:var(--ls-mono);transition:color var(--t-color), background-color var(--t-color), border-color var(--t-color);align-items:center;gap:5px;padding:3px 9px;display:inline-flex}.prose .code-copy:hover,.prose .code-copy[data-copied=true]{color:var(--amber-d);border-color:color-mix(in srgb, var(--amber-d) 30%, var(--line));background:var(--amber-l)}.prose pre{padding:var(--s-4) var(--s-5);font-family:var(--font-mono);letter-spacing:.01em;tab-size:2;margin:0;font-size:.83rem;line-height:1.7;overflow-x:auto}.prose pre code{min-width:max-content;color:inherit;background:0 0;border:0;padding:0;font-family:inherit;display:block}.prose .astro-code{background-color:var(--code-bg)!important}html.dark .prose .astro-code,html.dark .prose .astro-code span{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 .astro-code,.prose .astro-code span{color:var(--shiki-light,inherit)}.prose .table-wrap{margin-top:var(--s-5);border:1px solid var(--line);border-radius:var(--r-md);overflow:auto hidden}.prose table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.prose thead{background:var(--bg-soft)}.prose th{padding:10px var(--s-4);color:var(--text-1);font-weight:700;font-size:var(--fs-meta);letter-spacing:.03em;text-align:left;white-space:nowrap;border-bottom:1px solid var(--line)}.prose td{padding:10px var(--s-4);border-bottom:1px solid var(--line);vertical-align:top}.prose tbody tr:last-child td{border-bottom:0}.prose tbody tr{transition:background-color var(--t-color)}.prose tbody tr:hover{background:var(--bg-soft)}.prose img{border-radius:var(--r-md);border:1px solid var(--line);box-shadow:var(--shadow-rest);margin-inline:auto}.prose img[data-zoomable]{cursor:zoom-in;transition:transform var(--t-move), box-shadow var(--t-move)}.prose img[data-zoomable]:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}.prose p:has(>img){margin-top:var(--s-6)}.prose p:has(>img)+p>em:only-child{margin-top:var(--s-2);text-align:center;color:var(--text-3);font-size:var(--fs-meta);font-style:normal;font-family:var(--font-mono);letter-spacing:var(--ls-mono);display:block}.prose hr{height:1px;margin:var(--s-10) 0;background:var(--line);border:0}.prose .callout{margin-top:var(--s-5);padding:var(--s-4) var(--s-5);border-radius:var(--r-md);border:1px solid color-mix(in srgb, var(--a) 45%, var(--line));background:var(--a-l)}.prose blockquote.callout{background:var(--a-l);color:var(--text-2)}.prose blockquote.callout:before{display:none}.prose .callout>*+*{margin-top:var(--s-3)}.prose .callout-title{align-items:center;gap:var(--s-2);color:var(--a-d);font-size:var(--fs-meta);letter-spacing:.04em;text-transform:uppercase;margin:0;font-weight:700;display:flex}.prose .callout-title:before{content:"";background:var(--a-d);border-radius:50%;flex:none;width:7px;height:7px}.prose .callout p:not(.callout-title),.prose .callout li{color:var(--text-2);font-size:var(--fs-sm);line-height:1.8}.prose .callout-note{--a:var(--amber);--a-d:var(--amber-d);--a-l:var(--amber-l)}.prose .callout-tip,.prose .callout-important{--a:var(--orange);--a-d:var(--orange-d);--a-l:var(--orange-l)}.prose .callout-warning,.prose .callout-caution{--a:var(--clay);--a-d:var(--clay-d);--a-l:var(--clay-l)}.prose .footnotes{margin-top:var(--s-12);padding-top:var(--s-6);border-top:1px solid var(--line);font-size:var(--fs-meta);color:var(--text-3)}.prose .footnotes h2{font-size:var(--fs-h4);border-bottom:0;padding-bottom:0}.prose .footnotes h2:before{display:none}.prose [data-footnote-ref]{font-family:var(--font-mono);font-size:.75em}.prose kbd{border:1px solid var(--line);background:var(--card);min-width:1.6em;color:var(--text-2);font-family:var(--font-mono);text-align:center;border-bottom-width:2px;border-radius:6px;padding:1px 6px;font-size:.78em;display:inline-block}.prose details{margin-top:var(--s-5);padding:var(--s-3) var(--s-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg-soft)}.prose summary{cursor:pointer;color:var(--text-1);font-weight:700;font-size:var(--fs-sm);list-style:none}.prose summary::-webkit-details-marker{display:none}.prose summary:before{content:"▸";color:var(--clay-d);transition:transform var(--t-move);margin-right:8px;display:inline-block}.prose details[open] summary:before{transform:rotate(90deg)}.prose details[open]>*+*{margin-top:var(--s-3)}@media (width<=768px){.prose{font-size:.92rem;line-height:1.78}.prose h2{margin-top:var(--s-10);font-size:1.2rem}.prose pre{padding:var(--s-3) var(--s-4);font-size:.78rem}.prose blockquote{padding:var(--s-3) var(--s-4) var(--s-3) var(--s-5)}}.site{--top-offset:var(--navbar-h);flex-direction:column;min-height:100vh;display:flex}body[data-banner=true] .site{--top-offset:0px}.site-main{padding-top:var(--top-offset);flex:auto}.main-grid{gap:var(--gap-card);padding-block:var(--gap-sec) var(--gap-big);grid-template-columns:minmax(0,1fr);align-items:start;display:grid}.main-col{gap:var(--gap-card);flex-direction:column;min-width:0;display:flex}@media (width>=1024px){.main-grid{grid-template-columns:minmax(0, 1fr) var(--sidebar-w)}}.sidebar{min-width:0;display:none}@media (width>=1024px){.sidebar{gap:var(--gap-card);top:calc(var(--navbar-h) + var(--s-4));max-height:calc(100vh - var(--navbar-h) - var(--s-8));overscroll-behavior:contain;scrollbar-width:none;padding-bottom:var(--s-2);flex-direction:column;display:flex;position:sticky;overflow-y:auto}.sidebar::-webkit-scrollbar{display:none}}.sidebar-stack{gap:var(--gap-card);flex-direction:column;display:flex}.article-shell{padding:var(--gap-in-lg) var(--gap-in-lg) var(--s-10)}@media (width<=768px){.article-shell{padding:var(--s-5) var(--s-4) var(--s-8)}}@media (width<=480px){.article-shell{border-inline:0;border-radius:0}}html.js [data-reveal]{transition:opacity .42s var(--ease), transform .42s var(--ease);transition-delay:var(--reveal-delay,0s)}html.js [data-reveal=full]{opacity:0;transform:translateY(12px)}html.js [data-reveal=soft]{transform:translateY(10px)}html.js [data-reveal][data-revealed=true]{opacity:1;transform:none}html.js img[data-fade]{opacity:0;transition:opacity .45s var(--ease)}html.js img[data-fade][data-loaded=true]{opacity:1}html.js .site-main{animation:page-enter .38s var(--ease) both}@keyframes page-enter{0%{opacity:0;transform:translateY(6px)}}.dots i{transition:transform var(--t-move)}.card:hover .dots i,.friend:hover .dots i,.cover-art:hover .dots i{transform:scale(1.25)}.card:hover .dots i:nth-child(2),.friend:hover .dots i:nth-child(2),.cover-art:hover .dots i:nth-child(2){transition-delay:40ms}.card:hover .dots i:nth-child(3),.friend:hover .dots i:nth-child(3),.cover-art:hover .dots i:nth-child(3){transition-delay:80ms}.pill-link{transition:background-color var(--t-color), color var(--t-color), transform var(--t-move), box-shadow var(--t-move)}.pill-link:hover{box-shadow:0 2px 8px color-mix(in srgb, var(--a-d) 14%, transparent)}@media (prefers-reduced-motion:reduce){html.js [data-reveal],html.js [data-reveal=full],html.js [data-reveal=soft]{opacity:1;transition:none;transform:none}html.js img[data-fade]{opacity:1;transition:none}html.js .site-main{animation:none}.card:hover .dots i,.friend:hover .dots i,.cover-art:hover .dots i{transform:none}}
