/**
 * Universal Button Styles - 通用按钮样式系统
 * 使用CSS变量统一管理所有按钮样式
 *
 * @package     block-canvas Child
 * @subpackage  Assets
 * @author      JoshuaWang2019
 * @version     1.0.0
 * @since       2025-06-29
 */

/* ==========================================================================
   基础按钮样式
   ========================================================================== */
.btn-base {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: var(--spacing-sm) !important;
  padding: var(--spacing-md) var(--spacing-lg) !important;
  border: none !important;
  border-radius: var(--card-radius-small) !important;
  font-size: var(--font-size-base) !important;
  font-weight: var(--font-weight-semibold) !important;
  text-decoration: none !important;
  cursor: pointer !important;
  transition: all var(--transition-base) !important;
  white-space: nowrap !important;
  user-select: none !important;
  outline: none !important;
}

.btn-base:focus {
  box-shadow: 0 0 0 3px rgba(72, 187, 120, 0.2) !important;
}

.btn-base:disabled {
  opacity: 0.6 !important;
  cursor: not-allowed !important;
  transform: none !important;
}

/* ==========================================================================
   主要按钮样式
   ========================================================================== */
.btn-primary {
  background: var(--btn-primary-bg) !important;
  color: var(--btn-primary-color) !important;
}

.btn-primary:hover:not(:disabled) {
  transform: var(--btn-primary-hover-transform) !important;
  box-shadow: var(--btn-primary-hover-shadow) !important;
  color: var(--btn-primary-color) !important;
  text-decoration: none !important;
}

.btn-primary:active:not(:disabled) {
  transform: translateY(0) !important;
}

/* ==========================================================================
   次要按钮样式
   ========================================================================== */
.btn-secondary {
  background: var(--btn-secondary-bg) !important;
  color: var(--btn-secondary-color) !important;
}

.btn-secondary:hover:not(:disabled) {
  transform: var(--btn-primary-hover-transform) !important;
  box-shadow: var(--btn-secondary-hover-shadow) !important;
  color: var(--btn-secondary-color) !important;
  text-decoration: none !important;
}

.btn-secondary:active:not(:disabled) {
  transform: translateY(0) !important;
}

/* ==========================================================================
   轮廓按钮样式
   ========================================================================== */
.btn-outline {
  background: transparent !important;
  border: var(--btn-outline-border) !important;
  color: var(--btn-outline-color) !important;
}

.btn-outline:hover:not(:disabled) {
  background: var(--btn-outline-hover-bg) !important;
  color: var(--btn-outline-hover-color) !important;
  transform: var(--btn-primary-hover-transform) !important;
  text-decoration: none !important;
}

.btn-outline:active:not(:disabled) {
  transform: translateY(0) !important;
}

/* ==========================================================================
   按钮尺寸变体
   ========================================================================== */
.btn-sm {
  padding: var(--spacing-sm) var(--spacing-md) !important;
  font-size: var(--font-size-sm) !important;
  border-radius: 8px !important;
}

.btn-lg {
  padding: var(--spacing-lg) var(--spacing-xl) !important;
  font-size: var(--font-size-lg) !important;
  border-radius: var(--card-radius) !important;
}

.btn-xl {
  padding: var(--spacing-xl) var(--spacing-2xl) !important;
  font-size: var(--font-size-xl) !important;
  border-radius: var(--card-radius) !important;
}

/* ==========================================================================
   按钮宽度变体
   ========================================================================== */
.btn-block {
  width: 100% !important;
}

.btn-auto {
  width: auto !important;
}

/* ==========================================================================
   图标按钮
   ========================================================================== */
.btn-icon-only {
  padding: var(--spacing-md) !important;
  aspect-ratio: 1 !important;
}

.btn-icon-left .btn-icon {
  margin-right: var(--spacing-xs) !important;
}

.btn-icon-right .btn-icon {
  margin-left: var(--spacing-xs) !important;
}

/* ==========================================================================
   特殊状态按钮
   ========================================================================== */
.btn-success {
  background: var(--theme-gradient-success) !important;
  color: #ffffff !important;
}

.btn-warning {
  background: linear-gradient(
    135deg,
    var(--theme-warning) 0%,
    #dd6b20 100%
  ) !important;
  color: #ffffff !important;
}

.btn-error {
  background: linear-gradient(
    135deg,
    var(--theme-error) 0%,
    #e53e3e 100%
  ) !important;
  color: #ffffff !important;
}

.btn-info {
  background: linear-gradient(
    135deg,
    var(--theme-info) 0%,
    #3182ce 100%
  ) !important;
  color: #ffffff !important;
}

/* ==========================================================================
   WordPress特定按钮适配
   ========================================================================== */

/* 搜索按钮 */
.search-submit-btn,
.hymns-search-btn,
.ebooks-search-btn,
.messages-search-btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: var(--spacing-sm) !important;
  padding: var(--spacing-md) var(--spacing-lg) !important;
  border: none !important;
  border-radius: var(--card-radius-small) !important;
  font-size: var(--font-size-base) !important;
  font-weight: var(--font-weight-semibold) !important;
  text-decoration: none !important;
  cursor: pointer !important;
  transition: all var(--transition-base) !important;
  white-space: nowrap !important;
  user-select: none !important;
  outline: none !important;
  background: var(--btn-primary-bg) !important;
  color: var(--btn-primary-color) !important;
}

