/* ============================================ 主题配置插件 - 现代化 UI 设计 设计理念:清晰、高效、美观 ============================================ */ /* 全局容器 */ .template { max-width: 1400px; margin: 0 auto; padding: 20px; } /* 隐藏加载时的闪烁 */ [v-cloak] { display: none; } /* 页面标题优化 */ .template > h1 { font-size: 28px; font-weight: 700; color: #1e293b; margin-bottom: 24px; padding-bottom: 16px; border-bottom: 2px solid #e2e8f0; display: flex; align-items: center; gap: 12px; } .template > h1::before { content: '🎨'; font-size: 32px; } /* 卡片优化 - 增加层次感和呼吸感 */ .theme-card { margin-bottom: 24px; border-radius: 12px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04); transition: all 0.3s ease; overflow: hidden; background: white; } .theme-card:hover { box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08); transform: translateY(-2px); } /* 卡片标题优化 */ .theme-card .t-card__title { font-size: 18px; font-weight: 600; color: #1e293b; padding: 20px 24px; border-bottom: 2px solid #f1f5f9; background: linear-gradient(135deg, #f8fafc 0%, #ffffff 100%); } .theme-card .t-card__body { padding: 24px; } /* 表单网格 - 优化间距和布局 */ .form-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 24px; padding: 4px 0; } /* 表单项优化 */ .form-item { display: flex; flex-direction: column; min-height: 76px; } .form-item--full { grid-column: 1 / -1; } /* 标签样式优化 - 更清晰的视觉层次 */ .form-item label { font-size: 14px; font-weight: 600; color: #374151; margin-bottom: 10px; display: flex; align-items: center; line-height: 1.5; } .form-item label::before { content: ''; width: 3px; height: 16px; background: linear-gradient(180deg, #38BDF8 0%, #6366F1 100%); border-radius: 2px; margin-right: 10px; opacity: 0.8; } /* Switch 开关优化 - 解决"新窗口打开"文字过长问题 */ .form-item--switch { flex-direction: row; align-items: center; justify-content: space-between; min-height: 52px; padding: 14px 18px; background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); border-radius: 10px; border: 1px solid #e2e8f0; transition: all 0.3s ease; } .form-item--switch:hover { background: linear-gradient(135deg, #f1f5f9 0%, #e2e8f0 100%); border-color: #cbd5e1; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); } .form-item--switch label { margin-bottom: 0; font-size: 14px; flex: 1; font-weight: 500; } .form-item--switch label::before { background: linear-gradient(180deg, #38BDF8 0%, #6366F1 100%); height: 14px; width: 3px; } /* Switch 标签图标优化 */ .switch-label-icon { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; background: linear-gradient(135deg, #38BDF8 0%, #6366F1 100%); border-radius: 4px; color: white; font-size: 11px; font-weight: 700; margin-right: 6px; } /* 提示文本优化 */ .theme-tip { margin: 0 0 20px; padding: 14px 18px; background: linear-gradient(135deg, #eff6ff 0%, #f5f3ff 100%); border-left: 4px solid #38BDF8; border-radius: 8px; color: #475569; font-size: 13px; line-height: 1.7; } .theme-tip code { padding: 3px 8px; background: rgba(56, 189, 248, 0.12); border-radius: 4px; color: #38BDF8; font-family: 'JetBrains Mono', 'Consolas', 'Monaco', monospace; font-size: 12px; font-weight: 500; } /* JSON 编辑器优化 */ .theme-textarea textarea { font-family: 'JetBrains Mono', 'Consolas', 'Monaco', monospace; font-size: 13px; line-height: 1.7; background: #0f172a; color: #e2e8f0; border-radius: 10px; padding: 18px !important; border: 1px solid #1e293b; } .theme-textarea textarea:focus { background: #1e293b; border-color: #38BDF8; box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.1); } /* 轮播/配置项卡片优化 - 更有层次感 */ .banner-item, .config-item { border: 1px solid #e2e8f0; border-radius: 12px; padding: 24px; margin-bottom: 24px; background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%); box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04); transition: all 0.3s ease; position: relative; overflow: hidden; } .banner-item::before, .config-item::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, #38BDF8 0%, #6366F1 50%, #8B5CF6 100%); opacity: 0; transition: opacity 0.3s ease; } .banner-item:hover, .config-item:hover { border-color: #cbd5e1; box-shadow: 0 6px 16px rgba(0, 0, 0, 0.1); transform: translateY(-3px); } .banner-item:hover::before, .config-item:hover::before { opacity: 1; } /* 配置项头部优化 */ .banner-item__header, .config-item__header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 24px; padding-bottom: 14px; border-bottom: 2px solid #f1f5f9; } .banner-item__header h4, .config-item__header h4 { margin: 0; font-size: 17px; font-weight: 700; color: #1e293b; display: flex; align-items: center; gap: 10px; } .banner-item__header h4::before, .config-item__header h4::before { content: '●'; color: #38BDF8; font-size: 14px; } /* 子标题优化 */ .sub-title { margin: 32px 0 16px; padding-left: 14px; font-size: 16px; font-weight: 700; color: #475569; border-left: 4px solid #38BDF8; display: flex; align-items: center; } /* 空状态优化 - 更友好的视觉引导 */ .empty-tip { padding: 40px 24px; border: 2px dashed #cbd5e1; border-radius: 12px; color: #64748b; margin-bottom: 24px; background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); text-align: center; font-size: 14px; line-height: 1.8; position: relative; transition: all 0.3s ease; } .empty-tip::before { content: '📋'; display: block; font-size: 36px; margin-bottom: 12px; opacity: 0.7; } .empty-tip:hover { border-color: #94a3b8; background: linear-gradient(135deg, #f1f5f9 0%, #e2e8f0 100%); } /* 上传行优化 - 更紧凑的布局 */ .upload-row { display: flex; align-items: center; gap: 10px; } .upload-row .t-input { flex: 1; } .upload-row .t-button { flex-shrink: 0; min-width: 90px; } /* 底部操作栏优化 */ .action-bar { display: flex; justify-content: flex-end; align-items: center; gap: 12px; margin-top: 40px; padding: 24px; background: linear-gradient(135deg, #f8fafc 0%, #ffffff 100%); border-radius: 12px; border: 1px solid #e2e8f0; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06); position: sticky; bottom: 20px; z-index: 100; } /* 按钮增强 */ .action-bar .t-button { min-width: 130px; font-weight: 600; transition: all 0.3s ease; padding: 10px 24px; } .action-bar .t-button--primary { background: linear-gradient(135deg, #38BDF8 0%, #6366F1 100%); box-shadow: 0 4px 14px rgba(56, 189, 248, 0.35); border: none; } .action-bar .t-button--primary:hover { box-shadow: 0 6px 20px rgba(56, 189, 248, 0.45); transform: translateY(-2px); } /* 间距工具类优化 */ .mt-10 { margin-top: 20px; } .ml-10 { margin-left: 12px; } .mb-10 { margin-bottom: 20px; } /* Tab 标签页优化 */ .t-tabs__nav { background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%); border-radius: 12px 12px 0 0; padding: 10px; margin-bottom: 24px; } .t-tab { font-weight: 600; font-size: 15px; transition: all 0.3s ease; padding: 10px 20px; border-radius: 8px; } .t-tab:hover { background: rgba(56, 189, 248, 0.08); } .t-tab.t-is-active { background: linear-gradient(135deg, #38BDF8 0%, #6366F1 100%) !important; color: white !important; box-shadow: 0 4px 12px rgba(56, 189, 248, 0.3); } /* 响应式优化 */ @media (max-width: 768px) { .template { padding: 12px; } .form-grid { grid-template-columns: 1fr; gap: 16px; } .banner-item, .config-item { padding: 18px; } .action-bar { flex-direction: column; gap: 10px; position: relative; bottom: 0; } .action-bar .t-button { width: 100%; } .form-item--switch { flex-direction: column; align-items: flex-start; gap: 12px; } } /* 滚动条美化 */ ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-track { background: #f1f5f9; border-radius: 5px; } ::-webkit-scrollbar-thumb { background: linear-gradient(180deg, #38BDF8 0%, #6366F1 100%); border-radius: 5px; transition: background 0.3s ease; } ::-webkit-scrollbar-thumb:hover { background: linear-gradient(180deg, #0EA5E9 0%, #4F46E5 100%); } /* 输入框聚焦优化 */ .t-input:focus-within, .t-textarea:focus-within { box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.12); border-color: #38BDF8; } /* 加载状态优化 */ .t-button--loading { opacity: 0.6; cursor: not-allowed; pointer-events: none; } /* 删除按钮优化 */ .t-button--danger { transition: all 0.3s ease; } .t-button--danger:hover { transform: scale(1.05); box-shadow: 0 4px 14px rgba(239, 68, 68, 0.35); } /* 成功状态提示 */ .success-indicator { display: inline-flex; align-items: center; gap: 6px; padding: 6px 14px; background: linear-gradient(135deg, #10b981 0%, #059669 100%); color: white; border-radius: 20px; font-size: 13px; font-weight: 600; box-shadow: 0 2px 8px rgba(16, 185, 129, 0.3); } /* 表单验证提示 */ .form-error { color: #ef4444; font-size: 13px; margin-top: 6px; display: flex; align-items: center; gap: 6px; font-weight: 500; } .form-error::before { content: '⚠'; font-size: 15px; } /* 动画效果 */ @keyframes slideIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .banner-item, .config-item { animation: slideIn 0.3s ease; }