@import 'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&family=JetBrains+Mono:wght@400;500&display=swap';:root{--primary-lt:#119651;--primary-dk:#2fd673;--primary:var(--primary-lt);--background-lt:#fafbfc;--background-dk:#0c0e13;--background-text-lt:#15181e;--background-text-dk:#e8eaef;--link-lt:#2563eb;--link-dk:#6fa8ff;--link:var(--link-lt);--primary-text:#04130c;--primary-light:#7fe3aa;--surface:color-mix(in srgb, var(--background-text) 4%, var(--background));--surface-2:color-mix(in srgb, var(--background-text) 7%, var(--background));--border:color-mix(in srgb, var(--background-text) 13%, transparent);--border-strong:color-mix(in srgb, var(--background-text) 22%, transparent);--text-muted:color-mix(in srgb, var(--background-text) 58%, transparent);--section-background:color-mix(in srgb, var(--background-text) 5%, transparent);--section-alt-bg:color-mix(in srgb, var(--background-text) 6%, transparent);--highlight:color-mix(in srgb, var(--background-text) 10%, transparent);--divider:var(--border);--primary-soft:color-mix(in srgb, var(--primary) 16%, transparent);--disabled-background:var(--surface-2);--disabled-text:var(--text-muted);--glass-bg:color-mix(in srgb, var(--background) 70%, transparent);--shadow-sm:0 1px 2px rgba(0, 0, 0, 0.06), 0 1px 1px rgba(0, 0, 0, 0.04);--shadow-md:0 4px 16px -4px rgba(0, 0, 0, 0.18), 0 2px 6px -2px rgba(0, 0, 0, 0.1);--shadow-lg:0 18px 50px -12px rgba(0, 0, 0, 0.34);--shadow-focus:0 0 0 3px var(--primary-soft);--radius-sm:8px;--radius-md:12px;--radius-lg:18px}:root{color-scheme:light dark}body,button,a.button,input,textarea,select{font-family:inter,roboto,system-ui,-apple-system,segoe ui,sans-serif;font-weight:400;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;padding:0;letter-spacing:-.005em}main h1,main h2,main h3,main h4,.hero h1,.hero h2,header span.title{font-family:space grotesk,inter,system-ui,sans-serif;font-weight:600;letter-spacing:-.02em;text-wrap:balance}main h1{font-size:44px;line-height:1.1;margin-bottom:20px}main h2{font-size:30px;line-height:1.15;margin-top:8px;margin-bottom:14px}main h3{font-size:23px;line-height:1.2;margin-bottom:10px}main h4{font-size:20px;margin-bottom:10px}h1.top,h2.top{margin:0}main p,main ul,main ol{line-height:1.65;margin-bottom:16px}main a{color:var(--link);text-decoration:none;text-underline-offset:3px;text-decoration-thickness:1.5px;transition:color .15s ease,text-decoration-color .15s ease}main a:hover{text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--link) 55%,transparent)}header section #header_menu span>a.active{color:var(--primary);font-weight:600;position:relative}header section #header_menu span>a.active::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;border-radius:2px;background:currentColor}code,pre,kbd{font-family:jetbrains mono,ui-monospace,sfmono-regular,consolas,monospace}::selection{background-color:var(--primary-light);color:var(--primary-text)}::-moz-selection{background-color:var(--primary-light);color:var(--primary-text)}header,header.not-signed-in{transition:opacity .3s ease,transform .15s ease-in-out;background-color:var(--glass-bg);-webkit-backdrop-filter:saturate(180%)blur(14px);backdrop-filter:saturate(180%)blur(14px);color:var(--background-text);border-bottom:1px solid var(--border);box-shadow:none}header.scrolled{opacity:0}header section span>*:not(button){color:var(--background-text)}header section span button.icon{color:var(--background-text)}header section span button.icon:hover{background-color:var(--highlight)}header section span.title a{font-size:20px}main{padding-bottom:0}main section{margin:0;max-width:none;padding:0}main section div.section{margin:0 auto;max-width:var(--page-width-max);padding:40px 32px}main section div.section.center{display:flex;justify-content:center}main section:nth-child(odd){background-color:var(--section-background)}@media(max-width:480px){main section div.section{padding:24px 18px}main h1{font-size:34px}main h2{font-size:25px}}.hero{position:relative;isolation:isolate;background-size:cover;background-position:50%;background-color:#080808}.hero::before{content:"";position:absolute;inset:0;z-index:0;background:linear-gradient(180deg,rgba(0,0,0,.2) 0%,rgba(0,0,0,.45) 55%,rgba(0,0,0,.72) 100%)}.hero .section{position:relative;z-index:1;padding-top:104px;padding-bottom:104px;display:flex;flex-direction:column;justify-content:center;align-items:start;gap:16px;color:#f8f8f8;text-shadow:0 1px 12px rgba(0,0,0,.6)}.hero .section a{color:#f8f8f8}.hero h1,.hero h2{margin:0;line-height:1.05}.hero h1{font-size:3.2em}.article-hero{background-color:var(--section-alt-bg);border-bottom:1px solid var(--border)}button,input[type=button],input[type=submit],a.button,label.button{border-radius:var(--radius-sm);font-weight:600;letter-spacing:-.01em;background-color:var(--primary);color:var(--background);box-shadow:var(--shadow-sm);transition:transform .12s ease,filter .15s ease,box-shadow .15s ease,background-color .15s ease}button:hover,input[type=button]:hover,input[type=submit]:hover,a.button:hover,label.button:hover{filter:brightness(1.05);transform:translateY(-1px);box-shadow:var(--shadow-md)}button:active,input[type=button]:active,input[type=submit]:active,a.button:active{transform:translateY(0);box-shadow:var(--shadow-sm)}button:focus-visible,a.button:focus-visible,input[type=button]:focus-visible,input[type=submit]:focus-visible{outline:none;box-shadow:var(--shadow-focus)}button.ghost,button.link,button.icon,a.button.icon{box-shadow:none;color:var(--background-text)}button.ghost{border:1px solid var(--border-strong);background:var(--surface)}button.ghost:hover,button.link:hover{filter:none;transform:none;background:var(--highlight);box-shadow:none}button.icon:hover,a.button.icon:hover{background-color:var(--highlight);transform:none;box-shadow:none}input[type=text],input[type=password],input[type=email],input[type=number],input[type=date],textarea,div.textarea,select{background-color:var(--surface);color:var(--background-text);border:1px solid var(--border-strong);box-shadow:none;border-radius:var(--radius-sm);transition:border-color .15s ease,box-shadow .15s ease}input:focus,textarea:focus,select:focus{border-color:var(--primary);box-shadow:var(--shadow-focus)}dialog{border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);background-color:var(--background);color:var(--background-text);border:1px solid var(--border)}dialog .header{border-radius:0;background-color:var(--primary);color:var(--primary-text)}dialog .header *{color:var(--primary-text)}main blockquote{margin:20px 0;padding:14px 22px;border-left:3px solid var(--primary);background:var(--primary-soft);border-radius:0 var(--radius-sm)var(--radius-sm)0;color:var(--background-text)}main blockquote p{margin:0}article.article img{max-width:100%;height:auto;border-radius:var(--radius-md)}article.article h2,article.article h3{margin-top:28px}article.article p{line-height:1.7}article.article a{color:var(--link)}article.article hr{border:none;border-top:1px solid var(--border);margin:32px 0}article.article code{background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:.1em .4em;font-size:.88em}article.article pre{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px 18px;overflow-x:auto;line-height:1.5}article.article pre code{background:0 0;border:none;padding:0}article.article table{border-collapse:collapse;width:100%;margin:20px 0}article.article th,article.article td{border:1px solid var(--border);padding:8px 12px;text-align:left}article.article th{background:var(--surface-2)}.article-meta{color:var(--text-muted)}main .tags span{display:inline-block;background:var(--primary-soft);color:var(--primary);border:1px solid color-mix(in srgb,var(--primary) 30%,transparent);border-radius:999px;padding:3px 12px;margin:3px 4px 3px 0;font-size:.82em;font-weight:500}main .tags span a{color:inherit}.hero .tags span{background:rgba(255,255,255,.15);border-color:rgba(255,255,255,.3);color:#f8f8f8}.hero .tags span a{color:#f8f8f8}footer{border-top:1px solid var(--border);background-color:var(--section-background);color:var(--text-muted)}footer section.grid3{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px}footer section.grid3 div{display:flex;justify-content:center;align-items:center}footer a{color:var(--link)}@media(max-width:768px){footer section.grid3{grid-template-columns:1fr}}@media screen and (min-width:601px){header section span.title{margin-left:0;flex-grow:0}header #header_menu{flex-grow:1;margin-left:24px}}