color-opacity — 100.00% verified visual parity

← all categories · PASS 49 · FAIL 0 · REFERENCE-DISPUTED 1 · 50 total · 300 DPI

diff colours:MissingExtraColorErrMatchFull-page diff: matching and per-channel ≤1.0% pixels are blank; coloured classes are same-coordinate above-floor evidence. Exact RGBA mismatch remains numeric.

opacity — 100.00% verified visual parity PASS 3 · FAIL 0 · REFERENCE-DISPUTED 1all categories ↑

REFERENCE-DISPUTED 3804 px · above-floor 1.09% · raw 1.14% max-page diff opacity-text-glyph-group · text-group · REFERENCE DISPUTEDAntialiasCoverageΔE 17.9
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: above-floor complete-page mismatch 1.090827% exceeds 1.0% PASS ceiling; visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
Overlapping glyphs in one opacity:.5 element flatten before compositing; catches per-glyph alpha drawing where overlaps become too bright.
reference dispute: Both PDFs are rasterized by the same pinned pdftoppm command. Ironpress composites the overlapping glyphs as one opacity group: its fully painted glyph colour is the same #808080 as Chrome's (52,577 versus 52,595 pixels), so the overlap is not brightened by per-glyph alpha. The remaining raw diff is a one-device-pixel contour residue. The Ironpress PDF embeds ParitySans as CID TrueType while Chrome's PDF uses Type 3, so their PDF glyph programs produce slightly different edge coverage in that shared rasterization. This does not indicate missing opacity-group support; raw evidence remains reported.
regions (63 total; showing 63 representatives)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr63380424,30 → 141,115900total 1.1% · largest 0.3%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage33,53 → 141,1150.3ΔRGB(62,62,62)antialiasing coverage residue on a shared outline
AntialiasCoverage24,30 → 131,880.3ΔRGB(-55,-55,-55)antialiasing coverage residue on a shared outline
AntialiasCoverage39,42 → 73,910.2ΔRGB(12,12,12)antialiasing coverage residue on a shared outline
AntialiasCoverage92,57 → 127,1030.2ΔRGB(-23,-23,-23)antialiasing coverage residue on a shared outline
AntialiasCoverage80,56 → 86,890.09ΔRGB(16,16,16)antialiasing coverage residue on a shared outline
AntialiasCoverage45,95 → 73,1030.05ΔRGB(-45,-45,-45)antialiasing coverage residue on a shared outline
AntialiasCoverage92,42 → 120,500.05ΔRGB(54,54,54)antialiasing coverage residue on a shared outline
AntialiasCoverage97,53 → 98,570.004511ΔRGB(19,19,19)antialiasing coverage residue on a shared outline
AntialiasCoverage124,55 → 124,580.003910ΔRGB(-24,-24,-24)antialiasing coverage residue on a shared outline
AntialiasCoverage68,91 → 69,940.003910ΔRGB(-24,-24,-24)antialiasing coverage residue on a shared outline
AntialiasCoverage26,88 → 27,910.003308ΔRGB(-19,-19,-19)antialiasing coverage residue on a shared outline
AntialiasCoverage132,42 → 132,430.002406ΔRGB(-11,-11,-11)antialiasing coverage residue on a shared outline
AntialiasCoverage84,58 → 84,600.002406ΔRGB(-22,-22,-22)antialiasing coverage residue on a shared outline
AntialiasCoverage94,47 → 95,480.001805ΔRGB(-7,-7,-7)antialiasing coverage residue on a shared outline
AntialiasCoverage138,52 → 138,530.001805ΔRGB(31,31,31)antialiasing coverage residue on a shared outline
AntialiasCoverage83,57 → 84,580.001805ΔRGB(-14,-14,-14)antialiasing coverage residue on a shared outline
AntialiasCoverage44,94 → 45,950.001805ΔRGB(-17,-17,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage32,100 → 33,1010.001805ΔRGB(22,22,22)antialiasing coverage residue on a shared outline
AntialiasCoverage137,50 → 137,510.001504ΔRGB(22,22,22)antialiasing coverage residue on a shared outline
AntialiasCoverage97,52 → 97,530.001504ΔRGB(11,11,11)antialiasing coverage residue on a shared outline
AntialiasCoverage28,92 → 28,930.001504ΔRGB(-11,-11,-11)antialiasing coverage residue on a shared outline
AntialiasCoverage30,97 → 30,980.001504ΔRGB(11,11,11)antialiasing coverage residue on a shared outline
AntialiasCoverage133,44 → 133,440.001203ΔRGB(-12,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage93,46 → 94,460.001203ΔRGB(-11,-11,-11)antialiasing coverage residue on a shared outline
AntialiasCoverage121,50 → 121,510.001203ΔRGB(11,11,11)antialiasing coverage residue on a shared outline
AntialiasCoverage42,88 → 42,890.001203ΔRGB(10,10,10)antialiasing coverage residue on a shared outline
AntialiasCoverage44,93 → 44,930.001203ΔRGB(-12,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage31,98 → 31,990.001203ΔRGB(20,20,20)antialiasing coverage residue on a shared outline
AntialiasCoverage31,99 → 32,1000.001203ΔRGB(21,21,21)antialiasing coverage residue on a shared outline
AntialiasCoverage27,91 → 27,920.000902ΔRGB(-11,-11,-11)antialiasing coverage residue on a shared outline
AntialiasCoverage136,48 → 136,480.000602ΔRGB(20,20,20)antialiasing coverage residue on a shared outline
AntialiasCoverage136,48 → 136,490.000602ΔRGB(22,22,22)antialiasing coverage residue on a shared outline
AntialiasCoverage136,49 → 136,490.000602ΔRGB(22,22,22)antialiasing coverage residue on a shared outline
AntialiasCoverage96,51 → 96,510.000602ΔRGB(10,10,10)antialiasing coverage residue on a shared outline
AntialiasCoverage137,51 → 137,510.000602ΔRGB(42,42,42)antialiasing coverage residue on a shared outline
AntialiasCoverage122,52 → 122,520.000602ΔRGB(-4,-4,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage123,53 → 123,530.000602ΔRGB(-11,-11,-11)antialiasing coverage residue on a shared outline
AntialiasCoverage123,54 → 123,540.000602ΔRGB(-12,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage123,54 → 123,550.000602ΔRGB(-24,-24,-24)antialiasing coverage residue on a shared outline
AntialiasCoverage43,91 → 43,910.000602ΔRGB(-7,-7,-7)antialiasing coverage residue on a shared outline
AntialiasCoverage44,92 → 44,920.000602ΔRGB(-10,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage28,93 → 28,940.000602ΔRGB(-5,-5,-5)antialiasing coverage residue on a shared outline
AntialiasCoverage69,94 → 69,940.000602ΔRGB(-10,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage29,95 → 29,950.000602ΔRGB(-7,-7,-7)antialiasing coverage residue on a shared outline
AntialiasCoverage70,95 → 70,950.000602ΔRGB(-24,-24,-24)antialiasing coverage residue on a shared outline
AntialiasCoverage70,95 → 70,960.000602ΔRGB(-10,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage70,96 → 70,960.000602ΔRGB(-5,-5,-5)antialiasing coverage residue on a shared outline
AntialiasCoverage71,97 → 71,970.000602ΔRGB(-4,-4,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage131,42 → 131,420.000301ΔRGB(-33,-33,-33)antialiasing coverage residue on a shared outline
AntialiasCoverage133,44 → 133,440.000301ΔRGB(-10,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage134,45 → 134,450.000301ΔRGB(-14,-14,-14)antialiasing coverage residue on a shared outline
AntialiasCoverage135,47 → 135,470.000301ΔRGB(11,11,11)antialiasing coverage residue on a shared outline
AntialiasCoverage135,47 → 135,470.000301ΔRGB(9,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage95,48 → 95,480.000301ΔRGB(-10,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage120,50 → 120,500.000301ΔRGB(26,26,26)antialiasing coverage residue on a shared outline
AntialiasCoverage122,53 → 122,530.000301ΔRGB(-8,-8,-8)antialiasing coverage residue on a shared outline
AntialiasCoverage42,90 → 42,900.000301ΔRGB(15,15,15)antialiasing coverage residue on a shared outline
AntialiasCoverage43,92 → 43,920.000301ΔRGB(-18,-18,-18)antialiasing coverage residue on a shared outline
AntialiasCoverage29,95 → 29,950.000301ΔRGB(22,22,22)antialiasing coverage residue on a shared outline
AntialiasCoverage29,96 → 29,960.000301ΔRGB(5,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage30,97 → 30,970.000301ΔRGB(10,10,10)antialiasing coverage residue on a shared outline
AntialiasCoverage71,97 → 71,970.000301ΔRGB(-8,-8,-8)antialiasing coverage residue on a shared outline
AntialiasCoverage71,98 → 71,980.000301ΔRGB(-11,-11,-11)antialiasing coverage residue on a shared outline
source · cases/color-opacity/opacity-text-glyph-group.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>opacity text glyph group</title>
6<style>
7  @page { size: 224px 152px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #000000; }
11  .stage {
12    width: 220px;
13    height: 150px;
14    overflow: hidden;
15    background: #000000;
16  }
17  .glyphs {
18    width: 220px;
19    height: 150px;
20    padding-left: 20px;
21    color: #ffffff;
22    opacity: 0.5;
23    font-size: 108px;
24    font-weight: 700;
25    line-height: 150px;
26    letter-spacing: -44px;
27    white-space: nowrap;
28  }
29</style>
30</head>
31<body>
32  <div class="stage"><div class="glyphs">OO</div></div>
33</body>
34</html>
PASS exact match opacity-half · half
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Box with opacity 0.5 composited over a solid background box.
PASS exact match opacity-percentage · percentage-value
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
opacity:50% composites a red box at half alpha over a blue stage; catches opacity parsers that accept only numeric values.
PASS exact match opacity-var-percentage-reparses-after-substitution · var-percentage
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
opacity:var(--half-opacity) reparses the substituted 50% token stream using the opacity grammar, even when the custom property is declared later in the stylesheet.

CSS named color — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-color-named-papayawhip · named-papayawhip
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
All CSS named colors must be available, not just the small legacy subset: A fixed-size color swatch isolates parsing/conversion/compositing of the color syntax. Catches wrong implementation: Parser accepts only the existing subset or drops the declaration, producing default/transparent paint.

background-color — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-background-color-currentcolor · background-currentcolor
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
currentColor must resolve in background-color: A fixed-size color swatch isolates parsing/conversion/compositing of the color syntax. Catches wrong implementation: Parser accepts only the existing subset or drops the declaration, producing default/transparent paint.

color(display-p3 ...) — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-color-function-display-p3 · color-display-p3
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
display-p3 colors must gamut-map to output sRGB: A fixed-size color swatch isolates parsing/conversion/compositing of the color syntax. Catches wrong implementation: Parser accepts only the existing subset or drops the declaration, producing default/transparent paint.

color(srgb ...) — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-color-function-srgb · color-srgb
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
color(srgb ...) must parse as a predefined RGB color: A fixed-size color swatch isolates parsing/conversion/compositing of the color syntax. Catches wrong implementation: Parser accepts only the existing subset or drops the declaration, producing default/transparent paint.

color(srgb-linear ...) — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-color-function-srgb-linear · color-srgb-linear
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
color(srgb-linear ...) must convert linear-light components: A fixed-size color swatch isolates parsing/conversion/compositing of the color syntax. Catches wrong implementation: Parser accepts only the existing subset or drops the declaration, producing default/transparent paint.

color(xyz-d65 ...) — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-color-function-xyz-d65 · color-xyz-d65
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
XYZ predefined colors must convert to output sRGB: A fixed-size color swatch isolates parsing/conversion/compositing of the color syntax. Catches wrong implementation: Parser accepts only the existing subset or drops the declaration, producing default/transparent paint.

color-format — 100.00% verified visual parity PASS 27 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match color-alpha-percentage · alpha-percentage
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Percentage alpha rgb(... / 50%) composited over a solid box; css-color-4 §15.
PASS exact match color-hex-rgb · hex-3-digit
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Box filled with a 3-digit shorthand hex color (#0a6).
PASS exact match color-hex-rgba · hex-4-digit
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Semi-transparent 4-digit hex (#f508) composited over a solid box; css-color-4 §5.2.
PASS exact match color-hex-rrggbb · hex-6-digit
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Box filled with a 6-digit hex color (#c2185b).
PASS exact match color-hex-rrggbbaa · hex-8-digit
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Semi-transparent 8-digit hex (#ff572280) composited over a solid box; css-color-4 §5.2.
PASS exact match color-hsl · hsl-function
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Box filled with an hsl() functional color (hsl(280 60% 45%)); css-color-4 §7.
PASS exact match color-hsl-hue-angle · hsl-hue-angle
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
hsl() hue with angle unit (0.5turn = 180deg); css-color-4 §7.
PASS exact match color-hsl-modern-slash · hsl-modern-slash
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Modern hsl(h s l / a) slash-alpha composited over a solid box; css-color-4 §7.
PASS exact match color-hsl-powerless-hue · hsl-powerless-hue
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
hsl() powerless hue at 0% saturation -> gray; css-color-4 §7.
PASS exact match color-hsla-alpha · hsla-alpha
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Semi-transparent hsla() box composited over a solid background; css-color-4 §7.
PASS exact match color-hwb · hwb-function
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
hwb(194 0% 0%) fully-saturated functional color; css-color-4 §8.
PASS exact match color-hwb-gray · hwb-gray
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
hwb(120 50% 50%) where whiteness+blackness=1 -> gray; css-color-4 §8.
PASS exact match color-named · named-keyword
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Box filled with a named CSS color keyword (navy).
PASS exact match color-named-case-insensitive · named-case-insensitive
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Named color is ASCII case-insensitive (NavY -> navy); css-color-4 §6.1.
PASS exact match color-oklch · oklch
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
CSS Color 4 oklch() background color converts to output sRGB; catches legacy-only parsers that drop the declaration to the fallback color.
PASS exact match color-rebeccapurple · rebeccapurple
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
rebeccapurple named keyword (#663399); css-color-4 §6.1.
PASS exact match color-rgb-clamp · rgb-clamp
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Out-of-range rgb(300 -20 999) clamps to [0,255]; css-color-4 §11.
PASS exact match color-rgb-function · rgb-function
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Box filled with an rgb() functional color.
PASS exact match color-rgb-modern-slash · rgb-modern-slash
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Modern space syntax rgb(r g b / a) composited over a solid box; css-color-4 §11.
PASS exact match color-rgb-none · rgb-none
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Modern rgb() with the none keyword (resolves to 0); css-color-4 §4.3.
PASS exact match color-rgb-percentage · rgb-percentage
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Box filled with rgb() percentage components rgb(80% 20% 10%); css-color-4 §11.
PASS exact match color-rgba-alpha · rgba-alpha
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Semi-transparent rgba() box composited (source-over) over a solid background box; css-color-4 §12.
PASS exact match color-text-glyph · text-glyph-fill
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
The color property fills text glyphs in ParitySans with a solid color.
PASS exact match opacity-clamp · opacity-clamp
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
opacity:1.5 clamps to 1.0 (fully opaque); computed opacity is in [0,1].
PASS exact match opacity-nested-group · opacity-nested
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
opacity on a group flattens then composites the whole at 0.5 (not per child).
PASS exact match opacity-zero · opacity-zero
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
opacity:0 fully transparent but layout space reserved; the next box flows below.
PASS exact match visibility-visible-after-hidden · visibility-visible-after-hidden
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
visibility:visible child paints inside a visibility:hidden parent; CSS2 §11.2.

color-keyword — 100.00% verified visual parity PASS 2 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match color-currentcolor · currentcolor
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
currentColor resolves the color property into a thick solid border; css-color-4 §6.2.
PASS exact match color-transparent-keyword · transparent
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
transparent (= rgb(0 0 0 / 0)) background lets the under box show through a bordered overlay; css-color-4 §6.1.

color-mix() — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-color-mix-red-blue · color-mix
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
color-mix() static colors must resolve before painting: A fixed-size color swatch isolates parsing/conversion/compositing of the color syntax. Catches wrong implementation: Parser accepts only the existing subset or drops the declaration, producing default/transparent paint.

display — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match display-none-removal · none-removal
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
display:none removes the first block entirely so the second block rises to the top of the page.

hsl() with none component — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-color-hsl-none-component · hsl-none
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
hsl() missing components beyond rgb() must parse: A fixed-size color swatch isolates parsing/conversion/compositing of the color syntax. Catches wrong implementation: Parser accepts only the existing subset or drops the declaration, producing default/transparent paint.

hwb() with alpha — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-color-hwb-alpha-over-blue · hwb-alpha
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
hwb() slash alpha needs coverage: A fixed-size color swatch isolates parsing/conversion/compositing of the color syntax. Catches wrong implementation: Parser accepts only the existing subset or drops the declaration, producing default/transparent paint.

lab() — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-color-lab · lab
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
lab() colors must convert to sRGB: A fixed-size color swatch isolates parsing/conversion/compositing of the color syntax. Catches wrong implementation: Parser accepts only the existing subset or drops the declaration, producing default/transparent paint.

lch() — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-color-lch · lch
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
lch() colors must convert to sRGB: A fixed-size color swatch isolates parsing/conversion/compositing of the color syntax. Catches wrong implementation: Parser accepts only the existing subset or drops the declaration, producing default/transparent paint.

oklab() — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-color-oklab · oklab
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
oklab() colors must convert to sRGB: A fixed-size color swatch isolates parsing/conversion/compositing of the color syntax. Catches wrong implementation: Parser accepts only the existing subset or drops the declaration, producing default/transparent paint.

opacity group flattening with alpha child overlap — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-opacity-group-flatten-alpha-overlap · opacity-group-flatten-alpha-overlap
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
opacity on a group with alpha children must flatten before compositing: A parent opacity:.5 contains a semitransparent red child over an opaque blue child; the group is flattened before being composited onto white. Catches wrong implementation: Renderer multiplies each child alpha independently against the page, causing a different overlap color.

opacity stacking context with z-index descendants — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-opacity-stacking-context-z-index · opacity-stacking-context
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
opacity-created stacking contexts must contain positioned descendants: An opacity:.99 parent has a high z-index child and is followed by a sibling; the child cannot escape the parent's stacking context to cover the sibling. Catches wrong implementation: Renderer applies opacity per draw and sorts the descendant globally by z-index.

visibility — 100.00% verified visual parity PASS 2 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match visibility-collapse-row · collapse-table-row
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
visibility:collapse on a table row removes the row and collapses its height.
PASS exact match visibility-hidden · hidden-reserves-space
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
visibility:hidden hides the first block but reserves its space, so the second block stays offset below.