File size: 21,974 Bytes
d8cc290
 
379411f
 
99f6320
379411f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99f6320
379411f
 
99f6320
379411f
 
99f6320
379411f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99f6320
379411f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99f6320
379411f
 
 
 
 
99f6320
379411f
 
 
 
 
 
 
6f92616
379411f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ebb2958
379411f
 
 
b5125dc
379411f
 
 
99f6320
379411f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b5125dc
379411f
 
 
 
 
 
 
 
 
 
99f6320
379411f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99f6320
379411f
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
import streamlit as st
import pandas as pd
import plotly.express as px
from datetime import datetime

# --- 1. DATA STRUCTURE FOR BioDS CONTENT ---
SPACE_DATA = {
    "MilkyWayGalaxy": {
        "title": "Milky Way Galaxy: Local Celestial Bodies & Stars",
        "items": [
            {"id": "MW_JUPITER", "name": "Jupiter Planet", "color": "0xDDAA00", "detail": "Giant gas planet. Key focus in astrobiology for its moon Europa. Its massive radiation belts make life challenging. Features complex atmospheric biology models.", 
             "health_pct": 85, "moons": 95, "direction": "North-East Ecliptic", "surface": "Gaseous/Icy", "air_index": "N/A (Gas Giant)", "human_like": "None", "perplexity": 0.98},
            {"id": "MW_SATURN", "name": "Saturn Moon Titan", "color": "0xAAAAFF", "detail": "Titan has a dense atmosphere and stable liquid methane on its surface. Considered highly promising for exotic life forms, utilizing non-water solvents.",
             "health_pct": 92, "moons": 0, "direction": "South Celestial Pole", "surface": "Icy/Liquid Methane", "air_index": "High Methane/Nitrogen", "human_like": "Low Probability", "perplexity": 0.95},
            {"id": "MW_ORION", "name": "Orion Nebula (M42)", "color": "0xFF5555", "detail": "Massive star formation region, a cosmic lab for pre-biotic chemistry. Intense UV radiation shapes the biology of dust grains and molecular clouds.",
             "health_pct": 78, "moons": "N/A", "direction": "Galactic Center", "surface": "Gas/Dust Cloud", "air_index": "Molecular Hydrogen", "human_like": "Zero", "perplexity": 0.88},
            {"id": "MW_SUN", "name": "The Sun (G2V Star)", "color": "0xFFFF55", "detail": "Our star, the ultimate source of energy for terrestrial life. Its habitable zone is the core region for Earth-based biology. Future research focuses on solar flare resilience.",
             "health_pct": 99, "moons": "N/A", "direction": "Sol Centerpoint", "surface": "Plasma", "air_index": "Hydrogen/Helium", "human_like": "Zero", "perplexity": 0.99},
            {"id": "MW_EARTH", "name": "Earth's Biosphere", "color": "0x00FF00", "detail": "A control point for all space biology: the only known planet to harbor life. Its complex ecosystem is a benchmark for evaluating life signatures elsewhere.",
             "health_pct": 65, "moons": 1, "direction": "Local Arm Segment", "surface": "Solid/Liquid Water", "air_index": "Excellent (N2/O2)", "human_like": "Benchmark", "perplexity": 0.65},
            {"id": "MW_MARS", "name": "Mars Planet (Terraforming)", "color": "0xFF5500", "detail": "A prime target for terraforming and searching for past microbial life. Current biology focuses on permafrost extremophiles and atmospheric oxygenation projects.",
             "health_pct": 75, "moons": 2, "direction": "Inner Solar System", "surface": "Rocky (Iron Oxide)", "air_index": "High CO2", "human_like": "Low, potential for settlement", "perplexity": 0.70},
            {"id": "MW_VENUS", "name": "Venus Atmosphere", "color": "0xFF88CC", "detail": "A highly acidic and hot surface, but the upper atmosphere is temperate. Hypothesized cloud-based extremophile life forms utilizing sulfur compounds are a key research topic.",
             "health_pct": 55, "moons": 0, "direction": "Inner Solar System", "surface": "Molten/Volcanic", "air_index": "Sulfuric Acid/CO2", "human_like": "Zero", "perplexity": 0.85},
            {"id": "MW_URANUS", "name": "Uranus Ice Giant", "color": "0x00AAFF", "detail": "An ice giant with a complex, cold atmosphere. Its unique axial tilt presents challenges for modeling internal heat and potential deep-atmospheric biological zones.",
             "health_pct": 82, "moons": 27, "direction": "Outer Solar System", "surface": "Gas/Ice", "air_index": "Hydrogen/Helium/Methane", "human_like": "None", "perplexity": 0.90},
            {"id": "MW_NEPTUNE", "name": "Neptune Triton Moon", "color": "0x0055FF", "detail": "Neptune's largest moon, Triton, is geologically active with cryovolcanoes. Subsurface liquid nitrogen or water oceans make it a candidate for exotic subsurface life.",
             "health_pct": 88, "moons": 14, "direction": "Outer Solar System", "surface": "Nitrogen Ice", "air_index": "Trace Nitrogen/Methane", "human_like": "Extremophiles", "perplexity": 0.93},
            {"id": "MW_ALPHACEN", "name": "Alpha Centauri A", "color": "0xFFFF00", "detail": "The nearest star system. Centauri A is a G-type star, similar to the Sun, making its habitable zone a high-priority target for exoplanetary exploration.",
             "health_pct": 94, "moons": "Unknown", "direction": "Proxima Vicinity", "surface": "Plasma", "air_index": "Hydrogen/Helium", "human_like": "Medium Probability", "perplexity": 0.75},
            {"id": "MW_BETELG", "name": "Betelgeuse (Red Supergiant)", "color": "0xFF0000", "detail": "A massive, dying star. Its current instability and eventual supernova will sterilize a vast volume of space, but its outer regions currently host dense dust clouds for chemistry.",
             "health_pct": 20, "moons": "N/A", "direction": "Orion Constellation", "surface": "Supergiant Plasma", "air_index": "Heavy Elements", "human_like": "Zero", "perplexity": 0.99},
            {"id": "MW_TRAPPIST", "name": "TRAPPIST-1 System", "color": "0xAA00FF", "detail": "A system of seven Earth-sized planets orbiting an ultra-cool dwarf star. Multiple planets are within the theoretical habitable zone, making it a primary focus for atmospheric analysis.",
             "health_pct": 85, "moons": "Varies", "direction": "Aquarius Constellation", "surface": "Rocky/Water-World", "air_index": "Complex, analyzing", "human_like": "High Probability", "perplexity": 0.60},
        ]
    },
    "AndromedaGalaxy": {
        "title": "Andromeda Galaxy (M31): Neighboring Mysteries",
        "items": [
            {"id": "AND_CORE", "name": "Andromeda Core Region", "color": "0xFFFFFF", "detail": "A dense, high-metallicity environment with rapid star birth. High stellar density increases the chances of close-proximity gravitational events, impacting planetary stability.",
             "health_pct": 70, "moons": "Unknown", "direction": "Approaching MW", "surface": "Dense Stellar", "air_index": "Very Low", "human_like": "Very Low", "perplexity": 0.93},
            {"id": "AND_HALO", "name": "Dark Matter Halo Density", "color": "0x555555", "detail": "The invisible gravitational structure. Interaction between dark matter and regular matter is theorized to influence planetary thermal gradients and internal heat.", 
             "health_pct": 50, "moons": "N/A", "direction": "Perpendicular Spin", "surface": "Non-Baryonic", "air_index": "Vacuum", "human_like": "Zero", "perplexity": 0.99},
            {"id": "AND_CANDIDATE_P", "name": "Candidate Exoplanet System", "color": "0xAAFFFF", "detail": "Hypothetical system in M31's spiral arms. Search for radio signals (SETI) from Andromeda is ongoing, providing key data points for non-local biology.",
             "health_pct": 88, "moons": 4, "direction": "M31 Outer Arm", "surface": "Rocky/Super-Earth", "air_index": "Argon/CO2", "human_like": "Possible", "perplexity": 0.77},
        ]
    },
    "Interstellar": {
        "title": "Interstellar Medium & Boundary Layers",
        "items": [
            {"id": "INT_OORT", "name": "Oort Cloud", "color": "0x00AAFF", "detail": "The most distant region of our Solar System, a reservoir of comets. Contains pristine biological precursors (ices, hydrocarbons) crucial for studying panspermia theories.",
             "health_pct": 80, "moons": "N/A", "direction": "Solar System Edge", "surface": "Water Ice/Rock", "air_index": "Vacuum", "human_like": "Zero", "perplexity": 0.96},
            {"id": "INT_KUIPER", "name": "Kuiper Belt Objects", "color": "0x55FFAA", "detail": "Region beyond Neptune, home to dwarf planets and small bodies. Its objects (like Pluto) show cryovolcanism, suggesting subsurface oceans—potential habitats for extremophiles.",
             "health_pct": 90, "moons": "Varies", "direction": "Ecliptic Plane", "surface": "Methane/Nitrogen Ice", "air_index": "Trace Methane", "human_like": "Extremophiles", "perplexity": 0.89},
            {"id": "INT_MEDIUM", "name": "Interstellar Medium (ISM)", "color": "0xAA55FF", "detail": "The gas and dust between star systems. Site of complex molecule synthesis, including amino acids, which are then delivered to protoplanetary disks.",
             "health_pct": 75, "moons": "N/A", "direction": "Between Stars", "surface": "Atomic Gas/Dust", "air_index": "Atomic/Molecular H", "human_like": "Zero", "perplexity": 0.92},
            {"id": "INT_HELIO", "name": "Heliopause Boundary", "color": "0xCCCCFF", "detail": "The magnetic boundary where the solar wind meets the interstellar medium. This shield protects the solar system's inner biology from the majority of galactic cosmic rays.",
             "health_pct": 98, "moons": "N/A", "direction": "Outbound Velocity Vector", "surface": "Plasma/Magnetic Field", "air_index": "Very Low Density", "human_like": "Indirect Shielding", "perplexity": 0.97},
        ]
    },
    "OtherGalaxies": {
        "title": "Other Galaxies: Diverse Cosmic Habitats",
        "items": [
            {"id": "OG_TRIANGULUM", "name": "Triangulum Galaxy (M33)", "color": "0xFF00AA", "detail": "The third largest galaxy in the Local Group. High rate of star formation, leading to a younger population of potentially habitable exoplanets.",
             "health_pct": 88, "moons": "Unknown", "direction": "Local Group Edge", "surface": "Spiral Arms", "air_index": "High Star Gas", "human_like": "Medium", "perplexity": 0.70},
            {"id": "OG_WHIRLPOOL", "name": "Whirlpool Galaxy (M51)", "color": "0xAAFF00", "detail": "A classic interacting spiral galaxy. Merging creates shockwaves and intense compression, triggering stellar explosions that sterilize local star systems.",
             "health_pct": 68, "moons": "Unknown", "direction": "Interacting", "surface": "Dense Dust", "air_index": "Low", "human_like": "Low", "perplexity": 0.95},
            {"id": "OG_CARTWHEEL", "name": "Cartwheel Galaxy", "color": "0x00FFAA", "detail": "A lenticular galaxy that was ringed by a high-speed collision. The expanding ring is a transient region of intense star birth and high-energy events.",
             "health_pct": 72, "moons": "Unknown", "direction": "Expanding Ring", "surface": "High Energy", "air_index": "Ionized Gas", "human_like": "Very Low", "perplexity": 0.90},
        ]
    },
    "BlackHoles": {
        "title": "Black Holes: Gravity's Biological Frontiers",
        "items": [
            {"id": "BH_SAG_A", "name": "Sagittarius A* (Supermassive)", "color": "0xFF8888", "detail": "The supermassive black hole at the center of our galaxy. Its radiation effects and gravitational influence shape the stellar orbits and dust cloud chemistry nearby.",
             "health_pct": 40, "moons": "N/A", "direction": "Galactic Center", "surface": "Singularity", "air_index": "Accretion Disk", "human_like": "Zero", "perplexity": 0.99},
            {"id": "BH_M87", "name": "M87's Black Hole (Supermassive)", "color": "0xAAAAAA", "detail": "The first black hole imaged. Its massive jets extend for thousands of light-years, impacting the entire M87 cluster's biology by stripping gas from forming galaxies.",
             "health_pct": 30, "moons": "N/A", "direction": "Active Jetting", "surface": "Event Horizon", "air_index": "Relativistic Plasma", "human_like": "Zero", "perplexity": 0.99},
            {"id": "BH_V404CYGNI", "name": "V404 Cygni (Stellar Mass)", "color": "0x00FFFF", "detail": "A highly active stellar-mass black hole in a binary system, known for frequent X-ray flares. The intense burst radiation is highly mutagenic to any biological neighbors.",
             "health_pct": 55, "moons": "N/A", "direction": "Local Source", "surface": "Binary System", "air_index": "High X-ray Flux", "human_like": "Zero", "perplexity": 0.97},
            {"id": "BH_GROJ1655", "name": "GRO J1655-40 (Stellar Mass)", "color": "0xCC00AA", "detail": "An exceptionally fast-spinning black hole. The frame-dragging effect (Lense-Thirring effect) around it creates unique environmental physics that could theoretically affect orbiting matter.",
             "health_pct": 45, "moons": "N/A", "direction": "Rapid Spin", "surface": "Accretion Disk", "air_index": "X-ray/Gamma", "human_like": "Zero", "perplexity": 0.98},
            {"id": "BH_PRIMORDIAL", "name": "Theoretic Primordial BH", "color": "0x333333", "detail": "Hypothesized to have formed in the early universe. Could potentially be a component of dark matter, and their minimal interaction makes them irrelevant to biological systems.",
             "health_pct": 5, "moons": "N/A", "direction": "Randomized", "surface": "Theoretic", "air_index": "Vacuum", "human_like": "Zero", "perplexity": 1.00},
        ]
    }
}

