@font-face{font-family:"JetBrains Mono Variable";font-style:normal;font-display:swap;font-weight:100 800;src:url(https://cdn.jsdelivr.net/fontsource/fonts/jetbrains-mono:vf@latest/latin-wght-normal.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,*::before,*::after{font-variant-ligatures:none;box-sizing:border-box;font-size:18px}@media screen and (max-width: 500px){*,*::before,*::after{font-size:14px}}@media screen and (max-width: 800px){*,*::before,*::after{font-size:16px}}*{margin:0}html,body{height:100%;font-family:"JetBrains Mono Variable",monospace;background-color:#14191f;color:#e6e1cf}body{line-height:1.6;-webkit-font-smoothing:antialiased}::selection{background:#4d7577;color:#14191f}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}#root,#__next{isolation:isolate}.title{font-size:2em;text-align:center}h1{font-size:1.6em}h2{font-size:1.4em}h3{font-size:1.2em}p{margin:1em 0}a{color:#e6e1cf;text-underline-offset:4px}pre{position:relative;padding:14px 16px;overflow-x:auto;border-radius:8px;margin:1em 0;font-family:"JetBrains Mono Variable","Courier New",monospace}pre code{background-color:inherit;color:inherit;border:0;padding:0}pre .copy-btn{position:absolute;top:4px;right:4px;padding:2px 8px;background:#4d7577;color:#e6e1cf;border:none;border-radius:4px;cursor:pointer;opacity:0;transition:opacity .2s;font-size:.8em}pre:hover .copy-btn{opacity:1}code{font-family:"JetBrains Mono Variable","Courier New",monospace;padding:1px 5px;font-weight:400;color:#7abec2;background:#0f1419;border-radius:3px}code>span{font-size:85%;font-weight:400}blockquote{background-color:#0f1419;border-left:4px #4d7577 solid;padding:.02em 10px;margin:6px 0px}.container{margin:10px auto;margin-top:0;padding-top:40px;max-width:1080px}@media screen and (max-width: 1080px){.container{max-width:100%;margin:10px 10px}}ul.nav{text-align:right;text-transform:uppercase}ul.nav li{display:inline;padding:0 5px}ul.nav .nav-search{position:relative;display:inline-block;text-transform:none;margin-right:4px}#site-search{background:#0f1419;color:#e6e1cf;border:1px solid #4d7577;border-radius:4px;padding:3px 8px;font-family:inherit;font-size:.85em;width:180px;outline:none;transition:width .15s,border-color .15s}#site-search:focus{border-color:#7abec2;width:240px}#site-search-results{position:absolute;top:calc(100% + 4px);right:0;width:360px;max-height:60vh;overflow-y:auto;background:#0f1419;border:1px solid #4d7577;border-radius:6px;z-index:50;text-align:left;font-size:.85em;box-shadow:0 4px 16px rgba(0,0,0,.5)}#site-search-results .search-hit{display:block;padding:8px 12px;border-bottom:1px solid rgba(77,117,119,.4);color:#e6e1cf;text-decoration:none}#site-search-results .search-hit:hover,#site-search-results .search-hit:focus{background:rgba(122,190,194,.08)}#site-search-results .search-hit:last-child{border-bottom:none}#site-search-results .search-hit-title{color:#7abec2;font-weight:600;margin-bottom:2px}#site-search-results .search-hit-snippet{opacity:.7;font-size:.9em;line-height:1.4}#site-search-results .search-empty{padding:10px 12px;opacity:.6}ul.posts{list-style-type:none;padding:0;margin:0;margin-top:5px}ul.posts .year-heading h3{border-bottom:none;border-left:none;padding-left:0;margin-top:1.2em;margin-bottom:.3em;font-size:1.1em;opacity:.7}ul.posts .year-heading:first-child h3{margin-top:0}ul.posts .post-row{display:flex;align-items:baseline;gap:12px;padding:4px 0;flex-wrap:wrap}ul.posts .post-date{opacity:.6;font-size:.9em;white-space:nowrap}ul.posts .post-link{flex:1;min-width:0}ul.posts .post-meta{display:inline-flex;align-items:center;gap:8px;font-size:.8em;opacity:.85;white-space:nowrap}ul.posts .cat-badge{display:inline-block;border:1px solid #4d7577;border-radius:3px;padding:1px 6px;text-decoration:none;color:#e6e1cf;text-transform:lowercase}ul.posts .cat-badge:hover{border-color:#7abec2;color:#7abec2}ul.posts .post-time{opacity:.5}ul.categories{columns:4}@media screen and (max-width: 600px){ul.categories{columns:2}}a.title{text-decoration:none}a.title{display:inline-flex;align-items:center;gap:12px;text-decoration:none}.brand-logo{width:64px;height:64px;display:block;flex-shrink:0}.brand-title{font-size:1.4rem;text-transform:uppercase;font-weight:bolder;margin:0}.blog-date{text-align:left}.capitalize{text-transform:capitalize}.category-link{color:#e6e1cf}ul{margin-top:10px;margin-bottom:10px}h1,h2{border-bottom:2px solid #4d7577;margin-bottom:1rem}h2{margin-top:2em}h3{margin-top:1.6em;margin-bottom:.6rem;padding-left:10px;border-left:3px solid #4d7577}table{width:100%;margin:1em 0px;border-collapse:collapse}table,th,td{border:1px solid}th{background-color:#2c2c2c;color:#fff}th,td{padding:10px;text-align:left}tr:nth-child(even){background-color:#1b2127}.content{margin-bottom:2em}.footer{border-top:2px #4d7577 solid;padding:1.5em 0;opacity:.6}.skip-link{position:absolute;left:-9999px}.skip-link:focus{position:fixed;top:0;left:0;padding:8px 16px;background:#4d7577;color:#e6e1cf;z-index:100}.toc{border:1px solid #4d7577;border-radius:8px;padding:10px 16px;margin:1em 0}.toc summary{cursor:pointer;font-weight:bold}.toc ul{list-style:none;padding-left:1em;margin:.5em 0}.toc a{text-decoration:none}.toc a:hover{text-decoration:underline}.post-nav{display:flex;justify-content:space-between;margin-top:2em;padding-top:1em;border-top:2px solid #4d7577}.post-nav .next{margin-left:auto;text-align:right}.series-nav{border:1px solid #4d7577;border-radius:8px;padding:12px 18px;margin:2em 0 1em;background:#0f1419}.series-nav .series-head{font-size:.9em;opacity:.8;margin-bottom:8px}.series-nav .series-head strong{color:#7abec2;text-transform:capitalize}.series-nav .series-list{margin:0;padding-left:1.4em}.series-nav .series-list li{margin:4px 0}.series-nav .series-list a{text-decoration:none}.series-nav .series-list a:hover{text-decoration:underline}.series-nav .series-current{opacity:.7;font-style:italic}.toc-sidebar{display:none}@media screen and (min-width: 1100px){.toc-sidebar{display:block;position:fixed;top:80px;right:max(16px,(100vw - 1080px)/2 - 220px);width:200px;max-height:70vh;overflow-y:auto;font-size:.85em;opacity:.6;transition:opacity .2s}.toc-sidebar:hover{opacity:1}.toc-sidebar ul{list-style:none;padding-left:.8em;margin:0}.toc-sidebar a{text-decoration:none;color:#e6e1cf;display:block;padding:2px 0;border-left:2px solid rgba(0,0,0,0);padding-left:8px;margin-left:-10px}.toc-sidebar a:hover{color:#7abec2}.toc-sidebar a.active{color:#7abec2;border-left-color:#7abec2;opacity:1}}.heading-anchor{margin-left:.4em;opacity:0;text-decoration:none;color:#4d7577;font-weight:normal;transition:opacity .15s,color .15s}.heading-anchor::after{content:"";display:none}.heading-anchor.copied{color:#7abec2;opacity:1 !important}.heading-anchor.copied::after{content:" copied";display:inline;font-size:.7em;opacity:.7}h2:hover .heading-anchor,h3:hover .heading-anchor,.heading-anchor:focus{opacity:1}.netzero-demo{border:1px solid #4d7577;border-radius:8px;padding:14px;margin:1.5em 0;background:#0f1419}.netzero-demo .netzero-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.netzero-demo .netzero-btn{background:rgba(0,0,0,0);color:#e6e1cf;border:1px solid #4d7577;border-radius:4px;padding:4px 10px;cursor:pointer;font-size:.85em;font-family:inherit;transition:background .15s,border-color .15s}.netzero-demo .netzero-btn:hover{background:#4d7577;border-color:#7abec2}.netzero-demo .netzero-btn .netzero-hint{opacity:.6;font-size:.85em}.netzero-demo .netzero-btn-end{border-color:#7abec2}.netzero-demo .netzero-btn-reset{opacity:.7}.netzero-demo .netzero-state{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}@media screen and (max-width: 700px){.netzero-demo .netzero-state{grid-template-columns:1fr}}.netzero-demo .netzero-col-head{font-size:.8em;opacity:.7;margin-bottom:4px;color:#7abec2}.netzero-demo .netzero-state pre{margin:0;padding:6px 8px;background:#14191f;border-radius:4px;border:1px solid #4d7577;font-size:.8em;min-height:1.6em}.netzero-demo .netzero-state pre .copy-btn{display:none}.netzero-demo .netzero-log{margin-top:12px;padding:6px 10px;font-size:.85em;opacity:.85;border-left:3px solid #7abec2;font-family:inherit}