.app { max-width: 800px; margin: 0 auto; padding: 2rem; text-align: center; } header { margin-bottom: 3rem; } header h1 { font-size: 2.5rem; margin-bottom: 0.5rem; background: linear-gradient(45deg, #646cff, #61dafb); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } header p { color: #888; font-size: 1.1rem; } .upload-area { border: 2px dashed #646cff; border-radius: 12px; padding: 3rem; margin: 2rem 0; cursor: pointer; transition: all 0.3s ease; background: rgba(100, 108, 255, 0.05); } .upload-area:hover { border-color: #61dafb; background: rgba(97, 218, 251, 0.05); } .upload-content p { margin: 0.5rem 0; font-size: 1.1rem; } .upload-content audio { margin-top: 1rem; width: 100%; max-width: 400px; } .controls { margin: 2rem 0; } .controls button { background: #646cff; color: white; border: none; padding: 1rem 2rem; border-radius: 8px; font-size: 1rem; cursor: pointer; transition: all 0.3s ease; } .controls button:hover { background: #5a54d6; transform: translateY(-2px); } .controls button.recording { background: #ff4757; animation: pulse 2s infinite; } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } } .loading { margin: 2rem 0; padding: 1rem; background: rgba(100, 108, 255, 0.1); border-radius: 8px; color: #646cff; font-weight: 500; } .error { margin: 2rem 0; padding: 1rem; background: rgba(255, 71, 87, 0.1); border-radius: 8px; color: #ff4757; font-weight: 500; } .tags-section { margin: 2rem 0; text-align: left; } .tags-section h3 { margin-bottom: 1rem; color: #333; } .tags { display: flex; flex-direction: column; gap: 0.5rem; } .tag-item { display: flex; align-items: center; justify-content: space-between; padding: 0.5rem; border-radius: 8px; background: rgba(100, 108, 255, 0.05); transition: all 0.3s ease; } .tag-item.has-feedback { background: rgba(100, 108, 255, 0.1); } .tag { background: linear-gradient(45deg, #646cff, #61dafb); color: white; padding: 0.5rem 1rem; border-radius: 20px; font-size: 0.9rem; font-weight: 500; margin-right: 1rem; } .tag.custom { background: linear-gradient(45deg, #27ae60, #2ecc71); } .tag.negative { background: linear-gradient(45deg, #e74c3c, #c0392b); opacity: 0.6; } .tag.local { background: linear-gradient(45deg, #9b59b6, #8e44ad); } .tag.blended { background: linear-gradient(45deg, #f39c12, #e67e22); } .source-indicator { margin-left: 0.5rem; font-size: 0.8em; } .tag-controls { display: flex; gap: 0.25rem; } .feedback-btn { background: transparent; border: 2px solid #ddd; border-radius: 50%; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.3s ease; font-size: 0.9rem; } .feedback-btn:hover { transform: scale(1.1); } .feedback-btn.active { border-color: #646cff; background: #646cff; color: white; } .add-tag { display: flex; gap: 0.5rem; margin-top: 1rem; padding-top: 1rem; border-top: 1px solid #eee; } .tag-input { flex: 1; padding: 0.75rem; border: 2px solid #ddd; border-radius: 8px; font-size: 1rem; transition: border-color 0.3s ease; } .tag-input:focus { outline: none; border-color: #646cff; } .add-tag-btn { background: #27ae60; color: white; border: none; padding: 0.75rem 1.5rem; border-radius: 8px; cursor: pointer; font-size: 1rem; transition: background 0.3s ease; } .add-tag-btn:hover { background: #219a52; } .frequent-tags { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid #eee; } .frequent-tags h4 { margin-bottom: 0.5rem; color: #666; font-size: 0.9rem; } .frequent-tag-list { display: flex; flex-wrap: wrap; gap: 0.25rem; } .frequent-tag { background: #f8f9fa; border: 1px solid #ddd; color: #666; padding: 0.25rem 0.5rem; border-radius: 12px; font-size: 0.8rem; cursor: pointer; transition: all 0.3s ease; } .frequent-tag:hover { background: #646cff; color: white; border-color: #646cff; } .export-section { margin: 3rem 0 2rem 0; padding: 2rem; border: 1px solid #eee; border-radius: 12px; background: #fafafa; } .export-section h3 { margin-bottom: 1rem; color: #333; } .export-controls { display: flex; gap: 1rem; margin-bottom: 1rem; flex-wrap: wrap; } .export-btn { background: #3498db; color: white; border: none; padding: 0.75rem 1.5rem; border-radius: 8px; cursor: pointer; font-size: 1rem; transition: background 0.3s ease; } .export-btn:hover { background: #2980b9; } .clear-btn { background: #e74c3c; color: white; border: none; padding: 0.75rem 1.5rem; border-radius: 8px; cursor: pointer; font-size: 1rem; transition: background 0.3s ease; } .clear-btn:hover { background: #c0392b; } .model-stats { margin-top: 1rem; padding: 1rem; background: white; border-radius: 8px; border: 1px solid #ddd; } .model-stats p { margin: 0.25rem 0; color: #666; font-size: 0.9rem; } footer { margin-top: 3rem; padding: 2rem 0 1rem 0; border-top: 1px solid #eee; text-align: center; } footer p { margin: 0; color: #888; font-size: 0.9rem; line-height: 1.5; } footer a { color: #646cff; text-decoration: none; } footer a:hover { text-decoration: underline; } @media (max-width: 768px) { .app { padding: 1rem; } .upload-area { padding: 2rem 1rem; } header h1 { font-size: 2rem; } }