@font-face{font-family:bricolage grotesque;font-style:normal;font-weight:200 800;font-display:swap;src:url(/fonts/bricolage-grotesque-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:bricolage grotesque;font-style:normal;font-weight:200 800;font-display:swap;src:url(/fonts/bricolage-grotesque-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:hanken grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/hanken-grotesk-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:hanken grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/hanken-grotesk-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:shantell sans;font-style:normal;font-weight:300 800;font-display:swap;src:url(/fonts/shantell-sans-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:shantell sans;font-style:normal;font-weight:300 800;font-display:swap;src:url(/fonts/shantell-sans-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:caveat;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/caveat-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:caveat;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/caveat-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,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:100 800;font-display:swap;src:url(/fonts/jetbrains-mono-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:100 800;font-display:swap;src:url(/fonts/jetbrains-mono-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper-0:#fcfaf4;--paper-1:#f6f1e7;--paper-2:#efe8d8;--ink-1:#1c1a16;--ink-2:#463f33;--ink-3:#6f6657;--ink-4:#9c927f;--line-1:rgba(28, 26, 22, 0.12);--line-2:rgba(28, 26, 22, 0.2);--flow-500:#2540e0;--flow-600:#1b30b8;--flow-50:#eceefc;--on-accent:#fcfaf4;--font-display:"Bricolage Grotesque", Georgia, serif;--font-sans:"Hanken Grotesk", system-ui, sans-serif;--shadow-sm:0 1px 2px rgba(28, 26, 22, 0.05), 0 2px 6px rgba(28, 26, 22, 0.06)}*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;font-family:var(--font-sans);font-size:1.0625rem;line-height:1.65;color:var(--ink-2);background-color:var(--paper-1);background-image:radial-gradient(rgba(28,26,22,.022) 1px,transparent 1px),radial-gradient(rgba(28,26,22,.018) 1px,transparent 1px);background-size:22px 22px,22px 22px;background-position:0 0,11px 11px;-webkit-font-smoothing:antialiased}a{color:var(--flow-500);text-decoration-thickness:1px;text-underline-offset:.15em}a:hover{color:var(--flow-600)}img{max-width:100%;height:auto}.container{width:min(1080px,calc(100% - 2.5rem));margin-inline:auto}.site-header{position:sticky;top:0;z-index:40;border-bottom:1px solid var(--line-2);background:rgba(246,241,231,.82);backdrop-filter:blur(12px)}.header-inner{display:flex;align-items:center;gap:1.25rem;padding:.875rem 0}.brand{display:inline-flex;align-items:center;gap:.625rem;color:var(--ink-1);text-decoration:none;font-family:var(--font-display);font-size:1.1875rem;font-weight:800;letter-spacing:-.02em}.brand img{width:2rem;height:2rem;border-radius:9px;box-shadow:var(--shadow-sm)}.header-nav{display:flex;align-items:center;gap:1.25rem;margin-left:auto;font-size:.9375rem;font-weight:500}.header-nav a{color:var(--ink-3);text-decoration:none}.header-nav a:hover{color:var(--ink-1)}.external-nav-link{display:inline-flex;align-items:center;gap:.25rem}.external-icon{width:.875rem;height:.875rem;flex-shrink:0;opacity:.7}.lang-link{padding-left:1.25rem;border-left:1px solid var(--line-2);color:var(--ink-4)}a.btn{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1rem;border-radius:999px;background:var(--flow-500);color:var(--on-accent);font-weight:600;text-decoration:none}a.btn:hover{background:var(--flow-600);color:var(--on-accent)}main{padding:2.5rem 0 4rem}.eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--flow-500)}.content h1{margin:.5rem 0 1rem;font-family:var(--font-display);font-size:clamp(2rem,4vw,2.75rem);line-height:1.1;letter-spacing:-.03em;color:var(--ink-1)}.lead{max-width:42rem;font-size:1.125rem;color:var(--ink-3)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.blog-search{margin:1.75rem 0 0;max-width:36rem}.blog-search-field{display:flex;align-items:center;gap:.625rem;padding:.65rem .75rem;border-radius:12px;border:1px solid var(--line-2);background:var(--paper-0);box-shadow:var(--shadow-sm);cursor:text}.blog-search-field:focus-within{border-color:var(--flow-500);outline:2px solid rgba(37,64,224,.28);outline-offset:1px}.blog-search-icon{flex:none;display:inline-flex;color:var(--ink-4)}.blog-search-field input[type=search]{flex:auto;min-width:0;margin:0;padding:0;border:0;background:0 0;color:var(--ink-1);font:inherit;font-size:1rem;line-height:1.4;outline:none;box-shadow:none;-webkit-appearance:none;appearance:none}.blog-search-field input[type=search]::placeholder{color:var(--ink-4)}.blog-search-field input[type=search]::-webkit-search-decoration,.blog-search-field input[type=search]::-webkit-search-cancel-button,.blog-search-field input[type=search]::-webkit-search-results-button,.blog-search-field input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none;appearance:none}.blog-search-clear{flex:none;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:0;border-radius:8px;background:0 0;color:var(--ink-3);font:inherit;line-height:1;cursor:pointer;visibility:hidden;pointer-events:none}.blog-search-clear.is-visible{visibility:visible;pointer-events:auto}.blog-search-clear:hover{background:var(--paper-2);color:var(--ink-1)}.blog-search-empty{margin:1rem 0 0}.blog-search-empty[hidden]{display:none}.meta{color:var(--ink-4);font-size:.9375rem}.post-list{list-style:none;margin:2rem 0 0;padding:0;display:grid;gap:0}.post-list li{padding:0;border-top:1px solid var(--line-1)}.post-card{display:flex;align-items:flex-start;gap:1rem;padding:1.15rem 0;text-decoration:none;color:inherit}.post-card:hover .post-card-title{color:var(--flow-500)}.post-card-cover{flex:none;width:7.5rem;height:3.95rem;object-fit:cover;border-radius:8px;border:1px solid var(--line-1);background:var(--paper-2)}.post-card-body{display:flex;flex-direction:column;gap:.25rem;min-width:0}.post-card-title{font-family:var(--font-display);font-size:1.25rem;font-weight:700;line-height:1.25;color:var(--ink-1);transition:color .15s ease}.post-card .meta{display:block;margin-top:0}.post-card-desc{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}@media(max-width:640px){.post-card-cover{width:5.5rem;height:2.9rem}.post-card-title{font-size:1.125rem}}.article-header{margin-bottom:2rem}.back-link{display:inline-block;margin-bottom:1.5rem;font-size:.9375rem;text-decoration:none}.article-body h2{margin:2rem 0 .75rem;font-family:var(--font-display);font-size:1.5rem;color:var(--ink-1)}.article-body p,.article-body ul,.article-body ol,.article-body table{margin:0 0 1rem}.article-body ul,.article-body ol{padding-left:1.25rem}.article-body li{margin-bottom:.35rem}.article-body table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}.article-body th,.article-body td{padding:.45rem .65rem;border-bottom:1px solid var(--line-1);text-align:left;vertical-align:top}.article-body thead th{color:var(--ink-3);font-size:.8125rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.article-body th:not(:first-child),.article-body td:not(:first-child){text-align:right}.article-body tbody tr:last-child th,.article-body tbody tr:last-child td{border-bottom:0;color:var(--ink-1);font-weight:600}.discuss-panel{margin-top:2.5rem;padding:1.25rem 1.5rem;border-radius:18px;border:1px solid var(--line-1);background:var(--paper-0)}.discuss-panel__heading{margin:0;font-family:var(--font-display);font-size:1.125rem;font-weight:600;color:var(--ink-1)}.discuss-panel__body{margin:.5rem 0 .75rem;font-size:.9375rem;color:var(--ink-3)}.discuss-panel__link{font-weight:600}.cta-panel{margin-top:1.5rem;padding:1.5rem;border-radius:18px;background:var(--flow-50);border:1px solid rgba(37,64,224,.12)}.site-footer{border-top:1px solid var(--line-1);padding:2rem 0;font-size:.875rem;color:var(--ink-4)}.footer-inner{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;align-items:center}.footer-links{display:flex;flex-wrap:wrap;gap:1rem}.footer-links a{color:var(--ink-3);text-decoration:none}.footer-links a:hover{color:var(--ink-1)}.footer-links .external-nav-link{display:inline-flex;align-items:center;gap:.25rem}@media(max-width:640px){.header-nav{display:none}}