Extract the outer ring (first part) as a list of Points.
List<Point> get outerRing { if (parts.isEmpty || points.isEmpty) return []; final endIdx = parts.length > 1 ? parts[1] : points.length; return points.sublist(0, endIdx); }