# --- 2. PAGE CONFIGURATION ---
st.set_page_config(page_title="BioDS - Space Biology Data System", page_icon="🔭", layout="wide")

# --- 3. CONSTANTS ---
ACCENT_COLOR = "#00CCFF"

# --- 4. SESSION STATE INITIALIZATION ---
if 'page' not in st.session_state:
    st.session_state.page = "app"
if 'current_section' not in st.session_state:
    st.session_state.current_section = list(SPACE_DATA.keys())[0] if SPACE_DATA else None
if 'selected_item' not in st.session_state:
    st.session_state.selected_item = None
if 'dashboard_section' not in st.session_state:
    st.session_state.dashboard_section = list(SPACE_DATA.keys())[0] if SPACE_DATA else None

# --- 5. NAVIGATION ---
def render_navbar():
    """Renders the navigation bar."""
    st.markdown(f"""
    <div style="position: fixed; top: 0; left: 0; right: 0; z-index: 1000; background-color: #0d0d0d; padding: 1rem 2rem; border-bottom: 1px solid rgba(255, 255, 255, 0.1);">
        <div style="display: flex; justify-content: space-between; align-items: center;">
            <div style="font-family: 'Inter', sans-serif; font-size: 24px; font-weight: bold; color: {ACCENT_COLOR};">BioDS.</div>
            <div style="display: flex; gap: 20px;">
            </div>
        </div>
    </div>
    """, unsafe_allow_html=True)
    
    cols_nav = st.columns([1, 1])
    if cols_nav[0].button("🧬 App View", key="nav_app_view"):
        st.session_state.page = "app"
        st.rerun()
    if cols_nav[1].button("🔭 Dashboard", key="nav_dashboard"):
        st.session_state.page = "dashboard"
        st.rerun()
    
    st.markdown("<hr style='margin: 0; border-top: 1px solid rgba(255, 255, 255, 0.1);'>", unsafe_allow_html=True)

