.kb-page{overflow:clip}.kb-hero{padding:42px 0 64px;border-bottom:1px solid var(--faint)}.kb-breadcrumbs{display:flex;gap:9px;align-items:center;color:var(--ink-4);font-size:12px}.kb-breadcrumbs a:hover{color:var(--accent-ink)}.kb-hero-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,.75fr);gap:clamp(48px,8vw,110px);align-items:end;margin-top:64px}.kb-hero-copy h1{max-width:850px;margin-top:24px;font-family:var(--display);font-size:clamp(50px,6.3vw,88px);line-height:.97;letter-spacing:-.045em}.kb-hero-copy h1 span{color:var(--ink)}.kb-deck{max-width:700px;margin-top:28px;color:var(--ink-2);font-family:var(--book);font-size:21px;line-height:1.45;letter-spacing:0}.kb-byline{display:flex;flex-wrap:wrap;gap:9px;margin-top:24px;color:var(--ink-4);font-family:var(--sans);font-size:13px;letter-spacing:-.01em}.kb-thesis{position:relative;padding:30px;border:1px solid var(--faint);background:var(--paper)}.kb-thesis:before,.kb-thesis:after{content:"";position:absolute;z-index:1;left:-1px;right:-1px;height:10px;pointer-events:none}.kb-thesis:before{top:-1px;background:linear-gradient(var(--ink),var(--ink)) left top / 10px 1.5px no-repeat,linear-gradient(var(--ink),var(--ink)) left top / 1.5px 10px no-repeat,linear-gradient(var(--ink),var(--ink)) right top / 10px 1.5px no-repeat,linear-gradient(var(--ink),var(--ink)) right top / 1.5px 10px no-repeat}.kb-thesis:after{bottom:-1px;background:linear-gradient(var(--ink),var(--ink)) left bottom / 10px 1.5px no-repeat,linear-gradient(var(--ink),var(--ink)) left bottom / 1.5px 10px no-repeat,linear-gradient(var(--ink),var(--ink)) right bottom / 10px 1.5px no-repeat,linear-gradient(var(--ink),var(--ink)) right bottom / 1.5px 10px no-repeat}.kb-thesis-label,.kb-stashbase-kicker{color:var(--accent-ink);font-family:var(--sans);font-size:13px;letter-spacing:-.01em}.kb-thesis>p:first-of-type{margin-top:24px;font-family:var(--book);font-size:27px;line-height:1.27;letter-spacing:0}.kb-thesis>p:first-of-type em{color:var(--ink);font-style:normal}.kb-thesis-rule{width:42px;height:1px;margin:24px 0;background:#19191959}.kb-thesis .kb-thesis-note{color:var(--ink-3);font-size:14px;line-height:1.65}.kb-thesis a{display:inline-block;margin-top:22px;color:var(--accent-ink);font-size:13px;font-weight:500}.kb-thesis a:hover{text-decoration:underline}.kb-category-bar{position:sticky;top:120px;z-index:12;border-bottom:1px solid var(--faint);background:var(--paper)}.kb-category-scroll{display:flex;align-items:center;gap:9px;min-height:58px;overflow-x:auto;scrollbar-width:none}.kb-category-scroll::-webkit-scrollbar{display:none}.kb-category-prompt{flex:0 0 auto;margin-right:5px;color:var(--ink-4);font-family:var(--sans);font-size:12.5px;letter-spacing:-.01em}.kb-category-scroll a{display:inline-flex;flex:0 0 auto;gap:8px;align-items:center;padding:7px 11px;border:1px solid var(--hatch);background:var(--paper);color:var(--ink-2);font-size:12.5px;transition:border-color .15s ease,color .15s ease,background .15s ease}.kb-category-scroll a span{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 4px;background:var(--paper-2);color:var(--ink-4);font-family:var(--sans);font-size:11.5px;font-variant-numeric:tabular-nums}.kb-category-scroll a:hover{border-color:var(--ink);background:var(--paper-2);color:var(--ink)}.kb-featured{padding-top:94px;padding-bottom:100px}.kb-section-heading{display:grid;grid-template-columns:1fr minmax(280px,430px);gap:60px;align-items:end}.kb-section-heading h2,.kb-method h2,.kb-suggest h2,.kb-faq h2,.kb-stashbase h2{margin-top:15px;font-family:var(--display);font-size:clamp(34px,4vw,50px);line-height:1.08;letter-spacing:-.04em}.kb-section-heading>p{color:var(--ink-3);font-size:15px;line-height:1.7}.kb-featured-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:38px}.kb-featured-card{display:flex;min-height:420px;padding:26px;border:1px solid var(--faint);background:var(--paper);flex-direction:column;transition:background-color .2s ease}.kb-featured-card:hover{background:var(--paper-2)}.kb-featured-topline{display:flex;justify-content:space-between;align-items:center}.kb-featured-number{color:var(--accent);font-family:var(--sans);font-size:14px;font-variant-numeric:tabular-nums}.kb-star{display:inline-flex;align-items:center;gap:5px;color:var(--ink-3);font-family:var(--sans);font-size:13.5px;font-variant-numeric:tabular-nums}.kb-star svg,.kb-repo-stars svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-linejoin:round;stroke-width:1.6}.kb-featured-card h3{margin-top:54px;font-family:var(--display);font-size:30px;line-height:1.13;letter-spacing:-.04em}.kb-featured-card code,.kb-repo-title code{display:block;margin-top:8px;color:var(--ink-4);font-family:var(--mono);font-size:10.5px;overflow-wrap:anywhere}.kb-featured-card>p{margin-top:28px;color:var(--ink-3);font-size:14px;line-height:1.7}.kb-card-link{margin-top:auto;padding-top:28px;color:var(--accent-ink);font-size:13px;font-weight:500}.kb-directory-layout{display:grid;grid-template-columns:190px minmax(0,1fr);gap:clamp(44px,7vw,96px);padding-top:106px;padding-bottom:120px}.kb-directory-nav{position:sticky;top:146px;height:max-content;padding-top:4px}.kb-directory-nav>span{color:var(--ink-4);font-family:var(--sans);font-size:12.5px;letter-spacing:-.01em}.kb-directory-nav ol{list-style:none;margin:18px 0 0;padding:0;border-top:1px solid var(--faint)}.kb-directory-nav li{border-bottom:1px solid var(--faint)}.kb-directory-nav a{display:block;padding:11px 2px;color:var(--ink-3);font-size:12.5px}.kb-directory-nav a:hover{color:var(--accent-ink)}.kb-directory-nav>p{margin-top:24px;color:var(--ink-4);font-size:11px;line-height:1.6}.kb-category-section,.kb-method,.kb-faq{scroll-margin-top:186px}.kb-category-section+.kb-category-section{margin-top:112px}.kb-category-heading{display:grid;grid-template-columns:56px minmax(0,1fr);gap:20px;align-items:start;padding-bottom:26px;border-bottom:1px solid var(--line)}.kb-category-index{width:40px;height:40px;display:grid;place-items:center;border:1px solid var(--line-3);color:var(--ink-3);font-family:var(--sans);font-size:13px;letter-spacing:-.01em;font-variant-numeric:tabular-nums}.kb-category-heading h2{font-family:var(--display);font-size:clamp(30px,3.5vw,43px);line-height:1.1;letter-spacing:-.04em}.kb-category-heading p{max-width:680px;margin-top:12px;color:var(--ink-3);font-size:14px;line-height:1.7}.kb-repo-list{display:grid;gap:18px;margin-top:24px}.kb-repo-card{padding:clamp(24px,3.2vw,40px);border:1px solid var(--faint);background:var(--surface)}.kb-repo-card:target{border-color:#1919198c;box-shadow:0 0 0 3px #19191914}.kb-repo-header{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:18px;align-items:start}.kb-repo-rank{padding-top:5px;color:var(--ink-4);font-family:var(--sans);font-size:12.5px;font-variant-numeric:tabular-nums}.kb-repo-labels{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:10px}.kb-repo-labels span{padding:3px 8px;border:1px solid var(--hatch);color:var(--ink-3);font-family:var(--sans);font-size:11.5px;letter-spacing:-.01em}.kb-repo-labels .is-featured{border-color:var(--ink);background:var(--ink);color:var(--paper)}.kb-repo-title h3{font-family:var(--display);font-size:clamp(27px,3vw,37px);line-height:1.1;letter-spacing:-.04em}.kb-repo-stars{display:grid;grid-template-columns:16px auto;column-gap:6px;align-items:center;min-width:78px;padding:8px 11px;border:1px solid var(--faint);background:var(--paper);color:var(--ink-2)}.kb-repo-stars strong{font-family:var(--sans);font-size:13.5px;font-weight:500;font-variant-numeric:tabular-nums}.kb-repo-stars span{grid-column:2;color:var(--ink-4);font-size:9px}.kb-repo-summary{max-width:850px;margin-top:30px;color:var(--ink-2);font-family:var(--book);font-size:21px;line-height:1.55;letter-spacing:0}.kb-repo-details{display:grid;grid-template-columns:1fr 1.15fr;gap:40px;margin-top:32px;padding:26px 0;border-top:1px solid var(--faint);border-bottom:1px solid var(--faint)}.kb-best-for>span,.kb-inside>span,.kb-why>span{color:var(--ink-4);font-family:var(--sans);font-size:12px;letter-spacing:-.01em}.kb-best-for p{margin-top:10px;color:var(--ink-3);font-size:13.5px;line-height:1.65}.kb-inside ul{display:flex;flex-wrap:wrap;gap:7px;margin:10px 0 0;padding:0;list-style:none}.kb-inside li{padding:5px 9px;border-radius:0;background:var(--paper-2);color:var(--ink-3);font-size:11px}.kb-why{margin-top:26px}.kb-why p{margin-top:9px;color:var(--ink-3);font-size:13.5px;line-height:1.7}.kb-repo-footer{display:flex;justify-content:space-between;gap:24px;align-items:center;margin-top:30px}.kb-repo-footer>span{color:var(--ink-4);font-size:10.5px}.kb-repo-footer a{display:inline-flex;gap:7px;align-items:center;color:var(--accent-ink);font-size:12.5px;font-weight:500}.kb-repo-footer a:hover{text-decoration:underline}.kb-method{padding:106px 0 80px;border-top:1px solid var(--faint);background:var(--paper);color:var(--ink)}.kb-method .eyebrow{color:var(--ink-3)}.kb-method-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(60px,10vw,150px)}.kb-method h2{max-width:480px}.kb-method-lede{max-width:430px;margin-top:24px;color:var(--muted);font-family:var(--book);font-size:18px;line-height:1.6;letter-spacing:0}.kb-method-criteria{border-top:1px solid var(--faint)}.kb-method-criteria>div{display:grid;grid-template-columns:34px 210px 1fr;gap:20px;padding:24px 0;border-bottom:1px solid var(--faint)}.kb-method-criteria span{padding-top:3px;color:var(--ink);font-family:var(--sans);font-size:12.5px;font-variant-numeric:tabular-nums}.kb-method-criteria h3{font-family:var(--display);font-size:19px;letter-spacing:-.045em}.kb-method-criteria p{color:var(--muted);font-size:13px;line-height:1.65}.kb-method-note{display:grid;grid-template-columns:180px minmax(0,780px);gap:38px;margin-top:70px;padding-top:28px;border-top:1px solid var(--faint)}.kb-method-note strong{color:var(--ink-2);font-family:var(--sans);font-size:12.5px;font-weight:400;letter-spacing:-.01em}.kb-method-note p{color:var(--muted);font-size:13.5px;line-height:1.75}.kb-suggest{padding:76px 0;border-top:1px solid var(--faint);border-bottom:1px solid var(--faint);background:var(--paper)}.kb-suggest-inner{display:grid;grid-template-columns:minmax(0,720px) auto;gap:80px;justify-content:space-between;align-items:center}.kb-suggest h2{font-size:clamp(32px,3.6vw,44px)}.kb-suggest p{max-width:650px;margin-top:16px;color:var(--ink-3);font-size:14px;line-height:1.7}.kb-suggest-button{display:inline-flex;gap:22px;align-items:center;padding:13px 17px;border:1px solid var(--ink);background:var(--paper);color:var(--ink);font-size:13px;font-weight:500;white-space:nowrap;transition:background .15s ease,color .15s ease}.kb-suggest-button:hover{background:var(--ink);color:var(--paper)}.kb-faq{display:grid;grid-template-columns:.75fr 1.25fr;gap:clamp(60px,10vw,140px);padding-top:110px;padding-bottom:120px}.kb-faq-heading{position:sticky;top:150px;height:max-content}.kb-faq-heading p{max-width:400px;margin-top:20px;color:var(--ink-3);font-size:14px;line-height:1.7}.kb-faq-list{border-top:1px solid var(--line)}.kb-faq-list details{border-bottom:1px solid var(--faint)}.kb-faq-list summary{display:flex;justify-content:space-between;gap:28px;align-items:center;padding:24px 2px;cursor:pointer;list-style:none;font-family:var(--display);font-size:20px;letter-spacing:-.04em}.kb-faq-list summary::-webkit-details-marker{display:none}.kb-faq-toggle{position:relative;flex:0 0 auto;width:18px;height:18px}.kb-faq-toggle:before,.kb-faq-toggle:after{content:"";position:absolute;top:8px;left:2px;width:14px;height:1px;background:var(--accent-ink)}.kb-faq-toggle:after{transform:rotate(90deg);transition:transform .15s ease}.kb-faq-list details[open] .kb-faq-toggle:after{transform:rotate(0)}.kb-faq-list details>p{max-width:720px;padding:0 44px 26px 2px;color:var(--ink-3);font-size:14px;line-height:1.75}.kb-stashbase{padding:70px 0;border-top:1px solid var(--faint);background:var(--paper)}.kb-stashbase-inner{display:grid;grid-template-columns:88px minmax(0,660px) auto;gap:40px;align-items:center}.kb-stashbase-mark{display:flex;width:76px;height:76px;padding:18px;border-radius:0;background:var(--ink);flex-direction:column;justify-content:center;gap:6px}.kb-stashbase-mark span{display:block;width:100%;height:5px;border-radius:0;background:var(--paper-2)}.kb-stashbase-mark span:nth-child(2){width:76%;background:var(--ink-4)}.kb-stashbase-mark span:nth-child(3){width:51%}.kb-stashbase h2{max-width:650px;margin-top:10px;font-size:clamp(28px,3vw,38px)}.kb-stashbase p{max-width:620px;margin-top:14px;color:var(--ink-3);font-size:14px;line-height:1.65}.kb-stashbase-actions{display:flex;flex-direction:column;align-items:stretch;gap:12px;text-align:center}.kb-stashbase-actions a{padding:10px 14px;color:var(--ink-3);font-size:12px}.kb-stashbase-actions .kb-stashbase-primary{background:var(--ink);color:var(--paper);font-size:13px;font-weight:500}.kb-stashbase-actions .kb-stashbase-primary:hover{background:var(--ink-2)}.kb-stashbase-actions a:last-child:hover{color:var(--ink)}@media(max-width:900px){.kb-category-bar{top:84px}}@media(max-width:980px){.kb-hero-grid{grid-template-columns:1fr;align-items:start}.kb-thesis{max-width:650px}.kb-featured-grid{grid-template-columns:1fr}.kb-featured-card{min-height:0}.kb-featured-card h3{margin-top:34px}.kb-card-link{margin-top:24px}.kb-directory-layout{grid-template-columns:1fr}.kb-directory-nav{display:none}.kb-method-grid{grid-template-columns:1fr}.kb-method h2,.kb-method-lede{max-width:620px}.kb-suggest-inner{gap:40px}.kb-stashbase-inner{grid-template-columns:76px 1fr}.kb-stashbase-actions{grid-column:2;flex-direction:row;align-items:center;justify-self:start}}@media(max-width:760px){.kb-hero{padding-top:28px;padding-bottom:48px}.kb-hero-grid{gap:46px;margin-top:44px}.kb-section-heading,.kb-faq{grid-template-columns:1fr}.kb-section-heading{gap:18px}.kb-featured{padding-top:70px;padding-bottom:74px}.kb-directory-layout{padding-top:76px;padding-bottom:90px}.kb-category-section+.kb-category-section{margin-top:84px}.kb-method{padding-top:80px}.kb-method-criteria>div{grid-template-columns:32px 1fr}.kb-method-criteria p{grid-column:2}.kb-method-note{grid-template-columns:1fr;gap:13px}.kb-suggest-inner{grid-template-columns:1fr}.kb-suggest-button{width:max-content}.kb-faq{gap:48px;padding-top:82px;padding-bottom:90px}.kb-faq-heading{position:static}}@media(max-width:560px){.kb-hero-copy h1{font-size:clamp(43px,14vw,62px)}.kb-deck{font-size:19px}.kb-thesis{padding:24px}.kb-thesis>p:first-of-type{font-size:24px}.kb-category-bar{top:60px}.kb-category-scroll{padding-right:20px}.kb-category-prompt{display:none}.kb-featured-card{padding:22px}.kb-category-heading{grid-template-columns:32px 1fr;gap:8px}.kb-repo-card{padding:22px 19px}.kb-repo-header{grid-template-columns:1fr auto;gap:14px}.kb-repo-rank{display:none}.kb-repo-stars{min-width:70px;padding:7px 8px}.kb-repo-details{grid-template-columns:1fr;gap:24px}.kb-repo-footer{align-items:flex-start;flex-direction:column;gap:14px}.kb-method-criteria>div{grid-template-columns:24px 1fr;gap:12px}.kb-method-criteria h3{font-size:18px}.kb-suggest{padding:60px 0}.kb-suggest-button{width:100%;justify-content:space-between}.kb-faq-list summary{font-size:18px}.kb-stashbase-inner{grid-template-columns:1fr}.kb-stashbase-actions{grid-column:1;flex-direction:column;align-items:stretch;width:100%}}@media(prefers-reduced-motion:reduce){.kb-category-scroll a,.kb-featured-card,.kb-suggest-button,.kb-faq-toggle:after{transition:none}}.kb-scale{padding:88px 0 80px;background:var(--paper);color:var(--ink);border-top:1px solid var(--faint)}.kb-scale .eyebrow{color:var(--ink-3)}.kb-scale-head{max-width:760px}.kb-scale-head h2{margin-top:15px;font-family:var(--display);font-size:clamp(34px,4vw,50px);line-height:1.08;letter-spacing:-.04em}.kb-scale-head>p{margin-top:22px;color:var(--ink-2);font-size:16px;line-height:1.7}.kb-scale-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;margin-top:56px;background:var(--faint);border:1px solid var(--faint)}.kb-scale-item{padding:28px 26px 30px;background:var(--paper)}.kb-scale-item dt{color:var(--ink-3);font-family:var(--sans);font-size:13px;letter-spacing:-.01em}.kb-scale-item dd{margin-top:14px;font-family:var(--display);font-size:clamp(30px,3vw,42px);line-height:1;letter-spacing:-.045em}.kb-scale-item p{margin-top:14px;color:var(--ink-4);font-size:12.5px;line-height:1.55}.kb-scale-item.is-estimate dd{color:var(--accent-lift)}.kb-scale-note{max-width:760px;margin-top:40px;color:var(--ink-2);font-size:15px;line-height:1.75}.kb-category-total{margin-top:10px!important;color:var(--ink-4)!important;font-family:var(--sans);font-size:14px!important;letter-spacing:-.01em}.kb-repo-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;margin-top:24px;background:var(--faint);border:1px solid var(--faint)}.kb-repo-metrics>div{padding:13px 14px 15px;background:var(--surface)}.kb-repo-metrics dt{color:var(--ink-4);font-family:var(--sans);font-size:12px;letter-spacing:-.01em}.kb-repo-metrics dd{margin-top:7px;color:var(--ink-2);font-size:15px;font-variant-numeric:tabular-nums}.kb-clone{margin-top:22px;padding-top:18px;border-top:1px solid var(--faint)}.kb-clone>span{display:block;color:var(--ink-4);font-family:var(--sans);font-size:13px;letter-spacing:-.01em}.kb-clone code{display:block;overflow-x:auto;margin-top:10px;padding:11px 13px;background:var(--paper-2);border:1px solid var(--faint);border-radius:0;color:var(--ink-2);font-family:var(--mono);font-size:12.5px;white-space:nowrap}@media(max-width:980px){.kb-scale-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.kb-repo-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:560px){.kb-scale{padding:60px 0 56px}.kb-scale-grid{grid-template-columns:1fr;margin-top:38px}.kb-scale-item{padding:22px 20px 24px}.kb-repo-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}.kb-thesis .kb-thesis-note,.kb-category-heading p,.kb-faq-list details p,.kb-suggest p,.kb-stashbase-inner p,.kb-featured-card>p{font-family:var(--book);font-size:16px;line-height:1.55;letter-spacing:0}.kb-best-for p,.kb-why p,.kb-method-note p,.kb-method-criteria p{font-family:var(--book);font-size:15.5px;line-height:1.55;letter-spacing:0}.kb-scale-head p{font-family:var(--book);font-size:18px;letter-spacing:0}.kb-scale-note{font-family:var(--book);font-size:17px;letter-spacing:0}.kb-category-heading p.kb-category-total{font-family:var(--sans);letter-spacing:.02em}.kb-faq-heading p{font-family:var(--book);font-size:16px;line-height:1.55;letter-spacing:0}.kb-section-heading>p{font-family:var(--book);font-size:17px;line-height:1.5;letter-spacing:0}.kb-directory-nav>p{font-family:var(--book);font-size:13.5px;letter-spacing:0}
