.hub{background:#fff;max-width:960px;margin:0 auto;padding:1.5rem 1.5rem 4rem}.hub__hero{text-align:center;margin-bottom:1.5rem}.hub__eyebrow{text-transform:uppercase;letter-spacing:.12em;color:#4b4b52;background:#f4f4f6;border:1px solid #e6e6ea;border-radius:999px;margin-bottom:.75rem;padding:.3rem .75rem;font-size:.7rem;font-weight:600;display:inline-block}.hub__title{letter-spacing:-.015em;color:#0f0f14;margin:0 0 .65rem;font-size:clamp(1.65rem,3.4vw,2.15rem);font-weight:700;line-height:1.2}.hub__lede{color:#4b4b52;max-width:640px;margin:0 auto .85rem;font-size:.95rem;line-height:1.55}.hub__lede strong{color:#0f0f14;font-weight:600}.hub__lede a{color:#2563eb;text-decoration:none}.hub__lede a:hover{text-decoration:underline}.hub__meta-line{color:#6b7280;font-variant-numeric:tabular-nums;margin-bottom:1rem;font-size:.85rem}.hub__meta-line strong{color:#0f0f14;font-weight:600}.hub__meta-line time{color:#0f0f14;font-weight:500}.hub__meta-sep{color:#cbd5e1;margin:0 .4rem}.hub__pills{flex-wrap:wrap;justify-content:center;gap:.4rem;display:flex}.hub__pill{color:#4b4b52;background:#f4f4f6;border-radius:999px;align-items:center;gap:.35rem;padding:.3rem .7rem;font-size:.8rem;font-weight:500;text-decoration:none;transition:all .15s;display:inline-flex}.hub__pill:hover{color:#0f0f14;background:#e6e6ea}.hub__pill-count{color:#6b7280;font-variant-numeric:tabular-nums;background:#fff;border-radius:999px;padding:.05rem .4rem;font-size:.72rem}.hub__author{background:linear-gradient(135deg,#f8faff,#fefefe);border:1px solid #e0e7ff;border-radius:12px;grid-template-columns:88px minmax(0,1fr);align-items:center;gap:1rem;margin:0 0 1.5rem;padding:1rem 1.25rem;display:grid}.hub__author-img{object-fit:cover;border:3px solid #fff;border-radius:50%;width:88px;height:88px;box-shadow:0 2px 6px #2563eb1f}.hub__author-body{min-width:0}.hub__author-name{color:#0f0f14;margin-bottom:.15rem;font-size:1.05rem;font-weight:700;line-height:1.2}.hub__author-role{color:#4b4b52;margin-bottom:.4rem;font-size:.82rem;line-height:1.4}.hub__author-role a{color:#2563eb;font-weight:500;text-decoration:none}.hub__author-role a:hover{text-decoration:underline}.hub__author-bio{color:#4b4b52;margin:0 0 .6rem;font-size:.85rem;line-height:1.5}.hub__author-links{flex-wrap:wrap;gap:.4rem;display:flex}.hub__author-links a{color:#2563eb;background:#eef2ff;border:1px solid #dbe4ff;border-radius:999px;padding:.2rem .6rem;font-size:.77rem;font-weight:500;text-decoration:none}.hub__author-links a:hover{background:#dbe4ff}@media (max-width:640px){.hub__author{grid-template-columns:64px minmax(0,1fr);gap:.8rem;padding:.85rem 1rem}.hub__author-img{width:64px;height:64px}}.hub__toolbar{border-bottom:1px solid #eaeaee;margin-bottom:1rem;padding-bottom:1rem}.hub__chip-row{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.hub__chip{color:#4b4b52;cursor:pointer;background:#fff;border:1px solid #e6e6ea;border-radius:999px;padding:.4rem .85rem;font-family:inherit;font-size:.82rem;font-weight:500;transition:all .15s}.hub__chip:hover{color:#0f0f14;border-color:#c4c4cb}.hub__chip.is-on{color:#fff;background:#0f0f14;border-color:#0f0f14}.hub__chip--select{appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%234b4b52' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>");background-position:right .8rem center;background-repeat:no-repeat;padding-right:2rem}.hub__chip--clear{color:#dc2626;border-color:#fecaca}.hub__chip--clear:hover{color:#dc2626;background:#fef2f2}.hub__main{min-width:0}.hub__cat{margin-top:1.5rem;scroll-margin-top:1rem}.hub__cat:first-of-type{margin-top:0}.hub__cat-head{justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:.75rem;display:flex}.hub__cat-title{color:#0f0f14;letter-spacing:-.01em;margin:0;font-size:1.3rem;font-weight:700}.hub__cat-count{color:#6b7280;font-variant-numeric:tabular-nums;font-size:.78rem}.hub__list{flex-direction:column;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.hub__row{margin:0;padding:0}.hub__row-link{background:#fff;border:1px solid #eaeaee;border-radius:12px;grid-template-columns:32px 40px minmax(0,1fr) auto;align-items:center;gap:.9rem;padding:.85rem 1rem;text-decoration:none;transition:all .15s;display:grid}.hub__row-link:hover{background:#fafafb;border-color:#d0d0d5;transform:translateY(-1px);box-shadow:0 2px 8px #0000000a}.hub__rank{color:#9ca3af;font-variant-numeric:tabular-nums;text-align:center;font-size:.85rem;font-weight:600}.hub__fav{object-fit:contain;background:#f9f9fb;border:1px solid #eaeaee;border-radius:10px;width:40px;height:40px}.hub__fav--placeholder{color:#4b4b52;text-transform:uppercase;background:linear-gradient(135deg,#f4f4f6,#e6e6ea);justify-content:center;align-items:center;font-size:1.1rem;font-weight:700;display:inline-flex}.hub__body{min-width:0}.hub__name-row{flex-wrap:wrap;align-items:center;gap:.55rem;margin-bottom:.15rem;display:flex}.hub__name{color:#0f0f14;letter-spacing:-.005em;font-size:1rem;font-weight:600}.hub__badge{text-transform:uppercase;letter-spacing:.05em;border-radius:999px;padding:.12rem .45rem;font-size:.65rem;font-weight:600}.hub__badge--first{color:#1a4a7a;background:#e0efff}.hub__badge--enabled{color:#345a1c;background:#eef6e8}.hub__desc{color:#4b4b52;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 .35rem;font-size:.88rem;line-height:1.45;display:-webkit-box;overflow:hidden}.hub__meta{flex-wrap:wrap;gap:.35rem;display:flex}.hub__tag{color:#4b4b52;background:#f4f4f6;border:1px solid #eaeaee;border-radius:999px;padding:.1rem .5rem;font-size:.7rem;font-weight:500}.hub__tag--api{color:#3730a3;background:#eef2ff;border-color:#e0e7ff}.hub__tag--oss{color:#166534;background:#f0fdf4;border-color:#dcfce7}.hub__tag--tested{color:#9a3412;background:#fff7ed;border-color:#ffedd5}.hub__arrow{color:#9ca3af;transition:transform .15s,color .15s;display:inline-flex}.hub__row-link:hover .hub__arrow{color:#0f0f14;transform:translate(3px)}@media (max-width:640px){.hub__row-link{grid-template-columns:40px minmax(0,1fr) auto;gap:.75rem;padding:.75rem .85rem}.hub__rank{display:none}}.hub__value{border-top:1px solid #eaeaee;margin-top:3rem;padding-top:2rem}.hub__value-heading{color:#0f0f14;letter-spacing:-.01em;margin:0 0 1rem;font-size:1.3rem;font-weight:700}.hub__value-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.75rem;display:grid}.hub__value-item{background:#f9f9fb;border:1px solid #eaeaee;border-radius:10px;grid-template-columns:40px minmax(0,1fr);align-items:start;gap:.75rem;padding:1rem;display:grid}.hub__value-icon{color:#fff;background:#0f0f14;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:inline-flex}.hub__value-item strong{color:#0f0f14;margin-bottom:.25rem;font-size:.9rem;font-weight:600;line-height:1.3;display:block}.hub__value-item span{color:#4b4b52;font-size:.83rem;line-height:1.5}.hub__faq{border-top:1px solid #eaeaee;margin-top:3rem;padding-top:2rem}.hub__faq-heading{color:#0f0f14;letter-spacing:-.01em;margin:0 0 1rem;font-size:1.3rem;font-weight:700}.hub__faq-item{background:#fff;border:1px solid #eaeaee;border-radius:10px;margin-bottom:.5rem;padding:.75rem 1rem}.hub__faq-item[open]{background:#fafafb}.hub__faq-item summary{cursor:pointer;color:#0f0f14;justify-content:space-between;align-items:center;gap:.75rem;font-size:.93rem;font-weight:600;list-style:none;display:flex}.hub__faq-item summary::-webkit-details-marker{display:none}.hub__faq-item summary:after{content:"+";color:#6b7280;font-size:1.35rem;font-weight:300;transition:transform .15s}.hub__faq-item[open] summary:after{content:"−"}.hub__faq-item p{color:#4b4b52;margin:.6rem 0 0;font-size:.88rem;line-height:1.55}.hub__empty{color:#6b7280;text-align:center;background:#fafafb;border:1px dashed #eaeaee;border-radius:12px;margin-top:2rem;padding:2rem 1rem}
