@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:400 700;font-display:swap;src:url("/assets/fonts/jetbrains-mono/latin-ext.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:400 700;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}:root{color-scheme:light dark;--acc: #7dc21a;--acc-ink: light-dark(#4a760e, #7dc21a);--acc-hi: light-dark(#3c6009, #a8e82e);--on-acc: #08090b;--bg: light-dark(#f2f1ec, #08090b);--bg-1: light-dark(#fbfbf8, #0b0d0f);--bg-2: light-dark(#e8e7df, #0e1113);--bg-rail: light-dark(#eceae3, #0a0c0e);--line: light-dark(rgb(0 0 0 / 10%), rgb(255 255 255 / 8%));--line-2: light-dark(rgb(0 0 0 / 15%), rgb(255 255 255 / 12%));--line-3: light-dark(rgb(0 0 0 / 24%), rgb(255 255 255 / 18%));--wash: light-dark(rgb(0 0 0 / 6%), rgb(255 255 255 / 5%));--acc-wash: light-dark(rgb(125 194 26 / 20%), rgb(125 194 26 / 10%));--avatar-line: rgb(125 194 26 / 70%);--fg: light-dark(#14160f, #f2f6ee);--fg-1: light-dark(#242820, #cfd8ca);--fg-2: light-dark(#343a2c, #a9b4a4);--fg-3: light-dark(#414736, #98a493);--fg-4: light-dark(#4c5340, #8d9888);--dim: light-dark(#474f3b, #95a092);--dim-2: light-dark(#545c48, #838e80);--dim-3: light-dark(#5f6753, #758072);--danger: #b03a3a;--danger-fg: light-dark(#8f2222, #e07a7a);--k-writeup: light-dark(#4a760e, #7dc21a);--k-research: light-dark(#8a6600, #c9a227);--k-tooling: light-dark(#1c6cae, #5aa8e8);--k-notes: light-dark(#6949ad, #b09ae8);--on-kind: light-dark(#fff, #08090b);--mono: "JetBrains Mono", ui-monospace, sfmono-regular, menlo, monospace;--shell: 1120px;--gut: 32px;--topbar-h: 3rem;--art-op: 0.12;--logo-bright: 0.4}:root[data-bs-theme=light]{color-scheme:light}:root[data-bs-theme=dark]{color-scheme:dark;--art-op: 0.07;--logo-bright: 1.6}@media(prefers-color-scheme: dark){:root:not([data-bs-theme=light]){--art-op: 0.07;--logo-bright: 1.6}}:root[data-bs-theme=light],:root[data-bs-theme=dark],:root:not([data-bs-theme]){--main-bg: var(--bg);--mask-bg: light-dark(rgb(0 0 0 / 45%), #050607);--main-border-color: var(--line);--text-color: var(--fg-2);--text-muted-color: var(--dim);--text-muted-highlight-color: var(--fg-4);--heading-color: var(--fg);--label-color: var(--dim);--blockquote-border-color: var(--line-3);--blockquote-text-color: var(--fg-4);--link-color: var(--acc-ink);--link-underline-color: rgb(125 194 26 / 35%);--button-bg: var(--bg-1);--btn-border-color: var(--line-2);--btn-backtotop-color: var(--fg-1);--btn-backtotop-border-color: var(--line-2);--card-header-bg: var(--bg-2);--checkbox-color: var(--dim-2);--checkbox-checked-color: var(--acc);--img-bg: radial-gradient(circle, light-dark(#fff, #0d1013) 0%, light-dark(#eceae3, #08090b) 100%);--shimmer-bg: linear-gradient( 90deg, rgb(125 194 26 / 0%) 0%, rgb(125 194 26 / 12%) 50%, rgb(125 194 26 / 0%) 100% );--sidebar-bg: var(--bg-1);--sidebar-muted-color: var(--dim);--sidebar-active-color: var(--acc-ink);--sidebar-hover-bg: rgb(125 194 26 / 8%);--sidebar-btn-bg: var(--bg-2);--sidebar-btn-color: var(--dim);--menu-bg: var(--bg-1);--menu-border-color: var(--line-2);--menu-shadow-color: transparent;--menu-highlight-bg: var(--bg-2);--menu-active-color: var(--acc-ink);--topbar-bg: light-dark(rgb(251 251 248 / 92%), rgb(11 13 15 / 92%));--topbar-text-color: var(--fg-1);--search-border-color: var(--line-2);--search-icon-color: var(--dim-3);--input-focus-border-color: var(--acc-ink);--post-list-text-color: var(--fg-2);--btn-patinator-text-color: var(--fg-1);--btn-paginator-hover-color: rgb(125 194 26 / 8%);--toc-highlight: var(--acc-ink);--toc-popup-border-color: var(--line-2);--tag-hover: rgb(125 194 26 / 12%);--tb-odd-bg: var(--bg-1);--tb-even-bg: var(--bg);--tb-border-color: var(--line);--footnote-target-bg: rgb(125 194 26 / 12%);--btn-share-color: var(--dim);--btn-share-hover-color: var(--acc-ink);--card-bg: var(--bg-1);--card-hover-bg: var(--bg-2);--card-shadow: light-dark(rgb(0 0 0 / 8%), rgb(0 0 0 / 40%)) 0 1px 3px 0, light-dark(rgb(0 0 0 / 10%), rgb(255 255 255 / 6%)) 0 0 0 1px;--kbd-wrap-color: var(--dim-2);--kbd-text-color: var(--fg);--kbd-bg-color: var(--bg-2);--prompt-text-color: var(--fg-2);--prompt-tip-bg: rgb(125 194 26 / 8%);--prompt-tip-icon-color: var(--acc-ink);--prompt-info-bg: rgb(90 168 232 / 8%);--prompt-info-icon-color: var(--k-tooling);--prompt-warning-bg: rgb(201 162 39 / 10%);--prompt-warning-icon-color: var(--k-research);--prompt-danger-bg: rgb(176 58 58 / 10%);--prompt-danger-icon-color: var(--danger-fg);--tag-border: var(--line-2);--tag-shadow: rgb(125 194 26 / 12%);--dash-color: var(--line-2);--search-tag-bg: var(--bg-1);--categories-border: var(--line);--categories-hover-bg: var(--bg-2);--categories-icon-hover-color: var(--acc-ink);--timeline-node-bg: var(--acc);--timeline-color: var(--line-2);--timeline-year-dot-color: var(--bg);--language-border-color: var(--line);--highlight-bg-color: var(--bg-1);--highlighter-rouge-color: var(--fg-1);--highlight-lineno-color: var(--dim-3);--inline-code-bg: var(--wash);--code-color: var(--fg-1);--code-header-text-color: var(--dim-2);--code-header-muted-color: var(--bg-2);--code-header-icon-color: var(--dim-3);--clipboard-checked-color: var(--acc-ink);--filepath-text-color: var(--fg-1)}body,input,button,select,textarea,h1,h2,h3,h4,h5,h6,.dynamic-title{font-family:var(--mono)}header .post-desc,#search-results a,kbd,#notification.toast .toast-body,#toc-popup .header .label,#toc-popup #toc-popup-content,.pagination,#toc-solo-trigger .label,#archives .date.day{font-family:var(--mono)}body{background:var(--bg);-webkit-font-smoothing:antialiased}::selection{background:rgba(125,194,26,.25);color:var(--fg)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:rgba(125,194,26,.25)}::-webkit-scrollbar-thumb:hover{background:var(--acc)}@keyframes hos-blink{0%,49%{opacity:1}50%,100%{opacity:0}}#sidebar{padding:26px var(--gut) var(--gut);border-right:1px solid var(--line)}.hos-drawer-brand{display:flex;gap:11px;align-items:center;min-height:44px;text-decoration:none}.hos-drawer-brand img{width:30px;height:30px;object-fit:contain;filter:grayscale(1) brightness(var(--logo-bright))}.hos-drawer-brand span{font-size:12px;font-weight:700;line-height:1;color:var(--fg) !important;text-transform:uppercase;letter-spacing:.14em}.hos-drawer-tag{margin:12px 0 0;font-size:12px;line-height:1.5;color:var(--dim)}.hos-drawer-nav{display:flex;flex-direction:column;margin-top:26px}.hos-drawer-label{margin:0 0 10px;padding-top:18px;font-size:10px;font-weight:500;color:var(--dim-3);text-transform:uppercase;letter-spacing:.18em;border-top:1px solid var(--line)}.hos-drawer-label:first-child{padding-top:0;border-top:0}.hos-drawer-nav a{display:flex;align-items:center;min-height:44px;font-size:14px;line-height:1;color:var(--fg-1) !important;text-decoration:none}.hos-drawer-nav a:hover,.hos-drawer-nav a.active{color:var(--acc-ink) !important}.hos-drawer-nav a.active{margin-left:-13px;padding-left:10px;border-left:3px solid var(--acc)}.hos-drawer-foot{display:flex;gap:16px;align-items:center;margin-top:auto;padding-top:26px}.hos-drawer-foot .hos-btn{flex:1;padding-block:16px;text-align:center}#sidebar .sidebar-bottom #mode-toggle{width:44px;height:44px;margin-bottom:0;color:var(--dim);background:none;border:1px solid var(--line-2);border-radius:0;box-shadow:none !important}#sidebar .sidebar-bottom #mode-toggle:hover{color:var(--acc-ink);background:none;border-color:var(--acc-ink)}#sidebar .sidebar-bottom #mode-toggle+.dropdown-menu{padding:0 !important;font-size:12px;border-radius:0 !important}#sidebar .sidebar-bottom #mode-toggle+.dropdown-menu .dropdown-item{gap:10px;padding:11px 14px;font-size:12px;border-radius:0}@media(width >= 840px){#sidebar{display:none !important}#toc-popup{left:0}#main-wrapper{margin-left:0}}@media(width >= 1650px){#main-wrapper{margin-left:0}}#main-wrapper>.container{max-width:var(--shell);padding-inline:0}#main-wrapper>.container>.row{--bs-gutter-x: 0;flex-wrap:nowrap;margin-inline:0}#main-wrapper>.container>.row>main,#main-wrapper>.container>.row>#tail-wrapper{flex:1 1 auto;width:100%;max-width:100%;padding-inline:0}#main-wrapper>.container>.row>#panel-wrapper{position:sticky;top:var(--topbar-h);display:flex;flex-direction:column;align-self:flex-start;flex:0 0 auto;order:-1;width:auto;max-height:calc(100vh - var(--topbar-h));padding:0 0 24px;overflow:hidden}@media(width < 1200px){#main-wrapper>.container>.row>#panel-wrapper{display:none}}#tail-wrapper>:not(script,.hos-footer){margin-top:0}#tail-wrapper>.hos-footer{margin-top:56px}#topbar-wrapper{position:sticky;top:0;z-index:3;height:var(--topbar-h);background:var(--topbar-bg);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}#topbar{gap:16px;padding-inline:var(--gut)}.hos-brand{display:flex;flex:none;gap:11px;align-items:center;padding:7px;margin-inline-start:-7px;text-decoration:none}.hos-brand img{width:30px;height:30px;object-fit:contain;filter:grayscale(1) brightness(var(--logo-bright))}.hos-brand span{font-size:12px;font-weight:700;line-height:1;color:var(--fg);text-transform:uppercase;letter-spacing:.14em}.hos-nav{display:flex;gap:20px;align-items:center;margin-left:auto}.hos-nav a{font-size:12px;font-weight:500;line-height:1;color:var(--dim);text-decoration:none}.hos-nav a:hover{color:var(--acc-ink)}.hos-nav a.active{padding-bottom:3px;color:var(--acc-ink);border-bottom:1px solid var(--acc-ink)}.hos-btn{padding:8px 13px;font-size:12px;font-weight:700;line-height:1;color:var(--on-acc) !important;text-decoration:none;letter-spacing:.06em;background:var(--acc);border:0}.hos-btn:hover{color:var(--on-acc) !important;background:var(--acc-hi)}.hos-btn.lg{padding:16px 22px;font-size:13px;white-space:nowrap}.hos-theme-toggle{padding:0 2px;font-size:13px;line-height:1;color:var(--dim);background:none;border:0}.hos-theme-toggle:hover{color:var(--acc-ink)}.hos-theme-toggle .sun{display:none}:root[data-bs-theme=dark] .hos-theme-toggle .sun{display:inline-block}:root[data-bs-theme=dark] .hos-theme-toggle .moon{display:none}@media(prefers-color-scheme: dark){:root:not([data-bs-theme=light]) .hos-theme-toggle .sun{display:inline-block}:root:not([data-bs-theme=light]) .hos-theme-toggle .moon{display:none}}#topbar-title{font-size:12px;font-weight:700;color:var(--fg-1);text-transform:uppercase;letter-spacing:.1em}#topbar #sidebar-trigger,#topbar #search-trigger,#topbar #search-cancel{padding-block:9px;color:var(--dim)}#topbar search{max-width:190px;margin-right:0 !important;margin-left:20px;background:var(--bg-1);border:1px solid var(--line-2);border-radius:0}#topbar search:focus-within{border-color:var(--acc-ink)}#search-input{font-family:var(--mono);font-size:.75rem;color:var(--fg-1);caret-color:var(--acc-ink);background:rgba(0,0,0,0)}#search-input::placeholder{color:var(--dim-3)}@media(width >= 840px){#topbar #sidebar-trigger,#topbar #topbar-title{display:none}}@media(width < 840px){.hos-brand span,#topbar #topbar-title,.hos-nav a:not(.hos-btn),.hos-theme-toggle{display:none}#topbar #search-trigger{margin-left:auto}.hos-nav{margin-left:0}#search.d-flex~.hos-nav{display:none}.hos-nav .hos-btn{padding-block:16px}}#back-to-top{color:var(--acc-ink);background:var(--bg-1);border:1px solid var(--line-2);border-radius:0}.hos-eyebrow{margin:0;font-size:11px;font-weight:500;line-height:1;color:var(--acc-ink);text-transform:uppercase;letter-spacing:.2em}.hos-section{padding:38px var(--gut) 0}.hos-section-label{margin:0 0 18px;font-size:11px;font-weight:500;line-height:1;color:var(--acc-ink);text-transform:uppercase;letter-spacing:.16em}.hos-meta-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.hos-kind{padding:6px 8px;font-size:10px;font-weight:700;line-height:1;color:var(--on-kind);text-transform:uppercase;letter-spacing:.14em;background:var(--kind, var(--acc))}.hos-kind-inline{font-size:10px;font-weight:700;line-height:1;color:var(--kind, var(--acc-ink));text-transform:uppercase;letter-spacing:.14em}.k-writeup{--kind: var(--k-writeup)}.k-research{--kind: var(--k-research)}.k-tooling{--kind: var(--k-tooling)}.k-notes{--kind: var(--k-notes)}.hos-stamp,.hos-stamp .readtime{font-size:11px;font-weight:400;line-height:1;color:var(--dim-3);letter-spacing:.1em}.hos-stamp em{font-style:normal}.hos-dek{margin:9px 0 0;font-size:13.5px;line-height:1.65;color:var(--fg-4);text-wrap:pretty}.hos-avatar{display:inline-flex;flex:none;align-items:center;justify-content:center;width:26px;height:26px;font-size:10px;font-weight:700;line-height:1;color:var(--acc-hi);background:var(--acc-wash);border:2px solid var(--avatar-line);transform:rotate(-4deg);transition:transform .18s ease}.hos-avatar:hover,a:hover>.hos-avatar,a:hover .hos-entry-who .hos-avatar{transform:rotate(0deg)}.hos-avatar.is-photo{background-position:center;background-size:cover}.hos-avatar.sm{width:24px;height:24px;font-size:9px}.hos-avatar.lg{width:34px;height:34px;font-size:12px}.hos-avatar.xl{width:88px;height:88px;font-size:28px}.hos-author{font-size:12px;font-weight:500;color:var(--dim)}.hos-byline{display:flex;gap:10px;align-items:center;margin-top:22px}.hos-chip{padding:7px 10px;font-size:11.5px;font-weight:500;line-height:1;color:var(--fg-4);text-decoration:none;letter-spacing:.04em;border:1px solid var(--line-2)}a.hos-chip:hover{color:var(--acc-ink);border-color:var(--acc-ink)}.hos-chip.static{color:var(--fg-4);text-transform:uppercase;letter-spacing:.14em}.hos-hero{position:relative;padding:46px var(--gut) 34px;overflow:hidden;border-bottom:1px solid var(--line)}.hos-hero::after{position:absolute;top:-10px;right:-70px;width:520px;height:284px;content:"";background:url("../img/brand/syringe-drip.webp") no-repeat center/contain;opacity:var(--art-op);transform:rotate(-8deg);pointer-events:none}.hos-hero-body{position:relative;display:flex;gap:40px;align-items:flex-end;justify-content:space-between}.hos-hero-title{margin:16px 0 0;font-size:44px;font-weight:700;line-height:1;color:var(--fg);letter-spacing:-0.04em}.hos-hero-cmd{display:inline-block;overflow:hidden;vertical-align:bottom;white-space:nowrap;width:0;animation:hos-type 1.4s steps(var(--hos-cmd-len), end) forwards}@keyframes hos-type{to{width:calc(var(--hos-cmd-len)*1ch)}}.hos-caret{color:var(--acc-ink);animation:hos-blink 1.05s step-end infinite}.hos-hero-blurb{max-width:560px;margin:16px 0 0;font-size:14px;line-height:1.7;color:var(--fg-3);text-wrap:pretty}.hos-stats{display:flex;flex:none;gap:1px;width:fit-content;background:var(--line-2);border:1px solid var(--line-2)}.hos-stat{min-width:88px;padding:16px 20px;background:var(--bg-1)}.hos-stat-n{font-size:22px;font-weight:700;line-height:1;color:var(--acc-ink);letter-spacing:-0.03em}.hos-stat-l{margin-top:7px;font-size:10px;line-height:1;color:var(--dim-2);text-transform:uppercase;letter-spacing:.16em}.hos-grep{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:16px var(--gut);background:var(--bg-rail);border-bottom:1px solid var(--line)}.hos-grep-label{margin-right:4px;font-size:11px;font-weight:500;line-height:1;color:var(--dim-3);text-transform:uppercase;letter-spacing:.14em}.hos-featured{display:grid;grid-template-columns:1.05fr .95fr;overflow:hidden;text-decoration:none;background:var(--bg-1);border:1px solid var(--line-3)}.hos-featured:hover{border-color:var(--acc-ink)}.hos-featured-body{padding:32px 30px 30px}.hos-featured-title{margin:18px 0 0;font-size:30px;font-weight:700;line-height:1.12;color:var(--fg);letter-spacing:-0.035em;text-wrap:pretty}.hos-featured .hos-dek{margin-top:14px;font-size:14px;line-height:1.7}.hos-featured-art{min-height:250px;background-color:var(--bg-2);background-image:var(--art);background-position:center;background-size:cover;border-left:1px solid var(--line-2)}@media(prefers-color-scheme: light){:root:not([data-bs-theme=dark]) .hos-featured-art:not(.is-fallback){background-image:var(--art-light, var(--art))}}:root[data-bs-theme=light] .hos-featured-art:not(.is-fallback){background-image:var(--art-light, var(--art))}.hos-featured-art.is-fallback{background-image:url("../img/brand/syringe-drip.webp");background-repeat:no-repeat;background-position:center right -30px;background-size:400px auto;opacity:.35}.hos-log{border-top:1px solid var(--line-2)}.hos-entry{display:grid;grid-template-columns:96px 1fr 150px;gap:22px;align-items:start;padding:20px 6px;text-decoration:none;border-bottom:1px solid var(--line)}.hos-entry:hover{background:var(--bg-2)}.hos-entry-when{font-size:11px;line-height:1.5;color:var(--dim-3);letter-spacing:.06em}.hos-entry-when span{display:block;color:var(--dim-2)}.hos-entry-when .readtime{font-size:11px}.hos-entry-when em{font-style:normal}.hos-entry-head{display:flex;flex-wrap:wrap;gap:10px;align-items:baseline}.hos-entry-head h3{margin:0;font-size:17px;font-weight:700;line-height:1.3;color:var(--fg);letter-spacing:-0.025em}.hos-entry-body .hos-dek{max-width:600px}.hos-entry-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.hos-entry-tags span{padding:5px 7px;font-size:10.5px;line-height:1;color:var(--dim-2);letter-spacing:.06em;background:var(--wash)}.hos-entry-who{display:flex;gap:9px;align-items:center;justify-content:flex-end}.hos-pager{display:flex;gap:12px;justify-content:center;padding-top:26px}.hos-pager a{padding:14px 22px;font-size:12px;font-weight:700;line-height:1;color:var(--fg-1);text-decoration:none;text-transform:uppercase;letter-spacing:.1em;border:1px solid var(--line-3)}.hos-pager a:hover{color:var(--acc-ink);border-color:var(--acc-ink)}.hos-cta{display:flex;gap:30px;align-items:center;justify-content:space-between;margin:40px var(--gut) 0;padding:32px 30px;background:var(--bg-1);border:1px solid var(--line-2)}.hos-cta-title{margin:0;font-size:19px;font-weight:700;line-height:1.3;color:var(--fg);letter-spacing:-0.02em}.hos-cta-body{max-width:480px;margin:9px 0 0;font-size:13.5px;line-height:1.6;color:var(--fg-4);text-wrap:pretty}.hos-post{padding-bottom:38px}.hos-progress{position:sticky;top:var(--topbar-h);z-index:2;height:3px;background:var(--line)}.hos-progress>span{display:block;width:0;height:100%;background:var(--acc)}@supports(animation-timeline: scroll()){.hos-progress>span{width:100%;transform:scaleX(0);transform-origin:0 50%;animation:hos-read-progress linear;animation-timeline:scroll(root block)}@keyframes hos-read-progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}}#toc-bar{top:calc(var(--topbar-h) + 3px)}#toc-bar.invisible{top:0}#toc-bar .label{font-family:var(--mono);font-size:12px;color:var(--fg-1)}#toc-solo-trigger{border-radius:0}.hos-post-head{position:relative;padding:44px var(--gut) 32px;overflow:hidden;border-bottom:1px solid var(--line)}.hos-post-head::after{position:absolute;top:-30px;right:-140px;width:520px;height:284px;content:"";background:url("../img/brand/syringe-drip.webp") no-repeat center/contain;opacity:var(--art-op);transform:rotate(-8deg);pointer-events:none}.hos-post-head>*{position:relative;max-width:760px}.hos-post-head h1{margin:20px 0 0;font-size:46px;font-weight:700;line-height:1.05;color:var(--fg);letter-spacing:-0.04em;text-wrap:pretty}.hos-post-dek{margin:18px 0 0;font-size:16px;line-height:1.65;color:var(--fg-3);text-wrap:pretty}.hos-post-byline{display:flex;gap:12px;align-items:center;margin-top:26px;padding-top:22px;border-top:1px solid var(--line-2)}.hos-post-author{font-size:13px;font-weight:700;color:var(--fg)}.hos-post-author a{color:var(--fg);text-decoration:none}.hos-post-author a:hover{color:var(--acc-ink)}.hos-post-tags{display:flex;flex-wrap:wrap;gap:8px;margin-left:auto}.hos-post-tags a{padding:6px 8px;font-size:10.5px;color:var(--dim-2);text-decoration:none;letter-spacing:.06em;background:var(--wash)}.hos-post-tags a:hover{color:var(--acc-ink)}.hos-post-banner{padding:0 var(--gut);margin-top:26px}.hos-post-art{aspect-ratio:1200/630;background-color:var(--bg-2);background-image:var(--art, none),var(--lqip, none);background-position:center;background-size:cover;border:1px solid var(--line)}@media(prefers-color-scheme: light){:root:not([data-bs-theme=dark]) .hos-post-art{background-image:var(--art-light, var(--art, none)),var(--lqip-light, var(--lqip, none))}}:root[data-bs-theme=light] .hos-post-art{background-image:var(--art-light, var(--art, none)),var(--lqip-light, var(--lqip, none))}.content img[src$=".webp"]{border:2px solid var(--avatar-line)}.hos-notice{padding:18px 20px;margin:34px var(--gut) 0;background:rgba(176,58,58,.07);border-left:2px solid var(--danger)}.hos-notice-label{margin:0;font-size:10px;font-weight:700;line-height:1;color:var(--danger-fg);text-transform:uppercase;letter-spacing:.16em}.hos-notice-body{margin:8px 0 0;font-size:13px;line-height:1.6;color:light-dark(#7a5555, #a89090);text-wrap:pretty}.hos-boxmeta{display:grid;grid-template-columns:repeat(4, 1fr);gap:1px;margin:26px var(--gut) 0;background:var(--line-2);border:1px solid var(--line-2)}.hos-boxmeta>div{padding:16px 14px;background:var(--bg-1)}.hos-boxmeta dt{font-size:9.5px;font-weight:400;line-height:1;color:var(--dim-3);text-transform:uppercase;letter-spacing:.16em}.hos-boxmeta dd{margin:8px 0 0;font-size:15px;font-weight:700;line-height:1;color:var(--fg)}#panel-wrapper #toc-wrapper,#panel-wrapper .hos-share{width:210px;padding-inline:0 20px}#panel-wrapper .access:empty{display:none}#panel-wrapper #toc-wrapper{position:static;flex:1 1 auto;min-height:0;max-height:none;margin-top:3rem;padding-top:34px;scrollbar-width:thin}#panel-wrapper #toc-wrapper::after{content:none}#panel-wrapper .panel-heading{padding-left:0 !important;font-size:10px;font-weight:500;color:var(--dim-3);text-transform:uppercase;letter-spacing:.18em}#panel-wrapper .hos-share{flex:0 0 auto;padding-top:26px;margin-top:26px;margin-bottom:0;border-top:1px solid var(--line)}.hos-share-list{display:flex;flex-direction:column;align-items:flex-start;margin-top:12px}.hos-share-list a,.hos-share-list button{display:flex;align-items:center;min-height:24px;padding:0;font-family:var(--mono);font-size:11.5px;font-weight:500;line-height:1;color:var(--dim);text-decoration:none;background:none;border:0}.hos-share-list a:hover,.hos-share-list button:hover{color:var(--acc-ink)}.hos-share-list #hos-copy-link .hos-copy-done{display:none}.hos-share-list #hos-copy-link.is-copied .hos-copy-idle{display:none}.hos-share-list #hos-copy-link.is-copied{color:var(--acc-ink)}.hos-share-list #hos-copy-link.is-copied .hos-copy-done{display:inline;animation:hos-copied 220ms ease-out}@keyframes hos-copied{from{opacity:0;transform:translateY(3px)}}@media(prefers-reduced-motion: reduce){.hos-share-list #hos-copy-link.is-copied .hos-copy-done{animation:none}}#toc .toc-list{padding-left:0;margin:16px 0 0;list-style:none}#toc .toc-list-item{margin:0}#toc .toc-link{display:block;padding:7px 0 7px 11px;font-size:12px;line-height:1.4;color:var(--fg-4);text-decoration:none;border-left:2px solid var(--line-2)}#toc .toc-link:hover{color:var(--acc-ink)}#toc .is-active-link,#toc .toc-link.is-active-link{font-weight:500;color:var(--acc-ink);border-left-color:var(--acc-ink)}#toc .toc-list .toc-list .toc-link{padding-left:22px}.hos-post-cta{display:flex;gap:14px;align-items:center;margin:38px var(--gut) 0;padding:22px 24px;background:var(--bg-1);border:1px solid var(--line-2)}.hos-cta::before,.hos-post-cta::before{flex:none;width:62px;height:34px;content:"";background:url("../img/brand/syringe-green-124.webp") no-repeat center/contain}.hos-cta>div,.hos-post-cta>div{flex:1}.hos-post-cta-title{margin:0;font-size:15px;font-weight:700;line-height:1.3;color:var(--fg)}.hos-post-cta-body{margin:6px 0 0;font-size:13px;line-height:1.6;color:var(--fg-4);text-wrap:pretty}.hos-post-tail{display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between;padding:26px var(--gut) 0;margin-top:38px;border-top:1px solid var(--line-2)}.hos-post-tail .post-tags{display:flex;flex-wrap:wrap;gap:7px}.hos-post-tail .post-tag{padding:6px 8px;margin:0;font-size:10.5px;color:var(--dim-2);letter-spacing:.06em;background:var(--wash);border:0;border-radius:0}.hos-post-tail .post-tag:hover{color:var(--acc-ink);background:var(--tag-hover)}.hos-post-cats{margin-bottom:10px}.hos-post-cats .post-tag{color:var(--dim);border-left:2px solid var(--acc-ink)}.hos-license{font-size:11px;color:var(--dim-3)}.hos-license a{text-decoration:underline;text-underline-offset:2px}.hos-next{display:grid;grid-template-columns:1fr 1fr;gap:14px}.hos-related{grid-template-columns:repeat(3, 1fr)}.hos-next-card{display:block;padding:20px 22px;text-decoration:none;background:var(--bg-1);border:1px solid var(--line-2)}.hos-next-card:hover{background:var(--bg-2);border-color:var(--acc-ink)}.hos-next-title{display:block;margin-top:12px;font-size:17px;font-weight:700;line-height:1.3;color:var(--fg);letter-spacing:-0.025em;text-wrap:pretty}.hos-next-dek{display:block;margin-top:9px;font-size:12.5px;line-height:1.6;color:var(--fg-4);text-wrap:pretty}.hos-next-meta{display:block;margin-top:14px;font-size:11px;color:var(--dim-3);letter-spacing:.08em}.hos-author-head{display:flex;gap:16px;align-items:flex-start;padding:34px var(--gut) 0}.hos-author-head h1{margin:0;font-size:34px;font-weight:700;line-height:1.1;color:var(--fg);letter-spacing:-0.03em}.hos-author-meta{margin:6px 0 0;font-size:12px;color:var(--dim)}.hos-author-bio{max-width:62ch;margin:10px 0 0;font-size:13.5px;line-height:1.65;color:var(--fg-4);text-wrap:pretty}.hos-author-links{display:flex;flex-wrap:wrap;gap:4px 14px;margin:10px 0 0;font-size:12px}.hos-author-meta a,.hos-author-links a{color:var(--dim);text-decoration:none}.hos-author-meta a:hover,.hos-author-links a:hover{color:var(--acc-ink)}#hos-author .hos-entry{grid-template-columns:96px 1fr}#hos-authors{display:grid;grid-template-columns:repeat(auto-fill, minmax(210px, 1fr));gap:14px}.hos-post>.content{max-width:760px;padding:0 var(--gut);margin-top:38px}.content{font-size:15px;line-height:1.8;color:var(--fg-2)}.content p{text-wrap:pretty}.content h1,.content h2,.content h3,.content h4{color:var(--fg);letter-spacing:-0.03em}.content h2{margin-top:38px;font-size:24px;font-weight:700;line-height:1.2}.content h3{margin-top:30px;font-size:19px;font-weight:700}.content h4{margin-top:26px;font-size:16px;font-weight:700}.content a{color:var(--acc-ink)}.content a:hover{color:var(--acc-hi)}.content blockquote{border-left-color:var(--line-3)}.content .prompt-tip,.content .prompt-info,.content .prompt-warning,.content .prompt-danger{border-radius:0;border-left:2px solid var(--acc-ink)}.content .prompt-info{border-left-color:var(--k-tooling)}.content .prompt-warning{border-left-color:var(--k-research)}.content .prompt-danger{border-left-color:var(--danger)}.content .highlight,.content div[class^=language-]{border:1px solid var(--line);border-radius:0}.content .code-header{position:relative;z-index:1;background:var(--bg-2);border-bottom:1px solid var(--line)}.hos-post .content>*:not(.highlighter-rouge):not(:has(.img-link)),.hos-post .content .highlighter-rouge>.highlight{content-visibility:auto;contain-intrinsic-size:auto 110px}@media print{.hos-post .content>*,.hos-post .content .highlighter-rouge>.highlight{content-visibility:visible}}html:has(.hos-post){scroll-behavior:auto}.hos-post .content :is(h1,h2,h3,h4,h5,h6)[id]{scroll-margin-top:7rem}.content .code-header span[data-label-text]::after{font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.14em}.content code{font-family:var(--mono)}:root[data-bs-theme] .highlight .c,:root[data-bs-theme] .highlight .ch,:root[data-bs-theme] .highlight .cd,:root[data-bs-theme] .highlight .cm,:root[data-bs-theme] .highlight .cpf,:root[data-bs-theme] .highlight .c1,:root[data-bs-theme] .highlight .cs{color:var(--dim-2)}.highlight .k,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kv,.highlight .kc,.highlight .kt,.highlight .kd{color:var(--acc-ink)}.highlight .s,.highlight .sb,.highlight .sc,.highlight .dl,.highlight .sd,.highlight .s2,.highlight .sh,.highlight .sx,.highlight .s1,.highlight .ss,.highlight .sa{color:var(--acc-hi)}.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .il,.highlight .mo,.highlight .mx{color:var(--k-tooling)}:root[data-bs-theme] .highlight .nf,:root[data-bs-theme] .highlight .fm{color:light-dark(#0f7a52, #7fe0b0)}.highlight .na,.highlight .nc,.highlight .no,.highlight .nn,.highlight .nt{color:var(--k-research)}.highlight .o,.highlight .ow,.highlight .p,.highlight .pi{color:var(--fg-4)}.highlight .gi{color:var(--acc-ink);background-color:rgba(125,194,26,.12)}.highlight .gd{color:var(--danger-fg);background-color:rgba(176,58,58,.15)}main>article,#search-result-wrapper{padding:38px var(--gut) 0}.dynamic-title,#page-tag h1,#page-category h1,#archives h1{font-size:34px;font-weight:700;color:var(--fg);letter-spacing:-0.04em}.post-tag,.tag{font-family:var(--mono);border-radius:0 !important}.card-wrapper,.card{border-radius:0 !important}#search-results a:hover{color:var(--acc-ink) !important}.hos-footer{display:flex;flex-wrap:wrap;gap:24px;align-items:center;justify-content:space-between;height:auto;padding:30px var(--gut);border-top:1px solid var(--line)}.hos-footer-links{display:flex;flex-wrap:wrap;gap:16px}.hos-footer-links a{font-size:11.5px;font-weight:500;line-height:1;color:var(--dim);text-decoration:none;letter-spacing:.06em}.hos-footer-links a:hover{color:var(--acc-ink)}.hos-footer-sep{font-size:11.5px;line-height:1;color:var(--dim-3)}.hos-footer-copy{margin:0;font-size:10.5px;line-height:1;color:var(--dim-2);text-transform:uppercase;letter-spacing:.1em}@media(width < 1000px){.hos-hero-body{flex-direction:column;align-items:flex-start}.hos-featured{grid-template-columns:1fr}.hos-featured-art{min-height:180px;border-top:1px solid var(--line-2);border-left:0}}@media(width < 840px){:root{--gut: 20px}.hos-hero-title{font-size:min(30px,(100vw - 2*var(--gut))/((var(--hos-cmd-len) + 2)*.6))}.hos-post-head h1{font-size:30px}.hos-hero::after,.hos-post-head::after{display:none}.hos-entry,#hos-author .hos-entry{grid-template-columns:1fr;gap:10px}.hos-entry-when span{display:inline}.hos-entry-who{justify-content:flex-start}.hos-stats{width:100%}.hos-stat{flex:1;min-width:0}.hos-boxmeta{grid-template-columns:repeat(2, 1fr)}.hos-next,.hos-related{grid-template-columns:1fr}.hos-cta,.hos-post-cta{flex-direction:column;align-items:flex-start}.hos-post-tags{margin-left:0}}@media(prefers-reduced-motion: reduce){.hos-caret{animation:none}.hos-hero-cmd{animation:none;width:auto}.hos-avatar{transition:none}}/*# sourceMappingURL=custom.css.map */