Eclipse_v3 / style /style.css.txt
Ninad077's picture
Initial deploy of Eclipse v2 Streamlit app
52e54aa
/* ============================================
ECLIPSE - MODERN STUDENT-FRIENDLY UI
Vibrant, Fun, and Engaging Design
============================================ */
/* Import Modern Fonts */
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700;800;900&family=Inter:wght@300;400;500;600;700;800&display=swap');
/* Global Variables */
:root {
--primary-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 50%, #f093fb 100%);
--secondary-gradient: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
--success-gradient: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
--purple-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
--blue-gradient: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
--pink-gradient: linear-gradient(135deg, #fa709a 0%, #fee140 100%);
--dark-bg: #0F172A;
--card-bg: #1E293B;
--text-primary: #F1F5F9;
--text-secondary: #CBD5E1;
--accent-purple: #8B5CF6;
--accent-blue: #3B82F6;
--accent-pink: #EC4899;
}
/* Global Styles */
* {
font-family: 'Poppins', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}
/* Main Container - Better Alignment */
.main .block-container {
padding-top: 2rem;
padding-bottom: 3rem;
padding-left: 3rem;
padding-right: 3rem;
max-width: 100%;
animation: fadeInUp 0.6s ease-out;
}
/* Ensure content uses full width on wide screens */
@media (min-width: 1200px) {
.main .block-container {
max-width: 95%;
}
}
/* Smooth Page Load Animation */
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes pulse {
0%, 100% {
transform: scale(1);
}
50% {
transform: scale(1.05);
}
}
@keyframes gradient {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
/* Header Styling with Gradient Text */
h1, h2, h3 {
font-weight: 700;
letter-spacing: -0.02em;
background: var(--primary-gradient);
background-size: 200% 200%;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
animation: gradient 3s ease infinite;
margin-bottom: 1rem;
}
h1 {
font-size: 2.5rem;
font-weight: 800;
}
h2 {
font-size: 2rem;
font-weight: 700;
}
h3 {
font-size: 1.5rem;
font-weight: 600;
}
/* Subheader - Removed blurry glow, using crisp text */
.stSubheader {
font-weight: 600;
letter-spacing: -0.01em;
color: var(--text-primary);
text-shadow: none;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* Markdown Text Styling */
.stMarkdown {
line-height: 1.9;
color: var(--text-secondary);
font-size: 1.1rem;
}
.stMarkdown p {
margin-bottom: 1.5rem;
font-size: 1.05rem;
color: var(--text-secondary);
}
.stMarkdown strong {
color: var(--text-primary);
font-weight: 600;
background: linear-gradient(135deg, rgba(139, 92, 246, 0.2), rgba(59, 130, 246, 0.2));
padding: 2px 6px;
border-radius: 4px;
}
/* Divider with Gradient */
hr {
border: none;
height: 3px;
background: var(--primary-gradient);
background-size: 200% 200%;
margin: 3rem 0;
border-radius: 2px;
animation: gradient 3s ease infinite;
box-shadow: 0 0 20px rgba(139, 92, 246, 0.5);
}
/* Image Styling with Glow */
.stImage {
border-radius: 20px;
overflow: hidden;
box-shadow: 0 20px 60px rgba(139, 92, 246, 0.4), 0 0 40px rgba(139, 92, 246, 0.2);
margin: 2rem 0;
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.stImage:hover {
transform: translateY(-5px) scale(1.02);
box-shadow: 0 30px 80px rgba(139, 92, 246, 0.6), 0 0 60px rgba(139, 92, 246, 0.3);
}
/* Button Styling - Modern & Vibrant */
.stButton > button {
background: var(--primary-gradient);
background-size: 200% 200%;
color: white;
border: none;
border-radius: 16px;
padding: 0.875rem 2.5rem;
font-weight: 600;
font-size: 1rem;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
box-shadow: 0 8px 25px rgba(139, 92, 246, 0.4), 0 0 20px rgba(139, 92, 246, 0.2);
cursor: pointer;
position: relative;
overflow: hidden;
animation: gradient 3s ease infinite;
}
.stButton > button::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
transition: left 0.5s;
}
.stButton > button:hover::before {
left: 100%;
}
.stButton > button:hover {
transform: translateY(-3px) scale(1.05);
box-shadow: 0 15px 40px rgba(139, 92, 246, 0.6), 0 0 30px rgba(139, 92, 246, 0.4);
}
.stButton > button:active {
transform: translateY(-1px) scale(1.02);
}
/* Download Button - Different Gradient */
.stDownloadButton > button {
background: var(--success-gradient);
background-size: 200% 200%;
box-shadow: 0 8px 25px rgba(79, 172, 254, 0.4), 0 0 20px rgba(79, 172, 254, 0.2);
animation: gradient 3s ease infinite;
}
.stDownloadButton > button:hover {
box-shadow: 0 15px 40px rgba(79, 172, 254, 0.6), 0 0 30px rgba(79, 172, 254, 0.4);
}
/* Sidebar Styling - Clean without pseudo-elements */
[data-testid="stSidebar"] {
background: linear-gradient(180deg, #1E293B 0%, #0F172A 100%);
border-right: 2px solid rgba(139, 92, 246, 0.3);
box-shadow: 4px 0 20px rgba(0, 0, 0, 0.3);
}
/* Remove any top padding that might exist */
[data-testid="stSidebar"] > div:first-child {
padding-top: 0 !important;
}
/* Style the logo container that we'll add via Python */
.sidebar-logo-fixed {
position: fixed !important;
top: 0 !important;
left: 0 !important;
width: 21rem !important;
height: 140px !important;
background: linear-gradient(180deg, #1E293B 0%, #0F172A 100%) !important;
border-bottom: 2px solid rgba(139, 92, 246, 0.3) !important;
z-index: 999 !important;
display: flex !important;
flex-direction: column !important;
align-items: center !important;
justify-content: center !important;
padding: 1rem !important;
}
/* Push sidebar content down to make room for fixed logo */
[data-testid="stSidebarNav"] {
margin-top: 140px !important;
padding-top: 1rem !important;
}
/* Sidebar Logo Image - Proper styling */
[data-testid="stSidebar"] img {
display: block;
max-width: 100%;
height: auto;
margin: 0 auto 1.5rem auto;
border-radius: 12px;
box-shadow: 0 4px 15px rgba(139, 92, 246, 0.3);
transition: transform 0.3s ease;
padding: 0.5rem;
}
[data-testid="stSidebar"] img:hover {
transform: scale(1.05);
}
/* Sidebar text content */
[data-testid="stSidebar"] [data-testid="stMarkdownContainer"] {
color: var(--text-primary);
}
[data-testid="stSidebar"] [data-testid="stMarkdownContainer"] a {
color: var(--accent-purple);
transition: all 0.3s ease;
border-radius: 6px;
padding: 4px 8px;
display: inline-block;
}
[data-testid="stSidebar"] [data-testid="stMarkdownContainer"] a:hover {
background: rgba(139, 92, 246, 0.2);
transform: translateX(5px);
}
/* Form Input Styling - Modern & Clean */
input[type=text], input[type=email], textarea {
width: 100%;
padding: 16px 20px;
border: 2px solid rgba(139, 92, 246, 0.3);
border-radius: 16px;
box-sizing: border-box;
margin-top: 10px;
margin-bottom: 24px;
resize: vertical;
background: rgba(30, 41, 59, 0.95);
backdrop-filter: none;
color: var(--text-primary);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
font-size: 1rem;
font-family: 'Poppins', sans-serif;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
}
input[type=text]:focus, input[type=email]:focus, textarea:focus {
outline: none;
border-color: var(--accent-purple);
box-shadow: 0 0 0 4px rgba(139, 92, 246, 0.2), 0 8px 25px rgba(139, 92, 246, 0.3);
background: rgba(30, 41, 59, 1);
transform: translateY(-2px);
}
input[type=text]::placeholder, input[type=email]::placeholder, textarea::placeholder {
color: rgba(203, 213, 225, 0.5);
font-style: italic;
}
textarea {
min-height: 140px;
font-family: 'Poppins', sans-serif;
}
/* Submit Button - Eye-catching */
button[type=submit], button[type=":submit"] {
background: var(--primary-gradient);
background-size: 200% 200%;
color: white;
padding: 16px 40px;
border: none;
border-radius: 16px;
cursor: pointer;
font-weight: 700;
font-size: 1.1rem;
font-family: 'Poppins', sans-serif;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
box-shadow: 0 8px 25px rgba(139, 92, 246, 0.4), 0 0 20px rgba(139, 92, 246, 0.2);
width: 100%;
position: relative;
overflow: hidden;
animation: gradient 3s ease infinite;
text-transform: uppercase;
letter-spacing: 1px;
}
button[type=submit]::before, button[type=":submit"]::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
transition: left 0.5s;
}
button[type=submit]:hover::before, button[type=":submit"]:hover::before {
left: 100%;
}
button[type=submit]:hover, button[type=":submit"]:hover {
transform: translateY(-3px) scale(1.02);
box-shadow: 0 15px 40px rgba(139, 92, 246, 0.6), 0 0 30px rgba(139, 92, 246, 0.4);
}
button[type=submit]:active, button[type=":submit"]:active {
transform: translateY(-1px) scale(1);
}
/* Link Styling */
a {
color: var(--accent-purple);
text-decoration: none;
transition: all 0.3s ease;
font-weight: 600;
position: relative;
padding: 2px 4px;
border-radius: 4px;
}
a::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 0;
height: 2px;
background: var(--primary-gradient);
transition: width 0.3s ease;
}
a:hover::after {
width: 100%;
}
a:hover {
color: #C4B5FD;
background: rgba(139, 92, 246, 0.1);
}
/* Option Menu Styling */
[data-testid="stOptionMenu"] {
background: rgba(30, 41, 59, 0.9);
border-radius: 16px;
border: 2px solid rgba(139, 92, 246, 0.3);
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3);
transition: all 0.3s ease;
}
[data-testid="stOptionMenu"]:hover {
border-color: rgba(139, 92, 246, 0.6);
box-shadow: 0 12px 35px rgba(139, 92, 246, 0.4);
}
/* Code Block Styling */
.stCodeBlock {
border-radius: 16px;
border: 2px solid rgba(139, 92, 246, 0.3);
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3);
background: rgba(15, 23, 42, 0.8);
}
/* Metric Styling */
[data-testid="stMetricValue"] {
background: var(--primary-gradient);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
font-weight: 800;
font-size: 2rem;
}
/* Success/Info/Error Messages */
.stSuccess {
background: rgba(16, 185, 129, 0.15);
border-left: 4px solid #10B981;
border-radius: 12px;
padding: 1rem;
box-shadow: 0 4px 15px rgba(16, 185, 129, 0.2);
}
.stInfo {
background: rgba(59, 130, 246, 0.15);
border-left: 4px solid #3B82F6;
border-radius: 12px;
padding: 1rem;
box-shadow: 0 4px 15px rgba(59, 130, 246, 0.2);
}
.stError {
background: rgba(239, 68, 68, 0.15);
border-left: 4px solid #EF4444;
border-radius: 12px;
padding: 1rem;
box-shadow: 0 4px 15px rgba(239, 68, 68, 0.2);
}
/* Custom Scrollbar */
::-webkit-scrollbar {
width: 12px;
}
::-webkit-scrollbar-track {
background: var(--dark-bg);
border-radius: 10px;
}
::-webkit-scrollbar-thumb {
background: var(--primary-gradient);
background-size: 200% 200%;
border-radius: 10px;
animation: gradient 3s ease infinite;
box-shadow: 0 0 10px rgba(139, 92, 246, 0.5);
}
::-webkit-scrollbar-thumb:hover {
background: var(--secondary-gradient);
background-size: 200% 200%;
}
/* Hide sidebar scrollbar completely */
[data-testid="stSidebar"] ::-webkit-scrollbar {
display: none;
}
[data-testid="stSidebar"] {
-ms-overflow-style: none; /* IE and Edge */
scrollbar-width: none; /* Firefox */
}
/* Table Styling */
.stDataFrame {
border-radius: 16px;
overflow: hidden;
border: 2px solid rgba(139, 92, 246, 0.3);
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3);
background: rgba(30, 41, 59, 0.8);
}
/* Selectbox and Radio Styling */
.stSelectbox > div > div, .stRadio > div > div {
background: rgba(30, 41, 59, 0.9);
border: 2px solid rgba(139, 92, 246, 0.3);
border-radius: 16px;
transition: all 0.3s ease;
}
.stSelectbox > div > div:hover, .stRadio > div > div:hover {
border-color: rgba(139, 92, 246, 0.6);
box-shadow: 0 4px 15px rgba(139, 92, 246, 0.3);
}
/* File Uploader Styling */
.stFileUploader {
border: 3px dashed rgba(139, 92, 246, 0.4);
border-radius: 20px;
padding: 3rem;
background: rgba(30, 41, 59, 0.5);
transition: all 0.3s ease;
backdrop-filter: blur(10px);
}
.stFileUploader:hover {
border-color: rgba(139, 92, 246, 0.7);
background: rgba(30, 41, 59, 0.8);
box-shadow: 0 8px 25px rgba(139, 92, 246, 0.3);
transform: translateY(-3px);
}
/* Expander Styling */
.streamlit-expanderHeader {
background: rgba(30, 41, 59, 0.8);
border-radius: 16px;
border: 2px solid rgba(139, 92, 246, 0.3);
font-weight: 600;
transition: all 0.3s ease;
padding: 1rem;
}
.streamlit-expanderHeader:hover {
border-color: rgba(139, 92, 246, 0.6);
box-shadow: 0 4px 15px rgba(139, 92, 246, 0.3);
}
/* Progress Bar Styling */
.stProgress > div > div > div {
background: var(--primary-gradient);
background-size: 200% 200%;
border-radius: 10px;
animation: gradient 3s ease infinite;
box-shadow: 0 0 20px rgba(139, 92, 246, 0.5);
}
/* Tabs Styling */
.stTabs [data-baseweb="tab-list"] {
gap: 12px;
background: rgba(30, 41, 59, 0.5);
padding: 8px;
border-radius: 16px;
}
.stTabs [data-baseweb="tab"] {
border-radius: 12px;
background: rgba(30, 41, 59, 0.8);
border: 2px solid rgba(139, 92, 246, 0.3);
color: var(--text-secondary);
font-weight: 600;
transition: all 0.3s ease;
padding: 12px 24px;
}
.stTabs [data-baseweb="tab"]:hover {
background: rgba(30, 41, 59, 1);
border-color: rgba(139, 92, 246, 0.6);
transform: translateY(-2px);
box-shadow: 0 4px 15px rgba(139, 92, 246, 0.3);
}
.stTabs [aria-selected="true"] {
background: var(--primary-gradient);
background-size: 200% 200%;
border-color: transparent;
color: white;
animation: gradient 3s ease infinite;
box-shadow: 0 8px 25px rgba(139, 92, 246, 0.5);
}
/* Social Media Badges Container */
.stComponents iframe, .stComponents div {
border-radius: 12px;
margin: 0.5rem;
transition: transform 0.3s ease;
}
.stComponents iframe:hover, .stComponents div:hover {
transform: scale(1.1);
}
/* Navbar Styling - No blur for crispness */
.navbar {
position: sticky;
top: 0;
z-index: 100;
background: rgba(15, 23, 42, 0.98);
backdrop-filter: none;
border-bottom: 2px solid rgba(139, 92, 246, 0.3);
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
}
/* Card-like Containers - No blur */
.stContainer {
background: rgba(30, 41, 59, 0.95);
border-radius: 24px;
padding: 2.5rem;
border: 2px solid rgba(139, 92, 246, 0.3);
box-shadow: 0 12px 40px rgba(0, 0, 0, 0.4), 0 0 30px rgba(139, 92, 246, 0.2);
margin: 2rem 0;
backdrop-filter: none;
transition: all 0.3s ease;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.stContainer:hover {
border-color: rgba(139, 92, 246, 0.6);
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5), 0 0 40px rgba(139, 92, 246, 0.3);
transform: translateY(-5px);
}
/* ============================================
GLOBAL FIXES FOR CRISP TEXT & ALIGNMENT
============================================ */
/* Remove all blur effects for crisp rendering */
* {
-webkit-font-smoothing: antialiased !important;
-moz-osx-font-smoothing: grayscale !important;
text-rendering: optimizeLegibility !important;
}
/* Remove backdrop blur from all elements */
* {
backdrop-filter: none !important;
}
/* Better content alignment - use more screen space */
.main {
padding-left: 1rem;
padding-right: 1rem;
}
/* Ensure option menu is crisp */
[data-baseweb="select"], [data-baseweb="select"] * {
-webkit-font-smoothing: antialiased !important;
-moz-osx-font-smoothing: grayscale !important;
}
/* Fix any remaining blurry widgets */
.stSelectbox, .stRadio, .stTextInput, .stTextArea {
-webkit-font-smoothing: antialiased !important;
-moz-osx-font-smoothing: grayscale !important;
}
/* Better spacing for wide screens */
@media (min-width: 1400px) {
.main .block-container {
max-width: 98%;
padding-left: 2rem;
padding-right: 2rem;
}
}