pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
  Theme: GitHub
  Description: Light theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Outdated base version: https://github.com/primer/github-syntax-light
  Current colors taken from GitHub's CSS
*/.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}:root{--bg-base: #F0F0EB;--bg-surface: #FDFDFB;--bg-panel: #E6E6E1;--text-primary: #111111;--text-secondary: #4A4A48;--text-tertiary: #888884;--accent-color: #E65100;--border-color: #A3A39F;--border-hard: #1A1A1A;--nav-bg: rgba(240, 240, 235, .96);--grid-opacity: .06;--space-xs: .5rem;--space-sm: 1.25rem;--space-md: 2.5rem;--space-lg: 6rem;--space-xl: 12rem;--max-width: 960px;--header-height: 72px;--font-sans: "Inter", system-ui, sans-serif;--font-pixel: "Silkscreen", monospace;--font-mono: "Menlo", "Consolas", monospace;--leading-base: 1.7;--rgb-shift-x: 0px;--rgb-shift-y: 0px}[data-status=OFFLINE]{--bg-base: #0F0F10;--bg-surface: #18181A;--bg-panel: #222224;--text-primary: #E0E0E0;--text-secondary: #A0A0A0;--text-tertiary: #555555;--accent-color: #00E676;--border-color: #333333;--border-hard: #555555;--nav-bg: rgba(15, 15, 16, .96);--grid-opacity: .1}:root{--prose-width: 42rem}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;font-family:var(--font-sans);font-size:1rem;line-height:var(--leading-base);color:var(--text-primary);background-color:var(--bg-base);background-image:linear-gradient(rgba(128,128,128,var(--grid-opacity)) 1px,transparent 1px),linear-gradient(90deg,rgba(128,128,128,var(--grid-opacity)) 1px,transparent 1px);background-size:24px 24px;background-position:center top}a{color:var(--accent-color);text-decoration:none}a:hover{text-decoration:underline}.blog-shell{display:flex;flex-direction:column;min-height:100vh}.blog-header{position:sticky;top:0;z-index:10;height:var(--header-height);border-bottom:2px solid var(--border-hard);background:var(--nav-bg)}.blog-header-inner{max-width:var(--max-width);margin:0 auto;padding:0 var(--space-sm);height:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs)}.blog-logo{font-family:var(--font-mono);font-size:.85rem;font-weight:500;letter-spacing:.04em;color:var(--text-primary);text-decoration:none}.blog-logo:hover{color:var(--accent-color);text-decoration:none}.blog-nav{display:flex;gap:var(--space-sm);font-family:var(--font-mono);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}.blog-nav a{color:var(--text-secondary)}.blog-nav a:hover{color:var(--accent-color);text-decoration:none}.blog-main{flex:1;max-width:var(--max-width);width:100%;margin:0 auto;padding:var(--space-md) var(--space-sm) var(--space-lg)}.blog-footer{max-width:var(--max-width);margin:0 auto;padding:var(--space-sm) var(--space-sm) var(--space-md);font-family:var(--font-mono);font-size:.7rem;color:var(--text-tertiary);border-top:2px solid var(--border-hard)}.page-title{font-family:var(--font-mono);font-size:clamp(1.25rem,3vw,1.75rem);font-weight:500;margin:0 0 .5rem;letter-spacing:.02em}.page-lead{color:var(--text-secondary);margin:0 0 var(--space-md);max-width:var(--prose-width)}.page-meta{margin:-1rem 0 1.5rem;font-size:.9rem}.empty-state{color:var(--text-tertiary)}.post-list{list-style:none;margin:0;padding:0}.post-list-item{padding:1.75rem 0;border-bottom:2px solid var(--border-color)}.post-list-item:first-child{padding-top:0}.post-list-title{font-family:var(--font-sans);font-size:1.35rem;font-weight:700;margin:.35rem 0 .5rem;line-height:1.35;letter-spacing:-.02em}.post-list-title a{color:var(--text-primary);text-decoration:none}.post-list-title a:hover{color:var(--accent-color)}.post-list-desc{margin:0 0 .75rem;color:var(--text-secondary);max-width:var(--prose-width)}.post-date{font-family:var(--font-mono);font-size:.8rem;color:var(--text-tertiary)}.tag-inline{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:0;padding:0}.tag-pill{display:inline-block;padding:4px 8px;font-family:var(--font-mono);font-size:.65rem;font-weight:600;text-transform:uppercase;border:1px solid var(--border-color);background-color:var(--bg-base);color:var(--text-secondary);text-decoration:none}.tag-pill:hover{border-color:var(--accent-color);color:var(--accent-color);text-decoration:none}.tag-pill-lg{padding:.35rem .85rem;font-size:.75rem}.tag-cloud{display:flex;flex-wrap:wrap;gap:.75rem;list-style:none;margin:0;padding:0}.tag-count{margin-left:.35rem;font-family:var(--font-mono);font-size:.75rem;opacity:.7}.tag-highlight{color:var(--accent-color)}.post-article{max-width:var(--max-width)}.post-header{margin-bottom:var(--space-md);max-width:var(--prose-width)}.post-title{font-family:var(--font-sans);font-size:clamp(1.75rem,4vw,2.25rem);font-weight:800;line-height:1.25;margin:.5rem 0 1rem;letter-spacing:-.04em}.post-updated{margin-left:.5rem;font-size:.85rem;color:var(--text-tertiary)}.post-cover{width:100%;max-height:20rem;object-fit:cover;border:2px solid var(--border-hard);margin-bottom:var(--space-md)}.post-layout{display:grid;gap:var(--space-md)}@media(min-width:960px){.post-layout{grid-template-columns:11rem 1fr;align-items:start}}.toc{position:sticky;top:calc(var(--header-height) + 1rem);font-size:.85rem}.toc-label{font-family:var(--font-mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);margin:0 0 .75rem}.toc-list{margin:0;padding:0;list-style:none;border-left:2px solid var(--border-hard)}.toc-list li{margin:0;padding:.25rem 0 .25rem .75rem}.toc-h3{padding-left:1.25rem!important;font-size:.95em}.toc a{color:var(--text-secondary);text-decoration:none}.toc a:hover{color:var(--accent-color)}.post-body{min-width:0}.post-footer{margin-top:var(--space-md);padding-top:var(--space-sm);border-top:2px solid var(--border-color);font-family:var(--font-mono);font-size:.8rem;color:var(--text-tertiary)}.prose{max-width:var(--prose-width);font-family:var(--font-sans);font-size:1.0625rem;line-height:var(--leading-base);color:var(--text-primary)}.prose>*:first-child{margin-top:0}.prose h2,.prose h3,.prose h4{font-family:var(--font-sans);font-weight:700;line-height:1.35;margin-top:2em;margin-bottom:.65em;letter-spacing:-.02em}.prose h2{font-size:1.35rem;padding-bottom:.35rem;border-bottom:2px solid var(--border-color)}.prose h3{font-size:1.15rem}.prose p{margin:0 0 1.25em;color:var(--text-secondary)}.prose a{color:var(--accent-color);text-decoration:underline;text-underline-offset:2px}.prose ul,.prose ol{margin:0 0 1.25em;padding-left:1.35em;color:var(--text-secondary)}.prose li{margin:.35em 0}.prose blockquote{margin:1.5em 0;padding:.5em 0 .5em 1em;border-left:3px solid var(--accent-color);color:var(--text-secondary);font-style:italic}.prose hr{border:none;border-top:2px solid var(--border-color);margin:2em 0}.prose code{font-family:var(--font-mono);font-size:.88em;background:var(--bg-panel);padding:.15em .4em;border:1px solid var(--border-color)}.prose pre{margin:1.5em 0;padding:1rem 1.15rem;overflow-x:auto;border:2px solid var(--border-hard);background:var(--bg-panel);box-shadow:2px 2px 0 var(--border-color)}.prose pre code{padding:0;background:none;border:none;font-size:.82rem;line-height:1.55}.prose table{width:100%;border-collapse:collapse;font-family:var(--font-sans);font-size:.9rem;margin:1.5em 0}.prose th,.prose td{border:1px solid var(--border-color);padding:.5em .75em;text-align:left}.prose th{background:var(--bg-panel);font-weight:600}.prose img{max-width:100%;height:auto;border:2px solid var(--border-hard)}.hljs{background:var(--bg-panel)!important}
