:root{--kt-sumi-ink-0:#16161d;--kt-sumi-ink-2:#1a1a22;--kt-sumi-ink-3:#1f1f28;--kt-sumi-ink-4:#2a2a37;--kt-sumi-ink-5:#363646;--kt-sumi-ink-6:#54546d;--kt-wave-blue-1:#223249;--kt-wave-blue-2:#2d4f67;--kt-bg-canvas:var(--kt-sumi-ink-0);--kt-bg-primary:#17171e;--kt-bg-primary-alt:#22222c;--kt-bg-secondary:#17171e;--kt-bg-secondary-alt:#22222c;--kt-bg-elevated:#22222c;--kt-bg-sunken:#101015;--kt-bg-field:#101015;--kt-hover:#2d4f6766;--kt-hover-strong:#2d4f6799;--kt-hover-neutral:#54546d38;--kt-active:#363646;--kt-selection:#223249f2;--kt-highlight:#e6c3844d;--kt-border:#30303e;--kt-border-strong:#4a4a5e;--kt-divider:#54546d59;--kt-fg:#dcd7ba;--kt-fg-strong:#f2ece0;--kt-fg-muted:#c8c093;--kt-fg-faint:#727169;--kt-on-accent:#16161d;--kt-red:#c34043;--kt-red-bright:#e82424;--kt-orange:#ffa066;--kt-orange-warm:#ff9e3b;--kt-yellow:#e6c384;--kt-green:#98bb6c;--kt-cyan:#6a9589;--kt-aqua:#7aa89f;--kt-blue:#7e9cd8;--kt-blue-spring:#7fb4ca;--kt-purple:#957fb8;--kt-pink:#d27e99;--kt-violet-soft:#9cabca;--kt-link:#7e9cd8;--kt-link-external:#6a9589;--kt-link-unresolved:#c34043;--kt-heading:#7e9cd8;--kt-icon:#94938f;--kt-icon-bg-hover:#393a43;--kt-icon-bg-active:#41424d;--kt-code-bg:#101015;--kt-code-inline-fg:#ff9e3b;--kt-scrollbar-thumb:#54546d66;--kt-scrollbar-thumb-active:#54546db3;--accent-h:220;--accent-s:54%;--accent-l:67%;--kt-accent:hsl(var(--accent-h), var(--accent-s), var(--accent-l));--kt-accent-hover:hsl(var(--accent-h), var(--accent-s), calc(var(--accent-l) + 7%));--ui-scale:.85;--file-line-width:calc(1200px * var(--ui-scale));--font-text:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--font-monospace:ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Code", Menlo, Consolas, "DejaVu Sans Mono", monospace}html[data-theme=light]{--kt-bg-canvas:#ece1c9;--kt-bg-primary:#f6efdf;--kt-bg-primary-alt:#ebe0c6;--kt-bg-secondary:#f6efdf;--kt-bg-secondary-alt:#e6dab9;--kt-bg-elevated:#fbf6e8;--kt-bg-sunken:#e6dcc4;--kt-bg-field:#fbf6e8;--kt-hover:#8a6a2e1f;--kt-hover-strong:#8a6a2e33;--kt-hover-neutral:#6b5f4524;--kt-active:#e0d4b4;--kt-selection:#c5aa6873;--kt-highlight:#d6af5066;--kt-border:#d8caa6;--kt-border-strong:#bfae86;--kt-divider:#7a6a4659;--kt-fg:#403823;--kt-fg-strong:#2a2313;--kt-fg-muted:#6d6045;--kt-fg-faint:#9a8b68;--kt-on-accent:#2a1c08;--kt-red:#9c3b32;--kt-red-bright:#b23b2b;--kt-orange:#a85f22;--kt-orange-warm:#a56416;--kt-yellow:#8a6a1e;--kt-green:#56713a;--kt-cyan:#4a6e64;--kt-aqua:#457066;--kt-blue:#456089;--kt-blue-spring:#41697f;--kt-purple:#675485;--kt-pink:#91566c;--kt-violet-soft:#5d6885;--kt-link:#7a5a24;--kt-link-external:#4a6e64;--kt-link-unresolved:#9c3b32;--kt-heading:#456089;--kt-icon:#7a6e52;--kt-icon-bg-hover:#e6dab9;--kt-icon-bg-active:#ddceaa;--kt-code-bg:#ece1c9;--kt-code-inline-fg:#8a4c17;--kt-scrollbar-thumb:#7a6a4666;--kt-scrollbar-thumb-active:#7a6a46b3;--accent-h:38;--accent-s:45%;--accent-l:40%}html[data-theme=light] .note em{color:#96473a}html[data-theme=light] .note tr:nth-child(2n) td{background:#96783c14}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--kt-bg-primary);color:var(--kt-fg);font-family:var(--font-text);font-size:calc(18.5px * var(--ui-scale));-webkit-font-smoothing:antialiased;margin:0;line-height:1.6}::selection{background:var(--kt-selection)}*{scrollbar-width:thin;scrollbar-color:var(--kt-scrollbar-thumb) transparent}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-thumb{background:var(--kt-scrollbar-thumb);background-clip:content-box;border:3px solid #0000;border-radius:8px}::-webkit-scrollbar-thumb:hover{background-color:var(--kt-scrollbar-thumb-active)}.sizer{max-width:var(--file-line-width);margin:0 auto;padding:40px 48px 120px}.note h1,.note h2,.note h3,.note h4,.note h5,.note h6{letter-spacing:-.01em;color:var(--kt-fg);scroll-margin-top:24px;font-weight:700;line-height:1.25}.note h1{border-bottom:1px solid var(--kt-border);margin:0 0 .4em;padding-bottom:.4em;font-size:1.9em}.note h2{margin:1.6em 0 .4em;font-size:1.5em}.note h3{margin:1.5em 0 .4em;font-size:1.25em}.note h4{margin:1.4em 0 .3em;font-size:1.1em}.note h5,.note h6{color:var(--kt-fg-muted);margin:1.3em 0 .3em;font-size:1em}.note p{margin:0 0 1em}.note a{color:var(--kt-link);border-bottom:1px solid #0000;text-decoration:none;transition:border-color .12s}.note a:hover{border-bottom-color:currentColor}.note a.internal-link{color:var(--kt-link)}.note a.unresolved,.note span.unresolved{color:var(--kt-link-unresolved);border-bottom:1px dashed var(--kt-link-unresolved);cursor:default;opacity:.75}.note strong{color:var(--kt-fg-strong);font-weight:650}.note em{color:#e46876}.note del{color:var(--kt-fg-faint)}.note ul,.note ol{margin:0 0 1em;padding-left:1.6em}.note li{margin:.25em 0}.note li::marker{color:var(--kt-fg-muted)}.note li:has(>ul),.note li:has(>ol){margin-bottom:.4em}.note blockquote{border-left:3px solid var(--kt-accent);color:var(--kt-fg-muted);margin:0 0 1em;padding:2px 0 2px 16px}.note blockquote p:last-child{margin-bottom:0}.note hr{border:none;border-top:1px solid var(--kt-border);margin:2em 0}.note code{font-family:var(--font-monospace);background:var(--kt-code-bg);color:var(--kt-code-inline-fg);border-radius:4px;padding:.15em .4em;font-size:.85em}.note pre{background:var(--kt-code-bg);border:1px solid var(--kt-border);border-radius:8px;margin:0 0 1em;padding:14px 16px;line-height:1.55;overflow-x:auto}.note pre code{color:var(--kt-fg);background:0 0;padding:0;font-size:.82em}.note table{border-collapse:collapse;width:100%;margin:0 0 1em;font-size:.92em;display:block;overflow-x:auto}.note th,.note td{border:1px solid var(--kt-border);text-align:left;padding:7px 12px}.note th{background:var(--kt-bg-primary-alt);color:var(--kt-fg-strong);font-weight:600}.note tr:nth-child(2n) td{background:#54546d0f}.note img,.note svg{max-width:100%}.note img{cursor:zoom-in;border-radius:8px;height:auto;margin:.4em 0 1em;display:block}.lightbox{z-index:100;background:#0e0e13ed;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lightbox[hidden]{display:none}.lightbox img{border-radius:8px;max-width:calc(100vw - 140px);max-height:calc(100vh - 140px);box-shadow:0 24px 70px #0009}.lightbox button{color:var(--kt-fg-muted);cursor:pointer;background:0 0;border:none;border-radius:8px;padding:12px 16px;font-size:30px;line-height:1;position:absolute}.lightbox button:hover{color:var(--kt-fg-strong);background:#ffffff0f}.lightbox .lb-close{top:14px;right:18px}.lightbox .lb-prev{top:50%;left:14px;transform:translateY(-50%)}.lightbox .lb-next{top:50%;right:14px;transform:translateY(-50%)}.lightbox .lb-count{color:var(--kt-fg-muted);font-size:.82em;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.note a.image-link{border:none}canvas-viewer{background:var(--kt-bg-sunken);border:1px solid var(--kt-border);border-radius:8px;height:480px;margin:0 0 1em;display:block;overflow:hidden}.callout{background:var(--kt-bg-primary-alt);border:1px solid var(--kt-border);border-left:3px solid var(--kt-accent);border-radius:8px;margin:0 0 1em;padding:12px 16px;overflow:hidden}.callout-title{color:var(--kt-fg-strong);align-items:center;gap:7px;margin-bottom:4px;font-size:.94em;font-weight:650;display:flex}.callout-content>:last-child{margin-bottom:0}.callout-content{color:var(--kt-fg-muted);font-size:.94em}.callout-note{--kt-accent-local:var(--kt-blue)}.callout-tip{--kt-accent-local:var(--kt-green)}.callout-warning{--kt-accent-local:var(--kt-orange)}.callout-danger,.callout-error{--kt-accent-local:var(--kt-red)}.callout-quote{--kt-accent-local:var(--kt-fg-muted)}.callout[data-callout]{border-left-color:var(--kt-accent-local,var(--kt-accent))}.callout-note .callout-title{color:var(--kt-blue)}.callout-tip .callout-title{color:var(--kt-green)}.callout-warning .callout-title{color:var(--kt-orange)}.callout-danger .callout-title,.callout-error .callout-title{color:var(--kt-red)}.embed{border:1px solid var(--kt-border);background:var(--kt-bg-primary-alt);border-radius:8px;margin:0 0 1em;padding:14px 18px}.embed>:last-child{margin-bottom:0}.linked-mentions{border-top:1px solid var(--kt-border);margin-top:56px;padding-top:20px}.linked-mentions h2{text-transform:uppercase;letter-spacing:.07em;color:var(--kt-fg-muted);margin:0 0 12px;font-size:.95em;font-weight:600}.linked-mention{border:1px solid #0000;border-radius:8px;padding:10px 12px;text-decoration:none;display:block}.linked-mention:hover{background:var(--kt-bg-primary-alt);border-color:var(--kt-border)}.linked-mention-title{color:var(--kt-link);font-size:.95em}.linked-mention-context{color:var(--kt-fg-faint);margin-top:2px;font-size:.82em;line-height:1.45}.note-header{margin-bottom:28px}.note-crumbs{color:var(--kt-fg-faint);flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:8px;font-size:.78em;display:flex}.note-crumbs a{color:var(--kt-fg-faint);text-decoration:none}.note-crumbs a:hover{color:var(--kt-fg-muted)}.note-crumbs .sep{color:var(--kt-border-strong)}.note-inline-title{color:var(--kt-fg-strong);letter-spacing:-.015em;margin:0 0 10px;font-size:2.1em;font-weight:750;line-height:1.2}.draft-badge{vertical-align:middle;letter-spacing:.12em;color:var(--kt-on-accent);background:var(--kt-orange);border-radius:4px;margin-left:12px;padding:.45em .8em;font-size:.3em;font-weight:700;display:inline-block;position:relative;top:-.35em}.post-card-title .draft-badge{margin-left:8px;font-size:.55em;top:-.2em}.note-properties{color:var(--kt-fg-muted);flex-wrap:wrap;align-items:center;gap:6px 18px;margin-bottom:4px;font-size:.8em;display:flex}.note-property{align-items:center;gap:7px;display:flex}.note-property .key{color:var(--kt-fg-faint)}.note-property svg{width:calc(13px * var(--ui-scale));height:calc(13px * var(--ui-scale));stroke:var(--kt-fg-faint);fill:none;stroke-width:2px}.page-title{color:var(--kt-fg-strong);letter-spacing:-.015em;margin:0 0 6px;font-size:2em;font-weight:750}.page-sub{color:var(--kt-fg-muted);margin:0 0 30px;font-size:.95em}.post-list{flex-direction:column;gap:2px;display:flex}.post-card{border:1px solid #0000;border-radius:10px;padding:16px 18px;text-decoration:none;transition:background .12s,border-color .12s;display:block}.post-card:hover{background:var(--kt-bg-primary-alt);border-color:var(--kt-border)}.post-card-title{color:var(--kt-fg-strong);margin-bottom:4px;font-size:1.18em;font-weight:650}.post-card:hover .post-card-title{color:var(--kt-blue)}.post-card-meta{color:var(--kt-fg-faint);flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:8px;font-size:.8em;display:flex}.post-card-excerpt{color:var(--kt-fg-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:.9em;line-height:1.55;display:-webkit-box;overflow:hidden}.section-head{text-transform:uppercase;letter-spacing:.08em;color:var(--kt-fg-muted);border-bottom:1px solid var(--kt-border);margin:34px 0 10px;padding-bottom:6px;font-size:.85em;font-weight:600}.plain-page{background:var(--kt-bg-primary);flex-direction:column;min-height:100vh;display:flex}.plain-page main{flex:1 0 auto}.plain-nav{border-bottom:1px solid var(--kt-border);background:var(--kt-bg-canvas);justify-content:space-between;align-items:center;padding:17.82px 40px;display:flex}.plain-nav .brand{color:var(--kt-fg-strong);font-size:.95em;font-weight:650;text-decoration:none}.plain-nav .links{gap:22px;display:flex}.plain-nav .links a{color:var(--kt-fg-muted);font-size:.9em;text-decoration:none}.plain-nav .links a:hover{color:var(--kt-fg-strong)}.plain-nav .links a.is-active{color:var(--kt-fg-strong);border-bottom:2px solid var(--kt-accent);padding-bottom:2px}.theme-toggle{cursor:pointer;color:var(--kt-fg-muted);background:0 0;border:none;place-items:center;padding:0;display:grid}.theme-toggle:hover{color:var(--kt-fg-strong)}.theme-toggle svg{width:calc(15px * var(--ui-scale));height:calc(15px * var(--ui-scale));fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.theme-toggle .icon-sun,.theme-toggle.is-light .icon-moon{display:none}.theme-toggle.is-light .icon-sun{display:block}.about-wrap{max-width:780px;margin:0 auto;padding:72px 32px 120px}.about-hero h1{color:var(--kt-fg-strong);letter-spacing:-.02em;margin:0 0 10px;font-size:2.5em;font-weight:780;line-height:1.15}.about-tagline{color:var(--kt-accent);margin:0 0 40px;font-size:1.15em;font-weight:500}.social-link-primary{border-color:var(--kt-accent);background:var(--kt-accent);color:var(--kt-on-accent);font-weight:600}.social-link-primary:hover{border-color:var(--kt-accent-hover);background:var(--kt-accent-hover);color:var(--kt-on-accent)}.social-row .social-link-primary svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.about-section{margin-bottom:34px}.about-section h2{text-transform:uppercase;letter-spacing:.09em;color:var(--kt-fg-muted);margin:0 0 12px;font-size:.82em;font-weight:600}.spec-grid{grid-template-columns:150px 1fr;gap:9px 20px;font-size:.95em;display:grid}.spec-grid dt{color:var(--kt-fg-faint);align-items:center;gap:7px;display:flex}.spec-grid dd{color:var(--kt-fg);margin:0}.social-row{flex-wrap:wrap;gap:12px;display:flex}.social-link{border:1px solid var(--kt-border);color:var(--kt-fg-muted);background:var(--kt-bg-primary-alt);border-radius:8px;align-items:center;gap:8px;padding:8px 16px;font-size:.9em;text-decoration:none;transition:all .12s;display:inline-flex}.social-link:hover{border-color:var(--kt-accent);color:var(--kt-fg-strong);background:var(--kt-active)}.social-link svg{width:calc(15px * var(--ui-scale));height:calc(15px * var(--ui-scale));fill:currentColor}.site-footer{border-top:1px solid var(--kt-border);color:var(--kt-fg-faint);background:var(--kt-bg-canvas);flex-wrap:wrap;justify-content:space-between;gap:16px;padding:22.68px 40px;font-size:.82em;display:flex}.site-footer a{color:var(--kt-fg-muted);text-decoration:none}.site-footer a:hover{color:var(--kt-fg-strong)}.footer-links{gap:18px;display:flex}@media (width<=860px){.sizer{padding:26px 20px 90px}.note-inline-title{font-size:1.6em}.about-wrap{padding:44px 22px 80px}.about-hero h1{font-size:1.9em}.spec-grid{grid-template-columns:1fr;gap:3px 0}.spec-grid dd{margin-bottom:10px}.plain-nav{padding:14.58px 22px}.lightbox img{max-width:calc(100vw - 24px);max-height:calc(100vh - 160px)}}
