root = Card([header, currentWeather, threeDayOutlook, sunTimes, followUps])
header = CardHeader("Morning Weather Brief", "Bengaluru · Updated 6:30 AM IST")
currentWeather = Card([currentTemp, currentDetails], "sunk", "row", "l", "center", "between")
currentTemp = TextContent("24°C", "large-heavy")
currentDetails = Card([condition, feelsLike, humidity, wind], "clear", "column", "s")
condition = TextContent("Partly Cloudy", "default")
feelsLike = TextContent("Feels like 25°C", "small")
humidity = TextContent("Humidity 68%", "small")
wind = TextContent("Wind W 12 km/h", "small")
threeDayOutlook = Card([outlookHeader, outlookTable], "card", "column", "m")
outlookHeader = Heading("3-Day Outlook", "h3")
outlookTable = Table([dayCol, conditionCol, highLowCol, precipCol])
dayCol = Col("Day", ["Today", "Tomorrow", "Day 3"])
conditionCol = Col("Condition", ["Partly Cloudy", "Light Rain", "Sunny"])
highLowCol = Col("High / Low", ["29° / 21°", "27° / 20°", "31° / 19°"])
precipCol = Col("Precip", ["10%", "65%", "5%"])
sunTimes = Card([sunHeader, sunRow], "sunk", "column", "m")
sunHeader = Heading("Sunrise & Sunset", "h3")
sunRow = Card([sunrise, sunset], "clear", "row", "l", "center", "between")
sunrise = Card([sunriseIcon, sunriseLabel, sunriseTime], "clear", "column", "xs", "center")
sunriseIcon = TextContent("🌅", "large")
sunriseLabel = TextContent("Sunrise", "small")
sunriseTime = TextContent("6:12 AM", "default")
sunset = Card([sunsetIcon, sunsetLabel, sunsetTime], "clear", "column", "xs", "center")
sunsetIcon = TextContent("🌇", "large")
sunsetLabel = TextContent("Sunset", "small")
sunsetTime = TextContent("6:28 PM", "default")
followUps = FollowUpBlock([followUp1, followUp2, followUp3])
followUp1 = FollowUpItem("Hourly forecast for today")
followUp2 = FollowUpItem("Weekend weather outlook")
followUp3 = FollowUpItem("Air quality index for Bengaluru")