@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./fonts/geist-cyrillic-ext-wght-normal-2317fa4b.woff2)format("woff2-variations");unicode-range:U+460-52f,U+1c80-1c8a,U+20b4,U+2de0-2dff,U+a640-a69f,U+fe2e-fe2f}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./fonts/geist-cyrillic-wght-normal-68944396.woff2)format("woff2-variations");unicode-range:U+301,U+400-45f,U+490-491,U+4b0-4b1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./fonts/geist-vietnamese-wght-normal-8fa40e5d.woff2)format("woff2-variations");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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./fonts/geist-latin-ext-wght-normal-824f485b.woff2)format("woff2-variations");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-20c0,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./fonts/geist-latin-wght-normal-19f9c925.woff2)format("woff2-variations");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}:where([data-meowui-scope]):where([data-meowui-color-scheme=light]){--blog-bg:#faf8f3;--blog-ink:#26221e;--blog-ink-soft:#625c55;--blog-ink-dim:#81786f;--blog-ink-faint:#c9c1b7;--blog-line:#ded8cf;--blog-accent:#d24b32;--blog-accent-soft:#f3ded5;--blog-card:#fffdf8;--blog-doodle-blue:#73aabd;--blog-marker-yellow:#e5b958;--blog-on-accent:#fffaf5;--blog-focus-ring:#d24b3247;--blog-wash-red:#d24b320a;--blog-wash-blue:#73aabd0b;--blog-hero-wash:#d24b320e;--blog-doodle-loop-fill:#fffdf8ad;--blog-card-sheen:#ffffff57;--blog-card-inset:#ffffff75;--blog-card-shadow:#45362809;--blog-card-shadow-hover:#45362812;--blog-post-border-hover:#c8beb2;--blog-thought-card:#fdf8ee;--blog-thought-border:#d8cbbf;--blog-thought-border-hover:#c8b8aa;--blog-filter-bg:#fffdf87a;--blog-filter-border-hover:#beb5aa;--blog-quote-bg:#f3ded557;--blog-code-bg:#fffdf8;--blog-pre-bg:#26221e;--blog-pre-ink:#f2ece2;--blog-related-bg:#fffdf852;--buncss-light:initial;--buncss-dark: ;color-scheme:light}:where([data-meowui-scope]):where([data-meowui-color-scheme=dark]){--blog-bg:#191816;--blog-ink:#f1ece3;--blog-ink-soft:#c9c1b7;--blog-ink-dim:#aaa097;--blog-ink-faint:#615a52;--blog-line:#3e3933;--blog-accent:#ef7055;--blog-accent-soft:#3b2621;--blog-card:#24211e;--blog-doodle-blue:#86c4d6;--blog-marker-yellow:#e8c26d;--blog-on-accent:#1d1613;--blog-focus-ring:#ef705557;--blog-wash-red:#ef705513;--blog-wash-blue:#86c4d60e;--blog-hero-wash:#ef705521;--blog-doodle-loop-fill:#2f2a25e0;--blog-card-sheen:#ffffff06;--blog-card-inset:#ffffff09;--blog-card-shadow:#0000002b;--blog-card-shadow-hover:#00000047;--blog-post-border-hover:#61584f;--blog-thought-card:#28231e;--blog-thought-border:#4a4038;--blog-thought-border-hover:#68584d;--blog-filter-bg:#24211eb8;--blog-filter-border-hover:#685f56;--blog-quote-bg:#5a30274d;--blog-code-bg:#292622;--blog-pre-bg:#0f0f0e;--blog-pre-ink:#eee7dc;--blog-related-bg:#24211e73;--buncss-light: ;--buncss-dark:initial;color-scheme:dark}:where([data-meowui-scope]):where([data-meowui-color-scheme=auto]){--blog-bg:#faf8f3;--blog-ink:#26221e;--blog-ink-soft:#625c55;--blog-ink-dim:#81786f;--blog-ink-faint:#c9c1b7;--blog-line:#ded8cf;--blog-accent:#d24b32;--blog-accent-soft:#f3ded5;--blog-card:#fffdf8;--blog-doodle-blue:#73aabd;--blog-marker-yellow:#e5b958;--blog-on-accent:#fffaf5;--blog-focus-ring:#d24b3247;--blog-wash-red:#d24b320a;--blog-wash-blue:#73aabd0b;--blog-hero-wash:#d24b320e;--blog-doodle-loop-fill:#fffdf8ad;--blog-card-sheen:#ffffff57;--blog-card-inset:#ffffff75;--blog-card-shadow:#45362809;--blog-card-shadow-hover:#45362812;--blog-post-border-hover:#c8beb2;--blog-thought-card:#fdf8ee;--blog-thought-border:#d8cbbf;--blog-thought-border-hover:#c8b8aa;--blog-filter-bg:#fffdf87a;--blog-filter-border-hover:#beb5aa;--blog-quote-bg:#f3ded557;--blog-code-bg:#fffdf8;--blog-pre-bg:#26221e;--blog-pre-ink:#f2ece2;--blog-related-bg:#fffdf852;--buncss-light:initial;--buncss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:where([data-meowui-scope]):where([data-meowui-color-scheme=auto]){--buncss-light: ;--buncss-dark:initial}}:where([data-meowui-theme-root=blog]){--blog-radius:14px;--blog-font-sans:"Geist Variable","Geist","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC",ui-sans-serif,system-ui,sans-serif;--blog-font-mono:"SF Mono","Cascadia Code",Menlo,Consolas,ui-monospace,monospace;--blog-paper-grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160' viewBox='0 0 160 160'%3E%3Cfilter id='grain'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.78' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23grain)' opacity='.065'/%3E%3C/svg%3E")}@media (prefers-color-scheme:dark){:where([data-meowui-scope]):where([data-meowui-color-scheme=auto]){--blog-bg:#191816;--blog-ink:#f1ece3;--blog-ink-soft:#c9c1b7;--blog-ink-dim:#aaa097;--blog-ink-faint:#615a52;--blog-line:#3e3933;--blog-accent:#ef7055;--blog-accent-soft:#3b2621;--blog-card:#24211e;--blog-doodle-blue:#86c4d6;--blog-marker-yellow:#e8c26d;--blog-on-accent:#1d1613;--blog-focus-ring:#ef705557;--blog-wash-red:#ef705513;--blog-wash-blue:#86c4d60e;--blog-hero-wash:#ef705521;--blog-doodle-loop-fill:#2f2a25e0;--blog-card-sheen:#ffffff06;--blog-card-inset:#ffffff09;--blog-card-shadow:#0000002b;--blog-card-shadow-hover:#00000047;--blog-post-border-hover:#61584f;--blog-thought-card:#28231e;--blog-thought-border:#4a4038;--blog-thought-border-hover:#68584d;--blog-filter-bg:#24211eb8;--blog-filter-border-hover:#685f56;--blog-quote-bg:#5a30274d;--blog-code-bg:#292622;--blog-pre-bg:#0f0f0e;--blog-pre-ink:#eee7dc;--blog-related-bg:#24211e73}}*{box-sizing:border-box;margin:0;padding:0}html{overflow-x:clip;scrollbar-color:var(--blog-line)transparent;font-size:16px}::selection{background:var(--blog-accent);color:var(--blog-on-accent)}body{background-color:var(--blog-bg);background-image:radial-gradient(circle at 8% 4%,var(--blog-wash-red)0,transparent 25rem),radial-gradient(circle at 92% 88%,var(--blog-wash-blue)0,transparent 29rem);color:var(--blog-ink);font-family:var(--blog-font-sans);font-optical-sizing:auto;overflow-x:clip;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;background-attachment:fixed;line-height:1.85}header.site{display:flex;justify-content:space-between;align-items: center;padding:52px 0 18px}.site-name{display:inline-flex;color:var(--blog-ink);letter-spacing:.01em;text-decoration:none;align-items: center;font-size:1.08rem;font-weight:760}.site-name:before{background:var(--blog-accent);content:"";border-radius:53% 47% 58% 42%;width:12px;height:12px;margin-right:10px;transition:transform .28s cubic-bezier(.34,1.56,.64,1);transform:rotate(-9deg)}.site-name:hover:before{transform:rotate(18deg)scale(1.08)}nav.site-nav{display:flex;gap:24px}nav.site-nav a{position:relative;color:var(--blog-ink-soft);letter-spacing:.04em;text-decoration:none;transition:color .15s;font-size:.86rem}nav.site-nav a:after{position:absolute;background:var(--blog-accent);content:"";border-radius:99px;height:2px;transition:right .18s,left .18s;bottom:-7px;left:50%;right:50%}nav.site-nav a:hover,nav.site-nav a.active{color:var(--blog-ink)}nav.site-nav a:hover:after,nav.site-nav a.active:after{left:15%;right:15%}.hero{position:relative;display:grid;grid-template-columns:minmax(0,1fr)minmax(260px,.9fr);align-items: center;min-height:300px;margin:16px 0 8px}.hero:before{position:absolute;z-index:-1;background:var(--blog-hero-wash);content:"";border-radius:49% 51% 45% 55%/54% 44% 56% 46%;width:255px;height:238px;top:22px;right:-52px;transform:rotate(-6deg)}.hero-copy{position:relative;z-index:3;padding:52px 0}.hero-copy h1{color:var(--blog-ink);letter-spacing:-.045em;font-size:clamp(2rem,5vw,2.55rem);font-weight:730;line-height:1.34}.hero-copy h1 em{color:var(--blog-accent);font-style:normal}.hero-work{position:relative;display:flex;justify-content:flex-start;align-items: center;min-height:250px}.hero-doodle{overflow:visible;width:238px;transform:translate(-5px)rotate(-1deg)}.doodle-loop,.doodle-page,.doodle-spine,.doodle-writing,.doodle-spark{fill:none;stroke:var(--blog-ink);stroke-linecap:round;stroke-linejoin:round}.doodle-loop{fill:var(--blog-doodle-loop-fill);stroke-width:2.7}.doodle-sun{fill:var(--blog-accent);stroke:var(--blog-ink);stroke-width:2.4}.doodle-page{fill:var(--blog-card);stroke-width:2.5}.doodle-spine{stroke-width:2.1}.doodle-writing{stroke:var(--blog-ink-soft);stroke-width:1.45;opacity:.52}.doodle-dot{fill:var(--blog-doodle-blue)}.doodle-spark{stroke-width:2.1;opacity:.66}.hero-image{position:absolute;z-index:2;pointer-events:none;width:112px;height:auto;bottom:24px;right:-20px}.feed{position:relative;padding:8px 0 48px}.feed-decor{position:relative;z-index:0;pointer-events:none;height:165px;margin-top:48px}.feed-empty .empty-state{padding-bottom:10px}.feed-empty .feed-decor{margin-top:6px}.feed-image{position:absolute;width:305px;height:auto;bottom:-3px;right:-64px}.yarn-doodle{position:absolute;overflow:visible;opacity:.5;width:72px;bottom:9px;left:8px;transform:rotate(-4deg)}.yarn-fill{fill:var(--blog-doodle-blue);stroke:var(--blog-ink);stroke-width:1.8}.yarn-line,.yarn-tail{fill:none;stroke:var(--blog-ink);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.paw-trail{position:absolute;overflow:visible;color:var(--blog-ink-soft);opacity:.15;width:104px;bottom:48px;right:228px}.paw-print{fill:currentColor}.paw-print-accent{color:var(--blog-accent)}@media (prefers-color-scheme:dark){.hero-image,.about .avatar img{filter:drop-shadow(0 0 1px #f1ece3b8)drop-shadow(0 3px 12px #00000038)}.feed-image{filter:drop-shadow(1px 0 0 #f1ece375)drop-shadow(-1px 0 0 #f1ece375)drop-shadow(0 1px 0 #f1ece375)drop-shadow(0 -1px 0 #f1ece375)}}.day{position:relative;z-index:1}.day-header{display:flex;color:var(--blog-ink-soft);font-variant-numeric:tabular-nums;letter-spacing:.035em;align-items: center;padding:42px 0 15px;font-size:.9rem;font-weight:650}.day-header:before{background:var(--blog-accent);content:"";border-radius:52% 48% 43% 57%;width:8px;height:8px;margin-right:10px;transform:rotate(12deg)}.day-header:after{background:var(--blog-line);content:"";flex:1;height:1px;margin-left:14px}.day-header .weekday{color:var(--blog-ink-dim);letter-spacing:.06em;margin-left:10px;font-size:.76rem;font-weight:400}.post-card,.thought{background-color:var(--blog-card);background-image:linear-gradient(145deg,var(--blog-card-sheen),transparent 45%),var(--blog-paper-grain);border:1px solid var(--blog-line);box-shadow:inset 0 0 0 1px var(--blog-card-inset),0 5px 18px var(--blog-card-shadow);background-size:100% 100%,160px 160px}.post-card{position:relative;display:block;color:inherit;text-decoration:none;border-radius:13px 17px 14px 16px;margin:12px 0;padding:24px 27px 25px;transition:border-color .18s,box-shadow .18s,transform .18s}.post-card:hover{border-color:var(--blog-post-border-hover);box-shadow:inset 0 0 0 1px var(--blog-card-inset),0 9px 24px var(--blog-card-shadow-hover);transform:translateY(-2px)}.card-top{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:9px}.kind{display:inline-flex;color:var(--blog-accent);letter-spacing:.08em;align-items: center;font-size:.72rem}.kind:before{background:var(--blog-accent);content:"";border-radius:55% 45% 48% 52%;width:7px;height:7px;margin-right:8px}.post-card .meta{color:var(--blog-ink-dim);font-variant-numeric:tabular-nums;letter-spacing:.025em;white-space:nowrap;font-size:.75rem}.post-card h3{letter-spacing:-.012em;margin-bottom:7px;font-size:1.25rem;font-weight:730;line-height:1.5}.post-card .excerpt{display:-webkit-box;overflow:hidden;color:var(--blog-ink-soft);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.92rem}.thought{position:relative;border-color:var(--blog-thought-border);background-color:var(--blog-thought-card);border-radius:16px 12px 15px 11px;margin:11px 0;padding:15px 20px 14px;transition:border-color .18s,box-shadow .18s,transform .18s}.thought:hover{border-color:var(--blog-thought-border-hover);box-shadow:inset 0 0 0 1px var(--blog-card-inset),0 7px 20px var(--blog-card-shadow-hover);transform:translateY(-1px)}.thought .time{color:var(--blog-ink-dim);font-variant-numeric:tabular-nums;letter-spacing:.06em;margin-bottom:2px;font-size:.75rem}.thought .time .t{text-decoration:underline;text-decoration-color:#d24b3280;text-decoration-thickness:1.5px;text-underline-offset:4px}.thought .body{color:var(--blog-ink);max-width:35em;font-size:.94rem}.tags{color:var(--blog-ink-dim);letter-spacing:.035em;margin-top:7px;font-size:.74rem}.tags span{margin-right:12px}.thought-link{display:block;color:inherit;text-decoration:none}.thought:has(.thought-link){cursor:pointer}.thought:focus-within{border-color:var(--blog-accent);outline:none;box-shadow:inset 0 0 0 1px var(--blog-card-inset),0 0 0 3px var(--blog-focus-ring)}.post-card:focus-visible{border-color:var(--blog-accent);outline:none;box-shadow:inset 0 0 0 1px var(--blog-card-inset),0 0 0 3px var(--blog-focus-ring)}.thought-link:focus-visible{outline:none}.tag-filter{display:flex;flex-wrap:wrap;padding:23px 0 2px;font-size:.79rem}.tag-filter button{display:inline-flex;border:1px solid var(--blog-line);background:var(--blog-filter-bg);color:var(--blog-ink-soft);cursor:pointer;font:inherit;letter-spacing:.03em;border-radius:999px;align-items:baseline;margin:0 9px 9px 0;padding:5px 13px;transition:color .15s,border-color .15s,background-color .15s,transform .15s}.tag-filter button i{font-variant-numeric:tabular-nums;opacity:.58;margin-left:7px;font-size:.68rem;font-style:normal}.tag-filter button:hover{border-color:var(--blog-filter-border-hover);color:var(--blog-ink)}.tag-filter button.active{border-color:var(--blog-accent);background:var(--blog-accent);color:var(--blog-on-accent)}.tag-filter button:active{transform:translateY(1px)}.post-head{border-bottom:1px solid var(--blog-line);padding:68px 0 37px}.post-head h1{letter-spacing:-.025em;margin:13px 0 17px;font-size:clamp(1.65rem,5vw,2.1rem);font-weight:750;line-height:1.42}.post-head .meta{color:var(--blog-ink-dim);font-variant-numeric:tabular-nums;letter-spacing:.045em;font-size:.81rem}.prose{padding:42px 0 16px;font-size:.98rem}.prose p{margin-bottom:1.65em}.prose h2,.about h2{letter-spacing:-.012em;margin:2.5em 0 .9em;font-size:1.24rem;font-weight:740;line-height:1.45}.prose h2:before,.about h2:before{display:inline-block;background:var(--blog-accent);content:"";border-radius:50%;width:8px;height:8px;margin-right:9px;transform:translateY(-1px)}.prose h3{margin:2.1em 0 .8em;font-size:1.07rem;font-weight:700}.prose h4{margin:1.8em 0 .7em;font-size:1rem;font-weight:680}.prose strong,.about strong{font-weight:680}.prose ul,.prose ol{margin:0 0 1.65em 1.4em}.prose li{margin-bottom:.5em;padding-left:3px}.prose li::marker{color:var(--blog-accent)}.about li::marker{color:var(--blog-accent)}.prose blockquote{border-left:3px solid var(--blog-accent);background:var(--blog-quote-bg);color:var(--blog-ink-soft);border-radius:0 12px 12px 0;margin:0 0 1.7em;padding:14px 18px}.prose blockquote>:last-child{margin-bottom:0}.prose code,.about code{border:1px solid var(--blog-line);background:var(--blog-code-bg);font-family:var(--blog-font-mono);border-radius:6px;padding:2px 6px;font-size:.85em}.prose pre{overflow-x:auto;background:var(--blog-pre-bg);color:var(--blog-pre-ink);border-radius:12px;margin-bottom:1.7em;padding:20px 23px;font-size:.85rem;line-height:1.7}.prose pre code{color:inherit;background:0 0;border:0;padding:0}.prose img{display:block;border-radius:13px 16px 12px 15px;max-width:100%;height:auto;margin:2rem auto}.prose figure{margin:2rem 0}.prose figure img{margin-bottom:.65rem}.prose figcaption{color:var(--blog-ink-dim);text-align:center;font-size:.78rem}.prose table{display:block;overflow-x:auto;border-collapse:collapse;width:max-content;max-width:100%;margin:0 0 1.7em;font-size:.9rem}.prose th,.prose td{border-bottom:1px solid var(--blog-line);text-align:left;vertical-align:top;min-width:7rem;padding:9px 12px}.prose th{color:var(--blog-ink);font-weight:680}.prose mark{background:color-mix(in srgb,var(--blog-marker-yellow)48%,transparent);color:inherit;padding:0 .15em}.prose kbd{border:1px solid var(--blog-line);background:var(--blog-code-bg);font-family:var(--blog-font-mono);border-bottom-width:2px;border-radius:5px;padding:2px 6px;font-size:.82em}.mdx-callout{border:1px solid var(--blog-line);border-left:4px solid var(--blog-doodle-blue);background:color-mix(in srgb,var(--blog-doodle-blue)8%,var(--blog-card));border-radius:4px 13px 13px 4px;margin:0 0 1.7em;padding:15px 18px}.mdx-callout-warning{border-left-color:var(--blog-marker-yellow);background:color-mix(in srgb,var(--blog-marker-yellow)9%,var(--blog-card))}.mdx-callout>:last-child{margin-bottom:0}.prose hr{position:relative;background:var(--blog-line);border:0;height:1px;margin:3em 0}.prose hr:after{position:absolute;background:var(--blog-accent);content:"";border-radius:48% 52% 56% 44%;width:9px;height:9px;margin-left:-4.5px;top:-4px;left:50%}.prose a,.about a{color:var(--blog-ink);text-decoration-color:var(--blog-accent);text-decoration-thickness:1px;text-underline-offset:4px;transition:color .15s}.prose a:hover,.about a:hover{color:var(--blog-accent)}.related-thoughts{position:relative;border:1px solid var(--blog-line);background:var(--blog-related-bg);border-radius:16px 13px 17px 12px;margin:30px 0 52px;padding:26px 24px 14px}.related-thoughts h2{position:absolute;background:var(--blog-bg);color:var(--blog-ink-dim);letter-spacing:.08em;padding:0 9px;font-size:.77rem;font-weight:400;top:-.72em;left:18px}.post-nav{display:flex;border-top:1px solid var(--blog-line);justify-content:space-between;gap:20px;padding:31px 0 76px}.post-nav a{color:var(--blog-ink);text-decoration:none;max-width:48%;font-size:.91rem;font-weight:680}.post-nav a .label,.post-nav .label{display:block;color:var(--blog-ink-dim);letter-spacing:.08em;margin-bottom:5px;font-size:.72rem;font-weight:400}.post-nav a:hover{color:var(--blog-accent)}.post-nav .next{text-align:right;margin-left:auto}.listing,.about,.skills-index,.skill-page{padding:60px 0 88px}.listing-head{border-bottom:1px solid var(--blog-line);margin-bottom:27px;padding-bottom:23px}.listing-head h1,.about h1{letter-spacing:-.02em;margin:12px 0 9px;font-size:1.58rem;font-weight:740}.listing-head p{color:var(--blog-ink-soft);font-size:.92rem}.post-list .post-card,.thought-list .thought{margin:13px 0}.empty-state{color:var(--blog-ink-dim);padding:28px 0 78px}.about .avatar{position:relative;width:112px;height:98px;margin:-4px 0 27px}.about .avatar:before{position:absolute;background:var(--blog-accent-soft);content:"";border-radius:52% 48% 46% 54%;inset:9px 4px 2px 8px;transform:rotate(-7deg)}.about .avatar img{position:relative;z-index:1;display:block;object-fit:contain;width:100%;height:100%}.about .avatar-initial{position:relative;z-index:1;display:grid;color:var(--blog-ink);font-size:48px;font-family:var(--blog-font-sans);place-items: center;width:100%;height:100%;font-weight:600}.about h1{margin-bottom:20px}.about p{margin-bottom:1.4em}.about ul{margin:0 0 1.6em 1.4em}.about li{margin-bottom:.5em;padding-left:3px}.about .contact-list{list-style:none;margin-left:0}.about .contact-list li{border-bottom:1px solid var(--blog-line);padding-left:0}.about .contact-list a{display:flex;text-decoration:none;justify-content:space-between;align-items:baseline;padding:13px 0;font-size:.92rem}.about .contact-list .k{color:var(--blog-ink-dim);letter-spacing:.06em;font-size:.79rem}.skills-head{margin-bottom:33px}.skill-path,.skill-card-path,.skill-files li{font-family:var(--blog-font-mono)}.skill-path{color:var(--blog-accent);letter-spacing:.02em;font-size:.76rem}.skills-head h1{letter-spacing:-.025em;margin:8px 0 9px;font-size:1.72rem;font-weight:740}.skills-head p{color:var(--blog-ink-soft);max-width:570px;font-size:.93rem}.skill-list{display:grid;gap:17px}.skill-group+.skill-group{margin-top:46px}.skill-group-head{display:flex;border-bottom:1px solid var(--blog-line);justify-content:space-between;align-items: end;gap:18px;margin-bottom:17px;padding-bottom:10px}.skill-group-head h2{margin:0;font-size:.95rem;font-weight:680}.skill-group-head small{display:block;color:var(--blog-ink-dim);margin-top:4px;font-size:.7rem}.skill-group-head>span{color:var(--blog-ink-dim);font-family:var(--blog-font-mono);font-size:.68rem}.skill-group-empty{border:1px dashed var(--blog-line);color:var(--blog-ink-dim);border-radius:10px;margin:0;padding:22px 20px;font-size:.8rem}.skill-card{position:relative;display:grid;border:1px solid var(--blog-line);background-color:var(--blog-card);background-image:var(--blog-paper-grain);box-shadow:0 6px 20px var(--blog-card-shadow);color:var(--blog-ink);text-decoration:none;background-size:160px 160px;border-radius:5px 14px 14px;gap:16px;padding:24px 24px 19px;transition:border-color .18s,box-shadow .18s,transform .18s}.skill-card:before{position:absolute;border:1px solid var(--blog-line);background-color:var(--blog-card);background-image:var(--blog-paper-grain);content:"";border-bottom:0;border-radius:7px 7px 0 0;width:74px;height:7px;top:-7px;left:17px}.skill-card:hover{border-color:var(--blog-post-border-hover);box-shadow:0 10px 28px var(--blog-card-shadow-hover);transform:translateY(-2px)}.skill-card:hover:before{border-color:var(--blog-post-border-hover)}.skill-card-source{display:flex;justify-content:space-between;align-items: center;gap:12px}.skill-card-path{color:var(--blog-ink-dim);font-size:.7rem}.skill-scope-badge{display:inline-flex;border:1px solid var(--blog-line);background:var(--blog-accent-soft);color:var(--blog-accent);letter-spacing:.02em;white-space:nowrap;border-radius:999px;flex:none;align-items: center;padding:2px 7px;font-size:.61rem;font-weight:610}.project-skill:before{border-style:dashed dashed none;border-bottom-width:0;border-bottom-color:currentColor}.skill-card-main{display:grid;gap:6px}.skill-card-main strong{letter-spacing:-.01em;font-size:1.08rem;font-weight:710}.skill-card-main>span{color:var(--blog-ink-soft);font-size:.88rem;line-height:1.75}.skill-card-foot{display:flex;border-top:1px dashed var(--blog-line);color:var(--blog-ink-dim);justify-content:space-between;padding-top:12px;font-size:.73rem}.skill-open{color:var(--blog-ink-soft);transition:color .15s}.skill-card:hover .skill-open{color:var(--blog-accent)}.skills-prototype-note{color:var(--blog-ink-dim);margin-top:22px;font-size:.72rem}.skill-back{display:inline-block;color:var(--blog-ink-dim);text-decoration:none;margin-bottom:28px;font-size:.78rem}.skill-back:hover{color:var(--blog-accent)}.skill-browser-head{display:grid;grid-template-columns:minmax(0,1fr)auto;border:1px solid var(--blog-line);background:var(--blog-related-bg);border-radius:9px;align-items: center;gap:12px;margin-bottom:12px;padding:9px 10px 9px 13px}.skill-browser-head code{color:var(--blog-ink-soft);font-family:var(--blog-font-mono);overflow-x:auto;scrollbar-width:none;white-space:nowrap;min-width:0;font-size:.67rem}.skill-command{display:flex;align-items: center;gap:9px;min-width:0}.skill-browser-head code::-webkit-scrollbar{display:none}.skill-browser-actions{display:flex;align-items: center;gap:6px}.skill-browser-actions button,.skill-browser-actions a{border:1px solid var(--blog-line);background:var(--blog-card);color:var(--blog-ink-soft);font:inherit;text-align:center;text-decoration:none;white-space:nowrap;cursor:pointer;border-radius:6px;min-width:42px;padding:3px 7px;font-size:.65rem;line-height:1.65}.skill-browser-actions button:hover,.skill-browser-actions a:hover{border-color:var(--blog-post-border-hover);color:var(--blog-accent)}.skill-stage{border:1px solid var(--blog-line);background-color:var(--blog-card);background-image:var(--blog-paper-grain);box-shadow:0 8px 28px var(--blog-card-shadow);overflow:clip;background-size:160px 160px;border-radius:13px}.skill-stage [hidden]{display:none}.skill-view-tabs{display:flex;border-bottom:1px solid var(--blog-line);gap:20px;padding:0 17px}.skill-view-tabs button{position:relative;color:var(--blog-ink-dim);font:inherit;cursor:pointer;background:0 0;border:0;padding:11px 1px 9px;font-size:.75rem}.skill-view-tabs button[aria-pressed=true]{color:var(--blog-ink)}.skill-view-tabs button[aria-pressed=true]:after{position:absolute;background:var(--blog-accent);content:"";border-radius:2px;height:2px;bottom:-1px;left:0;right:0}.skill-browser{display:grid;grid-template-columns:185px minmax(0,1fr);align-items: start;min-height:500px}.skill-viewer{border-left:1px solid var(--blog-line);min-width:0}.skill-viewer-bar{display:flex;border-bottom:1px solid var(--blog-line);color:var(--blog-ink-dim);font-family:var(--blog-font-mono);justify-content:space-between;align-items: center;gap:16px;min-height:42px;padding:0 18px;font-size:.64rem}.skill-viewer-bar span:last-child{color:var(--blog-ink-faint);text-transform:uppercase;font-size:.6rem}.skill-file-panel{padding:25px 28px 44px}.skill-file-panel[hidden]{display:none}.skill-file-panel h1{margin-top:0;font-size:1.5rem}.skill-file-panel h2{font-size:1.05rem}.skill-files{background:var(--blog-related-bg);padding:15px 12px 24px}.skill-files-label{display:block;color:var(--blog-ink-dim);letter-spacing:.1em;text-transform:uppercase;margin:0 7px 12px;font-size:.62rem;font-weight:560}.skill-files ul{list-style:none;margin:0}.skill-files .folder>ul{border-left:1px solid var(--blog-line);margin-left:7px;padding-left:8px}.skill-files li{color:var(--blog-ink-dim);overflow-wrap:anywhere;padding:0;font-size:.65rem;line-height:1.45}.skill-files .folder>span{display:block;color:var(--blog-ink-soft);padding:5px 7px 2px}.skill-files button{color:var(--blog-ink-dim);font:inherit;line-height:inherit;text-align:left;overflow-wrap:anywhere;cursor:pointer;background:0 0;border:0;border-radius:6px;width:100%;padding:6px 7px;transition:background .15s,color .15s}.skill-files button:hover{background:var(--blog-accent-soft);color:var(--blog-ink)}.skill-files button.active{background:var(--blog-accent-soft);color:var(--blog-accent)}.skill-relations{min-height:0}.skill-reading-summary{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--blog-line);background:var(--blog-related-bg)}.skill-reading-summary span{display:flex;border-right:1px solid var(--blog-line);color:var(--blog-ink-dim);flex-direction:column;gap:2px;min-width:0;padding:12px 16px 11px;font-size:.65rem}.skill-reading-summary span:last-child{border-right:0}.skill-reading-summary strong{color:var(--blog-ink);font-family:var(--blog-font-mono);font-size:.82rem;font-weight:620}.skill-reading-summary .has-issue strong{color:var(--blog-accent)}.skill-graph-canvas{display:grid;background:radial-gradient(circle at 50% 45%,var(--blog-hero-wash),transparent 44%);place-items: center;min-height:310px;padding:26px 20px}.skill-graph-canvas.compact{min-height:245px}.skill-graph-svg{display:block;overflow:visible;width:100%;height:auto}.skill-graph-tb{display:none}.skill-graph-edge{fill:none;stroke:var(--blog-ink-faint);stroke-width:1.2;vector-effect:non-scaling-stroke}.skill-graph-edge.external{stroke-dasharray:4 4}.skill-graph-arrow{fill:var(--blog-ink-faint)}.skill-graph-edge-label rect{fill:var(--blog-card);opacity:.94}.skill-graph-edge-label text{fill:var(--blog-ink-dim);text-anchor:middle;font-size:11px}.skill-graph-node{color:var(--blog-ink);text-decoration:none}.skill-graph-node rect{fill:var(--blog-card);stroke:var(--blog-line);stroke-width:1;transition:fill .16s,stroke .16s}.skill-graph-node.external rect{fill:var(--blog-thought-card);stroke-dasharray:4 3}.skill-graph-node.unreferenced rect{fill:var(--blog-related-bg);stroke-dasharray:3 4}.skill-graph-node.missing rect{fill:var(--blog-accent-soft);stroke:var(--blog-accent);stroke-dasharray:3 3}.skill-graph-node:hover rect,.skill-graph-node.active rect{fill:var(--blog-accent-soft);stroke:var(--blog-accent)}.skill-graph-node text{pointer-events:none;text-anchor:middle}.skill-graph-node-name{fill:var(--blog-ink);font-family:var(--blog-font-mono);font-size:11px;font-weight:650}.skill-graph-node-role{fill:var(--blog-ink-dim);font-size:11px}.skill-graph-status{border-top:1px solid var(--blog-line);color:var(--blog-ink-soft);min-height:44px;padding:11px 17px;font-size:.76rem}.skill-graph-status code{color:var(--blog-accent);font-family:var(--blog-font-mono)}.skill-reading-empty{border-bottom:1px solid var(--blog-line);padding:42px 28px 46px}.skill-reading-empty strong,.skill-reading-issues>strong,.skill-reading-paths h3{color:var(--blog-ink);font-size:.82rem;font-weight:640}.skill-reading-empty p{color:var(--blog-ink-soft);max-width:520px;margin:9px 0 0;font-size:.78rem;line-height:1.8}.skill-reading-empty code,.skill-reading-issues code,.skill-reading-edge code{font-family:var(--blog-font-mono)}.skill-reading-paths{border-top:1px solid var(--blog-line);padding:19px 18px 20px}.skill-reading-paths h3{margin:0 0 12px}.skill-reading-paths ol{display:grid;list-style:none;gap:8px;margin:0;padding:0}.skill-reading-paths li{display:grid;grid-template-columns:minmax(0,.9fr)minmax(0,1.1fr);border:1px solid var(--blog-line);background:var(--blog-related-bg);border-radius:8px;align-items: center;gap:16px;padding:10px 12px}.skill-reading-paths li.unreachable{opacity:.72;border-style:dashed}.skill-reading-edge{display:flex;color:var(--blog-ink);align-items: center;gap:8px;min-width:0;font-size:.68rem}.skill-reading-edge code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.skill-reading-edge>span{color:var(--blog-accent)}.skill-reading-context{display:grid;color:var(--blog-ink-dim);gap:2px;font-size:.68rem;line-height:1.55}.skill-reading-issues{border-top:1px solid var(--blog-line);background:var(--blog-accent-soft);padding:17px 18px 18px}.skill-reading-issues p{display:flex;color:var(--blog-ink-soft);flex-wrap:wrap;gap:5px 8px;margin:8px 0 0;font-size:.72rem;line-height:1.6}.skill-reading-issues code{color:var(--blog-accent)}.github-link{display:grid;grid-template-columns:52px minmax(0,1fr)28px;border:1px solid var(--blog-line);background-color:var(--blog-card);background-image:var(--blog-paper-grain);box-shadow:0 5px 18px var(--blog-card-shadow);color:var(--blog-ink);text-decoration:none;background-size:160px 160px;border-radius:15px 12px 16px 13px;align-items: center;gap:13px;max-width:390px;margin-top:.35rem;padding:13px 15px 13px 12px;transition:border-color .18s,box-shadow .18s,transform .18s}.github-icon{display:block;color:var(--blog-ink);overflow:visible;width:52px;height:52px;transition:transform .24s cubic-bezier(.34,1.56,.64,1)}.github-icon-ring{fill:var(--blog-accent-soft);stroke:var(--blog-ink);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.github-icon-cat{fill:currentColor}.github-icon-face{fill:none;stroke:var(--blog-card);stroke-width:2.1;stroke-linecap:round}.github-copy{display:flex;flex-direction:column;min-width:0;line-height:1.35}.github-copy>span{color:var(--blog-ink-dim);letter-spacing:.06em;font-size:.73rem}.github-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.98rem;font-weight:650}.external-arrow{fill:none;stroke:var(--blog-accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;width:27px;height:27px;transition:transform .18s}.github-link:hover{border-color:var(--blog-post-border-hover);outline:none;box-shadow:0 8px 24px var(--blog-card-shadow-hover),0 0 0 3px var(--blog-focus-ring);transform:translateY(-2px)}.github-link:focus-visible{border-color:var(--blog-post-border-hover);outline:none;box-shadow:0 8px 24px var(--blog-card-shadow-hover),0 0 0 3px var(--blog-focus-ring);transform:translateY(-2px)}.github-link:hover .github-icon{transform:rotate(-4deg)scale(1.04)}.github-link:focus-visible .github-icon{transform:rotate(-4deg)scale(1.04)}.github-link:hover .external-arrow{transform:translate(2px,-2px)}.github-link:focus-visible .external-arrow{transform:translate(2px,-2px)}footer.site{display:flex;border-top:1px solid var(--blog-line);color:var(--blog-ink-dim);letter-spacing:.025em;justify-content:space-between;align-items: center;padding:27px 0 53px;font-size:.79rem}footer.site .brand{display:inline-flex;align-items: center}footer.site .brand:before{background:var(--blog-accent);content:"";border-radius:50%;width:7px;height:7px;margin-right:8px}footer.site a{color:var(--blog-ink-soft);text-decoration:none;transition:color .15s}footer.site a:hover{color:var(--blog-accent)}@media (prefers-reduced-motion:no-preference){@keyframes rise{0%{opacity:0;translate:0 10px}to{opacity:1;translate:none}}@keyframes cat-in{0%{opacity:0;translate:0 9px}to{opacity:1;translate:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}header.site{animation:.55s cubic-bezier(.22,.61,.36,1) both rise}.hero-copy{animation:.58s cubic-bezier(.22,.61,.36,1) 60ms both rise}.hero-doodle{animation:.62s cubic-bezier(.22,.61,.36,1) .14s both rise}.hero-image{animation:.58s cubic-bezier(.22,.61,.36,1) .23s both cat-in}.tag-filter{animation:.58s cubic-bezier(.22,.61,.36,1) .12s both rise}.feed-decor,footer.site{animation:.7s .28s both fade}.day.in>*{animation:.52s cubic-bezier(.22,.61,.36,1) backwards rise}.day.in>:nth-child(2){animation-delay:80ms}.day.in>:nth-child(3){animation-delay:.14s}.day.in>:nth-child(4){animation-delay:.2s}.day.in>:nth-child(n+5){animation-delay:.26s}.post-head,.listing-head,.skills-head,.skill-browser-head{animation:.58s cubic-bezier(.22,.61,.36,1) both rise}.prose{animation:.58s cubic-bezier(.22,.61,.36,1) .1s both rise}.related-thoughts{animation:.58s cubic-bezier(.22,.61,.36,1) .18s both rise}.about>*{animation:.52s cubic-bezier(.22,.61,.36,1) both rise}.about>:nth-child(2){animation-delay:50ms}.about>:nth-child(3){animation-delay:.1s}.about>:nth-child(n+4){animation-delay:.15s}}@media (prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media (max-width:720px){.feed-image{width:280px;right:0}.paw-trail{right:210px}.skill-browser{grid-template-columns:1fr}.skill-files{border-bottom:1px solid var(--blog-line);padding-bottom:16px}.skill-viewer{border-left:0}}@media (max-width:560px){.container{padding:0 21px}header.site{padding-top:35px}nav.site-nav{gap:18px}.hero{grid-template-columns:1fr;min-height:390px;margin-top:5px}.hero:before{width:225px;height:205px;top:154px;right:-44px}.hero-copy{padding:35px 0 3px}.hero-copy h1{font-size:1.82rem}.hero-work{justify-content:center;min-height:225px}.hero-doodle{width:225px;transform:translate(-16px)rotate(-1deg)}.hero-image{width:98px;bottom:17px;right:1%}.tag-filter{padding-top:16px}.day-header{padding-top:36px}.post-card{padding:20px 20px 21px}.post-card .meta{white-space:normal;text-align:right}.feed-decor{height:150px;margin-top:38px}.feed-image{width:246px;right:0}.yarn-doodle{opacity:.42;width:58px;bottom:4px;left:2px}.paw-trail{opacity:.12;width:82px;bottom:44px;right:176px}.post-head{padding:50px 0 31px}.related-thoughts{padding:22px 17px 10px}.post-nav{flex-direction:column}.post-nav a,.post-nav>span{max-width:100%}.github-link{max-width:none}.listing,.about,.skills-index,.skill-page{padding-top:48px}.skill-card{gap:14px;padding:22px 19px 17px}.skill-group-head{align-items: flex-start}.skill-group-head>span{padding-top:2px}.skill-browser-head{grid-template-columns:1fr}.skill-browser-actions{justify-content:flex-end}.skill-file-panel{padding:23px 19px 38px}.skill-relations{min-height:0}.skill-reading-summary{grid-template-columns:repeat(2,1fr)}.skill-reading-summary span:nth-child(2){border-right:0}.skill-reading-summary span:nth-child(-n+2){border-bottom:1px solid var(--blog-line)}.skill-graph-canvas{min-height:0;padding:23px 10px}.skill-reading-empty{padding:30px 18px 34px}.skill-reading-paths{padding:18px 14px}.skill-reading-paths li{grid-template-columns:1fr;gap:5px}.skill-reading-edge{align-items: flex-start}.skill-reading-edge code{white-space:normal;overflow-wrap:anywhere;text-overflow:clip}.skill-reading-issues{padding:16px 14px 17px}.skill-graph-lr{display:none}.skill-graph-tb{display:block}footer.site{flex-wrap:wrap;align-items: flex-start;gap:15px}}@media (max-width:360px){.card-top{flex-direction:column;align-items: flex-start;gap:3px}.post-card .meta{text-align:left}.hero-doodle{width:205px}.hero-image{width:91px;right:-2%}.github-link{grid-template-columns:46px minmax(0,1fr)24px;gap:10px}.github-icon{width:46px;height:46px}}
