root = Card([header, todayRevenue, comparison, hourlyTrend, keyMetrics])
header = CardHeader("Mid-Morning Check-In", "Revenue snapshot as of 10:30 AM")
todayRevenue = Card([revenueLabel, revenueValue, revenueSub], "sunk", "column", "s")
revenueLabel = TextContent("Revenue So Far Today", "small-heavy")
revenueValue = TextContent("$3,247", "large-heavy")
revenueSub = TextContent("From 42 orders • Avg $77.31", "small")
comparison = Card([compLabel, compValue, compDetail], "sunk", "column", "s")
compLabel = TextContent("vs Same Time Yesterday", "small-heavy")
compValue = TextContent("+18.3%", "large-heavy")
compDetail = TextContent("Yesterday at 10:30 AM: $2,745 • 36 orders", "small")
hourlyTrend = Card([trendLabel, trendChart], "clear", "column", "m")
trendLabel = Heading("Hourly Trend (Today vs Yesterday)", "h3")
trendChart = LineChart(["7AM", "8AM", "9AM", "10AM", "11AM"], [todaySeries, yesterdaySeries], "natural", "Hour", "Revenue ($)")
todaySeries = Series("Today", [180, 520, 1150, 1397, 0])
yesterdaySeries = Series("Yesterday", [140, 480, 980, 1145, 1280])
keyMetrics = Card([metricsLabel, metricsGrid], "clear", "column", "m")
metricsLabel = Heading("Key Metrics", "h3")
metricsGrid = Card([ordersCard, aovCard, conversionCard, refundsCard], "clear", "row", "m", "stretch", "start", true)
ordersCard = Card([ordersLabel, ordersValue], "sunk", "column", "xs")
ordersLabel = TextContent("Orders", "small")
ordersValue = TextContent("42", "large-heavy")
aovCard = Card([aovLabel, aovValue], "sunk", "column", "xs")
aovLabel = TextContent("Avg Order Value", "small")
aovValue = TextContent("$77.31", "large-heavy")
conversionCard = Card([convLabel, convValue], "sunk", "column", "xs")
convLabel = TextContent("Conversion", "small")
convValue = TextContent("3.2%", "large-heavy")
refundsCard = Card([refLabel, refValue], "sunk", "column", "xs")
refLabel = TextContent("Refunds", "small")
refValue = TextContent("$0", "large-heavy")