@font-face{font-family:plex sans;src:url(/fonts/ibm-plex-sans-latin-400-normal.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:plex sans;src:url(/fonts/ibm-plex-sans-latin-400-italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:plex sans;src:url(/fonts/ibm-plex-sans-latin-600-normal.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:plex sans;src:url(/fonts/ibm-plex-sans-latin-600-italic.woff2)format("woff2");font-weight:600;font-style:italic;font-display:swap}@font-face{font-family:plex serif;src:url(/fonts/ibm-plex-serif-latin-500-normal.woff2)format("woff2");font-weight:500;font-display:swap}@font-face{font-family:plex serif;src:url(/fonts/ibm-plex-serif-latin-600-normal.woff2)format("woff2");font-weight:600;font-display:swap}@font-face{font-family:plex mono;src:url(/fonts/ibm-plex-mono-latin-400-normal.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:plex mono;src:url(/fonts/ibm-plex-mono-latin-500-normal.woff2)format("woff2");font-weight:500;font-display:swap}:root{--bg:#f3f6f8;--surface:#fafcfd;--ink:#141a1f;--ink-2:#43505a;--muted:#6b7782;--rule:#d6dee4;--accent:#0a7285;--accent-2:#1d5fc4;--accent-ink:#ffffff;--code-bg:#0f1418;--code-ink:#dde6ec;--code-var:#7fdcea;--code-strong:#a9c8ff;--inline-code-bg:#e4ebef;--sans:"Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--serif:"Plex Serif", Georgia, "Times New Roman", serif;--mono:"Plex Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--wrap:68rem;--narrow:44rem}@media(prefers-color-scheme:dark){:root{--bg:#0f1418;--surface:#151b20;--ink:#e3eaef;--ink-2:#b2bec7;--muted:#84919b;--rule:#26313a;--accent:#3cc8dc;--accent-2:#6aa8ff;--accent-ink:#0f1418;--code-bg:#0a0e11;--code-ink:#dde6ec;--code-var:#7fdcea;--code-strong:#a9c8ff;--inline-code-bg:#1e272e}}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font:1.0625rem/1.65 var(--sans);font-kerning:normal;text-rendering:optimizeLegibility}img{max-width:100%;height:auto;display:block;border-radius:6px;margin:1.5rem 0;border:1px solid var(--rule)}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.18em}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.wrap{max-width:var(--wrap);margin:0 auto;padding:0 1.25rem}.narrow{max-width:var(--narrow)}.muted{color:var(--muted)}.small{font-size:.875rem}.skip{position:absolute;left:-999px;top:0;background:var(--accent);color:var(--accent-ink);padding:.5rem 1rem;z-index:10}.skip:focus{left:1rem}.site-header{border-bottom:1px solid var(--rule);background:var(--bg)}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:4rem;flex-wrap:wrap;padding-top:.5rem;padding-bottom:.5rem}.brand{display:inline-flex;align-items:center;gap:.6rem;color:var(--ink);text-decoration:none}.brand-mark{display:grid;place-items:center;width:2rem;height:2rem;border-radius:6px;background:var(--accent);color:var(--accent-ink);font:500 .85rem/1 var(--mono);letter-spacing:-.02em}.brand-name{font:500 1.125rem/1 var(--mono);letter-spacing:-.01em}.brand-dot{color:var(--accent-2)}nav ul{list-style:none;display:flex;gap:.25rem;margin:0;padding:0;flex-wrap:wrap}nav a{display:block;padding:.4rem .7rem;border-radius:6px;color:var(--ink-2);text-decoration:none;font-size:.95rem}nav a:hover{color:var(--ink);background:var(--inline-code-bg)}nav a[aria-current=page]{color:var(--ink);box-shadow:inset 0 -2px 0 var(--accent);border-radius:0}h1,h2,h3{line-height:1.2;color:var(--ink)}h1{font:600 clamp(2rem,4.5vw,2.75rem)/1.12 var(--serif);letter-spacing:-.015em;margin:0 0 .75rem;text-wrap:balance}h2{font:600 1.5rem/1.25 var(--serif);margin:2.5rem 0 .75rem}h3{font:600 1.0625rem/1.35 var(--sans);margin:0 0 .35rem}.eyebrow{font:500 .8rem/1 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 1rem}.eyebrow a{color:inherit;text-decoration:none}.eyebrow a:hover{color:var(--accent)}.lede{font-size:1.2rem;color:var(--ink-2);margin:0;text-wrap:pretty}.section-label{font:500 .8rem/1 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 1.25rem;padding-bottom:.75rem;border-bottom:1px solid var(--rule)}.hero{padding:clamp(3rem,9vw,6.5rem)0 clamp(2.5rem,6vw,4rem)}.hero h1{font-size:clamp(2.25rem,6vw,3.75rem);max-width:18ch}.hero-lead{font:500 1.25rem/1.4 var(--serif);color:var(--accent);margin:0 0 1.25rem}.hero-body{max-width:38rem;color:var(--ink-2);font-size:1.125rem}.hero-body p{margin:0 0 1rem}.hero-actions{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:1.75rem}.btn{display:inline-block;padding:.7rem 1.2rem;border-radius:6px;background:var(--accent);color:var(--accent-ink);text-decoration:none;font-weight:600;font-size:.95rem;border:1px solid var(--accent)}.btn:hover{filter:brightness(1.08)}.btn-ghost{background:0 0;color:var(--ink);border-color:var(--rule)}.btn-ghost:hover{border-color:var(--ink-2);filter:none}.services{padding:1rem 0 3rem}.svc-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,19rem),1fr));gap:0;border-top:1px solid var(--rule);border-left:1px solid var(--rule)}.svc-list li{display:grid;grid-template-columns:2.25rem 1fr;gap:.5rem;padding:1.4rem 1.25rem 1.5rem;border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);background:var(--surface)}.svc-num{font:500 .85rem/1.6 var(--mono);color:var(--accent)}.svc-list p{margin:0;color:var(--ink-2);font-size:.95rem;line-height:1.55}.services .section-label{border-bottom:0}.latest{padding:1rem 0 4rem}.more{font-weight:600;text-decoration:none}.post-list{list-style:none;margin:0 0 1.5rem;padding:0}.post-row{display:grid;grid-template-columns:7.5rem 1fr;gap:1rem;padding:.85rem 0;border-bottom:1px dashed var(--rule);align-items:baseline}.post-row time{font:.85rem/1.4 var(--mono);color:var(--muted)}.post-title{font-weight:600;color:var(--ink);text-decoration:none}.post-title:hover{color:var(--accent);text-decoration:underline}.post-sub{margin:.15rem 0 0;color:var(--muted);font-size:.925rem}.year{margin-top:2.5rem}.year:first-of-type{margin-top:1rem}@media(max-width:34rem){.post-row{grid-template-columns:1fr;gap:.15rem}}.page-head{padding:clamp(2.5rem,7vw,4.5rem)0 1.5rem}.page,.post{padding-bottom:4rem}.meta{font:.875rem/1.5 var(--mono);color:var(--muted);margin:1rem 0 0}.meta a{color:inherit}.archive-note{font-size:.9rem;color:var(--ink-2);background:var(--surface);border:1px solid var(--rule);border-left:3px solid var(--accent);padding:.75rem 1rem;border-radius:4px;margin:0 0 2rem}.prose{overflow-wrap:break-word}.prose>:first-child{margin-top:0}.prose p,.prose ul,.prose ol,.prose dl{margin:0 0 1.1rem}.prose li{margin:.25rem 0}.prose .indent{padding-left:1.5rem}.prose strong{font-weight:600}.prose code,.prose kbd,.prose samp{font:.875em/1.4 var(--mono);background:var(--inline-code-bg);padding:.12em .38em;border-radius:4px;overflow-wrap:anywhere}.prose var{font-family:var(--mono);font-style:italic;font-size:.92em;color:var(--accent)}.prose pre{font:.84rem/1.6 var(--mono);background:var(--code-bg);color:var(--code-ink);padding:1rem 1.15rem;border-radius:6px;overflow-x:auto;margin:0 0 1.4rem;tab-size:4;-webkit-overflow-scrolling:touch}.prose pre code{background:0 0;padding:0;font-size:inherit;color:inherit}.prose pre var{color:var(--code-var);font-size:inherit}.prose pre strong{color:var(--code-strong);font-weight:500}.prose pre em{color:#9fb7c9;font-style:normal}.prose blockquote{margin:0 0 1.2rem;padding:.25rem 0 .25rem 1rem;border-left:3px solid var(--rule);color:var(--ink-2)}.link-list{margin:0 0 1rem}.link-list dt{font-weight:600;margin-top:.9rem}.link-list dd{margin:.1rem 0 0;color:var(--ink-2)}.tags{list-style:none;display:flex;flex-wrap:wrap;gap:.4rem;padding:1.5rem 0 0;margin:2rem 0 0;border-top:1px solid var(--rule)}.tags a,.term-cloud a{display:inline-block;font:.8rem/1 var(--mono);padding:.4rem .6rem;border:1px solid var(--rule);border-radius:999px;color:var(--ink-2);text-decoration:none}.tags a::before{content:"#";color:var(--muted)}.tags a:hover,.term-cloud a:hover{border-color:var(--accent);color:var(--accent)}.term-cloud{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}.comments{margin-top:3rem;padding-top:.5rem;border-top:1px solid var(--rule)}.comments h2{font-size:1.25rem}.comments ol{list-style:none;padding:0;margin:0 0 1rem}.comments li{padding:1rem 1.1rem;background:var(--surface);border:1px solid var(--rule);border-radius:6px;margin-bottom:.75rem}.c-meta{margin:0 0 .4rem;font-size:.9rem}.c-meta time{color:var(--muted);font-family:var(--mono);font-size:.85em}.c-body p{margin:0 0 .6rem;font-size:.95rem;color:var(--ink-2);overflow-wrap:anywhere}.c-body p:last-child{margin-bottom:0}.post-nav{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:3rem}.post-nav a{display:block;padding:.9rem 1rem;border:1px solid var(--rule);border-radius:6px;text-decoration:none;color:var(--ink);font-weight:600;font-size:.95rem}.post-nav a:hover{border-color:var(--accent)}.post-nav span{display:block;font:.75rem/1.4 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:.25rem}.post-nav .next{grid-column:2;text-align:right}@media(max-width:34rem){.post-nav{grid-template-columns:1fr}.post-nav .next{grid-column:1}}.browse{margin-top:2rem}.site-footer{border-top:1px solid var(--rule);padding:2rem 0 2.5rem;font-size:.9rem}.footer-inner{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}.footer-inner p{margin:0}.site-footer a{color:inherit}