:root{--bg:#0b0c0f;--surface:#121420;--surface-2:#171a28;--fg:#e7e9ee;--muted:#9aa0ac;--accent:#6ea8fe;--accent-strong:#4f8cff;--border:#1f2330;--max:760px;--wide:1080px;--radius:12px}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--fg);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.7;font-size:18px;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.muted{color:var(--muted)}.container{max-width:var(--max);margin:0 auto;padding:2.5rem 1.25rem 4rem}.site-header{border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;background:rgba(11,12,15,.85);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:10}.site-header .inner{max-width:var(--wide);margin:0 auto;padding:1rem 1.25rem;display:flex;justify-content:space-between;align-items:center}.brand{font-weight:700;font-size:1.25rem;color:var(--fg);letter-spacing:-.01em}.site-nav{display:flex;gap:1.5rem}.site-nav a{color:var(--muted);font-size:.95rem}.site-nav a:hover{color:var(--fg);text-decoration:none}.hero{padding:2.5rem 0 1rem;text-align:center}.hero-title{font-size:clamp(2rem,5vw,3rem);line-height:1.1;letter-spacing:-.02em;margin:0 0 1rem}.hero-sub{color:var(--muted);font-size:1.15rem;max-width:560px;margin:0 auto 1.75rem}.hero-cta{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}.btn{display:inline-block;padding:.7rem 1.3rem;border-radius:var(--radius);font-weight:600;font-size:.95rem;border:1px solid transparent}.btn:hover{text-decoration:none}.btn-primary{background:var(--accent-strong);color:#fff}.btn-primary:hover{background:var(--accent)}.btn-ghost{border-color:var(--border);color:var(--fg)}.btn-ghost:hover{border-color:var(--accent)}.value-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:1rem;gap:1rem;margin:3rem 0}.value-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem}.value-card h3{margin:0 0 .4rem;font-size:1.05rem}.value-card p{margin:0;font-size:.95rem}.section-head{display:flex;justify-content:space-between;align-items:baseline;margin:3rem 0 1rem}.section-head h2{margin:0}.see-all{font-size:.9rem}.card-grid{display:grid;grid-gap:1rem;gap:1rem}.post-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.4rem;transition:border-color .15s ease}.post-card:hover{border-color:var(--accent)}.post-card-title{margin:0 0 .35rem;font-size:1.2rem;line-height:1.3}.post-card-desc{margin:0 0 .6rem;color:var(--muted);font-size:.95rem}.post-meta{font-size:.85rem;color:var(--muted);display:flex;gap:.5rem;align-items:center}.tag-row{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.7rem}.tag{font-size:.75rem;color:var(--accent);background:rgba(110,168,254,.1);border:1px solid rgba(110,168,254,.25);padding:.1rem .55rem;border-radius:999px}.newsletter{margin:4rem 0 1rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:2rem 1.5rem;text-align:center}.newsletter-title{margin:0 0 .4rem}.newsletter-sub{color:var(--muted);margin:0 0 1.25rem;font-size:.95rem}.newsletter-form{display:flex;gap:.5rem;max-width:420px;margin:0 auto}.newsletter-form input{flex:1 1;padding:.65rem .85rem;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);color:var(--fg);font-size:.95rem}.newsletter-form input:focus{outline:none;border-color:var(--accent)}.newsletter-form button{padding:.65rem 1.2rem;border-radius:var(--radius);border:none;background:var(--accent-strong);color:#fff;font-weight:600;cursor:pointer}.newsletter-form button:hover{background:var(--accent)}.newsletter-ok{color:#6ee7a8}.newsletter-err{color:#ff8a8a;font-size:.85rem;margin:.5rem 0 0}.breadcrumbs{font-size:.85rem;margin-bottom:1rem}.breadcrumbs,.breadcrumbs a{color:var(--muted)}.breadcrumbs a:hover{color:var(--fg)}.crumb-sep{color:var(--border)}.article-layout{display:grid;grid-template-columns:1fr;grid-gap:2rem;gap:2rem}.article-meta{margin-bottom:.6rem}.article-aside{display:none}.toc{position:-webkit-sticky;position:sticky;top:5rem;font-size:.9rem;border-left:1px solid var(--border);padding-left:1rem}.toc-title{font-weight:600;color:var(--fg);margin:0 0 .5rem;text-transform:uppercase;font-size:.75rem;letter-spacing:.05em}.toc ul{list-style:none;margin:0;padding:0}.toc li{margin:.3rem 0}.toc li.toc-sub{padding-left:.85rem}.toc a{color:var(--muted)}.toc a:hover{color:var(--accent);text-decoration:none}.prose h1{font-size:2.1rem;line-height:1.15;letter-spacing:-.02em;margin:0 0 .5rem}.prose h2{font-size:1.5rem;margin:2.2rem 0 .75rem}.prose h2,.prose h3{scroll-margin-top:5rem}.prose h3{font-size:1.2rem;margin:1.6rem 0 .5rem}.prose li,.prose p{font-size:1.05rem}.prose img{max-width:100%;height:auto;border-radius:var(--radius)}.prose blockquote{border-left:3px solid var(--accent);margin:1.25rem 0;padding:.25rem 0 .25rem 1rem;color:var(--muted)}.prose :not(pre)>code{background:var(--surface-2);padding:.15rem .4rem;border-radius:5px;font-size:.9em}.code-block{position:relative;margin:1.25rem 0}.code-block pre{background:var(--surface-2);border:1px solid var(--border);padding:1rem 1.1rem;border-radius:var(--radius);overflow-x:auto;font-size:.9rem;margin:0}.code-block pre code{background:none;padding:0}.copy-btn{position:absolute;top:.6rem;right:.6rem;background:var(--bg);color:var(--muted);border:1px solid var(--border);border-radius:6px;padding:.2rem .6rem;font-size:.75rem;cursor:pointer;opacity:0;transition:opacity .15s ease}.code-block:hover .copy-btn{opacity:1}.copy-btn:hover{color:var(--fg);border-color:var(--accent)}.related{margin-top:3.5rem;border-top:1px solid var(--border);padding-top:2rem}.back-link{margin-top:2rem}.site-footer{border-top:1px solid var(--border);margin-top:4rem}.footer-inner{max-width:var(--wide);margin:0 auto;padding:2rem 1.25rem 1rem;display:flex;justify-content:space-between;gap:2rem;flex-wrap:wrap}.footer-tagline{margin:.4rem 0 0;font-size:.9rem;max-width:320px}.footer-nav{display:flex;gap:1.25rem;height:-moz-fit-content;height:fit-content}.footer-nav a{color:var(--muted);font-size:.9rem}.footer-copy{max-width:var(--wide);margin:0 auto;padding:0 1.25rem 2rem;font-size:.8rem}.notfound{text-align:center;padding:4rem 0 2rem}.notfound-code{font-size:4rem;font-weight:800;color:var(--accent);margin:0;line-height:1;letter-spacing:-.03em}.notfound h1{margin:.5rem 0 .75rem}@media (min-width:1000px){.container{max-width:var(--wide)}.article-layout{grid-template-columns:minmax(0,var(--max)) 240px;justify-content:center}.article-aside{display:block}.card-grid{grid-template-columns:repeat(2,1fr)}.hero,.newsletter,.prose,.recent,.value-grid{max-width:var(--max);margin-left:auto;margin-right:auto}.article-layout .prose{max-width:none}}@media (max-width:520px){.value-grid{grid-template-columns:1fr}.newsletter-form{flex-direction:column}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}
/*!
  Theme: GitHub Dark
  Description: Dark theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Outdated base version: https://github.com/primer/github-syntax-dark
  Current colors taken from GitHub's CSS
*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#79c0ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}