GLAM_Web_App / style.css
liammatt5's picture
Update style.css
acc8e6d verified
Raw
History Blame Contribute Delete
8.43 kB
/* Clinically Healthcare UI Design Kit Styles (Gradio-Optimized) */
:root {
--primary-indigo: #4338CA;
--secondary-cyan: #0891B2;
--bg-cream: #F8FAFC;
--border-soft: #CBD5E1;
--text-slate: #0F172A;
--text-muted: #334155;
--success-green: #059669;
--warning-amber: #D97706;
--danger-red: #DC2626;
--white: #FFFFFF;
}
/* Header */
.header-box {
background: var(--white);
padding: 1.5rem;
border-bottom: 4px solid var(--primary-indigo);
color: var(--primary-indigo);
text-align: center;
box-shadow: 0 4px 16px rgba(67, 56, 202, 0.12);
}
.header-box h1 {
font-weight: 800;
font-size: 2.25rem;
letter-spacing: -0.025em;
margin: 0;
color: var(--primary-indigo);
}
/* Sidebar Buttons */
.sidebar-btn {
margin-bottom: 10px !important;
font-weight: 600 !important;
border-radius: 12px !important;
border: 1px solid var(--border-soft) !important;
background: var(--white) !important;
transition: all 0.2s ease !important;
color: var(--text-slate) !important;
width: 100%;
}
.sidebar-btn:hover {
background: var(--primary-indigo) !important;
border-color: var(--primary-indigo) !important;
color: var(--white) !important;
transform: translateY(-1px);
box-shadow: 0 6px 18px rgba(67, 56, 202, 0.35);
}
/* Status blocks */
.vibrant-status .label-wrap span {
color: white !important;
font-weight: 700 !important;
}
.vibrant-status textarea {
color: white !important;
background: rgba(255, 255, 255, 0.12) !important;
border: 1px solid rgba(255, 255, 255, 0.25) !important;
border-radius: 8px !important;
min-height: 44px;
}
/* Status variants */
.status-green {
background: rgba(5, 150, 105, 0.15) !important;
border: 1px solid var(--success-green) !important;
color: #064E3B !important;
border-radius: 8px !important;
padding: 8px 12px !important;
}
.status-orange {
background: rgba(217, 119, 6, 0.15) !important;
border: 1px solid var(--warning-amber) !important;
color: #78350F !important;
border-radius: 8px !important;
padding: 8px 12px !important;
}
.status-red {
background: rgba(220, 38, 38, 0.15) !important;
border: 1px solid var(--danger-red) !important;
color: #7F1D1D !important;
border-radius: 8px !important;
padding: 8px 12px !important;
}
/* Live monitoring alerts */
.live-notifications {
background: #fff5f2;
border: 2px solid #dc2626;
border-radius: 12px;
padding: 0.9rem;
margin-top: 0.75rem;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);
opacity: 1 !important;
filter: none !important;
-webkit-filter: none !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
transform: none !important;
-webkit-transform: none !important;
will-change: auto !important;
transition: none !important;
}
.live-notifications *,
.live-notifications .notification-item,
.live-notifications .notification-item * {
opacity: 1 !important;
filter: none !important;
-webkit-filter: none !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
transform: none !important;
transition: none !important;
}
.live-notifications.empty {
background: #f0fdf4;
border-color: #059669;
}
.live-notifications.empty.no-patients,
.live-notifications.empty .notification-badge {
background: linear-gradient(135deg, #059669, #047857);
box-shadow: 0 2px 8px rgba(5, 150, 105, 0.35);
}
.live-notifications.empty .notification-header {
color: #064E3B;
}
.live-notifications.empty.no-patients .notification-header {
color: #064E3B;
}
.notification-header {
display: flex;
align-items: center;
gap: 0.6rem;
font-weight: 800;
margin-bottom: 0.7rem;
color: #111827;
letter-spacing: 0.01em;
}
.notification-badge {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 30px;
height: 30px;
padding: 0 0.35rem;
border-radius: 999px;
background: linear-gradient(135deg, #dc2626, #b91c1c);
color: white;
font-size: 0.95rem;
font-weight: 800;
box-shadow: 0 2px 8px rgba(220, 38, 38, 0.35);
}
.notification-list {
display: flex;
flex-direction: column;
gap: 0.45rem;
}
.notification-item {
display: flex;
flex-direction: column;
gap: 0.25rem;
padding: 0.7rem 0.8rem;
border-radius: 10px;
font-size: 0.95rem;
font-weight: 700;
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.35);
opacity: 1 !important;
filter: none !important;
-webkit-filter: none !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
transform: none !important;
-webkit-transform: none !important;
will-change: auto !important;
}
.notification-item.notification-orange {
background: linear-gradient(135deg, #fef3c7, #fde68a);
border: 2px solid #f59e0b;
color: #92400e;
text-shadow: 0 0 0 rgba(0, 0, 0, 0);
}
.notification-item.notification-red {
background: linear-gradient(135deg, #fee2e2, #fecaca);
border: 2px solid #dc2626;
color: #991b1b;
text-shadow: 0 0 0 rgba(0, 0, 0, 0);
}
.notification-title {
font-size: 0.98rem;
font-weight: 800;
}
.notification-message {
font-size: 0.92rem;
font-weight: 700;
line-height: 1.35;
}
.notification-body {
color: #475569;
font-size: 0.95rem;
font-weight: 600;
}
/* Loading spinner */
.loading-spinner {
display: inline-flex;
align-items: center;
gap: 10px;
color: var(--primary-indigo);
font-weight: 600;
}
.loading-spinner::before {
content: "";
display: inline-block;
width: 18px;
height: 18px;
border: 3px solid rgba(67, 56, 202, 0.2);
border-top-color: var(--primary-indigo);
border-radius: 50%;
animation: hr-spin 0.8s linear infinite;
}
@keyframes hr-spin {
to {
transform: rotate(360deg);
}
}
/* Page layout */
.page-container {
padding: 0.5rem 1.5rem 2rem 1.5rem;
background: var(--bg-cream);
}
.page-title {
font-size: 1.25rem;
font-weight: 700;
color: var(--text-slate);
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid var(--border-soft);
}
/* Inputs */
input, textarea, select {
border-color: var(--border-soft) !important;
color: var(--text-slate);
}
input:focus, textarea:focus, select:focus {
border-color: var(--primary-indigo) !important;
box-shadow: 0 0 0 3px rgba(67, 56, 202, 0.15) !important;
}
/* =========================================================
🔥 GRADIO OVERRIDE ENFORCER LAYER (IMPORTANT PART)
========================================================= */
/* 1. Hard reset Gradio container interference */
.gradio-container {
background: var(--bg-cream) !important;
}
/* 2. FORCE header styling (highest practical CSS specificity) */
body .gradio-container div.header-box,
html body .gradio-container div.header-box,
div.gradio-container div.header-box {
background: #0B1F3B !important; /* deep navy override */
color: #FFFFFF !important;
border-bottom: 4px solid var(--primary-indigo) !important;
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25) !important;
}
/* 3. Force all text inside header */
body .gradio-container .header-box * {
color: #FFFFFF !important;
}
/* 4. Kill any theme pseudo overlays */
.header-box::before,
.header-box::after {
background: transparent !important;
content: none !important;
}
/* 5. Prevent Gradio theme bleed on blocks */
.gr-block,
.gr-box,
.gr-panel {
background: transparent !important;
}
/* 6. Kill blur effects on live monitoring container during streaming */
.gradio-container .live-notifications,
.gradio-container .monitor_alerts_sidebar {
filter: none !important;
-webkit-filter: none !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
opacity: 1 !important;
}
/* 7. Ensure HTML components don't get blurred during updates */
.gr-html,
.gr-html * {
filter: none !important;
-webkit-filter: none !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
opacity: 1 !important;
transform: none !important;
-webkit-transform: none !important;
transition: none !important;
}