:root{--bg:#0c0c0c;--bg-elev:#12141a;--bg-nav:#212121;--fg:#e8eaed;--fg-muted:#8b929e;--line:#ffffff1a;--line-soft:#ffffff0f;--accent:#e8c27a;--accent-green:#9fef00;--nav-h:42px;--stage-top:calc(var(--nav-h) + 2.4rem);--wrap:1080px;--radius:14px;--radius-sm:6px;--font-sans:"Segoe UI", system-ui, "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-mono:"JetBrains Mono", "SF Mono", ui-monospace, Menlo, Consolas, monospace;--font-serif:"Cormorant Garamond", "Iowan Old Style", Palatino, "Songti SC", "Noto Serif SC", Georgia, serif;--ease:cubic-bezier(.22, 1, .36, 1);--shadow-nav:0 8px 28px #00000059;--shadow-card:0 18px 48px #00000073, inset 0 0 0 1px #ffffff08}*,:before,:after{box-sizing:border-box}html{color-scheme:dark;-webkit-font-smoothing:antialiased;overflow-x:hidden}html,body{margin:0}body{background:var(--bg);min-height:100svh;color:var(--fg);font-family:var(--font-sans);flex-direction:column;line-height:1.55;display:flex;overflow-x:hidden}main{z-index:1;flex:1 0 auto;position:relative}.site-sky{z-index:0;pointer-events:none;position:fixed;inset:0}.site-sky-grid{opacity:.22;background-image:linear-gradient(#ffffff08 1px,#0000 1px),linear-gradient(90deg,#ffffff06 1px,#0000 1px);background-size:48px 48px;position:absolute;inset:0}.site-sky-field{width:100%;height:100%;position:absolute;inset:0}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}:focus:not(:focus-visible){outline:none}.share-cover{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(--accent-green);color:#111;border-radius:var(--radius-sm);padding:.4rem .7rem;font-size:.82rem;font-weight:600;position:absolute;top:.75rem;left:1rem;transform:translateY(-160%)}.skip-link:focus{transform:none}.content-wrap{width:min(var(--wrap), calc(100% - 2.5rem));z-index:1;margin-inline:auto;position:relative}.site-nav{top:max(.7rem, env(safe-area-inset-top));left:max(.7rem, env(safe-area-inset-left));z-index:80;width:max-content;max-width:calc(100% - 1.4rem);transition:transform .45s var(--ease), opacity .28s;animation:nav-in .55s var(--ease) both;position:fixed}.site-nav.is-away{opacity:0;pointer-events:none;transform:translateY(calc(-100% - 1rem))}@keyframes nav-in{0%{opacity:0;transform:translateY(-10px)}}.nav-bar{height:var(--nav-h);max-width:100%;box-shadow:var(--shadow-nav);-webkit-backdrop-filter:blur(18px)saturate(1.25);background:#1d1d1de8;border:1px solid #ffffff14;border-radius:10px;align-items:stretch;display:flex;overflow:hidden}.nav-brand{border-right:1px solid var(--line-soft);color:#f2f2f2;white-space:nowrap;flex:none;align-items:center;gap:.4rem;padding:0 .85rem 0 .75rem;font-size:.82rem;font-weight:650;display:inline-flex}.nav-brand.is-home{color:#fff}.nav-mark{width:13px;height:13px;color:var(--accent-green);flex:none}.nav-tabs{overscroll-behavior-x:contain;scrollbar-width:none;min-width:0;display:flex;position:relative;overflow-x:auto}.nav-tabs::-webkit-scrollbar{display:none}.nav-ink{opacity:0;pointer-events:none;width:2rem;transition:transform .38s var(--ease), width .38s var(--ease), opacity .2s;background:#ffffff12;border-radius:6px;position:absolute;top:4px;bottom:4px;left:0;box-shadow:inset 0 -1px #9fef0059}.nav-ink.is-on{opacity:1}.nav-tab{z-index:1;color:#a8a8ae;flex:none;align-items:center;padding:0 .85rem;font-size:.82rem;transition:color .18s;display:inline-flex;position:relative}.nav-tab:hover{color:#eee}.nav-tab.is-active{color:#fff;font-weight:600}.hero{min-height:100svh;padding:var(--stage-top) 1.25rem 4.5rem;place-items:center;display:grid;position:relative;overflow:hidden}.hero-bg{z-index:0;pointer-events:none;position:absolute;inset:0}.code-rain-wrap{z-index:0;justify-content:center;display:flex;position:absolute;inset:0;overflow:hidden;mask-image:linear-gradient(#0000 0%,#000 12% 70%,#0000 100%)}.code-rain{font-family:var(--font-mono);color:#969e9638;white-space:pre;pointer-events:none;user-select:none;opacity:.28;will-change:transform;width:max-content;max-width:min(920px,94vw);margin:0;padding:2.5rem 0 50vh;font-size:clamp(.62rem,1.05vw,.78rem);line-height:1.65}.code-rain .c-kw{color:#7aa2c761}.code-rain .c-string{color:#c9a26b5c}.code-rain .c-comment{color:#64706447;font-style:italic}.code-rain .c-number{color:#c48c6e5c}.code-rain .c-func{color:#8cbcd261}.code-rain .c-const{color:#b4967857}.hero-vignette{z-index:1;pointer-events:none;background:radial-gradient(50% 42% at 50% 46%,#0c0c0c40 0%,#0000 70%);position:absolute;inset:0}.hero-fg{z-index:2;text-align:center;max-width:52rem;padding:0 .75rem;position:relative}.hero-quote{max-width:36rem;font-family:var(--font-serif);color:#f5f2ebeb;margin:1.6rem auto 0;font-size:clamp(1.05rem,2.1vw,1.4rem);font-style:italic}.hero-quote-zh{font-family:"Songti SC", "Noto Serif SC", var(--font-serif);letter-spacing:.14em;color:#e8c27a94;margin:.45rem 0 0;font-size:clamp(.78rem,1.35vw,.98rem)}.hero-kicker{font-family:var(--font-mono);letter-spacing:.18em;color:var(--accent-green);opacity:.85;margin:0 0 .85rem;font-size:.72rem}.hero-title{color:#fff;letter-spacing:-.045em;text-shadow:0 10px 40px #000a;margin:0 0 .75rem;font-size:clamp(2.1rem,6.2vw,4.4rem);font-weight:650;line-height:1.08}.hero-sub{max-width:38rem;font-family:var(--font-mono);color:#ffffffc7;letter-spacing:.04em;margin:0 auto;font-size:clamp(.8rem,1.55vw,.98rem)}.type-host{position:relative}.type-sizer{visibility:hidden;pointer-events:none;display:block}.type-out{position:absolute;inset:0}.type-caret{background:var(--accent-green);vertical-align:-.08em;width:.12em;height:.88em;margin-left:.08em;animation:1.05s step-end infinite type-caret;display:inline-block;box-shadow:0 0 10px #9fef007a}.hero-kicker .type-caret{vertical-align:-.12em;width:.5ch;height:1em}@keyframes type-caret{50%{opacity:0}}.maze-field{z-index:1;pointer-events:none;place-items:center;display:grid;position:absolute;inset:-8% 0 8%;mask-image:radial-gradient(circle at 50% 46%,#000 0 34%,#0000 68%)}.maze-svg{opacity:.9;width:min(920px,130%);height:auto}.maze-spin-a,.maze-spin-b{transform-origin:400px 400px}.maze-field.is-live .maze-spin-a{animation:48s linear infinite maze-cw}.maze-field.is-live .maze-spin-b{animation:76s linear infinite maze-ccw}.maze-path{stroke-dasharray:420;stroke-dashoffset:420px}.maze-field.is-live .maze-path{animation:maze-draw 8s var(--ease) infinite alternate}.maze-field.is-live .maze-nodes circle{animation:2.8s ease-in-out infinite maze-pulse}.maze-nodes circle:nth-child(2){animation-delay:.4s}.maze-nodes circle:nth-child(3){animation-delay:.8s}.maze-nodes circle:nth-child(4){animation-delay:1.2s}@keyframes maze-cw{to{transform:rotate(360deg)}}@keyframes maze-ccw{to{transform:rotate(-360deg)}}@keyframes maze-draw{0%{stroke-dashoffset:420px;opacity:.2}to{stroke-dashoffset:0;opacity:.8}}@keyframes maze-pulse{0%,to{opacity:.35}50%{opacity:1}}.kicker{font-family:var(--font-mono);letter-spacing:.16em;color:var(--accent-green);opacity:.9;margin:0 0 1.1rem;font-size:.72rem}.blog-kicker-row{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.9rem;display:flex}.blog-kicker-row .kicker{margin:0}.identity{border-bottom:1px solid var(--line-soft);padding:4.5rem 0 3.5rem}.plat-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem 2rem;display:grid}.plat-name{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--fg-muted);margin:0 0 .45rem;font-size:.7rem}.plat-user{font-family:var(--font-serif);letter-spacing:-.02em;margin:0;font-size:clamp(1.4rem,3vw,2rem);font-weight:500;line-height:1.15}.plat-uid{font-family:var(--font-mono);color:var(--fg-muted);margin:.4rem 0 0;font-size:.82rem}.plat-link{color:var(--fg-muted);border-bottom:1px solid #e8c27a59;margin-top:.7rem;padding-bottom:.08rem;font-size:.82rem;display:inline-block}.plat-link:hover{color:var(--accent);border-color:var(--accent)}.blog-section,.project-section{padding:3.5rem 0}.blog-all{font-family:var(--font-mono);letter-spacing:.06em;color:#c8ced894;font-size:.7rem}.blog-all:hover{color:var(--accent)}.blog-grid{grid-template-columns:1fr;gap:1.15rem;display:grid}.blog-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.blog-card{background:var(--bg-elev);border:1px solid var(--line);box-shadow:var(--shadow-card);content-visibility:auto;contain-intrinsic-size:auto 280px;border-radius:16px;flex-direction:column;transition:border-color .2s;display:flex;overflow:hidden}.blog-cover{aspect-ratio:16/9;border-bottom:1px solid var(--line-soft);background:#141820;max-height:200px;position:relative;overflow:hidden}.blog-cover-img{object-fit:cover;filter:saturate(.78)contrast(1.06)brightness(.86);width:100%;height:100%;transition:transform .7s var(--ease), filter .4s;position:absolute;inset:0}.blog-cover.has-img:after{content:"";pointer-events:none;background:linear-gradient(#080a0e80 0%,#0000 46%),linear-gradient(#0000 56%,#080a0e6b 100%);position:absolute;inset:0}.cover-fallback{font-family:var(--font-mono);color:#ffffff47;letter-spacing:.08em;background:linear-gradient(#9fef0008,#0000),repeating-linear-gradient(90deg,#0000 0 17px,#9fef0014 17px 18px),repeating-linear-gradient(0deg,#0000 0 17px,#e8c27a14 17px 18px);place-items:center;display:grid;position:absolute;inset:0}.blog-cover-label{z-index:2;font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:#ffffffe0;backdrop-filter:blur(6px);border-radius:var(--radius-sm);text-shadow:0 1px 10px #000000a6;background:#0006;padding:.28rem .5rem;font-size:.65rem;position:absolute;top:.7rem;right:.75rem}.blog-card-body{flex-direction:column;gap:.5rem;padding:1rem 1.15rem;display:flex}.blog-card-meta{font-family:var(--font-mono);color:#b4bac4b8;letter-spacing:.04em;gap:.4rem;font-size:.72rem;display:flex}.blog-meta-sep{opacity:.45}.blog-card-title{color:#f0f2f5;letter-spacing:-.02em;margin:0;font-size:clamp(1.05rem,2.2vw,1.35rem);font-weight:650;line-height:1.3}.blog-card-preview{color:#aab2bec7;-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;font-size:.82rem;line-height:1.55;display:-webkit-box;overflow:hidden}.blog-tags{flex-wrap:wrap;gap:.4rem;display:flex}.blog-tag{font-family:var(--font-mono);color:#c8ced8d9;border:1px solid var(--line);background:#ffffff0a;border-radius:999px;padding:.22rem .55rem;font-size:.68rem}.repo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.repo-card{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);content-visibility:auto;contain-intrinsic-size:auto 120px;padding:1.1rem 1.15rem;transition:border-color .2s}.repo-card h3{margin:0 0 .4rem;font-size:1.05rem}.repo-card p{color:var(--fg-muted);margin:0;font-size:.84rem}.repo-lang{font-family:var(--font-mono);color:var(--accent-green);letter-spacing:.1em;justify-content:space-between;align-items:baseline;gap:.6rem;margin-bottom:.45rem;font-size:.68rem;display:flex}.repo-stars{color:#c8ced894;letter-spacing:0;font-variant-numeric:tabular-nums}.project-pulse{font-family:var(--font-mono);letter-spacing:.08em;color:#c8ced894;margin:0 0 1.6rem;font-size:.72rem}.project-now{background:linear-gradient(#9fef0008, transparent 42%), var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-card);margin-bottom:1rem;padding:1.6rem 1.5rem 1.45rem;display:block}.project-now-kicker{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent-green);margin-bottom:.55rem;font-size:.68rem}.project-now h2{letter-spacing:-.03em;margin:0 0 .45rem;font-size:clamp(1.4rem,3vw,2rem);line-height:1.15}.project-now p{max-width:42rem;color:var(--fg-muted);margin:0;font-size:.95rem;line-height:1.55}.project-now-meta{font-family:var(--font-mono);color:#c8ced894;letter-spacing:.06em;gap:.9rem;margin-top:1rem;font-size:.72rem;display:flex}.project-hits{grid-template-columns:1.15fr .95fr .95fr;gap:1rem;margin-bottom:2.6rem;display:grid}.project-shelf{margin-top:.4rem}.project-index{border-top:1px solid var(--line);flex-direction:column;display:flex}.project-row{border-bottom:1px solid var(--line-soft);grid-template-columns:minmax(7.5rem,13rem) 1fr auto;align-items:baseline;gap:1rem 1.4rem;padding:.92rem .15rem;display:grid}.project-row[hidden],.project-now[hidden],.repo-card[hidden]{display:none}.project-row-name{letter-spacing:-.02em;font-weight:650}.project-row-desc{color:var(--fg-muted);-webkit-line-clamp:1;-webkit-box-orient:vertical;font-size:.84rem;line-height:1.45;display:-webkit-box;overflow:hidden}.project-row-meta{font-family:var(--font-mono);color:#c8ced894;letter-spacing:.04em;white-space:nowrap;font-size:.68rem}@media (hover:hover){.blog-card{transition:transform .45s var(--ease), border-color .2s}.blog-card:hover{border-color:#9fef0033;transform:translateY(-4px)}.blog-card:hover .blog-cover-img{filter:saturate(.92)contrast(1.08)brightness(.92);transform:scale(1.04)}.repo-card{transition:border-color .2s, transform .35s var(--ease)}.repo-card:hover{border-color:#e8c27a55;transform:translateY(-3px)}.project-now{transition:border-color .2s, transform .35s var(--ease)}.project-now:hover{border-color:#9fef0047;transform:translateY(-3px)}.project-row{transition:color .2s}.project-row:hover .project-row-name{color:var(--accent)}.project-row:hover .project-row-desc{color:#c8ced8d9}.index-row{transition:color .2s}.index-row:hover .index-row-title{color:var(--accent)}.index-row:hover .index-row-desc{color:#c8ced8d9}}.connect-grid{grid-template-columns:1fr 1fr;align-items:start;gap:2rem 3.5rem;padding:2.4rem 0 1.4rem;display:grid}.connect-col .kicker{margin:0 0 .55rem}.contact-list,.friends-wall{grid-template-rows:repeat(5,minmax(2rem,auto));grid-auto-columns:max-content;grid-auto-flow:column;column-gap:2.4rem;margin:0;padding:0;list-style:none;display:grid}.contact-list li,.friends-wall li{align-items:center;min-height:2rem;display:flex}.contact-row{align-items:baseline;gap:1rem;width:100%;font-size:.88rem;line-height:1.25;display:flex}.contact-label{font-family:var(--font-mono);letter-spacing:.08em;color:var(--fg-muted);flex:0 0 4.8rem;font-size:.72rem}.contact-id{color:var(--fg)}.contact-row:hover .contact-id{color:var(--accent)}.footer-link{color:var(--fg);font-size:.88rem;line-height:1.25}.footer-link:hover{color:var(--accent)}.site-footer{z-index:1;border-top:1px solid var(--line);padding:0 0 calc(1.6rem + env(safe-area-inset-bottom));color:var(--fg-muted);background:linear-gradient(#0000,#0c0c0cf2 2.2rem);font-size:.8rem;position:relative}.footer-bar{border-top:1px solid var(--line-soft);flex-wrap:wrap;justify-content:space-between;gap:1rem;padding-top:1rem;display:flex}.footer-meta{font-family:var(--font-mono);opacity:.7;font-size:.72rem}.page-title .kicker{margin:0 0 .65rem}.page-title h1{letter-spacing:-.04em;margin:0;font-size:clamp(2rem,5vw,3.2rem);font-weight:650}.page-sub{color:#9aa3b0;letter-spacing:.03em;max-width:34rem;margin:.55rem 0 0;font-size:clamp(.86rem,1.4vw,.98rem);line-height:1.55}.filters{flex-wrap:wrap;gap:.5rem;margin-bottom:1.4rem;display:flex}.filter{font-family:var(--font-mono);letter-spacing:.04em;border:1px solid var(--line);color:var(--fg-muted);border-radius:999px;padding:.32rem .7rem;font-size:.72rem}.filter.is-active,.filter:hover{color:#111;background:var(--accent-green);border-color:var(--accent-green)}.blog-search-meta{font-family:var(--font-mono);letter-spacing:.06em;color:#c8ced894;margin:.75rem 0 0;font-size:.72rem}.blog-search-hits{border-top:1px solid var(--line);max-height:min(28rem,62vh);margin-top:.35rem;overflow:auto}.blog-search-hits .index-row.is-active{background:#9fef0010}.blog-search-hits mark{color:inherit;background:#9fef0033;padding:0 .12em}.index-years{margin-bottom:1.8rem}.index-year{scroll-margin-top:calc(var(--nav-h) + 1.4rem);margin-bottom:2.2rem}.index-year-title{letter-spacing:-.03em;margin:0 0 .35rem;font-size:1.15rem}.index-year-title span{font-family:var(--font-mono);color:#c8ced894;margin-left:.45rem;font-size:.72rem;font-weight:500}.index-list{border-top:1px solid var(--line)}.index-row{border-bottom:1px solid var(--line-soft);grid-template-columns:7.2rem minmax(0,1fr) auto;align-items:baseline;gap:.35rem 1.2rem;padding:.82rem .1rem;display:grid}@media (hover:hover){.index-row:hover .index-row-title{color:var(--accent)}}.index-row-date,.index-row-cat{font-family:var(--font-mono);letter-spacing:.04em;color:#c8ced894;white-space:nowrap;font-size:.68rem}.index-row-main{flex-direction:column;gap:.16rem;min-width:0;display:flex}.index-row-title{letter-spacing:-.02em;font-weight:650}.index-row-desc{color:var(--fg-muted);-webkit-line-clamp:1;-webkit-box-orient:vertical;font-size:.82rem;line-height:1.45;display:-webkit-box;overflow:hidden}article.post{max-width:760px;padding-bottom:4rem}.post-hero{padding:var(--stage-top) 0 1.35rem}.post-toc{scrollbar-width:thin;overscroll-behavior:contain;border:1px solid var(--line);background:#ffffff07;border-radius:12px;max-height:min(40vh,18rem);margin:0 0 1.4rem;padding:.75rem .85rem .8rem;overflow:auto}.post-toc-label{font-family:var(--font-mono);letter-spacing:.16em;color:var(--accent-green);margin:0 0 .5rem;font-size:.72rem}.post-toc-list{margin:0;padding:0;list-style:none}.post-toc-list a{color:#9aa3b0;overflow-wrap:anywhere;border-left:2px solid #ffffff14;padding:.28rem .2rem .28rem .72rem;font-size:.8rem;line-height:1.45;display:block}.post-toc-list li[data-depth="3"] a{padding-left:1.2rem;font-size:.76rem}.post-toc-list li[data-depth="4"] a{color:#8b939e;padding-left:1.72rem;font-size:.74rem}.post-toc-list a:hover{color:#e8edf5}.post-toc-list a.is-active{color:var(--accent);border-left-color:var(--accent)}@media (width>=1040px){article.post:has(.post-toc){max-width:var(--wrap)}article.post:has(.post-toc) :is(.post-hero,.post-body){max-width:760px}.post-toc{z-index:24;top:calc(var(--nav-h) + 1.8rem);right:max(1.25rem, calc((100vw - var(--wrap)) / 2));width:13.5rem;max-height:calc(100svh - var(--nav-h) - 3.2rem);background:0 0;border:0;border-radius:0;margin:0;padding:0;position:fixed}}.post-hero .kicker{margin:0 0 .55rem}.post-hero h1{letter-spacing:-.03em;color:#f4f6fa;margin:0;font-size:clamp(1.7rem,4.4vw,2.7rem);font-weight:650;line-height:1.18}.post-hero .page-sub{color:#b4bcc8;max-width:none;line-height:1.65}.post-hero .blog-tags{margin-top:1rem}.post-body{overflow-wrap:anywhere;color:#d7dee8;min-width:0;font-size:1.04rem;line-height:1.78}.post-body :is(h2,h3,h4){color:#f3f5f8;letter-spacing:-.03em;scroll-margin-top:calc(var(--nav-h) + 1.4rem);line-height:1.28}.post-body h2{border-bottom:1px solid var(--line-soft);margin:2.15em 0 .72em;padding-bottom:.42em;font-size:1.42rem;font-weight:650}.post-body h3{margin:1.7em 0 .5em;font-size:1.16rem;font-weight:640}.post-body h4{color:#e6ebf3;margin:1.4em 0 .42em;font-size:1.02rem;font-weight:620}.post-body p{margin:1em 0}.post-body a{color:var(--accent);text-underline-offset:3px;text-decoration:underline #e8c27a66}.post-body a:hover{color:#f3d59a;text-decoration-color:#f3d59a}.post-body strong{color:#eef2f8;font-weight:650}.post-body img{border:1px solid var(--line);border-radius:10px;margin:1.2em 0;box-shadow:0 12px 36px #0000004d}.post-body :not(pre)>code{white-space:normal;overflow-wrap:anywhere;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-family:var(--font-mono);color:#c8f06a;background:#9fef0014;border:1px solid #9fef0026;border-radius:5px;padding:.08em .38em;font-size:.86em}.post-body kbd{font-family:var(--font-mono);color:#e8edf5;border:1px solid var(--line);background:#ffffff10;border-bottom-width:2px;border-radius:5px;padding:.05em .38em;font-size:.78em}.post-body blockquote{border-left:3px solid var(--accent);color:#c5cdd8;background:#e8c27a0d;border-radius:0 10px 10px 0;margin:1.4em 0;padding:.7rem 1.05rem}.post-body blockquote p{margin:.45em 0}.post-body :is(ul,ol){margin:.95em 0;padding-left:1.4rem}.post-body li{margin:.32em 0}.post-body li::marker{color:#8b939ecc}.post-body hr{background:linear-gradient(90deg,#0000,#e8c27a66,#0000);border:0;max-width:12rem;height:1px;margin:2.4rem auto}.post-body table{border-collapse:collapse;border:1px solid var(--line);border-radius:10px;width:max-content;max-width:100%;margin:1.2em 0;font-size:.9rem;display:block;overflow-x:auto}.post-body th,.post-body td{border-bottom:1px solid var(--line-soft);text-align:left;padding:.52rem .75rem}.post-body tr:last-child td{border-bottom:0}.post-body th{color:#eef2f8;letter-spacing:.02em;background:#ffffff0c;font-size:.82rem;font-weight:620}.post-body tbody tr:nth-child(2n) td{background:#ffffff05}.post-body .mermaid{border:1px solid var(--line);background:#10141c;border-radius:12px;margin:1.2rem 0;padding:.8rem;overflow-x:auto}.code-block{--code-bg:#10141c;--code-line-h:1.7em;--code-preview-lines:16;background:var(--code-bg);border:1px solid #ffffff16;border-radius:12px;flex-direction:column;margin:1.4em 0;display:flex;position:relative;overflow:hidden;box-shadow:0 16px 40px #0000004d,inset 0 1px #ffffff0c}.code-toolbar{font-family:var(--font-mono);background:#ffffff07;border-bottom:1px solid #ffffff12;order:-1;align-items:center;gap:.65rem;padding:.42rem .65rem .42rem .9rem;font-size:.7rem;display:flex}.code-lang{color:var(--accent);letter-spacing:.08em;text-transform:lowercase;font-weight:650}.code-lines{color:#8b939e;margin-right:auto}.code-actions{gap:.35rem;display:flex}.code-copy,.code-toggle{color:#c4cad4;font-family:var(--font-mono);letter-spacing:.04em;background:#ffffff08;border:1px solid #ffffff14;border-radius:6px;padding:.18rem .52rem;font-size:.68rem}.code-copy:hover,.code-toggle:hover{color:#fff;background:#ffffff12;border-color:#ffffff2a}.code-copy.is-copied{color:var(--accent-green);background:#9fef0014;border-color:#9fef0047}.post-body .code-block pre,.post-body pre{tab-size:2;white-space:normal;scrollbar-width:thin;scrollbar-color:#ffffff2e transparent;border:0;min-height:0;margin:0;padding:.85rem 0 .95rem;font-size:.8125rem;line-height:1.7;overflow:auto;background-color:var(--code-bg,#10141c)!important}.post-body .astro-code{background-color:var(--code-bg)!important}.post-body .astro-code span{background-color:#0000!important}.post-body .astro-code code{counter-reset:line;min-width:100%;font-family:var(--font-mono);white-space:normal;display:block}.post-body .astro-code .line{white-space:pre;min-height:var(--code-line-h);padding-right:1.1rem;display:block}.post-body .astro-code .line:hover{background:#ffffff08}.post-body .astro-code .line:before{content:counter(line);counter-increment:line;text-align:right;color:#8b939e;user-select:none;border-right:1px solid #ffffff14;width:2.85rem;margin-right:1rem;padding-right:.85rem;display:inline-block}.code-block[data-lines="1"] .astro-code .line:before{content:"";border:0;width:0;margin:0;padding:0}.code-block[data-lines="1"] .astro-code{padding-left:1rem}.post-body .code-block.is-collapsed pre{max-height:calc(var(--code-line-h) * var(--code-preview-lines));overflow:hidden}.code-more{z-index:1;background:linear-gradient(180deg, transparent 0%, #10141cf2 62%, var(--code-bg) 100%);color:var(--accent);font-family:var(--font-mono);letter-spacing:.04em;text-align:center;padding:2.5rem 0 .7rem;font-size:.74rem;position:absolute;bottom:0;left:0;right:0}.code-more:hover{color:#f3d59a}.code-block:not(.is-collapsed) .code-more{display:none}.source{font-family:var(--font-mono);color:var(--fg-muted);border-top:1px solid var(--line);margin-top:2rem;padding-top:1rem;font-size:.72rem}.empty{color:var(--fg-muted);font-family:var(--font-mono);padding:.4rem 0 2rem}.reveal{opacity:0;animation:rise .8s var(--ease) forwards;transform:translateY(16px)}.reveal:nth-child(2){animation-delay:80ms}.reveal:nth-child(3){animation-delay:.16s}@keyframes rise{to{opacity:1;transform:none}}.cursor-root{z-index:10000;pointer-events:none;opacity:0;position:fixed;inset:0}.cursor-root.is-on{opacity:1}.cursor-trail{width:100%;height:100%;display:block;position:fixed;inset:0}.cursor-core{will-change:transform;background:#fff;border-radius:50%;width:4px;height:4px;position:fixed;top:0;left:0;box-shadow:0 0 4px .5px #ffffffd9,0 0 10px 2px #9fef0047}.has-custom-cursor,.has-custom-cursor *{cursor:none!important}.live-mascot{user-select:none}.live-mascot>canvas{cursor:grab}.live-mascot.is-dragging>canvas{cursor:grabbing}.mascot-panel{pointer-events:none;position:absolute;inset:0}.mascot-bubble{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-elev);width:max-content;max-width:min(240px,100vw - 32px);color:var(--fg);box-shadow:var(--shadow-nav);overflow-wrap:anywhere;padding:12px 16px;font-size:13px;line-height:1.7;position:absolute;bottom:calc(100% - 28px);left:50%;transform:translate(-50%)}.mascot-bubble:after{content:"";background:var(--bg-elev);border-right:1px solid var(--line);border-bottom:1px solid var(--line);width:8px;height:8px;position:absolute;bottom:-4px;left:calc(50% - 4px);transform:rotate(45deg)}.mascot-bubble.is-below{top:40px;bottom:auto}.mascot-bubble.is-below:after{top:-4px;bottom:auto;transform:rotate(225deg)}.mascot-toolbar{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-elev);box-shadow:var(--shadow-nav);opacity:0;transition:opacity .18s, transform .18s var(--ease);pointer-events:none;flex-direction:column;gap:4px;padding:4px;display:flex;position:absolute;top:50%;left:auto;right:100%;transform:translate(-4px,-50%)}.live-mascot:hover .mascot-toolbar,.live-mascot:focus-within .mascot-toolbar{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(-50%)}.live-mascot[data-controls-side=right] .mascot-toolbar{left:100%;right:auto}.mascot-toolbar button{border-radius:var(--radius-sm);width:36px;height:36px;color:var(--fg-muted);place-items:center;display:grid}.mascot-toolbar button:hover,.mascot-toolbar button:focus-visible{background:var(--bg);color:var(--fg)}.mascot-toolbar button[aria-pressed=true]{color:var(--accent-green)}.mascot-toolbar svg,.mascot-launcher svg{fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.mascot-launcher{z-index:60;background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);width:44px;height:44px;color:var(--fg-muted);box-shadow:var(--shadow-nav);place-items:center;display:grid;position:fixed;bottom:16px;right:16px}.mascot-launcher:hover,.mascot-launcher:focus-visible{color:var(--accent-green);border-color:var(--accent-green)}@media (width<=840px),(pointer:coarse),(prefers-reduced-motion:reduce){.live-mascot,.mascot-launcher{display:none!important}}@media (prefers-reduced-motion:reduce){.mascot-toolbar{transition:none}}@media (width<=840px){.plat-grid,.repo-grid,.connect-grid,.project-hits{grid-template-columns:1fr}.contact-list,.friends-wall{flex-direction:column;display:flex}.project-row{grid-template-columns:1fr;gap:.22rem}.project-row-meta{white-space:normal}.index-row{grid-template-columns:1fr auto;gap:.18rem .8rem}.index-row-date{grid-column:1/-1}.hero-title{font-size:clamp(1.55rem,7vw,2.2rem)}}@media (width<=640px){:root{--nav-h:36px;--stage-top:calc(var(--nav-h) + 1.6rem)}.post-body{font-size:.98rem}.post-body .code-block pre,.post-body pre{font-size:.75rem}.post-body .astro-code .line:before{width:2.25rem;margin-right:.7rem;padding-right:.55rem}.site-nav{top:max(.45rem, env(safe-area-inset-top));left:max(.45rem, env(safe-area-inset-left));max-width:calc(100% - .9rem)}.nav-bar{border-radius:9px}.nav-brand{gap:.32rem;padding:0 .62rem 0 .55rem;font-size:.78rem}.nav-tab{padding:0 .58rem;font-size:.76rem}.nav-ink{border-radius:5px;top:3px;bottom:3px}}@media (width<=400px){.nav-brand-text{display:none}.nav-brand{padding:0 .52rem}}@media (width<=720px){.blog-grid.two{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.blog-card,.repo-card,.project-now,.blog-cover-img,.reveal,.site-nav,.code-more{opacity:1;transition:none;animation:none;transform:none}.nav-ink{transition:none}.maze-spin-a,.maze-spin-b,.maze-path,.maze-nodes circle{animation:none}.code-rain{transform:none!important}}@media (pointer:coarse){.cursor-root{display:none!important}}:root{--page-top:112px;--space-section:48px;--control-h:44px}:focus-visible{outline:2px solid var(--accent-green);outline-offset:4px}[hidden]{display:none!important}.page-title{padding:var(--page-top) 0 32px}.page-title .kicker{margin-bottom:16px}.page-title h1{font-family:var(--font-sans);font-size:clamp(32px,4vw,48px);font-weight:600;line-height:1.2}.page-sub{color:var(--fg-muted);margin-top:16px;font-size:14px;line-height:1.8}.page-block{padding:0 0 64px}.kicker{font-size:11px}.section-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 24px;margin-bottom:24px;display:flex}.section-heading h2{margin:0;font-size:18px;font-weight:600}.section-heading>span{color:var(--fg-muted);font-size:12px}.text-action{min-height:var(--control-h);color:var(--accent-green);align-items:center;font-size:14px;display:inline-flex}.text-action:hover{text-underline-offset:5px;text-decoration:underline}.blog-card,.repo-card,.project-now{border-radius:var(--radius);box-shadow:none;border-color:#0000}.blog-card-body{gap:12px;padding:24px}.blog-card-title{font-weight:600;line-height:1.5}.blog-card-meta,.blog-card-preview{color:var(--fg-muted)}.blog-grid,.repo-grid,.project-hits{gap:16px}.repo-card{padding:24px}.repo-card h3{overflow-wrap:anywhere;font-weight:600}.repo-card p{line-height:1.8}.filter{border-radius:var(--radius-sm);background:var(--bg-elev);min-height:40px;font:12px var(--font-sans);border-color:#0000;align-items:center;padding:8px 12px;display:inline-flex}.filter.is-active,.filter:hover{color:var(--fg);background:var(--bg-elev);border-color:var(--fg-muted)}.filters{gap:8px;margin-bottom:24px}.blog-search{margin-bottom:24px}.project-board{padding-top:0}.project-now{background:var(--bg-elev);padding:32px}.project-now h2{overflow-wrap:anywhere;font-size:clamp(24px,3vw,32px);line-height:1.3}.project-now p{line-height:1.8}.project-row{padding:20px 8px}.project-row-name{overflow-wrap:anywhere}.project-pulse,.project-now-meta,.project-row-meta,.repo-stars{color:var(--fg-muted)}.site-nav:focus-within{opacity:1;pointer-events:auto;transform:none}.nav-tabs{scroll-padding-inline:8px}.nav-tab{min-height:44px}.nav-bar{height:44px}.site-footer{padding-top:40px}.contact-row,.footer-link{min-height:44px}.footer-link{align-items:center;display:inline-flex}.plat-grid{gap:32px}.plat-user{font-family:var(--font-sans);overflow-wrap:anywhere;font-size:24px}.blog-section,.project-section{padding-block:48px}.friend-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.friend-card{background:var(--bg-elev);border-radius:var(--radius);border:1px solid #0000;flex-direction:column;padding:32px;transition:border-color .2s;display:flex}.friend-card:hover{border-color:var(--fg-muted)}.friend-card-head{align-items:center;gap:16px;margin-bottom:24px;display:flex}.friend-avatar{border-radius:var(--radius-sm);background:var(--bg);width:48px;height:48px;color:var(--accent-green);font:500 16px var(--font-mono);place-items:center;display:grid}.friend-arrow{color:var(--fg-muted);margin-left:auto;font-size:24px}.friend-card:hover .friend-arrow{color:var(--accent-green)}.friend-card h3{overflow-wrap:anywhere;margin:0 0 12px;font-size:24px;font-weight:600}.friend-card p{max-width:35em;color:var(--fg-muted);margin:0 0 32px;font-size:14px;line-height:1.8}.friend-address{border-top:1px solid var(--line);color:var(--fg-muted);font:12px var(--font-mono);overflow-wrap:anywhere;margin-top:auto;padding-top:16px}.profile-card{background:var(--bg-elev);border-radius:var(--radius);align-items:start;gap:48px;margin-bottom:48px;padding:40px;display:flex}.profile-avatar{border-radius:var(--radius);object-fit:cover;width:160px;height:160px}.profile-content{min-width:0}.profile-content .kicker{margin:0 0 12px}.profile-content h2{margin:0 0 16px;font-size:32px;font-weight:600}.profile-roles{flex-wrap:wrap;gap:8px;display:flex}.profile-roles span{color:var(--fg-muted);border:1px solid var(--line);border-radius:var(--radius-sm);padding:4px 8px;font-size:12px}.profile-quote{font:italic 24px/1.5 var(--font-serif);margin:32px 0 8px}.profile-translation{color:var(--fg-muted);margin:0 0 16px;font-size:14px}.profile-links{flex-wrap:wrap;gap:8px 24px;display:flex}.credential-grid{grid-template-columns:1fr 1fr;gap:16px;margin:0;padding:0;list-style:none;display:grid}.credential-grid li{background:var(--bg-elev);border-radius:var(--radius);align-items:center;gap:24px;padding:24px;display:flex}.credential-grid img{object-fit:contain;width:80px;height:80px}.credential-grid h3{margin:0 0 8px;font-size:18px}.credential-grid p{color:var(--fg-muted);margin:0;font-size:12px}.surface-empty{text-align:center;border-radius:var(--radius);background:var(--bg-elev);padding:48px 24px}.surface-empty h2{font-size:20px}.surface-empty p{color:var(--fg-muted);font-size:14px}@media (width<=700px){:root{--page-top:96px;--space-section:32px}.page-title{padding-bottom:24px}.page-block{padding-bottom:48px}.friend-grid,.credential-grid{grid-template-columns:1fr}.friend-card,.project-now{padding:24px}.profile-card{flex-direction:column;gap:24px;margin-bottom:32px;padding:24px}.profile-avatar{width:96px;height:96px}.profile-quote{margin-top:24px}.profile-content h2{font-size:24px}.credential-grid li{gap:16px;padding:20px}.nav-tab{padding-inline:10px}.site-footer{padding-top:32px}}@media (prefers-reduced-motion:reduce){.friend-card{transition:none}}.friend-number{color:var(--fg-muted);font:11px var(--font-mono);letter-spacing:.08em}.friend-exchange{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:48px;margin-top:48px;padding-top:48px;display:grid}.friend-exchange h2{margin:12px 0;font-size:24px;font-weight:600}.friend-exchange p{color:var(--fg-muted);max-width:35em;font-size:14px;line-height:1.8}.site-card{background:var(--bg-elev);border-radius:var(--radius);padding:24px}.site-card-head{justify-content:space-between;align-items:center;gap:16px;font-size:14px;display:flex}.site-card-head button{color:var(--accent-green);min-height:44px;font-size:12px}.site-card dl{gap:16px;margin:16px 0 0;font-size:14px;display:grid}.site-card dl>div{grid-template-columns:40px minmax(0,1fr);gap:16px;display:grid}.site-card dt{color:var(--fg-muted)}.site-card dd{overflow-wrap:anywhere;margin:0}.site-card #copy-status{margin:12px 0 0;font-size:12px}.site-card #copy-status:empty{display:none}@media (width<=700px){.friend-exchange{grid-template-columns:1fr;gap:24px;margin-top:32px;padding-top:32px}}.search-field{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:12px;min-height:56px;padding:8px 12px 8px 16px;transition:border-color .2s;display:flex}.search-field:hover{border-color:var(--fg-muted)}.search-field:focus-within{border-color:var(--accent-green)}.search-icon{width:20px;height:20px;color:var(--fg-muted);flex-shrink:0}.search-field:focus-within .search-icon{color:var(--accent-green)}.search-input{width:100%;min-width:0;height:40px;color:var(--fg);font:400 16px/1.5 var(--font-sans);-webkit-appearance:none;appearance:none;background:0 0;border:0;border-radius:0;outline:none;flex:1;margin:0;padding:0}.search-input::placeholder{color:var(--fg-muted)}.search-input:focus-visible{outline:none}.search-input::-webkit-search-cancel-button,.search-input::-webkit-search-decoration{-webkit-appearance:none;display:none}.search-input::-ms-clear{display:none}.search-clear{border-radius:var(--radius-sm);width:40px;height:40px;color:var(--fg-muted);flex:0 0 40px;place-items:center;display:grid}.search-clear svg{width:18px;height:18px}.search-clear:hover{color:var(--fg);background:var(--bg)}.pager{justify-content:center;align-items:center;gap:16px;margin:40px auto 0;display:flex}.browse-button{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius-sm);min-height:44px;color:var(--fg);font:500 13px/1.5 var(--font-sans);justify-content:center;align-items:center;gap:8px;padding:12px 20px;transition:border-color .2s,color .2s;display:inline-flex}.browse-button svg{flex:0 0 16px;width:16px;height:16px}.browse-button:not(.is-disabled):hover{border-color:var(--accent-green);color:var(--accent-green)}.browse-button.is-disabled{color:var(--fg-muted);border-color:var(--line-soft);opacity:.5;background:0 0}.pager-count{white-space:nowrap;font:12px var(--font-mono);color:var(--fg-muted);align-items:baseline;gap:8px;padding-inline:8px;display:flex}.pager-count strong{color:var(--fg);font-weight:500}.results-more{flex-direction:column;align-items:center;gap:12px;margin-top:40px;display:flex}.load-more-button{min-width:192px}#shown-count{color:var(--fg-muted);font:11px var(--font-mono)}@media (width<=440px){.pager{gap:12px}.browse-button{padding:12px 16px}.pager-count{gap:4px;padding:0}}@media (prefers-reduced-motion:reduce){.search-field,.browse-button{transition:none}}
