Director Bake-Off Studio
Let legendary directors compete to bring your vision to life
#!/usr/bin/env python3 import gradio as gr import asyncio from director_bake_off import run_bake_off import traceback # Clean, professional light mode styling LIGHT_MODE_CSS = """ /* Force light mode and override system preferences */ * { color-scheme: light !important; } /* Override any dark mode media queries */ @media (prefers-color-scheme: dark) { :root { color-scheme: light !important; } body, .gradio-container { background: #ffffff !important; color: #1f2937 !important; } } /* Clean, professional styling */ .gradio-container { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important; background: #ffffff !important; color: #1f2937 !important; } /* Header styling */ .main-header { text-align: center; padding: 2rem 0; background: #ffffff; border-bottom: 1px solid #e5e7eb; margin-bottom: 2rem; } .main-title { font-size: 2.25rem; font-weight: 700; color: #1f2937; margin-bottom: 0.5rem; } .main-subtitle { font-size: 1.125rem; color: #6b7280; font-weight: 400; } /* Force light backgrounds for ALL input containers and elements */ .gr-textbox, .gr-textarea, input, textarea, .gr-textbox *, .gr-textarea *, .gr-textbox > div, .gr-textarea > div, .gradio-textbox, .gradio-textarea { background: #ffffff !important; background-color: #ffffff !important; color: #1f2937 !important; border: 1px solid #d1d5db !important; border-radius: 6px !important; } /* Force the container backgrounds to be light */ .gr-textbox, .gr-textarea { background: #ffffff !important; background-color: #ffffff !important; } /* Force all child elements to have light backgrounds */ .gr-textbox > *, .gr-textarea > *, .gr-textbox > div > *, .gr-textarea > div > * { background: #ffffff !important; background-color: #ffffff !important; color: #1f2937 !important; } .gr-textbox:focus, .gr-textarea:focus, input:focus, textarea:focus { border-color: #3b82f6 !important; box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1) !important; outline: none !important; background: #ffffff !important; background-color: #ffffff !important; } /* Button styling */ .submit-btn { background: #3b82f6 !important; color: #ffffff !important; border: none !important; border-radius: 6px !important; padding: 0.75rem 1.5rem !important; font-weight: 600 !important; transition: background-color 0.2s !important; } .submit-btn:hover { background: #2563eb !important; } /* Results styling */ .results-container { background: #ffffff; border: 1px solid #e5e7eb; border-radius: 8px; padding: 1.5rem; margin-top: 1.5rem; } .director-card { background: #f9fafb; border: 1px solid #e5e7eb; border-radius: 8px; padding: 1.5rem; margin-bottom: 1rem; } .rank-badge { display: inline-block; background: #3b82f6; color: #ffffff; padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.875rem; font-weight: 600; margin-bottom: 0.5rem; } .rank-1 { background: #f59e0b; } .rank-2 { background: #6b7280; } .rank-3 { background: #d97706; } .director-name { font-size: 1.25rem; font-weight: 600; color: #1f2937; margin-bottom: 1rem; } .prompt-text { background: #ffffff; color: #1f2937; padding: 1rem; border: 1px solid #e5e7eb; border-radius: 6px; line-height: 1.6; margin-bottom: 1rem; } .additional-director { background: #ecfdf5; border: 1px solid #d1fae5; border-radius: 8px; padding: 1.5rem; margin-bottom: 1.5rem; } .explanation-section { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 1.5rem; margin-top: 1.5rem; } .section-title { font-size: 1.125rem; font-weight: 600; color: #1f2937; margin-bottom: 1rem; } .loading { text-align: center; padding: 2rem; color: #6b7280; } /* Ensure all Gradio components use light mode */ .gr-block, .gr-form, .gr-box { background: #ffffff !important; color: #1f2937 !important; } /* Override any remaining dark mode styles */ .dark, [data-theme="dark"] { background: #ffffff !important; color: #1f2937 !important; } /* Force all text elements to be visible */ h1, h2, h3, h4, h5, h6, p, div, span, li, ol, ul { color: #1f2937 !important; } /* Ensure HTML content is visible */ .gr-html * { color: #1f2937 !important; } /* Force visibility for all text content */ * { color: #1f2937 !important; } /* Override Gradio's default text colors */ .gradio-container * { color: #1f2937 !important; } /* AGGRESSIVE LABEL VISIBILITY - Override all Gradio label styles */ .gr-label, .gr-label *, label, .label, .gradio-textbox label, .gradio-textarea label, [data-testid*="textbox"] label, [data-testid*="textarea"] label, .gr-textbox .gr-label, .gr-textarea .gr-label, .gr-textbox span[data-testid*="label"], .gr-textarea span[data-testid*="label"], .gr-textbox .label, .gr-textarea .label, .gr-form .gr-label, .gr-block .gr-label, .gradio-container .gr-label, .gradio-container label, .gr-textbox > span, .gr-textarea > span, .gr-textbox > div > span, .gr-textarea > div > span, .gr-textbox .svelte-*, .gr-textarea .svelte-*, span[class*="label"], div[class*="label"], .gr-textbox span:first-child, .gr-textarea span:first-child { color: #1f2937 !important; font-weight: 600 !important; font-size: 1rem !important; margin-bottom: 0.5rem !important; display: block !important; opacity: 1 !important; visibility: visible !important; background: transparent !important; } /* Target Gradio's internal label structure more aggressively */ .gr-textbox > div:first-child, .gr-textarea > div:first-child, .gr-textbox > div:first-child > *, .gr-textarea > div:first-child > *, .gr-textbox .svelte-1gfkn6j, .gr-textarea .svelte-1gfkn6j, .gr-textbox .svelte-*, .gr-textarea .svelte-* { color: #1f2937 !important; font-weight: 600 !important; opacity: 1 !important; visibility: visible !important; } /* Force all possible label selectors */ .gradio-container [class*="label"], .gradio-container [data-testid*="label"], .gradio-container .gr-textbox *:first-child, .gradio-container .gr-textarea *:first-child { color: #1f2937 !important; font-weight: 600 !important; opacity: 1 !important; visibility: visible !important; } /* Nuclear option - force ALL text in textbox containers to be visible */ .gr-textbox *, .gr-textarea * { color: #1f2937 !important; opacity: 1 !important; visibility: visible !important; } /* NUCLEAR BACKGROUND OVERRIDE - Force all containers to be white */ .gr-textbox, .gr-textarea, .gr-textbox *, .gr-textarea *, .gr-textbox > div, .gr-textarea > div, .gr-textbox > div > div, .gr-textarea > div > div, .gr-textbox > div > div > div, .gr-textarea > div > div > div, [class*="textbox"], [class*="textarea"], [data-testid*="textbox"], [data-testid*="textarea"] { background: #ffffff !important; background-color: #ffffff !important; } /* Override any blue/dark backgrounds specifically */ .gr-textbox [style*="background"], .gr-textarea [style*="background"], .gr-textbox [style*="background-color"], .gr-textarea [style*="background-color"] { background: #ffffff !important; background-color: #ffffff !important; } /* Force white background on any element with blue/dark styling */ [style*="background: rgb("], [style*="background-color: rgb("], [style*="background:#"], [style*="background-color:#"] { background: #ffffff !important; background-color: #ffffff !important; } """ def format_results_html(result): """Format the results into clean, professional HTML.""" if not result: return "
{traceback.format_exc()}
Let legendary directors compete to bring your vision to life
Powered by DSPy and the creative genius of legendary directors 🎬