* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: #1a1a1a; color: #ffffff; overflow-x: hidden; } /* 侧边栏样式 */ .sidebar { position: fixed; left: 0; top: 0; width: 240px; height: 100vh; background: #2a2a2a; border-right: 1px solid #3a3a3a; display: flex; flex-direction: column; z-index: 1000; } .logo { padding: 20px; display: flex; align-items: center; gap: 10px; font-size: 18px; font-weight: bold; border-bottom: 1px solid #3a3a3a; } .logo i { color: #8b5cf6; font-size: 20px; } .nav-menu { flex: 1; padding: 20px 0; overflow-y: auto; } /* 快速操作区 */ .quick-actions { padding: 0 15px 20px; border-bottom: 1px solid #3a3a3a; margin-bottom: 20px; } .quick-btn { width: 100%; padding: 12px 15px; margin-bottom: 8px; border: none; border-radius: 8px; cursor: pointer; transition: all 0.2s; display: flex; align-items: center; gap: 10px; font-size: 13px; font-weight: 500; } .create-btn { background: #8b5cf6; color: white; } .create-btn:hover { background: #7c3aed; } .import-btn { background: #374151; color: #d1d5db; border: 1px solid #4b5563; } .import-btn:hover { background: #4b5563; color: white; } .nav-section { margin-bottom: 25px; } .nav-title { padding: 8px 20px; font-size: 12px; color: #888; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; display: flex; align-items: center; gap: 8px; transition: all 0.2s; } .nav-title:hover { color: #ccc; } .nav-title.expandable { cursor: pointer; } .expand-icon { font-size: 10px; transition: transform 0.2s; } .nav-title.collapsed .expand-icon { transform: rotate(-90deg); } .nav-subsection { overflow: hidden; transition: max-height 0.3s ease; } .nav-subsection.collapsed { max-height: 0; } .nav-item { padding: 10px 20px; display: flex; align-items: center; gap: 12px; cursor: pointer; transition: all 0.2s; color: #ccc; position: relative; } .nav-item:hover { background: #3a3a3a; color: #fff; } .nav-item.active { background: #8b5cf6; color: #fff; } .nav-item i { width: 16px; text-align: center; font-size: 14px; } /* 移除了三级结构相关的样式 */ .user-info { padding: 20px; border-top: 1px solid #3a3a3a; display: flex; align-items: center; gap: 10px; cursor: pointer; } .user-avatar { width: 32px; height: 32px; background: #8b5cf6; border-radius: 50%; display: flex; align-items: center; justify-content: center; } /* 主内容区样式 */ .main-content { margin-left: 240px; min-height: 100vh; background: #1a1a1a; } .top-nav { padding: 20px 30px; border-bottom: 1px solid #3a3a3a; display: flex; justify-content: space-between; align-items: center; background: #2a2a2a; } .breadcrumb { display: flex; align-items: center; gap: 8px; color: #888; } .breadcrumb span:last-child { color: #fff; } .top-actions { display: flex; align-items: center; gap: 15px; } .btn-icon { width: 40px; height: 40px; border: none; background: transparent; color: #ccc; border-radius: 8px; cursor: pointer; transition: all 0.2s; display: flex; align-items: center; justify-content: center; } .btn-icon:hover { background: #3a3a3a; color: #fff; } .btn-primary { padding: 10px 20px; background: #8b5cf6; color: white; border: none; border-radius: 8px; cursor: pointer; font-weight: 500; transition: all 0.2s; display: flex; align-items: center; gap: 8px; } .btn-primary:hover { background: #7c3aed; } .btn-secondary { padding: 10px 20px; background: transparent; color: #ccc; border: 1px solid #3a3a3a; border-radius: 8px; cursor: pointer; transition: all 0.2s; } .btn-secondary:hover { background: #3a3a3a; color: #fff; } /* 内容区域 */ .content-area { padding: 30px; } .content-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 30px; } .content-header h1 { font-size: 24px; font-weight: 600; } .view-controls { display: flex; gap: 10px; } .view-btn { width: 40px; height: 40px; border: 1px solid #3a3a3a; background: transparent; color: #ccc; border-radius: 8px; cursor: pointer; transition: all 0.2s; display: flex; align-items: center; justify-content: center; } .view-btn:hover { background: #3a3a3a; color: #fff; } .view-btn.active { background: #8b5cf6; border-color: #8b5cf6; color: #fff; } /* 项目网格 */ .projects-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px; } .project-card { background: #2a2a2a; border: 1px solid #3a3a3a; border-radius: 12px; overflow: hidden; cursor: pointer; transition: all 0.2s; display: flex; flex-direction: column; } .project-card:hover { border-color: #8b5cf6; transform: translateY(-2px); } /* 项目头部 - 名称和菜单 */ .project-header { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; border-bottom: 1px solid #3a3a3a; background: #2a2a2a; } .project-title { font-size: 16px; font-weight: 600; color: #fff; line-height: 1.4; flex: 1; margin-right: 8px; margin-bottom: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .project-header-actions { display: flex; align-items: center; gap: 8px; } .favorite-icon { color: #ffd700; font-size: 14px; } .menu-item .fa-star.favorited { color: #ffd700; } .project-menu { width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; border-radius: 4px; color: #888; cursor: pointer; transition: all 0.2s ease; flex-shrink: 0; } .project-menu:hover { background: #3a3a3a; color: #fff; } .project-menu i { font-size: 14px; } /* 项目图片 */ .project-image { width: 100%; height: 160px; background: #3a3a3a; display: flex; align-items: center; justify-content: center; font-size: 48px; color: #666; flex: 1; position: relative; } .project-image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; } .project-card:hover .project-image img { transform: scale(1.05); } .project-type-badge { position: absolute; top: 8px; right: 8px; background: rgba(139, 92, 246, 0.9); color: #fff; padding: 4px 8px; border-radius: 12px; font-size: 11px; font-weight: 500; backdrop-filter: blur(4px); } /* 项目底部 - 时间 */ .project-footer { padding: 12px 16px; border-top: 1px solid #3a3a3a; background: #2a2a2a; } .project-date { font-size: 12px; color: #888; text-align: center; margin: 0; } /* 项目右键菜单 */ .project-context-menu { position: fixed; background: #2a2a2a; border: 1px solid #3a3a3a; border-radius: 8px; box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3); min-width: 180px; padding: 8px 0; z-index: 2000; } .menu-item { display: flex; align-items: center; padding: 10px 16px; color: #fff; cursor: pointer; transition: background-color 0.2s ease; font-size: 14px; } .menu-item:hover { background: #3a3a3a; } .menu-item.danger { color: #ff6b6b; } .menu-item.danger:hover { background: rgba(255, 107, 107, 0.1); } .menu-item i { width: 16px; margin-right: 12px; font-size: 14px; } .menu-divider { height: 1px; background: #3a3a3a; margin: 8px 0; } /* 模态框样式 */ .modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.8); display: none; align-items: center; justify-content: center; z-index: 2000; } .modal.show { display: flex; } .modal-content { background: #2a2a2a; border-radius: 12px; width: 90%; max-width: 800px; max-height: 90vh; overflow-y: auto; border: 1px solid #3a3a3a; } .modal-header { padding: 20px 30px; border-bottom: 1px solid #3a3a3a; display: flex; justify-content: space-between; align-items: center; } .modal-header h2 { font-size: 18px; font-weight: 600; } .modal-close { width: 32px; height: 32px; border: none; background: transparent; color: #ccc; border-radius: 6px; cursor: pointer; transition: all 0.2s; display: flex; align-items: center; justify-content: center; } .modal-close:hover { background: #3a3a3a; color: #fff; } .modal-body { padding: 30px; } .modal-footer { padding: 20px 30px; border-top: 1px solid #3a3a3a; display: flex; justify-content: flex-end; gap: 15px; } /* 搜索和过滤区域 */ .search-filter-area { background: #2a2a2a; border: 1px solid #3a3a3a; border-radius: 12px; padding: 20px; margin-bottom: 20px; display: flex; gap: 20px; align-items: center; } .search-box { position: relative; flex: 1; max-width: 400px; } .search-box input { width: 100%; padding: 12px 40px 12px 15px; background: #3a3a3a; border: 1px solid #4a4a4a; border-radius: 8px; color: #fff; font-size: 14px; } .search-box i { position: absolute; right: 15px; top: 50%; transform: translateY(-50%); color: #888; } .filter-options { display: flex; gap: 15px; } .filter-options select { padding: 12px 15px; background: #3a3a3a; border: 1px solid #4a4a4a; border-radius: 8px; color: #fff; font-size: 14px; cursor: pointer; } .filter-options select:focus { outline: none; border-color: #8b5cf6; } /* 创建项目模态框样式 */ .create-project-modal { max-width: 1000px; width: 95%; } .create-project-body { display: flex; gap: 0; padding: 0; height: 500px; } .templates-section { flex: 2; padding: 30px; border-right: 1px solid #3a3a3a; overflow-y: auto; } .templates-section h3 { margin-bottom: 20px; color: #fff; font-size: 16px; } .project-info-section { flex: 1; padding: 25px; display: flex; flex-direction: column; min-width: 0; background: #252525; } .project-info { flex: 1; } .project-actions { margin-top: 25px; padding-top: 20px; border-top: 1px solid #3a3a3a; display: flex; flex-direction: column; gap: 12px; } .project-actions .btn-primary, .project-actions .btn-secondary { width: 100%; padding: 12px; font-size: 14px; } /* 项目模板样式 */ .project-templates { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; } .template-item { padding: 16px; background: #3a3a3a; border: 2px solid transparent; border-radius: 12px; text-align: center; cursor: pointer; transition: all 0.2s; } .template-item:hover { border-color: #8b5cf6; background: #4a4a4a; } .template-item.selected { border-color: #8b5cf6; background: rgba(139, 92, 246, 0.1); } .template-icon { width: 48px; height: 48px; background: #8b5cf6; border-radius: 10px; display: flex; align-items: center; justify-content: center; margin: 0 auto 12px; font-size: 20px; color: white; } .template-name { font-size: 14px; font-weight: 500; color: #fff; line-height: 1.3; } .template-description { background: #3a3a3a; border-radius: 8px; padding: 15px; margin-bottom: 20px; } .template-description p { color: #ccc; line-height: 1.5; margin: 0; } /* 表单样式增强 */ .form-group { margin-bottom: 18px; } .form-group label { display: block; margin-bottom: 8px; font-weight: 500; color: #fff; font-size: 14px; } .form-group input, .form-group textarea { width: 100%; padding: 12px; background: #3a3a3a; border: 1px solid #4a4a4a; border-radius: 8px; color: #fff; font-size: 14px; transition: all 0.2s; font-family: inherit; } .form-group input:focus, .form-group textarea:focus { outline: none; border-color: #8b5cf6; background: #4a4a4a; } .form-group input::placeholder, .form-group textarea::placeholder { color: #888; } .form-group textarea { resize: vertical; min-height: 70px; } .location-input-group { display: flex; gap: 10px; align-items: stretch; } .location-input-group input { flex: 1; } .location-hint { display: flex; align-items: center; gap: 8px; margin-top: 8px; padding: 8px 12px; background: rgba(139, 92, 246, 0.1); border: 1px solid rgba(139, 92, 246, 0.3); border-radius: 6px; font-size: 12px; color: #ccc; } .location-hint i { color: #8b5cf6; font-size: 12px; } .btn-browse { padding: 12px 16px; background: #8b5cf6; color: white; border: none; border-radius: 8px; font-size: 14px; cursor: pointer; white-space: nowrap; transition: all 0.2s; display: flex; align-items: center; justify-content: center; min-width: 45px; } .btn-browse:hover { background: #7c3aed; } .btn-browse i { font-size: 14px; } .form-group { position: relative; } /* 无项目显示 */ .no-projects { grid-column: 1 / -1; text-align: center; padding: 60px 20px; color: #666; } .no-projects i { font-size: 48px; margin-bottom: 15px; display: block; } .no-projects p { font-size: 16px; margin: 0; } /* 模板描述样式 */ .template-description h4 { color: #8b5cf6; margin-bottom: 10px; font-size: 16px; } .template-description p { color: #ccc; line-height: 1.6; margin: 0; } /* 项目信息表单 */ .project-info h3 { font-size: 16px; margin-bottom: 10px; color: #fff; } .project-info p { color: #ccc; margin-bottom: 20px; line-height: 1.5; } .form-group { margin-bottom: 20px; } .form-group label { display: block; margin-bottom: 8px; font-weight: 500; color: #fff; } .form-group input { width: 100%; padding: 12px; background: #3a3a3a; border: 1px solid #4a4a4a; border-radius: 8px; color: #fff; font-size: 14px; transition: all 0.2s; } .form-group input:focus { outline: none; border-color: #8b5cf6; background: #4a4a4a; } .form-group input::placeholder { color: #888; } /* 导入区域样式 */ .import-area { text-align: center; } .upload-zone { border: 2px dashed #4a4a4a; border-radius: 12px; padding: 40px 20px; margin-bottom: 20px; transition: all 0.2s; cursor: pointer; } .upload-zone:hover { border-color: #8b5cf6; background: rgba(139, 92, 246, 0.05); } .upload-zone.dragover { border-color: #8b5cf6; background: rgba(139, 92, 246, 0.1); } .upload-zone i { font-size: 48px; color: #666; margin-bottom: 15px; display: block; } .upload-zone p { color: #ccc; margin-bottom: 15px; } .btn-upload { padding: 10px 20px; background: #8b5cf6; color: white; border: none; border-radius: 8px; cursor: pointer; font-weight: 500; transition: all 0.2s; } .btn-upload:hover { background: #7c3aed; } .import-options { display: flex; flex-direction: column; gap: 10px; text-align: left; } .import-options label { display: flex; align-items: center; gap: 10px; color: #ccc; cursor: pointer; } .import-options input[type="checkbox"] { width: auto; margin: 0; } /* 响应式设计 */ @media (max-width: 768px) { .sidebar { transform: translateX(-100%); transition: transform 0.3s; } .sidebar.open { transform: translateX(0); } .main-content { margin-left: 0; } .projects-grid { grid-template-columns: 1fr; } .project-templates { grid-template-columns: repeat(2, 1fr); } .modal-content { width: 95%; margin: 20px; } }