/* --- Variables & Reset --- */ :root { --bg-deep: #0f0c29; --bg-mid: #302b63; --bg-light: #24243e; --primary: #8b5cf6; /* Violet 500 */ --primary-glow: #a78bfa; --accent: #d8b4fe; --glass-bg: rgba(255, 255, 255, 0.05); --glass-border: rgba(255, 255, 255, 0.1); --glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37); --font-ui: 'Outfit', sans-serif; --font-mono: 'JetBrains Mono', monospace; } body { font-family: var(--font-ui); background-color: var(--bg-deep); color: #fff; overflow-x: hidden; } /* --- Animated Background --- */ .bg-gradient-animate { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(-45deg, #0f0c29, #302b63, #24243e, #1a1a2e); background-size: 400% 400%; animation: gradientBG 15s ease infinite; z-index: -2; } @keyframes gradientBG { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } .bg-glow { position: fixed; border-radius: 50%; filter: blur(100px); opacity: 0.4; z-index: -1; animation: floatBlob 10s ease-in-out infinite; } .bg-glow-1 { top: -10%; left: -10%; width: 50vw; height: 50vw; background: var(--primary); } .bg-glow-2 { bottom: -10%; right: -10%; width: 40vw; height: 40vw; background: #4c1d95; /* Darker Purple */ animation-delay: -5s; } @keyframes floatBlob { 0%, 100% { transform: translate(0, 0); } 50% { transform: translate(30px, -20px); } } /* --- Typography & Helpers --- */ .text-primary-light { color: var(--accent) !important; } .tracking-wide { letter-spacing: 0.05em; } .max-w-lg { max-width: 600px; } /* --- Hero Section --- */ .hero-wrapper { max-width: 900px; width: 100%; padding: 0 1rem; } .hero-title { font-size: 4rem; font-weight: 700; background: linear-gradient(to right, #fff, var(--accent)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; text-shadow: 0 0 30px rgba(139, 92, 246, 0.3); } @media (max-width: 768px) { .hero-title { font-size: 2.5rem; } } /* --- Glass Input --- */ .glass-input-wrapper { background: rgba(0, 0, 0, 0.3); backdrop-filter: blur(10px); border: 1px solid var(--glass-border); border-radius: 16px; transition: transform 0.3s, box-shadow 0.3s, border-color 0.3s; overflow: hidden; } .glass-input-wrapper:focus-within { transform: translateY(-2px); box-shadow: 0 15px 40px rgba(139, 92, 246, 0.2); border-color: var(--primary); } .form-control::placeholder { color: rgba(255, 255, 255, 0.3); } .form-control:focus { box-shadow: none; } .btn-action { background: var(--primary); color: white; border: none; border-radius: 0; transition: filter 0.2s; min-width: 120px; } .btn-action:hover { filter: brightness(1.2); color: white; } /* --- Detection & Options --- */ .glass-badge { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(5px); border: 1px solid var(--glass-border); font-weight: 300; letter-spacing: 1px; } .options-drawer { max-width: 600px; } .option-group { animation: slideDown 0.4s ease forwards; } @keyframes slideDown { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } /* Custom Switch Toggle (MP3/MP4) */ .switch-toggle { display: flex; background: rgba(0,0,0,0.4); border-radius: 8px; position: relative; padding: 4px; width: fit-content; border: 1px solid var(--glass-border); } .switch-toggle input { display: none; } .switch-toggle label { padding: 6px 16px; cursor: pointer; z-index: 2; font-size: 0.9rem; color: rgba(255,255,255,0.7); transition: color 0.3s; } .toggle-bg { position: absolute; top: 4px; left: 4px; height: calc(100% - 8px); width: calc(50% - 4px); /* Approximation */ background: var(--primary); border-radius: 6px; transition: transform 0.3s cubic-bezier(0.4, 0.0, 0.2, 1); z-index: 1; } #format-mp3:checked ~ .toggle-bg { transform: translateX(0); width: 63px; } #format-mp4:checked ~ .toggle-bg { transform: translateX(100%) translateX(6px); width: 63px; } #format-mp3:checked + label { color: white; } #format-mp4:checked + label { color: white; } .glass-select { background: rgba(0,0,0,0.4); border: 1px solid var(--glass-border); color: white; border-radius: 8px; font-size: 0.9rem; cursor: pointer; } .glass-select:focus { background: rgba(0,0,0,0.6); color: white; box-shadow: none; border-color: var(--primary); } .custom-switch:checked { background-color: var(--primary); border-color: var(--primary); } /* --- Processing & Terminal --- */ .glass-progress { height: 6px; background: rgba(255,255,255,0.1); border-radius: 3px; overflow: hidden; } .bg-primary-gradient { background: linear-gradient(90deg, var(--primary), var(--accent)); box-shadow: 0 0 10px var(--primary); transition: width 0.3s ease; } .terminal-window { background: rgba(10, 10, 15, 0.85); /* Very dark */ border: 1px solid rgba(255,255,255,0.1); border-radius: 8px; box-shadow: 0 10px 30px rgba(0,0,0,0.5); height: 200px; display: flex; flex-direction: column; } .dot { width: 10px; height: 10px; border-radius: 50%; } .terminal-body { flex: 1; overflow-y: auto; font-family: var(--font-mono); opacity: 0.9; padding-top: 0.5rem; } .terminal-line { margin-bottom: 4px; animation: typeIn 0.2s ease forwards; } @keyframes typeIn { from { opacity: 0; transform: translateX(-5px); } to { opacity: 1; transform: translateX(0); } } /* --- Result View --- */ .result-card { background: rgba(255,255,255,0.05); backdrop-filter: blur(15px); border: 1px solid rgba(255,255,255,0.1); box-shadow: 0 20px 50px rgba(0,0,0,0.5); } .btn-primary-glow { background: var(--primary); color: white; border: none; box-shadow: 0 0 20px rgba(139, 92, 246, 0.4); transition: transform 0.2s, box-shadow 0.2s; } .btn-primary-glow:hover { transform: translateY(-2px); box-shadow: 0 0 30px rgba(139, 92, 246, 0.6); color: white; } /* --- History Modal --- */ .glass-modal { background: rgba(20, 20, 30, 0.85); backdrop-filter: blur(15px); border: 1px solid var(--glass-border); box-shadow: 0 0 50px rgba(0,0,0,0.5); } .border-bottom-white-10 { border-bottom: 1px solid rgba(255,255,255,0.1); } .border-top-white-10 { border-top: 1px solid rgba(255,255,255,0.1); } #history-table a { color: var(--accent); text-decoration: none; } #history-table a:hover { text-decoration: underline; } /* --- Utility Classes --- */ .btn-glass-icon { background: rgba(255,255,255,0.1); color: white; border: 1px solid transparent; border-radius: 50%; width: 45px; height: 45px; transition: all 0.2s; } .btn-glass-icon:hover { background: rgba(255,255,255,0.2); color: white; border-color: rgba(255,255,255,0.3); } .fade-in { animation: fadeIn 0.8s ease forwards; opacity: 0; } .delay-1 { animation-delay: 0.2s; } .delay-2 { animation-delay: 0.4s; } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .glass-alert { background: rgba(220, 38, 38, 0.2); border: 1px solid rgba(220, 38, 38, 0.5); backdrop-filter: blur(5px); }