Much of element styling is now handled by an external engine. How do I make an element hover. There's a hover style. Hoverable needs to wrap another element. That element can be styled. ```rs struct Hoverable { } impl Element for Hoverable { } ``` ```rs #[derive(Styled, Interactive)] pub struct Div { declared_style: StyleRefinement, interactions: Interactions } pub trait Styled { fn declared_style(&mut self) -> &mut StyleRefinement; fn compute_style(&mut self) -> Style { Style::default().refine(self.declared_style()) } // All the tailwind classes, modifying self.declared_style() } impl Style { pub fn paint_background(layout: Layout, cx: &mut PaintContext); pub fn paint_foreground(layout: Layout, cx: &mut PaintContext); } pub trait Interactive { fn interactions(&mut self) -> &mut Interactions; fn on_click(self, ) } struct Interactions { click: SmallVec<[; 1]>, } ``` ```rs trait Stylable { type Style; fn with_style(self, style: Self::Style) -> Self; } ```