# --- 6. DASHBOARD FUNCTIONS ---
def render_dashboard_navigation():
    NAV_KEYS = ['MilkyWayGalaxy', 'AndromedaGalaxy', 'Interstellar', 'OtherGalaxies', 'BlackHoles']
    cols = st.columns(len(NAV_KEYS))
    
    title_map = {
        'MilkyWayGalaxy': 'Milky Way',
        'AndromedaGalaxy': 'Andromeda',
        'Interstellar': 'Interstellar',
        'OtherGalaxies': 'Galaxies',
        'BlackHoles': 'Black Holes'
    }
    
    for i, key in enumerate(NAV_KEYS):
        title = title_map.get(key, key)
        is_active = (key == st.session_state.dashboard_section)
        
        if cols[i].button(title, key=f"dash_nav_{key}", use_container_width=True, type="primary" if is_active else "secondary"):
            st.session_state.dashboard_section = key
            st.rerun()

def render_dashboard_content(section_key):
    data = SPACE_DATA[section_key]
    num_items = len(data['items'])
    
    st.markdown(f"### {data['title']}")
    st.markdown("---")
    
    col1, col2, col3 = st.columns(3)
    col1.metric("Total Bodies Tracked", str(num_items), delta=f"+{num_items*3}% Potential Habitability")
    col2.metric("Dominant Element", "Carbon", "98% Confidence")
    col3.metric("Latest Entry", data['items'][0]['name'], "Updated 2h ago")
    
    st.markdown("---")
    
    summary_analysis = {
        'MilkyWayGalaxy': "Local systems show high concentration of water-based life candidates, especially around icy moons and newly discovered exoplanet systems (like TRAPPIST-1).",
        'AndromedaGalaxy': "Intergalactic analysis points to high gravitational perturbations, suggesting life would need to be resilient to frequent, high-energy events.",
        'Interstellar': "The interstellar medium is a reservoir of complex organic molecules. Research focuses on cryo-protection for panspermia viability.",
        'OtherGalaxies': "Highly diverse ecosystems. Interacting galaxies indicate transient periods of sterilization followed by rapid chemical rejuvenation.",
        'BlackHoles': "These regions are primarily studied for their energy output's impact on distant habitable zones.",
    }
    
    st.info(f"**Section Analysis:** {summary_analysis.get(section_key, 'No analysis available.')}")
    
    st.markdown("---")
    st.subheader("Biological Profile Overview")
    
    for item in data['items']:
        with st.expander(f"**{item['name']}**"):
            st.write(item['detail'])

