gdg-build / app /static /dashboard.css
AnkitKolhe149's picture
deploy-to-hug-face
652aca5
/* ===============================
DASHBOARD PAGE STYLES - ENHANCED 3D
=============================== */
:root {
--glass-bg: rgba(255, 255, 255, 0.7);
--glass-border: rgba(255, 255, 255, 0.2);
--dark-glass-bg: rgba(37, 47, 63, 0.4);
}
[data-theme="dark"] {
--glass-bg: rgba(26, 40, 71, 0.8);
--glass-border: rgba(100, 150, 255, 0.15);
--dark-glass-bg: rgba(10, 14, 39, 0.6);
}
/* ===============================
PAGE HEADER
=============================== */
#welcomeMessage {
color: var(--text-color);
font-size: 1.1rem;
font-weight: 500;
letter-spacing: 0.3px;
animation: slideInUp 0.6s ease-out;
}
/* ===============================
QUICK ACTION CARDS - PREMIUM 3D
=============================== */
.quick-action-card {
background: linear-gradient(135deg, var(--glass-bg) 0%, rgba(255, 255, 255, 0.3) 100%);
backdrop-filter: blur(12px);
border: 1.5px solid var(--glass-border);
border-radius: 1.5rem;
padding: 2rem;
text-align: center;
position: relative;
overflow: visible;
transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
transform: translateZ(0) rotateX(0deg);
box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.15), inset 0 1px 0 rgba(255,255,255,0.6);
height: 100%;
animation: slideInUp 0.6s ease-out;
perspective: 1000px;
}
[data-theme="dark"] .quick-action-card {
background: linear-gradient(135deg, rgba(26, 40, 71, 0.8) 0%, rgba(20, 27, 47, 0.6) 100%);
box-shadow: 0 8px 32px 0 rgba(59, 130, 246, 0.15), inset 0 1px 0 rgba(96, 165, 250, 0.1);
}
.quick-action-card::before {
content: '';
position: absolute;
top: -50%;
right: -50%;
width: 300px;
height: 300px;
background: radial-gradient(circle, var(--primary-color) 0%, transparent 70%);
opacity: 0.05;
border-radius: 50%;
transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1);
transform: translateZ(-20px);
}
.quick-action-card::after {
content: '';
position: absolute;
bottom: -50%;
left: -50%;
width: 250px;
height: 250px;
background: radial-gradient(circle, var(--secondary-color) 0%, transparent 70%);
opacity: 0.04;
border-radius: 50%;
transition: all 0.6s ease;
}
.quick-action-card:hover {
transform: translateY(-16px) translateZ(20px) rotateX(5deg);
box-shadow: 0 25px 70px rgba(59, 130, 246, 0.3), inset 0 1px 0 rgba(255,255,255,0.8);
border-color: rgba(59, 130, 246, 0.5);
}
.quick-action-card:hover::before {
transform: translate(25px, 25px) translateZ(10px);
opacity: 0.15;
}
.quick-action-card:hover::after {
transform: translate(-15px, -15px) translateZ(5px);
opacity: 0.1;
}
.quick-action-card .card-body {
position: relative;
z-index: 2;
padding: 0;
}
.quick-action-card i {
font-size: 3.5rem;
margin-bottom: 1.5rem;
transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
display: inline-block;
background: linear-gradient(135deg, var(--primary-color) 0%, var(--secondary-color) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.quick-action-card:hover i {
transform: rotateY(360deg) rotateX(180deg) scale(1.25) translateZ(10px);
animation: spin3d 0.8s ease-out;
}
.quick-action-card h5 {
font-size: 1.35rem;
font-weight: 800;
margin-bottom: 0.75rem;
color: var(--heading-color);
letter-spacing: -0.5px;
transition: all 0.4s ease;
}
.quick-action-card:hover h5 {
transform: translateY(-5px) translateZ(5px);
}
.quick-action-card p {
font-size: 0.95rem;
color: var(--text-color);
opacity: 0.8;
margin-bottom: 1.5rem;
line-height: 1.5;
}
.quick-action-card .btn {
border-radius: 0.75rem;
font-weight: 700;
padding: 0.75rem 1.75rem;
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
.quick-action-card .btn::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 0;
height: 0;
border-radius: 50%;
background: rgba(255, 255, 255, 0.5);
transform: translate(-50%, -50%);
transition: width 0.6s, height 0.6s;
}
.quick-action-card .btn:hover::before {
width: 300px;
height: 300px;
}
/* ===============================
LATEST ASSESSMENT SECTION
=============================== */
.assessment-card-container {
background: linear-gradient(135deg, var(--card-bg) 0%, var(--card-bg) 100%);
backdrop-filter: blur(20px);
border: 2px solid var(--card-border);
border-radius: 1.5rem;
overflow: hidden;
box-shadow: 0 20px 60px 0 rgba(0, 0, 0, 0.1);
transition: all 0.4s ease;
}
[data-theme="dark"] .assessment-card-container {
box-shadow: 0 20px 60px 0 rgba(0, 0, 0, 0.4);
}
.assessment-card-container:hover {
border-color: var(--primary-color);
box-shadow: 0 25px 75px 0 rgba(59, 130, 246, 0.2);
}
.assessment-header {
background: linear-gradient(135deg, var(--primary-color) 0%, #2563eb 100%);
color: white;
padding: 2rem;
position: relative;
overflow: hidden;
}
.assessment-header::before {
content: '';
position: absolute;
top: -50%;
right: -50%;
width: 200px;
height: 200px;
background: radial-gradient(circle, rgba(255, 255, 255, 0.1) 0%, transparent 70%);
border-radius: 50%;
}
.assessment-header h5 {
position: relative;
z-index: 1;
margin: 0;
font-size: 1.4rem;
font-weight: 700;
letter-spacing: -0.5px;
}
.assessment-body {
padding: 2rem;
min-height: 300px;
display: flex;
flex-direction: column;
justify-content: center;
}
.report-date-info {
color: var(--text-color);
font-weight: 500;
margin-bottom: 0.5rem;
}
.overall-score-badge {
background: linear-gradient(135deg, var(--primary-color) 0%, #2563eb 100%);
color: white;
padding: 0.75rem 1.5rem;
border-radius: 50px;
font-weight: 700;
font-size: 1.1rem;
display: inline-block;
box-shadow: 0 8px 24px rgba(59, 130, 246, 0.3);
transition: all 0.3s ease;
}
.overall-score-badge:hover {
transform: scale(1.08);
box-shadow: 0 12px 32px rgba(59, 130, 246, 0.4);
}
/* Disease Assessment Cards */
.disease-assessment-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 1.5rem;
margin-top: 2rem;
}
.disease-card-item {
background: linear-gradient(135deg, var(--light-color) 0%, var(--body-bg) 100%);
border: 1px solid var(--card-border);
border-radius: 1rem;
padding: 1.5rem;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
overflow: hidden;
}
.disease-card-item::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
transition: left 0.5s ease;
}
.disease-card-item:hover {
transform: translateY(-8px) rotateX(5deg);
box-shadow: 0 15px 40px rgba(0, 0, 0, 0.15);
}
.disease-card-item:hover::before {
left: 100%;
}
.disease-name {
font-weight: 700;
color: var(--heading-color);
margin-bottom: 1rem;
text-transform: capitalize;
letter-spacing: 0.3px;
}
.risk-score-container {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 1rem;
}
.risk-score-number {
font-weight: 800;
font-size: 1.5rem;
color: var(--primary-color);
}
.disease-confidence {
font-size: 0.85rem;
color: var(--text-color);
opacity: 0.7;
}
/* ===============================
DATA COMPLETENESS SECTION
=============================== */
.data-completeness-container {
background: linear-gradient(135deg, var(--card-bg) 0%, var(--card-bg) 100%);
backdrop-filter: blur(20px);
border: 2px solid var(--card-border);
border-radius: 1.5rem;
overflow: hidden;
box-shadow: 0 20px 60px 0 rgba(0, 0, 0, 0.1);
}
.completeness-header {
background: linear-gradient(135deg, #10b981 0%, #059669 100%);
color: white;
padding: 2rem;
position: relative;
}
.completeness-header h5 {
margin: 0;
font-size: 1.4rem;
font-weight: 700;
letter-spacing: -0.5px;
}
.completeness-body {
padding: 2rem;
}
.data-type-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 1.5rem;
}
.data-type-item {
background: linear-gradient(135deg, var(--light-color) 0%, var(--body-bg) 100%);
border: 1px solid var(--card-border);
border-radius: 1rem;
padding: 1.5rem;
display: flex;
align-items: center;
gap: 1.5rem;
transition: all 0.4s ease;
position: relative;
overflow: hidden;
}
.data-type-item::after {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(135deg, rgba(59, 130, 246, 0.1) 0%, rgba(16, 185, 129, 0.1) 100%);
opacity: 0;
transition: opacity 0.4s ease;
}
.data-type-item:hover {
transform: translateY(-8px);
box-shadow: 0 15px 40px rgba(0, 0, 0, 0.15);
}
.data-type-item:hover::after {
opacity: 1;
}
.data-icon {
font-size: 2rem;
min-width: 50px;
text-align: center;
transition: all 0.4s ease;
}
.data-type-item:hover .data-icon {
transform: scale(1.2) rotate(10deg);
}
.data-info {
flex: 1;
position: relative;
z-index: 1;
}
.data-label {
font-weight: 700;
color: var(--heading-color);
margin-bottom: 0.5rem;
letter-spacing: -0.3px;
}
.data-status {
font-size: 0.85rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.status-available {
color: #10b981;
}
.status-not-added {
color: #6b7280;
opacity: 0.7;
}
/* ===============================
LOADING SPINNER ENHANCEMENT
=============================== */
.assessment-loading {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 300px;
gap: 1.5rem;
}
.spinner-border {
width: 60px;
height: 60px;
border-width: 4px;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.loading-text {
color: var(--text-color);
font-weight: 600;
font-size: 1.1rem;
}
/* ===============================
ANIMATIONS
=============================== */
@keyframes slideInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.quick-action-card {
animation: slideInUp 0.6s ease-out forwards;
}
.quick-action-card:nth-child(1) {
animation-delay: 0.1s;
}
.quick-action-card:nth-child(2) {
animation-delay: 0.2s;
}
.quick-action-card:nth-child(3) {
animation-delay: 0.3s;
}
.assessment-card-container {
animation: slideInUp 0.6s ease-out 0.4s forwards;
animation-fill-mode: both;
}
.data-completeness-container {
animation: slideInUp 0.6s ease-out 0.5s forwards;
animation-fill-mode: both;
}
/* ===============================
RESPONSIVE DESIGN
=============================== */
@media (max-width: 768px) {
.quick-action-card {
padding: 1.5rem;
}
.quick-action-card i {
font-size: 2.5rem;
margin-bottom: 1rem;
}
.quick-action-card h5 {
font-size: 1.1rem;
}
.assessment-header,
.completeness-header {
padding: 1.5rem;
}
.assessment-body,
.completeness-body {
padding: 1.5rem;
}
.data-type-grid,
.disease-assessment-grid {
grid-template-columns: 1fr;
}
}