<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> <title>VideoSwift - Online Video Downloader</title> <style> * margin: 0; padding: 0; box-sizing: border-box; font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, sans-serif;
.spinner width: 20px; height: 20px; border: 2px solid #334155; border-top: 2px solid #3b82f6; border-radius: 50%; animation: spin 0.8s linear infinite; online video downloader
.url-input-group:focus-within border-color: #3b82f6; box-shadow: 0 0 0 3px rgba(59,130,246,0.25); meta name="viewport" content="width=device-width
body background: linear-gradient(145deg, #0b1120 0%, #111827 100%); min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 2rem 1.5rem; VideoSwift - Online Video Downloader<
.fetch-btn:hover background: linear-gradient(95deg, #3b82f6, #1e3a8a); transform: scale(0.97);
// simple escape helper function escapeHtml(str) return str.replace(/[&<>]/g, function(m) if (m === '&') return '&'; if (m === '<') return '<'; if (m === '>') return '>'; return m; ).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, function(c) return c; );
.loading display: flex; justify-content: center; align-items: center; gap: 0.5rem; color: #94a3b8; padding: 1rem;