@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/engineering/_astro/source-serif-4-cyrillic-ext-wght-normal.cHuGMAiY.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/engineering/_astro/source-serif-4-cyrillic-wght-normal.DwHjdM4S.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/engineering/_astro/source-serif-4-greek-wght-normal.ece1310W.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/engineering/_astro/source-serif-4-vietnamese-wght-normal.D-yuW59g.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/engineering/_astro/source-serif-4-latin-ext-wght-normal.CxNHBx-q.woff2) format("woff2-variations");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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/engineering/_astro/source-serif-4-latin-wght-normal.D9elroTD.woff2) format("woff2-variations");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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/engineering/_astro/ibm-plex-sans-cyrillic-ext-wght-normal.d45eAU9y.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/engineering/_astro/ibm-plex-sans-cyrillic-wght-normal.BAAhND-U.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/engineering/_astro/ibm-plex-sans-greek-wght-normal.CmyJS8uq.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/engineering/_astro/ibm-plex-sans-vietnamese-wght-normal.Dg1JeJN0.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/engineering/_astro/ibm-plex-sans-latin-ext-wght-normal.CIII54If.woff2) format("woff2-variations");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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/engineering/_astro/ibm-plex-sans-latin-wght-normal.IvpUvPa2.woff2) format("woff2-variations");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: #1c1f24;--ink-muted: #5a6473;--ink-soft: #8a93a3;--bg: #ffffff;--bg-card: #ffffff;--bg-sunken: #f6f5f1;--rule: #e6e4dd;--rule-strong: #cdcabf;--accent: #1554d1;--accent-soft: #eaf0ff;--accent-deep: #0a3a9c;--highlight: #fff3a3;--footer-bg: #090E34;--footer-divider: rgba(136, 144, 164, .3);--footer-text: #b8bec9;--font-serif: "Source Serif 4 Variable", Georgia, "Source Serif Pro", serif;--font-sans: "IBM Plex Sans Variable", Arial, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: ui-monospace, "JetBrains Mono", "SF Mono", Menlo, monospace;--measure: 38rem;--measure-wide: 50rem;--shell-max: 1200px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.18em}a:hover{color:var(--accent-deep)}h1,h2,h3,h4{font-family:var(--font-serif);font-weight:480;letter-spacing:-.012em;color:var(--ink)}h1{font-size:clamp(2.1rem,4.2vw,3.4rem);line-height:1.05;margin:0 0 .4em;font-weight:460;letter-spacing:-.018em}h2{font-size:1.5rem;line-height:1.2;margin-top:2.4em;margin-bottom:.6em}h3{font-size:1.15rem;line-height:1.3;margin-top:1.8em;margin-bottom:.4em}p{margin:0 0 1em}em{font-style:italic}pre{background-color:#f6f5f1;border:1px solid var(--rule);border-radius:4px;padding:.85em 1em;font-size:.86rem;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;font-family:var(--font-mono)}pre.astro-code{background-color:#f6f5f1!important;border:1px solid var(--rule);border-radius:4px;padding:.85em 1em!important}code{font-family:var(--font-mono)}:not(pre)>code{background:#f0eee5;padding:.05em .35em;border-radius:3px;font-size:.88em;font-family:var(--font-mono)}ul{padding-left:1.4em}ul li{margin:.3em 0}table{border-collapse:collapse;margin:1em 0;font-size:.94rem}th,td{border:1px solid var(--rule);padding:.4em .7em;text-align:left}th{background:#f6f5f1;font-weight:500}hr.rule{border:none;border-top:1px solid var(--rule);margin:2.5em 0 1.5em}.shell{max-width:1100px;margin:0 auto;padding:2.5rem 1.5rem 4rem}.shell--reading>.crumbs,.shell--reading>h1,.shell--reading>.lede,.shell--reading>.post-byline,.shell--reading>.byline,.shell--reading>.post-tags,.shell--reading>.post-hero,.shell--reading>article,.shell--reading>.related-posts,.shell--reading>.scenario,.shell--reading>aside.notes,.shell--reading>p,.shell--reading>pre,.shell--reading>ul,.shell--reading>ol,.shell--reading>h2,.shell--reading>h3,.shell--reading>hr,.shell--reading>.callout{max-width:var(--measure)}.eyebrow{display:inline-block;font-family:var(--font-sans);font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.16em;color:var(--accent);margin:0 0 1.2em}.lede{font-family:var(--font-serif);font-size:1.25rem;line-height:1.45;color:var(--ink-muted);margin:0 0 2em;font-weight:380}.byline{font-family:var(--font-sans);font-size:.88rem;color:var(--ink-muted);margin:.4em 0 0}.byline .byline-segment{display:inline-block}.byline .byline-sep{color:var(--ink-soft);margin:0 .5em}.crumbs{color:var(--ink-muted);font-size:.85rem;margin-bottom:1.5em;font-family:var(--font-sans)}.crumbs a{color:inherit;text-decoration:none}.crumbs a:hover{color:var(--accent)}header.site{background:#fff;border-bottom:1px solid var(--rule);font-family:var(--font-sans);position:sticky;top:0;z-index:50}header.site .inner{max-width:var(--shell-max);margin:0 auto;padding:.85rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1.5rem}header.site .brand{display:inline-flex;align-items:center;text-decoration:none;color:var(--ink)}header.site .brand img{display:block;height:36px;width:auto}header.site nav.primary{display:flex;align-items:center;gap:.4rem}header.site nav.primary a{color:var(--ink);text-decoration:none;font-size:.92rem;font-weight:500;transition:color .15s ease}header.site nav.primary a:hover{color:var(--accent)}header.site .nav-item{position:relative;padding:0 .7rem}header.site .nav-trigger{display:inline-flex;align-items:center;min-height:2.6rem;padding:.5rem 0;white-space:nowrap}header.site .dropdown{position:absolute;top:100%;left:50%;width:min(var(--dropdown-width, 42rem),calc(100vw - 3rem));padding:1.1rem;display:grid;grid-template-columns:repeat(var(--dropdown-columns, 2),minmax(0,1fr));gap:1rem;background:var(--bg-card);border:1px solid var(--rule);border-radius:8px;box-shadow:0 16px 38px color-mix(in srgb,var(--ink) 12%,transparent);opacity:0;visibility:hidden;transform:translate(-50%,.4rem);pointer-events:none;transition:opacity .15s ease,transform .15s ease,visibility .15s ease}header.site .mega-menu[data-columns="1"]{--dropdown-columns: 1;--dropdown-width: 20rem}header.site .nav-item:hover .dropdown,header.site .nav-item:focus-within .dropdown{opacity:1;visibility:visible;transform:translate(-50%);pointer-events:auto}header.site .nav-item:first-child .dropdown{left:0;transform:translateY(.4rem)}header.site .nav-item:first-child:hover .dropdown,header.site .nav-item:first-child:focus-within .dropdown{transform:translate(0)}header.site .nav-item:last-child .dropdown{right:0;left:auto;transform:translateY(.4rem)}header.site .nav-item:last-child:hover .dropdown,header.site .nav-item:last-child:focus-within .dropdown{transform:translate(0)}header.site .dropdown-column{min-width:0}header.site .dropdown-heading{min-height:1rem;margin:0 0 .5rem;color:var(--ink-soft);font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}header.site .dropdown-link{display:block;padding:.55rem .6rem;border-radius:6px}header.site nav.primary .dropdown-link:hover,header.site nav.primary .dropdown-link:focus{background:var(--accent-soft);color:var(--accent-deep)}header.site .dropdown-link-text{display:block;color:var(--ink);font-size:.92rem;font-weight:600;line-height:1.25}header.site .dropdown-link-description{display:block;margin-top:.18rem;color:var(--ink-muted);font-size:.78rem;font-weight:400;line-height:1.35}header.site .cta{display:inline-flex;align-items:center;padding:.55rem 1.1rem;background:var(--accent);color:#fff;text-decoration:none;font-size:.9rem;font-weight:500;border-radius:6px;transition:background-color .15s ease}header.site .cta:hover{background:var(--accent-deep);color:#fff}@media(min-width:761px)and (max-width:1023px){header.site .dropdown{width:min(20rem,calc(100vw - 3rem));grid-template-columns:minmax(0,1fr)}header.site .nav-item:first-child .dropdown{left:0;transform:translateY(.4rem)}header.site .nav-item:first-child:hover .dropdown,header.site .nav-item:first-child:focus-within .dropdown{transform:translate(0)}header.site .nav-item:last-child .dropdown{right:0;left:auto;transform:translateY(.4rem)}header.site .nav-item:last-child:hover .dropdown,header.site .nav-item:last-child:focus-within .dropdown{transform:translate(0)}header.site .nav-item:not(:first-child):not(:last-child) .dropdown{left:50%;transform:translate(-50%,.4rem)}header.site .nav-item:not(:first-child):not(:last-child):hover .dropdown,header.site .nav-item:not(:first-child):not(:last-child):focus-within .dropdown{transform:translate(-50%)}}@media(max-width:760px){header.site nav.primary{display:none}}footer.site{background:var(--footer-bg);color:var(--footer-text);font-family:var(--font-sans);margin-top:5rem;padding:2.5rem 0}footer.site .inner{max-width:var(--shell-max);margin:0 auto;padding:0 1.5rem}footer.site .row-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1.2rem}footer.site .links{display:flex;flex-wrap:wrap;align-items:center;gap:1.2rem}footer.site .brand img{display:block;height:36px;width:auto;max-width:140px;margin-right:1.5rem}footer.site a{color:var(--footer-text);text-decoration:none;font-size:.86rem;transition:color .15s ease}footer.site a:hover{color:#fff}footer.site .social{display:flex;align-items:center;gap:1rem}footer.site .social a{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;color:var(--footer-text)}footer.site .social svg{fill:currentColor}footer.site .disclaimer{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--footer-divider);font-size:.75rem;color:#8890a4}.post-list{list-style:none;padding:0;margin:2.5em 0 0;display:flex;flex-direction:column;gap:2.4rem}.post-list>li{display:block}.post-list .post-date{font-family:var(--font-mono);font-size:.76rem;color:var(--ink-soft);margin-bottom:.4em;letter-spacing:.02em}.post-list h3{font-family:var(--font-serif);margin:0 0 .35em;font-size:1.4rem;line-height:1.25;font-weight:460;letter-spacing:-.008em}.post-list h3 a{color:var(--ink);text-decoration:none}.post-list h3 a:hover{color:var(--accent)}.post-list p{margin:0;color:var(--ink-muted);font-size:.96rem}.callout{margin:2em 0 0;padding:1.4rem 1.5rem;background:var(--bg-sunken);border:1px solid var(--rule);border-left:3px solid var(--accent);border-radius:4px}.callout .callout-eyebrow{font-size:.7rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin:0 0 .4em}.callout h2{font-family:var(--font-serif);margin:0 0 .4em;font-size:1.25rem;font-weight:460;line-height:1.3}.callout h2 a{color:var(--ink);text-decoration:none}.callout h2 a:hover{color:var(--accent)}.callout p{margin:0;color:var(--ink-muted);font-size:.94rem}.shell--catalog{display:grid;grid-template-columns:240px minmax(0,var(--measure-wide));gap:3.5rem;align-items:start}.shell--catalog .sidebar{position:sticky;top:5rem;font-family:var(--font-sans);font-size:.9rem}.shell--catalog .sidebar .sidebar-eyebrow{font-size:.7rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 1em}.shell--catalog .sidebar nav ol{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.1rem;border-left:1px solid var(--rule)}.shell--catalog .sidebar nav a{display:block;padding:.55rem .9rem;color:var(--ink-muted);text-decoration:none;line-height:1.35;border-left:2px solid transparent;margin-left:-1px;transition:color .12s ease,border-color .12s ease}.shell--catalog .sidebar nav a:hover{color:var(--ink);border-left-color:var(--rule-strong)}@media(max-width:820px){.shell--catalog{grid-template-columns:minmax(0,1fr);gap:1.5rem}.shell--catalog .sidebar{position:static}.shell--catalog .sidebar nav ol{border-left:none}.shell--catalog .sidebar nav a{border-left:none;padding-left:0}}.feature-section{margin:0 0 3.2rem;scroll-margin-top:5rem}.feature-section h2{font-family:var(--font-serif);font-size:1.7rem;font-weight:480;margin:0 0 1em;line-height:1.15;letter-spacing:-.01em;padding-bottom:.5em;border-bottom:1px solid var(--rule)}.feature-section ul.scenarios{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:1.6rem}.feature-section ul.scenarios li{padding:0}.feature-section ul.scenarios .scenario-title{font-family:var(--font-serif);font-size:1.12rem;font-weight:460;line-height:1.3;margin:0 0 .3em}.feature-section ul.scenarios .scenario-title a{color:var(--ink);text-decoration:none}.feature-section ul.scenarios .scenario-title a:hover{color:var(--accent)}.feature-section ul.scenarios .scenario-desc{margin:0;color:var(--ink-muted);font-size:.95rem;line-height:1.5}.post-hero{width:100%;height:auto;border-radius:4px;margin:1.5em 0 1.8em;border:1px solid var(--rule)}.post-tags{margin:1.2em 0 1.8em}.post-tags .tag{display:inline-block;padding:.2em .7em;margin:0 .35em .35em 0;border:1px solid var(--rule);border-radius:999px;font-family:var(--font-sans);font-size:.76rem;color:var(--ink-muted);background:var(--bg-card);letter-spacing:.01em;text-decoration:none;transition:color .12s ease,border-color .12s ease}a.tag:hover{color:var(--ink);border-color:var(--rule-strong)}.related-posts{margin-top:4em;padding-top:1.8em;border-top:1px solid var(--rule)}.related-posts h2{font-family:var(--font-sans);font-size:.72rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 1.3em}.related-posts ul{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}.related-posts li{margin:0}.related-posts a{display:block;padding:1em 1.1em;border:1px solid var(--rule);border-radius:4px;color:inherit;text-decoration:none;background:var(--bg-card);transition:border-color .12s ease}.related-posts a:hover{border-color:var(--accent)}.related-posts .related-date{font-family:var(--font-mono);font-size:.72rem;color:var(--ink-soft);margin-bottom:.35em}.related-posts .related-title{font-family:var(--font-serif);font-size:1rem;line-height:1.35;font-weight:460}.scenario{margin:1em 0 1.5em;padding:1em 1.2em;border:1px solid var(--rule);border-radius:4px;background:var(--bg-card)}.scenario p{margin:0;font-family:var(--font-serif);font-size:1.02rem;line-height:1.55}.scenario ul{margin:.4em 0 0}sup.fn{font-size:.72em;line-height:1}sup.fn a{color:var(--accent);text-decoration:none;font-weight:600}sup.fn a:hover{text-decoration:underline}aside.notes{color:var(--ink-muted);font-size:.88rem;margin-top:3em;padding-top:1.5em;border-top:1px solid var(--rule)}aside.notes h2{font-family:var(--font-sans);font-size:.72rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 1.2em}aside.notes ol{padding-left:1.4em}aside.notes li{margin:.7em 0;scroll-margin-top:1em}aside.notes li>p{display:inline;margin:0}aside.notes li a.backref{display:none;margin-left:.4em;text-decoration:none;color:var(--accent);font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}aside.notes li:target a.backref{display:inline}aside.notes li a.backref:hover{text-decoration:underline}:target{background:var(--highlight);transition:background .4s ease}pre.astro-code,pre[class*=language-]{background:#f6f8fa;color:#24292e;padding:1rem;border-radius:6px;overflow-x:auto}code[class*=language-],pre[class*=language-]{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);font-size:.92em}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#6a737d;font-style:italic}.token.punctuation{color:#24292e}.token.keyword,.token.operator,.token.atrule,.token.important{color:#d73a49}.token.string,.token.char,.token.attr-value,.token.regex{color:#032f62}.token.function,.token.class-name{color:#6f42c1}.token.number,.token.boolean,.token.constant,.token.builtin,.token.symbol,.token.tag,.token.attr-name,.token.selector,.token.property,.token.literal-property{color:#005cc5}.token.parameter,.token.variable{color:#e36209}
