root = Card([header, currentWeather, forecastSection, sunTimes, followUps])
header = CardHeader("Morning Weather Brief", "Bengaluru • Updated 6:30 AM")
currentWeather = Card([tempRow, conditionRow], "sunk", "row", "l", "center")
tempRow = TextContent("24°C", "large-heavy")
conditionRow = TextContent("Partly cloudy • Feels like 25°C • Humidity 68%", "small")
forecastSection = Card([forecastHeader, forecastTable], "clear")
forecastHeader = Heading("3-Day Outlook", "h3")
forecastTable = Table([dayCol, conditionCol, highLowCol, rainCol])
dayCol = Col("Day", ["Today", "Tomorrow", "Day 3"])
conditionCol = Col("Condition", ["Partly cloudy", "Light rain", "Sunny"])
highLowCol = Col("High / Low", ["29° / 20°", "27° / 19°", "31° / 21°"])
rainCol = Col("Rain", ["10%", "65%", "5%"])
sunTimes = Card([sunHeader, sunRow], "sunk")
sunHeader = Heading("Sunrise & Sunset", "h3")
sunRow = Card([sunrise, sunset], "clear", "row", "xl", "center")
sunrise = Card([sunriseLabel, sunriseTime], "clear", "column", "xs", "center")
sunriseLabel = TextContent("Sunrise", "small")
sunriseTime = TextContent("6:12 AM", "large-heavy")
sunset = Card([sunsetLabel, sunsetTime], "clear", "column", "xs", "center")
sunsetLabel = TextContent("Sunset", "small")
sunsetTime = TextContent("6:28 PM", "large-heavy")
followUps = FollowUpBlock([followUp1, followUp2])
followUp1 = FollowUpItem("Hourly forecast for today")
followUp2 = FollowUpItem("Weekend weather outlook")