.search-submit-btn:hover:not(:disabled),
.hymns-search-btn:hover:not(:disabled),
.ebooks-search-btn:hover:not(:disabled),
.messages-search-btn:hover:not(:disabled) {
  transform: var(--btn-primary-hover-transform) !important;
  box-shadow: var(--btn-primary-hover-shadow) !important;
  color: var(--btn-primary-color) !important;
  text-decoration: none !important;
}

/* 通用提交按钮 */
button[type='submit']:not(.search-submit-btn):not(.hymns-search-btn):not(
    .ebooks-search-btn
  ):not(.messages-search-btn),
input[type='submit'],
.wp-block-button__link {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: var(--spacing-sm) !important;
  padding: var(--spacing-md) var(--spacing-lg) !important;
  border: none !important;
  border-radius: var(--card-radius-small) !important;
  font-size: var(--font-size-base) !important;
  font-weight: var(--font-weight-semibold) !important;
  text-decoration: none !important;
  cursor: pointer !important;
  transition: all var(--transition-base) !important;
  white-space: nowrap !important;
  user-select: none !important;
  outline: none !important;
  background: var(--btn-primary-bg) !important;
  color: var(--btn-primary-color) !important;
}

button[type='submit']:hover:not(:disabled),
input[type='submit']:hover:not(:disabled),
.wp-block-button__link:hover {
  transform: var(--btn-primary-hover-transform) !important;
  box-shadow: var(--btn-primary-hover-shadow) !important;
  color: var(--btn-primary-color) !important;
  text-decoration: none !important;
}

/* 分页按钮 */
.page-numbers,
.pagination a,
.pagination span {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: var(--spacing-sm) !important;
  padding: var(--spacing-sm) var(--spacing-md) !important;
  border-radius: var(--card-radius-small) !important;
  font-size: var(--font-size-base) !important;
  font-weight: var(--font-weight-semibold) !important;
  text-decoration: none !important;
  cursor: pointer !important;
  transition: all var(--transition-base) !important;
  white-space: nowrap !important;
  user-select: none !important;
  outline: none !important;
  background: transparent !important;
  border: var(--btn-outline-border) !important;
  color: var(--btn-outline-color) !important;
}

.page-numbers:hover,
.pagination a:hover,
.pagination span:hover {
  background: var(--btn-outline-hover-bg) !important;
  color: var(--btn-outline-hover-color) !important;
  transform: var(--btn-primary-hover-transform) !important;
  text-decoration: none !important;
}

.page-numbers.current,
.pagination .current {
  background: var(--btn-primary-bg) !important;
  color: var(--btn-primary-color) !important;
  border: 2px solid var(--theme-primary) !important;
}

/* 清除搜索按钮 */
.clear-search {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: var(--spacing-sm) !important;
  padding: var(--spacing-sm) var(--spacing-md) !important;
  border-radius: 8px !important;
  font-size: var(--font-size-sm) !important;
  font-weight: var(--font-weight-semibold) !important;
  text-decoration: none !important;
  cursor: pointer !important;
  transition: all var(--transition-base) !important;
  white-space: nowrap !important;
  user-select: none !important;
  outline: none !important;
  background: transparent !important;
  border: 1px solid var(--theme-primary) !important;
  color: var(--btn-outline-color) !important;
}

.clear-search:hover {
  background: var(--btn-outline-hover-bg) !important;
  color: var(--btn-outline-hover-color) !important;
  transform: var(--btn-primary-hover-transform) !important;
  text-decoration: none !important;
}

/* ==========================================================================
   响应式适配
   ========================================================================== */
@media (max-width: 768px) {
  .btn-base {
    padding: var(--spacing-sm) var(--spacing-md) !important;
    font-size: var(--font-size-sm) !important;
  }

  .btn-lg {
    padding: var(--spacing-md) var(--spacing-lg) !important;
    font-size: var(--font-size-base) !important;
  }

  .btn-xl {
    padding: var(--spacing-lg) var(--spacing-xl) !important;
    font-size: var(--font-size-lg) !important;
  }

  .btn-responsive {
    width: 100% !important;
    justify-content: center !important;
  }
}

/* ==========================================================================
   动画禁用（无障碍支持）
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
  .btn-base {
    transition: none !important;
  }

  .btn-base:hover:not(:disabled) {
    transform: none !important;
  }
}

/* ==========================================================================
   高对比度模式支持
   ========================================================================== */
@media (prefers-contrast: high) {
  .btn-base {
    border: 2px solid var(--theme-gray-800) !important;
  }

  .btn-primary {
    background: var(--theme-gray-800) !important;
    color: #ffffff !important;
  }

  .btn-outline {
    border: 2px solid var(--theme-gray-800) !important;
    color: var(--theme-gray-800) !important;
  }
}
