/* ============================================ 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) !important; } /* === 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) !important; font-weight: 700 !important; } .stApp p, .stApp span, .stApp label, .stApp li, .stApp div { color: var(--text); } .stCaption, .stApp .stCaption p { color: var(--text-muted) !important; } /* === Sidebar === */ section[data-testid="stSidebar"] { background: var(--bg-white) !important; border-right: 1px solid var(--border) !important; animation: fadeIn 0.5s ease; } section[data-testid="stSidebar"] * { color: var(--text) !important; } section[data-testid="stSidebar"] .stCaption p, section[data-testid="stSidebar"] .stCaption { color: var(--text-muted) !important; } section[data-testid="stSidebar"] hr { border-color: var(--border) !important; } section[data-testid="stSidebar"] .stButton button { background: var(--accent) !important; color: white !important; border: none !important; border-radius: var(--radius) !important; padding: 0.5rem 1rem !important; font-weight: 600 !important; width: 100%; transition: all 0.25s ease !important; } section[data-testid="stSidebar"] .stButton button:hover { background: var(--accent-hover) !important; box-shadow: var(--shadow-hover) !important; transform: translateY(-1px) !important; } /* === Chat Messages === */ .stChatMessage { background: var(--bg-white) !important; border: 1px solid var(--border) !important; border-radius: var(--radius) !important; padding: 1rem 1.2rem !important; margin-bottom: 0.75rem !important; box-shadow: var(--shadow) !important; animation: fadeInUp 0.35s ease; transition: box-shadow 0.2s ease !important; } .stChatMessage:hover { box-shadow: var(--shadow-hover) !important; } .stChatMessage p, .stChatMessage li, .stChatMessage span { color: var(--text) !important; line-height: 1.7 !important; font-size: 0.93rem !important; } .stChatMessage .stMarkdown { color: var(--text) !important; } .stChatMessage .stMarkdown strong { color: var(--accent) !important; } .stChatMessage .stCaption p { color: var(--text-muted) !important; } .stChatMessage [data-testid="chatAvatarIcon-user"] { background: var(--accent) !important; } .stChatMessage [data-testid="chatAvatarIcon-assistant"] { background: var(--teal) !important; } /* === Chat Input === */ [data-testid="stChatInput"], [data-testid="stChatInput"] > div, .stChatInput { background: transparent !important; border: none !important; box-shadow: none !important; padding: 0 !important; outline: none !important; } [data-testid="stBottom"] > div { background: transparent !important; border: none !important; box-shadow: none !important; } .stChatInput textarea, [data-testid="stChatInputTextArea"] { background: var(--bg-white) !important; border: 1px solid var(--border) !important; border-radius: var(--radius) !important; color: var(--text) !important; font-size: 0.93rem !important; padding: 0.8rem 1rem !important; transition: border-color 0.2s ease, box-shadow 0.2s ease !important; } .stChatInput textarea:focus, [data-testid="stChatInputTextArea"]:focus { border-color: var(--accent) !important; box-shadow: 0 0 0 3px rgba(37,99,235,0.12) !important; } .stChatInput button, [data-testid="stChatInputSubmitButton"] { display: none !important; } /* === Expander === */ [data-testid="stExpander"] { border: 1px solid var(--border) !important; border-radius: var(--radius) !important; background: var(--bg-white) !important; animation: fadeIn 0.3s ease; } [data-testid="stExpander"] details { border: none !important; } [data-testid="stExpander"] summary { color: var(--text) !important; font-weight: 500 !important; padding: 0.7rem 1rem !important; transition: color 0.2s ease !important; } [data-testid="stExpander"] summary:hover { color: var(--accent) !important; } /* === Text Area (sources) === */ .stTextArea textarea { background: var(--bg) !important; border: 1px solid var(--border) !important; border-radius: 8px !important; color: var(--text-secondary) !important; font-size: 0.82rem !important; line-height: 1.6 !important; } /* === Divider === */ hr { border-color: var(--border) !important; opacity: 0.7; } /* === Spinner === */ .stSpinner > div > span { color: var(--text-secondary) !important; animation: pulse 1.5s ease infinite; } /* === Alert boxes === */ .stAlert { border-radius: var(--radius) !important; padding: 0.8rem 1rem !important; animation: slideIn 0.35s ease; } /* === Footer === */ .stApp > footer { display: none !important; } /* === Layout === */ .main .block-container { max-width: 850px !important; padding: 1.5rem 1rem !important; } [data-testid="stBottom"] { background: linear-gradient(180deg, transparent 0%, var(--bg) 40%) !important; }