"""Gradio theme and CSS for AnimaStudio.""" import gradio as gr THEME = gr.themes.Soft( primary_hue="purple", secondary_hue="pink", neutral_hue="slate", ) CSS = """ /* ── Global ─────────────────────────────────────── */ .gradio-container { max-width: 1380px !important; margin: 0 auto !important; } /* ── Header ──────────────────────────────────────── */ .as-header { text-align: center; padding: 2.4rem 1rem 2rem; border-radius: 1.5rem; margin-bottom: 1.5rem; background: linear-gradient(135deg, #1a0b2e 0%, #2d1b4e 40%, #1a1040 70%, #0d0b1e 100%); border: 1px solid rgba(168,85,247,0.25); box-shadow: 0 4px 60px rgba(168,85,247,0.1), inset 0 1px 0 rgba(255,255,255,0.05); position: relative; overflow: hidden; } .as-header::before { content: ''; position: absolute; top: -50%; left: -50%; width: 200%; height: 200%; background: radial-gradient(ellipse at center, rgba(168,85,247,0.08) 0%, transparent 60%); pointer-events: none; } .as-header h1 { font-size: 3.2rem !important; font-weight: 900 !important; margin: 0 0 0.6rem !important; line-height: 1.05 !important; background: linear-gradient(90deg, #e879f9 0%, #a855f7 40%, #f472b6 80%, #fb923c 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; letter-spacing: -0.035em; } .as-header .tagline { color: #94a3b8 !important; font-size: 1.0rem !important; margin: 0 0 1rem !important; } .as-header .badges { display: flex; justify-content: center; gap: 0.5rem; flex-wrap: wrap; } /* ── Badges ───────────────────────────────────────── */ .badge { display: inline-flex; align-items: center; gap: 0.3rem; padding: 0.25rem 0.75rem; border-radius: 999px; font-size: 0.78rem; font-weight: 600; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.1); color: #cbd5e1; } .badge-purple { border-color: rgba(168,85,247,0.4); color: #a855f7; background: rgba(168,85,247,0.08); } .badge-pink { border-color: rgba(244,114,182,0.4); color: #f472b6; background: rgba(244,114,182,0.08); } .badge-cyan { border-color: rgba(34,211,238,0.4); color: #22d3ee; background: rgba(34,211,238,0.08); } .badge-gold { border-color: rgba(251,191,36,0.4); color: #fbbf24; background: rgba(251,191,36,0.08); } .badge-teal { border-color: rgba(20,184,166,0.4); color: #14b8a6; background: rgba(20,184,166,0.08); } /* ── Language selector ────────────────────────────── */ #lang-selector .wrap { gap: 4px !important; justify-content: center !important; } #lang-selector label span { font-size: 0.9rem !important; } #lang-selector { margin-bottom: 0.5rem !important; } /* ── Generate Button ──────────────────────────────── */ #gen-btn { background: linear-gradient(135deg, #a855f7 0%, #ec4899 100%) !important; border: none !important; font-size: 1.15rem !important; font-weight: 700 !important; padding: 0.85rem 1rem !important; border-radius: 0.85rem !important; color: white !important; box-shadow: 0 4px 24px rgba(168,85,247,0.4) !important; transition: all 0.2s ease !important; letter-spacing: 0.02em !important; width: 100% !important; } #gen-btn:hover { transform: translateY(-2px) !important; box-shadow: 0 8px 32px rgba(168,85,247,0.55) !important; } #gen-btn:active { transform: translateY(0) !important; } /* ── Dub Button ────────────────────────────────────── */ #dub-btn { background: linear-gradient(135deg, #06b6d4 0%, #a855f7 100%) !important; border: none !important; font-size: 1.15rem !important; font-weight: 700 !important; padding: 0.85rem 1rem !important; border-radius: 0.85rem !important; color: white !important; box-shadow: 0 4px 24px rgba(6,182,212,0.4) !important; transition: all 0.2s ease !important; letter-spacing: 0.02em !important; width: 100% !important; } #dub-btn:hover { transform: translateY(-2px) !important; box-shadow: 0 8px 32px rgba(6,182,212,0.55) !important; } #dub-btn:active { transform: translateY(0) !important; } /* ── Output Video ─────────────────────────────────── */ #output-video, #dub-output-video { border-radius: 1rem !important; overflow: hidden !important; background: #0f172a !important; min-height: 420px !important; } /* ── Footer ───────────────────────────────────────── */ .as-footer { text-align: center; padding: 1.2rem 0 0.5rem; color: #475569; font-size: 0.82rem; border-top: 1px solid #1e293b; margin-top: 1rem; } .as-footer a { color: #a855f7 !important; text-decoration: none !important; } .as-footer a:hover { text-decoration: underline !important; } /* ── Mobile ───────────────────────────────────────── */ @media (max-width: 768px) { .as-header h1 { font-size: 2rem !important; } .badges { gap: 0.35rem !important; } } """