:root { --bg-color: #0f172a; --card-bg: #1e293b; --text-primary: #f8fafc; --text-secondary: #94a3b8; --accent-color: #38bdf8; --accent-hover: #0284c7; --border-color: #334155; --success-color: #10b981; --warning-color: #f59e0b; --danger-color: #ef4444; --border-radius: 12px; } * { box-sizing: border-box; margin: 0; padding: 0; font-family: 'Inter', system-ui, sans-serif; } body { background-color: var(--bg-color); color: var(--text-primary); min-height: 100vh; display: flex; justify-content: center; padding: 2rem 1rem; } .app-container { width: 100%; max-width: 900px; display: flex; flex-direction: column; gap: 1.5rem; } .header { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem; padding-bottom: 1rem; border-bottom: 1px solid var(--border-color); } .logo-group { display: flex; align-items: center; gap: 1rem; } .logo-icon { font-size: 2.2rem; } h1 { font-size: 1.5rem; font-weight: 700; } .subtitle { color: var(--text-secondary); font-size: 0.875rem; } .status-badges { display: flex; gap: 0.5rem; } .badge { padding: 0.35rem 0.75rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 600; } .badge-success { background-color: rgba(16, 185, 129, 0.2); color: #34d399; } .badge-info { background-color: rgba(56, 189, 248, 0.2); color: #38bdf8; } .card { background-color: var(--card-bg); border: 1px solid var(--border-color); border-radius: var(--border-radius); padding: 1.5rem; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.2); } .card h2 { font-size: 1.15rem; margin-bottom: 0.5rem; } .card-desc { color: var(--text-secondary); font-size: 0.9rem; margin-bottom: 1.25rem; } .download-form .input-wrapper { display: flex; gap: 0.75rem; } input[type="text"] { flex: 1; background-color: #0f172a; border: 1px solid var(--border-color); border-radius: 8px; padding: 0.75rem 1rem; color: #fff; font-size: 0.95rem; outline: none; transition: border-color 0.2s; } input[type="text"]:focus { border-color: var(--accent-color); } .btn { padding: 0.75rem 1.25rem; border-radius: 8px; border: none; font-weight: 600; cursor: pointer; transition: background-color 0.2s, transform 0.1s; } .btn:active { transform: scale(0.98); } .btn-primary { background-color: var(--accent-color); color: #0f172a; } .btn-primary:hover { background-color: var(--accent-hover); } .btn-secondary { background-color: #334155; color: #f8fafc; font-size: 0.85rem; padding: 0.5rem 1rem; } .btn-secondary:hover { background-color: #475569; } .quick-actions { display: flex; align-items: center; gap: 1rem; margin-top: 1rem; font-size: 0.85rem; color: var(--text-secondary); flex-wrap: wrap; } .tasks-list { display: flex; flex-direction: column; gap: 1rem; } .task-item { background-color: #0f172a; border: 1px solid var(--border-color); border-radius: 8px; padding: 1rem; } .task-header { display: flex; justify-content: space-between; margin-bottom: 0.5rem; font-size: 0.9rem; } .task-progress-bar { height: 8px; background-color: #334155; border-radius: 4px; overflow: hidden; margin-bottom: 0.5rem; } .task-progress-fill { height: 100%; background-color: var(--accent-color); width: 0%; transition: width 0.3s; } .task-current { font-size: 0.8rem; color: var(--text-secondary); } .table-container { overflow-x: auto; } .tracks-table { width: 100%; border-collapse: collapse; text-align: left; font-size: 0.85rem; } .tracks-table th { padding: 0.75rem; color: var(--text-secondary); border-bottom: 1px solid var(--border-color); } .tracks-table td { padding: 0.75rem; border-bottom: 1px solid #243248; } .tag-badge { display: inline-block; padding: 0.2rem 0.5rem; border-radius: 4px; font-size: 0.75rem; text-transform: uppercase; font-weight: 600; } .tag-yandex { background-color: #ef4444; color: #fff; } .tag-spotify { background-color: #10b981; color: #fff; } .tag-apple { background-color: #ec4899; color: #fff; } .tag-youtube { background-color: #e11d48; color: #fff; } .empty-state { text-align: center; color: var(--text-secondary); padding: 1.5rem; } .footer { text-align: center; font-size: 0.8rem; color: var(--text-secondary); margin-top: 1rem; } .footer a { color: var(--accent-color); text-decoration: none; }