@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/46a9e2f250689b4a-s.0-dom-5bn10r2.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/76b70a1dbe058eb5-s.1y4-pdgsjb-pw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2fb76073e23fd9e4-s.3lvt2whj97whp.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/6131cbbf5549afa2-s.2uwcyprjm3xu3.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/45462fd7b7c12654-s.0k62hbripvv8p.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/ba63f6a0e436df8e-s.3-6t-g6q0vh0a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/07c7676b89ed2778-s.p.2bn3s6zvc0dyp.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Fallback;src:local(Arial);ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.0%;size-adjust:107.12%}.-T-KAq_className{font-family:Inter,Inter Fallback;font-style:normal}.-T-KAq_variable{--font-inter:"Inter", "Inter Fallback"}
*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#050505;--ink:#ededed;--text:#b5b5b5;--deep:#d6d6d6;--meta:#777;--line:#2e2e2e;--grid-size:120px;--page-top:128px;--card-border:#2a2a2a;--card-border-hi:#6a6a6a;--accent:#8ab4f8;--cat-life:#7ee0a8;--cat-note:#f0c674;--cat-read:#d7a7ff;--mono:"SF Mono", "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;--sans:var(--font-inter), "PingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--serif:"Songti SC", "STSong", "SimSun", "Noto Serif SC", Georgia, "Times New Roman", serif;--card-bg:#0a0a0ae0;--scroll-track:transparent;--scroll-thumb-idle:#7878781f;--scroll-thumb:#78787842;--scroll-thumb-hover:#78787866}html{scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--scroll-thumb) transparent}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--scroll-track)}::-webkit-scrollbar-thumb{background:var(--scroll-thumb-idle);border-radius:9999px;transition:background-color .3s}html:hover::-webkit-scrollbar-thumb{background:var(--scroll-thumb)}::-webkit-scrollbar-thumb:hover{background:var(--scroll-thumb-hover)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}::-webkit-scrollbar-thumb{transition:none}}
body{background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;flex-direction:column;min-height:100vh;font-size:16px;line-height:1.78;display:flex}::selection{color:#fff;background:#ededed52}.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{z-index:200;background:var(--ink);color:var(--bg);font-family:var(--sans);border-radius:0 0 6px 6px;padding:8px 16px;font-size:14px;font-weight:600;text-decoration:none;position:absolute;top:-100%;left:16px}.skip-link:focus{top:0}main{z-index:2;position:relative}
.nav{z-index:100;align-items:center;gap:26px;padding:8px;display:flex;position:absolute;top:28px;right:28px}.nav__link{font-family:var(--sans);letter-spacing:0;color:var(--text);opacity:.6;align-items:center;padding:6px 2px;font-size:1rem;font-weight:400;text-decoration:none;transition:opacity .2s;display:inline-flex}.nav__link:hover{opacity:1}.nav__glyph{justify-content:center;align-items:center;display:none}.nav__icon{color:var(--text);opacity:.6;justify-content:center;align-items:center;padding:6px 2px;transition:opacity .2s;display:inline-flex}.nav__icon:hover{opacity:1}.nav__icon svg,.nav__glyph svg{fill:currentColor;width:19px;height:19px;display:block}.brand{z-index:100;color:var(--ink);align-items:center;padding:8px;text-decoration:none;transition:color .25s;display:flex;position:absolute;top:28px;left:28px}.brand__mark{width:auto;height:44px;display:block}.brand__mark path{fill:none;stroke:currentColor;stroke-width:8px;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:1;animation:2.5s cubic-bezier(.4,0,.2,1) both brandDraw}@keyframes brandDraw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}.brand:hover{color:var(--accent)}@media (prefers-reduced-motion:reduce){.brand__mark path{stroke-dashoffset:0;animation:none}}
.intro{z-index:2;min-height:100dvh;padding:var(--page-top) 64px 96px;position:relative}.intro:before{content:"";z-index:-1;background:radial-gradient(circle, var(--line) 1px, transparent 1px);opacity:.8;pointer-events:none;background-position:50%;background-size:12px 12px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(50% 45%,#000 0%,#0000 70%);mask-image:radial-gradient(50% 45%,#000 0%,#0000 70%)}.intro__inner{text-align:left;opacity:0;width:100%;max-width:760px;margin:0 auto;animation:.7s .2s both fadeUp}.intro__hi{font-family:var(--sans);color:var(--deep);letter-spacing:0;margin:0;font-size:1.05rem;font-weight:600}.intro__wave{font-weight:400}.intro__text{font-family:var(--sans);color:var(--text);letter-spacing:0;margin:22px 0 0;font-size:1.05rem;font-weight:400}.intro__link{color:var(--ink);font-weight:500;text-decoration:none;transition:color .2s}.intro__link:hover{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}@keyframes fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.intro__inner{opacity:1;animation:none}}.cards__inner{width:100%;max-width:920px}
.archive-page-header{margin-bottom:30px}.archive-page-header__title{font-family:var(--sans);color:var(--ink);letter-spacing:-.01em;margin:0;font-size:2.4rem;font-weight:600;line-height:1.15}.archive-page-header__desc{font-family:var(--sans);color:var(--meta);margin:6px 0 0;font-size:.95rem;font-weight:500}.blog{z-index:2;padding:var(--page-top) 24px 100px;position:relative}.blog__inner{width:100%;max-width:760px;margin:0 auto}.blog .archive-page-header{margin-bottom:64px}.ygroup{padding-top:72px;position:relative}.ygroup+.ygroup{margin-top:84px}.ygroup__watermark{z-index:0;pointer-events:none;-webkit-user-select:none;user-select:none;width:330px;height:auto;position:absolute;top:-30px;left:-12px;overflow:visible}.ygroup__watermark text{font-family:var(--sans);letter-spacing:-4px;fill:#0000;stroke:#aaa;stroke-opacity:.12;stroke-width:1.6px;stroke-linejoin:round;paint-order:stroke;font-size:128px;font-weight:700}.ygroup__list{z-index:1;margin:0;padding:0;list-style:none;position:relative}.ygroup__item+.ygroup__item{margin-top:34px}.ygroup__link{color:var(--text);opacity:.6;text-decoration:none;transition:opacity .2s;display:block}.ygroup__link:hover{opacity:1}.ygroup__title{font-family:var(--sans);color:inherit;font-size:1.18rem;font-weight:500;line-height:1.4}.ygroup__meta{font-family:var(--sans);color:inherit;opacity:.55;letter-spacing:.01em;white-space:nowrap;margin-left:14px;font-size:.82rem;font-weight:500}.ygroup__sep{opacity:.6;margin:0 .55em}@media (max-width:680px){.blog{padding:var(--page-top) 20px 80px}.blog .archive-page-header{margin-bottom:44px}.ygroup+.ygroup{margin-top:64px}.ygroup{padding-top:48px}.ygroup__watermark{width:220px;top:-20px;left:-8px}.ygroup__item+.ygroup__item{margin-top:28px}.ygroup__title{font-size:1.08rem}}@media (max-width:480px){.ygroup{padding-top:36px}.ygroup__watermark{width:170px;top:-16px;left:-6px}.ygroup__title{font-size:1rem}}
.post-wrap{z-index:2;padding:var(--page-top) 24px 120px;position:relative}.post{width:100%;max-width:720px;margin:0 auto}.post__back{font-family:var(--sans);color:var(--text);opacity:.5;margin-top:72px;font-size:.9rem;text-decoration:none;transition:opacity .2s;display:inline-block}.post__back:hover{opacity:1}.post__title{font-family:var(--sans);letter-spacing:-.01em;color:var(--ink);margin:0;font-size:2rem;font-weight:600;line-height:1.25}.post__meta{font-family:var(--sans);color:var(--text);opacity:.5;align-items:baseline;gap:.55em;margin:4px 0 0;font-size:1rem;font-weight:400;display:flex}.post__meta-sep{opacity:.6}.post__body{color:var(--text);margin-top:52px;font-size:1.06rem;line-height:1.75}.post__body p{margin:0 0 1.5em}.post__body strong,.post__body b{color:var(--deep);font-weight:600}.post__body em{font-family:var(--serif);color:var(--deep);font-size:1.05em}.post__body h2{color:var(--deep);margin:2.6em 0 .7em;scroll-margin-top:96px;font-size:1.5rem;font-weight:600;line-height:1.35;position:relative}.post__body h3{color:var(--deep);margin:1.9em 0 .5em;scroll-margin-top:96px;font-size:1.15rem;font-weight:600;line-height:1.4;position:relative}.post__heading-anchor{color:var(--meta);opacity:0;border:0;font-weight:400;text-decoration:none;transition:color .2s,opacity .2s;position:absolute;right:calc(100% + 10px)}.post__body h2:hover .post__heading-anchor,.post__body h3:hover .post__heading-anchor,.post__heading-anchor:focus-visible{opacity:.45}.post__heading-anchor:hover{color:var(--ink);opacity:1}.post__body ul,.post__body ol{margin:0 0 1.5em;padding-left:1.4em}.post__body li{margin:6px 0}.post__body a{color:var(--text);font-weight:inherit;border-bottom:1px solid #7d7d7d4d;text-decoration:none;transition:border-color .3s ease-in-out}.post__body a:hover{border-bottom-color:var(--text)}.post__body blockquote{color:var(--text);opacity:.7;margin:1.8em 0;padding:.5em 1em}.post__body blockquote p:last-child{margin-bottom:0}.post__body code{font-family:var(--mono);background:color-mix(in srgb, var(--card-border) 30%, transparent);color:var(--text);border-radius:4px;padding:2px 6px;font-size:.88em}.post__body pre{border:1px solid color-mix(in srgb, var(--card-border) 40%, transparent);background:#00000038;border-radius:6px;margin:1.8em 0;padding:18px 20px;overflow:auto}.post__body pre code{color:var(--text);background:0 0;border-radius:0;padding:0}.post__body img{border-radius:8px;max-width:100%}.post__body hr{border:none;border-top:1px solid #7d7d7d66;width:50px;margin:2em auto}.toc{z-index:50;scrollbar-width:thin;scrollbar-color:var(--scroll-thumb-idle) transparent;max-width:200px;max-height:calc(100vh - 140px);position:fixed;top:100px;left:28px;overflow-y:auto}.toc::-webkit-scrollbar{width:4px}.toc::-webkit-scrollbar-thumb{background:var(--scroll-thumb-idle);border-radius:9999px}.toc__list{margin:0;padding:0;list-style:none}.toc__item{margin:0}.toc__item--level-3{padding-left:12px}.toc__link{font-family:var(--sans);color:var(--meta);border-left:1px solid #0000;padding:4px 8px;font-size:.76rem;font-weight:400;line-height:1.5;text-decoration:none;transition:color .2s,border-color .2s;display:block}.toc__link:hover{color:var(--ink);border-left-color:var(--card-border-hi)}@media (max-width:1200px){.toc{display:none}}
@media (max-width:680px){:root{--grid-size:92px;--page-top:104px}.intro{padding:var(--page-top) 32px 72px}.intro__hi{font-size:1.7rem}.intro__text{font-size:1rem}.post__title{font-size:2rem}.post__body{font-size:1rem}.nav{gap:20px;padding:6px;top:18px;right:18px}.nav__label{display:none}.nav__glyph{display:inline-flex}.brand{padding:6px;top:18px;left:18px}.brand__mark{height:38px}}@media (max-width:480px){:root{--page-top:88px}.intro{padding:var(--page-top) 24px 64px}.intro__hi{font-size:1.5rem}.intro__text{font-size:.95rem}.archive-page-header__title{font-size:1.9rem}.post__title{font-size:1.7rem}.post__body{font-size:.95rem}.post__heading-anchor{display:none}.nav{gap:16px}.nav__link{font-size:13px}.nav__icon svg,.nav__glyph svg{width:17px;height:17px}}
.notfound{z-index:2;justify-content:center;align-items:center;min-height:100dvh;padding:104px 24px 100px;display:flex;position:relative}.notfound__inner{text-align:center;max-width:480px}.notfound__code{font-family:var(--sans);color:var(--accent);margin:0 0 8px;font-size:4.5rem;font-weight:700;line-height:1}.notfound__title{font-family:var(--sans);color:var(--ink);margin:0 0 12px;font-size:1.6rem;font-weight:600}.notfound__desc{color:var(--meta);margin:0 0 28px;font-size:.98rem}.notfound__link{font-family:var(--sans);letter-spacing:.5px;color:var(--accent);border:1px solid var(--card-border);background:var(--card-bg);border-radius:9999px;padding:10px 18px;font-size:.82rem;font-weight:600;text-decoration:none;transition:color .25s,border-color .25s;display:inline-block}.notfound__link:hover{color:var(--accent);border-color:var(--accent)}
.projects{z-index:2;padding:var(--page-top) 24px 100px;position:relative}.projects .cards__inner{margin:0 auto}.projects .archive-page-header{margin-bottom:64px}.archive-page-header--center{text-align:center}.projects__github{font-family:var(--sans);color:var(--meta);border:1px solid var(--card-border);border-radius:6px;align-items:center;gap:8px;margin-top:20px;padding:8px 18px;font-size:.85rem;font-weight:500;text-decoration:none;transition:color .2s,border-color .2s,background .2s;display:inline-flex}.projects__github:hover{color:var(--ink);border-color:color-mix(in srgb, var(--card-border-hi) 60%, transparent);background:#80808014}.projects__github svg{opacity:.85}.projects-list{grid-template-columns:repeat(3,minmax(280px,1fr));justify-content:center;gap:16px;padding-top:40px;display:grid;position:relative}.projects__watermark{z-index:0;font-family:var(--sans);letter-spacing:-.03em;color:#0000;pointer-events:none;-webkit-user-select:none;user-select:none;white-space:nowrap;background-image:linear-gradient(#ededed59,#ededed08);-webkit-background-clip:text;background-clip:text;max-width:100vw;font-size:128px;font-weight:700;line-height:1.2;position:absolute;top:-80px;left:50%;overflow:hidden;transform:translate(-50%)}.project-item{z-index:1;opacity:.6;background:0 0;border-radius:6px;flex-direction:column;gap:6px;padding:8px 14px 14px;text-decoration:none;transition:background .2s ease-out,opacity .2s ease-out;display:flex;position:relative}.project-item:hover{opacity:1;background:#8881}.project-item__name{font-family:var(--sans);color:var(--ink);white-space:nowrap;margin:0;font-size:.95rem;font-weight:600;line-height:1.3}.project-item__desc{font-family:var(--sans);color:var(--meta);margin:0;font-size:.82rem;line-height:1.5}@media (max-width:680px){.projects{padding:var(--page-top) 20px 80px}.projects .archive-page-header{margin-bottom:44px}.projects-list{grid-template-columns:1fr;gap:12px}.projects__watermark{font-size:56px;top:-40px}}
.demo{z-index:2;padding:var(--page-top) 24px 100px;position:relative}.demo .cards__inner{margin:0 auto}.demo .archive-page-header{margin-bottom:64px}.demo__watermark{z-index:0;font-family:var(--sans);letter-spacing:-.03em;color:#0000;pointer-events:none;-webkit-user-select:none;user-select:none;white-space:nowrap;background-image:linear-gradient(#f2f2f259,#f2f2f208);-webkit-background-clip:text;background-clip:text;max-width:100vw;font-size:128px;font-weight:700;line-height:1.2;position:absolute;top:-80px;left:50%;overflow:hidden;transform:translate(-50%)}.demo-list{grid-template-columns:repeat(3,minmax(280px,1fr));justify-content:center;gap:16px;padding-top:40px;display:grid;position:relative}.demo-item{z-index:1;opacity:.6;background:0 0;border-radius:6px;flex-direction:column;gap:6px;padding:8px 14px 14px;transition:background .2s ease-out,opacity .2s ease-out;display:flex;position:relative}.demo-item:hover{opacity:1;background:#8881}.demo-item__name{font-family:var(--sans);color:var(--ink);margin:0;font-size:.95rem;font-weight:600;line-height:1.3}.demo-item__desc{font-family:var(--sans);color:var(--meta);margin:0;font-size:.82rem;line-height:1.5}@media (max-width:680px){.demo{padding:var(--page-top) 20px 80px}.demo .archive-page-header{margin-bottom:44px}.demo-list{grid-template-columns:1fr;gap:12px}.demo__watermark{font-size:56px;top:-40px}}
.footer{z-index:2;padding:0 24px 40px;position:relative}.footer__inner{text-align:center;width:100%;max-width:920px;margin:0 auto}.footer__copy{font-family:var(--sans);color:var(--meta);letter-spacing:.01em;font-size:.84rem}.footer__license{color:var(--meta);border-bottom:1px solid color-mix(in srgb, var(--meta) 45%, transparent);text-decoration:none;transition:color .25s,border-color .25s}.footer__license:hover{color:var(--accent);border-color:var(--accent)}

