Spaces:
Sleeping
Sleeping
| /* ============================================================ | |
| DESIGN TOKENS | |
| ============================================================ */ | |
| :root { | |
| --bg-base: #050505; | |
| --bg-surface: #0f1114; | |
| --bg-card: rgba(26, 30, 36, 0.72); | |
| --bg-card-hover: rgba(33, 39, 46, 0.82); | |
| --bg-input: #0c1014; | |
| --border: rgba(122, 154, 177, 0.2); | |
| --border-hover: rgba(0, 209, 255, 0.45); | |
| --border-active: rgba(0, 209, 255, 0.9); | |
| /* Obsidian Forge (Stitch MCP) */ | |
| --purple-400: #4cd6ff; | |
| --purple-500: #00d1ff; | |
| --purple-600: #0097bf; | |
| --pink-500: #ff8c00; | |
| --pink-400: #ffb77d; | |
| --amber-400: #ffb77d; | |
| --green-400: #34D399; | |
| --red-400: #F87171; | |
| --text-primary: #FFFFFF; | |
| --text-secondary: #bbc9cf; | |
| --text-muted: #7f8f98; | |
| --radius-sm: 8px; | |
| --radius-md: 14px; | |
| --radius-lg: 20px; | |
| --radius-xl: 28px; | |
| --shadow-glow: 0 0 80px rgba(0, 209, 255, 0.14), 0 0 120px rgba(255, 140, 0, 0.08); | |
| --shadow-card: 0 20px 44px rgba(0, 0, 0, 0.62); | |
| --transition: 0.25s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| /* ============================================================ | |
| RESET & BASE | |
| ============================================================ */ | |
| *, | |
| *::before, | |
| *::after { | |
| box-sizing: border-box; | |
| margin: 0; | |
| padding: 0; | |
| } | |
| html { | |
| scroll-behavior: smooth; | |
| } | |
| body { | |
| font-family: 'Inter', system-ui, sans-serif; | |
| background: var(--bg-base); | |
| color: var(--text-primary); | |
| min-height: 100vh; | |
| display: flex; | |
| flex-direction: column; | |
| overflow-x: hidden; | |
| -webkit-font-smoothing: antialiased; | |
| } | |
| /* ============================================================ | |
| AMBIENT BACKGROUND ORBS | |
| ============================================================ */ | |
| .bg-orb { | |
| position: fixed; | |
| border-radius: 50%; | |
| filter: blur(120px); | |
| pointer-events: none; | |
| z-index: 0; | |
| opacity: 0; | |
| animation: orbReveal 2s ease forwards; | |
| } | |
| .orb-1 { | |
| width: 600px; | |
| height: 600px; | |
| top: -200px; | |
| left: -150px; | |
| background: radial-gradient(circle, rgba(217, 119, 6, 0.22) 0%, transparent 70%); | |
| animation-delay: 0.2s; | |
| } | |
| .orb-2 { | |
| width: 500px; | |
| height: 500px; | |
| top: 40%; | |
| right: -200px; | |
| background: radial-gradient(circle, rgba(252, 211, 77, 0.14) 0%, transparent 70%); | |
| animation-delay: 0.5s; | |
| } | |
| .orb-3 { | |
| width: 400px; | |
| height: 400px; | |
| bottom: -100px; | |
| left: 30%; | |
| background: radial-gradient(circle, rgba(245, 158, 11, 0.12) 0%, transparent 70%); | |
| animation-delay: 0.8s; | |
| } | |
| /* ── Floating Particles (minimal background animation) ── */ | |
| .particle { | |
| position: fixed; | |
| width: 2.5px; | |
| height: 2.5px; | |
| border-radius: 50%; | |
| background: rgba(252, 211, 77, 0.55); | |
| pointer-events: none; | |
| z-index: 0; | |
| animation: particleFloat linear infinite; | |
| } | |
| .particle:nth-child(1) { | |
| left: 5%; | |
| animation-duration: 12s; | |
| animation-delay: 0s; | |
| width: 3px; | |
| height: 3px; | |
| opacity: 0.7; | |
| } | |
| .particle:nth-child(2) { | |
| left: 15%; | |
| animation-duration: 16s; | |
| animation-delay: -4s; | |
| width: 4px; | |
| height: 4px; | |
| opacity: 0.55; | |
| } | |
| .particle:nth-child(3) { | |
| left: 25%; | |
| animation-duration: 10s; | |
| animation-delay: -2s; | |
| width: 2.5px; | |
| height: 2.5px; | |
| opacity: 0.65; | |
| } | |
| .particle:nth-child(4) { | |
| left: 38%; | |
| animation-duration: 18s; | |
| animation-delay: -7s; | |
| width: 3.5px; | |
| height: 3.5px; | |
| opacity: 0.5; | |
| } | |
| .particle:nth-child(5) { | |
| left: 50%; | |
| animation-duration: 13s; | |
| animation-delay: -1s; | |
| width: 3px; | |
| height: 3px; | |
| opacity: 0.6; | |
| } | |
| .particle:nth-child(6) { | |
| left: 62%; | |
| animation-duration: 9s; | |
| animation-delay: -5s; | |
| width: 4.5px; | |
| height: 4.5px; | |
| opacity: 0.4; | |
| } | |
| .particle:nth-child(7) { | |
| left: 73%; | |
| animation-duration: 14s; | |
| animation-delay: -3s; | |
| width: 2.5px; | |
| height: 2.5px; | |
| opacity: 0.65; | |
| } | |
| .particle:nth-child(8) { | |
| left: 83%; | |
| animation-duration: 11s; | |
| animation-delay: -6s; | |
| width: 3.5px; | |
| height: 3.5px; | |
| opacity: 0.55; | |
| } | |
| .particle:nth-child(9) { | |
| left: 92%; | |
| animation-duration: 15s; | |
| animation-delay: -2s; | |
| width: 2px; | |
| height: 2px; | |
| opacity: 0.7; | |
| } | |
| .particle:nth-child(10) { | |
| left: 10%; | |
| animation-duration: 8s; | |
| animation-delay: -8s; | |
| width: 3px; | |
| height: 3px; | |
| opacity: 0.45; | |
| } | |
| .particle:nth-child(11) { | |
| left: 44%; | |
| animation-duration: 17s; | |
| animation-delay: -9s; | |
| width: 4px; | |
| height: 4px; | |
| opacity: 0.4; | |
| } | |
| .particle:nth-child(12) { | |
| left: 58%; | |
| animation-duration: 11s; | |
| animation-delay: -11s; | |
| width: 2.5px; | |
| height: 2.5px; | |
| opacity: 0.6; | |
| } | |
| .particle:nth-child(13) { | |
| left: 30%; | |
| animation-duration: 20s; | |
| animation-delay: -5s; | |
| width: 3px; | |
| height: 3px; | |
| opacity: 0.35; | |
| } | |
| .particle:nth-child(14) { | |
| left: 78%; | |
| animation-duration: 7s; | |
| animation-delay: -3s; | |
| width: 2px; | |
| height: 2px; | |
| opacity: 0.7; | |
| } | |
| @keyframes particleFloat { | |
| 0% { | |
| transform: translateY(100vh) scale(1); | |
| opacity: 0; | |
| } | |
| 5% { | |
| opacity: 1; | |
| } | |
| 90% { | |
| opacity: 0.6; | |
| } | |
| 100% { | |
| transform: translateY(-8vh) scale(0.4); | |
| opacity: 0; | |
| } | |
| } | |
| @keyframes orbReveal { | |
| to { | |
| opacity: 1; | |
| } | |
| } | |
| /* ============================================================ | |
| HEADER | |
| ============================================================ */ | |
| .site-header { | |
| position: sticky; | |
| top: 0; | |
| z-index: 100; | |
| background: transparent; | |
| border-bottom: none; | |
| } | |
| .header-inner { | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| padding: 0 2rem; | |
| height: 64px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| } | |
| .logo { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| } | |
| .logo-icon { | |
| flex-shrink: 0; | |
| filter: drop-shadow(0 0 12px rgba(124, 58, 237, 0.6)); | |
| } | |
| .logo-text { | |
| font-size: 1.05rem; | |
| font-weight: 700; | |
| letter-spacing: -0.01em; | |
| color: var(--text-primary); | |
| } | |
| .logo-vip { | |
| background: linear-gradient(135deg, var(--purple-400), var(--pink-500)); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| font-weight: 900; | |
| } | |
| .header-nav { | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| } | |
| .nav-link { | |
| color: var(--text-secondary); | |
| text-decoration: none; | |
| font-size: 0.9rem; | |
| font-weight: 600; | |
| padding: 0.45rem 0.75rem; | |
| border-radius: 999px; | |
| transition: all 0.2s ease; | |
| } | |
| .nav-link:hover { | |
| color: var(--text-primary); | |
| background: rgba(255, 255, 255, 0.06); | |
| } | |
| .nav-link.active { | |
| color: var(--text-primary); | |
| background: rgba(74, 142, 255, 0.2); | |
| border: 1px solid rgba(74, 142, 255, 0.35); | |
| } | |
| .header-actions { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| } | |
| .header-badge { | |
| display: flex; | |
| align-items: center; | |
| gap: 7px; | |
| font-size: 0.75rem; | |
| font-weight: 500; | |
| color: var(--text-secondary); | |
| background: rgba(255, 255, 255, 0.04); | |
| border: 1px solid var(--border); | |
| padding: 5px 12px; | |
| border-radius: 99px; | |
| } | |
| .btn-upgrade { | |
| border: 1px solid rgba(254, 107, 0, 0.5); | |
| background: linear-gradient(135deg, rgba(254, 107, 0, 0.24), rgba(255, 183, 125, 0.18)); | |
| color: #ffd8c0; | |
| padding: 0.45rem 0.9rem; | |
| border-radius: 99px; | |
| font-size: 0.8rem; | |
| font-weight: 700; | |
| cursor: pointer; | |
| } | |
| .btn-upgrade:hover { | |
| filter: brightness(1.08); | |
| } | |
| .badge-dot { | |
| width: 7px; | |
| height: 7px; | |
| border-radius: 50%; | |
| background: var(--green-400); | |
| box-shadow: 0 0 8px var(--green-400); | |
| animation: pulse 2s infinite; | |
| } | |
| @keyframes pulse { | |
| 0%, | |
| 100% { | |
| opacity: 1; | |
| transform: scale(1); | |
| } | |
| 50% { | |
| opacity: 0.6; | |
| transform: scale(0.85); | |
| } | |
| } | |
| /* ============================================================ | |
| MAIN & SCREENS | |
| ============================================================ */ | |
| main { | |
| flex: 1; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .screen { | |
| display: none; | |
| min-height: calc(100vh - 120px); | |
| padding: 4rem 2rem; | |
| } | |
| .screen.active { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| animation: screenFadeIn 0.5s ease forwards; | |
| } | |
| @keyframes screenFadeIn { | |
| from { | |
| opacity: 0; | |
| transform: translateY(16px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| /* ============================================================ | |
| HERO / INPUT SCREEN | |
| ============================================================ */ | |
| .hero-content { | |
| width: 100%; | |
| max-width: 860px; | |
| text-align: center; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 1.75rem; | |
| } | |
| .hero-badge { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| font-size: 0.78rem; | |
| font-weight: 600; | |
| color: var(--amber-400); | |
| background: rgba(251, 191, 36, 0.08); | |
| border: 1px solid rgba(251, 191, 36, 0.2); | |
| padding: 6px 14px; | |
| border-radius: 99px; | |
| letter-spacing: 0.03em; | |
| text-transform: uppercase; | |
| } | |
| .hero-title { | |
| font-size: clamp(2.2rem, 5vw, 3.6rem); | |
| font-family: 'Manrope', 'Inter', system-ui, sans-serif; | |
| font-weight: 900; | |
| line-height: 1.1; | |
| letter-spacing: -0.03em; | |
| color: var(--text-primary); | |
| } | |
| .gradient-text { | |
| background: linear-gradient(135deg, #FCD34D 0%, #FBBF24 45%, #ffffff 100%); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| background-size: 200% 200%; | |
| animation: gradientShift 4s ease infinite; | |
| } | |
| @keyframes gradientShift { | |
| 0% { | |
| background-position: 0% 50%; | |
| } | |
| 50% { | |
| background-position: 100% 50%; | |
| } | |
| 100% { | |
| background-position: 0% 50%; | |
| } | |
| } | |
| .hero-subtitle { | |
| font-size: 1.05rem; | |
| color: var(--text-secondary); | |
| line-height: 1.7; | |
| max-width: 560px; | |
| margin: 0 auto; | |
| } | |
| /* Input Card */ | |
| .input-card { | |
| width: 100%; | |
| background: var(--bg-card); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius-xl); | |
| padding: 1rem; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.75rem; | |
| box-shadow: var(--shadow-card), var(--shadow-glow); | |
| backdrop-filter: blur(18px); | |
| transition: border-color var(--transition), box-shadow var(--transition); | |
| } | |
| .input-card:focus-within { | |
| border-color: rgba(0, 209, 255, 0.55); | |
| box-shadow: var(--shadow-card), 0 0 0 1px rgba(0, 209, 255, 0.25), var(--shadow-glow); | |
| } | |
| /* ── Options row (mode toggle + clip count side by side) ──── */ | |
| .options-row { | |
| display: flex; | |
| gap: 0.5rem; | |
| align-items: stretch; | |
| } | |
| .options-row .mode-toggle { | |
| flex: 1; | |
| } | |
| /* ── Clip Count Control ───────────────────────────────────── */ | |
| .clip-count-control { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 4px; | |
| padding: 0.3rem 0.6rem; | |
| background: var(--bg-input); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius-md); | |
| min-width: 110px; | |
| } | |
| .clip-count-label { | |
| font-size: 0.65rem; | |
| font-weight: 700; | |
| letter-spacing: 0.1em; | |
| text-transform: uppercase; | |
| color: var(--text-muted); | |
| } | |
| .clip-stepper { | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| } | |
| .stepper-btn { | |
| width: 24px; | |
| height: 24px; | |
| border-radius: 6px; | |
| border: 1px solid var(--border); | |
| background: rgba(255, 255, 255, 0.04); | |
| color: var(--text-secondary); | |
| font-size: 1rem; | |
| line-height: 1; | |
| cursor: pointer; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| transition: all var(--transition); | |
| font-family: inherit; | |
| padding: 0; | |
| } | |
| .stepper-btn:hover { | |
| background: rgba(139, 92, 246, 0.15); | |
| border-color: rgba(139, 92, 246, 0.4); | |
| color: var(--purple-400); | |
| } | |
| .stepper-btn:active { | |
| transform: scale(0.9); | |
| } | |
| #clips-display { | |
| font-size: 0.88rem; | |
| font-weight: 700; | |
| min-width: 42px; | |
| text-align: center; | |
| color: var(--text-primary); | |
| transition: all 0.2s ease; | |
| } | |
| #clips-display.clips-default { | |
| font-size: 0.72rem; | |
| font-weight: 600; | |
| color: var(--text-muted); | |
| letter-spacing: 0.02em; | |
| } | |
| /* Pulse on value change */ | |
| @keyframes countPop { | |
| 0% { | |
| transform: scale(1); | |
| } | |
| 40% { | |
| transform: scale(1.25); | |
| } | |
| 100% { | |
| transform: scale(1); | |
| } | |
| } | |
| .count-pop { | |
| animation: countPop 0.2s ease; | |
| } | |
| /* ── Mode Toggle (Pad / Fill) ─────────────────────────────── */ | |
| .mode-toggle { | |
| display: flex; | |
| gap: 0.5rem; | |
| padding: 0.25rem; | |
| background: var(--bg-input); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius-md); | |
| } | |
| /* hide the native radio */ | |
| .mode-toggle input[type="radio"] { | |
| position: absolute; | |
| opacity: 0; | |
| width: 0; | |
| height: 0; | |
| pointer-events: none; | |
| } | |
| .mode-btn { | |
| flex: 1; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 6px; | |
| padding: 0.55rem 0.75rem; | |
| border-radius: calc(var(--radius-md) - 3px); | |
| font-size: 0.82rem; | |
| font-weight: 600; | |
| color: var(--text-muted); | |
| cursor: pointer; | |
| transition: all var(--transition); | |
| user-select: none; | |
| position: relative; | |
| } | |
| .mode-hint { | |
| font-size: 0.68rem; | |
| font-weight: 400; | |
| color: var(--text-muted); | |
| opacity: 0.7; | |
| } | |
| /* Active state driven by :checked */ | |
| input[type="radio"]:checked+.mode-btn { | |
| background: linear-gradient(135deg, rgba(124, 58, 237, 0.25), rgba(236, 72, 153, 0.15)); | |
| border: 1px solid rgba(139, 92, 246, 0.5); | |
| color: var(--text-primary); | |
| box-shadow: 0 0 16px rgba(139, 92, 246, 0.2); | |
| } | |
| input[type="radio"]:checked+.mode-btn .mode-hint { | |
| color: var(--purple-400); | |
| opacity: 1; | |
| } | |
| input[type="radio"]:checked+.mode-btn svg { | |
| stroke: var(--purple-400); | |
| } | |
| .mode-btn:hover { | |
| color: var(--text-secondary); | |
| background: rgba(255, 255, 255, 0.04); | |
| } | |
| .input-wrapper { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| background: var(--bg-input); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius-lg); | |
| padding: 0.9rem 1.1rem; | |
| transition: border-color var(--transition); | |
| } | |
| .input-wrapper:focus-within { | |
| border-color: var(--purple-500); | |
| } | |
| .input-icon { | |
| color: var(--text-muted); | |
| flex-shrink: 0; | |
| transition: color var(--transition); | |
| } | |
| .input-wrapper:focus-within .input-icon { | |
| color: var(--purple-400); | |
| } | |
| #youtube-url-input { | |
| flex: 1; | |
| background: transparent; | |
| border: none; | |
| outline: none; | |
| font-family: inherit; | |
| font-size: 0.95rem; | |
| font-weight: 400; | |
| color: var(--text-primary); | |
| caret-color: var(--purple-400); | |
| } | |
| #youtube-url-input::placeholder { | |
| color: var(--text-muted); | |
| } | |
| #youtube-url-input:disabled { | |
| opacity: 0.5; | |
| cursor: not-allowed; | |
| } | |
| /* Generate Button */ | |
| .btn-generate { | |
| position: relative; | |
| overflow: hidden; | |
| width: 100%; | |
| padding: 1rem 1.5rem; | |
| border: none; | |
| border-radius: var(--radius-lg); | |
| background: linear-gradient(135deg, #ff8c00, #ffb77d); | |
| color: #3a1b00; | |
| font-family: inherit; | |
| font-size: 1rem; | |
| font-weight: 800; | |
| letter-spacing: 0.02em; | |
| cursor: pointer; | |
| transition: opacity var(--transition), transform var(--transition), box-shadow var(--transition); | |
| box-shadow: 0 4px 28px rgba(255, 140, 0, 0.55); | |
| } | |
| .btn-generate:hover:not(:disabled) { | |
| transform: translateY(-2px); | |
| box-shadow: 0 8px 32px rgba(255, 140, 0, 0.65); | |
| } | |
| .btn-generate:active:not(:disabled) { | |
| transform: translateY(0); | |
| } | |
| .btn-generate:disabled { | |
| opacity: 0.6; | |
| cursor: not-allowed; | |
| transform: none; | |
| } | |
| .btn-text { | |
| position: relative; | |
| z-index: 1; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 8px; | |
| } | |
| .btn-shimmer { | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 100%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.18), transparent); | |
| animation: shimmer 3s infinite; | |
| } | |
| @keyframes shimmer { | |
| 0% { | |
| left: -100%; | |
| } | |
| 50%, | |
| 100% { | |
| left: 150%; | |
| } | |
| } | |
| /* Stats Row */ | |
| .stats-row { | |
| display: flex; | |
| align-items: center; | |
| gap: 1.5rem; | |
| flex-wrap: wrap; | |
| justify-content: center; | |
| } | |
| .stat-item { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 2px; | |
| } | |
| .stat-number { | |
| font-size: 1.3rem; | |
| font-weight: 800; | |
| background: linear-gradient(135deg, var(--purple-400), var(--pink-400)); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| } | |
| .stat-label { | |
| font-size: 0.72rem; | |
| color: var(--text-muted); | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| font-weight: 500; | |
| } | |
| .stat-divider { | |
| width: 1px; | |
| height: 36px; | |
| background: var(--border); | |
| } | |
| /* ============================================================ | |
| LOADING SCREEN | |
| ============================================================ */ | |
| .loading-content { | |
| width: 100%; | |
| max-width: 500px; | |
| text-align: center; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 1.75rem; | |
| } | |
| /* Spinner */ | |
| .spinner-ring { | |
| position: relative; | |
| width: 96px; | |
| height: 96px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .ring-outer { | |
| position: absolute; | |
| inset: 0; | |
| border-radius: 50%; | |
| border: 3px solid transparent; | |
| border-top-color: var(--purple-500); | |
| border-right-color: var(--pink-500); | |
| animation: spinOuter 1.2s linear infinite; | |
| } | |
| .ring-inner { | |
| position: absolute; | |
| inset: 12px; | |
| border-radius: 50%; | |
| border: 2px solid transparent; | |
| border-bottom-color: var(--purple-400); | |
| animation: spinInner 0.9s linear infinite reverse; | |
| } | |
| .ring-icon { | |
| color: var(--purple-400); | |
| animation: iconPulse 1.5s ease-in-out infinite; | |
| } | |
| @keyframes spinOuter { | |
| to { | |
| transform: rotate(360deg); | |
| } | |
| } | |
| @keyframes spinInner { | |
| to { | |
| transform: rotate(360deg); | |
| } | |
| } | |
| @keyframes iconPulse { | |
| 0%, | |
| 100% { | |
| opacity: 1; | |
| transform: scale(1); | |
| } | |
| 50% { | |
| opacity: 0.6; | |
| transform: scale(0.9); | |
| } | |
| } | |
| .loading-title { | |
| font-size: 1.6rem; | |
| font-weight: 800; | |
| letter-spacing: -0.02em; | |
| } | |
| .loading-message { | |
| font-size: 1rem; | |
| color: var(--purple-400); | |
| font-weight: 500; | |
| min-height: 1.5em; | |
| transition: opacity 0.3s ease; | |
| } | |
| /* Progress bar */ | |
| .progress-track { | |
| width: 100%; | |
| height: 4px; | |
| background: rgba(255, 255, 255, 0.06); | |
| border-radius: 99px; | |
| overflow: hidden; | |
| } | |
| .progress-fill { | |
| height: 100%; | |
| width: 0%; | |
| border-radius: 99px; | |
| background: linear-gradient(90deg, var(--purple-600), var(--pink-500)); | |
| transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1); | |
| box-shadow: 0 0 12px rgba(139, 92, 246, 0.6); | |
| } | |
| /* Step List */ | |
| .step-list { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.6rem; | |
| width: 100%; | |
| text-align: left; | |
| } | |
| .step-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| font-size: 0.88rem; | |
| color: var(--text-muted); | |
| padding: 10px 14px; | |
| border-radius: var(--radius-sm); | |
| background: rgba(255, 255, 255, 0.02); | |
| border: 1px solid var(--border); | |
| transition: all 0.4s ease; | |
| } | |
| .step-icon { | |
| width: 22px; | |
| height: 22px; | |
| border-radius: 50%; | |
| border: 1.5px solid var(--border); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| flex-shrink: 0; | |
| color: var(--text-muted); | |
| transition: all 0.4s ease; | |
| } | |
| /* Active step */ | |
| .step-item.active { | |
| color: var(--text-primary); | |
| border-color: rgba(139, 92, 246, 0.3); | |
| background: rgba(139, 92, 246, 0.06); | |
| } | |
| .step-item.active .step-icon { | |
| border-color: var(--purple-500); | |
| color: var(--purple-400); | |
| animation: stepPulse 1s ease infinite; | |
| } | |
| /* Completed step */ | |
| .step-item.done { | |
| color: var(--green-400); | |
| border-color: rgba(52, 211, 153, 0.2); | |
| background: rgba(52, 211, 153, 0.04); | |
| } | |
| .step-item.done .step-icon { | |
| border-color: var(--green-400); | |
| color: var(--green-400); | |
| } | |
| @keyframes stepPulse { | |
| 0%, | |
| 100% { | |
| box-shadow: none; | |
| } | |
| 50% { | |
| box-shadow: 0 0 10px rgba(139, 92, 246, 0.5); | |
| } | |
| } | |
| /* ============================================================ | |
| RESULTS SCREEN | |
| ============================================================ */ | |
| #screen-results { | |
| align-items: flex-start; | |
| flex-direction: column; | |
| gap: 2rem; | |
| } | |
| #screen-results.active { | |
| display: flex; | |
| } | |
| .results-header { | |
| width: 100%; | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| display: flex; | |
| align-items: flex-end; | |
| justify-content: space-between; | |
| flex-wrap: wrap; | |
| gap: 1rem; | |
| } | |
| .results-title { | |
| font-size: 1.9rem; | |
| font-weight: 800; | |
| letter-spacing: -0.025em; | |
| } | |
| .results-subtitle { | |
| font-size: 0.9rem; | |
| color: var(--text-secondary); | |
| margin-top: 4px; | |
| } | |
| .btn-ghost { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 7px; | |
| padding: 0.6rem 1.1rem; | |
| border-radius: var(--radius-md); | |
| background: rgba(255, 255, 255, 0.04); | |
| border: 1px solid var(--border); | |
| color: var(--text-secondary); | |
| font-family: inherit; | |
| font-size: 0.85rem; | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: all var(--transition); | |
| } | |
| .btn-ghost:hover { | |
| background: rgba(255, 255, 255, 0.08); | |
| border-color: rgba(139, 92, 246, 0.4); | |
| color: var(--text-primary); | |
| transform: translateY(-1px); | |
| } | |
| /* Gallery */ | |
| .results-gallery { | |
| width: 100%; | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 1.5rem; | |
| justify-content: flex-start; | |
| } | |
| /* Video Card */ | |
| .video-card { | |
| background: var(--bg-card); | |
| border: 1px solid rgba(122, 154, 177, 0.26); | |
| border-radius: var(--radius-lg); | |
| overflow: hidden; | |
| transition: all var(--transition); | |
| display: flex; | |
| flex-direction: column; | |
| width: calc(20% - 1.2rem); | |
| /* 5 per row on wide screens */ | |
| min-width: 160px; | |
| box-shadow: var(--shadow-card), 0 0 0 1px rgba(0, 209, 255, 0.05) inset; | |
| backdrop-filter: blur(16px); | |
| animation: cardReveal 0.5s ease forwards; | |
| opacity: 0; | |
| } | |
| .video-card:hover { | |
| border-color: rgba(0, 209, 255, 0.45); | |
| transform: translateY(-6px) scale(1.01); | |
| box-shadow: var(--shadow-card), 0 14px 42px rgba(0, 209, 255, 0.18), 0 0 18px rgba(255, 140, 0, 0.12); | |
| } | |
| @keyframes cardReveal { | |
| from { | |
| opacity: 0; | |
| transform: translateY(20px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| .video-wrapper { | |
| /* 9:16 aspect ratio */ | |
| position: relative; | |
| width: 100%; | |
| padding-bottom: 177.78%; | |
| background: #070a0d; | |
| overflow: hidden; | |
| } | |
| .video-wrapper video { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| filter: saturate(1.08) contrast(1.06); | |
| } | |
| /* Loading overlay while blob is being fetched */ | |
| .video-loading-overlay { | |
| position: absolute; | |
| inset: 0; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| background: var(--bg-card); | |
| z-index: 2; | |
| } | |
| .video-load-spinner { | |
| width: 30px; | |
| height: 30px; | |
| border-radius: 50%; | |
| border: 3px solid rgba(252, 211, 77, 0.15); | |
| border-top-color: var(--purple-400); | |
| animation: spinOuter 0.9s linear infinite; | |
| } | |
| /* Overlay play icon */ | |
| .video-overlay { | |
| position: absolute; | |
| inset: 0; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| background: rgba(0, 0, 0, 0.3); | |
| opacity: 0; | |
| transition: opacity var(--transition); | |
| } | |
| .video-card:hover .video-overlay { | |
| opacity: 1; | |
| } | |
| .play-icon { | |
| width: 44px; | |
| height: 44px; | |
| border-radius: 50%; | |
| background: rgba(255, 255, 255, 0.15); | |
| backdrop-filter: blur(6px); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| color: white; | |
| } | |
| .video-card-footer { | |
| padding: 0.95rem; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.6rem; | |
| } | |
| .video-card-label { | |
| font-size: 0.78rem; | |
| font-weight: 700; | |
| color: var(--text-primary); | |
| letter-spacing: 0.04em; | |
| } | |
| .video-card-actions { | |
| display: flex; | |
| gap: 0.45rem; | |
| width: 100%; | |
| } | |
| .btn-download { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 6px; | |
| width: 100%; | |
| flex: 1; | |
| padding: 0.55rem 0.75rem; | |
| border-radius: var(--radius-sm); | |
| background: linear-gradient(135deg, rgba(255, 140, 0, 0.88), rgba(255, 183, 125, 0.8)); | |
| border: 1px solid rgba(255, 183, 125, 0.55); | |
| color: #3a1b00; | |
| font-family: inherit; | |
| font-size: 0.8rem; | |
| font-weight: 600; | |
| cursor: pointer; | |
| text-decoration: none; | |
| transition: all var(--transition); | |
| } | |
| .btn-download:hover { | |
| background: linear-gradient(135deg, rgba(255, 140, 0, 1), rgba(255, 183, 125, 0.95)); | |
| border-color: rgba(255, 183, 125, 0.9); | |
| color: #2a1400; | |
| transform: translateY(-1px); | |
| } | |
| .btn-edit-ghost { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 6px; | |
| width: 44%; | |
| padding: 0.55rem 0.65rem; | |
| border-radius: var(--radius-sm); | |
| background: rgba(255, 255, 255, 0.025); | |
| border: 1px solid rgba(122, 154, 177, 0.32); | |
| color: var(--text-secondary); | |
| font-family: inherit; | |
| font-size: 0.76rem; | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: all var(--transition); | |
| } | |
| .btn-edit-ghost:hover { | |
| color: var(--text-primary); | |
| border-color: rgba(0, 209, 255, 0.42); | |
| background: rgba(0, 209, 255, 0.09); | |
| } | |
| .btn-edit-ghost-placeholder { | |
| height: 30px; | |
| width: 44%; | |
| pointer-events: none; | |
| animation: ghostPulse 2s ease-in-out infinite; | |
| } | |
| /* ============================================================ | |
| PLACEHOLDER / PROCESSING CARD | |
| ============================================================ */ | |
| .video-card-placeholder { | |
| border-color: rgba(139, 92, 246, 0.12); | |
| } | |
| .video-card-placeholder:hover { | |
| transform: none; | |
| box-shadow: var(--shadow-card); | |
| border-color: rgba(139, 92, 246, 0.12); | |
| } | |
| .placeholder-inner { | |
| position: absolute; | |
| inset: 0; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 14px; | |
| background: linear-gradient(160deg, rgba(139, 92, 246, 0.05) 0%, rgba(8, 11, 20, 0.95) 100%); | |
| overflow: hidden; | |
| } | |
| /* Shimmer sweep */ | |
| .placeholder-inner::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; | |
| left: -100%; | |
| width: 60%; | |
| height: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(139, 92, 246, 0.07), transparent); | |
| animation: shimmer 2.2s ease-in-out infinite; | |
| } | |
| .placeholder-spinner { | |
| width: 38px; | |
| height: 38px; | |
| border-radius: 50%; | |
| border: 3px solid rgba(139, 92, 246, 0.15); | |
| border-top-color: var(--purple-400); | |
| animation: spinOuter 1s linear infinite; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .placeholder-label { | |
| font-size: 0.62rem; | |
| font-weight: 700; | |
| letter-spacing: 0.2em; | |
| color: var(--text-muted); | |
| text-transform: uppercase; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .btn-download-ghost { | |
| width: 56%; | |
| height: 30px; | |
| border-radius: var(--radius-sm); | |
| background: rgba(255, 255, 255, 0.025); | |
| border: 1px solid var(--border); | |
| animation: ghostPulse 2s ease-in-out infinite; | |
| } | |
| @keyframes ghostPulse { | |
| 0%, | |
| 100% { | |
| opacity: 0.4; | |
| } | |
| 50% { | |
| opacity: 0.75; | |
| } | |
| } | |
| /* ============================================================ | |
| ERROR SCREEN | |
| ============================================================ */ | |
| .error-content { | |
| width: 100%; | |
| max-width: 480px; | |
| text-align: center; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 1rem; | |
| } | |
| .error-icon { | |
| width: 72px; | |
| height: 72px; | |
| border-radius: 50%; | |
| background: rgba(248, 113, 113, 0.1); | |
| border: 1px solid rgba(248, 113, 113, 0.2); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| color: var(--red-400); | |
| } | |
| .error-title { | |
| font-size: 1.6rem; | |
| font-weight: 800; | |
| } | |
| .error-message { | |
| color: var(--text-secondary); | |
| font-size: 0.95rem; | |
| line-height: 1.6; | |
| } | |
| .error-content .btn-generate { | |
| width: auto; | |
| padding: 0.85rem 2rem; | |
| } | |
| /* ============================================================ | |
| RESULTS STREAMING BADGE | |
| ============================================================ */ | |
| .results-loading-badge { | |
| display: flex; | |
| align-items: center; | |
| gap: 7px; | |
| margin-top: 6px; | |
| font-size: 0.78rem; | |
| font-weight: 500; | |
| color: var(--purple-400); | |
| } | |
| .badge-mini-spinner { | |
| width: 12px; | |
| height: 12px; | |
| border-radius: 50%; | |
| border: 2px solid rgba(139, 92, 246, 0.2); | |
| border-top-color: var(--purple-400); | |
| animation: spinOuter 0.8s linear infinite; | |
| flex-shrink: 0; | |
| } | |
| /* ============================================================ | |
| FOOTER | |
| ============================================================ */ | |
| .site-footer { | |
| position: relative; | |
| z-index: 1; | |
| text-align: center; | |
| padding: 1.5rem 2rem; | |
| border-top: 1px solid var(--border); | |
| font-size: 0.75rem; | |
| color: var(--text-muted); | |
| } | |
| /* ============================================================ | |
| RESPONSIVE | |
| ============================================================ */ | |
| @media (max-width: 1100px) { | |
| .video-card { | |
| width: calc(25% - 1.125rem); | |
| } | |
| } | |
| @media (max-width: 860px) { | |
| .video-card { | |
| width: calc(33.33% - 1rem); | |
| } | |
| } | |
| @media (max-width: 600px) { | |
| .header-nav, | |
| .btn-upgrade { | |
| display: none; | |
| } | |
| .screen { | |
| padding: 2rem 1rem; | |
| } | |
| .video-card { | |
| width: calc(50% - 0.75rem); | |
| } | |
| .header-badge span:last-child { | |
| display: none; | |
| } | |
| .hero-title { | |
| font-size: 2rem; | |
| } | |
| .results-title { | |
| font-size: 1.5rem; | |
| } | |
| .stats-row { | |
| gap: 1rem; | |
| } | |
| } | |
| @media (max-width: 380px) { | |
| .video-card { | |
| width: 100%; | |
| max-width: 260px; | |
| } | |
| .results-gallery { | |
| justify-content: center; | |
| } | |
| } | |
| /* ============================================================ | |
| UTILITY | |
| ============================================================ */ | |
| .sr-only { | |
| position: absolute; | |
| width: 1px; | |
| height: 1px; | |
| padding: 0; | |
| margin: -1px; | |
| overflow: hidden; | |
| clip: rect(0, 0, 0, 0); | |
| white-space: nowrap; | |
| border: 0; | |
| } | |
| /* ============================================================ | |
| TAB SWITCHER | |
| ============================================================ */ | |
| .input-tabs { | |
| display: flex; | |
| gap: 0.5rem; | |
| margin-bottom: 1rem; | |
| } | |
| .tab-btn { | |
| flex: 1; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 0.5rem; | |
| padding: 0.75rem 1rem; | |
| background: var(--bg-input); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius-md); | |
| color: var(--text-muted); | |
| font-size: 0.875rem; | |
| font-weight: 500; | |
| cursor: pointer; | |
| transition: var(--transition); | |
| } | |
| .tab-btn:hover { | |
| color: var(--text-secondary); | |
| border-color: var(--border-hover); | |
| } | |
| .tab-btn.active { | |
| color: var(--text-primary); | |
| border-color: var(--purple-500); | |
| background: rgba(0, 209, 255, 0.08); | |
| } | |
| .tab-btn svg { | |
| opacity: 0.7; | |
| } | |
| .tab-btn.active svg { | |
| opacity: 1; | |
| } | |
| /* Tab Panels */ | |
| .tab-panel { | |
| display: none; | |
| } | |
| .tab-panel.active { | |
| display: block; | |
| } | |
| /* ============================================================ | |
| UPLOAD ZONE | |
| ============================================================ */ | |
| .upload-zone { | |
| position: relative; | |
| border: 2px dashed var(--border); | |
| border-radius: var(--radius-md); | |
| padding: 2rem; | |
| text-align: center; | |
| cursor: pointer; | |
| transition: var(--transition); | |
| background: var(--bg-input); | |
| } | |
| .upload-zone:hover { | |
| border-color: var(--border-hover); | |
| background: rgba(0, 209, 255, 0.03); | |
| } | |
| .upload-zone.drag-over { | |
| border-color: var(--purple-500); | |
| background: rgba(0, 209, 255, 0.08); | |
| } | |
| .upload-content { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 0.75rem; | |
| } | |
| .upload-icon { | |
| width: 56px; | |
| height: 56px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| background: rgba(0, 209, 255, 0.1); | |
| border-radius: 50%; | |
| color: var(--purple-500); | |
| } | |
| .upload-text { | |
| color: var(--text-secondary); | |
| font-size: 0.95rem; | |
| } | |
| .upload-link { | |
| color: var(--purple-500); | |
| font-weight: 600; | |
| text-decoration: underline; | |
| text-underline-offset: 2px; | |
| } | |
| .upload-hint { | |
| color: var(--text-muted); | |
| font-size: 0.8rem; | |
| } | |
| .upload-selected { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 0.75rem; | |
| padding: 0.5rem; | |
| color: var(--green-400); | |
| } | |
| .upload-selected svg { | |
| flex-shrink: 0; | |
| } | |
| .upload-selected span { | |
| font-size: 0.9rem; | |
| color: var(--text-primary); | |
| max-width: 200px; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .upload-remove { | |
| width: 24px; | |
| height: 24px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| background: rgba(248, 113, 113, 0.15); | |
| border: none; | |
| border-radius: 50%; | |
| color: var(--red-400); | |
| font-size: 1.25rem; | |
| cursor: pointer; | |
| transition: var(--transition); | |
| } | |
| .upload-remove:hover { | |
| background: rgba(248, 113, 113, 0.3); | |
| } |