flowchart TD
Start("Program Starts"):::startNode
Setup["setup() runs once"]:::setupNode
Draw["draw() runs"]:::drawNode
Wait["Wait for next frame"]:::waitNode
FrameCount["frameCount++"]:::processNode
Start --> Setup
Setup --> Draw
Draw --> Wait
Wait -->|"~16.7ms at 60fps"| FrameCount
FrameCount --> Draw
classDef startNode fill:#667eea,stroke:#333,stroke-width:2px,color:#fff,font-size:16px
classDef setupNode fill:#4a90d9,stroke:#333,stroke-width:2px,color:#fff,font-size:16px
classDef drawNode fill:#48bb78,stroke:#333,stroke-width:3px,color:#fff,font-size:16px
classDef waitNode fill:#9f7aea,stroke:#333,stroke-width:2px,color:#fff,font-size:16px
classDef processNode fill:#ed8936,stroke:#333,stroke-width:2px,color:#fff,font-size:16px
linkStyle default stroke:#666,stroke-width:2px,font-size:16px