.zjl-v2 .zjl-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--zjl-space-2);
    min-height: 44px;
    padding: 11px 18px;
    border: 1px solid transparent;
    border-radius: var(--zjl-radius-sm);
    font-size: 0.875rem;
    font-weight: 700;
    line-height: 1.2;
    text-decoration: none;
    cursor: pointer;
    transition: background var(--zjl-dur-fast) var(--zjl-ease),
                border-color var(--zjl-dur-fast) var(--zjl-ease),
                color var(--zjl-dur-fast) var(--zjl-ease);
}

.zjl-v2 .zjl-btn--primary {
    background: var(--zjl-ink-primary);
    border-color: var(--zjl-ink-primary);
    color: #FFFFFF;
}

.zjl-v2 .zjl-btn--primary:hover {
    background: #143052;
    border-color: #143052;
    color: #FFFFFF;
}

.zjl-v2 .zjl-btn--secondary {
    background: transparent;
    border-color: var(--zjl-ink-primary);
    color: var(--zjl-ink-primary);
}

.zjl-v2 .zjl-btn--secondary:hover {
    background: var(--zjl-ink-primary);
    color: #FFFFFF;
}

.zjl-v2 .zjl-btn--ghost {
    background: transparent;
    border-color: var(--zjl-border-warm);
    color: var(--zjl-ink-primary);
}

.zjl-v2 .zjl-btn--ghost:hover {
    border-color: var(--zjl-ink-primary);
}

.zjl-v2 .zjl-link {
    display: inline-flex;
    align-items: baseline;
    gap: 4px;
    color: var(--zjl-ink-primary);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px solid var(--zjl-accent);
    padding-bottom: 1px;
    transition: color var(--zjl-dur-fast) var(--zjl-ease),
                border-color var(--zjl-dur-fast) var(--zjl-ease);
}

.zjl-v2 .zjl-link:hover {
    color: var(--zjl-accent);
    border-color: var(--zjl-accent-hover);
}
