main.blog-post{padding-top:48px}.blog-post .post-layout{grid-template-columns:minmax(0,8fr) minmax(0,4fr);align-items:start;gap:24px;display:grid}.blog-post .post-article{min-width:0}.blog-post .post-head{margin-bottom:32px}.blog-post .post-head h1{max-width:24em;color:var(--ws-ink);letter-spacing:-.03em;text-wrap:balance;overflow-wrap:break-word;margin:0;font-size:clamp(2rem,1.35rem + 2vw,2.75rem);font-weight:600;line-height:1.15}.blog-post .post-head h1:lang(th){letter-spacing:-.01em;line-height:1.35}.blog-post .post-lede{max-width:38em;color:var(--ws-ink-2);text-wrap:pretty;margin:16px 0 0;font-size:1.1562rem;line-height:1.65}.blog-post .post-byline{align-items:center;gap:12px;margin-top:24px;display:flex}.blog-post .post-byline p{flex-direction:column;margin:0;line-height:1.4;display:flex}.blog-post .post-byline b{letter-spacing:-.01em;font-size:.9375rem;font-weight:600}.blog-post .post-byline .ws-dots{color:var(--ws-muted);font-family:var(--ws-mono);font-size:.75rem}.blog-post .post-doc{box-shadow:var(--ws-shadow)}.blog-post .post-doc-bar{flex-wrap:nowrap;align-items:center;padding-block:11px}.blog-post .post-doc-bar p{min-width:0;color:var(--ws-muted);font-family:var(--ws-mono);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.75rem;overflow:hidden}.blog-post .post-doc-bar p span{color:var(--ws-accent)}.blog-post .ws-lang-tag{font-family:var(--ws-mono);font-size:.6875rem;line-height:1.4}.blog-post .hero-image{border-bottom:1px solid var(--ws-line);margin:0}.blog-post .hero-image img{width:100%;height:auto;display:block}.blog-post .post-topics{border-top:1px solid var(--ws-line);background:var(--ws-surface-2);color:var(--ws-muted);font-family:var(--ws-mono);flex-wrap:wrap;align-items:baseline;gap:4px 16px;margin:0;padding:14px clamp(20px,6%,48px);font-size:.75rem;display:flex}.blog-post .post-topics>span:first-child{letter-spacing:.05em;text-transform:uppercase}.blog-post .post-footer{flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:24px;display:flex}.blog-post .prose{max-width:none;color:var(--ws-ink-2);overflow-wrap:break-word;margin:0;padding:40px clamp(20px,6%,48px) 16px;font-size:1.0625rem;line-height:1.8}.blog-post .prose:lang(th){line-height:1.9}.blog-post .prose :is(h2,h3,h4),.blog-post .prose strong{color:var(--ws-ink);font-weight:600}.blog-post .prose :is(h2,h3,h4){letter-spacing:-.015em;overflow-wrap:break-word;line-height:1.35}.blog-post .prose :is(h2,h3,h4):lang(th){letter-spacing:0;line-height:1.5}.blog-post .prose h2{border-top:1px solid var(--ws-line);margin:2.25em 0 .75em;padding-top:1em;font-size:1.5rem}.blog-post .prose>:first-child{border-top:0;margin-top:0;padding-top:0}.blog-post .prose h3{margin:1.75em 0 .5em;font-size:1.1875rem}.blog-post .prose h4{margin:1.5em 0 .4em;font-size:1.0625rem}.blog-post .prose a,.blog-post .prose a:visited{color:var(--ws-accent);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, currentColor 45%, transparent);text-decoration-color:color-mix(in srgb, currentColor 45%, transparent);text-underline-offset:.24em;border-bottom:0;text-decoration-thickness:1px}.blog-post .prose a:hover{color:var(--ws-accent-strong);text-decoration-color:currentColor}.blog-post .prose li::marker{color:var(--ws-muted)}.blog-post .prose ol>li::marker{font-family:var(--ws-mono);font-size:.875em}.blog-post .prose blockquote{border-left:3px solid var(--ws-accent-bar);background:var(--ws-surface-2);color:var(--ws-ink-2);border-radius:0 10px 10px 0;margin:1.5em 0;padding:14px 20px}.blog-post .prose :not(pre)>code{background:var(--ws-surface-2);box-shadow:inset 0 0 0 1px var(--ws-line);color:var(--ws-ink);font-family:var(--ws-mono);border-radius:5px;padding:.12em .4em;font-size:.875em}.blog-post .prose pre{border:1px solid var(--ws-line);font-family:var(--ws-mono);border-radius:10px;margin:1.5em 0;padding:16px 20px;font-size:.8438rem;line-height:1.7}.blog-post .prose pre code{font-family:inherit}.blog-post .prose pre[data-language]:not([data-language=plaintext]):before{content:attr(data-language);color:#8b949e;letter-spacing:.05em;text-transform:uppercase;margin-bottom:8px;font-size:.6875rem;display:block}.blog-post .prose img{border:1px solid var(--ws-line);background:var(--ws-surface-2);border-radius:10px;margin:1.75em auto}.blog-post .prose table{border:1px solid var(--ws-line);border-collapse:separate;border-spacing:0;border-radius:10px;width:max-content;max-width:100%;margin:1.5em 0;font-size:.9375rem;display:block;overflow-x:auto}.blog-post .prose :is(th,td){border-bottom:1px solid var(--ws-line);vertical-align:baseline;padding:10px 16px;line-height:1.55}.blog-post .prose tr:last-child>td{border-bottom:0}.blog-post .prose th{background:var(--ws-surface-2);color:var(--ws-muted);font-family:var(--ws-mono);letter-spacing:.04em;text-transform:uppercase;font-size:.75rem;font-weight:500}.blog-post .prose hr{border-top-color:var(--ws-line)}.blog-post .post-rail{scrollbar-width:thin;scrollbar-color:var(--ws-line-strong) transparent;gap:16px;max-height:calc(100dvh - 3.875rem - 48px);display:grid;position:sticky;top:calc(3.875rem + 24px);overflow-y:auto}.blog-post .post-rail h2{letter-spacing:-.005em;margin:0;font-size:.9062rem;font-weight:600;line-height:1.6}.blog-post .post-rail ol,.blog-post .post-rail ul{margin:0;padding:0;list-style:none}.blog-post .post-toc ol{padding-block:8px}.blog-post .post-toc ol ol{padding-block:0}.blog-post .post-toc a{color:var(--ws-ink-2);align-items:baseline;gap:10px;padding:6px 20px;font-size:.875rem;line-height:1.5;text-decoration:none;display:flex}.blog-post .post-toc a span{width:1.25rem;color:var(--ws-muted);font-family:var(--ws-mono);flex:none;font-size:.6875rem}.blog-post .post-toc li[data-depth="3"] a{color:var(--ws-muted);padding-left:calc(30px + 1.25rem);font-size:.8438rem}.blog-post .post-toc a:hover{background:var(--ws-surface-2);color:var(--ws-ink)}.blog-post .post-toc a:focus-visible{outline-offset:-3px;border-radius:12px}.blog-post .post-more li{flex-direction:column;gap:2px;padding:12px 20px;display:flex;position:relative}.blog-post .post-more li+li{border-top:1px solid var(--ws-line)}.blog-post .post-more li:hover{background:var(--ws-surface-2)}.blog-post .post-more li a{color:var(--ws-ink);font-size:.9062rem;font-weight:600;line-height:1.45;text-decoration:none}.blog-post .post-more li a:after{content:"";position:absolute;inset:0}.blog-post .post-more li:hover a{text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:1px}.blog-post .post-more li a:focus-visible{outline:none}.blog-post .post-more li a:focus-visible:after{outline:2px solid var(--ws-accent);outline-offset:-3px;border-radius:12px}.blog-post .post-more time{color:var(--ws-muted);font-family:var(--ws-mono);font-size:.75rem}@media (max-width:60em){.blog-post .post-layout{grid-template-columns:minmax(0,1fr);gap:40px}.blog-post .post-toc{display:none}.blog-post .post-rail{max-height:none;position:static;overflow:visible}}@media (max-width:47.5em){main.blog-post{padding-top:32px}.blog-post .post-head{margin-bottom:24px}.blog-post .post-lede{font-size:1.0625rem}.blog-post .post-doc{margin-inline:calc(-1 * var(--ws-gutter));box-shadow:none;border-inline:0;border-radius:0}.blog-post .post-doc-bar{padding-inline:var(--ws-gutter)}.blog-post .prose{padding:28px var(--ws-gutter) 8px}.blog-post .prose h2{font-size:1.3125rem}.blog-post .post-topics{padding-inline:var(--ws-gutter)}.blog-post .post-footer .ws-btn{flex:10rem}}
