/* ================================================================
   npm 常用包页专属（npm-packages.html）
   源：pages.css（原第 3555-3833 行区间内容，按需拆分）
   ================================================================ */

/* 分类粘性导航 */
.np-category-nav {
    position: sticky;
    top: calc(var(--header-height) + 12px);
    z-index: 50;
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-8);
    padding: var(--space-10) var(--space-12);
    margin-bottom: var(--space-24);
    border-radius: var(--radius-12);
    border: 1px solid rgba(93, 151, 67, 0.14);
    background: rgba(255, 255, 255, 0.88);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    box-shadow: var(--shadow-sm);
}
.np-cat-link {
    padding: var(--space-6) var(--space-16);
    border-radius: var(--radius-pill);
    font-size: var(--fs-12);
    font-weight: 600;
    color: var(--text-secondary);
    transition: color var(--transition-fast), background-color var(--transition-fast);
}
.np-cat-link:hover {
    color: var(--primary-dark);
    background: rgba(93, 151, 67, 0.12);
}
.np-cat-title {
    margin: var(--space-32) 0 var(--space-16);
}
.np-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-16);
}
.np-pkg {
    display: flex;
    flex-direction: column;
    padding: var(--space-20);
    border-radius: var(--radius-8);
    border: 1px solid rgba(93, 151, 67, 0.10);
    background: rgba(255, 255, 255, 0.82);
    box-shadow: var(--shadow-sm);
    transition: transform var(--transition-normal), box-shadow var(--transition-normal), border-color var(--transition-normal);
}
.np-pkg:hover {
    transform: translateY(-4px);
    border-color: rgba(93, 151, 67, 0.30);
    box-shadow: 0 14px 30px rgba(93, 151, 67, 0.13);
}
.np-pkg-header {
    display: flex;
    align-items: baseline;
    gap: var(--space-10);
    margin-bottom: var(--space-8);
}
.np-pkg-name {
    font-family: var(--font-mono);
    font-size: var(--fs-16);
    font-weight: 800;
    color: var(--primary-dark);
}
.np-pkg-version {
    padding: 1px var(--space-8);
    border-radius: var(--radius-pill);
    background: rgba(93, 151, 67, 0.11);
    color: var(--primary-dark);
    font-size: var(--fs-11);
    font-weight: 700;
}
.np-pkg-desc {
    margin-bottom: var(--space-12);
    font-size: var(--fs-12);
    line-height: var(--lh-base);
    color: var(--text-secondary);
}
.np-pkg-install {
    margin-bottom: var(--space-12);
    padding: var(--space-8) var(--space-12);
    border-radius: var(--radius-6);
    border: 1px solid rgba(93, 151, 67, 0.14);
    background: #f8fbf4;
    font-family: var(--font-mono);
    font-size: var(--fs-12);
    color: #41533a;
    overflow-x: auto;
    white-space: nowrap;
}
.np-pkg-install::before {
    content: '$ ';
    color: var(--primary-color);
    font-weight: 700;
}
code.np-pkg-install::before {
    content: '';
}
.np-pkg-tags {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-6);
    margin-top: auto;
}
.np-tag {
    padding: var(--space-2) var(--space-10);
    border-radius: var(--radius-pill);
    background: rgba(93, 151, 67, 0.10);
    color: var(--primary-dark);
    font-size: var(--fs-11);
    font-weight: 600;
}
/* enrich */
.np-enrich, .np-maintenance {
    padding-top: var(--space-32);
    border-top: 1px dashed rgba(93, 151, 67, 0.25);
}
.np-enrich-title {
    margin: 24px 0 14px;
    font-size: var(--fs-16);
    font-weight: 700;
    color: var(--text-primary);
}
.np-principles {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-16);
}
.np-principles article {
    padding: var(--space-20);
    border-radius: var(--radius-8);
    border: 1px solid rgba(93, 151, 67, 0.12);
    background: rgba(255, 255, 255, 0.78);
    transition: transform var(--transition-normal), box-shadow var(--transition-normal);
}
.np-principles article:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-md);
}
.np-principles h3 {
    margin-bottom: var(--space-8);
    font-size: var(--fs-14);
    font-weight: 700;
    color: var(--text-primary);
}
.np-principles p {
    font-size: var(--fs-12);
    line-height: var(--lh-base);
    color: var(--text-secondary);
}
.np-extra-grid {
    grid-template-columns: repeat(4, 1fr);
}
.np-compare-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-16);
}
.np-compare-card {
    padding: var(--space-16) var(--space-20);
    border-radius: var(--radius-8);
    border: 1px solid rgba(93, 151, 67, 0.12);
    background: rgba(255, 255, 255, 0.78);
    font-size: var(--fs-13);
    line-height: var(--lh-base);
    color: var(--text-secondary);
    transition: transform var(--transition-normal), box-shadow var(--transition-normal);
}
.np-compare-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-md);
}
.np-compare-card h4, .np-governance h3 {
    margin-bottom: var(--space-8);
    font-size: var(--fs-14);
    font-weight: 700;
    color: var(--text-primary);
}
.np-governance {
    margin-top: var(--space-24);
    padding: var(--space-20) var(--space-24);
    border-radius: var(--radius-8);
    border: 1px solid rgba(93, 151, 67, 0.16);
    background: rgba(93, 151, 67, 0.06);
}
.np-governance li {
    position: relative;
    padding: 5px 0 5px 24px;
    font-size: var(--fs-13);
    line-height: var(--lh-base);
    color: var(--text-secondary);
}
.np-governance li::before {
    content: '✓';
    position: absolute;
    left: 0;
    top: var(--space-6);
    width: 17px;
    height: 17px;
    border-radius: 50%;
    background: rgba(93, 151, 67, 0.16);
    color: var(--primary-dark);
    font-size: var(--fs-11);
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
}
.np-warning-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-16);
}
.np-warning-grid article {
    padding: var(--space-20);
    border-radius: var(--radius-8);
    border-left: 3px solid #ea580c;
    border-top: 1px solid rgba(234, 88, 12, 0.18);
    border-right: 1px solid rgba(234, 88, 12, 0.18);
    border-bottom: 1px solid rgba(234, 88, 12, 0.18);
    background: rgba(234, 88, 12, 0.05);
}
.np-warning-grid h3 {
    margin-bottom: var(--space-8);
    font-size: var(--fs-14);
    font-weight: 700;
    color: #c2570c;
}
.np-warning-grid p {
    font-size: var(--fs-12);
    line-height: var(--lh-base);
    color: var(--text-secondary);
}
@media (max-width: 1199px) {
    .np-extra-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}
@media (max-width: 991px) {
    .np-grid, .np-principles, .np-compare-grid, .np-warning-grid {
        grid-template-columns: 1fr;
    }
}
