Spaces:
Running
Running
| /* ============================================ | |
| BioRAG Medical Assistant - Light Medical Theme | |
| ============================================ */ | |
| :root { | |
| --bg: #f0f5ff; | |
| --bg-white: #ffffff; | |
| --bg-sidebar: #f8faff; | |
| --accent: #2563eb; | |
| --accent-light: #dbeafe; | |
| --accent-hover: #1d4ed8; | |
| --teal: #0d9488; | |
| --green: #059669; | |
| --green-light: #d1fae5; | |
| --amber: #d97706; | |
| --amber-light: #fef3c7; | |
| --red: #dc2626; | |
| --red-light: #fee2e2; | |
| --text: #1e293b; | |
| --text-secondary: #475569; | |
| --text-muted: #94a3b8; | |
| --border: #e2e8f0; | |
| --border-light: #f1f5f9; | |
| --shadow: 0 1px 4px rgba(0,0,0,0.06); | |
| --shadow-hover: 0 4px 12px rgba(37,99,235,0.1); | |
| --radius: 12px; | |
| } | |
| /* === Animations === */ | |
| @keyframes fadeInUp { | |
| from { opacity: 0; transform: translateY(12px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| @keyframes fadeIn { | |
| from { opacity: 0; } | |
| to { opacity: 1; } | |
| } | |
| @keyframes slideIn { | |
| from { opacity: 0; transform: translateX(-8px); } | |
| to { opacity: 1; transform: translateX(0); } | |
| } | |
| @keyframes pulse { | |
| 0%, 100% { opacity: 1; } | |
| 50% { opacity: 0.7; } | |
| } | |
| /* === Global === */ | |
| .stApp { | |
| background: var(--bg) ; | |
| } | |
| /* === Scrollbar === */ | |
| ::-webkit-scrollbar { width: 5px; } | |
| ::-webkit-scrollbar-track { background: transparent; } | |
| ::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; } | |
| ::-webkit-scrollbar-thumb:hover { background: var(--accent); } | |
| /* === Text === */ | |
| .stApp h1, .stApp h2, .stApp h3 { | |
| color: var(--text) ; | |
| font-weight: 700 ; | |
| } | |
| .stApp p, .stApp span, .stApp label, .stApp li, .stApp div { | |
| color: var(--text); | |
| } | |
| .stCaption, .stApp .stCaption p { | |
| color: var(--text-muted) ; | |
| } | |
| /* === Sidebar === */ | |
| section[data-testid="stSidebar"] { | |
| background: var(--bg-white) ; | |
| border-right: 1px solid var(--border) ; | |
| animation: fadeIn 0.5s ease; | |
| } | |
| section[data-testid="stSidebar"] * { | |
| color: var(--text) ; | |
| } | |
| section[data-testid="stSidebar"] .stCaption p, | |
| section[data-testid="stSidebar"] .stCaption { | |
| color: var(--text-muted) ; | |
| } | |
| section[data-testid="stSidebar"] hr { | |
| border-color: var(--border) ; | |
| } | |
| section[data-testid="stSidebar"] .stButton button { | |
| background: var(--accent) ; | |
| color: white ; | |
| border: none ; | |
| border-radius: var(--radius) ; | |
| padding: 0.5rem 1rem ; | |
| font-weight: 600 ; | |
| width: 100%; | |
| transition: all 0.25s ease ; | |
| } | |
| section[data-testid="stSidebar"] .stButton button:hover { | |
| background: var(--accent-hover) ; | |
| box-shadow: var(--shadow-hover) ; | |
| transform: translateY(-1px) ; | |
| } | |
| /* === Chat Messages === */ | |
| .stChatMessage { | |
| background: var(--bg-white) ; | |
| border: 1px solid var(--border) ; | |
| border-radius: var(--radius) ; | |
| padding: 1rem 1.2rem ; | |
| margin-bottom: 0.75rem ; | |
| box-shadow: var(--shadow) ; | |
| animation: fadeInUp 0.35s ease; | |
| transition: box-shadow 0.2s ease ; | |
| } | |
| .stChatMessage:hover { | |
| box-shadow: var(--shadow-hover) ; | |
| } | |
| .stChatMessage p, .stChatMessage li, .stChatMessage span { | |
| color: var(--text) ; | |
| line-height: 1.7 ; | |
| font-size: 0.93rem ; | |
| } | |
| .stChatMessage .stMarkdown { color: var(--text) ; } | |
| .stChatMessage .stMarkdown strong { color: var(--accent) ; } | |
| .stChatMessage .stCaption p { color: var(--text-muted) ; } | |
| .stChatMessage [data-testid="chatAvatarIcon-user"] { | |
| background: var(--accent) ; | |
| } | |
| .stChatMessage [data-testid="chatAvatarIcon-assistant"] { | |
| background: var(--teal) ; | |
| } | |
| /* === Chat Input === */ | |
| [data-testid="stChatInput"], | |
| [data-testid="stChatInput"] > div, | |
| .stChatInput { | |
| background: transparent ; | |
| border: none ; | |
| box-shadow: none ; | |
| padding: 0 ; | |
| outline: none ; | |
| } | |
| [data-testid="stBottom"] > div { | |
| background: transparent ; | |
| border: none ; | |
| box-shadow: none ; | |
| } | |
| .stChatInput textarea, [data-testid="stChatInputTextArea"] { | |
| background: var(--bg-white) ; | |
| border: 1px solid var(--border) ; | |
| border-radius: var(--radius) ; | |
| color: var(--text) ; | |
| font-size: 0.93rem ; | |
| padding: 0.8rem 1rem ; | |
| transition: border-color 0.2s ease, box-shadow 0.2s ease ; | |
| } | |
| .stChatInput textarea:focus, [data-testid="stChatInputTextArea"]:focus { | |
| border-color: var(--accent) ; | |
| box-shadow: 0 0 0 3px rgba(37,99,235,0.12) ; | |
| } | |
| .stChatInput button, [data-testid="stChatInputSubmitButton"] { | |
| display: none ; | |
| } | |
| /* === Expander === */ | |
| [data-testid="stExpander"] { | |
| border: 1px solid var(--border) ; | |
| border-radius: var(--radius) ; | |
| background: var(--bg-white) ; | |
| animation: fadeIn 0.3s ease; | |
| } | |
| [data-testid="stExpander"] details { border: none ; } | |
| [data-testid="stExpander"] summary { | |
| color: var(--text) ; | |
| font-weight: 500 ; | |
| padding: 0.7rem 1rem ; | |
| transition: color 0.2s ease ; | |
| } | |
| [data-testid="stExpander"] summary:hover { color: var(--accent) ; } | |
| /* === Text Area (sources) === */ | |
| .stTextArea textarea { | |
| background: var(--bg) ; | |
| border: 1px solid var(--border) ; | |
| border-radius: 8px ; | |
| color: var(--text-secondary) ; | |
| font-size: 0.82rem ; | |
| line-height: 1.6 ; | |
| } | |
| /* === Divider === */ | |
| hr { | |
| border-color: var(--border) ; | |
| opacity: 0.7; | |
| } | |
| /* === Spinner === */ | |
| .stSpinner > div > span { | |
| color: var(--text-secondary) ; | |
| animation: pulse 1.5s ease infinite; | |
| } | |
| /* === Alert boxes === */ | |
| .stAlert { | |
| border-radius: var(--radius) ; | |
| padding: 0.8rem 1rem ; | |
| animation: slideIn 0.35s ease; | |
| } | |
| /* === Footer === */ | |
| .stApp > footer { display: none ; } | |
| /* === Layout === */ | |
| .main .block-container { | |
| max-width: 850px ; | |
| padding: 1.5rem 1rem ; | |
| } | |
| [data-testid="stBottom"] { | |
| background: linear-gradient(180deg, transparent 0%, var(--bg) 40%) ; | |
| } | |