* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); min-height: 100vh; } .app { min-height: 100vh; padding: 20px; max-width: 1200px; margin: 0 auto; } .app-header { background: white; padding: 30px; border-radius: 10px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); margin-bottom: 20px; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 20px; } .app-header h1 { color: #333; font-size: 2rem; } .user-info { display: flex; align-items: center; gap: 10px; background: #f0f0f0; padding: 10px 20px; border-radius: 20px; } .logout-btn { padding: 5px 15px; background: #f44336; color: white; border: none; border-radius: 5px; cursor: pointer; font-size: 0.9rem; transition: background 0.3s; } .logout-btn:hover { background: #d32f2f; } .user-label { color: #666; font-weight: 500; } .user-name { color: #667eea; font-weight: bold; font-size: 1.1rem; } .error-message { background: #fee; color: #c33; padding: 15px; border-radius: 10px; margin-bottom: 20px; border-left: 4px solid #c33; } .loading { text-align: center; padding: 40px; color: white; font-size: 1.2rem; } .downloads-container { background: white; padding: 30px; border-radius: 10px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .downloads-container h2 { color: #333; margin-bottom: 20px; font-size: 1.5rem; } .no-downloads { text-align: center; padding: 40px; color: #666; } .no-downloads p { margin: 10px 0; } .downloads-list { display: grid; gap: 20px; } .download-card { border: 2px solid #e0e0e0; border-radius: 10px; padding: 20px; transition: transform 0.2s, box-shadow 0.2s; display: flex; gap: 20px; align-items: flex-start; } .download-cover { flex-shrink: 0; width: 80px; border-radius: 6px; overflow: hidden; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); } .download-cover img { width: 100%; height: auto; display: block; } .download-info { flex: 1; min-width: 0; } .download-card:hover { transform: translateY(-2px); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.1); } .download-card.series { border-left: 4px solid #667eea; } .download-card.movie { border-left: 4px solid #f093fb; } .download-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; } .download-type { padding: 5px 15px; border-radius: 20px; font-size: 0.9rem; font-weight: 500; } .download-type.series { background: #e8eaf6; color: #667eea; } .download-type.movie { background: #fce4ec; color: #f093fb; } .download-type.torrent { background: #e0f2f1; color: #26a69a; } .download-status { padding: 5px 15px; border-radius: 20px; font-size: 0.9rem; font-weight: 500; text-transform: capitalize; } .download-status.downloading { background: #e8f5e9; color: #4caf50; } .download-status.completed { background: #e3f2fd; color: #2196f3; } .download-status.failed { background: #ffebee; color: #f44336; } .download-title { color: #333; margin-bottom: 10px; font-size: 1.2rem; } .download-series, .download-movie { color: #666; margin-bottom: 15px; font-style: italic; } .download-details { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 15px; padding-top: 15px; border-top: 1px solid #e0e0e0; } .detail-item { display: flex; flex-direction: column; gap: 5px; } .detail-label { color: #999; font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.5px; } .detail-value { color: #333; font-weight: 500; } .app-footer { margin-top: 20px; text-align: center; color: white; font-size: 0.9rem; } .app-footer p { opacity: 0.9; } .login-container { display: flex; justify-content: center; align-items: center; min-height: 100vh; padding: 20px; } .login-box { background: white; padding: 40px; border-radius: 10px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); width: 100%; max-width: 400px; } .login-box h2 { color: #333; margin-bottom: 30px; text-align: center; font-size: 1.8rem; } .form-group { margin-bottom: 20px; } .form-group label { display: block; color: #333; font-weight: 500; margin-bottom: 8px; } .form-group input { width: 100%; padding: 12px; border: 2px solid #e0e0e0; border-radius: 5px; font-size: 1rem; } .form-group input:focus { outline: none; border-color: #667eea; } .login-btn { width: 100%; padding: 12px; background: #667eea; color: white; border: none; border-radius: 5px; cursor: pointer; font-size: 1rem; font-weight: 500; transition: background 0.3s; } .login-btn:hover { background: #5568d3; } /* Progress bar with missing pieces */ .progress-item { grid-column: 1 / -1; } .progress-container { display: flex; flex-direction: column; gap: 5px; } .progress-bar { width: 100%; height: 20px; background: #ffebee; border-radius: 10px; overflow: hidden; position: relative; border: 1px solid #ffcdd2; } .progress-segment { height: 100%; transition: width 0.3s ease; } .progress-segment.downloaded { background: linear-gradient(90deg, #4caf50 0%, #66bb6a 100%); float: left; } .progress-text { font-weight: bold; color: #333; } .missing-text { color: #f44336; font-size: 0.9rem; font-weight: 500; } /* Refresh control styles */ .header-controls { display: flex; align-items: center; gap: 20px; } .refresh-control { display: flex; align-items: center; gap: 8px; } .refresh-control label { color: #666; font-size: 0.9rem; } .refresh-control select { padding: 5px 10px; border: 1px solid #ddd; border-radius: 5px; background: white; cursor: pointer; } @media (max-width: 768px) { .app-header { flex-direction: column; align-items: flex-start; } .controls { flex-direction: column; align-items: stretch; } .download-details { grid-template-columns: 1fr; } }