:root{--color-primary:var(--primary);--color-primary-light:var(--p-green-500);--color-primary-dark:var(--primary-hover);--color-primary-bg:var(--primary-faint);--color-navy:var(--navy);--color-navy-mid:var(--p-navy-500);--color-neutral-100:var(--p-gray-1);--color-neutral-200:var(--p-gray-2);--color-neutral-300:var(--p-gray-3);--color-neutral-400:var(--p-gray-4);--color-neutral-500:var(--p-gray-t4);--color-neutral-600:var(--p-gray-600);--color-neutral-700:var(--p-gray-t2);--color-neutral-800:var(--p-gray-800);--color-neutral-900:var(--p-gray-tx);--color-background:var(--s1);--color-surface:var(--p-gray-page);--color-surface-alt:var(--s2);--color-text-primary:var(--tx);--color-text-secondary:var(--t2);--color-text-muted:var(--t3);--color-border:var(--s3);--color-border-medium:var(--s4);--color-success:var(--primary);--color-warning:var(--p-sun-mark);--color-info:var(--p-blue-light);--font-body:var(--font-inter), -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-script:var(--font-satisfy,"Satisfy", cursive);--fs-2xs:.625rem;--fs-xs:.75rem;--fs-sm:.875rem;--fs-base:1rem;--fs-lg:1.125rem;--fs-xl:1.25rem;--fs-2xl:1.5rem;--fs-3xl:1.875rem;--fs-4xl:2.25rem;--fs-5xl:3rem;--sp-2xs:.125rem;--sp-xs:.25rem;--sp-sm:.5rem;--sp-md:.75rem;--sp-base:1rem;--sp-lg:1.5rem;--sp-xl:2rem;--sp-2xl:3rem;--sp-3xl:4rem;--sp-4xl:6rem;--r-sm:.25rem;--r-md:.375rem;--r-base:.5rem;--r-lg:.75rem;--r-xl:1rem;--r-2xl:1.5rem;--r-full:9999px;--shadow-xs:0 1px 2px 0 #0000000d;--shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--shadow-xl:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a;--el-xs:0 1px 2px 0 #0000000d;--el-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--el-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--brand-navy:var(--navy);--color-action-primary:var(--primary);--color-text-inverse:var(--p-white);--color-border-subtle:var(--s2);--color-rating-star:var(--p-sun-mark);--color-success-light:var(--primary-faint);--color-error:var(--p-red-600);--color-error-light:#fef2f2;--color-warning-light:#fffbeb;--color-info-light:var(--p-blue-50);--color-focus-ring:#4a90d9;--font-mono:"SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", monospace;--dur-fast:.15s;--dur-expressive:.5s;--ease-smooth:cubic-bezier(.4, 0, .2, 1);--ease-expo:cubic-bezier(.16, 1, .3, 1);--focus-ring-width:2px;--focus-ring-color:var(--color-focus-ring);--focus-ring-offset:2px;--measure:65ch;--measure-wide:80ch;--gutter:var(--page-gutter,.75rem);--fs-reading:clamp(1.0625rem, 1rem + .3vw, 1.125rem);--lh-reading:1.6;--line:calc(var(--fs-reading) * var(--lh-reading));--fs-reading-h1:clamp(1.75rem, 1.5rem + 1.25vw, 2.5rem);--fs-reading-h2:clamp(1.5rem, 1.4167rem + .4167vw, 1.75rem);--fs-reading-h3:clamp(1.1875rem, 1.1458rem + .2083vw, 1.3125rem);--fs-reading-lead:clamp(1.1875rem, 1.125rem + .3vw, 1.3125rem);--fs-reading-quote:1.5rem;--fs-reading-meta:.875rem;--fs-reading-caption:.875rem;--fs-reading-min:.8125rem;--header-h:3.5rem}@media (min-width:640px){:root{--header-h:4rem;--gutter:clamp(1rem, 4vw, 2.5rem)}}.prose{max-width:var(--measure);font-family:var(--font-body);font-size:var(--fs-reading);line-height:var(--lh-reading);color:var(--color-text-primary);overflow-wrap:break-word;-webkit-font-smoothing:antialiased;margin-inline:auto}.prose>*{margin:0}.prose>*+*{margin-top:var(--gap,var(--line))}.prose>:where(figure,blockquote,.prose-callout,.prose-table,.prose-steps,.prose-product),.prose>:where(figure,blockquote,.prose-callout,.prose-table,.prose-steps,.prose-product)+*{--gap:calc(var(--line) * 2)}.prose h2,.prose h3{color:var(--brand-navy);scroll-margin-top:calc(var(--header-h) + var(--line));text-wrap:balance}.prose>h2{--gap:calc(var(--line) * 3);margin-bottom:var(--line);font-size:var(--fs-reading-h2);letter-spacing:-.015em;font-weight:800;line-height:1.25}.prose>h3{--gap:2em;font-size:var(--fs-reading-h3);margin-bottom:.5em;font-weight:600;line-height:1.3}.prose>h2+h3,.prose>:is(h2,h3)+*{--gap:0}.prose a{color:var(--color-action-primary);text-underline-offset:.15em;text-decoration:none}.prose a:hover,.prose a:focus-visible{text-decoration:underline}.prose :where(p,li,td,figcaption,blockquote,.prose-callout) a{text-underline-offset:.2em;font-weight:600;text-decoration:underline;text-decoration-thickness:.08em}.prose :where(p,li,td,figcaption,blockquote,.prose-callout) a:hover{text-decoration-thickness:.14em}.prose strong{font-weight:700}.prose code{font-family:var(--font-mono);background:var(--color-surface-alt);border-radius:var(--r-sm);padding:.1em .35em;font-size:.9em}.prose ul,.prose ol{padding:0;list-style:none}.prose ul,.prose ol:not(.prose-steps){padding-left:1.75rem}.prose li{padding-left:1.5em;position:relative}.prose li+li{margin-top:calc(var(--line) * .5)}.prose li>p{margin:0}.prose ul>li:before{content:"";left:.15em;top:calc((var(--lh-reading) * 1em - .45em) / 2);border-radius:var(--r-full);background:currentColor;width:.45em;height:.45em;position:absolute}.prose ol{counter-reset:item}.prose ol>li{counter-increment:item}.prose ol>li:before{content:counter(item) ".";color:inherit;font-variant-numeric:tabular-nums;font-weight:700;position:absolute;top:0;left:0}.prose ol>li{padding-left:1.9em}.prose ol.prose-steps{counter-reset:step}.prose ol.prose-steps>li{counter-increment:step;padding-left:2.75em}.prose ol.prose-steps>li+li{margin-top:var(--line)}.prose ol.prose-steps>li:before{content:counter(step);border-radius:var(--r-full);background:var(--color-primary-bg);width:2em;height:2em;color:var(--color-action-primary);place-items:center;font-size:.9em;font-weight:700;line-height:1;display:grid;position:absolute;top:0;left:0}.prose .prose-steps strong{color:var(--brand-navy);padding-top:.2em;line-height:1.35;display:block}.prose .prose-steps p{margin-top:.25em}.prose blockquote{padding-left:calc(var(--line) * .75);border-left:.25rem solid var(--color-action-primary);font-size:var(--fs-reading-quote);letter-spacing:-.01em;color:var(--brand-navy);text-wrap:pretty;font-weight:500;line-height:1.35}.prose blockquote p{margin:0}.prose blockquote cite{margin-top:calc(var(--line) * .5);font-size:var(--fs-reading-meta);color:var(--color-text-muted);font-style:normal;font-weight:500;display:block}.prose .prose-callout{--callout-bg:var(--color-info-light);--callout-accent:var(--color-info);padding:calc(var(--line) * .75) calc(var(--line) * .75) calc(var(--line) * .75) calc(var(--line) * .6);border-left:.25rem solid var(--callout-accent);border-radius:var(--r-lg);background:var(--callout-bg);grid-template-columns:auto 1fr;column-gap:.75em;display:grid}.prose .prose-callout[data-variant=tip]{--callout-bg:var(--color-success-light);--callout-accent:var(--color-action-primary)}.prose .prose-callout[data-variant=warning]{--callout-bg:var(--color-warning-light);--callout-accent:var(--color-warning)}.prose .prose-callout>svg{width:1.25em;height:1.25em;margin-top:calc((var(--lh-reading) * 1em - 1.25em) / 2);color:var(--callout-accent)}.prose .prose-callout strong{color:var(--brand-navy);display:block}.prose .prose-callout p{margin:0}.prose .prose-table{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;overflow-x:auto}.prose table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.9em;line-height:1.4}.prose caption{caption-side:bottom;text-align:left;padding-top:calc(var(--line) * .5);font-size:var(--fs-reading-caption);color:var(--color-text-muted)}.prose th,.prose td{text-align:left;vertical-align:top;padding:.6em .75em}.prose th:first-child,.prose td:first-child{padding-left:0}.prose th:last-child,.prose td:last-child{padding-right:0}.prose th{top:var(--header-h);z-index:1;background:var(--color-surface);color:var(--brand-navy);border-bottom:.125rem solid var(--color-neutral-300);white-space:nowrap;font-weight:700;position:static}.prose td{border-bottom:.0625rem solid var(--color-neutral-300)}.prose .num{text-align:right;white-space:nowrap}@media (min-width:640px){.prose .prose-table{overflow:visible}.prose th{position:sticky}}.prose figure{--aspect:3 / 2}.prose .prose-figure__media{width:100%;aspect-ratio:var(--aspect);border-radius:var(--r-lg);background:var(--color-neutral-200);position:relative;overflow:hidden}.prose .prose-figure__media img{object-fit:cover}.prose figcaption{margin-top:calc(var(--line) * .5);font-size:var(--fs-reading-caption);color:var(--color-text-muted);line-height:1.5}@media (min-width:1024px){.prose figure[data-bleed]{margin-inline:calc((var(--measure) - var(--measure-wide)) / 2)}}.prose .prose-product{font-size:var(--fs-base)}.prose .prose-product__fallback{justify-content:space-between;align-items:center;gap:var(--sp-base);padding:calc(var(--line) * .75);border-radius:var(--r-lg);background:var(--color-success-light);flex-wrap:wrap;display:flex}.prose .prose-product__fallback a{white-space:nowrap;font-weight:700}.post{background:var(--color-surface);padding-inline:var(--gutter);padding-bottom:calc(var(--line) * 4);font-family:var(--font-body);color:var(--color-text-primary)}.post__column{max-width:var(--measure);font-size:var(--fs-reading);line-height:var(--lh-reading);margin-inline:auto}.post__column>*+*{margin-top:var(--line)}.post-header{padding-top:calc(var(--line) * 2)}.post-header>*+*{margin-top:var(--line)}.post-header+*{margin-top:calc(var(--line) * 2)}.post-meta{font-size:var(--fs-reading-meta);color:var(--color-text-muted);flex-wrap:wrap;align-items:center;gap:.5em;line-height:1.5;display:flex}.post-meta__category{color:var(--color-action-primary);text-transform:uppercase;letter-spacing:.06em;font-weight:700;text-decoration:none}.post-meta__category:hover{text-decoration:underline}.post-meta__sep{color:var(--color-neutral-400)}.post-title{font-size:var(--fs-reading-h1);letter-spacing:-.02em;color:var(--brand-navy);text-wrap:balance;font-weight:800;line-height:1.15}.post-dek{font-size:var(--fs-reading-lead);color:var(--color-text-secondary);text-wrap:pretty;line-height:1.5}.post-byline{align-items:center;gap:var(--sp-md) var(--sp-base);font-size:var(--fs-reading-meta);flex-wrap:wrap;line-height:1.4;display:flex}.post-byline__avatar{border-radius:var(--r-full);background:var(--brand-navy);width:2.5rem;height:2.5rem;color:var(--color-text-inverse);font-weight:700;font-size:var(--fs-reading-min);flex-shrink:0;place-items:center;display:grid;overflow:hidden}.post-byline__avatar img{object-fit:cover;width:100%;height:100%}.post-byline__name{color:var(--color-text-primary);font-weight:600}.post-byline__role{color:var(--color-text-muted)}.post-byline__share{margin-left:auto}.post-hero--banner{background:var(--brand-navy);color:var(--color-text-inverse);margin-inline:calc(var(--gutter) * -1);padding:calc(var(--line) * 2.5) var(--gutter);align-items:flex-end;min-height:clamp(16rem,40vw,24rem);display:flex;position:relative;overflow:hidden}.post-hero--banner .post-hero__img{position:absolute;inset:0}.post-hero--banner .post-hero__img img{object-fit:cover}.post-hero--banner .post-hero__scrim{background:linear-gradient(#0f1d2eb8 0%,#0f1d2ef0 100%);position:absolute;inset:0}.post-hero--banner+.post-layout{padding-top:calc(var(--line) * 2)}.post-hero--banner .post-share{color:var(--color-text-inverse)}.post-hero--banner .post-share:hover{background:#ffffff1f}.post-hero--banner .post-header{z-index:1;max-width:var(--measure);width:100%;font-size:var(--fs-reading);margin-inline:auto;padding-top:0;position:relative}.post-hero--banner .post-title,.post-hero--banner .post-byline__name{color:var(--color-text-inverse)}.post-hero--banner .post-dek{color:#ffffffd1}.post-hero--banner .post-meta,.post-hero--banner .post-byline__role{color:#ffffffb3}.post-hero--banner .post-meta__category{color:var(--color-primary-light)}.post-hero--banner .post-byline__avatar{background:var(--color-action-primary)}.post-share{border-radius:var(--r-base);min-height:2.75rem;font-size:var(--fs-reading-meta);color:var(--color-action-primary);background:0 0;border:0;align-items:center;gap:.4em;padding-inline:.75em;font-weight:600;display:inline-flex}.post-share:hover{background:var(--color-success-light)}.post-share svg{width:1.1em;height:1.1em}.post-footer{margin-top:calc(var(--line) * 3)}.post-footer>*+*{margin-top:calc(var(--line) * 2)}.post-tags{gap:var(--sp-sm);flex-wrap:wrap;padding:0;list-style:none;display:flex}.post-tags a{border-radius:var(--r-full);background:var(--color-surface-alt);min-height:2.25rem;color:var(--color-text-secondary);font-size:var(--fs-reading-meta);align-items:center;padding-inline:.85em;font-weight:500;text-decoration:none;display:inline-flex}.post-tags a:hover{background:var(--color-success-light);color:var(--color-action-primary)}.post-author{gap:var(--sp-base);padding:calc(var(--line) * .75);border-radius:var(--r-xl);background:var(--color-neutral-100);grid-template-columns:auto 1fr;display:grid}.post-author .post-byline__avatar{width:3.5rem;height:3.5rem}.post-author__name{color:var(--brand-navy);font-weight:700}.post-author__role{font-size:var(--fs-reading-meta);color:var(--color-action-primary);font-weight:600}.post-author__bio{font-size:var(--fs-base);color:var(--color-text-secondary);margin-top:.35em;line-height:1.55}.post-related__title{font-size:var(--fs-reading-h3);color:var(--brand-navy);margin-bottom:calc(var(--line) * .5);font-weight:700}.post-related ul{padding:0;list-style:none}.post-related li+li{margin-top:calc(var(--line) * .5)}.post-related a{color:var(--brand-navy);font-weight:600;line-height:1.35;text-decoration:none;display:block}.post-related a:hover{color:var(--color-action-primary)}.post-related__meta{font-size:var(--fs-reading-meta);color:var(--color-text-muted);margin-top:.15em;font-weight:400;display:block}.post-back{font-size:var(--fs-reading-meta);color:var(--color-action-primary);font-weight:600;text-decoration:none;display:inline-block}.post-back:hover{text-decoration:underline}@media (max-width:480px){.post-meta__category,.post-tags a,.post-back,.post-related a,.prose .prose-product__fallback a{align-items:center;min-height:2.75rem;display:inline-flex}.post-related a{flex-direction:column;justify-content:center;display:flex}.post-tags a{min-height:2.75rem}.post-share{min-width:2.75rem}}.reading-progress{top:var(--header-h);z-index:39;background:var(--color-action-primary);transform-origin:0;height:.1875rem;transform:scaleX(var(--progress,0));pointer-events:none;position:fixed;left:0;right:0}@media (min-width:1024px){.reading-progress{display:none}}.share-bar{z-index:40;justify-content:center;gap:var(--sp-sm);padding:var(--sp-sm) var(--gutter) calc(var(--sp-sm) + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(.75rem);backdrop-filter:blur(.75rem);border-top:.0625rem solid var(--color-neutral-300);transition:transform var(--dur-fast) var(--ease-smooth);background:#fffffff0;display:flex;position:fixed;bottom:0;left:0;right:0;transform:translateY(100%)}.share-bar[data-visible=true]{transform:translateY(0)}@media (min-width:1024px){.share-bar{display:none}}.post-layout{display:block}.post-toc{display:none}@media (min-width:1024px){.post-layout[data-toc]{grid-template-columns:10rem var(--measure);font-size:var(--fs-reading);justify-content:center;column-gap:3rem;display:grid}.post-layout[data-toc] .post__column{min-width:0;max-width:none;margin-inline:0}.post-layout[data-toc] figure[data-bleed]{margin-inline:0}.post-toc{top:calc(var(--header-h) + var(--line) * 2);padding-top:calc(var(--line) * 2);font-size:var(--fs-reading-meta);align-self:start;line-height:1.4;display:block;position:sticky}}@media (min-width:1280px){.post-layout[data-toc]{grid-template-columns:11rem var(--measure);column-gap:calc((var(--measure-wide) - var(--measure)) / 2 + 1.5rem)}.post-layout[data-toc] figure[data-bleed]{margin-inline:calc((var(--measure) - var(--measure-wide)) / 2)}}.post-toc__title{font-size:var(--fs-reading-min);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:var(--sp-md);font-weight:700}.post-toc ol{margin:0;padding:0;list-style:none}.post-toc li+li{margin-top:var(--sp-xs)}.post-toc a{padding:var(--sp-xs) 0 var(--sp-xs) var(--sp-md);color:var(--color-text-secondary);border-left:.125rem solid #0000;text-decoration:none;display:block}.post-toc a:hover{color:var(--color-action-primary)}.post-toc a[aria-current=true]{color:var(--color-action-primary);border-left-color:var(--color-action-primary);font-weight:600}.post-aboutline{margin:calc(var(--line) * .75) 0 0;font-family:var(--font-body);font-size:var(--fs-reading-meta);color:var(--color-text-muted);line-height:1.5}.post-aboutline__topic{color:var(--color-action-primary);text-underline-offset:.15em;font-weight:700;text-decoration:underline}.post-short{margin-top:calc(var(--line) * 1.25);background:var(--color-primary-bg);border-radius:.875rem;padding:1.25rem 1.5rem}.prose .post-short__title{color:var(--brand-navy);margin:0;font-size:1.125rem;font-weight:700;line-height:1.3}.prose .post-short__list{margin:calc(var(--line) * .5) 0 0;padding-left:.25rem}.prose .post-short__list>li:before{background:var(--brand-navy)}.post-frame{display:block}.post-frame .post-rail{max-width:var(--measure);margin:calc(var(--line) * 3) auto 0}@media (min-width:1024px){.post-frame{grid-template-columns:minmax(0, var(--measure-wide)) 21.25rem;grid-template-areas:"lead.""body rail";justify-content:center;column-gap:2.5rem;display:grid}.post-frame__lead{grid-area:lead;min-width:0}.post-frame__body{grid-area:body;min-width:0}.post-frame figure[data-bleed]{margin-inline:0}.post-frame .post-rail{max-width:none;margin:calc(var(--line) * .75) 0 0;grid-area:rail;align-self:start}.post-after{max-width:calc(var(--measure-wide) + 2.5rem + 21.25rem);margin-inline:auto}.post-after>section{margin-inline:0;padding-inline:0}}