:root{--color-text:#e5e7eb;--color-text-light:#9ca3af;--color-background:#1a1a1a;--color-primary:#60a5fa;--color-primary-hover:#93c5fd;--color-border:#374151;--color-code-bg:#262626;--font-body:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;--space-xs:0.25rem;--space-sm:0.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--code-title-bg:var(--color-code-bg);--code-title-text:var(--color-text);--code-title-border:var(--color-border);--code-title-font:var(--font-mono);--code-title-size:0.875rem;--code-title-weight:500;--code-title-padding:0.5rem 1rem;--code-title-radius:0.25rem 0.25rem 0 0}[data-theme=light]{--color-text:#1a1a1a;--color-text-light:#4a4a4a;--color-background:#ffffff;--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-border:#e5e7eb;--color-code-bg:#f3f4f6}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font-body);background-color:var(--color-background);color:var(--color-text)}img{max-width:100%;height:auto}body{font-size:16px;line-height:1.5;color:var(--color-text)}h1,h2,h3,h4,h5,h6{margin-top:var(--space-xl);margin-bottom:var(--space-md);font-weight:700;line-height:1.25;color:var(--color-text)}h1{font-size:2.5rem;margin-top:0}h2{font-size:2rem}h3{font-size:1.5rem}h4{font-size:1.25rem}h5,h6{font-size:1rem}p{margin-top:0;margin-bottom:var(--space-md)}a{color:var(--color-primary);text-decoration:none}a:hover{color:var(--color-primary-hover);text-decoration:underline}ul,ol{margin-top:0;margin-bottom:var(--space-md);padding-left:var(--space-xl)}li{margin-bottom:var(--space-sm)}code{font-family:var(--font-mono);font-size:.875rem;background-color:var(--color-code-bg);padding:.125rem .25rem;border-radius:.25rem}pre{font-family:var(--font-mono);font-size:.875rem;background-color:var(--color-code-bg);padding:var(--space-md);border-radius:.25rem;overflow-x:auto;margin-bottom:var(--space-md);white-space:pre-wrap}pre code{background-color:initial;padding:0}strong{font-weight:700}em{font-style:italic}blockquote{margin:var(--space-xl)0;padding-left:var(--space-lg);border-left:4px solid var(--color-border);color:var(--color-text-light);font-style:italic}.container{max-width:68rem;margin:0 auto;padding:0 var(--space-md)}@media(min-width:768px){.container{padding:0 var(--space-xl)}}header{border-bottom:1px solid var(--color-border);padding:var(--space-lg)0;margin-bottom:var(--space-2xl)}nav{display:flex;justify-content:space-between;align-items:center;gap:var(--space-lg)}.nav-links{display:flex;gap:var(--space-lg);align-items:center}nav a{font-weight:500}main{min-height:60vh;margin-bottom:var(--space-3xl)}footer{border-top:1px solid var(--color-border);padding:var(--space-xl)0;margin-top:var(--space-3xl);color:var(--color-text-light);font-size:.875rem}article{margin-bottom:var(--space-2xl)}article+article{padding-top:var(--space-2xl);border-top:1px solid var(--color-border)}.theme-toggle{background:var(--color-primary);color:var(--color-background);border:none;border-radius:50%;width:2.5rem;height:2.5rem;cursor:pointer;font-size:1.25rem;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease;flex-shrink:0}.theme-toggle:hover{background:var(--color-primary-hover)}.theme-toggle:focus{outline:2px solid var(--color-primary);outline-offset:2px}.post-preview{padding:var(--space-xl);margin-bottom:var(--space-xl);border:1px solid var(--color-border);border-radius:8px;background:var(--color-background);transition:border-color .2s ease,box-shadow .2s ease}.post-preview:hover{border-color:var(--color-primary);box-shadow:0 2px 8px rgba(0,0,0,.1)}.post-preview__title{margin-top:0;margin-bottom:var(--space-sm)}.post-preview__title a{color:var(--color-text);text-decoration:none}.post-preview__title a:hover{color:var(--color-primary);text-decoration:none}.post-preview__meta{color:var(--color-text-light);font-size:.875rem;margin-bottom:var(--space-md)}.post-preview__summary{color:var(--color-text-light);margin-bottom:0}.post-preview__title{word-wrap:break-word;overflow-wrap:break-word;hyphens:auto}.mermaid{margin:var(--space-xl)0;padding:var(--space-md);background:var(--color-background);border:1px solid var(--color-border);border-radius:8px;text-align:center;overflow-x:auto}.post-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin:var(--space-md)0}.tag{display:inline-block;padding:.25rem .75rem;background:var(--color-primary);color:var(--color-background);text-decoration:none;border-radius:1rem;font-size:.875rem;font-weight:500;transition:background-color .2s ease,transform .2s ease}.tag:hover{background:var(--color-primary-hover);transform:translateY(-1px)}.tag-large{padding:.5rem 1rem;font-size:1rem}.tag-count{opacity:.8;font-weight:400}.tags-list{display:flex;flex-wrap:wrap;gap:.75rem;margin:var(--space-xl)0}.tag-description{color:var(--color-text-light);margin-bottom:var(--space-xl)}.pagination{display:flex;justify-content:space-between;align-items:center;margin-top:var(--space-3xl);padding-top:var(--space-xl);border-top:1px solid var(--color-border)}.pagination__link{padding:var(--space-sm)var(--space-lg);background-color:var(--color-primary);color:#fff;border-radius:.25rem;font-weight:500;transition:background-color .2s}.pagination__link:hover{background-color:var(--color-primary-hover);text-decoration:none}.pagination__link--disabled{background-color:var(--color-border);color:var(--color-text-light);pointer-events:none}.pagination__info{color:var(--color-text-light);font-size:.875rem}.welcome-message{text-align:center;padding:var(--space-3xl)var(--space-md);color:var(--color-text-light)}.welcome-message h2{margin-top:0;color:var(--color-text)}.error-page{text-align:center;padding:var(--space-3xl)var(--space-md)}.error-page h1{font-size:4rem;margin-bottom:var(--space-md);color:var(--color-text-light)}.error-page__links{display:flex;gap:var(--space-md);justify-content:center;margin-top:var(--space-xl)}.error-page__link{padding:var(--space-sm)var(--space-lg);background-color:var(--color-primary);color:#fff;border-radius:.25rem;font-weight:500}.error-page__link:hover{background-color:var(--color-primary-hover);text-decoration:none}.post-content{margin-top:var(--space-xl)}.post-content h2{margin-top:var(--space-2xl);padding-top:var(--space-md);border-top:1px solid var(--color-border)}.post-content h3{margin-top:var(--space-xl)}.post-content img{border-radius:.25rem;margin:var(--space-xl)0}.post-content ul,.post-content ol{margin-left:var(--space-lg)}.post-content table{width:100%;border-collapse:collapse;margin:var(--space-xl)0}.post-content table th,.post-content table td{border:1px solid var(--color-border);padding:var(--space-sm)var(--space-md);text-align:left}.code-block-wrapper{position:relative;margin:var(--space-md)0;isolation:isolate}.code-block-title{background-color:var(--code-title-bg);color:var(--code-title-text);border:1px solid var(--code-title-border);border-bottom:none;font-family:var(--code-title-font);font-size:var(--code-title-size);font-weight:var(--code-title-weight);line-height:1.5;padding:var(--code-title-padding);margin:0;border-radius:var(--code-title-radius);word-break:break-word;overflow-wrap:break-word;hyphens:auto;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.code-block-wrapper .highlight{margin-top:0}.code-block-wrapper .highlight pre{border-radius:0 0 .25rem .25rem;margin-top:0;margin-bottom:0}@media(max-width:768px){.code-block-title{font-size:.8125rem;padding:.375rem .75rem}}@media print{.code-block-title{background:0 0;border:1px solid #000;color:#000;page-break-after:avoid}.code-block-wrapper .highlight{page-break-before:avoid}}.chroma .ln,.chroma .lnt{color:var(--color-text-light);background:0 0;padding-right:1em;text-align:right;user-select:none;font-size:.95em}.chroma .lnt{border-right:1px solid var(--color-border);margin-right:1em}.chroma .hl{background:rgba(255,233,179,.2);display:block;width:100%}.chroma{overflow-x:auto;width:100%;background-color:var(--color-code-bg);border-radius:.25rem;margin-bottom:var(--space-md)}.chroma table{width:100%;border-spacing:0;margin:0}.chroma table pre{background-color:initial;padding:0;margin:0;border-radius:0;width:auto;overflow:visible}div.chroma{padding:var(--space-md)}.chroma .lntd:first-child{padding-right:var(--space-md);width:1%;white-space:nowrap}.chroma .lntd:last-child{padding-left:var(--space-md);width:100%}.chroma .hl{background-color:rgba(255,233,179,.2);display:block;width:100%}.chroma .lnt{color:var(--color-text-light);background:0 0;padding-right:1em;text-align:right;user-select:none;font-size:.95em;border-right:1px solid var(--color-border);margin-right:1em}.chroma .ln{color:var(--color-text-light);background:0 0;padding-right:1em;text-align:right;user-select:none;font-size:.95em}.chroma .k{color:#f92672}.chroma .kc{color:#f92672}.chroma .kd{color:#f92672}.chroma .kn{color:#f92672}.chroma .kp{color:#f92672}.chroma .kr{color:#f92672}.chroma .kt{color:#f92672}.chroma .n{color:#f8f8f2}.chroma .nb{color:#f8f8f2}.chroma .bp{color:#f8f8f2}.chroma .nc{color:#a6e22e}.chroma .no{color:#66d9ef}.chroma .nd{color:#a6e22e}.chroma .ni{color:#f8f8f2}.chroma .ne{color:#a6e22e}.chroma .nf{color:#a6e22e}.chroma .nl{color:#f8f8f2}.chroma .nn{color:#f8f8f2}.chroma .nx{color:#f8f8f2}.chroma .py{color:#f8f8f2}.chroma .nt{color:#f92672}.chroma .nv{color:#f8f8f2}.chroma .o{color:#f8f8f2}.chroma .ow{color:#f8f8f2}.chroma .p{color:#f8f8f2}.chroma .m{color:#ae81ff}.chroma .s{color:#e6db74}.chroma .sb{color:#e6db74}.chroma .sc{color:#e6db74}.chroma .sd{color:#e6db74}.chroma .s2{color:#e6db74}.chroma .se{color:#ae81ff}.chroma .sh{color:#e6db74}.chroma .si{color:#e6db74}.chroma .sx{color:#e6db74}.chroma .sr{color:#e6db74}.chroma .s1{color:#e6db74}.chroma .ss{color:#e6db74}.chroma .c{color:#75715e;font-style:italic}.chroma .cm{color:#75715e;font-style:italic}.chroma .cp{color:#75715e;font-style:italic}.chroma .c1{color:#75715e;font-style:italic}.chroma .cs{color:#75715e;font-style:italic}.chroma .g{color:#f8f8f2}.chroma .gd{color:#f8f8f2}.chroma .ge{color:#f8f8f2;font-style:italic}.chroma .gr{color:#f8f8f2}.chroma .gh{color:#f8f8f2}.chroma .gi{color:#f8f8f2}.chroma .go{color:#f8f8f2}.chroma .gp{color:#f8f8f2}.chroma .gs{color:#f8f8f2}.chroma .gu{color:#f8f8f2}.chroma .gt{color:#f8f8f2}.chroma .w{color:#f8f8f2}