Camera up decoupled from orbit — the camera up vector is no longer
tied to the orbit rotation axis. View3dConfig now exposes an explicit
up parameter that defaults to (0, 1, 0), so the interactive viewer's
orbit behaviour matches the no-camera case regardless of the plane
orientation. CameraConfig3d also accepts up directly.
Screen-space fat lines — line_thickness is rendered as a
screen-space pixel width via three.js Line2 fat lines for Axis,
Grid, and PointPath, so the width stays constant regardless of zoom.
Added demo_camera_axes_grid_2d.py to the viz examples index.
Documented the Axis fields value_start and value_step.
Corrected the camera parameter type in visualizer.md to note that
View2DConfig / View3dConfig input specs are also accepted and
converted via get_camera().
Clarified that Axis renders value labels only (no tick marks);
minor_interval and show_ticks are accepted but currently not
rendered.