body{font-family:dejavu sans,liberation sans,Arial,sans-serif}code,pre,kbd,samp,.date{font-family:dejavu sans mono,liberation mono,courier new,monospace}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}:root{color-scheme:light dark;--bg-color-light:#f8fafc;--bg-color-dark:#0f172a;--bg-color:var(--bg-color-light);--bg-surface-light:#ffffff;--bg-surface-dark:#1e293b;--bg-surface:var(--bg-surface-light);--bg-code-light:#f1f5f9;--bg-code-dark:#020617;--bg-code:var(--bg-code-light);--text-main-light:#334155;--text-main-dark:#cbd5e1;--text-main:var(--text-main-light);--text-heading-light:#0f172a;--text-heading-dark:#f8fafc;--text-heading:var(--text-heading-light);--text-muted-light:#526177;--text-muted-dark:#94a3b8;--text-muted:var(--text-muted-light);--accent-color-light:#1d4ed8;--accent-color-dark:#38bdf8;--accent-color:var(--accent-color-light);--accent-hover-light:#1d4ed8;--accent-hover-dark:#7dd3fc;--accent-hover:var(--accent-hover-light);--border-color-light:#cbd5e1;--border-color-dark:#334155;--border-color:var(--border-color-light);--bg-hn-author-light:#dbeafe;--bg-hn-author-dark:#172554;--bg-hn-author:var(--bg-hn-author-light)}@media(prefers-color-scheme:dark){:root{--bg-color:var(--bg-color-dark);--bg-surface:var(--bg-surface-dark);--bg-code:var(--bg-code-dark);--text-main:var(--text-main-dark);--text-heading:var(--text-heading-dark);--text-muted:var(--text-muted-dark);--accent-color:var(--accent-color-dark);--accent-hover:var(--accent-hover-dark);--border-color:var(--border-color-dark);--bg-hn-author:var(--bg-hn-author-dark)}}:root:has(>head>meta[name=color-scheme][content=light]){--bg-color:var(--bg-color-light);--bg-surface:var(--bg-surface-light);--bg-code:var(--bg-code-light);--text-main:var(--text-main-light);--text-heading:var(--text-heading-light);--text-muted:var(--text-muted-light);--accent-color:var(--accent-color-light);--accent-hover:var(--accent-hover-light);--border-color:var(--border-color-light);--bg-hn-author:var(--bg-hn-author-light)}:root:has(>head>meta[name=color-scheme][content=dark]){--bg-color:var(--bg-color-dark);--bg-surface:var(--bg-surface-dark);--bg-code:var(--bg-code-dark);--text-main:var(--text-main-dark);--text-heading:var(--text-heading-dark);--text-muted:var(--text-muted-dark);--accent-color:var(--accent-color-dark);--accent-hover:var(--accent-hover-dark);--border-color:var(--border-color-dark);--bg-hn-author:var(--bg-hn-author-dark)}:root:has(>head>meta[name=color-scheme][content=light]){color-scheme:light}:root:has(>head>meta[name=color-scheme][content=dark]){color-scheme:dark}.theme-to-light{display:none}@media(prefers-color-scheme:dark){:root:not(:has(>head>meta[name=color-scheme][content=light])){.theme-to-dark{display:none}.theme-to-light{display:inline}}}:root:has(>head>meta[name=color-scheme][content=dark]){.theme-to-dark{display:none}.theme-to-light{display:inline}}body{max-width:800px;margin:auto;padding:2rem 1rem;width:100%;box-sizing:border-box;line-height:1.6;background-color:var(--bg-color);color:var(--text-main);font-size:1.125rem}main{hyphens:auto}.error-page{text-align:center;margin-top:5rem}::selection{background-color:var(--accent-color);color:var(--bg-color)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}h1,h2,h3,h4,h5,h6{color:var(--text-heading);line-height:1.3;margin-top:2rem;margin-bottom:1rem;font-weight:600;scroll-margin-top:2rem;text-wrap:balance}a{color:var(--accent-color);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;transition:color .2s ease,text-decoration-color .2s ease}a:hover{color:var(--accent-hover);text-decoration-color:var(--accent-hover)}blockquote{background:var(--bg-surface);border-left:4px solid var(--accent-color);padding:.75rem 1.25rem;margin:1.5rem 0;border-radius:0 6px 6px 0;color:var(--text-main);font-style:italic}hr{border:0;border-bottom:1px dashed var(--border-color);margin:2.5rem 0}nav{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;margin-bottom:2.5rem}nav .menu{margin-bottom:0}.menu{padding:0;list-style:none;display:flex;gap:.5rem;margin:0 0 1.5rem -1rem;flex-wrap:wrap}.menu li{display:inline-block}.menu a{color:var(--text-heading);font-weight:500;text-decoration:none;padding:.75rem 1rem;border-radius:6px;transition:background-color .2s ease,color .2s ease}.menu a:hover{background-color:var(--bg-surface);color:var(--accent-hover)}.theme-toggle-btn{background:0 0;border:none;color:var(--text-heading);cursor:pointer;font-size:1.25rem;padding:.5rem;transition:color .2s ease}.theme-toggle-btn:hover{color:var(--accent-hover)}.article-meta{text-align:left}.article-meta h1{font-size:2.2rem;margin-top:0;margin-bottom:.75rem;word-wrap:break-word;overflow-wrap:break-word;hyphens:auto;line-height:1.25;letter-spacing:-.02em}.article-meta .title{background:0 0}.article-meta .author,.article-meta .date{margin:0;font-size:.95rem;color:var(--text-muted);font-weight:400}img,iframe,video{max-width:100%;height:auto;border-radius:6px;display:block;margin:1.5rem auto}img{max-height:80dvh;object-fit:contain}@media(min-width:768px){img{max-width:100%}}figure{margin:2rem 0;text-align:center;width:100%}figure img{margin:0 auto;width:100%}pre{background:var(--bg-code);border:1px solid var(--border-color);border-radius:6px;padding:1.25rem;overflow-x:auto;font-size:.9em;line-height:1.45}code{background:var(--bg-surface);color:var(--text-heading);padding:.2em .4em;border-radius:4px;font-size:.85em}pre code{background:0 0;padding:0;color:inherit}table{width:100%;margin:2rem 0;border-collapse:collapse}table th,table td{padding:.75rem 1rem;border-bottom:1px solid var(--border-color);text-align:left}table th{background:var(--bg-surface);color:var(--text-heading);font-weight:600;border-bottom:2px solid var(--border-color)}.table-scroll{overflow-x:auto;margin-block:2rem}.table-scroll table{margin-block:0}.text-center{text-align:center}.text-right{text-align:right}ul,ol{padding-left:1.5rem}.posts-list,.terms{list-style:none;padding-left:0}.posts-list li{margin-bottom:1rem;display:grid;grid-template-columns:max-content minmax(0,1fr);align-items:baseline;gap:1.5rem}.posts-list li a{position:relative}li .date{color:var(--text-muted);font-size:.9rem;white-space:nowrap}.hn-thread{max-width:100%;word-wrap:break-word}.hn-thread-header{display:flex;justify-content:space-between;align-items:center;margin-top:.5rem;margin-bottom:1rem;flex-wrap:wrap;gap:1rem}.hn-thread-stats{color:var(--text-muted);font-size:.9rem}.hn-content.hn-author{background:var(--bg-hn-author);border-color:var(--accent-color);border-width:2px}.hn-comment{max-width:100%;word-wrap:break-word;margin-top:1rem;border-radius:6px}.hn-content{padding:1rem;border:1px solid var(--border-color);background:var(--bg-surface);border-radius:6px}.hn-meta{color:var(--text-muted);font-size:.85rem;margin-bottom:.5rem}.hn-meta-author-tag{color:var(--accent-color);font-weight:600}.hn-text{overflow-wrap:break-word;overflow-wrap:anywhere;font-size:.95rem}.hn-replies{border-left:2px solid var(--border-color);padding-left:1.5rem;margin-left:.5rem}@media(max-width:600px){.hn-replies{padding-left:.75rem;margin-left:.25rem}.hn-content{padding:.75rem}.hn-thread-header{flex-wrap:nowrap;gap:.5rem}.hn-thread-stats{font-size:.78rem;line-height:1.2}.hn-jump-top{flex-shrink:0}.hn-thread .hn-jump-link{padding:.3rem .55rem;font-size:.72rem;white-space:nowrap}.hn-jump-label{display:none}}.hn-jump-controls{display:flex;gap:1rem;margin-bottom:1.5rem;font-size:.85rem;justify-content:flex-end}.hn-jump-top{margin-bottom:0;margin-left:auto}.hn-jump-bottom{margin-top:1.5rem;justify-content:flex-end}.hn-jump-link{position:relative;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;padding:.4rem .8rem;background-color:var(--bg-surface);border:1px solid var(--border-color);border-radius:6px;color:var(--text-main);text-decoration:none;font-weight:500;transition:background-color .2s ease,border-color .2s ease,color .2s ease}.hn-jump-label{margin-left:.25em}.hn-jump-link:hover{background-color:var(--bg-code);border-color:var(--accent-color);color:var(--accent-hover);text-decoration:none}footer{margin-top:4rem;text-align:center;color:var(--text-muted);font-size:.9rem}footer a{color:var(--text-muted);display:inline-block;padding:.5rem;text-decoration-color:transparent}.build-hash{display:inline-block;padding:.5rem;font-variant-numeric:tabular-nums;font-family:var(--mono-font,monospace)}footer a:hover{color:var(--accent-hover);text-decoration-color:var(--accent-hover)}.rss-link{vertical-align:middle;margin-left:.25rem}.pinned-marker{color:var(--accent-color);position:absolute;left:-.75rem;transform:translateX(-50%);text-decoration:none}main{overflow-wrap:anywhere}main p{text-wrap:pretty}.posts-list li a{min-inline-size:0}.hn-replies .hn-replies .hn-replies{margin-inline-start:0;padding-inline-start:0;border-inline-start:0}.hn-thread-header{min-inline-size:0}.skip-link{position:fixed;inset-block-start:.5rem;inset-inline-start:.5rem;z-index:1;padding:.75rem 1rem;background:var(--bg-surface)}.skip-link:not(:focus){clip-path:inset(50%);inline-size:1px;block-size:1px;overflow:hidden}:where(a,button,[tabindex]):focus-visible{outline:3px solid var(--accent-color);outline-offset:3px}.menu a{display:inline-block}.menu a[aria-current=page]{text-decoration:underline}.theme-toggle-btn,.hn-jump-link,.rss-link{min-inline-size:24px;min-block-size:24px}.theme-toggle-btn[hidden]{display:none}@media(pointer:coarse){.theme-toggle-btn,.rss-link{min-inline-size:44px;min-block-size:44px}.hn-jump-link::after{content:"";position:absolute;top:50%;left:50%;width:100%;height:100%;min-width:44px;min-height:44px;transform:translate(-50%,-50%)}}.pdf-container{inline-size:100%;block-size:var(--pdf-height,80dvh);max-block-size:50rem;min-block-size:20rem;margin-block:1.5rem;border:1px solid var(--border-color);border-radius:6px}.pdf-container object{inline-size:100%;block-size:100%}.pdf-fallback{padding:2rem;text-align:center}@media(forced-colors:active){:root{--bg-color:Canvas;--bg-surface:Canvas;--bg-code:Canvas;--text-main:CanvasText;--text-heading:CanvasText;--text-muted:CanvasText;--accent-color:LinkText;--accent-hover:LinkText;--border-color:CanvasText;--bg-hn-author:Canvas}}.footnote-backref{display:inline-block;min-inline-size:24px;min-block-size:24px;text-align:center}