/*!
 * Bootstrap subset — the part of Bootstrap v5.3.3 this site actually uses.
 * Extracted from https://getbootstrap.com/ (MIT License, Copyright 2011-2024 The Bootstrap Authors)
 * Colours, fonts and focus styles come from the brand tokens; Bootstrap only supplies structure.
 *
 * Contents: reboot (base elements), container / grid (row, col-md-10, col-lg-10, offsets),
 * navbar (+ collapse), and the utilities fixed-top and ms-auto.
 * The navbar toggle behaviour (formerly bootstrap.bundle.js) lives in assets/js/site.js.
 */*,::after,::before{box-sizing:border-box}body{margin:0;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}h2{font-size:calc(1.325rem + .9vw)}h3{font-size:calc(1.3rem + .6vw)}h4{font-size:calc(1.275rem + .3vw)}h5{font-size:1.25rem}h6{font-size:1rem}@media (min-width: 1200px){h1{font-size:2.5rem}h2{font-size:2rem}h3{font-size:1.75rem}h4{font-size:1.5rem}}p{margin-top:0;margin-bottom:1rem}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.1875em;color:var(--text);background-color:var(--warning-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--font-mono);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--white);background-color:var(--ink-900);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--text-muted);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}button{border-radius:0;margin:0;font-family:inherit;font-size:inherit;line-height:inherit;text-transform:none;-webkit-appearance:button}button:not(:disabled){cursor:pointer}button:focus:not(:focus-visible){outline:0}::-moz-focus-inner{padding:0;border-style:none}iframe{border:0}summary{display:list-item;cursor:pointer}[hidden]{display:none !important}.container,.container-fluid{width:100%;padding-right:.75rem;padding-left:.75rem;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}@media (min-width: 1400px){.container{max-width:1320px}}.row{display:flex;flex-wrap:wrap;margin-right:-.75rem;margin-left:-.75rem}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:.75rem;padding-left:.75rem}@media (min-width: 768px){.col-md-10{flex:0 0 auto;width:83.33333333%}.offset-md-1{margin-left:8.33333333%}}@media (min-width: 992px){.col-lg-10{flex:0 0 auto;width:83.33333333%}.offset-lg-1{margin-left:8.33333333%}}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 0}.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 0;text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.collapse:not(.show){display:none}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid;border-radius:.375rem;transition:box-shadow .15s ease-in-out}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus-visible{outline:0;box-shadow:var(--focus)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (prefers-reduced-motion: reduce){.nav-link,.navbar-toggler{transition:none}}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.ms-auto{margin-left:auto !important}@font-face{font-family:'Inter';font-style:italic;font-weight:400;font-display:swap;src:url("/assets/fonts/inter-italic-latin.woff2") format("woff2");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}@font-face{font-family:'Inter';font-style:normal;font-weight:400 600;font-display:swap;src:url("/assets/fonts/inter-latin.woff2") format("woff2");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}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400 600;font-display:swap;src:url("/assets/fonts/jetbrains-mono-latin.woff2") format("woff2");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}@font-face{font-family:'Space Grotesk';font-style:normal;font-weight:500 700;font-display:swap;src:url("/assets/fonts/space-grotesk-latin.woff2") format("woff2");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}:root{--ink-950: #0B110E;--ink-900: #111915;--ink-800: #1A2420;--ink-700: #2A3530;--ink-300: #9AA8A1;--ink-50: #E4ECE8;--moss: #306951;--moss-hover: #3A7B60;--moss-soft: #E6F1EB;--moss-text: #24573F;--signal: #3DDC97;--signal-soft: rgba(61, 220, 151, 0.16);--signal-hover: #5CE6AB;--text: #18201C;--text-muted: #526059;--text-subtle: #7C8781;--border: #DDE3DF;--border-strong: #C5CEC9;--surface: #F3F6F4;--paper: #FAFBFA;--white: #FFFFFF;--info: #2F6FEB;--info-bg: #EBF2FE;--info-text: #1F5BD1;--success: #306951;--success-bg: #E6F1EB;--success-text: #24573F;--warning: #D9932A;--warning-bg: #FDF4E2;--warning-text: #8A5A0E;--critical: #C9302F;--critical-bg: #FDEDED;--critical-text: #B42328;--critical-hover: #D8423F;--high-bg: #FDEEE5;--high-text: #A63F12;--code-text: #D7E2DC;--code-comment: #6B7A73;--code-string: #F2C572;--code-number: #F2A86B;--code-name: #8EC5FF;--code-tag: #F28B82;--font-display: 'Space Grotesk', system-ui, sans-serif;--font-body: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;--font-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;--display-weight: 600;--radius-sm: 6px;--radius: 10px;--radius-lg: 16px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(11, 17, 14, 0.06);--shadow: 0 6px 20px rgba(11, 17, 14, 0.08), 0 1px 3px rgba(11, 17, 14, 0.05);--shadow-lg: 0 20px 50px rgba(11, 17, 14, 0.14), 0 2px 6px rgba(11, 17, 14, 0.05);--focus: 0 0 0 3px var(--signal-soft), 0 0 0 1px var(--moss);--ease: cubic-bezier(.2, .7, .2, 1)}@media (max-width: 767.98px){:root{--display-weight: 700}}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}@media (prefers-reduced-motion: no-preference){html{scroll-behavior:smooth}}body{margin:0;background:var(--white);color:var(--text);font-family:var(--font-body);font-size:17px;line-height:1.7;-webkit-font-smoothing:antialiased}::selection{background:var(--signal);color:var(--ink-950)}img{max-width:100%;height:auto;display:block}h1,h2,h3,h4,.display{font-family:var(--font-display);font-weight:var(--display-weight);color:var(--text);letter-spacing:-0.02em;margin:0 0 0.4em}.display{font-size:clamp(44px, 7vw, 76px);line-height:1.02;letter-spacing:-0.035em}h1{font-size:clamp(34px, 5vw, 46px);line-height:1.1}h2{font-size:clamp(26px, 3.6vw, 32px);line-height:1.2}h3{font-size:23px;line-height:1.3}h4{font-size:18px;line-height:1.4;letter-spacing:-0.01em}p{margin:0 0 1em}.lead{font-size:20px;line-height:1.6;color:var(--text-muted)}.label{font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--moss)}a{color:var(--moss);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:rgba(48,105,81,0.35);transition:color .2s, text-decoration-color .2s}a:hover{color:var(--moss-hover);text-decoration-color:currentColor}:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--radius-sm)}code{font-family:var(--font-mono);font-size:0.86em;padding:0.15em 0.4em;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border);color:var(--moss-text)}pre{margin:0 0 1.4em;padding:18px 20px;overflow-x:auto;border-radius:var(--radius);background:var(--ink-950);color:var(--code-text);font-family:var(--font-mono);font-size:14px;line-height:1.7}pre code{padding:0;background:none;border:0;color:inherit;font-size:inherit}blockquote{margin:0 0 1.4em;padding:4px 0 4px 20px;border-left:3px solid var(--signal);font-family:var(--font-display);font-size:22px;line-height:1.45;letter-spacing:-0.01em;color:var(--text)}blockquote cite{display:block;margin-top:8px;font-family:var(--font-mono);font-size:12px;font-style:normal;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}hr{border:0;height:1px;background:var(--border);margin:2em 0}.logo{display:inline-flex;align-items:center;gap:10px;color:var(--text);text-decoration:none}.logo:hover{color:var(--text)}.logo-word{font-family:var(--font-display);font-weight:var(--display-weight);font-size:20px;letter-spacing:-0.02em}.logo-word .paren{color:var(--moss);font-weight:500}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:42px;padding:0 18px;border:1.5px solid transparent;border-radius:var(--radius);font-family:var(--font-body);font-size:15px;font-weight:600;line-height:1;white-space:nowrap;text-decoration:none;cursor:pointer;transition:background-color 0.2s,border-color 0.2s,color 0.2s,box-shadow 0.2s,transform 0.2s var(--ease)}.btn svg{width:16px;height:16px;flex:none}.btn:active{transform:translateY(1px)}.btn:focus-visible{box-shadow:var(--focus);border-radius:var(--radius)}.btn-primary{background:var(--moss);color:var(--white)}.btn-primary:hover{background:var(--moss-hover);color:var(--white)}.btn-secondary{background:var(--white);border-color:var(--border-strong);color:var(--text)}.btn-secondary:hover{border-color:var(--moss);color:var(--moss)}.btn-signal{background:var(--signal);color:var(--ink-950)}.btn-signal:hover{background:var(--signal-hover);color:var(--ink-950)}.btn-outline-light{background:rgba(255,255,255,0.04);border-color:rgba(255,255,255,0.28);color:var(--white)}.btn-outline-light:hover{background:rgba(255,255,255,0.1);border-color:var(--white);color:var(--white)}.btn-sm{height:34px;padding:0 13px;font-size:14px;border-radius:8px}.btn-lg{height:50px;padding:0 24px;font-size:16px}.btn-icon{width:42px;padding:0}.btn[disabled]{opacity:.45;pointer-events:none}.tag{display:inline-flex;align-items:center;height:26px;padding:0 10px;border-radius:var(--radius-pill);background:var(--surface);color:var(--text-muted);font-size:13px;font-weight:500;text-decoration:none}a.tag:hover{background:var(--moss-soft);color:var(--moss-text)}.figure{margin:0 0 1.6em}.figure img{border-radius:12px;border:1px solid var(--border);box-shadow:var(--shadow)}.figure figcaption{margin-top:12px;font-size:14px;color:var(--text-muted)}.figure figcaption b{font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--moss);margin-right:6px}@media (prefers-reduced-motion: reduce){*,*::before,*::after{transition:none !important;animation:none !important}}html{scroll-padding-top:96px}body{background:var(--white)}.measure{max-width:760px;margin:0 auto;padding:0 24px}.wide{max-width:1100px;margin:0 auto;padding:0 24px}.navbar-custom{z-index:1100;padding:14px 8px;background:transparent;border-bottom:1px solid transparent;transition:background-color .3s, border-color .3s, padding .3s}.navbar-custom .navbar-brand{margin-right:0;padding:0}.navbar-custom .logo,.navbar-custom .logo:hover{color:var(--white)}.navbar-custom .logo-word .paren{color:var(--signal)}.navbar-custom .nav-link{color:rgba(255,255,255,0.78);padding:8px 10px;border-radius:8px}.navbar-custom .nav-link:hover,.navbar-custom .nav-link:focus{color:var(--signal)}.navbar-custom .navbar-toggler{border-color:rgba(255,255,255,0.3)}.navbar-custom .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.85%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-custom.nav-scrolled{padding-top:8px;padding-bottom:8px;background:rgba(255,255,255,0.96);-webkit-backdrop-filter:saturate(1.4) blur(12px);backdrop-filter:saturate(1.4) blur(12px);border-bottom-color:var(--border)}.navbar-custom.nav-scrolled .logo,.navbar-custom.nav-scrolled .logo:hover{color:var(--text)}.navbar-custom.nav-scrolled .logo-word .paren{color:var(--moss)}.navbar-custom.nav-scrolled .nav-link{color:var(--text-muted)}.navbar-custom.nav-scrolled .nav-link:hover,.navbar-custom.nav-scrolled .nav-link:focus{color:var(--moss);background:var(--moss-soft)}.navbar-custom.nav-scrolled .navbar-toggler{border-color:var(--border-strong)}.navbar-custom.nav-scrolled .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2824, 32, 28, 0.8%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}@media (max-width: 991.98px){.navbar-custom .navbar-nav{flex-direction:row;justify-content:center;gap:6px;padding-top:8px}}.intro-header.brand-header{position:relative;z-index:950;overflow:hidden;background-color:var(--ink-950);background-image:linear-gradient(180deg, rgba(11,17,14,0.66) 0%, rgba(11,17,14,0.84) 100%),url("/assets/img/bg-sd.jpg");background-size:cover;background-position:center 40%;color:var(--white)}.brand-header::before{content:'';position:absolute;width:760px;height:760px;right:-240px;top:-340px;background:radial-gradient(circle, rgba(48,105,81,0.55), transparent 65%);pointer-events:none}.brand-header::after{content:'';position:absolute;inset:0;background-image:radial-gradient(rgba(61,220,151,0.13) 1px, transparent 1px);background-size:22px 22px;-webkit-mask-image:linear-gradient(180deg, transparent, #000 35%, #000 70%, transparent);mask-image:linear-gradient(180deg, transparent, #000 35%, #000 70%, transparent);pointer-events:none}.brand-header>*{position:relative;z-index:1}.header-inner{padding-top:150px;padding-bottom:72px}.header-kicker{display:inline-block;margin-bottom:18px;color:var(--signal)}.brand-header h1{color:var(--white);margin-bottom:16px}.header-lead{margin:0 0 22px;font-size:20px;line-height:1.55;color:var(--ink-300)}.header-meta{display:flex;flex-wrap:wrap;gap:6px 10px;font-size:14.5px;color:var(--ink-300)}.post-body,.page-body{padding-top:56px;padding-bottom:32px}.post-body>h2,.page-body>h2{margin-top:2.1em;margin-bottom:.55em;font-size:30px}.post-body>h3,.page-body>h3{margin-top:1.9em;margin-bottom:.5em;font-size:22px}.post-body>h4,.page-body>h4{margin-top:1.6em;margin-bottom:.4em}.post-body>h1{margin-top:1.6em;font-size:34px}.post-body p,.post-body ul,.post-body ol,.page-body p,.page-body ul,.page-body ol{margin-top:0;margin-bottom:1.25em}.post-body li,.page-body li{margin-bottom:.35em}.post-body li::marker,.page-body li::marker{color:var(--moss)}.post-body img{border-radius:10px}.post-body strong,.page-body strong{font-weight:600;color:var(--text)}.mon{font-family:var(--font-mono);font-size:.86em;padding:.15em .4em;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border);color:var(--moss-text)}.post-body blockquote,.page-body blockquote{margin:0 0 1.4em;padding:14px 20px;border-left:3px solid var(--signal);border-radius:0 var(--radius) var(--radius) 0;background:var(--surface);font-family:var(--font-body);font-size:16px;line-height:1.7;letter-spacing:0;color:var(--text-muted)}.post-body blockquote p:last-child,.page-body blockquote p:last-child{margin-bottom:0}.post-body .figure{margin:2em 0}.post-body .figure img{margin:0 auto}.post-body .figure figcaption{text-align:center}.post-body table{width:100%;margin:0 0 1.5em;border-collapse:collapse;font-size:15px}.post-body th,.post-body td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left}.post-body th{font-weight:600;background:var(--surface)}.post-body sup a,.post-body a.footnote{font-family:var(--font-mono);font-size:12px;text-decoration:none;padding:0 2px}.post-body .footnotes{margin-top:3em;padding-top:1.2em;border-top:1px solid var(--border);font-size:14.5px;color:var(--text-muted)}.post-body .footnotes ol{padding-left:1.2em}.post-body .reversefootnote{text-decoration:none}.post-body div.highlighter-rouge,.post-body pre{margin:0 0 1.5em}.post-nav{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:56px;padding-top:32px;border-top:1px solid var(--border)}.post-nav-link{display:grid;gap:6px;padding:18px 20px;border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text);text-decoration:none;transition:border-color 0.2s,box-shadow 0.2s,transform 0.2s var(--ease)}.post-nav-link:hover{color:var(--text);border-color:transparent;box-shadow:var(--shadow);transform:translateY(-2px)}.post-nav-link.is-next{text-align:right}.post-nav-title{font-family:var(--font-display);font-weight:var(--display-weight);font-size:17px;line-height:1.35;letter-spacing:-.01em;transition:color .2s}.post-nav-link:hover .post-nav-title{color:var(--moss)}#markdown-toc{position:relative;margin:0 0 2.4em;padding:22px 26px 18px;list-style:none;counter-reset:toc;background:var(--paper);border:1px solid var(--border);border-radius:var(--radius-lg);font-size:15px;line-height:1.9}#markdown-toc::before{content:"Contents";display:block;margin-bottom:10px;font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--moss)}#markdown-toc,#sidebar-toc{list-style:none;counter-reset:toc}#markdown-toc li,#sidebar-toc li{margin:0;padding:0}#markdown-toc li::marker,#sidebar-toc li::marker{content:none}#markdown-toc>li,#sidebar-toc>li{counter-increment:toc}#markdown-toc>li::before,#sidebar-toc>li::before{content:counter(toc,decimal-leading-zero);display:inline-block;min-width:28px;font-family:var(--font-mono);font-size:12px;color:var(--moss)}#markdown-toc ul,#sidebar-toc ul{list-style:none;margin:0;padding-left:28px;counter-reset:toc-sub}#markdown-toc ul>li,#sidebar-toc ul>li{counter-increment:toc-sub}#markdown-toc ul>li::before,#sidebar-toc ul>li::before{content:counter(toc-sub,lower-alpha);display:inline-block;min-width:20px;font-family:var(--font-mono);font-size:12px;color:var(--text-subtle)}#markdown-toc a,#sidebar-toc a{color:var(--text-muted);text-decoration:none}#markdown-toc a:hover,#sidebar-toc a:hover{color:var(--moss)}#sidebar-toc a.toc-active{color:var(--moss);font-weight:600}.toc-inline-toggle{position:absolute;top:18px;right:18px;padding:4px;border:0;border-radius:6px;background:none;color:var(--text-subtle);line-height:0;transition:color .2s, background-color .2s}.toc-inline-toggle:hover{color:var(--moss);background:var(--moss-soft)}.toc-sidebar{position:fixed;left:0;z-index:900;display:none;width:340px;overflow-y:auto;padding:24px 28px;background:var(--paper);border-right:1px solid var(--border);font-size:14.5px;line-height:1.9}.toc-sidebar.open{display:block}.toc-sidebar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.toc-sidebar-title{font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--moss)}.toc-sidebar-close{padding:4px;border:0;border-radius:6px;background:none;color:var(--text-subtle);line-height:0}.toc-sidebar-close:hover{color:var(--moss);background:var(--moss-soft)}.toc-sidebar-close svg{width:18px;height:18px}#sidebar-toc{padding:0;margin:0}@media (min-width: 992px){body.toc-sidebar-open #markdown-toc{display:none}body.toc-sidebar-open .post-body{margin-left:max(370px, calc(50% - 380px))}}@media (max-width: 991.98px){.toc-sidebar{display:none !important}.toc-inline-toggle{display:none}}.site-footer{padding:56px 0 64px;border-top:1px solid var(--border);background:var(--paper);text-align:center}.footer-logo{justify-content:center}.footer-tagline{margin:6px 0 22px;font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-subtle)}.footer-nav{display:flex;justify-content:center;gap:6px;margin:0 0 18px;padding:0;list-style:none}.footer-nav a{display:inline-flex;padding:8px;border-radius:10px;color:var(--text-muted);transition:color .2s, background-color .2s}.footer-nav a:hover{color:var(--moss);background:var(--moss-soft)}.copyright{margin:0;font-size:13.5px;color:var(--text-muted)}#scrollTop{position:fixed;right:28px;bottom:28px;z-index:1030;display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border-radius:50%;background:var(--ink-950);color:var(--signal);box-shadow:var(--shadow);line-height:0;text-decoration:none;opacity:0;pointer-events:none;transition:opacity .3s}#scrollTop.visible{opacity:1;pointer-events:auto}#scrollTop:hover{opacity:.85;color:var(--signal)}@media (max-width: 767.98px){#scrollTop{right:18px;bottom:18px;width:40px;height:40px}}.consent{position:fixed;left:20px;bottom:20px;z-index:1040;width:360px;max-width:calc(100vw - 24px);padding:16px 18px;background:var(--white);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-lg);font-size:14.5px;line-height:1.5;color:var(--text)}.consent:not([hidden]){animation:consent-in 0.3s var(--ease)}@keyframes consent-in{from{opacity:0;transform:translateY(10px)}}.consent[hidden]{display:none}.consent-text{margin:0 0 14px}.consent-text a{color:var(--text-muted);font-size:13px;white-space:nowrap}.consent-actions{display:flex;gap:10px;justify-content:flex-end}.consent-btn{min-width:96px}.consent-open{padding:0;border:0;background:none;color:inherit;font:inherit;text-decoration:underline;text-underline-offset:3px}.consent-open:hover{color:var(--moss)}@media (max-width: 576px){.consent{left:12px;right:12px;bottom:12px;width:auto}.consent-btn{flex:1}}@media (max-width: 767.98px){.measure,.wide{padding:0 18px}.header-inner{padding-top:120px;padding-bottom:52px}.header-lead{font-size:18px}.post-body,.page-body{padding-top:40px}.post-body>h2,.page-body>h2{font-size:25px}.post-nav{grid-template-columns:1fr}.post-nav-link.is-next{text-align:left}}div.highlight{background:none}.highlight pre,pre.highlight{color:var(--code-text)}.highlight pre code{white-space:pre;overflow-wrap:normal}.highlight .c,.highlight .ch,.highlight .cm,.highlight .cp,.highlight .cpf,.highlight .c1,.highlight .cs,.highlight .gu{color:var(--code-comment)}.highlight .k,.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt,.highlight .ow{color:var(--signal)}.highlight .s,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .dl,.highlight .sd,.highlight .s2,.highlight .se,.highlight .sh,.highlight .si,.highlight .sx,.highlight .sr,.highlight .s1,.highlight .ss,.highlight .ld{color:var(--code-string)}.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .il,.highlight .mo,.highlight .l{color:var(--code-number)}.highlight .nf,.highlight .fm,.highlight .nc,.highlight .na,.highlight .nd,.highlight .ne,.highlight .nx,.highlight .nb,.highlight .bp,.highlight .no{color:var(--code-name)}.highlight .nt{color:var(--code-tag)}.highlight .o,.highlight .p{color:var(--ink-300)}.highlight .n,.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi,.highlight .py,.highlight .nl,.highlight .nn,.highlight .ni,.highlight .w{color:var(--code-text)}.highlight .gd{color:var(--code-tag)}.highlight .gi{color:var(--signal)}.highlight .ge{font-style:italic}.highlight .gs{font-weight:600}.highlight .err{color:var(--code-tag);background:none}.highlight .hll{background:var(--signal-soft)}.home-hero-inner{padding:160px 0 150px}.home-hero .label{color:var(--signal)}.home-title{margin:18px 0 0;color:var(--white)}.home-lead{max-width:560px;margin:22px 0 34px;font-size:19px;line-height:1.6;color:var(--ink-300)}.home-cta{display:flex;flex-wrap:wrap;gap:12px}.home-main{position:relative;padding-top:40px;padding-bottom:56px}.home-main.has-featured{z-index:960;margin-top:-76px;padding-top:0}.home-main:not(.has-featured) .home-section{margin-top:0}.featured-post{display:block;padding:34px 38px 28px;background:var(--white);border:1px solid var(--border);border-radius:20px;box-shadow:var(--shadow-lg);color:var(--text);text-decoration:none;transition:transform 0.25s var(--ease),box-shadow 0.25s var(--ease)}.featured-post:hover,.featured-post:focus{color:var(--text);transform:translateY(-3px);box-shadow:0 28px 64px rgba(11,17,14,0.18),0 2px 6px rgba(11,17,14,0.05)}.featured-label{display:inline-flex;align-items:center;gap:8px;margin-bottom:16px;padding:5px 11px;border-radius:var(--radius-pill);background:var(--moss-soft)}.featured-label::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--signal);box-shadow:0 0 0 3px var(--signal-soft)}.featured-title{margin:0 0 10px;font-size:clamp(26px, 3.4vw, 36px);line-height:1.18;transition:color .2s}.featured-post:hover .featured-title{color:var(--moss)}.featured-subtitle{margin:0 0 24px;font-size:18px;line-height:1.6;color:var(--text-muted)}.featured-footer{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;padding-top:18px;border-top:1px solid var(--border)}.featured-footer .read-more{margin-left:auto}.post-meta-line{font-size:14px;color:var(--text-muted);font-variant-numeric:tabular-nums}.read-more{font-weight:600;font-size:15px;color:var(--moss);white-space:nowrap}.read-more .arrow,.post-row-arrow{display:inline-block;transition:transform 0.25s var(--ease),opacity 0.25s}.featured-post:hover .read-more .arrow{transform:translateX(4px)}.post-tags{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}.home-section{margin-top:72px}.home-section-title{display:flex;align-items:center;gap:16px;margin:0 0 8px}.home-section-title::after{content:'';flex:1;height:1px;background:var(--border)}.post-list{margin:0;padding:0;list-style:none}.post-list>li+li{border-top:1px solid var(--border)}.post-row{display:grid;grid-template-columns:96px 1fr 28px;gap:24px;align-items:start;margin:0 -16px;padding:26px 16px;border-radius:14px;color:var(--text);text-decoration:none;transition:background-color .2s}.post-row:hover,.post-row:focus{color:var(--text);background:var(--paper)}.post-row-date{padding-top:6px;font-family:var(--font-mono);font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap}.post-row-title{margin:0 0 6px;font-size:23px;line-height:1.3;transition:color .2s}.post-row:hover .post-row-title{color:var(--moss)}.post-row-subtitle{margin:0 0 12px;font-size:16px;line-height:1.6;color:var(--text-muted)}.post-row-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}.post-row-arrow{padding-top:2px;font-size:20px;color:var(--moss);opacity:0;transform:translateX(-6px)}.post-row:hover .post-row-arrow,.post-row:focus .post-row-arrow{opacity:1;transform:none}.home-main .pager{display:flex;justify-content:space-between;margin:40px 0 0;padding:0;list-style:none}.home-main .pager a{display:inline-flex;align-items:center;height:42px;padding:0 18px;border:1.5px solid var(--border-strong);border-radius:var(--radius);color:var(--text);font-weight:600;font-size:15px;text-decoration:none;transition:border-color .2s, color .2s}.home-main .pager a:hover{border-color:var(--moss);color:var(--moss)}@media (max-width: 767.98px){.home-hero-inner{padding:120px 0 112px}.home-lead{font-size:17px}.home-main{padding-top:24px}.home-main.has-featured{margin-top:-56px;padding-top:0}.featured-post{padding:24px 22px 22px;border-radius:16px}.featured-subtitle{font-size:16px}.featured-footer .read-more{margin-left:0}.post-row{grid-template-columns:1fr;gap:6px;margin:0 -12px;padding:22px 12px}.post-row-date{padding-top:0}.post-row-title{font-size:21px}.post-row-arrow{display:none}}.about-hero-inner{display:grid;grid-template-columns:168px 1fr;gap:40px;align-items:center;padding-bottom:120px}.about-avatar{width:168px;height:168px;border-radius:50%;object-fit:cover;box-shadow:0 0 0 4px var(--ink-950),0 0 0 6px var(--signal),0 20px 50px rgba(0,0,0,0.4)}.about-hero h1{font-size:clamp(36px, 5.4vw, 56px);letter-spacing:-.03em}.about-hero .header-lead{max-width:560px;margin-bottom:26px}.about-actions{display:flex;flex-wrap:wrap;gap:10px}.about{padding-bottom:72px}.about-stats{position:relative;z-index:960;display:grid;grid-template-columns:repeat(4, 1fr);margin:-64px 0 0;background:var(--white);border:1px solid var(--border);border-radius:20px;box-shadow:var(--shadow-lg);overflow:hidden}.about-stats>div{padding:24px 26px}.about-stats>div+div{border-left:1px solid var(--border)}.about-stats dt{font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.about-stats dd{margin:0 0 4px;font-family:var(--font-display);font-weight:var(--display-weight);font-size:30px;line-height:1.15;letter-spacing:-.02em;color:var(--text)}.about-stats>div{display:flex;flex-direction:column-reverse;justify-content:flex-end}.about-stats>div:first-child dd{color:var(--moss)}.about-bio{padding-top:64px}.about-bio-inner{max-width:700px;margin-left:224px}.about-bio strong{font-weight:600}.about-section{margin-top:80px}.about-section-head{display:grid;grid-template-columns:200px 1fr;align-items:baseline;gap:24px;margin-bottom:28px;padding-bottom:14px;border-bottom:1px solid var(--border)}.about-section-head h2{margin:0;font-size:30px}.about-section-intro{margin:-12px 0 20px 224px;color:var(--text-muted)}.timeline{list-style:none;margin:0 0 0 224px;padding:0 0 0 28px;border-left:2px solid var(--border)}.timeline li{position:relative;display:grid;gap:2px;padding-bottom:22px}.timeline li:last-child{padding-bottom:0}.timeline li::before{content:'';position:absolute;left:-36px;top:4px;width:14px;height:14px;border-radius:50%;background:var(--white);border:2px solid var(--moss)}.timeline li:first-child::before{background:var(--signal);border-color:var(--signal);box-shadow:0 0 0 5px var(--signal-soft)}.timeline-date{font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--moss)}.timeline-text{font-size:16.5px;line-height:1.6}.cve-list{list-style:none;margin:0 0 0 224px;padding:0;display:grid;gap:8px}.cve{display:grid;grid-template-columns:150px 1fr 18px;gap:16px;align-items:center;padding:14px 18px;border:1px solid var(--border);border-radius:12px;color:var(--text);text-decoration:none;transition:border-color 0.2s,background-color 0.2s,transform 0.2s var(--ease)}.cve:hover{color:var(--text);border-color:var(--moss);background:var(--paper);transform:translateX(2px)}.cve-id{font-family:var(--font-mono);font-size:13.5px;font-weight:600;color:var(--moss)}.cve-text{font-size:15.5px;line-height:1.5}.cve-arrow{color:var(--text-subtle);line-height:0;transition:color .2s}.cve:hover .cve-arrow{color:var(--moss)}.project-grid{list-style:none;margin:0 0 0 224px;padding:0;display:grid;grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));gap:12px}.project-grid li{display:flex}.project{display:flex;flex-direction:column;width:100%;padding:20px 22px;border:1px solid var(--border);border-radius:16px;color:var(--text-muted);text-decoration:none;transition:border-color 0.25s,box-shadow 0.25s,transform 0.25s var(--ease)}.project:hover{color:var(--text-muted);border-color:transparent;box-shadow:var(--shadow);transform:translateY(-3px)}.project-icon{display:inline-grid;place-items:center;width:36px;height:36px;margin-bottom:14px;border-radius:10px;background:var(--ink-950);color:var(--signal)}.project-name{font-family:var(--font-display);font-weight:var(--display-weight);font-size:19px;letter-spacing:-.01em;color:var(--text);transition:color .2s}.project:hover .project-name{color:var(--moss)}.project-text{margin:6px 0 16px;font-size:14.5px;line-height:1.6}.project-more{display:inline-flex;align-items:center;gap:6px;margin-top:auto;font-weight:600;font-size:14px;color:var(--moss)}.project-more svg{transition:transform 0.25s var(--ease)}.project:hover .project-more svg{transform:translateX(3px)}.ack-list{list-style:none;margin:0 0 0 224px;padding:0;display:flex;flex-wrap:wrap;gap:10px}.ack-list a{display:inline-flex;align-items:center;height:40px;padding:0 18px;border:1.5px solid var(--border-strong);border-radius:var(--radius-pill);color:var(--text);font-weight:600;font-size:14.5px;text-decoration:none;transition:border-color .2s, color .2s, background-color .2s}.ack-list a:hover{border-color:var(--moss);color:var(--moss);background:var(--moss-soft)}.about-cta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:24px;margin-top:88px;padding:36px 40px;border-radius:20px;background:var(--ink-950) radial-gradient(circle at 90% 0%, rgba(48,105,81,0.6), transparent 55%);color:var(--ink-300)}.about-cta .label{color:var(--signal)}.about-cta h2{margin:8px 0 6px;color:var(--white);font-size:30px}.about-cta p{margin:0}@media (max-width: 991.98px){.about-section-head{grid-template-columns:1fr;gap:4px}.about-bio-inner,.about-section-intro,.timeline,.cve-list,.project-grid,.ack-list{margin-left:0}.about-section-intro{margin-top:-8px}.timeline{margin-left:8px}}@media (max-width: 767.98px){.about-hero-inner{grid-template-columns:1fr;gap:24px;padding-bottom:104px}.about-avatar{width:112px;height:112px}.about-stats{grid-template-columns:1fr 1fr;margin-top:-56px}.about-stats>div:nth-child(3){border-left:0}.about-stats>div:nth-child(n+3){border-top:1px solid var(--border)}.about-stats dd{font-size:24px}.about-bio{padding-top:48px}.about-section{margin-top:64px}.about-section-head h2{font-size:25px}.cve{grid-template-columns:1fr 18px;gap:4px 12px}.cve-id{grid-column:1}.cve-text{grid-column:1}.cve-arrow{grid-column:2;grid-row:1 / span 2}.about-cta{padding:28px 24px;margin-top:64px}}
