.article{--reading-width: 42rem}.article-header{max-width:var(--reading-width);margin:0 auto var(--s5);border-bottom:1px solid var(--divider)}.article-back{display:inline-flex;align-items:center;gap:var(--s1);min-height:2.75rem;margin-bottom:var(--s3);color:var(--text-sub);font-size:var(--fs-14)}.article-back:hover{color:var(--accent);text-decoration:none}.article-header__meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s1) var(--s1h);margin-bottom:var(--s2);color:var(--text-sub);font-size:var(--fs-12)}.article-category{margin-right:var(--s0);font-weight:var(--fw-semibold)}.article-header h1{margin:0}.article-summary{color:var(--text-sub)}.article-header__tags{display:flex;flex-wrap:wrap;margin-top:var(--s2);font-size:var(--fs-12)}.article-header__tags a,.article-header__tags span{color:var(--text-sub)}.article-header__tags a:hover{color:var(--accent)}.article-author{display:flex;align-items:center;gap:var(--s1h)}.article-author__mark{display:grid;place-items:center;flex:none;width:2rem;height:2rem;border-radius:var(--radius-pill);background:var(--primary-soft);color:var(--accent)}.article-author>span:last-child{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--s1)}.article-author b{font-size:var(--fs-12);font-weight:var(--fw-semibold)}.article-author small{color:var(--text-sub);font-size:var(--fs-11)}.article-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s4);max-width:var(--reading-width);margin:0 auto}.article-main{min-width:0}.prose{max-width:70ch;color:var(--text);font-size:1.0625rem;line-height:1.85;letter-spacing:-.006em;overflow-wrap:anywhere}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose p{margin:0 0 var(--s3)}.prose :is(h1,h2,h3,h4,h5,h6){margin:var(--s6) 0 var(--s2);line-height:1.4;letter-spacing:-.025em;scroll-margin-top:1rem}.prose h1,.prose h2{font-size:var(--fs-28)}.prose h3{font-size:var(--fs-24)}.prose h4{font-size:var(--fs-20)}.prose h5,.prose h6{font-size:var(--fs-16)}.prose :is(ul,ol){margin:0 0 var(--s3);padding-left:var(--s3)}.prose li{margin-bottom:var(--s1);padding-left:var(--s0)}.prose li::marker{color:var(--text-sub)}.prose li :is(ul,ol){margin-top:var(--s1);margin-bottom:var(--s1)}.prose li>p{margin-bottom:var(--s1)}.prose a{color:var(--accent);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 45%,transparent);text-decoration-thickness:.07em;text-underline-offset:.2em}.prose a:hover{text-decoration-color:currentColor}.prose strong{font-weight:var(--fw-bold)}.prose hr{margin:var(--s5) 0;border:0;border-top:1px solid var(--divider)}.prose blockquote{margin:var(--s4) 0;border-left:2px solid var(--accent);color:var(--text-sub)}.prose blockquote>:last-child{margin-bottom:0}.prose img{display:block;margin:var(--s3) auto;border-radius:var(--radius-md)}.prose figure{margin:var(--s4) 0}.prose figcaption{color:var(--text-sub);font-size:var(--fs-14);text-align:center}.prose code{padding:.125rem .3rem;border-radius:.25rem;background:var(--sunken);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.875em}.prose pre{max-width:100%;margin:var(--s3) 0;padding:var(--s2h) var(--s3);overflow-x:auto;overscroll-behavior-inline:contain;border:1px solid var(--divider);border-radius:var(--radius-md);background:var(--sunken)!important;line-height:1.7;tab-size:2}.prose pre code{padding:0;background:none;font-size:var(--fs-14);overflow-wrap:normal}.astro-code,.astro-code span{color:var(--shiki-light);font-style:var(--shiki-light-font-style);font-weight:var(--shiki-light-font-weight)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code,:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark);font-style:var(--shiki-dark-font-style);font-weight:var(--shiki-dark-font-weight)}}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark);font-style:var(--shiki-dark-font-style);font-weight:var(--shiki-dark-font-weight)}.table-wrap{max-width:100%;margin:var(--s3) 0;overflow-x:auto;overscroll-behavior-inline:contain;border:1px solid var(--divider);border-radius:var(--radius-md)}.prose table{width:100%;border-collapse:collapse;font-size:var(--fs-14);line-height:1.65}.prose th,.prose td{padding:var(--s1h) var(--s2);border-bottom:1px solid var(--divider);text-align:left;vertical-align:top}.prose th{background:var(--sunken);font-weight:var(--fw-semibold);white-space:nowrap}.prose td{min-width:8rem}.prose tbody tr:last-child>*{border-bottom:0}.toc{min-width:0;align-self:start;font-size:var(--fs-14)}.toc__details{padding:0 var(--s2);border:1px solid var(--divider)}.toc__title{display:flex;justify-content:space-between;align-items:center;gap:var(--s2);min-height:3rem;padding:var(--s1) 0;color:var(--text-sub);font-weight:var(--fw-semibold);cursor:pointer;list-style:none}.toc__title::-webkit-details-marker{display:none}.toc__title:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.toc__toggle{font-size:var(--fs-20);transition:transform var(--motion-fast) var(--ease-entering)}.toc__details:has([aria-expanded=true]) .toc__toggle{transform:rotate(180deg)}.toc ul{padding:0 0 var(--s1h);list-style:none}.toc li{margin:0}.toc li[data-depth="3"]{padding-left:var(--s1h)}.toc a{display:block;padding:var(--s1) var(--s1h);border-left:2px solid transparent;color:var(--text-sub);line-height:1.6;overflow-wrap:anywhere}.toc a:hover{color:var(--accent);text-decoration:none}.toc a.is-active{border-color:var(--accent);color:var(--accent);font-weight:var(--fw-semibold)}.series-nav{margin-top:var(--s7);padding-top:var(--s4);border-top:1px solid var(--divider)}.series-nav__heading{display:flex;align-items:end;justify-content:space-between;gap:var(--s2);margin-bottom:var(--s2)}.series-nav__heading span{color:var(--text-sub);font-size:var(--fs-12)}.series-nav__heading h2{margin-top:var(--s1);font-size:var(--fs-20)}.series-nav__heading h2 a{color:var(--text)}.series-nav__heading p{flex:none;color:var(--text-sub);font-size:var(--fs-12);font-variant-numeric:tabular-nums}.series-nav ol{list-style:none}.series-nav li+li{border-top:1px solid var(--divider)}.series-nav li>a{display:flex;align-items:baseline;gap:var(--s1h);padding:var(--s1h) var(--s1);color:var(--text-sub);line-height:1.6}.series-nav li>a:hover{color:var(--accent);background:var(--primary-soft);text-decoration:none}.series-nav__number{flex:none;width:1.5rem;font-size:var(--fs-12);font-variant-numeric:tabular-nums}.series-nav__title{flex:1;min-width:0;font-size:var(--fs-14)}.series-nav__current{flex:none;color:var(--accent);font-size:var(--fs-11)}.series-nav .is-current{background:var(--primary-soft);border-radius:var(--radius-sm)}.series-nav .is-current .series-nav__title{color:var(--accent);font-weight:var(--fw-semibold)}.post-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:var(--s5)}.post-nav__card{display:flex;align-items:flex-start;gap:var(--s1);color:var(--text)}.post-nav__card:hover{color:var(--accent);text-decoration:none}.post-nav__card--next{align-items:flex-end;text-align:right}.post-nav__label{display:inline-flex;align-items:center;gap:var(--s1);color:var(--text-sub);font-size:var(--fs-12)}.post-nav__title{font-size:var(--fs-16);line-height:1.55}.post-nav__series{color:var(--text-sub);font-size:var(--fs-12)}@media(min-width:64em){.article--with-toc .article-header{margin-left:0;max-width:min(var(--reading-width),calc(100% - 17rem))}.article-grid--with-toc{max-width:none;grid-template-columns:minmax(0,var(--reading-width)) 14rem;justify-content:space-between;column-gap:var(--s6)}.article-grid--with-toc .article-main{grid-column:1;grid-row:1}.toc{position:sticky;top:6rem;grid-column:2;grid-row:1;max-height:calc(100dvh - 8rem);overflow-y:auto;font-size:var(--fs-12)}.toc__details{border-left:1px solid var(--divider);border-radius:0}.toc__title{min-height:2.75rem;padding:0 var(--s2) var(--s1);font-size:var(--fs-12)}}@media(max-width:39.99em){.article-header{margin-bottom:var(--s3);padding-bottom:var(--s3)}.article-back{margin-bottom:var(--s2)}.article-header h1{font-size:var(--fs-32)}.article-header__meta{gap:var(--s0) var(--s1)}.article-summary{margin-top:var(--s2)}.prose{font-size:var(--fs-16);line-height:1.85}.prose h1,.prose h2{font-size:var(--fs-24)}.prose h3{font-size:var(--fs-20)}.prose h4{font-size:var(--fs-16)}.prose pre{padding:var(--s2)}.series-nav{margin-top:var(--s5)}.series-nav__current{display:none}.post-nav{grid-template-columns:minmax(0,1fr);gap:var(--s4)}.post-nav__blank{display:none}.post-nav__card--next{align-items:flex-start;text-align:left}}.article-header{position:relative;padding-top:.5rem;padding-bottom:2.5rem;margin-bottom:2.5rem}.article-header:before{content:"";position:absolute;inset:3rem -1rem 0;z-index:-1;background:radial-gradient(ellipse at 30% 5%,color-mix(in srgb,var(--accent) 8%,transparent),transparent 70%);pointer-events:none}.article-header h1{font-size:clamp(2rem,3.7vw,2.85rem);font-weight:500;line-height:1.4;letter-spacing:-.045em;text-wrap:pretty;overflow-wrap:break-word}.article-summary{margin-top:1.5rem;font-size:1rem;line-height:1.9}.article-header__tags{gap:.5rem}.article-header__tags a,.article-header__tags span{padding:.4rem .75rem;min-height:36px;border:1px solid var(--divider);border-radius:100px;font-size:.6875rem}.article-header__tags a:hover{background:var(--primary-soft);text-decoration:none}.article-author{margin-top:1.5rem}.prose h1,.prose h2,.prose h3{font-weight:600;letter-spacing:-.035em}.prose h2{padding-top:1.5rem;border-top:1px solid var(--divider)}.prose>h2:first-child{padding-top:0;border-top:0}.prose blockquote{padding:1.25rem 1.5rem;border-radius:0 16px 16px 0;background:color-mix(in srgb,var(--primary-soft) 40%,transparent)}.prose pre,.table-wrap{border-radius:18px}.toc__details{border-radius:16px;background:color-mix(in srgb,var(--surface) 60%,transparent)}.post-nav{border-top:0;padding-top:0;gap:1rem}.post-nav__card{flex-direction:column;min-width:0;border:1px solid var(--divider);background:color-mix(in srgb,var(--surface) 65%,transparent);border-radius:20px;padding:1.4rem}.post-nav__title{font-weight:500}@media(min-width:64em){.toc__details{padding:.5rem;border:1px solid var(--divider)}.toc__title{padding-inline:.75rem}.toc a{padding-left:.75rem}}@media(max-width:520px){.article-header h1{font-size:1.9rem}.article-header{padding-bottom:2rem;margin-bottom:2rem}.article-header:before{inset-inline:0}.article-header__tags a,.article-header__tags span{min-height:44px;display:inline-flex;align-items:center}.prose h2{font-size:1.35rem}.post-nav__card{padding:1.25rem}}.toc__title{width:100%;border:0;background:transparent;color:inherit;font:inherit;text-align:start;cursor:pointer}.toc__title:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.toc ul[hidden]{display:none}
