* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif; background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); min-height: 100vh; padding: 20px; padding-bottom: 40px; transition: all 0.3s ease; color: #2d3748; } body.dark-mode { background: linear-gradient(135deg, #1a202c 0%, #2d3748 100%); color: #e2e8f0; } .container { max-width: 1400px; margin: 0 auto; padding-bottom: 20px; } header { text-align: center; margin-bottom: 40px; padding: 30px 20px; position: relative; background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(10px); border-radius: 16px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.07); transition: all 0.3s ease; z-index: 10; } body.dark-mode header { background: rgba(26, 32, 44, 0.9); box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3); } header h1 { font-size: 2.2rem; margin-bottom: 10px; color: #2b6cb0; font-weight: 700; letter-spacing: -0.5px; transition: color 0.3s ease; } body.dark-mode header h1 { color: #63b3ed; } header p { font-size: 1rem; color: #718096; transition: color 0.3s ease; } body.dark-mode header p { color: #a0aec0; } /* 搜索框样式 */ .search-container { position: relative; max-width: 600px; margin: 20px auto 0; } .search-input { width: 100%; padding: 12px 20px; font-size: 1rem; border: 2px solid #e2e8f0; border-radius: 12px; background: white; transition: all 0.3s ease; outline: none; } .search-input:focus { border-color: #4299e1; box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.1); } body.dark-mode .search-input { background: #2d3748; border-color: #4a5568; color: #e2e8f0; } body.dark-mode .search-input:focus { border-color: #63b3ed; box-shadow: 0 0 0 3px rgba(99, 179, 237, 0.1); } .search-results { position: absolute; top: 100%; left: 0; right: 0; margin-top: 8px; background: white; border-radius: 12px; box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15); max-height: 70vh; overflow-y: auto; z-index: 9999; display: none; padding: 15px; border: 2px solid #e2e8f0; } body.dark-mode .search-results { background: #2d3748; box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); border-color: #4a5568; } /* body.search-active { padding-bottom: 400px; } */ .search-result-section { margin-bottom: 20px; } .search-result-section:last-child { margin-bottom: 0; } .search-result-title { font-size: 1rem; color: #4a5568; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 2px solid #e2e8f0; } body.dark-mode .search-result-title { color: #a0aec0; border-bottom-color: #4a5568; } .no-results { text-align: center; color: #a0aec0; padding: 20px; } .theme-toggle { position: absolute; right: 65px; top: 20px; background: white; border: 1px solid #e2e8f0; border-radius: 50%; width: 40px; height: 40px; cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 1.2rem; transition: all 0.3s ease; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); } .theme-toggle:hover { transform: scale(1.1); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); border-color: #4299e1; } body.dark-mode .theme-toggle { background: #2d3748; border-color: #4a5568; } body.dark-mode .theme-toggle:hover { border-color: #63b3ed; } /* 视图切换按钮 */ .view-toggle { position: absolute; right: 15px; top: 20px; background: white; border: 1px solid #e2e8f0; border-radius: 50%; width: 40px; height: 40px; cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 1.2rem; transition: all 0.3s ease; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); } .view-toggle:hover { transform: scale(1.1); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); border-color: #4299e1; } body.dark-mode .view-toggle { background: #2d3748; border-color: #4a5568; } body.dark-mode .view-toggle:hover { border-color: #63b3ed; } .view-tooltip { position: absolute; bottom: -35px; left: 50%; transform: translateX(-50%) translateY(-10px); background: rgba(0, 0, 0, 0.85); color: #fff; padding: 6px 12px; border-radius: 6px; font-size: 0.8rem; white-space: nowrap; opacity: 0; visibility: hidden; transition: all 0.3s ease; pointer-events: none; z-index: 1000; } .view-tooltip::before { content: ''; position: absolute; top: -6px; left: 50%; transform: translateX(-50%); border-left: 6px solid transparent; border-right: 6px solid transparent; border-bottom: 6px solid rgba(0, 0, 0, 0.85); } .view-toggle:hover .view-tooltip { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); } /* 视图切换下拉菜单 */ .view-menu { position: absolute; top: 70px; right: 15px; background: white; border: 1px solid #e2e8f0; border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); padding: 8px 0; min-width: 150px; z-index: 101; display: none; } body.dark-mode .view-menu { background: #2d3748; border-color: #4a5568; } .view-menu.show { display: block; } .view-menu-item { display: flex; align-items: center; padding: 10px 16px; color: #2d3748; text-decoration: none; transition: background-color 0.2s ease; cursor: pointer; border: none; background: none; width: 100%; font-size: 0.9em; text-align: left; } body.dark-mode .view-menu-item { color: #e2e8f0; } .view-menu-item:hover { background-color: #f7fafc; } body.dark-mode .view-menu-item:hover { background-color: #4a5568; } .view-menu-item.active { background-color: #4299e1; color: white; } .view-menu-icon { margin-right: 10px; font-size: 1.1em; } .theme-tooltip { position: absolute; bottom: -35px; left: 50%; transform: translateX(-50%) translateY(-10px); background: rgba(0, 0, 0, 0.85); color: #fff; padding: 6px 12px; border-radius: 6px; font-size: 0.8rem; white-space: nowrap; opacity: 0; visibility: hidden; transition: all 0.3s ease; pointer-events: none; z-index: 1000; } .theme-tooltip::before { content: ''; position: absolute; top: -6px; left: 50%; transform: translateX(-50%); border-left: 6px solid transparent; border-right: 6px solid transparent; border-bottom: 6px solid rgba(0, 0, 0, 0.85); } .theme-tooltip.show { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); } .theme-toggle:hover .theme-tooltip { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); } .section { margin-bottom: 35px; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); border-radius: 16px; padding: 25px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.07); transition: all 0.3s ease; } body.dark-mode .section { background: rgba(26, 32, 44, 0.95); box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3); } .section-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; gap: 15px; } .section-title-wrapper { display: flex; align-items: center; gap: 12px; } .section-actions { display: flex; align-items: center; gap: 10px; } .section-title { color: #2b6cb0; font-size: 1.5rem; font-weight: 600; margin: 0; transition: color 0.3s ease; } body.dark-mode .section-title { color: #63b3ed; } .section-search { padding: 8px 15px; font-size: 0.9rem; border: 2px solid #e2e8f0; border-radius: 8px; background: white; transition: all 0.3s ease; outline: none; min-width: 200px; } .download-btn { padding: 6px 14px; font-size: 0.85rem; border: 2px solid #4299e1; border-radius: 8px; background: white; color: #4299e1; cursor: pointer; transition: all 0.3s ease; outline: none; font-weight: 500; white-space: nowrap; } .download-btn:hover { background: #4299e1; color: white; transform: translateY(-1px); box-shadow: 0 2px 6px rgba(66, 153, 225, 0.3); } body.dark-mode .download-btn { background: #2d3748; border-color: #63b3ed; color: #63b3ed; } body.dark-mode .download-btn:hover { background: #63b3ed; color: #2d3748; } .section-search:focus { border-color: #4299e1; box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.1); } body.dark-mode .section-search { background: #2d3748; border-color: #4a5568; color: #e2e8f0; } body.dark-mode .section-search:focus { border-color: #63b3ed; box-shadow: 0 0 0 3px rgba(99, 179, 237, 0.1); } .cards-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 18px; } .card { background: white; border-radius: 12px; padding: 20px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); cursor: pointer; position: relative; overflow: hidden; border: 1px solid #e2e8f0; } body.dark-mode .card { background: #2d3748; border-color: #4a5568; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); } .card::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 4px; background: linear-gradient(90deg, #4299e1, #667eea); transform: scaleX(0); transform-origin: left; transition: transform 0.3s ease; } body.dark-mode .card::before { background: linear-gradient(90deg, #63b3ed, #90cdf4); } .card:hover { transform: translateY(-4px); box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1); border-color: #4299e1; } body.dark-mode .card:hover { box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3); border-color: #63b3ed; } .card:hover::before { transform: scaleX(1); } .card-header { margin-bottom: 12px; } .card-title { font-size: 1.15rem; color: #2d3748; margin-bottom: 8px; font-weight: 600; transition: color 0.3s ease; } body.dark-mode .card-title { color: #e2e8f0; } .card-link { display: inline-block; color: #4299e1; text-decoration: none; font-size: 0.85rem; word-break: break-all; transition: color 0.2s ease; font-weight: 500; } body.dark-mode .card-link { color: #63b3ed; } .card-link:hover { color: #2b6cb0; text-decoration: underline; } body.dark-mode .card-link:hover { color: #90cdf4; } .card-description { color: #718096; line-height: 1.6; font-size: 0.9rem; transition: color 0.3s ease; } body.dark-mode .card-description { color: #a0aec0; } .empty-state { text-align: center; color: #a0aec0; padding: 40px; background: rgba(255, 255, 255, 0.5); border-radius: 12px; border: 2px dashed #cbd5e0; transition: all 0.3s ease; } body.dark-mode .empty-state { background: rgba(45, 55, 72, 0.5); border-color: #4a5568; color: #718096; } .empty-state p { font-size: 1rem; } footer { text-align: center; color: #718096; margin-top: 50px; padding: 30px 20px; font-size: 0.9rem; background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(10px); border-radius: 16px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.07); transition: all 0.3s ease; } body.dark-mode footer { background: rgba(26, 32, 44, 0.9); box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3); color: #a0aec0; } .footer-content { max-width: 1200px; margin: 0 auto; } .copyright { margin-bottom: 10px; color: #4a5568; transition: color 0.3s ease; } body.dark-mode .copyright { color: #a0aec0; } .beian-info { display: flex; justify-content: center; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 0.85rem; } .beian-link { color: #718096; text-decoration: none; transition: color 0.2s ease; display: inline-flex; align-items: center; gap: 5px; } body.dark-mode .beian-link { color: #a0aec0; } .beian-link:hover { color: #4299e1; } body.dark-mode .beian-link:hover { color: #63b3ed; } .beian-divider { color: #cbd5e0; user-select: none; transition: color 0.3s ease; } body.dark-mode .beian-divider { color: #4a5568; } .beian-icon { vertical-align: middle; } @media (max-width: 768px) { header h1 { font-size: 1.8rem; } .section-title { font-size: 1.3rem; } .cards-grid { grid-template-columns: 1fr; } .card { padding: 18px; } .theme-toggle { width: 40px; height: 40px; font-size: 1.1rem; right: 65px; top: 10px; } .theme-tooltip { font-size: 0.75rem; padding: 5px 10px; bottom: -32px; } .view-toggle { width: 40px; height: 40px; font-size: 1.1rem; right: 10px; top: 10px; } .view-tooltip { font-size: 0.75rem; padding: 5px 10px; bottom: -32px; } .section-header { flex-direction: column; align-items: flex-start; } .section-search { width: 100%; } footer { padding: 20px 15px; font-size: 0.85rem; } .beian-info { flex-direction: column; gap: 8px; } .beian-divider { display: none; } } @media (max-width: 480px) { body { padding: 10px; } header h1 { font-size: 1.5rem; } header p { font-size: 0.9rem; } .section-title { font-size: 1.2rem; } .card-title { font-size: 1.05rem; } footer { padding: 15px 10px; font-size: 0.8rem; } }