:root{--bg: #4a525a;--search-bg: #414951;--c-site: #eee;--c-muted: #aaa;--c-nav: #eee;--c-nav-dim: #aaa;--c-title: #f0f0f0;--c-date: #7f868d;--c-month: #8b9299;--c-summary: #b6bcc2;--c-star: #bbb;--c-body: #eee;--c-ink: #ddd;--c-placeholder: #9aa0a6;--c-rule: #565e66;--f-sans: "Noto Sans SC", system-ui, -apple-system, sans-serif;--f-latin: "Lato", var(--f-sans);--fs-site: 25px;--fs-tagline:15px;--fs-nav: 16px;--fs-title: 19px;--fs-star: 16px;--fs-date: 13px;--fs-month: 13px;--fs-summary:15px;--fs-smallprint:16px;--fs-article-title: 25px;--fs-article-date: 16px;--fs-article-body: 16px;--fs-h2: 17px;--fs-toc-label: 15px;--fs-toc-link: 16px;--fs-tag-label: 15px;--fs-tag-link: 16px;--fs-pn-label: 15px;--fs-pn-link: 16px;--fs-search: 13px;--ls-label: 3px;--shell-w: 1000px;--shell-pad: 50px;--inset: 41px;--home-w: 720px;--nav-w: 110px;--body-gap: 40px;--article-body-w: 600px;--article-gap: 60px;--search-w: 160px;--header-pad-top: 59px;--header-pad-bottom: 69px;--back-pad-top: 40px;--nav-gap: 16px;--nav-pad-top: 24px;--month-pad: 24px 0 12px 0;--post-gap: 24px;--post-pad-bottom: 48px;--dateline-pad: 8px 0 16px 0;--para-pad-bottom: 24px;--meta-pad: 6px 0 34px 0;--tags-pad-top: 16px;--tags-gap: 10px;--pn-pad-top: 36px;--toc-gap: 12px;--footer-pad-top: 64px;--footer-pad-top-article: 110px;--footer-pad-bottom: 80px}*{box-sizing:border-box;margin:0;padding:0}html{background:var(--bg);color:var(--c-body);font-family:var(--f-sans);font-size:16px;line-height:1.8;-webkit-font-smoothing:antialiased}body{min-height:100vh}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}::selection{background:#5a646e;color:#fff}.shell{max-width:var(--shell-w);margin:0 auto;padding:0 var(--shell-pad)}.home-body{display:flex;gap:var(--body-gap);max-width:var(--home-w);margin:0 auto}.main{flex:1 1 auto;min-width:0}.month{padding:var(--month-pad)}.month-label{font-size:var(--fs-month);color:var(--c-month);letter-spacing:var(--ls-label);line-height:1.4}.post{padding-bottom:var(--post-gap)}.month>.post+.post{border-top:1px solid var(--c-rule);padding-top:var(--post-gap)}.month>.post:last-child{padding-bottom:var(--post-pad-bottom)}.title-row{display:flex;align-items:center;gap:8px}.post-title{font-size:var(--fs-title);font-weight:500;color:var(--c-title);letter-spacing:1px;line-height:1.4;text-decoration:none}.post-title:hover{text-decoration:underline;text-underline-offset:3px}.star{font-family:var(--f-latin);font-size:var(--fs-star);color:var(--c-star);flex-shrink:0}.dateline{font-family:var(--f-latin);font-size:var(--fs-date);color:var(--c-date);padding:var(--dateline-pad);letter-spacing:.4px;line-height:1.4}.summary{font-size:var(--fs-summary);color:var(--c-summary);line-height:1.8}.smallprint{padding:var(--footer-pad-top) 0 var(--footer-pad-bottom)}.smallprint-inner{max-width:var(--home-w);margin:0 auto;font-size:var(--fs-smallprint);color:var(--c-muted);letter-spacing:.3px;line-height:1.8}.smallprint-article{padding-top:var(--footer-pad-top-article)}.smallprint-article .smallprint-inner{max-width:none;padding-left:var(--inset)}.back-bar{padding:var(--back-pad-top) 0 var(--post-gap) var(--inset)}.back-link{font-size:var(--fs-tagline);color:var(--c-muted);letter-spacing:1px;line-height:1.4}.back-link:hover{text-decoration:underline;text-underline-offset:3px}.article-content{display:flex;gap:var(--article-gap);padding-left:var(--inset);align-items:flex-start}.article-body{width:var(--article-body-w);flex-shrink:0;min-width:0}.article-title{font-size:var(--fs-article-title);font-weight:500;color:var(--c-body);line-height:1.4;letter-spacing:.4px}.article-meta{padding:var(--meta-pad)}.article-date{font-family:var(--f-latin);font-size:var(--fs-article-date);color:var(--c-muted);letter-spacing:.4px;line-height:1.4}.prose{font-size:var(--fs-article-body);color:var(--c-body);line-height:1.8}.prose>*{margin-bottom:var(--para-pad-bottom)}.prose p{margin-bottom:var(--para-pad-bottom)}.prose h2,.prose h3,.prose h4{font-weight:600;color:var(--c-body);line-height:1.4;scroll-margin-top:24px}.prose h2{font-size:var(--fs-h2);font-weight:400;color:#ccc;letter-spacing:var(--ls-label);margin:50px 0 12px}.prose h3{font-size:17px;margin:32px 0 12px}.prose h4{font-size:16px;margin:24px 0 10px}.prose a{color:var(--c-ink);text-decoration:underline;text-underline-offset:3px}.prose strong{color:#fff;font-weight:700}.prose em{font-style:italic}.prose ul,.prose ol{padding-left:24px;margin-bottom:var(--para-pad-bottom)}.prose li{margin-bottom:6px}.prose blockquote{border-left:1px solid var(--c-rule);padding:0 0 0 16px;margin:0 0 var(--para-pad-bottom) 0;color:var(--c-summary);font-style:italic}.prose code{font-family:SFMono-Regular,JetBrains Mono,Consolas,monospace;font-size:.9em;background:#414951;padding:2px 6px;border-radius:3px}.prose pre{background:#3d444c;padding:16px 18px;border-radius:4px;overflow-x:auto;margin:0 0 var(--para-pad-bottom) 0;line-height:1.6}.prose pre code{background:none;padding:0;font-size:.88em}.prose hr{border:none;border-top:1px solid var(--c-rule);margin:32px 0}.prose img{max-width:100%;height:auto}.prose table{width:100%;border-collapse:collapse;margin-bottom:var(--para-pad-bottom)}.prose th,.prose td{border:1px solid var(--c-rule);padding:8px 12px;text-align:left}.toc{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:var(--toc-gap);padding-top:6px}.toc-label{font-size:var(--fs-toc-label);color:var(--c-muted);letter-spacing:var(--ls-label);line-height:1.4}.toc-item{font-size:var(--fs-toc-link);color:var(--c-ink);line-height:1.4;padding-bottom:3px;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.toc-item.h3{padding-left:16px;font-size:15px}.tags{display:flex;align-items:center;flex-wrap:wrap;gap:var(--tags-gap);padding-top:var(--tags-pad-top)}.tag-label{font-size:var(--fs-tag-label);color:var(--c-muted);letter-spacing:var(--ls-label);line-height:1.4}.tag-link{font-size:var(--fs-tag-link);color:var(--c-ink);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.pn{display:flex;justify-content:space-between;gap:24px;padding-top:var(--pn-pad-top);margin-top:8px;border-top:1px solid var(--c-rule)}.pn-item{display:flex;flex-direction:column;gap:8px;max-width:48%}.pn-item.next{align-items:flex-end;text-align:right}.pn-label{font-size:var(--fs-pn-label);color:var(--c-muted);letter-spacing:var(--ls-label);line-height:1.4}.pn-link{font-size:var(--fs-pn-link);color:var(--c-ink);line-height:1.4;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.pn-empty{font-size:var(--fs-pn-link);color:var(--c-date)}@media(max-width:760px){.shell{padding:0 18px}.home-body{flex-direction:column;gap:20px;max-width:none}.main{width:100%}.article-content{flex-direction:column;padding-left:0;gap:28px}.back-bar{padding:24px 0 16px}.article-body{width:100%}.toc{order:-1;width:100%;border:1px solid var(--c-rule);border-radius:4px;padding:16px 18px}.pn{flex-direction:column;gap:20px}.pn-item,.pn-item.next{max-width:100%;align-items:flex-start;text-align:left}.smallprint-inner,.smallprint-article .smallprint-inner{max-width:none;padding:0}.smallprint,.smallprint-article{padding-top:40px;padding-bottom:40px}}.search{--pf-font: var(--f-sans);--pf-text: var(--c-body);--pf-text-secondary: var(--c-muted);--pf-text-muted: var(--c-placeholder);--pf-background: var(--search-bg);--pf-border: #888;--pf-border-focus: #b6bcc2;--pf-hover: #4a525a;--pf-mark: var(--c-body);--pf-input-height: 26px;--pf-input-font-size: var(--fs-search);--pf-border-radius: 4px;--pf-shadow-md: none;--pf-dropdown-z-index: 10;--pf-searchbox-dropdown-max-height: 320px}:is(*,#\#):is(*,#\#):is(*,#\#):is(*,#\#) .search .pf-searchbox-input{padding:0 8px}:is(*,#\#):is(*,#\#):is(*,#\#):is(*,#\#) .search .pf-searchbox-input:focus-visible{border-color:#b6bcc2;box-shadow:none}:is(*,#\#):is(*,#\#):is(*,#\#):is(*,#\#) .search .pf-searchbox-input-wrapper:before{content:none}:is(*,#\#):is(*,#\#):is(*,#\#):is(*,#\#) .search .pf-searchbox-dropdown{top:calc(100% + 4px);left:auto;right:0;width:280px;border:1px solid var(--c-rule);border-radius:4px;box-shadow:none;padding:8px;overflow-y:auto}:is(*,#\#):is(*,#\#):is(*,#\#):is(*,#\#) .search .pf-searchbox-result{padding:6px 8px;min-height:0;border-radius:3px;color:var(--c-ink)}:is(*,#\#):is(*,#\#):is(*,#\#):is(*,#\#) .search .pf-searchbox-result:hover{background:var(--pf-hover);text-decoration:none}:is(*,#\#):is(*,#\#):is(*,#\#):is(*,#\#) .search .pf-searchbox-result-title{font-size:14px;color:var(--c-body)}:is(*,#\#):is(*,#\#):is(*,#\#):is(*,#\#) .search .pf-searchbox-result-excerpt{color:var(--c-muted)}:is(*,#\#):is(*,#\#):is(*,#\#):is(*,#\#) .search .pf-searchbox-footer{display:none}
