@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; }