def dashboard_page():
    st.markdown(f'<h1 style="color: {ACCENT_COLOR};">BioDS Dashboard</h1>', unsafe_allow_html=True)
    st.subheader("Welcome to the BioDS Dashboard!")
    st.markdown("---")
    
    render_dashboard_navigation()
    render_dashboard_content(st.session_state.dashboard_section)

# --- 7. APP VIEW FUNCTIONS ---
def render_item_details(item):
    st.markdown(f"<h2 style='color:#{item['color'].replace('0x', '')};'>{item['name']}</h2>", unsafe_allow_html=True)
    st.markdown(f"**Context:** {st.session_state.current_section}")
    st.markdown(f"{item['detail']}")
    
    st.markdown("---")
    st.subheader("Biological & Celestial Metrics")
    
    health_progress = item['health_pct'] / 100.0
    st.progress(health_progress, text=f"System Health: **{item['health_pct']}%**")
    
    col_l, col_r = st.columns(2)
    with col_l:
        st.write(f"**Moons/Satellites:** {item['moons']}")
        st.write(f"**Direction:** {item['direction']}")
    with col_r:
        st.write(f"**Surface:** {item['surface']}")
        st.write(f"**Air Index:** {item['air_index']}")
    
    st.markdown("---")
    st.subheader("Resource Allocation")
    
    bio_integrity = item['health_pct'] * 0.4
    grav_quality = item['health_pct'] * 0.3 + (1 - item['perplexity']) * 30
    atm_confidence = item['perplexity'] * 50
    unallocated = max(1, 100 - (bio_integrity + grav_quality + atm_confidence))
    
    df_data = pd.DataFrame({
        'Category': ['Bio-Scan Integrity', 'Gravimetric Data', 'Atmospheric Modeling', 'Unallocated'],
        'Value': [bio_integrity, grav_quality, atm_confidence, unallocated]
    })
    
    fig = px.pie(df_data, values='Value', names='Category', color_discrete_sequence=['#00CCFF', '#FF5555', '#AAAAAA', '#444444'])
    fig.update_layout(height=300, paper_bgcolor="rgba(0,0,0,0)", font=dict(color="#CCCCCC"))
    st.plotly_chart(fig, use_container_width=True, key=f"chart_{st.session_state.current_section}_{item['id']}")
    
    st.markdown("---")
    st.write(f"**Human-Like Viability:** {item['human_like']}")

