Annotations are stored as { chapter, start, end, quote, note, color } with character offsets into the chapter text. The renderer splits the chapter at annotation boundaries and wraps the covered runs ...