diff --git a/css-color-5/Overview.bs b/css-color-5/Overview.bs index c54a3b58763..dc62f0efc65 100644 --- a/css-color-5/Overview.bs +++ b/css-color-5/Overview.bs @@ -946,11 +946,49 @@ so it has meaningful values for the channels.

regardless of what the [=origin color's=] opacity was. -
- While most uses of [=relative color=] syntax - will use the [=channel keywords=] in their corresponding argument, - you can use them in any position. +When relative color syntax is used, +color channel values, +whether directly specified +or arising from color space conversion, +are not clamped to the reference ranges but are retained as-is. +This preserves out of gamut values, +if the destination color space is capable of representing them. + +
+ For example, a Display P3 color + which is outside the gamut of sRGB can still be represented, + as it is not clipped. + +
+		--vivid-yellow:  color(display-p3 1 1 0); 
+		--paler-yellow:  srgb(from var(--vivid-yellow) r g calc(b + 50%));
+	
+ + Here --vivid-yellow, once converted to sRGB, + is rgb(100% 100% -34.63%) + and the negative blue component is not clamped. + The result of the RCS calculation is + rgb(100% 100% 15.37%) +
+ +However, when relative color syntax is used, +alpha channels are clamped to the reference range. +
+ For example, attempting to double an alpha of 0.7 in the origin color + results in an alpha in the result of 1, not 1.4. + +
+		--tan:  oklch(78% 0.06 75) / 0.7;
+		--deeper-tan:  oklch(from var(--tan) l c h / calc(alpha * 2));
+	
+
+ +While most uses of [=relative color=] syntax +will use the [=channel keywords=] in their corresponding argument, +you can use them in any position. + +
For example, to do a rough approximation of grayscaling a color: