.blog-page{--b-text:var(--text,#111);--b-dim:var(--text-dim,#444);--b-faint:var(--text-faint,#777);--b-line:var(--line,#bbb);--b-line2:var(--line-bright,#888);--b-accent:var(--neon,#111);--b-raised:var(--bg-raised,#fff);--b-alt:var(--bg-panel-alt,#f4f4f4);--b-mono:var(--font-display,"Share Tech Mono","Courier New",monospace)}.blog-page *,.blog-page *:before,.blog-page *:after{box-sizing:border-box}.blog-tools{margin:18px 0 8px}.blog-topics-wrap{position:relative;margin:12px 0 10px}.blog-topics{display:flex;gap:14px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-padding-inline:2px;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:transparent;scrollbar-width:none;-ms-overflow-style:none;overscroll-behavior-x:contain;padding:8px 2px 14px;margin:0 -2px}.blog-topics::-webkit-scrollbar{display:none}.blog-topics-wrap .blog-topics-btn{position:absolute;top:calc(8px + (100% - 22px)*.28);box-sizing:border-box;width:36px;min-width:0;max-width:36px;height:36px;margin:0;display:flex;align-items:center;justify-content:center;padding:0 0 3px;font-size:1.6em;font-weight:400;line-height:1;color:var(--b-text);background:var(--b-raised);border:1px solid var(--b-line2);border-radius:0!important;cursor:pointer;z-index:2;box-shadow:0 2px 8px #0003}.blog-topics-wrap .blog-topics-btn[hidden]{display:none}.blog-topics-wrap .blog-topics-btn:hover,.blog-topics-wrap .blog-topics-btn:focus-visible{background:var(--b-accent);color:var(--b-raised);border-color:var(--b-accent)}.blog-topics-wrap .blog-topics-btn:focus-visible{outline:2px solid var(--b-accent);outline-offset:2px}.blog-topics-wrap .blog-topics-btn.is-prev{left:-6px}.blog-topics-wrap .blog-topics-btn.is-next{right:-6px}.blog-topic{flex:0 0 calc((100% - 42px)/4);scroll-snap-align:start;display:flex;flex-direction:column;min-width:0;overflow:hidden;color:var(--b-text);text-decoration:none;background:var(--b-raised);border:1px solid var(--b-line);border-radius:0;transition:border-color .15s,transform .15s,box-shadow .15s}@media (hover:hover){.blog-topic:hover{border-color:var(--b-accent);transform:translateY(-2px);box-shadow:0 6px 16px #00000024}}.blog-topic:focus-visible{outline:2px solid var(--b-accent);outline-offset:2px}.blog-topic-img{display:block;position:relative;aspect-ratio:16/9;background:var(--b-alt);overflow:hidden;border-bottom:3px solid var(--b-line2)}.blog-topic-img img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .3s}@media (hover:hover){.blog-topic:hover .blog-topic-img img{transform:scale(1.04)}}.blog-topic-img.is-empty{background:repeating-linear-gradient(45deg,var(--b-alt),var(--b-alt) 10px,var(--b-raised) 10px,var(--b-raised) 20px)}.blog-topic-body{display:flex;flex-direction:column;gap:5px;padding:11px 14px 13px;flex:1}.blog-topic-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.blog-topic-name{font-size:1.02em;font-weight:700;line-height:1.3;overflow-wrap:anywhere}.blog-topic-count{flex:0 0 auto;font-family:var(--b-mono);font-size:.8em;color:var(--b-faint);border:1px solid var(--b-line);padding:0 7px;line-height:1.6}.blog-topic-desc{font-size:.86em;line-height:1.45;color:var(--b-dim);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.blog-topic.is-active{border-color:var(--b-accent);box-shadow:0 0 0 1px var(--b-accent)}.blog-topic.is-active .blog-topic-img{border-bottom-color:var(--b-accent)}.blog-topic.is-active .blog-topic-body{background:var(--b-accent);color:var(--b-raised)}.blog-topic.is-active .blog-topic-count{color:inherit;border-color:currentColor}.blog-topic.is-active .blog-topic-desc{color:inherit;opacity:.85}@media (max-width:900px){.blog-topic{flex-basis:calc((100% - 14px)/2)}}@media (max-width:560px){.blog-topic{flex-basis:100%}.blog-topics-wrap .blog-topics-btn{width:32px;max-width:32px;height:32px}.blog-topics-wrap .blog-topics-btn.is-prev{left:2px}.blog-topics-wrap .blog-topics-btn.is-next{right:2px}}@media (max-width:560px){.blog-topic{scroll-snap-stop:always}}@media (pointer:coarse){.blog-topics-wrap .blog-topics-btn{width:44px;max-width:44px;height:44px}}@media (prefers-reduced-motion:reduce){.blog-topic,.blog-topic-img img{transition:none}.blog-topic:hover,.blog-topic:hover .blog-topic-img img{transform:none}}.blog-status{color:var(--b-faint);font-size:.9em;margin:12px 0}.blog-desc{color:var(--b-dim);margin:10px 0 0}.blog-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:16px 0}@media (max-width:1000px){.blog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.blog-grid{grid-template-columns:minmax(0,1fr)}}.blog-card{display:flex;flex-direction:column;background:var(--b-raised);border:1px solid var(--b-line);border-radius:0;overflow:hidden;min-width:0}.blog-card:hover{border-color:var(--b-line2)}.blog-card-img{display:block;aspect-ratio:16/9;background:var(--b-alt);overflow:hidden}.blog-card-img img{display:block;width:100%;height:100%;object-fit:cover}.blog-card-img.is-empty{display:none}.blog-card-body{display:flex;flex-direction:column;gap:6px;padding:12px 14px 14px;flex:1}.blog-meta{margin:0;color:var(--b-faint);font-size:.8em;font-family:var(--b-mono)}.blog-meta a{color:var(--b-accent);text-decoration:none}.blog-meta a:hover{text-decoration:underline}.blog-card h4{margin:0;font-size:1.02em;line-height:1.35;overflow-wrap:anywhere}.blog-card h4 a{color:var(--b-text);text-decoration:none}.blog-card h4 a:hover,.blog-card h4 a:focus-visible{color:var(--b-accent);text-decoration:underline}.blog-card p.blog-excerpt{margin:0;color:var(--b-dim);font-size:.9em;line-height:1.5;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.blog-empty{padding:24px;border:1px dashed var(--b-line2);color:var(--b-dim);text-align:center}.blog-pager{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:18px 0;flex-wrap:wrap;color:var(--b-faint);font-size:.9em}.blog-pager a{color:var(--b-accent);border:1px solid var(--b-accent);padding:8px 14px;border-radius:0;text-decoration:none}.blog-pager a:hover,.blog-pager a:focus-visible{background:var(--b-accent);color:var(--b-raised)}.blog-crumbs{margin:0 0 14px;font-size:.85em;color:var(--b-faint);font-family:var(--b-mono)}.blog-crumbs a{color:var(--b-accent);text-decoration:none}.blog-crumbs a:hover{text-decoration:underline}.blog-article{max-width:800px;margin:0 auto}.blog-article h1{margin:0 0 10px;font-size:1.7em;line-height:1.25;overflow-wrap:anywhere;color:var(--b-text)}.blog-article .blog-meta{margin:0 0 16px;font-size:.85em}.blog-notice{margin:0 0 16px;padding:10px 14px;border:1px solid var(--b-line2);border-left-width:4px;border-radius:0;background:var(--b-alt);color:var(--b-dim);font-size:.9em;line-height:1.5}.blog-notice.is-draft{border-color:#d9a400;color:var(--b-text)}.blog-hero{margin:0 0 18px}.blog-hero img{display:block;max-width:100%;height:auto;border:1px solid var(--b-line)}.blog-toc{margin:0 0 20px;border:1px solid var(--b-line);background:var(--b-alt)}.blog-toc summary{cursor:pointer;padding:10px 14px;font-family:var(--b-mono);color:var(--b-accent)}.blog-toc summary:focus-visible{outline:2px solid var(--b-accent);outline-offset:-2px}.blog-toc ol,.blog-toc ul{margin:0;padding:0 14px 12px 36px}.blog-toc ul{padding:2px 0 0 18px;list-style:circle}.blog-toc li{margin:4px 0}.blog-toc a{color:var(--b-text);text-decoration:none}.blog-toc a:hover,.blog-toc a:focus-visible{color:var(--b-accent);text-decoration:underline}.blog-content{color:var(--b-text);line-height:1.7;overflow-wrap:anywhere;font-size:1em}.blog-content>:first-child{margin-top:0}.blog-content p{margin:0 0 1em}.blog-content h2,.blog-content h3,.blog-content h4,.blog-content h5,.blog-content h6{margin:1.6em 0 .6em;line-height:1.3;color:var(--b-text);scroll-margin-top:90px}.blog-content h2{font-size:1.4em}.blog-content h3{font-size:1.2em}.blog-content h4,.blog-content h5,.blog-content h6{font-size:1.05em}.blog-content a{color:var(--b-accent);text-decoration:underline;text-underline-offset:2px}.blog-content ul,.blog-content ol{margin:0 0 1em;padding-left:1.5em}.blog-content li{margin:.3em 0}.blog-content img{max-width:100%;height:auto}.blog-content blockquote{margin:1em 0;padding:.6em 1em;border-left:4px solid var(--b-line2);background:var(--b-alt);color:var(--b-dim)}.blog-content blockquote p:last-child{margin-bottom:0}.blog-content pre,.blog-content code{font-family:Share Tech Mono,Courier New,monospace;background:var(--b-alt)}.blog-content code{padding:1px 4px}.blog-content pre{padding:12px;overflow-x:auto;border:1px solid var(--b-line)}.blog-content pre code{padding:0}.blog-content hr{border:0;border-top:1px solid var(--b-line);margin:1.6em 0}.blog-content table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;margin:0 0 1em}.blog-content th,.blog-content td{border:1px solid var(--b-line);padding:6px 10px;text-align:left;vertical-align:top}.blog-content th{background:var(--b-alt)}.blog-content figure{margin:1em 0;max-width:100%}.blog-content figure img{display:block}.blog-content figcaption{margin-top:4px;color:var(--b-faint);font-size:.85em}.blog-content .alignleft{float:left;margin:.3em 1em .6em 0;max-width:50%}.blog-content .alignright{float:right;margin:.3em 0 .6em 1em;max-width:50%}.blog-content .aligncenter{text-align:center;margin-left:auto;margin-right:auto}.blog-content figure.aligncenter img{margin:0 auto}.blog-content:after{content:"";display:block;clear:both}.blog-content details{margin:1em 0;border:1px solid var(--b-line);background:var(--b-alt)}.blog-content summary{cursor:pointer;padding:8px 12px;font-weight:700;color:var(--b-text)}.blog-content details>:not(summary){margin-left:12px;margin-right:12px}.blog-content details[open]>summary{border-bottom:1px solid var(--b-line);margin-bottom:10px}.blog-content .blog-btn{display:inline-block;padding:8px 16px;border:1px solid var(--b-accent);border-radius:2px;color:var(--b-accent);text-decoration:none}.blog-content .blog-btn:hover,.blog-content .blog-btn:focus-visible{background:var(--b-accent);color:var(--b-raised)}.blog-content .blog-media{padding:8px 12px;border:1px solid var(--b-line);background:var(--b-alt)}.blog-content .blog-stat{margin:0 0 .4em;padding:4px 10px;border-left:3px solid var(--b-accent)}.blog-content .blog-col{margin:0 0 1em}@media (max-width:560px){.blog-content .alignleft,.blog-content .alignright{float:none;margin:1em auto;max-width:100%}.blog-article h1{font-size:1.4em}}.blog-tags{display:flex;flex-wrap:wrap;gap:6px;margin:22px 0 0;padding:0;list-style:none}.blog-tags a{display:inline-block;padding:3px 9px;border:1px solid var(--b-line);border-radius:2px;color:var(--b-dim);text-decoration:none;font-size:.82em}.blog-tags a:hover,.blog-tags a:focus-visible{color:var(--b-accent);border-color:var(--b-accent)}.blog-related{margin-top:32px;padding-top:18px;border-top:1px solid var(--b-line)}.blog-related h2{margin:0 0 4px;font-size:1.1em;font-family:var(--b-mono);color:var(--b-accent)}.blog-loop{position:relative;margin:16px 0}.blog-loop-track{display:flex;gap:16px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-padding-inline:2px;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:transparent;scrollbar-width:none;-ms-overflow-style:none;overscroll-behavior-x:contain;padding:2px;margin:0 -2px}.blog-loop-track::-webkit-scrollbar{display:none}.blog-loop-track>.blog-card{flex:0 0 calc((100% - 48px)/4);scroll-snap-align:start}.blog-loop .blog-loop-btn{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;width:36px;min-width:0;max-width:36px;height:36px;margin:0;display:flex;align-items:center;justify-content:center;padding:0 0 3px;font-size:1.6em;font-weight:400;line-height:1;color:var(--b-text);background:var(--b-raised);border:1px solid var(--b-line2);border-radius:0!important;cursor:pointer;z-index:2;box-shadow:0 2px 8px #0003}.blog-loop .blog-loop-btn[hidden]{display:none}.blog-loop .blog-loop-btn:hover,.blog-loop .blog-loop-btn:focus-visible{background:var(--b-accent);color:var(--b-raised);border-color:var(--b-accent)}.blog-loop .blog-loop-btn:focus-visible{outline:2px solid var(--b-accent);outline-offset:2px}.blog-loop .blog-loop-btn.is-prev{left:-6px}.blog-loop .blog-loop-btn.is-next{right:-6px}@media (max-width:1000px){.blog-loop-track>.blog-card{flex-basis:calc((100% - 16px)/2)}}@media (max-width:560px){.blog-loop-track>.blog-card{flex-basis:100%;scroll-snap-stop:always}.blog-loop .blog-loop-btn{width:32px;max-width:32px;height:32px}.blog-loop .blog-loop-btn.is-prev{left:2px}.blog-loop .blog-loop-btn.is-next{right:2px}}@media (pointer:coarse){.blog-loop .blog-loop-btn{width:44px;max-width:44px;height:44px}}@media (prefers-reduced-motion:reduce){.blog-loop-track{scroll-behavior:auto}}.blog-foot{margin:24px 0 0;color:var(--b-faint);font-size:.85em;line-height:1.5}a.tag-autolink{text-decoration:underline dotted;text-underline-offset:3px}.blog-loop .blog-loop-btn:active:not(:disabled){transform:translateY(-50%)}
