:root{color-scheme:light dark;--bg:#f5f4ed;--surface:#faf9f5;--surface-warm:#e8e6dc;--fg:#141413;--fg-2:#3d3d3a;--muted:#504e49;--meta:#6b6a64;--border:#e8e6dc;--border-soft:#e5e3d8;--rule:#d9d6ca;--accent:#1b365d;--accent-on:#faf9f5;--accent-active:#142a48;--tag-bg-soft:#e4ecf5;--tag-bg-base:#d6e1ee;--font-serif:Charter, "Bitstream Charter", "Charis SIL", Georgia, Palatino, "Times New Roman", serif;--font-mono:"JetBrains Mono", "SF Mono", "Fira Code", Consolas, Monaco, monospace;--elev-raised:0 4px 24px #0000000d;--focus-ring:0 0 0 2px var(--accent-active);--ease:cubic-bezier(.2, 0, 0, 1);--column:680px;--gutter:24px}@media (prefers-color-scheme:dark){:root{--bg:#141413;--surface:#1d1d1b;--surface-warm:#2a2a27;--fg:#f0eee6;--fg-2:#d9d6cb;--muted:#b5b2a7;--meta:#8f8c83;--border:#30302e;--border-soft:#262624;--rule:#3a3a36;--accent:#8fb0d9;--accent-on:#141413;--accent-active:#b3cae6;--tag-bg-soft:#22303f;--tag-bg-base:#2a3b4f;--elev-raised:0 4px 24px #00000059}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font:400 17px / 1.55 var(--font-serif);-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3,p,ul,ol,figure,blockquote{margin:0}ul,ol{padding:0;list-style:none}strong,b{color:var(--fg);font-weight:500}em,i{color:var(--accent);font-style:normal}img{max-width:100%;height:auto}a{color:var(--accent);text-underline-offset:3px;text-decoration:underline 1px;text-decoration-color:var(--tag-bg-base)}a:hover{text-decoration-color:currentColor}a:focus-visible{box-shadow:var(--focus-ring);border-radius:4px;outline:none}::selection{background:var(--tag-bg-base);color:var(--fg)}.skip{position:absolute;left:-9999px}.skip:focus{z-index:10;background:var(--surface);padding:8px 12px;top:16px;left:16px}.page{max-width:calc(var(--column) + var(--gutter) * 2);padding:0 var(--gutter);margin:0 auto}.masthead{justify-content:space-between;align-items:center;gap:16px;padding:28px 0 0;display:flex}.mark{color:var(--fg);font:500 15px / 1 var(--font-serif);align-items:center;gap:10px;text-decoration:none;display:inline-flex}.mark-dot{background:var(--accent);border-radius:2px;width:9px;height:9px;transform:rotate(45deg)}.masthead nav{gap:20px;display:flex}.masthead nav a{color:var(--meta);font:500 15px / 1 var(--font-serif);text-decoration:none}.masthead nav a:hover,.masthead nav a[aria-current=page]{color:var(--fg)}.masthead nav a[aria-current=page]{text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:6px}.intro{padding-top:72px}.avatar{background:var(--accent);color:var(--accent-on);font-family:var(--font-serif);box-shadow:0 0 0 4px var(--bg), 0 0 0 5px var(--border);border-radius:50%;flex:none;place-items:center;font-weight:500;display:grid;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.avatar-lg{width:88px;height:88px;font-size:30px}.avatar-sm{width:48px;height:48px;font-size:17px}.intro h1,.page-head h1{font:500 44px / 1.1 var(--font-serif);letter-spacing:-.8px;margin-top:28px}.page-head h1{margin-top:0}.wave{transform-origin:70% 70%;display:inline-block}.bio{color:var(--muted);margin-top:16px;font-size:19px;line-height:1.5}.bio+.bio{margin-top:10px}.socials{flex-wrap:wrap;gap:8px;margin-top:24px;display:flex}.social{background:var(--surface);box-shadow:0 0 0 1px var(--border);color:var(--fg-2);font:500 14px / 1 var(--font-serif);transition:box-shadow .2s var(--ease);border-radius:999px;align-items:center;gap:8px;padding:9px 14px;text-decoration:none;display:inline-flex}.social:hover{box-shadow:0 0 0 1px var(--border), var(--elev-raised)}.social svg{fill:currentColor;width:15px;height:15px}.social-x{background:var(--fg);color:var(--bg);box-shadow:0 0 0 1px var(--fg)}.social-x:hover{box-shadow:0 0 0 1px var(--fg), var(--elev-raised)}.block{margin-top:64px}.block-head{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:baseline;gap:12px;padding-bottom:10px;display:flex}.block-head h2{font:500 15px / 1.2 var(--font-serif);letter-spacing:1.2px;text-transform:uppercase;color:var(--fg-2)}.block-count{font:400 13px / 1 var(--font-mono);color:var(--accent);font-variant-numeric:tabular-nums}.block-more{font-size:14px}.block-note{color:var(--meta);margin-top:14px;font-size:15px}.entries{margin-top:4px}.entry+.entry{border-top:1px solid var(--border-soft)}.entry-link{color:inherit;transition:background-color .2s var(--ease);border-radius:10px;grid-template-columns:28px 44px minmax(0,1fr) 20px;align-items:center;gap:14px;margin:0 -12px;padding:16px 12px;text-decoration:none;display:grid}.entry-link:hover{background:var(--surface)}.entry-no{font:400 12px / 1 var(--font-mono);color:var(--meta);font-variant-numeric:tabular-nums}.entry-icon{background:var(--surface);width:44px;height:44px;box-shadow:0 0 0 1px var(--border);border-radius:11px;place-items:center;font-size:22px;line-height:1;display:grid;overflow:hidden}.entry-icon img{object-fit:cover;width:100%;height:100%}.entry-text{gap:2px;display:grid}.entry-name{font:500 17px / 1.3 var(--font-serif);color:var(--fg);flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.entry-desc{color:var(--muted);font-size:15px;line-height:1.45}.entry-lesson{color:var(--fg-2);margin-top:4px;font-size:14px;line-height:1.45}.entry-lesson span{color:var(--meta);font-variant-numeric:tabular-nums}.entry-arrow{color:var(--meta);text-align:right;transition:transform .2s var(--ease), color .2s var(--ease)}.entry-link:hover .entry-arrow{color:var(--accent);transform:translate(2px,-2px)}.entry-closed .entry-icon{filter:grayscale();opacity:.7}.entry-closed .entry-title{color:var(--muted)}.chip{font:500 11px / 1 var(--font-serif);letter-spacing:.5px;text-transform:uppercase;color:var(--accent);background:var(--tag-bg-soft);border-radius:4px;padding:3px 7px;display:inline-block}.chip-building,.chip-closed{color:var(--meta);background:var(--surface-warm)}.posts li+li{border-top:1px solid var(--border-soft)}.post-link{color:inherit;grid-template-columns:72px minmax(0,1fr);gap:16px;padding:16px 0;text-decoration:none;display:grid}.post-link time{font:400 13px / 1.4 var(--font-mono);color:var(--meta);font-variant-numeric:tabular-nums;padding-top:3px}.post-text{gap:3px;display:grid}.post-title{font:500 17px / 1.35 var(--font-serif);color:var(--fg)}.post-link:hover .post-title{color:var(--accent)}.post-desc{color:var(--muted);font-size:15px;line-height:1.45}.page-head{padding-top:72px}.page-meta{margin-top:14px;font-size:15px}.year{margin-top:48px}.year-label{border-bottom:1px solid var(--rule);font:400 13px / 1 var(--font-mono);color:var(--accent);font-variant-numeric:tabular-nums;padding-bottom:10px}.article{padding-top:56px}.crumbs{color:var(--meta);gap:8px;font-size:14px;display:flex}.crumbs a{color:var(--meta);text-decoration:none}.crumbs a:hover{color:var(--accent)}.article-head{border-bottom:1px solid var(--rule);margin-top:20px;padding-bottom:28px}.article-head h1{font:500 40px / 1.12 var(--font-serif);letter-spacing:-.6px}.article-dek{color:var(--muted);margin-top:14px;font-size:19px;line-height:1.5}.article-meta{color:var(--meta);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:8px;margin-top:16px;font-size:14px;display:flex}.disclosure{border-left:2px solid var(--accent);background:var(--surface);color:var(--muted);border-radius:0 8px 8px 0;margin-top:28px;padding:14px 16px;font-size:14px;line-height:1.5}.about-head h1{font:500 44px / 1.1 var(--font-serif);letter-spacing:-.8px;margin-top:28px}.about .prose{border-top:1px solid var(--rule);margin-top:28px;padding-top:28px}.about>.socials{margin-top:28px}.tldr{border:1px solid var(--border);background:var(--surface);border-radius:10px;margin-top:28px;padding:16px 18px}.tldr-label{font:500 12px / 1 var(--font-serif);letter-spacing:1.2px;text-transform:uppercase;color:var(--accent);margin-bottom:6px}.tldr p:last-child{color:var(--fg);font-size:17px;line-height:1.55}.faq{margin-top:48px}.faq h2{font:500 26px / 1.25 var(--font-serif);letter-spacing:-.2px}.faq dl{margin:16px 0 0}.faq-item{border-top:1px solid var(--border-soft);padding:16px 0}.faq dt{font:500 17px / 1.4 var(--font-serif);color:var(--fg)}.faq dd{color:var(--fg-2);margin:6px 0 0;font-size:16px;line-height:1.6}.prose{color:var(--fg-2);margin-top:32px;font-size:18px;line-height:1.65}.prose>*+*{margin-top:1.1em}.prose h2{font:500 26px / 1.25 var(--font-serif);color:var(--fg);letter-spacing:-.2px;margin-top:1.9em}.prose h3{font:500 20px / 1.3 var(--font-serif);color:var(--fg);margin-top:1.6em}.prose ul,.prose ol{padding-left:0}.prose li{padding-left:22px;position:relative}.prose li+li{margin-top:.4em}.prose ul>li:before{content:"–";color:var(--accent);position:absolute;left:0}.prose ol{counter-reset:item}.prose ol>li{counter-increment:item}.prose ol>li:before{content:counter(item) ".";color:var(--accent);font-variant-numeric:tabular-nums;position:absolute;left:0}.prose blockquote{border-left:2px solid var(--accent);color:var(--fg);padding:4px 0 4px 18px;font-size:20px;line-height:1.5}.prose code{background:var(--surface-warm);font:.85em var(--font-mono);border-radius:4px;padding:1px 5px}.prose pre{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:16px 18px;font-size:14px;line-height:1.6;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;padding:0}.prose .token.comment,.prose .token.prolog{color:var(--meta)}.prose .token.keyword,.prose .token.function,.prose .token.builtin{color:var(--accent)}.prose .token.string,.prose .token.number,.prose .token.boolean{color:var(--muted)}.prose img{box-shadow:0 0 0 1px var(--border);border-radius:8px}.prose hr{border:0;border-top:1px solid var(--rule);margin:2em 0}.prose table{border-collapse:collapse;width:100%;font-size:15px}.prose th,.prose td{border-bottom:1px solid var(--border);text-align:left;padding:8px 10px}.prose th{color:var(--fg);font-weight:500}.prose a[rel~=sponsored]:after{content:"↗";margin-left:2px;font-size:.8em}.tags{flex-wrap:wrap;gap:6px;margin-top:32px;display:flex}.byline{border:1px solid var(--border);background:var(--surface);border-radius:12px;gap:16px;margin-top:40px;padding:20px;display:flex}.byline-name{color:var(--fg);font-weight:500}.byline-bio{color:var(--muted);margin-top:4px;font-size:15px;line-height:1.5}.byline .socials{margin-top:14px}.tools{margin-top:4px}.tool{grid-template-columns:160px minmax(0,1fr);align-items:baseline;gap:16px;padding:14px 0;display:grid}.tool+.tool{border-top:1px solid var(--border-soft)}.tool-name{font:500 17px / 1.3 var(--font-serif)}.tool-desc{color:var(--muted);font-size:15px;line-height:1.5}.colophon{border-top:1px solid var(--border);color:var(--meta);margin-top:96px;padding:28px 0 48px;font-size:14px}.colophon-cols{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;display:grid}.colophon-title{font:500 12px / 1 var(--font-serif);letter-spacing:1.2px;text-transform:uppercase;color:var(--fg-2);margin-bottom:10px}.colophon li+li{margin-top:6px}.colophon a{color:var(--meta);text-decoration:none}.colophon a:hover{color:var(--accent)}.colophon-note{margin-top:32px}@media (width<=600px){:root{--gutter:16px}.masthead{padding-top:20px}.intro,.page-head{padding-top:44px}.avatar-lg{width:72px;height:72px;font-size:24px}.intro h1,.page-head h1{font-size:34px}.intro h1{margin-top:22px}.bio{font-size:17px}.block{margin-top:52px}.entry-link{grid-template-columns:40px minmax(0,1fr) 16px;gap:12px;margin:0 -8px;padding:14px 8px}.entry-no{display:none}.entry-icon{border-radius:10px;width:40px;height:40px;font-size:20px}.post-link{grid-template-columns:1fr;gap:4px}.article{padding-top:36px}.article-head h1{font-size:30px}.about-head h1{margin-top:22px;font-size:34px}.article-dek,.prose{font-size:17px}.prose h2{font-size:23px}.byline{flex-direction:column}.tool{grid-template-columns:1fr;gap:2px}.colophon-cols{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (prefers-reduced-motion:no-preference){.intro .wave{animation:wave 2.4s var(--ease) .6s 1}@keyframes wave{0%,60%,to{transform:rotate(0)}10%,30%{transform:rotate(14deg)}20%{transform:rotate(-8deg)}40%{transform:rotate(-4deg)}50%{transform:rotate(10deg)}}}
