import dash
from dash import html, dcc
import dash_bootstrap_components as dbc
# This must be in a separate file in the 'pages' folder
dash.register_page(__name__, path='/phenomenon')
layout = html.Div([
html.Div([
html.H1("The Physics of Redshift", className="text-white fw-bold mb-2"),
html.P("Decoding the expansion of Spacetime", className="lead text-info"),
], className="mb-5"),
dbc.Card([
dbc.CardBody([
# Section 1: The 3D Celestial Sphere
html.H3("The 3D Celestial Sphere", className="text-white mb-4"),
html.P([
"For centuries, astronomers perceived stars and galaxies as being fixed on a two-dimensional sphere surrounding the Earth. ",
html.B("Redshift is the key that shatters this illusion."), " Because light travels at a finite and constant speed, the distance of an object can be interpreted as ",
html.I("lookback time"), ". Measuring redshift allows us to reconstruct the evolutionary history of the Universe in 'time slices'."
], className="text-light mb-4"),
# The visual anchor
html.Div([
html.Img(
src=dash.get_asset_url('redshit.png'),
style={
"width": "100%", "maxHeight": "380px", "objectFit": "contain",
"borderRadius": "24px", "marginBottom": "30px",
"border": "1px solid rgba(0, 210, 255, 0.2)"
}
),
], className="text-center"),
# Section 2: Hubble's Law
html.H3("Hubble's Law and the Stretching of Space", className="text-white mb-4"),
html.P([
"Redshift relies on a fundamental observation: the further away a galaxy is from us, the faster it appears to be receding. ",
"This phenomenon, known as ", html.B("Hubble's Law"), ", is not due to a simple movement of galaxies through space, but to the expansion of the Universe itself."
], className="text-light mb-4"),
html.P([
"As the light from a distant galaxy travels toward us, the space it traverses stretches, which literally lengthens the wavelength of the light. ",
"Since red represents the low-frequency (long wavelength) end of the visible spectrum, this stretching makes the light appear 'redder' than when it was originally emitted."
], className="text-light mb-4"),
html.P([
"Mathematically, the redshift (z) is defined by the ratio between the observed wavelength (",
html.Span("λobs", style={"fontStyle": "italic"}), ") and the emitted one:"
], className="text-light mb-4"),
# Equation 6.4 - Redshift Definition
dcc.Markdown(
r"""
$$1 + z = \frac{\lambda_{obs}}{\lambda_{em}}$$
""",
mathjax=True,
style={"textAlign": "center", "fontSize": "26px", "color": "#17a2b8"}
),
html.P([
"This difference is caused by the expansion of the Universe and can be interpreted in terms "
"of a scale factor a, which describes the linear stretching of spacetime:"
], className="text-light mt-5 mb-4"),
# Equation 6.5 - Scale Factor
dcc.Markdown(
r"""
$$1 + z = \frac{a_{obs}}{a_{em}} = \frac{1}{a_{em}}$$
""",
mathjax=True,
style={"textAlign": "center", "fontSize": "26px", "color": "#17a2b8"}
),
# Comoving Distance Section
html.Div([
html.H4("The ΛCDM Distance Relation", className="text-info mt-5 mb-3"),
html.P("Assuming a flat universe, the comoving distance as a reference is obtained via:",
className="text-light"),
# Equation 6.6 - Comoving Distance Integral
dcc.Markdown(
r"""
$$d_c(z) = \frac{c}{H_0} \int_{0}^{z} \frac{dz'}{\sqrt{\Omega_m(1+z')^3 + \Omega_r(1+z')^4 + \Omega_\Lambda}}$$
""",
mathjax=True,
style={"textAlign": "center", "fontSize": "22px", "color": "#9d50bb"}
),
# IMPORTANT: Using raw string (r) here prevents the \Omega syntax error
dcc.Markdown(
r"*Where* $c$ *is the speed of light,* $H_0$ *is the Hubble constant, and* $\Omega$ *terms represent the matter/energy budget.*",
mathjax=True,
style={"textAlign": "center", "color": "#adb5bd", "fontStyle": "italic"}
),
], className="p-4 rounded-4 mt-5", style={"background": "rgba(255, 255, 255, 0.02)", "border": "1px solid rgba(157, 80, 187, 0.3)"})
])
], className="modern-card p-4"),
])