SMART_AI_RESUME / style /style.css
parthib07's picture
Upload 531 files
d7d3dff verified
/* Import Google Fonts */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Poppins:wght@400;500;600;700&display=swap');
/* Root Variables */
:root {
--primary-gradient: linear-gradient(135deg, #00B4DB 0%, #0083B0 100%);
--secondary-gradient: linear-gradient(135deg, #2D2D2D 0%, #1E1E1E 100%);
--accent-color: #00B4DB;
--bg-dark: #1E1E1E;
--bg-darker: #171717;
--bg-light: #2D2D2D;
--text-primary: #E0E0E0;
--text-secondary: #B0B0B0;
--border-color: #3D3D3D;
--success-color: #4CAF50;
--warning-color: #FFA726;
--error-color: #F44336;
}
/* Global Styles */
body {
font-family: 'Inter', sans-serif;
background-color: var(--bg-darker);
color: var(--text-primary);
line-height: 1.6;
}
.stApp {
background: var(--bg-darker);
}
/* Main container */
.main {
padding: 2rem;
max-width: 1200px;
margin: 0 auto;
background-color: var(--bg-dark);
color: var(--text-primary);
}
/* Global Dark Theme Styles */
body {
background-color: var(--bg-darker);
color: var(--text-primary);
}
.stApp {
background: var(--bg-darker);
}
/* Sidebar Styling */
.css-1d391kg {
background: linear-gradient(180deg, #2D2D2D 0%, #1E1E1E 100%);
}
.css-1d391kg .stSelectbox label {
color: var(--text-primary) !important;
}
/* Card Styling */
.stCard {
background: var(--bg-dark);
border-radius: 15px;
padding: 2rem;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
border: 1px solid var(--border-color);
margin-bottom: 1.5rem;
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.stCard:hover {
transform: translateY(-5px);
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3);
}
/* Button Styling */
.stButton > button {
background: var(--primary-gradient);
color: white;
border: none;
padding: 0.75rem 1.5rem;
border-radius: 8px;
font-weight: 600;
transition: all 0.3s ease;
text-transform: uppercase;
letter-spacing: 1px;
}
.stButton > button:hover {
transform: translateY(-2px);
box-shadow: 0 5px 15px rgba(0, 180, 219, 0.4);
}
/* Input Fields */
.stTextInput > div > div {
background: var(--bg-light);
border: 1px solid var(--border-color);
color: var(--text-primary);
border-radius: 8px;
padding: 0;
}
.stTextInput > div > div:focus-within {
border-color: var(--accent-color);
box-shadow: 0 0 0 1px var(--accent-color);
}
/* Streamlit Text Input Base Styles */
.stTextInput > div > div {
background: var(--bg-light);
border: 1px solid var(--border-color);
color: var(--text-primary);
border-radius: 8px;
padding: 0;
}
.stTextInput > div > div:focus-within {
border-color: var(--accent-color);
box-shadow: 0 0 0 1px var(--accent-color);
}
/* Streamlit Password Input Styles */
div[data-baseweb="base-input"] {
background: transparent !important;
border: none !important;
padding: 0 !important;
margin: 0 !important;
}
div[data-baseweb="input"] {
position: relative !important;
background: var(--bg-light) !important;
border: 1px solid var(--border-color) !important;
border-radius: 8px !important;
margin: 8px 0 !important;
padding: 0 !important;
}
div[data-baseweb="input"] input {
background: transparent !important;
border: none !important;
color: var(--text-primary) !important;
font-size: 14px !important;
padding: 12px !important;
height: 45px !important;
width: 100% !important;
box-sizing: border-box !important;
outline: none !important;
}
/* Remove all focus outlines */
div[data-baseweb="input"]:focus,
div[data-baseweb="input"] input:focus,
div[data-baseweb="input"] div:focus {
outline: none !important;
box-shadow: none !important;
}
/* Single focus border on container */
div[data-baseweb="input"]:focus-within {
border-color: var(--accent-color) !important;
box-shadow: 0 0 0 1px var(--accent-color) !important;
}
/* Password Eye Icon */
div[data-baseweb="input"] button {
position: absolute !important;
right: 12px !important;
top: 50% !important;
transform: translateY(-50%) !important;
background: none !important;
border: none !important;
padding: 4px !important;
color: var(--text-secondary) !important;
cursor: pointer !important;
z-index: 2 !important;
height: auto !important;
min-height: auto !important;
width: auto !important;
min-width: auto !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
}
/* Eye Icon Hover */
div[data-baseweb="input"] button:hover,
div[data-baseweb="input"] button:focus {
background: none !important;
border: none !important;
box-shadow: none !important;
color: var(--accent-color) !important;
}
/* Remove any inner containers/wrappers styling */
div[data-baseweb="input"] > div {
border: none !important;
background: transparent !important;
padding: 0 !important;
margin: 0 !important;
}
/* Admin Login Section */
.stExpander {
background: var(--bg-dark);
border-radius: 12px;
border: 1px solid var(--border-color);
margin: 10px 0;
padding: 15px;
}
.stExpander .stButton > button {
width: 100%;
margin: 10px 0 5px 0;
background: var(--accent-color);
color: white;
border: none;
padding: 8px 16px;
border-radius: 8px;
cursor: pointer;
font-weight: 500;
height: 45px;
}
.stExpander .stButton > button:hover {
background: var(--accent-color-dark);
}
/* File Uploader */
.stFileUploader {
background: var(--bg-light);
border: 2px dashed var(--border-color);
border-radius: 10px;
padding: 2rem;
}
.stFileUploader:hover {
border-color: var(--accent-color);
}
/* Metrics */
.stMetric {
background: var(--bg-light);
padding: 1rem;
border-radius: 10px;
border-left: 4px solid var(--accent-color);
}
.stMetric:hover {
transform: translateX(5px);
}
/* Headers */
h1, h2, h3 {
color: var(--text-primary);
font-family: 'Poppins', sans-serif;
font-weight: 600;
}
h1 {
background: var(--primary-gradient);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-size: 2.5rem;
margin-bottom: 1.5rem;
}
/* Progress Bars */
.stProgress > div > div {
background-color: var(--accent-color);
}
/* Expander */
.streamlit-expanderHeader {
background: var(--bg-light);
border: none;
border-radius: 8px;
}
/* Plotly Charts */
.js-plotly-plot {
background: var(--bg-dark) !important;
}
/* Custom Components */
.feature-card {
background: var(--bg-light);
border-radius: 15px;
padding: 1.5rem;
margin: 1rem 0;
border: 1px solid var(--border-color);
transition: all 0.3s ease;
}
.feature-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3);
border-color: var(--accent-color);
}
/* Ensure feature-card text is always readable on dark UI */
.feature-card h3,
.feature-card .feature-title {
color: #f5f8ff !important;
}
.feature-card p,
.feature-card .feature-description {
color: #d6e2f5 !important;
}
.feature-card .feature-icon i,
.feature-card i.feature-icon {
color: #7dd3fc !important;
}
.resume-template {
background: var(--bg-light);
border-radius: 10px;
padding: 1rem;
margin: 0.5rem;
border: 2px solid var(--border-color);
transition: all 0.3s ease;
}
.resume-template:hover {
border-color: var(--accent-color);
transform: scale(1.02);
}
/* Feedback Section */
.feedback-card {
background: var(--bg-light);
border-radius: 15px;
padding: 1.5rem;
margin: 1rem 0;
border: 1px solid var(--border-color);
transition: all 0.3s ease;
}
.feedback-card:hover {
transform: translateX(5px);
border-color: var(--accent-color);
}
/* About Section */
.about-container {
background: linear-gradient(135deg, var(--bg-light) 0%, var(--bg-dark) 100%);
border-radius: 20px;
padding: 2rem;
margin: 2rem 0;
position: relative;
overflow: hidden;
}
.about-container::before {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: radial-gradient(circle, rgba(0,180,219,0.1) 0%, transparent 70%);
animation: rotate 20s linear infinite;
}
@keyframes rotate {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
/* Scrollbar */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: var(--bg-darker);
}
::-webkit-scrollbar-thumb {
background: var(--border-color);
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--accent-color);
}
/* Animations */
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.animate-fade-in {
animation: fadeIn 0.5s ease forwards;
}
/* Role card styling */
.role-card {
background: white;
border-radius: 10px;
padding: 1.5rem;
margin-bottom: 1rem;
border: 1px solid #e1e4e8;
transition: all 0.3s ease;
}
.role-card:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
.role-card h3 {
color: #2193b0;
margin-bottom: 0.5rem;
}
/* Skills tag styling */
.skill-tag {
display: inline-block;
background: rgba(33, 147, 176, 0.1);
color: #2193b0;
padding: 0.25rem 0.75rem;
border-radius: 15px;
margin: 0.25rem;
font-size: 0.875rem;
}
/* Template preview styling */
.template-preview {
border: 2px solid #e1e4e8;
border-radius: 10px;
padding: 1rem;
margin-bottom: 1rem;
cursor: pointer;
transition: all 0.3s ease;
}
.template-preview:hover {
border-color: #2193b0;
box-shadow: 0 2px 8px rgba(33, 147, 176, 0.2);
}
.template-preview.selected {
border-color: #2193b0;
background: rgba(33, 147, 176, 0.05);
}
/* Section headings */
h1, h2, h3 {
color: #1a1a1a;
margin-bottom: 1rem;
}
h1 {
font-size: 2.5rem;
font-weight: 700;
background: linear-gradient(45deg, #2193b0, #6dd5ed);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
/* Responsive adjustments */
@media (max-width: 768px) {
.main {
padding: 1rem;
}
.stcard {
padding: 1rem;
}
h1 {
font-size: 2rem;
}
}
/* Glass morphism effects */
.glass-card {
background: rgba(255, 255, 255, 0.15);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 15px;
}
/* Enhanced feedback section */
.feedback-container {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
padding: 2rem;
border-radius: 20px;
box-shadow: 0 8px 32px rgba(31, 38, 135, 0.15);
}
.feedback-card {
background: white;
border-radius: 15px;
padding: 1.5rem;
margin: 1rem 0;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
transition: transform 0.3s ease;
}
.feedback-card:hover {
transform: scale(1.02);
}
/* About page enhancements */
.about-section {
position: relative;
padding: 3rem;
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
border-radius: 20px;
overflow: hidden;
}
.about-section::before {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 60%);
animation: rotate 20s linear infinite;
z-index: 0;
}
@keyframes rotate {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
/* Resume builder enhancements */
.template-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 1.5rem;
padding: 1rem;
}
.template-card {
background: white;
border-radius: 15px;
padding: 1.5rem;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
transition: all 0.3s ease;
cursor: pointer;
position: relative;
overflow: hidden;
}
.template-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 15px rgba(33, 147, 176, 0.2);
}
.template-card::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 4px;
background: linear-gradient(45deg, #2193b0, #6dd5ed);
transform: scaleX(0);
transition: transform 0.3s ease;
}
.template-card:hover::after {
transform: scaleX(1);
}
/* Resume analyzer enhancements */
.analysis-section {
background: linear-gradient(135deg, #ffffff 0%, #f5f7fa 100%);
border-radius: 20px;
padding: 2rem;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05);
}
.metric-card {
background: white;
border-radius: 15px;
padding: 1.5rem;
margin: 1rem 0;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
transition: all 0.3s ease;
border-left: 4px solid #2193b0;
}
.metric-card:hover {
transform: translateX(5px);
box-shadow: 0 6px 12px rgba(33, 147, 176, 0.15);
}
/* Loading animations */
.loading-spinner {
width: 50px;
height: 50px;
border: 3px solid rgba(33, 147, 176, 0.1);
border-radius: 50%;
border-top-color: #2193b0;
animation: spin 1s ease-in-out infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
/* Enhanced progress bars */
.progress-container {
background: #f5f7fa;
border-radius: 10px;
padding: 0.5rem;
margin: 1rem 0;
}
.progress-bar {
height: 8px;
background: linear-gradient(45deg, #2193b0, #6dd5ed);
border-radius: 10px;
transition: width 0.3s ease;
}
/* Tooltip styles */
.tooltip {
position: relative;
display: inline-block;
}
.tooltip:hover::before {
content: attr(data-tooltip);
position: absolute;
bottom: 100%;
left: 50%;
transform: translateX(-50%);
padding: 0.5rem 1rem;
background: rgba(0, 0, 0, 0.8);
color: white;
border-radius: 5px;
font-size: 0.875rem;
white-space: nowrap;
z-index: 1000;
}
/* Notification styles */
.notification {
position: fixed;
bottom: 20px;
right: 20px;
padding: 1rem 2rem;
background: white;
border-radius: 10px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
animation: slideIn 0.3s ease forwards;
}
@keyframes slideIn {
from { transform: translateX(100%); opacity: 0; }
to { transform: translateX(0); opacity: 1; }
}
/* Dark mode styles */
@media (prefers-color-scheme: dark) {
.stcard {
background: #2d2d2d;
border-color: #3d3d3d;
}
.feedback-card,
.template-card,
.metric-card {
background: #2d2d2d;
color: #ffffff;
}
.analysis-section {
background: linear-gradient(135deg, #2d2d2d 0%, #1a1a1a 100%);
}
.about-section {
background: linear-gradient(135deg, #2d2d2d 0%, #1a1a1a 100%);
color: #ffffff;
}
}
/* Modern Card Styles */
.card {
background: var(--bg-dark);
border-radius: 16px;
padding: 1.5rem;
border: 1px solid var(--border-color);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
overflow: hidden;
}
.card::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: var(--primary-gradient);
opacity: 0;
transition: opacity 0.3s ease;
z-index: 0;
}
.card:hover::before {
opacity: 0.05;
}
.card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.2);
border-color: var(--accent-color);
}
/* Glassmorphism Effects */
.glass-card {
background: rgba(45, 45, 45, 0.6);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 16px;
}
/* Modern Button Styles */
.modern-button {
background: var(--primary-gradient);
color: white;
padding: 0.75rem 1.5rem;
border-radius: 8px;
border: none;
font-weight: 500;
letter-spacing: 0.5px;
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
.modern-button::after {
content: '';
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: -100%;
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
transition: 0.5s;
}
.modern-button:hover::after {
left: 100%;
}
/* Animated Progress Bar */
.progress-bar {
background: var(--bg-light);
border-radius: 20px;
padding: 4px;
position: relative;
overflow: hidden;
}
.progress-bar::after {
content: '';
position: absolute;
top: 0;
left: 0;
height: 100%;
background: var(--primary-gradient);
border-radius: 20px;
animation: progress 1.5s ease-in-out;
}
@keyframes progress {
from { width: 0; }
to { width: var(--progress-width); }
}
/* Modern Input Fields */
.modern-input {
background: var(--bg-light);
border: 1px solid var(--border-color);
border-radius: 8px;
padding: 0.75rem 1rem;
color: var(--text-primary);
transition: all 0.3s ease;
}
.modern-input:focus {
border-color: var(--accent-color);
box-shadow: 0 0 0 2px rgba(0, 180, 219, 0.2);
}
/* Dashboard Cards */
.metric-card {
background: var(--bg-dark);
border-radius: 16px;
padding: 1.5rem;
border: 1px solid var(--border-color);
transition: all 0.3s ease;
}
.metric-card:hover {
transform: translateY(-5px);
border-color: var(--accent-color);
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.2);
}
.metric-value {
font-size: 2.5rem;
font-weight: 700;
background: var(--primary-gradient);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
margin: 1rem 0;
}
/* Animated Icons */
.icon-pulse {
animation: pulse 2s infinite;
}
@keyframes pulse {
0% { transform: scale(1); }
50% { transform: scale(1.1); }
100% { transform: scale(1); }
}
/* Loading Animation */
.loading-spinner {
width: 40px;
height: 40px;
border: 3px solid var(--border-color);
border-top: 3px solid var(--accent-color);
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
/* Chart Container */
.chart-container {
background: var(--bg-dark);
border-radius: 16px;
padding: 1.5rem;
margin: 1rem 0;
border: 1px solid var(--border-color);
transition: all 0.3s ease;
}
.chart-container:hover {
transform: translateY(-5px);
border-color: var(--accent-color);
}
/* Responsive Grid */
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 1.5rem;
margin: 1.5rem 0;
}
/* Modern Table */
.modern-table {
width: 100%;
border-collapse: separate;
border-spacing: 0;
margin: 1.5rem 0;
}
.modern-table th {
background: var(--bg-light);
color: var(--text-primary);
padding: 1rem;
text-align: left;
font-weight: 600;
}
.modern-table td {
padding: 1rem;
border-bottom: 1px solid var(--border-color);
}
.modern-table tr:hover td {
background: rgba(0, 180, 219, 0.05);
}
/* Tooltip */
.tooltip {
position: relative;
display: inline-block;
}
.tooltip:hover::before {
content: attr(data-tooltip);
position: absolute;
bottom: 100%;
left: 50%;
transform: translateX(-50%);
padding: 0.5rem 1rem;
background: var(--bg-dark);
color: var(--text-primary);
border-radius: 4px;
font-size: 0.875rem;
white-space: nowrap;
z-index: 1000;
}
/* Custom Scrollbar */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: var(--bg-darker);
}
::-webkit-scrollbar-thumb {
background: var(--border-color);
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--accent-color);
}
/* Responsive Design */
@media (max-width: 768px) {
.grid {
grid-template-columns: 1fr;
}
.metric-card {
margin: 1rem 0;
}
.modern-button {
width: 100%;
}
}
/* Hero Wrapper */
.hero-wrapper {
position: relative;
padding: 3rem 2rem;
margin-bottom: 2rem;
background: rgba(255, 255, 255, 0.05);
backdrop-filter: blur(10px);
border-radius: 16px;
border: 1px solid rgba(255, 255, 255, 0.1);
overflow: hidden;
}
.hero-wrapper::before {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: radial-gradient(circle, rgba(0,180,219,0.1) 0%, transparent 70%);
animation: rotate 20s linear infinite;
z-index: 0;
}
.hero-content {
position: relative;
z-index: 1;
}
.hero-title {
font-size: 3rem;
margin-bottom: 1rem;
background: linear-gradient(135deg, #00B4DB 0%, #0083B0 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
animation: fadeInUp 0.8s ease;
}
.hero-subtitle {
font-size: 1.5rem;
color: var(--text-primary);
margin-bottom: 1rem;
animation: fadeInUp 1s ease;
}
.hero-description {
font-size: 1.2rem;
color: var(--text-secondary);
max-width: 800px;
line-height: 1.6;
animation: fadeInUp 1.2s ease;
}
.hero-banner {
position: relative;
width: 100%;
height: 300px;
margin-bottom: 2rem;
border-radius: 16px;
overflow: hidden;
background: linear-gradient(135deg, rgba(0,180,219,0.2) 0%, rgba(0,131,176,0.2) 100%);
}
.gradient-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(45deg,
rgba(0, 0, 0, 0.7) 0%,
rgba(0, 0, 0, 0.5) 50%,
rgba(0, 0, 0, 0.3) 100%
);
animation: gradientMove 15s ease infinite;
}
.hero-content {
position: relative;
z-index: 1;
padding: 2rem;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
}
.hero-title {
font-size: 3rem;
margin-bottom: 1rem;
color: var(--accent-color);
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
animation: fadeInUp 0.8s ease;
}
.hero-subtitle {
font-size: 1.8rem;
color: var(--text-primary);
margin-bottom: 1rem;
animation: fadeInUp 1s ease;
max-width: 800px;
}
.hero-description {
font-size: 1.2rem;
color: var(--text-secondary);
max-width: 800px;
line-height: 1.6;
animation: fadeInUp 1.2s ease;
}
@keyframes gradientMove {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
/* Hero Section Styles */
.hero-header {
position: relative;
padding: 4rem 2rem;
margin-bottom: 3rem;
border-radius: 16px;
background: linear-gradient(135deg,
rgba(0, 180, 219, 0.15) 0%,
rgba(0, 131, 176, 0.15) 100%
);
overflow: hidden;
border: 1px solid rgba(255, 255, 255, 0.1);
}
.hero-header::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(45deg,
rgba(0, 180, 219, 0.2) 0%,
rgba(0, 131, 176, 0.1) 25%,
rgba(0, 180, 219, 0.2) 50%,
rgba(0, 131, 176, 0.1) 75%,
rgba(0, 180, 219, 0.2) 100%
);
background-size: 400% 400%;
animation: gradientAnimation 15s ease infinite;
z-index: 0;
}
.hero-header .header-title {
position: relative;
font-size: 3.5rem;
font-weight: 700;
background: linear-gradient(45deg, #00b4db, #0083b0);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
margin-bottom: 1.5rem;
z-index: 1;
animation: fadeInUp 0.8s ease;
}
.hero-header .header-subtitle {
position: relative;
font-size: 1.8rem;
color: var(--text-primary);
line-height: 1.4;
max-width: 800px;
margin: 0 auto;
z-index: 1;
animation: fadeInUp 1s ease;
}
/* Feedback Section Styles */
.feedback-section {
background: rgba(45, 45, 45, 0.5);
border-radius: 16px;
padding: 2rem;
margin: 2rem 0;
border: 1px solid rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
}
.feedback-header {
font-size: 1.5rem;
color: var(--accent-color);
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid rgba(0, 180, 219, 0.3);
}
.feedback-content {
color: var(--text-primary);
line-height: 1.6;
}
.feedback-item {
background: rgba(0, 180, 219, 0.1);
border-radius: 8px;
padding: 1rem;
margin: 1rem 0;
border-left: 4px solid var(--accent-color);
}
.feedback-category {
font-weight: 600;
color: var(--accent-color);
margin-bottom: 0.5rem;
}
.feedback-description {
color: var(--text-secondary);
}
@keyframes gradientAnimation {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Page Header Styles */
.page-header {
position: relative;
width: 100%;
padding: 2.5rem 2rem;
margin-bottom: 2rem;
border-radius: 16px;
background: linear-gradient(135deg,
rgba(0, 180, 219, 0.1) 0%,
rgba(0, 131, 176, 0.1) 100%
);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
overflow: hidden;
}
.page-header::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(45deg,
rgba(0, 180, 219, 0.1) 0%,
rgba(0, 131, 176, 0.05) 100%
);
animation: gradientShift 8s ease infinite;
}
.header-title {
position: relative;
font-size: 2.5rem;
font-weight: 600;
color: var(--accent-color);
margin-bottom: 1rem;
animation: fadeInUp 0.8s ease;
}
.header-subtitle {
position: relative;
font-size: 1.5rem;
color: var(--text-primary);
margin-bottom: 0.5rem;
line-height: 1.4;
animation: fadeInUp 1s ease;
}
.header-description {
position: relative;
font-size: 1.1rem;
color: var(--text-secondary);
line-height: 1.6;
animation: fadeInUp 1.2s ease;
}
/* Hero specific styles */
.hero-header {
padding: 4rem 2rem;
background: linear-gradient(135deg,
rgba(0, 180, 219, 0.15) 0%,
rgba(0, 131, 176, 0.15) 100%
);
}
.hero-header::before {
background: linear-gradient(45deg,
rgba(0, 180, 219, 0.2) 0%,
rgba(0, 131, 176, 0.1) 100%
);
}
.hero-header .header-title {
font-size: 3rem;
}
.hero-header .header-subtitle {
font-size: 1.8rem;
max-width: 800px;
}
@keyframes gradientShift {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
/* Dashboard Styles */
.dashboard-container {
padding: 2rem;
max-width: 1200px;
margin: 0 auto;
}
.analytics-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 2rem;
margin: 2rem 0;
}
.stat-card {
background: rgba(20, 28, 34, 0.7);
border-radius: 16px;
padding: 2rem;
text-align: center;
transition: all 0.3s ease;
border: 1px solid rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
}
.stat-card:hover {
transform: translateY(-5px);
border-color: var(--accent-color);
box-shadow: 0 8px 15px rgba(0, 0, 0, 0.2);
}
.stat-icon {
width: 64px;
height: 64px;
margin: 0 auto 1.5rem;
background: linear-gradient(135deg, rgba(0, 180, 219, 0.2), rgba(0, 131, 176, 0.2));
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
}
.stat-icon i {
font-size: 1.8rem;
color: var(--accent-color);
}
.stat-card h4 {
color: var(--text-primary);
font-size: 1.2rem;
margin-bottom: 1rem;
}
.stat-number {
font-size: 2.5rem;
font-weight: 600;
background: linear-gradient(45deg, #00b4db, #0083b0);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
margin: 0;
}
.dashboard-section {
background: rgba(20, 28, 34, 0.7);
border-radius: 16px;
padding: 2rem;
margin: 2rem 0;
border: 1px solid rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
}
.dashboard-section h3 {
color: var(--accent-color);
font-size: 1.5rem;
margin-bottom: 1.5rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid rgba(0, 180, 219, 0.3);
}
.empty-state {
text-align: center;
padding: 3rem 1rem;
}
.empty-state i {
font-size: 2.5rem;
color: var(--accent-color);
margin-bottom: 1rem;
opacity: 0.7;
}
.empty-state p {
font-size: 1.1rem;
color: var(--text-secondary);
margin: 0;
}
.activity-list, .suggestions-list {
min-height: 200px;
display: flex;
align-items: center;
justify-content: center;
}
.no-activity, .no-suggestions {
text-align: center;
color: var(--text-secondary);
font-style: italic;
padding: 2rem;
}
.activity-list {
margin-top: 1rem;
}
.activity-item {
display: flex;
align-items: center;
padding: 1rem;
background: rgba(0, 180, 219, 0.1);
border-radius: 8px;
margin-bottom: 1rem;
}
.activity-item i {
font-size: 1.2rem;
color: var(--accent-color);
margin-right: 1rem;
}
.activity-item p {
margin: 0;
flex-grow: 1;
color: var(--text-primary);
}
.activity-time {
color: var(--text-secondary);
font-size: 0.9rem;
}
.suggestions-list {
margin-top: 1rem;
}
.suggestion-item {
display: flex;
align-items: center;
padding: 1rem;
background: rgba(0, 180, 219, 0.1);
border-radius: 8px;
margin-bottom: 1rem;
transition: all 0.3s ease;
}
.suggestion-item:hover {
background: rgba(0, 180, 219, 0.2);
transform: translateX(5px);
}
.suggestion-item i {
font-size: 1.2rem;
color: var(--accent-color);
margin-right: 1rem;
}
.suggestion-item p {
margin: 0;
color: var(--text-primary);
}
.skills-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
gap: 1rem;
margin-top: 1rem;
}
.skill-tag {
display: flex;
align-items: center;
padding: 0.5rem 1rem;
background: rgba(0, 180, 219, 0.1);
border-radius: 20px;
transition: all 0.3s ease;
}
.skill-tag:hover {
background: rgba(0, 180, 219, 0.2);
transform: translateY(-2px);
}
.skill-tag i {
color: var(--accent-color);
margin-right: 0.5rem;
font-size: 0.9rem;
}
.skill-tag span {
color: var(--text-primary);
font-size: 0.9rem;
}
.activity-content {
flex-grow: 1;
margin-right: 1rem;
}
.activity-content p {
margin: 0;
color: var(--text-primary);
}
.password-field {
position: relative;
width: 100%;
margin: 8px 0;
border-radius: 8px;
overflow: hidden; /* This will prevent the border overlap */
}
.password-field input[type="password"] {
width: 100%;
padding: 12px 40px 12px 12px;
background: var(--bg-light);
border: 1px solid var(--border-color);
color: var(--text-primary);
border-radius: 8px;
font-size: 14px;
box-sizing: border-box;
margin: 0;
position: relative;
z-index: 1; /* Lower z-index than the eye icon */
}
.password-field .eye-icon {
position: absolute;
right: 12px;
top: 50%;
transform: translateY(-50%);
cursor: pointer;
color: var(--text-secondary);
z-index: 3; /* Higher z-index to stay above everything */
background: none;
border: none;
padding: 0;
pointer-events: auto; /* Ensure the icon remains clickable */
}
/* Remove any default outlines or borders that might cause overlap */
.password-field input[type="password"]:focus {
outline: none;
border-color: var(--accent-color);
box-shadow: 0 0 0 1px var(--accent-color);
}
/* Feedback Form Styles */
.stTextArea textarea {
background: rgba(255, 255, 255, 0.03) !important;
border: 1px solid rgba(255, 255, 255, 0.1) !important;
border-radius: 8px !important;
color: var(--text-primary) !important;
font-size: 1em !important;
padding: 12px !important;
}
.stTextArea textarea:focus {
box-shadow: 0 0 0 2px rgba(33, 150, 243, 0.3) !important;
border-color: var(--accent-color) !important;
}
.stSlider > div > div > div {
background: linear-gradient(135deg, #4CAF50, #2196F3) !important;
}
.stSlider > div > div > div > div {
background: white !important;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2) !important;
}
.feedback-animation {
animation: fadeInUp 0.5s ease-out;
}
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Custom Scrollbar for Feedback Form */
.feedback-container::-webkit-scrollbar {
width: 8px;
}
.feedback-container::-webkit-scrollbar-track {
background: rgba(255, 255, 255, 0.05);
border-radius: 4px;
}
.feedback-container::-webkit-scrollbar-thumb {
background: linear-gradient(135deg, #4CAF50, #2196F3);
border-radius: 4px;
}
.feedback-container::-webkit-scrollbar-thumb:hover {
background: linear-gradient(135deg, #45a049, #1e88e5);
}
/* =========================================================
UI Polish + Responsive Overrides (non-functional changes)
========================================================= */
/* Updated background palette */
:root {
--bg-darker: #0f1722;
--bg-dark: #141e2e;
--bg-light: #1d2a3d;
--border-color: #2f3f56;
}
body,
.stApp {
background: radial-gradient(circle at top right, #162338 0%, #0f1722 45%, #0a121d 100%) !important;
}
.main {
background: rgba(20, 30, 46, 0.72) !important;
border: 1px solid rgba(86, 108, 137, 0.22);
border-radius: 14px;
}
section[data-testid="stSidebar"] {
background: linear-gradient(180deg, #182538 0%, #111b2b 100%) !important;
}
/* Keep app width fluid and improve page rhythm */
.block-container {
max-width: 1200px;
padding-top: 1rem;
padding-bottom: 2rem;
}
/* Improve card readability and consistency */
.card,
.glass-card,
.feature-card,
.metric-card,
.dashboard-section,
.feedback-section {
border-radius: 14px;
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.18);
}
/* Better typography scale */
h1 {
line-height: 1.2;
}
h2, h3 {
line-height: 1.3;
}
/* Make form controls feel aligned and modern */
.stTextInput > div,
.stTextArea > div,
.stSelectbox > div,
.stMultiSelect > div {
border-radius: 10px;
}
/* Cleaner spacing around tabs/expanders */
.stTabs [data-baseweb="tab-list"] {
gap: 0.5rem;
flex-wrap: wrap;
}
.stTabs [data-baseweb="tab"] {
border-radius: 10px;
padding: 0.4rem 0.8rem;
}
.streamlit-expanderHeader {
border-radius: 10px;
}
/* Make data-heavy blocks scroll instead of overflow on small screens */
.stDataFrame,
.js-plotly-plot,
div[data-testid="stTable"] {
overflow-x: auto;
}
/* Sidebar width stability */
section[data-testid="stSidebar"] {
min-width: 260px;
}
/* ---------- Tablet ---------- */
@media (max-width: 992px) {
.block-container {
padding-left: 1rem;
padding-right: 1rem;
}
.hero-header,
.page-header {
padding: 2rem 1.25rem;
}
.hero-header .header-title,
.header-title {
font-size: 2rem;
}
.hero-header .header-subtitle,
.header-subtitle {
font-size: 1.1rem;
}
}
/* ---------- Mobile ---------- */
@media (max-width: 768px) {
.block-container {
padding-top: 0.5rem;
padding-left: 0.75rem;
padding-right: 0.75rem;
}
.main {
padding: 0.5rem;
}
h1,
.hero-header .header-title,
.header-title {
font-size: 1.55rem !important;
}
h2 {
font-size: 1.2rem !important;
}
h3 {
font-size: 1.05rem !important;
}
.hero-header,
.page-header,
.dashboard-section,
.feedback-section,
.card,
.metric-card {
padding: 1rem !important;
margin-bottom: 0.9rem !important;
}
.stButton > button,
.modern-button {
width: 100%;
min-height: 42px;
font-size: 0.9rem;
letter-spacing: 0.3px;
}
.stFileUploader {
padding: 1rem;
}
.stTabs [data-baseweb="tab"] {
font-size: 0.85rem;
padding: 0.35rem 0.6rem;
}
section[data-testid="stSidebar"] {
min-width: 100%;
}
}
/* ---------- Small Phones ---------- */
@media (max-width: 480px) {
.block-container {
padding-left: 0.55rem;
padding-right: 0.55rem;
}
h1,
.hero-header .header-title,
.header-title {
font-size: 1.35rem !important;
}
.header-subtitle,
.hero-header .header-subtitle,
.header-description {
font-size: 0.92rem !important;
line-height: 1.45;
}
}