root = Card([header, current, temp, condition, outlook, forecastChart, sunTimes])
header = CardHeader("Morning Weather Brief", "Bengaluru, India")
current = Card([todayLabel, tempText, conditionText], "sunk")
todayLabel = Heading("Current Conditions", "h3")
tempText = TextContent("**24°C** — Partly Cloudy", "large-heavy")
conditionText = TextContent("Humidity 65% · Wind 12 km/h · Feels like 24°C", "small")
outlook = Card([outlookLabel, forecastChart], "clear")
outlookLabel = Heading("Next 3 Days", "h3")
forecastChart = BarChart(["Today", "Tomorrow", "Day 3"], [highSeries, lowSeries], "grouped", "Day", "Temperature (°C)")
highSeries = Series("High", [29, 30, 28])
lowSeries = Series("Low", [20, 21, 19])
sunTimes = Card([sunHeading, sunTable], "sunk")
sunHeading = Heading("Sunrise & Sunset", "h3")
sunTable = Table([sunEvent, sunTime])
sunEvent = Col("Event", ["Sunrise", "Sunset"])
sunTime = Col("Time", ["6:12 AM", "6:32 PM"])