:root,[data-theme=teal]{--ebg:#ffffff;--sbg:#f5faf8;--abg:#eaf3ef;--tbg:#eef4f2;--txt:#16211e;--mut:#54655f;--acc:#0e6e59;--bd:#dce9e5;--sel:#e1f1ec;--stbg:#0e6e59;--sttx:#ffffff;--tabin:#f5faf8}[data-theme=one-dark-pro]{--ebg:#282c34;--sbg:#21252b;--abg:#1e2227;--tbg:#1e2227;--txt:#abb2bf;--mut:#5c6370;--acc:#61afef;--bd:#181a1f;--sel:#2c313a;--stbg:#21252b;--sttx:#9da5b4;--tabin:#21252b}[data-theme=dark-plus]{--ebg:#1e1e1e;--sbg:#252526;--abg:#333333;--tbg:#3c3c3c;--txt:#d4d4d4;--mut:#858585;--acc:#007acc;--bd:#454545;--sel:#37373d;--stbg:#007acc;--sttx:#ffffff;--tabin:#2d2d2d}[data-theme=dracula]{--ebg:#282a36;--sbg:#21222c;--abg:#343746;--tbg:#191a21;--txt:#f8f8f2;--mut:#6272a4;--acc:#bd93f9;--bd:#191a21;--sel:#44475a;--stbg:#191a21;--sttx:#f8f8f2;--tabin:#21222c}[data-theme=light-plus]{--ebg:#ffffff;--sbg:#f3f3f3;--abg:#ebebeb;--tbg:#dddddd;--txt:#1f2328;--mut:#6e7781;--acc:#005fb8;--bd:#d4d4d4;--sel:#e4e6f1;--stbg:#007acc;--sttx:#ffffff;--tabin:#ececec}[data-theme=cool-solution]{--ebg:#001e2b;--sbg:#112733;--abg:#1c2d38;--tbg:#112733;--txt:#e8edeb;--mut:#889397;--acc:#00ed64;--bd:#3d4f58;--sel:#023430;--stbg:#00ed64;--sttx:#001e2b;--tabin:#112733}[data-theme=navy]{--ebg:#fbfaf6;--sbg:#f4f1ea;--abg:#ede7da;--tbg:#f0ebe1;--txt:#1b2430;--mut:#5a6675;--acc:#b8821f;--bd:#e4e0d6;--sel:#e7ecf3;--stbg:#12325b;--sttx:#eaf0f8;--tabin:#f4f1ea}[data-theme=graphite]{--ebg:#fcfbf9;--sbg:#f1f0ec;--abg:#e9e7e1;--tbg:#edebe4;--txt:#26292f;--mut:#5a5d63;--acc:#8e2c3b;--bd:#e4e2db;--sel:#f3e4e7;--stbg:#22262c;--sttx:#d9dbdf;--tabin:#f1f0ec}[data-theme=violet]{--ebg:#fafaff;--sbg:#f3f4fc;--abg:#eceefa;--tbg:#eef0fa;--txt:#303256;--mut:#5c617e;--acc:#4f46e5;--bd:#e7e9f6;--sel:#eef0fe;--stbg:#4f46e5;--sttx:#ffffff;--tabin:#f3f4fc}[data-theme=notte]{--ebg:#0b1220;--sbg:#0e172b;--abg:#121d36;--tbg:#0e172b;--txt:#e6ebf4;--mut:#7c8ca6;--acc:#38bdf8;--bd:#22314f;--sel:#12314a;--stbg:#38bdf8;--sttx:#06283c;--tabin:#0e172b}:root{--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,Roboto,sans-serif;--font-mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;--prose-width:72ch;color-scheme:dark}[data-theme=graphite],[data-theme=light-plus],[data-theme=navy],[data-theme=teal],[data-theme=violet]{color-scheme:light}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--ebg);color:var(--txt);font-family:var(--font-sans);font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased}a{color:var(--acc);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--acc);outline-offset:1px}::selection{background:var(--sel)}.editor-shell{display:grid;min-height:100dvh;grid-template-rows:auto 1fr auto;grid-template-columns:minmax(0,1fr)}.editor-body{display:grid;grid-template-columns:48px var(--sidebar-w,300px) auto minmax(0,1fr);min-height:0}.sidebar-resizer{display:flex;align-items:flex-start;justify-content:center;width:6px;margin:0 -3px;z-index:5;cursor:col-resize;background:transparent;touch-action:none;transition:background .1s ease .15s}.sidebar-resizer:focus-visible,.sidebar-resizer:hover,html.sidebar-resizing .sidebar-resizer{background:var(--acc)}.sidebar-resizer .resizer-grip{position:-webkit-sticky;position:sticky;top:16px}.resizer-grip{display:flex;align-items:center;justify-content:center;flex:none;width:15px;height:26px;border-radius:4px;color:var(--txt);opacity:1;background:color-mix(in srgb,var(--mut) 30%,transparent);pointer-events:none;transition:color .12s ease,background .12s ease,opacity .12s ease}.resizer-grip svg{width:13px;height:13px}.outline-resizer:focus-visible .resizer-grip,.outline-resizer:hover .resizer-grip,.sidebar-resizer:focus-visible .resizer-grip,.sidebar-resizer:hover .resizer-grip,html.outline-resizing .outline-resizer .resizer-grip,html.sidebar-resizing .sidebar-resizer .resizer-grip{background:var(--acc);color:var(--ebg);opacity:1}@media (prefers-reduced-motion:reduce){.resizer-grip{transition:none}}html.outline-resizing,html.outline-resizing *,html.sidebar-resizing,html.sidebar-resizing *{cursor:col-resize!important;-webkit-user-select:none;-moz-user-select:none;user-select:none}.editor-main{background:var(--ebg);min-width:0;display:flex;flex-direction:column}.editor-content{padding:1.25rem 2rem 3rem;max-width:calc(var(--prose-width) + 4rem);overflow-wrap:break-word}.titlebar{display:flex;align-items:center;gap:12px;background:var(--tbg);border-bottom:1px solid var(--bd);padding:6px 12px;font-family:var(--font-mono);font-size:12px}.titlebar .dots{display:inline-flex;gap:7px}.titlebar .dot{width:12px;height:12px;border-radius:50%}.titlebar .title{flex:1 1;text-align:center;color:var(--mut);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.langswitch select,.themeselect{background:var(--sbg);color:var(--txt);border:1px solid var(--bd);border-radius:4px;font-family:var(--font-mono);font-size:12px;padding:3px 6px}.activitybar{background:var(--abg);display:flex;flex-direction:column;align-items:stretch;padding:8px 0;gap:4px}.activitybar a{display:flex;justify-content:center;padding:10px 0;color:var(--mut);border-left:2px solid transparent}.activitybar a:hover{color:var(--txt);text-decoration:none}.activitybar a[aria-current=page],.activitybar a[aria-current=true]{color:var(--txt);border-left-color:var(--acc)}.activitybar svg{width:22px;height:22px}.sidebar{background:var(--sbg);border-right:1px solid var(--bd);font-family:var(--font-mono);font-size:12.5px;padding:8px 0 0;overflow-x:clip;display:flex;flex-direction:column}.sidebar .sidebar-title{padding:4px 14px 8px;letter-spacing:.08em;color:var(--mut);font-size:11px;text-transform:uppercase}.sidebar details{margin:0}.sidebar summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:5px;padding:3px 10px;color:var(--txt);-webkit-user-select:none;-moz-user-select:none;user-select:none}.sidebar summary::-webkit-details-marker{display:none}.sidebar summary .chev{transition:transform .12s ease}.sidebar details[open]>summary .chev{transform:rotate(90deg)}.sidebar .tree-file{display:flex;align-items:center;gap:6px;padding:6px 10px 6px 30px;font-size:13.5px;line-height:1.5;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar .tree-file:hover{text-decoration:none}.sidebar .tree-file:hover,.sidebar .tree-file[aria-current=page]{background:var(--sel);color:var(--txt)}.sidebar .tree-label{min-width:0;overflow:hidden;text-overflow:ellipsis}.sidebar svg{width:14px;height:14px;flex:none}.sidebar-newsletter{margin-top:auto;position:-webkit-sticky;position:sticky;bottom:0;background:var(--sbg);border-top:1px solid var(--bd);padding:10px 12px 12px;display:flex;flex-direction:column;gap:6px}.sidebar-newsletter .nl-title{letter-spacing:.08em;color:var(--mut);font-size:11px;text-transform:uppercase}.sidebar-newsletter .nl-blurb,.sidebar-newsletter .nl-note{margin:0;font-size:11px;line-height:1.5;color:var(--mut)}.sidebar-newsletter .nl-err,.sidebar-newsletter .nl-ok{margin:0;font-size:11px;line-height:1.5;color:var(--txt)}.sidebar-newsletter .nl-form{display:flex;flex-direction:column;gap:6px}.sidebar-newsletter .nl-input{min-width:0;background:var(--ebg);border:1px solid var(--bd);border-radius:4px;padding:5px 8px;color:var(--txt);font-family:var(--font-mono);font-size:12px}.sidebar-newsletter .nl-input::placeholder{color:var(--mut)}.sidebar-newsletter .nl-input:focus-visible{outline:none;border-color:var(--acc)}.sidebar-newsletter .nl-btn{background:var(--acc);border:1px solid var(--acc);border-radius:4px;padding:5px 8px;color:var(--ebg);cursor:pointer;font-family:var(--font-mono);font-size:12px;font-weight:600}.sidebar-newsletter .nl-btn:hover{filter:brightness(1.1)}.sidebar-newsletter .nl-btn:disabled{opacity:.6;cursor:wait}.sidebar-newsletter .nl-contact-btn{background:transparent;border:1px solid var(--bd);border-radius:4px;padding:5px 8px;color:var(--txt);cursor:pointer;font-family:var(--font-mono);font-size:12px;font-weight:600}.sidebar-newsletter .nl-contact-btn:hover{border-color:var(--acc);color:var(--acc)}.sidebar-newsletter .nl-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.tabbar{display:flex;background:var(--sbg);border-bottom:1px solid var(--bd);font-family:var(--font-mono);font-size:12.5px;overflow-x:auto}.tab{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;color:var(--mut);background:var(--tabin);border-right:1px solid var(--bd);white-space:nowrap}.tab:hover{text-decoration:none;color:var(--txt)}.tab.active{background:var(--ebg);color:var(--txt);box-shadow:inset 0 1.5px 0 var(--acc)}.tab svg{width:13px;height:13px}.tab-label{display:inline-flex;align-items:center;gap:7px;color:inherit}.tab-label:hover{text-decoration:none}.tab-close{display:inline-flex;align-items:center;padding:2px;margin-right:-5px;border-radius:4px;color:inherit;opacity:.7}.tab-close:hover{opacity:1;background:var(--sel);text-decoration:none}.tab-close:focus-visible{opacity:1;background:var(--sel)}.breadcrumb{gap:6px;padding:5px 2rem;color:var(--mut)}.breadcrumb,.statusbar{display:flex;align-items:center;font-family:var(--font-mono);font-size:11.5px}.statusbar{justify-content:space-between;gap:12px;background:var(--stbg);color:var(--sttx);padding:3px 12px}.statusbar .group{gap:14px}.statusbar .group,.statusbar .item{display:inline-flex;align-items:center}.statusbar .item{gap:5px}.statusbar svg{width:13px;height:13px}.editor-content h1{font-size:clamp(1.45rem,4.5vw,1.7rem);line-height:1.25;margin:.5rem 0 .6rem;color:var(--txt)}.editor-content h2{font-size:1.25rem;margin:2rem 0 .6rem;color:var(--txt)}.editor-content h3{font-size:1.05rem;margin:1.4rem 0 .4rem}.editor-content p{margin:.7rem 0}.editor-content ul{padding-left:1.3rem}.editor-content li{margin:.3rem 0}.meta-line{font-family:var(--font-mono);font-size:12px;color:var(--mut);display:flex;flex-wrap:wrap;gap:10px;align-items:center}.meta-line .topic{color:var(--acc)}.editor-body.no-tabs .editor-content{flex:1 1;max-width:none;display:flex;align-items:center;justify-content:center}.editor-watermark{display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--mut);font-family:var(--font-mono);text-align:center}.editor-watermark h1{font-size:1.05rem;font-weight:400;letter-spacing:.05em;color:var(--mut);margin:0 0 14px}.watermark-rows{display:flex;flex-direction:column;align-items:center;gap:9px}.watermark-row{display:inline-flex;align-items:center;gap:8px;color:var(--mut);font-size:13px}a.watermark-row:focus-visible,a.watermark-row:hover{color:var(--txt);text-decoration:none}.editor-watermark svg{width:14px;height:14px;flex:none}.editor-watermark kbd{background:var(--sel);border:1px solid var(--bd);border-radius:4px;padding:1px 6px;font-size:11px;font-family:inherit}@media (max-width:860px){.editor-body{display:flex;flex-direction:column}.editor-main{flex:1 1}.activitybar{flex-direction:row;justify-content:space-around;order:2;position:-webkit-sticky;position:sticky;bottom:0;z-index:30;padding:0 0 env(safe-area-inset-bottom);border-top:1px solid var(--bd)}.activitybar a{border-left:none;border-top:2px solid transparent;padding:12px 14px}.activitybar a[aria-current=page],.activitybar a[aria-current=true]{border-top-color:var(--acc)}.sidebar,.sidebar-resizer{display:none}.editor-content{padding:1rem 1.1rem 2.5rem}.breadcrumb{padding:5px 1.1rem;flex-wrap:wrap}.titlebar{gap:10px}.statusbar{font-size:11px;gap:8px}.statusbar .group{gap:10px}.statusbar .item-theme{display:none}.tab{padding:10px 14px}.tab-close{padding:10px;margin:-8px -13px -8px -8px}span.watermark-row{display:none}.watermark-row{padding:12px 8px}.watermark-rows{gap:0}.file-row{flex-wrap:wrap}.file-row .file-title{flex:1 1}.file-row .file-meta{order:3;flex-basis:100%;margin-left:24px}.repo-card-head{flex-wrap:wrap}.palette-input input,.themeselect:focus{font-size:16px}}@media (max-width:480px){.titlebar .title{display:none}.titlebar .themeselect{margin-left:auto}.themeselect{padding:3px 4px}.titlebar .lang-switcher a{padding:3px 7px}}:root{--brand-green:var(--acc);--brand-green-dark:var(--acc);--brand-green-light:var(--sel);--brand-green-pastel:var(--sel);--accent-1:var(--acc);--accent-1-dark:var(--acc);--accent-2:var(--acc);--accent-3:var(--mut);--bg-primary:var(--ebg);--bg-elevated:var(--sbg);--bg-section-alt:var(--sbg);--bg-section-soft:var(--sbg);--text-primary:var(--txt);--text-muted:var(--mut);--text-soft:var(--txt);--border-soft:var(--bd);--border-mid:var(--bd);--brand-linkedin:#0a66c2;--brand-stackoverflow:#f48024}.codeblock{margin:1.2rem 0}.codeblock-header{display:flex;align-items:center;gap:10px;background:var(--sbg);border:1px solid var(--bd);border-bottom:none;border-radius:8px 8px 0 0;padding:7px 12px;font-family:var(--font-mono);font-size:12px;color:var(--mut)}.codeblock-dots{display:inline-flex;gap:6px}.codeblock-dots span{width:10px;height:10px;border-radius:50%;display:inline-block}.codeblock-dots span:first-child{background:#ff5f57}.codeblock-dots span:nth-child(2){background:#febc2e}.codeblock-dots span:nth-child(3){background:#28c840}.codeblock-title{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.codeblock-header button{background:transparent;color:var(--mut);border:1px solid var(--bd);border-radius:4px;font-family:var(--font-mono);font-size:11.5px;padding:3px 10px;cursor:pointer}.codeblock-header button:hover{color:var(--txt);border-color:var(--acc)}.codeblock-body .shiki,.codeblock-plain{margin:0;padding:13px 15px;border:1px solid var(--bd);border-radius:0 0 8px 8px;overflow-x:auto;font-family:var(--font-mono);font-size:13px;line-height:1.65}.codeblock-plain{background:var(--sbg);color:var(--txt);white-space:pre}[data-theme=one-dark-pro] .shiki,[data-theme=one-dark-pro] .shiki span{color:var(--shiki-one-dark-pro);background-color:var(--shiki-one-dark-pro-bg)}[data-theme=dark-plus] .shiki,[data-theme=dark-plus] .shiki span{color:var(--shiki-dark-plus);background-color:var(--shiki-dark-plus-bg)}[data-theme=dracula] .shiki,[data-theme=dracula] .shiki span{color:var(--shiki-dracula);background-color:var(--shiki-dracula-bg)}[data-theme=light-plus] .shiki,[data-theme=light-plus] .shiki span{color:var(--shiki-light-plus);background-color:var(--shiki-light-plus-bg)}[data-theme=cool-solution] .shiki,[data-theme=cool-solution] .shiki span{color:var(--shiki-cool-solution);background-color:var(--shiki-cool-solution-bg)}[data-theme=navy] .shiki,[data-theme=navy] .shiki span{color:var(--shiki-navy);background-color:var(--shiki-navy-bg)}[data-theme=teal] .shiki,[data-theme=teal] .shiki span{color:var(--shiki-teal);background-color:var(--shiki-teal-bg)}[data-theme=graphite] .shiki,[data-theme=graphite] .shiki span{color:var(--shiki-graphite);background-color:var(--shiki-graphite-bg)}[data-theme=violet] .shiki,[data-theme=violet] .shiki span{color:var(--shiki-violet);background-color:var(--shiki-violet-bg)}[data-theme=notte] .shiki,[data-theme=notte] .shiki span{color:var(--shiki-notte);background-color:var(--shiki-notte-bg)}.shiki span{background-color:transparent!important}.blog-chart{margin:1.4rem 0}.blog-chart-title{font-family:var(--font-mono);font-size:12.5px;color:var(--mut);margin-bottom:8px}.blog-chart-caption{font-size:13.5px;color:var(--mut);margin:8px 0 0}.blog-chart-caption a{color:var(--acc);font-weight:600}.blog-chart svg,.blog-hero svg,.favorite-cover{max-width:100%;height:auto}.favorite-cover{display:block;border-radius:16px;border:1px solid var(--bd)}.blog-compare{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:12px;gap:12px}.blog-compare-col{border:1px solid var(--bd);border-radius:8px;padding:12px 14px;background:var(--sbg)}.blog-donut-legend{display:flex;flex-direction:column;gap:6px}.blog-timeline{display:grid;grid-gap:10px;gap:10px}.blog-timeline-step{border-left:2px solid var(--acc);padding-left:12px}.blog-article-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-family:var(--font-mono);font-size:12px;color:var(--mut);margin:4px 0 10px}.blog-pill{border:1px solid var(--bd);background:var(--sel);color:var(--acc);border-radius:10px;padding:2px 10px}.blog-dot{opacity:.7}.blog-article-tech,.blog-card-tech{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:6px 0 4px}.blog-article-tech a,.blog-article-tech span,.blog-card-tech img{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-family:var(--font-mono);color:var(--mut)}.blog-article-tech img,.blog-card-tech img{width:18px;height:18px}.blog-article-tech-label,.blog-card-tech-more{color:var(--mut);font-size:12px}.blog-bullets li{margin:.35rem 0}.blog-faq{border:1px solid var(--bd);border-radius:8px;background:var(--sbg);margin:.6rem 0;padding:0}.blog-faq summary{cursor:pointer;padding:10px 14px;font-weight:600;color:var(--txt)}.blog-faq p{padding:0 14px 12px;margin:0}.blog-related-list{list-style:none;padding:0;display:grid;grid-gap:10px;gap:10px}.blog-related-list a{display:block;border:1px solid var(--bd);border-radius:8px;background:var(--sbg);padding:10px 14px}.blog-related-list a:hover{border-color:var(--acc);text-decoration:none}.blog-related-list strong{color:var(--acc);display:block}.blog-related-list span{color:var(--mut);font-size:13.5px}.actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:.8rem}.cta{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:13px;border-radius:6px;padding:8px 16px;cursor:pointer;border:1px solid var(--bd);background:transparent;color:var(--txt)}.cta.primary{background:var(--acc);border-color:var(--acc);color:var(--ebg)}.cta.primary:hover{filter:brightness(1.1)}.cta.secondary:hover{border-color:var(--acc);text-decoration:none}.file-row{display:flex;align-items:center;gap:9px;padding:6px 10px;border-radius:6px;font-family:var(--font-mono);font-size:13px;color:var(--txt)}.file-row:hover{background:var(--sel);text-decoration:none}.file-row svg{width:15px;height:15px;color:var(--mut);flex:none}.file-row .file-meta{margin-left:auto;color:var(--mut);font-size:11.5px;white-space:nowrap}.lang-switcher{display:inline-flex;border:1px solid var(--bd);border-radius:4px;overflow:hidden}.lang-switcher a{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;font-size:11.5px;color:var(--mut)}.lang-switcher a:hover{text-decoration:none;color:var(--txt)}.lang-switcher a.lang-active{background:var(--acc);color:var(--ebg)}.lang-switcher .lang-flag svg{width:14px;height:10px}.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;z-index:60;padding:16px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .18s ease,visibility 0s linear .18s}.modal-backdrop.open{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .18s ease}.modal{position:relative;background:var(--sbg);color:var(--txt);border:1px solid var(--bd);border-radius:10px;max-width:460px;width:100%;padding:20px 22px;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);overflow-y:auto;transform:translateY(10px);transition:transform .18s ease}.modal-backdrop.open .modal{transform:none}.modal h3{margin:0 0 6px;padding-right:30px}.modal-actions{display:flex;flex-direction:column;gap:10px;margin-top:14px}.modal-btn{display:flex;align-items:center;justify-content:center;gap:8px;border-radius:6px;border:1px solid var(--bd);background:var(--ebg);color:var(--txt);font-size:14px;padding:10px 14px;cursor:pointer}.modal-btn:hover{border-color:var(--acc)}.modal-btn svg{width:16px;height:16px;flex:none}.modal-close{position:absolute;top:10px;right:10px;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border-radius:6px;background:transparent;border:none;color:var(--mut);cursor:pointer}.modal-close svg{width:16px;height:16px}.modal-close:after{content:"";position:absolute;inset:-6px}.modal-close:hover{color:var(--txt);background:var(--ebg)}.modal-email-fallback,.modal-email-status{font-size:12.5px;color:var(--mut)}body.modal-open{overflow:hidden}.home-prompt{color:var(--acc)}.blog-index-lead,.home-lead{color:var(--txt);font-size:17px;max-width:62ch}.home-lead-links{display:flex;flex-wrap:wrap;gap:10px;margin:1rem 0 .4rem}.home-lead-links .cta svg{width:15px;height:15px}.topic-heading{font-family:var(--font-mono);color:var(--acc);font-size:1rem;letter-spacing:.03em}.file-title{display:flex;flex-direction:column;min-width:0;line-height:1.35}.file-title .file-subtitle{color:var(--mut);font-family:var(--font-sans);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-row{margin:4px 0}.chapter{border:1px solid var(--bd);border-radius:10px;background:var(--sbg);padding:14px 18px;margin:1rem 0}.chapter-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px}.chapter-head h3{margin:0}.chapter-icons{display:inline-flex;gap:6px;align-items:center}.chapter-icons img{width:20px;height:20px}.about-page .intro{font-size:17px}.stackgroups{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:12px;gap:12px}.stackgroup{border:1px solid var(--bd);border-radius:10px;background:var(--sbg);padding:12px 14px}.stackgroup-label{font-family:var(--font-mono);font-size:12px;color:var(--mut);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}.techstack{display:flex;flex-wrap:wrap;gap:8px}.techstack li,.techstack span{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-family:var(--font-mono);color:var(--txt);border:1px solid var(--bd);border-radius:6px;padding:3px 8px;list-style:none}.techstack img{width:16px;height:16px}[data-theme=graphite] img[src^="/icons/"][src*=__FFFFFF],[data-theme=light-plus] img[src^="/icons/"][src*=__FFFFFF],[data-theme=navy] img[src^="/icons/"][src*=__FFFFFF],[data-theme=teal] img[src^="/icons/"][src*=__FFFFFF],[data-theme=violet] img[src^="/icons/"][src*=__FFFFFF]{filter:invert(1)}.contact-email-note{font-family:var(--font-mono);color:var(--mut)}.modal-btn.linkedin:hover{border-color:var(--acc)}.repo-card{border:1px solid var(--bd);border-radius:10px;background:var(--sbg);padding:14px 18px;margin:1rem 0}.repo-card-featured{border-color:var(--acc)}.repo-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;font-family:var(--font-mono);font-size:15px}.repo-stars{display:inline-flex;align-items:center;gap:5px;color:var(--mut);font-size:12.5px}.repo-stars svg{width:14px;height:14px}.repo-summary{margin:8px 0 4px}.repo-why{color:var(--txt);margin:4px 0 8px}.repo-tech{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 8px;font-family:var(--font-mono);font-size:12px}.repo-tech strong{color:var(--mut);font-weight:600}.repo-tech-pill{display:inline-flex;align-items:center;gap:6px;padding:2px 7px;border:1px solid var(--bd);border-radius:4px;background:var(--ebg);color:var(--txt)}.repo-tech-pill img{width:14px;height:14px}.repo-tech-pill-link:hover{text-decoration:none;border-color:var(--acc)}.repo-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-family:var(--font-mono);font-size:12px;color:var(--mut);margin:0}.palette-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:80;display:flex;justify-content:center;align-items:flex-start;padding:10vh 16px 16px}.palette{width:100%;max-width:560px;background:var(--sbg);border:1px solid var(--bd);border-radius:8px;overflow:hidden}.palette-input{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--bd)}.palette-input svg{width:15px;height:15px;color:var(--mut);flex:none}.palette-input input{flex:1 1;background:transparent;border:none;outline:none;color:var(--txt);font-family:var(--font-mono);font-size:13.5px}.palette-input kbd{font-family:var(--font-mono);font-size:10.5px;color:var(--mut);border:1px solid var(--bd);border-radius:4px;padding:1px 5px}.palette-results{list-style:none;margin:0;padding:6px;max-height:320px;overflow-y:auto}.palette-item{display:flex;align-items:center;gap:8px;width:100%;background:transparent;border:none;border-radius:5px;padding:7px 8px;cursor:pointer;color:var(--txt);font-family:var(--font-mono);font-size:12.5px;text-align:left}.palette-item.active{background:var(--sel)}.palette-item svg{width:14px;height:14px;color:var(--mut);flex:none}.palette-file,.palette-title{white-space:nowrap}.palette-title{color:var(--mut);font-family:var(--font-sans);overflow:hidden;text-overflow:ellipsis;flex:1 1}.palette-topic{color:var(--acc);font-size:11.5px}.palette-empty{color:var(--mut);text-align:center;padding:14px;font-family:var(--font-mono)}.article-layout{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:24px;gap:24px}.outline,.outline-resizer{display:none}@media (min-width:1180px){.article-layout{grid-template-columns:minmax(0,1fr) auto var(--outline-w,150px);column-gap:12px}.editor-content:has(.article-layout){max-width:calc(var(--prose-width) + var(--outline-w, 150px) + 13rem)}.outline-resizer{display:flex;align-items:flex-start;justify-content:center;position:relative;width:6px;margin:0 -3px;z-index:5;cursor:col-resize;background:transparent;touch-action:none;transition:background .1s ease .15s}.outline-resizer:before{content:"";position:absolute;top:0;bottom:0;left:-8px;right:-8px}.outline-resizer:focus-visible,.outline-resizer:hover,html.outline-resizing .outline-resizer{background:var(--acc)}.outline,.outline-resizer .resizer-grip{position:-webkit-sticky;position:sticky;top:16px}.outline{display:block;align-self:start;font-size:12px;padding-top:1.4rem}.outline-title{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mut);margin-bottom:6px}.outline-item{display:block;color:var(--mut);padding:6px 0 6px 10px;border-left:1px solid var(--bd);line-height:1.4}.outline-item:hover{color:var(--acc);border-left-color:var(--acc);text-decoration:none}}.activitybar button{display:flex;justify-content:center;padding:10px 0;color:var(--mut);background:none;border:none;border-left:2px solid transparent;cursor:pointer}.activitybar button:hover{color:var(--txt)}.activitybar button[aria-pressed=true]{color:var(--txt);border-left-color:var(--acc)}.search-panel{background:var(--sbg);border-right:1px solid var(--bd);font-family:var(--font-mono);font-size:12.5px;padding:8px 0 16px;overflow-x:hidden;min-width:0}.search-head{display:flex;align-items:center;justify-content:space-between;padding:4px 12px 8px;color:var(--mut);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.search-close{display:inline-flex;background:none;border:none;color:var(--mut);cursor:pointer;padding:2px}.search-close:hover{color:var(--txt)}.search-close svg{width:14px;height:14px}.search-input{display:flex;align-items:center;gap:6px;margin:0 12px 10px;padding:4px 8px;background:var(--ebg);border:1px solid var(--bd);border-radius:4px}.search-input svg{width:14px;height:14px;color:var(--mut);flex:none}.search-input input{flex:1 1;min-width:0;background:none;border:none;outline:none;color:var(--txt);font-family:var(--font-mono);font-size:12.5px}.search-input input::placeholder{color:var(--mut)}.search-input:focus-within{border-color:var(--acc)}.search-note,.search-summary{padding:2px 12px;color:var(--mut)}.search-retry{background:none;border:none;color:var(--acc);cursor:pointer;font:inherit;padding:0;text-decoration:underline}.search-group summary{display:flex;align-items:center;gap:6px;padding:3px 12px;cursor:pointer;list-style:none;color:var(--txt);white-space:nowrap}.search-group summary::-webkit-details-marker{display:none}.search-group summary .chev{display:inline-flex;transition:transform .12s}.search-group summary .chev svg{width:12px;height:12px}.search-group[open]>summary .chev{transform:rotate(90deg)}.search-group summary>svg{width:14px;height:14px;flex:none;color:var(--mut)}.search-group-name{overflow:hidden;text-overflow:ellipsis}.search-group-topic{color:var(--mut)}.search-group-count{margin-left:auto;background:var(--sel);color:var(--txt);border-radius:8px;padding:0 6px;font-size:10.5px}.search-line{display:flex;align-items:center;gap:6px;padding:2px 12px 2px 30px;color:var(--mut);white-space:nowrap;overflow:hidden}.search-line:hover{background:var(--sel);color:var(--txt);text-decoration:none}.search-line-text{overflow:hidden;text-overflow:ellipsis}.search-line svg{width:12px;height:12px;flex:none}.search-line mark{background:var(--sel);color:var(--txt);border-radius:2px;padding:0 1px}@media (max-width:860px){.search-panel{position:fixed;inset:0;z-index:20;border-right:none;padding:10px 0 calc(64px + env(safe-area-inset-bottom));overflow-y:auto}.activitybar button{border-left:none;border-top:2px solid transparent;padding:12px 14px}.activitybar button[aria-pressed=true]{border-top-color:var(--acc)}.search-input input{font-size:16px}.search-group summary,.search-line{padding-top:9px;padding-bottom:9px}.search-close{padding:10px}}.driver-popover.tour-popover{background-color:var(--sbg);color:var(--txt);border:1px solid var(--bd);border-radius:6px}.driver-popover.tour-popover *{font-family:var(--font-sans)}.tour-popover .driver-popover-title{font-family:var(--font-mono);font-size:13px;color:var(--acc)}.tour-popover .driver-popover-description{color:var(--txt);font-size:13.5px;line-height:1.55}.tour-popover .driver-popover-progress-text{color:var(--mut);font-family:var(--font-mono);font-size:11px}.tour-popover .driver-popover-footer-btn{background-color:var(--sel);color:var(--txt);border:1px solid var(--bd);border-radius:4px;font-family:var(--font-mono);font-size:12px;padding:4px 10px}.tour-popover .driver-popover-footer-btn:focus,.tour-popover .driver-popover-footer-btn:hover{background-color:var(--sel);border-color:var(--acc);color:var(--acc)}.tour-popover .driver-popover-close-btn{color:var(--mut)}.tour-popover .driver-popover-close-btn:focus,.tour-popover .driver-popover-close-btn:hover{color:var(--txt)}.tour-popover .driver-popover-close-btn:focus-visible,.tour-popover .driver-popover-footer-btn:focus-visible{outline:2px solid var(--acc);outline-offset:1px}.tour-popover .driver-popover-arrow-side-top{border-top-color:var(--sbg)}.tour-popover .driver-popover-arrow-side-bottom{border-bottom-color:var(--sbg)}.tour-popover .driver-popover-arrow-side-left{border-left-color:var(--sbg)}.tour-popover .driver-popover-arrow-side-right{border-right-color:var(--sbg)}.sidebar-about{border-top:1px solid var(--bd)}.sidebar-about>summary svg{width:15px;height:15px;flex:none}.sidebar-about-body{padding:2px 12px 12px;max-height:min(48vh,calc(100vh - 32rem));overflow-y:auto}.sidebar-about-body .intro{font-size:12.5px;line-height:1.55}.sidebar-about-body p{margin:.5rem 0;font-size:12px;line-height:1.55;color:var(--mut)}.sidebar-about-body .chapter{padding:8px 10px;margin:8px 0;border-radius:8px}.sidebar-about-body .chapter-head{gap:6px;margin-bottom:2px}.sidebar-about-body .chapter-head h3{font-size:12px}.sidebar-about-body .chapter-icons img{width:15px;height:15px}.sidebar-about-readfull{display:inline-block;margin-top:8px;font-size:12px;color:var(--acc)}.social-links{list-style:none;margin:0;padding:0;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.social-links a{display:inline-flex;align-items:center;gap:6px;color:inherit;text-decoration:none}.social-links a:hover{color:var(--acc)}.social-links svg{width:15px;height:15px;flex:none}.social-links .social-linkedin svg{color:var(--brand-linkedin)}.social-links .social-stackoverflow svg{color:var(--brand-stackoverflow)}.social-links-row{margin-top:10px;gap:16px}.social-links-row a{font-size:12px;color:var(--mut)}.social-links-page{margin:0 0 20px;gap:16px}.social-links-page a{font-size:13px;color:var(--mut)}.site-footer{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:14px;background:var(--sbg);color:var(--mut);border-top:1px solid var(--bd);padding:8px 12px;font-size:12px}.site-footer-prompt{font-family:var(--font-mono)}.site-footer .social-links a{color:var(--txt)}.site-footer .social-links a:hover{color:var(--acc)}.modal-btn.stackoverflow:hover{border-color:var(--acc)}