/**
 * Chronote Primitives
 *
 * 共通UIプリミティブ（ボタン等）。各プラグインがこれを参照することで、
 * Chronote全体のUI統一を実現する。
 *
 * Phase 01 では .cn-btn 系の定義のみ。既存の .cs-btn-* との置き換えは
 * Phase 02 のボタン階層整理で段階的に実施する。
 *
 * 詳細仕様は docs/ui-revamp-plan.md §6「ボタン（提案）」を参照。
 */

/* ===== Button base ===== */
.cn-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    height: 48px;
    padding: 0 24px;
    border-radius: var(--cn-radius-pill);
    font-weight: 600;
    font-size: var(--cn-fs-body);
    line-height: 1;
    text-decoration: none;
    cursor: pointer;
    border: 1px solid transparent;
    transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease,
                transform 0.2s ease, box-shadow 0.2s ease, filter 0.2s ease;
    white-space: nowrap;
}

/* 共通 hover エフェクト（text variant 以外）— 浮き上がり */
.cn-btn:not(:disabled):not([aria-disabled="true"]):not(.cn-btn--text):hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
}

.cn-btn:disabled,
.cn-btn[aria-disabled="true"] {
    opacity: 0.5;
    cursor: not-allowed;
}

/* ===== Variants ===== */
.cn-btn--primary {
    background: var(--cn-ink);
    color: var(--cn-ink-on-dark);
}

.cn-btn--primary:hover {
    background: var(--cn-surface);
    color: var(--cn-ink);
    border-color: var(--cn-ink);
}

.cn-btn--ghost {
    background: var(--cn-surface);
    color: var(--cn-ink);
    border-color: var(--cn-ink);
}

.cn-btn--ghost:hover {
    background: var(--cn-ink);
    color: var(--cn-ink-on-dark);
}

.cn-btn--text {
    background: transparent;
    color: var(--cn-link-color);
    padding: 0;
    height: auto;
    border: none;
}

.cn-btn--text:hover {
    text-decoration: underline;
}

.cn-btn--emphasis {
    background: var(--cn-emphasis);
    color: var(--cn-ink-on-dark);
}

.cn-btn--emphasis:hover {
    filter: brightness(1.05);
    color: var(--cn-ink-on-dark);
}

.cn-btn--secondary {
    background: var(--cn-ink-3);
    color: var(--cn-ink-on-dark);
    border-color: var(--cn-ink-3);
}

.cn-btn--secondary:hover {
    background: var(--cn-ink-2);
    border-color: var(--cn-ink-2);
    color: var(--cn-ink-on-dark);
}

.cn-btn--info {
    background: var(--cn-info);
    color: var(--cn-ink-on-dark);
}

.cn-btn--info:hover {
    filter: brightness(1.05);
    color: var(--cn-ink-on-dark);
}

.cn-btn--outline-emphasis {
    background: var(--cn-surface);
    color: var(--cn-emphasis-solid);
    border-color: var(--cn-emphasis-solid);
}

.cn-btn--outline-emphasis:hover {
    background: var(--cn-emphasis-solid);
    color: var(--cn-ink-on-dark);
}

.cn-btn--danger {
    background: var(--cn-surface);
    color: var(--cn-danger);
    border-color: var(--cn-danger);
}

.cn-btn--danger:hover {
    background: var(--cn-danger);
    color: var(--cn-ink-on-dark);
}

/* ===== Sizes ===== */
.cn-btn--xs {
    height: 28px;
    padding: 0 12px;
    font-size: var(--cn-fs-meta);
    gap: 4px;
}

.cn-btn--sm {
    height: 36px;
    padding: 0 16px;
    font-size: var(--cn-fs-meta);
}

.cn-btn--lg {
    height: 56px;
    padding: 0 32px;
    font-size: var(--cn-fs-body-l);
}
