# styles.py custom_css = """ /* Import Google Fonts */ @import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&family=Open+Sans:wght@400;600&display=swap'); /* Apply Fonts to the Entire App */ body { font-family: 'Open Sans', sans-serif; background-color: #F8F9F9; /* Light Gray Background */ color: #2C3E50; /* Dark Slate Gray Text */ } /* Style Headers */ h1, h2, h3, h4, h5, h6 { font-family: 'Roboto', sans-serif; color: #2E86C1; /* Primary Blue */ } h1 { font-size: 2.5em; margin-bottom: 0.5em; } h2 { font-size: 2em; margin-bottom: 0.4em; } h3 { font-size: 1.75em; margin-bottom: 0.3em; } /* Style Markdown Text */ .gr-markdown { font-family: 'Open Sans', sans-serif; line-height: 1.6; } /* Style Buttons */ .gr-button { background-color: #2E86C1; /* Primary Blue */ color: white; border: none; border-radius: 5px; padding: 0.6em 1.2em; font-size: 1em; font-weight: 600; transition: background-color 0.3s ease; } .gr-button:hover { background-color: #1B4F72; /* Darker Blue on Hover */ } /* Style Reset Buttons Differently */ .gr-button.reset-button { background-color: #F39C12; /* Accent Yellow */ } .gr-button.reset-button:hover { background-color: #D68910; /* Darker Yellow on Hover */ } /* Style Textboxes */ .gr-textbox { border: 1px solid #BDC3C7; /* Light Gray Border */ border-radius: 5px; padding: 0.5em; font-size: 1em; font-family: 'Open Sans', sans-serif; transition: border-color 0.3s ease; } .gr-textbox:focus { border-color: #28B463; /* Secondary Green on Focus */ box-shadow: 0 0 5px rgba(40, 180, 99, 0.5); /* Green Glow */ } /* Style Plots */ .gr-plot { background-color: white; border: 1px solid #BDC3C7; border-radius: 5px; padding: 1em; } /* Style File Downloads */ .gr-file { background-color: #28B463; /* Secondary Green */ color: white; border: none; border-radius: 5px; padding: 0.6em 1.2em; font-size: 1em; font-weight: 600; transition: background-color 0.3s ease; margin-top: 0.5em; } .gr-file:hover { background-color: #1E8449; /* Darker Green on Hover */ } /* Style Tabs */ .gr-tabs { border-bottom: 2px solid #2E86C1; /* Primary Blue Border */ } .gr-tab { font-family: 'Roboto', sans-serif; font-weight: 700; color: #2E86C1; padding: 0.5em 1em; border: none; background-color: transparent; cursor: pointer; transition: color 0.3s ease; } .gr-tab:hover { color: #1B4F72; /* Darker Blue on Hover */ } .gr-tab.active { border-bottom: 3px solid #28B463; /* Secondary Green Active Indicator */ color: #28B463; /* Secondary Green Active Text */ } /* Responsive Design */ @media (max-width: 768px) { h1 { font-size: 2em; } h2 { font-size: 1.75em; } h3 { font-size: 1.5em; } .gr-button, .gr-file { width: 100%; box-sizing: border-box; } .gr-row { flex-direction: column; } .gr-column { width: 100%; } .gr-plot { padding: 0.5em; } } """