kushinm's picture
instructions overhaul + removal of extraneous elements from team pages
97dbe9f
custom_css = """
@import url('https://fonts.googleapis.com/css2?family=Lato:wght@700;900&display=swap');
@import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;600;700&family=IBM+Plex+Mono:wght@400;600&display=swap");
/* Force dark theme everywhere */
:root, .dark, .light {
color-scheme: dark !important;
--bg-1: #0d1117;
--bg-2: #161b22;
--card-bg: #1c2128;
--ink-1: #e6edf3;
--ink-2: #8b949e;
--accent: #58a6ff;
--accent-hover: #79b8ff;
--accent-2: #bc8cff;
--border: #30363d;
--link-text-color: var(--accent);
--blue-team: #58a6ff;
--blue-team-hover: #79b8ff;
--red-team: #f85149;
--red-team-hover: #ff7b72;
--success: #3fb950;
--error: #f85149;
}
body,
.gradio-container {
font-family: "Space Grotesk", "Trebuchet MS", sans-serif;
color: var(--ink-1) !important;
background: var(--bg-1) !important;
}
.gradio-container .block {
background: var(--card-bg) !important;
border: 1px solid var(--border) !important;
border-radius: 10px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
padding: 10px 20px !important;
}
/* Force text color on all Gradio elements */
.gradio-container *,
.gradio-container .prose,
.gradio-container .prose p,
.gradio-container .prose li,
.gradio-container .prose h1,
.gradio-container .prose h2,
.gradio-container .prose h3,
.gradio-container .prose h4,
.gradio-container .prose strong,
.gradio-container label,
.gradio-container span {
color: var(--ink-1);
}
.gradio-container .prose a,
.gradio-container a {
color: var(--accent) !important;
}
.gradio-container .prose code,
.gradio-container code {
background: #282e36 !important;
color: #e6edf3 !important;
}
.gradio-container .prose pre,
.gradio-container pre {
background: #161b22 !important;
border: 1px solid var(--border) !important;
}
.gradio-container input,
.gradio-container textarea,
.gradio-container select,
.gr-text-input textarea,
.gr-text-input input {
color: var(--ink-1) !important;
background: #0d1117 !important;
border: 1px solid var(--border) !important;
}
.gradio-container input::placeholder,
.gradio-container textarea::placeholder {
color: var(--ink-2) !important;
}
/* Tabs */
.gradio-container .tabs {
background: transparent !important;
}
.gradio-container button.tab-nav,
.gradio-container .tab-nav button {
color: var(--ink-2) !important;
background: transparent !important;
}
.gradio-container button.tab-nav.selected,
.gradio-container .tab-nav button.selected {
color: var(--ink-1) !important;
border-bottom-color: var(--accent) !important;
}
#blue-tab-button {
color: #58a6ff !important;
font-weight: bold;
}
#red-tab-button {
color: #f85149 !important;
font-weight: bold;
}
/* Accordion */
.gradio-container .accordion {
background: var(--card-bg) !important;
border-color: var(--border) !important;
}
/* Dataframe / table */
.gradio-container table {
background: var(--card-bg) !important;
}
.gradio-container table th {
background: #21262d !important;
color: var(--ink-1) !important;
border-color: var(--border) !important;
}
.gradio-container table td {
background: var(--card-bg) !important;
color: var(--ink-1) !important;
border-color: var(--border) !important;
}
.gradio-container table tr:nth-child(even) td {
background: #161b22 !important;
}
/* Buttons */
.gr-button {
background: var(--accent) !important;
color: #ffffff !important;
border: 1px solid transparent !important;
font-weight: 600;
letter-spacing: 0.01em;
}
.gr-button:hover {
background: var(--accent-hover) !important;
}
.gr-button.secondary {
background: var(--card-bg) !important;
color: var(--ink-1) !important;
border: 1px solid var(--border) !important;
}
.gr-button.secondary:hover {
border-color: var(--accent) !important;
color: var(--accent) !important;
}
/* Header */
.hackathon-header {
margin: 10px 0 24px;
}
.hackathon-header h1 {
font-family: 'Lato', sans-serif;
font-weight: 900;
font-size: 40px;
letter-spacing: 0.02em;
margin-bottom: 6px;
color: var(--ink-1) !important;
}
.hackathon-subtitle {
color: var(--ink-2) !important;
font-size: 18px;
margin-top: -4px;
margin-bottom: 8px;
}
.hackathon-nav {
font-weight: 500;
margin: 4px 0 10px;
}
.hackathon-nav a {
color: var(--ink-2) !important;
text-decoration: none;
padding: 0 8px;
}
.hackathon-nav a:hover {
color: var(--accent) !important;
}
.nav-divider {
color: var(--accent-2) !important;
}
.markdown-text {
font-size: 16px !important;
}
.tab-buttons button {
font-size: 20px;
}
/* Blue team accent */
.blue-team .gr-button.primary,
.blue-team .gr-button:not(.secondary) {
background: var(--blue-team) !important;
}
.blue-team .gr-button:not(.secondary):hover {
background: var(--blue-team-hover) !important;
}
.blue-team-header {
color: var(--blue-team) !important;
border-left: 4px solid var(--blue-team);
padding-left: 12px;
margin-bottom: 12px;
}
/* Red team accent */
.red-team .gr-button.primary,
.red-team .gr-button:not(.secondary) {
background: var(--red-team) !important;
}
.red-team .gr-button:not(.secondary):hover {
background: var(--red-team-hover) !important;
}
.red-team-header {
color: var(--red-team) !important;
border-left: 4px solid var(--red-team);
padding-left: 12px;
margin-bottom: 12px;
}
/* Status message styles */
.status-error { color: var(--error) !important; font-size: 16px; text-align: center; font-weight: 600; }
.status-warning { color: var(--accent-2) !important; font-size: 16px; text-align: center; font-weight: 600; }
.status-success { color: var(--success) !important; font-size: 16px; text-align: center; font-weight: 600; }
"""
get_window_url_params = """
function(url_params) {
const params = new URLSearchParams(window.location.search);
url_params = Object.fromEntries(params);
return url_params;
}
"""