/* =========================
   BUTTON BASE
========================= */

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;

    height: 48px;
    min-width: 96px;
    padding: 0 18px;

    border: 1px solid transparent;
    border-radius: var(--radius-md);

    background: transparent;
    color: inherit;

    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;

    font-size: 14px;
    font-weight: 700;

    transition:
            transform 0.2s ease,
            box-shadow 0.2s ease,
            background-color 0.2s ease,
            border-color 0.2s ease,
            color 0.2s ease;
}

.btn:hover {
    transform: translateY(-1px);
}

.btn:disabled,
.btn[disabled] {
    opacity: 0.55;
    cursor: default;
    transform: none;
    box-shadow: none;
}

.btn:disabled:hover,
.btn[disabled]:hover {
    transform: none;
}


/* =========================
   SEARCH
========================= */

.btn--search {
    border-color: var(--green-200);
    background: var(--green-50);
    color: var(--green-800);
}

.btn--search:hover:not(:disabled) {
    background: var(--green-100);
    border-color: var(--green-300);

    box-shadow: 0 8px 16px rgba(37, 135, 76, 0.12);
}


/* =========================
   SUBMIT (등록/저장)
========================= */

.btn--submit {
    background: linear-gradient(
            135deg,
            var(--green-500),
            var(--green-600)
    );

    color: var(--white);

    box-shadow: 0 10px 20px rgba(37, 135, 76, 0.18);
}

.btn--submit:hover:not(:disabled) {
    box-shadow: 0 14px 24px rgba(37, 135, 76, 0.24);
}


/* =========================
   CONFIRM (확인)
========================= */

.btn--confirm {
    background: var(--color-secondary);
    color: var(--white);

    box-shadow: var(--shadow-sm);
}

.btn--confirm:hover:not(:disabled) {
    background: var(--color-secondary-strong);
}

/* =========================
   EDIT (정보 수정)
========================= */

.btn--edit {
    border-color: var(--green-200);
    background: var(--white);
    color: var(--green-700);

    box-shadow: var(--shadow-sm);
}

.btn--edit:hover:not(:disabled) {
    background: var(--green-50);
    border-color: var(--green-400);

    box-shadow: 0 8px 16px rgba(37, 135, 76, 0.12);
}


/* =========================
   CANCEL (취소)
========================= */

.btn--cancel {
    border-color: var(--gray-200);
    background: var(--gray-50);
    color: var(--gray-700);
}

.btn--cancel:hover:not(:disabled) {
    background: var(--gray-100);
}

/* =========================
   DANGER (삭제/탈퇴)
========================= */

.btn--danger {
    border-color: #f1c0c4;
    background: #fff5f5;
    color: #c92a2a;

    box-shadow: var(--shadow-sm);
}

.btn--danger:hover:not(:disabled) {
    background: #ffe3e3;
    border-color: #e57373;
    color: #a61e1e;
}


/* =========================
   ACTION (추가/적용/승인 등)
========================= */

.btn--action {
    border-color: var(--green-300);
    background: var(--white);
    color: var(--green-700);

    box-shadow: var(--shadow-sm);
}

.btn--action:hover:not(:disabled) {
    background: var(--green-50);
    border-color: var(--green-500);
    color: var(--green-800);
}


/* =========================
   ACCENT (강조 작업)
========================= */

.btn--accent {
    background: var(--green-100);
    border-color: var(--green-300);
    color: var(--green-800);

    box-shadow: var(--shadow-sm);
}

.btn--accent:hover:not(:disabled) {
    background: var(--green-200);
    border-color: var(--green-500);
}



/* =========================
   OPTIONAL
========================= */

.btn--wide {
    min-width: 120px;
}

.btn--fixed {
    width: 120px;
}

.btn--lg {
    height: 52px;
    min-width: 112px;
    padding: 0 22px;

    font-size: 15px;
}