root = Card([header, currentCard, forecastCard, sunCard])
header = CardHeader("Morning Weather Brief", "Bengaluru, India · Monday, 9 June 2025")
currentCard = Card([currentTitle, currentRow, feelsText], "sunk")
currentTitle = Heading("Now", "h3")
currentRow = Card([tempText, conditionTag], "clear", "row", "m")
tempText = TextContent("**28°C**", "large-heavy")
conditionTag = Tag("Partly Cloudy", null, "lg", "info")
feelsText = TextContent("Feels like 30°C · Humidity 65% · Wind 12 km/h", "small")
forecastCard = Card([forecastTitle, forecastTable], "sunk")
forecastTitle = Heading("Next 3 days", "h3")
forecastTable = Table([forecastDay, forecastCondition, forecastHigh, forecastLow])
forecastDay = Col("Day", ["Today", "Tomorrow", "Wed"])
forecastCondition = Col("Condition", ["Partly cloudy", "Scattered storms", "Sunny"])
forecastHigh = Col("High", ["31°C", "29°C", "32°C"])
forecastLow = Col("Low", ["23°C", "22°C", "24°C"])
sunCard = Card([sunTitle, sunTable], "sunk")
sunTitle = Heading("Sunrise & sunset", "h3")
sunTable = Table([sunEvent, sunTime])
sunEvent = Col("Event", ["Sunrise", "Sunset"])
sunTime = Col("Time", ["5:58 AM", "6:45 PM"])