:root{--k-bg:#0f1410;--k-surface:#161d17;--k-text:#c9d6ca;--k-muted:#7a8a7c;--k-accent:#6aaa6a;--k-accent2:#c9a96a;--k-border:#243026;--k-on-accent:#ffffff;--k-code-bg:#1c221d;--k-pre-bg:#1c221d;--k-pre-tx:#c9d6ca;--k-font-head:'IBM Plex Mono', monospace;--k-font-body:'Verdana', Tahoma, 'DejaVu Sans', sans-serif;--k-font-mono:'JetBrains Mono',monospace;--k-radius:0px;color-scheme:dark}html[data-mode="alt"]{--k-bg:#f7f7f4;--k-surface:#ffffff;--k-text:#16161a;--k-muted:#5f6068;--k-accent:#6aaa6a;--k-accent2:#6f5d3a;--k-border:#e2e2de;--k-on-accent:#ffffff;--k-code-bg:#ecece9;--k-pre-bg:#1d2026;--k-pre-tx:#d8dadf;color-scheme:light}*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--k-bg);color:var(--k-text);font-family:var(--k-font-body);font-size:17px;line-height:1.7;-webkit-font-smoothing:antialiased;min-height:100vh;display:flex;flex-direction:column;transition:background .25s,color .25s}
a{color:var(--k-accent)}
img,video{max-width:100%;height:auto}
.kx-wrap{width:100%;max-width:1120px;margin:0 auto;padding:0 20px}
.kx-announce{background:var(--k-accent);color:var(--k-on-accent);text-align:center;font-size:.9rem;padding:8px 16px;position:relative;z-index:5}
.kx-announce a{color:inherit;font-weight:700}
.kx-header{border-bottom:1px solid var(--k-border);position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--k-bg) 88%,transparent);backdrop-filter:blur(10px)}
.kx-header .kx-wrap{display:flex;align-items:center;gap:20px;min-height:64px;flex-wrap:wrap}
.kx-brand{font-family:var(--k-font-head);font-weight:800;font-size:1.25rem;color:var(--k-text);text-decoration:none;letter-spacing:-.01em}
.kx-nav{display:flex;gap:4px 18px;flex-wrap:wrap;flex:1}
.kx-nav a{color:var(--k-muted);text-decoration:none;font-size:.95rem;padding:4px 0}
.kx-nav a:hover,.kx-nav a.on{color:var(--k-text)}
.kx-tools{display:flex;gap:8px;margin-left:auto}
.kx-iconbtn{background:transparent;border:1px solid var(--k-border);color:var(--k-text);width:36px;height:36px;border-radius:var(--k-radius);cursor:pointer;display:inline-grid;place-items:center;font:inherit;font-size:15px}
.kx-iconbtn:hover{border-color:var(--k-accent);color:var(--k-accent)}
.kx-burger{display:none}
.kx-main{flex:1;padding:48px 0 72px}
.kx-content{display:block}
.kx-prose{max-width:740px;margin:0 auto;overflow-wrap:break-word}
.kx-title{font-family:var(--k-font-head);font-size:clamp(2rem,5vw,3.2rem);line-height:1.1;margin:0 0 .4em;letter-spacing:-.02em;color:var(--k-text)}
.kx-meta{color:var(--k-muted);font-size:.9rem;margin-bottom:2em;display:flex;gap:14px;flex-wrap:wrap}
.kx-prose h1:not(.kx-title),.kx-prose h2,.kx-prose h3,.kx-prose h4{font-family:var(--k-font-head);line-height:1.2;margin:1.8em 0 .6em;letter-spacing:-.01em}
.kx-prose h1:not(.kx-title){font-size:2.2rem}.kx-prose h2{font-size:1.65rem}.kx-prose h3{font-size:1.3rem}
.kx-prose p{margin:0 0 1.15em}
.kx-prose ul,.kx-prose ol{padding-left:1.4em;margin:0 0 1.2em}
.kx-prose li{margin:.3em 0}
.kx-prose blockquote{margin:1.5em 0;padding:.4em 1.2em;border-left:3px solid var(--k-accent);color:var(--k-muted);font-style:italic}
.kx-prose code{font-family:var(--k-font-mono);font-size:.88em;background:var(--k-code-bg);padding:.15em .4em;border-radius:4px}
.kx-prose pre{background:var(--k-pre-bg);color:var(--k-pre-tx);border:1px solid var(--k-border);padding:16px 18px;border-radius:var(--k-radius);overflow:auto;font-size:.88rem;line-height:1.55}
.kx-prose pre code{background:none;padding:0}
.kx-prose table{width:100%;border-collapse:collapse;margin:1.5em 0;font-size:.95rem;display:block;overflow-x:auto}
.kx-prose th,.kx-prose td{border:1px solid var(--k-border);padding:8px 12px;text-align:left}
.kx-prose th{background:var(--k-surface)}
.kx-prose hr{border:0;border-top:1px solid var(--k-border);margin:2.5em 0}
.kx-prose img{border-radius:var(--k-radius);display:block;margin:1.5em auto}
.kx-prose mark{background:color-mix(in srgb,var(--k-accent) 30%,transparent);color:inherit}
.kx-prose .kx-callout{border:1px solid var(--k-border);border-left:4px solid var(--k-accent);background:var(--k-surface);padding:14px 18px;border-radius:var(--k-radius);margin:1.5em 0;font-style:normal;color:var(--k-text)}
.kx-prose .kx-callout.warn{border-left-color:#f59e0b}.kx-prose .kx-callout.danger{border-left-color:#ef4444}.kx-prose .kx-callout.tip{border-left-color:#10b981}
.kx-anchor{opacity:0;margin-left:.3em;text-decoration:none;font-weight:400}
.kx-prose :hover>.kx-anchor{opacity:.5}
.kx-toc{border:1px solid var(--k-border);background:var(--k-surface);border-radius:var(--k-radius);padding:14px 18px;margin:0 0 2em;font-size:.92rem}
.kx-toc strong{display:block;font-family:var(--k-font-head);margin-bottom:6px}
.kx-toc ol{margin:0;padding-left:1.2em}.kx-toc a{color:var(--k-muted);text-decoration:none}.kx-toc a:hover{color:var(--k-accent)}
.kx-toc .l3{margin-left:1em;list-style:circle}
.kx-posts{display:grid;gap:18px;margin-top:1em}
.kx-post{display:block;border:1px solid var(--k-border);background:var(--k-surface);padding:20px 22px;border-radius:var(--k-radius);text-decoration:none;color:var(--k-text);transition:transform .15s,border-color .15s}
.kx-post:hover{border-color:var(--k-accent);transform:translateY(-2px)}
.kx-post h3{margin:0 0 6px;font-family:var(--k-font-head);font-size:1.3rem}
.kx-post p{margin:0;color:var(--k-muted);font-size:.95rem}
.kx-post small{color:var(--k-muted)}
.kx-footer{border-top:1px solid var(--k-border);padding:28px 0;color:var(--k-muted);font-size:.88rem}
.kx-footer .kx-wrap{display:flex;gap:16px;justify-content:space-between;flex-wrap:wrap}
.kx-footer a{color:var(--k-muted)}
.kx-socials{display:flex;gap:14px}
.kx-btn,.kx-prose .kx-btn{display:inline-block;background:var(--k-accent);color:var(--k-on-accent);border:0;padding:11px 20px;border-radius:var(--k-radius);font:inherit;font-weight:700;text-decoration:none;cursor:pointer}
.kx-btn:hover{filter:brightness(1.08)}
.kx-input{width:100%;background:var(--k-bg);color:var(--k-text);border:1px solid var(--k-border);border-radius:var(--k-radius);padding:10px 12px;font:inherit}
.kx-input:focus{outline:2px solid var(--k-accent);outline-offset:1px}
.kx-comments{max-width:740px;margin:56px auto 0;border-top:1px solid var(--k-border);padding-top:28px}
.kx-comment{border-bottom:1px solid var(--k-border);padding:14px 0}
.kx-comment b{font-family:var(--k-font-head)}.kx-comment small{color:var(--k-muted);margin-left:8px}
.kx-comment p{margin:6px 0 0;white-space:pre-wrap}
.kx-form-grid{display:grid;gap:10px}
.kx-search{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:100;display:none;align-items:flex-start;justify-content:center;padding:10vh 16px}
.kx-search.on{display:flex}
.kx-search-box{width:100%;max-width:620px;background:var(--k-surface);border:1px solid var(--k-border);border-radius:var(--k-radius);box-shadow:0 30px 80px rgba(0,0,0,.4);overflow:hidden}
.kx-search-box input{border:0;border-bottom:1px solid var(--k-border);border-radius:0;font-size:1.1rem;padding:16px 18px}
.kx-search-res{max-height:55vh;overflow:auto}
.kx-search-res a{display:block;padding:12px 18px;color:var(--k-text);text-decoration:none;border-bottom:1px solid var(--k-border)}
.kx-search-res a:hover,.kx-search-res a.sel{background:var(--k-bg)}
.kx-search-res small{display:block;color:var(--k-muted)}
.kx-cookie{position:fixed;left:16px;right:16px;bottom:16px;max-width:520px;background:var(--k-surface);color:var(--k-text);border:1px solid var(--k-border);border-radius:var(--k-radius);padding:16px 18px;z-index:90;box-shadow:0 20px 50px rgba(0,0,0,.3);display:flex;gap:14px;align-items:center;font-size:.92rem}
.kx-brandmark{display:inline-block;margin-top:6px;font-size:.78rem;opacity:.7}
.kx-docs{display:grid;grid-template-columns:240px 1fr;gap:40px}
.kx-side{position:sticky;top:90px;align-self:start;font-size:.93rem;max-height:calc(100vh - 110px);overflow:auto}
.kx-side a{display:block;color:var(--k-muted);text-decoration:none;padding:6px 10px;border-radius:6px}
.kx-side a:hover{color:var(--k-text)}
.kx-side a.on{color:var(--k-accent);background:var(--k-surface);font-weight:600}
.kx-hl{color:var(--k-accent)}
@media (max-width:760px){
  body{font-size:16px}
  .kx-burger{display:inline-grid}
  .kx-nav{display:none;flex-basis:100%;flex-direction:column;padding-bottom:12px}
  .kx-header.open .kx-nav{display:flex}
  .kx-docs{grid-template-columns:1fr}.kx-side{position:static;max-height:none;border-bottom:1px solid var(--k-border);padding-bottom:12px}
  .kx-main{padding:32px 0 56px}
}
@media print{.kx-header,.kx-footer,.kx-announce,.kx-cookie,.kx-tools{display:none!important}}body{font-size:15px}
.kx-header{background:var(--k-bg);backdrop-filter:none;border-bottom:1px solid var(--k-border)}
.kx-brand{font-family:var(--k-font-mono);font-size:1.05rem;font-weight:700}.kx-brand::before{content:'news:';color:var(--k-muted);font-weight:400}
.kx-nav a{font-family:var(--k-font-mono);font-size:.85rem}
.kx-wrap{max-width:900px}
.kx-prose{max-width:none}
.kx-title{font-family:var(--k-font-mono);font-size:1.02rem;font-weight:700;background:var(--k-surface);border:1px solid var(--k-border);padding:10px 14px 4px;margin:0;letter-spacing:0}
.kx-title::before{content:'Subject: ';font-weight:400;color:var(--k-muted)}
.kx-meta{font-family:var(--k-font-mono);font-size:.85rem;background:var(--k-surface);border:1px solid var(--k-border);border-top:0;padding:2px 14px 10px;margin-bottom:24px;display:block}
.kx-meta>*{display:block}.kx-meta time::before{content:'Date: ';color:var(--k-muted)}.kx-meta span::before{content:'X-Read: ';color:var(--k-muted)}
.kx-prose h2,.kx-prose h3{font-family:var(--k-font-mono);font-size:1rem}
.kx-prose blockquote{border-left:3px solid var(--k-accent2);color:var(--k-accent2);font-style:normal;padding-left:12px}
.kx-prose blockquote p::before{content:'> '}
.kx-prose a{color:var(--k-accent)}
.kx-posts{gap:0}
.kx-post{border:0;background:none;border-radius:0;padding:5px 0 5px 28px;position:relative;font-family:var(--k-font-mono);display:flex;gap:12px;flex-wrap:wrap;align-items:baseline}
.kx-post::before{content:'├─';position:absolute;left:0;color:var(--k-muted)}.kx-post:last-child::before{content:'└─'}
.kx-post:hover{transform:none}.kx-post h3{font-size:.95rem;font-family:var(--k-font-mono);color:var(--k-accent)}.kx-post p{flex-basis:100%;font-size:.85rem}
.kx-btn{border-radius:0;font-family:var(--k-font-mono)}.kx-legal{font-size:.8em;opacity:.8;margin-top:4px}.kx-legal a{color:inherit}.kx-embed{position:relative;aspect-ratio:16/9;margin:1.5em 0}.kx-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0;border-radius:var(--k-radius)}.kx-prose .kx-task{list-style:none;margin-left:-1.2em}.kx-prose .kx-task::before{display:none!important}.kx-hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0}.kx-form{margin:1.5em 0}.kx-form textarea{resize:vertical}.kx-form-note{display:block;color:var(--k-muted);font-size:.8rem;min-height:1em}.kx-form-note.ok{color:#10b981}.kx-form-note.err{color:#ef4444}.kx-nl-row{display:flex;gap:8px;flex-wrap:wrap}.kx-nl-row .kx-input{flex:1;min-width:200px}.kx-nl{border:1px solid var(--k-border);background:var(--k-surface);padding:18px;border-radius:var(--k-radius)}.kx-nl::before{content:"Newsletter";display:block;font-family:var(--k-font-head);font-weight:700;margin-bottom:8px}.kx-rain{position:fixed;inset:0;z-index:-1;opacity:.16;pointer-events:none}html[data-mode="alt"] .kx-rain{display:none}.kx-lightbox{position:fixed;inset:0;background:rgba(0,0,0,.9);z-index:200;display:grid;place-items:center;cursor:zoom-out}.kx-lightbox img{max-width:92vw;max-height:90vh;border-radius:6px}