.btn {
    font-family: var(--font-family);
    font-size: var(--text-sm);
    font-weight: var(--weight-semibold);
    padding: var(--space-2) var(--space-5);
    border-radius: 999px;
    border: none;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    transition:
        background var(--transition-fast),
        transform var(--transition-fast),
        box-shadow var(--transition-fast);
}
.btn:active {
    transform: scale(0.98);
}
.btn[data-disabled-by-htmx] {
    pointer-events: none;
}
.btn--primary {
    background: var(--color-accent);
    color: white;
}
.btn--primary:hover {
    background: var(--color-accent-hover);
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
}
.btn--secondary {
    background: var(--color-surface);
    color: var(--color-text);
    border: 1px solid var(--color-border);
}
.btn--secondary:hover {
    background: var(--color-surface-elevated);
    transform: translateY(-1px);
}
.btn--ghost {
    background: transparent;
    color: var(--color-accent-text);
}
.btn--ghost:hover {
    background: var(--cream-200);
}
.btn--danger {
    background: var(--color-error);
    color: white;
}
.btn--danger:hover {
    background: var(--error-700);
    transform: translateY(-1px);
}
.btn--dark {
    background: var(--charcoal-800);
    color: var(--cream-100);
}
.btn--dark:hover {
    background: var(--charcoal-700);
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
}
.btn--paper {
    padding: var(--space-3) var(--space-5);
    background: var(--color-bg);
    color: var(--charcoal-900);
    border: 1px solid var(--charcoal-200);
    border-radius: 999px;
    font-weight: var(--weight-extrabold);
    letter-spacing: -0.005em;
    text-decoration: none;
    transition:
        background var(--transition-fast),
        border-color var(--transition-fast),
        transform var(--transition-fast);
}
.btn--paper:hover {
    background: var(--cream-50);
    border-color: var(--charcoal-300);
    color: var(--charcoal-900);
}
.btn--paper:focus-visible {
    outline: 2px solid var(--color-focus);
    outline-offset: 3px;
}
.btn--paper svg {
    width: 0.875rem;
    height: 0.875rem;
    flex-shrink: 0;
    transition: transform var(--transition-fast) var(--ease-out-quart);
}
.btn--paper:hover svg {
    transform: translateX(2px);
}
.btn--paper-sm {
    padding: 6px var(--space-3);
    font-size: var(--text-xs);
    background: var(--color-surface);
    color: var(--charcoal-900);
    border: 1px solid var(--charcoal-200);
    border-radius: 999px;
    font-weight: var(--weight-extrabold);
    letter-spacing: -0.005em;
    text-decoration: none;
    transition:
        background var(--transition-fast),
        border-color var(--transition-fast),
        transform var(--transition-fast);
}
.btn--paper-sm:hover {
    background: var(--cream-50);
    border-color: var(--charcoal-300);
    color: var(--charcoal-900);
}
.btn--paper-sm:focus-visible {
    outline: 2px solid var(--color-focus);
    outline-offset: 3px;
}
.btn--paper-download:hover svg {
    transform: translateY(2px);
}
.admin-overview--reports .btn--paper,
.admin-overview--reports .btn--paper-sm {
    background: var(--cream-100);
}
.admin-overview--reports .btn--paper-sm {
    box-sizing: border-box;
    height: 28px;
    line-height: 1;
    justify-content: center;
}
.admin-overview--analytics .btn--paper {
    box-sizing: border-box;
    min-height: 36px;
    padding: 5px var(--space-4);
    border-radius: 999px;
    font-weight: var(--weight-semibold);
    letter-spacing: var(--tracking-normal);
    background: var(--cream-200);
}
.admin-overview--analytics .btn--paper:hover {
    background: var(--cream-200);
    border-color: var(--charcoal-300);
}
.admin-overview--analytics .btn--paper:hover svg {
    transform: none;
}
.admin-overview--analytics .btn--paper:active {
    transform: none;
}
.admin-overview--library .library__create-path,
.admin-overview--campaigns .admin-overview__catalog-actions .btn--paper,
.admin-overview--people .people-header-actions .btn--paper-sm {
    box-sizing: border-box;
    min-height: 36px;
    padding: 5px var(--space-4);
    border-radius: 999px;
    font-size: var(--text-sm);
    font-weight: var(--weight-semibold);
    letter-spacing: var(--tracking-normal);
    background: var(--cream-200);
}
.admin-overview--library .library__create-path:hover,
.admin-overview--campaigns .admin-overview__catalog-actions .btn--paper:hover,
.admin-overview--people .people-header-actions .btn--paper-sm:hover {
    background: var(--cream-200);
    border-color: var(--charcoal-300);
}
.admin-overview--library .library__create-path:hover svg,
.admin-overview--campaigns .admin-overview__catalog-actions .btn--paper:hover svg,
.admin-overview--people .people-header-actions .btn--paper-sm:hover svg {
    transform: none;
}
.admin-overview--library .library__create-path:active,
.admin-overview--campaigns .admin-overview__catalog-actions .btn--paper:active,
.admin-overview--people .people-header-actions .btn--paper-sm:active {
    transform: none;
}
.btn--link {
    font-family: var(--font-family);
    font-size: var(--text-sm);
    font-weight: var(--weight-semibold);
    color: var(--color-text-secondary);
    padding: var(--space-3) var(--space-3);
    border: 0;
    border-radius: var(--radius-md);
    background: transparent;
    cursor: pointer;
    transition: color var(--transition-fast), background var(--transition-fast);
    text-decoration: none;
}
.btn--link:hover {
    color: var(--color-text);
    background: var(--cream-300);
}
