.prose{max-width:65ch;font-size:var(--text-prose);line-height:var(--leading-prose);letter-spacing:var(--tracking-tight);color:var(--fg-secondary);overflow-wrap:break-word;font-optical-sizing:auto}.prose h2{font-family:var(--font-sans), sans-serif;font-size:var(--text-prose);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight);text-transform:none;color:var(--fg);text-wrap:balance;margin-top:4rem;margin-bottom:0;scroll-margin-top:2rem;line-height:1.4}.prose h2:first-child{margin-top:0}.prose h3{font-size:var(--text-prose);font-weight:var(--weight-medium);letter-spacing:var(--tracking-tight);color:var(--fg);text-wrap:balance;margin-top:2.5rem;margin-bottom:0;line-height:1.4}.prose p{margin:1rem 0 0}.prose h2+p,.prose h3+p{margin-top:1rem}.prose a{color:var(--fg);text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-position:from-font;text-decoration-skip-ink:auto;transition:text-decoration-color .2s var(--ease-out);text-decoration-thickness:from-font}.prose a:hover{-webkit-text-decoration-color:var(--fg);text-decoration-color:var(--fg)}.prose strong{font-weight:var(--weight-semibold);color:var(--fg)}.prose em{font-style:italic}.prose ul,.prose ol{margin:1rem 0 0;padding-left:1.25rem}.prose li{margin-top:.5rem;line-height:1.625}.prose li::marker{color:var(--accent-text)}.prose blockquote{color:var(--fg);font-style:italic;font-size:var(--text-prose);font-weight:var(--weight-medium);letter-spacing:var(--tracking-tight);text-wrap:pretty;max-width:65ch;margin:2rem 0;padding:.25rem 0 .25rem 1.5rem;line-height:1.45;position:relative}.prose blockquote:before{content:"“";font-family:var(--font-sans), sans-serif;font-style:normal;font-size:var(--text-lg);color:var(--accent);line-height:1;font-weight:var(--weight-regular);position:absolute;top:.25rem;left:0}.prose pre{background:var(--surface);max-width:100%;font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-xs);line-height:var(--leading-normal);border-radius:.5rem;margin:1.5rem 0;padding:1rem;overflow-x:auto}.prose code{font-family:var(--font-mono), ui-monospace, monospace;font-size:var(--text-xs);background:var(--surface);border-radius:.25rem;padding:.125rem .375rem}.prose pre code{font-size:inherit;background:0 0;border-radius:0;padding:0}.prose img{max-width:100%;height:auto;box-shadow:inset 0 0 0 1px var(--image-outline);border-radius:.75rem;margin:1.5rem 0}.prose hr{border:none;border-top:1px solid var(--border);margin:2rem 0}.prose-callout{font-style:italic;font-size:var(--text-prose);line-height:var(--leading-snug);color:var(--fg);text-align:center;text-wrap:balance;max-width:38rem;margin:2.5rem auto;padding:1.5rem 0;position:relative}.prose-callout:before,.prose-callout:after{content:"";background:var(--accent);opacity:.7;width:2.5rem;height:1px;margin:0 auto 1.5rem;display:block}.prose-callout:after{margin:1.5rem auto 0}.prose-callout-rule{display:none}.prose-callout-content{max-width:44rem}.prose-callout p:last-child{margin-bottom:0}.article-page{background:var(--bg);flex-direction:column;width:100%;min-height:100dvh;display:flex}.article-page ::selection{background:oklch(from var(--accent) l c h / .22);color:var(--fg)}.article-page ::target-text{background:oklch(from var(--accent) l c h / .18)}.skip-to-article{min-height:44px;left:var(--page-gutter);z-index:20;background:var(--fg);color:var(--bg);font-size:var(--text-xs);letter-spacing:var(--tracking-tight);align-items:center;padding:.5rem .75rem;display:inline-flex;position:absolute;top:.75rem;transform:translateY(-200%)}.skip-to-article:focus{transform:translateY(0)}.article-page-header{align-items:center;width:100%;padding:1.5rem 1.5rem 0;display:flex}.page-back-rail{font-size:var(--text-xs);color:var(--fg-muted);line-height:1.25;display:none}.page-back-rail:hover{color:var(--fg)}@media (min-width:1280px){.article-page-header{display:none}.page-back-rail{z-index:2;width:fit-content;display:flex;position:fixed;top:4rem;left:2rem}}.article-page-body{width:100%;padding:4rem 1.5rem 5rem;display:block}.article-page-sidebar,.article-page-sidebar-inner{display:none}.article-prose-layout{margin-top:1rem}.article-prose-layout-after-intro{margin-top:4rem}@media (min-width:1280px){.article-page-sidebar{display:block}.article-prose-layout{grid-template-columns:0 minmax(0,1fr);width:100%;margin-left:0;display:grid}.article-page-sidebar-inner{--toc-gutter:var(--page-gutter);--toc-width:min(26rem, calc((100vw - 42rem) / 2 - var(--toc-gutter) - 1.5rem));width:var(--toc-width);margin-left:calc(-1 * (var(--toc-width) + var(--toc-gutter)));flex-direction:column;place-self:start;align-items:flex-end;padding:0;display:flex;position:sticky;top:4rem}}.article-page-main{max-width:42rem;margin-inline:auto}.article-page-content{width:100%;padding:0}.article-page-meta{font-size:var(--text-xs);font-weight:var(--weight-regular);letter-spacing:var(--tracking-ui);color:var(--fg-muted);flex-wrap:wrap;align-items:baseline;gap:.5rem;margin:.75rem 0 0;line-height:1.25;display:flex}.article-page-meta-secondary{font-size:var(--text-xs);font-weight:var(--weight-regular);color:var(--fg-muted);letter-spacing:0;text-transform:none;font-variant-numeric:tabular-nums;line-height:1.25}.article-page-meta-separator{font-size:var(--text-xs);color:var(--fg-muted);opacity:.5;line-height:1.25}.article-page-category{font-size:var(--text-xs);font-weight:var(--weight-regular);color:var(--fg-muted);letter-spacing:0;text-transform:none;line-height:1.25}.article-page-title{font-size:var(--text-sm);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight);line-height:var(--leading-ui);text-wrap:balance;overflow-wrap:break-word;font-optical-sizing:auto;color:var(--fg);margin:0}.article-page-description{font-size:var(--text-prose);font-weight:var(--weight-medium);color:var(--fg-secondary);letter-spacing:var(--tracking-tight);line-height:var(--leading-normal);text-wrap:pretty;max-width:none;margin:1.5rem 0 0}.article-page-figure{background:var(--surface);box-shadow:inset 0 0 0 1px var(--stroke);border-radius:.5rem;margin:1.5rem 0 0;overflow:hidden}.article-page-figure img{aspect-ratio:16/9;object-fit:cover;width:100%;height:auto;display:block}.article-page-figure figcaption{font-size:var(--text-xs);font-weight:var(--weight-regular);color:var(--fg-muted);letter-spacing:var(--tracking-tight);line-height:var(--leading-ui);margin:0;padding:.625rem .75rem}.article-page-content .prose{max-width:none;margin-top:0}.article-prose-intro,.article-prose-layout{animation:fadeInUp var(--duration-enter) var(--ease-out) both;animation-delay:.18s}.article-page-content .article-prose-intro{margin-top:2rem}.article-prose-intro>:first-child{margin-top:0}.article-page-footer{border-top:1px solid var(--border);margin-top:5rem;padding-top:2rem}.article-page-footer-nav{grid-template-columns:1fr 1fr;align-items:start;gap:1.5rem 2.5rem;display:grid}.article-page-footer-left,.article-page-footer-right{min-width:0}.article-page-footer-right{text-align:right}.article-page-nav-link{min-height:2.75rem;transition:color .2s var(--ease-out), opacity .2s var(--ease-out), scale .15s var(--ease-out);border-radius:0;flex-direction:column;gap:.5rem;padding:.75rem 0;display:flex}.article-page-nav-title{font-size:var(--text-sm);font-weight:var(--weight-medium);letter-spacing:var(--tracking-tight);text-wrap:balance;line-height:1.35}.article-page-nav-link-next{align-items:flex-end}.article-page-nav-link-next .article-page-nav-title{font-size:var(--text-sm)}.article-page-nav-link:hover{background:0 0}.article-page-nav-link:hover .article-page-nav-title{color:var(--accent-text)}@media (hover:hover) and (pointer:fine){.article-page-nav-link:hover{transform:none}}.article-page-nav-link:active{transform:scale(.99)}.article-page-nav-dir{font-size:var(--text-2xs);font-weight:var(--weight-regular);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--fg-muted);align-items:center;gap:.35rem;line-height:1;display:inline-flex}.article-page-nav-dir svg{width:.75rem;height:.75rem}.heading-link-root{scroll-margin-top:2rem;position:relative}.heading-link-btn{cursor:pointer;min-width:44px;min-height:44px;color:var(--fg-muted);opacity:0;pointer-events:none;transition:opacity .2s var(--ease-out), color .2s var(--ease-out);background:0 0;border:none;border-radius:.25rem;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;top:-.5rem;left:-2.75rem}.heading-link-root:hover .heading-link-btn,.heading-link-btn:focus-visible{opacity:1;pointer-events:auto}.heading-link-btn:hover{color:var(--accent-text)}.heading-link-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.heading-link-icon{display:block}.heading-link-tooltip{background:var(--fg);color:var(--bg);font-size:var(--text-2xs);font-weight:var(--weight-medium);white-space:nowrap;pointer-events:none;animation:tooltipPop .15s var(--ease-out) forwards;border-radius:.25rem;padding:.25rem .5rem;position:absolute;top:-1.75rem;left:50%;transform:translate(-50%)}.toc-root{width:100%;display:block;position:relative}.toc-hover-zone{border:0;justify-content:flex-end;width:44px;min-width:44px;min-height:44px;margin:0 0 0 auto;padding:0;display:flex;position:relative}.toc-trigger{z-index:4;width:44px;height:max(44px, calc((var(--toc-n,1) - 1) * .5rem + 14px));cursor:pointer;background:0 0;border:0;padding:0;position:absolute;top:0;left:auto;right:0}.toc-hover-zone.is-open .toc-trigger{pointer-events:none}.toc-panel{z-index:3;width:var(--toc-width,14rem);flex:0 0 var(--toc-width,14rem);font-size:var(--text-xs);white-space:nowrap;pointer-events:none;flex-direction:column;align-items:flex-end;line-height:1rem;transition:none;display:flex;position:relative}.toc-panel.is-shown{pointer-events:auto}.toc-link{width:fit-content;min-width:44px;max-width:100%;height:1.5rem;color:var(--fg-muted);font-weight:var(--weight-regular);letter-spacing:var(--tracking-ui);cursor:pointer;margin-left:auto;text-decoration:none;transition:color .18s;display:block;position:relative}.toc-label{text-overflow:ellipsis;pointer-events:none;opacity:0;text-align:right;width:100%;transition:opacity .14s ease, transform var(--toc-motion-duration) var(--toc-motion-ease);will-change:transform, opacity;display:block;overflow:hidden;transform:translate(6px)}.toc-line{z-index:1;pointer-events:none;opacity:.75;width:16px;height:1px;transform:translateY(calc(var(--toc-i,0) * -1rem));transition:opacity .12s ease, transform var(--toc-motion-duration) var(--toc-motion-ease);will-change:transform, opacity;background:currentColor;border-radius:1px;position:absolute;top:0;left:auto;right:0}.toc-link-active .toc-line{opacity:1;color:var(--fg)}.toc-panel.is-shown .toc-label{opacity:1;transition-delay:calc(var(--toc-stagger-delay) * var(--toc-i,0));transform:translate(0)}.toc-panel.is-shown .toc-line{opacity:0;transform:translateY(0)}.toc-link:hover,.toc-link:focus-visible,.toc-link-active{color:var(--fg)}.toc-link:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media (prefers-reduced-motion:reduce){.toc-panel,.toc-panel.is-shown,.toc-label,.toc-panel.is-shown .toc-label,.toc-line{transition:none}}@media (max-width:1279px) and (min-width:601px){.article-page-content{max-width:42rem;margin-inline:auto}}@media (max-width:600px){.article-page-body{padding:2.5rem 1.5rem 4rem}.article-page-footer-nav{grid-template-columns:1fr;gap:1.25rem}.article-page-footer-right{text-align:left}.heading-link-btn{left:auto;right:-.75rem}}@media (prefers-reduced-motion:reduce){.article-prose-intro,.article-prose-layout{animation-name:fadeIn;animation-delay:0s;transform:none}.article-page-nav-link:hover{transform:none}}.article-page-nav-link:focus-visible{outline:2px solid var(--accent);outline-offset:4px;background:0 0}.case-page-nav-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
