@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&display=swap');

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html, body {
  width: 100%;
  height: 100%;
  overflow: hidden;
}

body {
  font-family: var(--font-family);
  background: var(--bg-primary);
  color: var(--text-primary);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

#app {
  width: 100%;
  height: 100%;
}

/* ===== 自定义滚动条 ===== */
::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}

::-webkit-scrollbar-track {
  background: transparent;
}

::-webkit-scrollbar-thumb {
  background: rgba(56, 189, 248, 0.2);
  border-radius: 3px;
}

::-webkit-scrollbar-thumb:hover {
  background: rgba(56, 189, 248, 0.35);
}

/* ===== 选择高亮 ===== */
::selection {
  background: rgba(37, 99, 235, 0.4);
  color: var(--text-primary);
}

/* ===== 毛玻璃通用类 ===== */
.glass {
  background: var(--bg-card);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border: 1px solid var(--border-color);
}

/* ===== 渐变发光边框 ===== */
.glow-border {
  position: relative;
}

.glow-border::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1px;
  background: var(--gradient-card-border);
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  pointer-events: none;
}

/* ===== 渐变文字 ===== */
.gradient-text {
  background: var(--gradient-accent);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* ===== 动画 ===== */
@keyframes fadeIn {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes slideInLeft {
  from { opacity: 0; transform: translateX(-20px); }
  to { opacity: 1; transform: translateX(0); }
}

@keyframes glow {
  0%, 100% { box-shadow: 0 0 5px rgba(37, 99, 235, 0.2); }
  50% { box-shadow: 0 0 20px rgba(37, 99, 235, 0.4); }
}

@keyframes shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

.fade-in {
  animation: fadeIn var(--transition-normal) ease forwards;
}

/* ===== Naive UI 深色主题覆盖 ===== */
.n-button--primary-type {
  background: var(--gradient-accent) !important;
  border: none !important;
}

.n-card {
  background: var(--bg-card) !important;
  border-color: var(--border-color) !important;
}

.n-modal {
  background: var(--bg-secondary) !important;
  border: 1px solid var(--border-color) !important;
}

.n-input {
  background: var(--bg-tertiary) !important;
  border-color: var(--border-color) !important;
  color: var(--text-primary) !important;
}

.n-input:focus-within {
  border-color: var(--color-primary) !important;
  box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.2) !important;
}

.n-dialog {
  background: var(--bg-secondary) !important;
  border: 1px solid var(--border-color) !important;
}

.n-dialog__title {
  color: var(--text-primary) !important;
}

.n-dialog__content {
  color: var(--text-secondary) !important;
}

/* ===== 对话框按钮统一风格 ===== */
/* 主操作（确认/保存）：蓝色渐变，与页面主按钮一致 */
.n-dialog .n-button--primary-type {
  background: var(--gradient-accent) !important;
  border: none !important;
  color: #fff !important;
}

.n-dialog .n-button--primary-type:hover {
  filter: brightness(1.1);
}

/* 取消/次要操作：暗色透明背景，与深色主题融合 */
.n-dialog .n-button--default-type {
  background: rgba(56, 189, 248, 0.06) !important;
  border: 1px solid var(--border-color) !important;
  color: var(--text-secondary) !important;
}

.n-dialog .n-button--default-type:hover {
  background: rgba(56, 189, 248, 0.12) !important;
  border-color: var(--border-color-hover) !important;
  color: var(--text-primary) !important;
}

/* 危险操作（删除/丢弃）：红色调 */
.n-dialog .n-button--error-type {
  background: linear-gradient(135deg, #EF4444 0%, #DC2626 100%) !important;
  border: none !important;
  color: #fff !important;
}

.n-dialog .n-button--error-type:hover {
  filter: brightness(1.1);
}

/* 防止意外出现橙黄色 warning 按钮：强制降级为 default 样式 */
.n-dialog .n-button--warning-type {
  background: rgba(56, 189, 248, 0.06) !important;
  border: 1px solid var(--border-color) !important;
  color: var(--text-secondary) !important;
}

.n-dialog .n-button--warning-type:hover {
  background: rgba(56, 189, 248, 0.12) !important;
  color: var(--text-primary) !important;
}