def bio_ds_page():
    if st.session_state.current_section is None and SPACE_DATA:
        st.session_state.current_section = list(SPACE_DATA.keys())[0]
    
    st.markdown(f'<h1 style="color: {ACCENT_COLOR};">BioDS Data Explorer</h1>', unsafe_allow_html=True)
    st.markdown("---")
    
    NAV_KEYS = list(SPACE_DATA.keys())
    NAV_TITLES = [SPACE_DATA[key]['title'].split(':')[0] for key in NAV_KEYS]
    
    tabs = st.tabs(NAV_TITLES)
    
    for i, key in enumerate(NAV_KEYS):
        with tabs[i]:
            st.session_state.current_section = key
            
            col_content, col_panel = st.columns([2, 1])
            
            with col_content:
                current_data = SPACE_DATA[key]
                st.markdown(f"**Section:** {current_data['title']}")
                st.markdown("---")
                
                items_per_row = 3
                num_items = len(current_data['items'])
                num_rows = (num_items + items_per_row - 1) // items_per_row
                
                for row in range(num_rows):
                    row_cols = st.columns(items_per_row)
                    for j in range(items_per_row):
                        item_index = row * items_per_row + j
                        if item_index < num_items:
                            item = current_data['items'][item_index]
                            
                            with row_cols[j]:
                                if st.button(f"✶ {item['name']}", key=f"crystal_{key}_{item['id']}", use_container_width=True):
                                    st.session_state.current_section = key
                                    st.session_state.selected_item = item
                                    st.rerun()
            
            with col_panel:
                if st.session_state.selected_item and st.session_state.current_section == key:
                    render_item_details(st.session_state.selected_item)
                else:
                    st.markdown("### Select a Celestial Body")
                    st.info("Click on any star crystal to view its complete Space Biology profile.")

# --- 8. MAIN APP ---
def main_app():
    st.markdown(f"""
    <style>
        .stApp {{
            background-color: #0d0d0d;
            color: #ffffff;
        }}
        .stButton > button {{
            background-color: #1a1a1a;
            color: #ffffff;
            border: 1px solid rgba(255, 255, 255, 0.1);
        }}
        .stButton > button:hover {{
            background-color: {ACCENT_COLOR};
            color: #0d0d0d;
        }}
    </style>
    """, unsafe_allow_html=True)
    
    render_navbar()
    
    if st.session_state.page == "app":
        bio_ds_page()
    elif st.session_state.page == "dashboard":
        dashboard_page()

if __name__ == "__main__":
    main_app()