double constrain(double size) { validate(); if (!size.isFinite || size <= 0) { throw ArgumentError.value(size, 'size', 'Must be finite and positive.'); } return size.clamp(minimum, maximum).toDouble(); }