effects — 100.00% verified visual parity

← all categories · PASS 59 · FAIL 0 · REFERENCE-DISPUTED 1 · 60 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.

mix-blend-mode on text — 0.00% verified visual parity PASS 0 · FAIL 0 · REFERENCE-DISPUTED 1all categories ↑

REFERENCE-DISPUTED 3576 px · above-floor 1.27% · raw 1.27% max-page diff r2-mix-blend-mode-text-difference · text-difference · REFERENCE DISPUTEDAntialiasCoverageΔE 24.6
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.271467% exceeds 1.0% PASS ceiling; visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
mix-blend-mode must apply to text content: Large white text with mix-blend-mode:difference sits over a blue block and should invert the backdrop under glyphs. Catches wrong implementation: Blend wrapper only covers boxes, not text glyph drawing.
reference dispute: Both PDFs are rasterized by the same pinned pdftoppm command. Ironpress applies difference to the text: its fully painted glyph colour is Chrome's #EA9A3F over the #1565C0 backdrop (27,453 versus 27,471 pixels). The remaining raw diff is only one-device-pixel glyph-contour coverage. Ironpress embeds ParitySans as CID TrueType while Chrome's PDF uses Type 3, which changes PDF edge coverage under the shared rasterizer without indicating a missing blend-mode operation. Raw evidence remains reported.
regions (4 total; showing 4 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr4357617,32 → 175,801739total 1.3% · largest 0.6%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage95,32 → 175,800.6ΔRGB(-21,-5,12)antialiasing coverage residue on a shared outline
AntialiasCoverage60,32 → 92,800.3ΔRGB(-26,-6,17)antialiasing coverage residue on a shared outline
AntialiasCoverage17,32 → 57,800.2ΔRGB(-49,-12,29)antialiasing coverage residue on a shared outline
AntialiasCoverage69,33 → 91,510.09ΔRGB(-75,-18,46)antialiasing coverage residue on a shared outline
source · cases/effects/r2-mix-blend-mode-text-difference.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mix blend mode text difference</title>
6<style>
7  @page { size: 240px 120px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage { width: 240px; height: 120px; padding: 18px; background: #1565c0; }
12  .text { color: #ffffff; font-size: 62px; font-weight: 700; line-height: 80px; mix-blend-mode: difference; }
13</style>
14</head>
15<body>
16  <div class="stage"><div class="text">TEXT</div></div>
17</body>
18</html>

background-blend-mode — 100.00% verified visual parity PASS 15 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.29% · raw 0.29% (625 px) background-blend-mode-overlay · overlayPASS via CSS-scale observation: coherent sub-authored colour frontierColorValueΔE 8.5
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw fill recolour ΔRGB(+0,+0,+25) (ΔE 8.5)
background-blend-mode: overlay blends black/white gradient halves with a purple background color; catches normal or multiply-only background blending.
regions (1 total; showing 1 representative)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr16250,110 → 200,110625total 0.3% · largest 0.3%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue0,110 → 200,1100.3ΔRGB(0,0,25)fill recolour ΔRGB(+0,+0,+25) (ΔE 0)
source · cases/effects/background-blend-mode-overlay.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>background-blend-mode overlay</title>
6<style>
7  @page { size: 200px 112px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .box {
12    width: 200px;
13    height: 110px;
14    background-color: #7b1fa2;
15    background-image: linear-gradient(to right, #000000 0 50%, #ffffff 50% 100%);
16    background-blend-mode: overlay;
17  }
18</style>
19</head>
20<body>
21  <div class="box"></div>
22</body>
23</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.07% · raw 0.07% (1251 px) background-blend-mode-multiply · multiplyPASS via CSS-scale observation: coherent sub-authored colour frontierColorValueΔE 6.5
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw fill recolour ΔRGB(-5,-1,+15) (ΔE 6.5)
A linear-gradient background blended against a solid background-color via background-blend-mode multiply (aspirational; not implemented).
regions (1 total; showing 1 representative)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr1125140,40 → 280,2001251total 0.07% · largest 0.07%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue40,40 → 280,2000.07ΔRGB(-5,-1,15)fill recolour ΔRGB(-5,-1,+15) (ΔE 0)
source · cases/effects/background-blend-mode-multiply.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>background-blend-mode multiply</title>
6<style>
7  @page { size: 816px 240px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage { background: #eceff1; padding: 40px; }
12  .box {
13    width: 240px;
14    height: 160px;
15    /* a gradient blended against a solid background-color via multiply */
16    background-color: #ffb300;
17    background-image: linear-gradient(to right, #1e88e5, #d81b60);
18    background-blend-mode: multiply;
19  }
20</style>
21</head>
22<body>
23  <div class="stage"><div class="box"></div></div>
24</body>
25</html>
PASS exact match r2-background-blend-mode-color · color
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Non-separable background-blend-mode:color is required: A red/blue gradient background blends with a gray/yellow base using color. Catches wrong implementation: Parser falls back to normal because non-separable blend keywords are not recognized.
PASS exact match r2-background-blend-mode-color-burn · color-burn
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
background-blend-mode:color-burn needs direct coverage: A two-layer solid linear-gradient background uses background-blend-mode:color-burn over a yellow background color. Catches wrong implementation: Renderer supports only multiply or treats all other background blend values as normal.
PASS exact match r2-background-blend-mode-color-dodge · color-dodge
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
background-blend-mode:color-dodge needs direct coverage: A two-layer solid linear-gradient background uses background-blend-mode:color-dodge over a yellow background color. Catches wrong implementation: Renderer supports only multiply or treats all other background blend values as normal.
PASS exact match r2-background-blend-mode-darken · darken
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
background-blend-mode:darken needs direct coverage: A two-layer solid linear-gradient background uses background-blend-mode:darken over a yellow background color. Catches wrong implementation: Renderer supports only multiply or treats all other background blend values as normal.
PASS exact match r2-background-blend-mode-difference · difference
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
background-blend-mode:difference needs direct coverage: A two-layer solid linear-gradient background uses background-blend-mode:difference over a yellow background color. Catches wrong implementation: Renderer supports only multiply or treats all other background blend values as normal.
PASS exact match r2-background-blend-mode-exclusion · exclusion
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
background-blend-mode:exclusion needs direct coverage: A two-layer solid linear-gradient background uses background-blend-mode:exclusion over a yellow background color. Catches wrong implementation: Renderer supports only multiply or treats all other background blend values as normal.
PASS exact match r2-background-blend-mode-hard-light · hard-light
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
background-blend-mode:hard-light needs direct coverage: A two-layer solid linear-gradient background uses background-blend-mode:hard-light over a yellow background color. Catches wrong implementation: Renderer supports only multiply or treats all other background blend values as normal.
PASS exact match r2-background-blend-mode-hue · hue
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Non-separable background-blend-mode:hue is required: A red/blue gradient background blends with a gray/yellow base using hue. Catches wrong implementation: Parser falls back to normal because non-separable blend keywords are not recognized.
PASS exact match r2-background-blend-mode-lighten · lighten
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
background-blend-mode:lighten needs direct coverage: A two-layer solid linear-gradient background uses background-blend-mode:lighten over a yellow background color. Catches wrong implementation: Renderer supports only multiply or treats all other background blend values as normal.
PASS exact match r2-background-blend-mode-luminosity · luminosity
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Non-separable background-blend-mode:luminosity is required: A red/blue gradient background blends with a gray/yellow base using luminosity. Catches wrong implementation: Parser falls back to normal because non-separable blend keywords are not recognized.
PASS exact match r2-background-blend-mode-saturation · saturation
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Non-separable background-blend-mode:saturation is required: A red/blue gradient background blends with a gray/yellow base using saturation. Catches wrong implementation: Parser falls back to normal because non-separable blend keywords are not recognized.
PASS exact match r2-background-blend-mode-screen · screen
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
background-blend-mode:screen needs direct coverage: A two-layer solid linear-gradient background uses background-blend-mode:screen over a yellow background color. Catches wrong implementation: Renderer supports only multiply or treats all other background blend values as normal.
PASS exact match r2-background-blend-mode-soft-light · soft-light
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
background-blend-mode:soft-light needs direct coverage: A two-layer solid linear-gradient background uses background-blend-mode:soft-light over a yellow background color. Catches wrong implementation: Renderer supports only multiply or treats all other background blend values as normal.

background-blend-mode comma-separated list — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.85% · raw 0.85% (2684 px) r2-background-blend-mode-list-matching · list-matchingPASS via CSS-scale observation: coherent sub-authored colour frontierColorValueΔE 3.7
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw fill recolour ΔRGB(-1,-6,-24) (ΔE 3.7)
background-blend-mode lists must match background layers: Two background image layers use different blend modes: top red stripe multiplies, lower blue stripe screens with the background color. Catches wrong implementation: Computed style keeps one blend mode and applies it to every layer or only the first layer.
regions (1 total; showing 1 representative)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr126840,0 → 220,1402684total 0.9% · largest 0.9% · max ΔE 3.7

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue0,0 → 220,1400.9ΔE 3.7 ΔRGB(-1,-6,-24)fill recolour ΔRGB(-1,-6,-24) (ΔE 3.7)
source · cases/effects/r2-background-blend-mode-list-matching.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 background blend mode list matching</title>
6<style>
7  @page { size: 224px 144px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .box { width: 220px; height: 140px; background-color: #fdd835; background-image: linear-gradient(to right, transparent 0 50%, #d32f2f 50% 100%), linear-gradient(to bottom, #1565c0 0 50%, transparent 50% 100%); background-blend-mode: multiply, screen; }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>

box-shadow — 100.00% verified visual parity PASS 13 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.07% · raw 1.29% (22132 px) box-shadow-blur · blurPASS via raw same-coordinate visibility policyColorValueΔE 0.4
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
Offset box-shadow with a soft blur radius on a non-white stage.
regions (72 total; showing 64 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr722213244,44 → 260,19016389total 1.3% · largest 1.0% · max ΔE 0.6

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue83,68 → 260,1831.0ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue68,167 → 83,1850.06ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
AntialiasCoverage255,76 → 255,1570.05ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage78,50 → 224,500.03ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
ColorValue52,160 → 60,1650.02ΔE 0.4 ΔRGB(2,1,2)fill recolour ΔRGB(+2,+1,+2) (ΔE 0.4)
ColorValue239,50 → 242,570.01ΔE 0.4 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.4)
ColorValue44,65 → 50,700.009326ΔE 0.4 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.4)
ColorValue234,180 → 236,1850.007712ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue68,165 → 73,1670.007413ΔE 0.5 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.5)
ColorValue230,65 → 231,720.007174ΔE 0.5 ΔRGB(2,1,1)fill recolour ΔRGB(+2,+1,+1) (ΔE 0.5)
ColorValue62,46 → 68,500.006217ΔE 0.5 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.5)
ColorValue229,50 → 232,540.006098ΔE 0.4 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.4)
ColorValue230,60 → 234,620.006098ΔE 0.4 ΔRGB(-1,0,0)fill recolour ΔRGB(-1,+0,+0) (ΔE 0.4)
ColorValue233,52 → 236,540.005918ΔE 0.4 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.4)
ColorValue246,65 → 249,680.005858ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue78,165 → 80,1680.005739ΔE 0.5 ΔRGB(-1,-1,-2)fill recolour ΔRGB(-1,-1,-2) (ΔE 0.5)
ColorValue75,160 → 79,1620.005440ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue49,155 → 50,1620.005261ΔE 0.4fill colour differs (ΔE 0.4)
ColorValue234,44 → 236,470.004782ΔE 0.4 ΔRGB(2,1,1)fill recolour ΔRGB(+2,+1,+1) (ΔE 0.4)
ColorValue47,70 → 50,750.004543ΔE 0.4 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.4)
ColorValue65,180 → 68,1830.004185ΔE 0.5 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.5)
ColorValue236,57 → 239,600.003945ΔE 0.5 ΔRGB(2,1,2)fill recolour ΔRGB(+2,+1,+2) (ΔE 0.5)
ColorValue239,175 → 242,1780.003945ΔE 0.4 ΔRGB(-1,-1,-2)fill recolour ΔRGB(-1,-1,-2) (ΔE 0.4)
ColorValue239,180 → 242,1830.003945ΔE 0.5 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.5)
ColorValue47,157 → 48,1620.003826ΔE 0.2 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.2)
ColorValue60,170 → 62,1720.003766ΔE 0.5 ΔRGB(2,1,2)fill recolour ΔRGB(+2,+1,+2) (ΔE 0.5)
ColorValue57,172 → 60,1750.003407ΔE 0.4fill colour differs (ΔE 0.4)
ColorValue231,75 → 234,780.003348ΔE 0.5 ΔRGB(-2,-1,-2)fill recolour ΔRGB(-2,-1,-2) (ΔE 0.5)
ColorValue239,60 → 242,620.003288ΔE 0.4fill colour differs (ΔE 0.4)
AntialiasCoverage62,160 → 65,1620.003228ΔE 0.4antialiasing coverage residue on a shared outline
ColorValue244,55 → 246,570.003168ΔE 0.5 ΔRGB(2,1,2)fill recolour ΔRGB(+2,+1,+2) (ΔE 0.5)
ColorValue55,167 → 57,1700.003049ΔE 0.6 ΔRGB(2,1,2)fill recolour ΔRGB(+2,+1,+2) (ΔE 0.6)
ColorValue73,48 → 75,500.002212ΔE 0.4 ΔRGB(2,1,1)fill recolour ΔRGB(+2,+1,+1) (ΔE 0.4)
ColorValue245,50 → 247,520.002212ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue75,189 → 78,1900.002152ΔE 0.2 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.2)
ColorValue224,189 → 226,1900.002152ΔE 0.2 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.2)
ColorValue256,57 → 257,600.002092ΔE 0.4 ΔRGB(2,2,2)fill recolour ΔRGB(+2,+2,+2) (ΔE 0.4)
ColorValue50,178 → 51,1800.002033ΔE 0.6 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.6)
ColorValue60,187 → 62,1880.002033ΔE 0.2 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.2)
ColorValue62,44 → 65,450.001913ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue239,44 → 242,450.001913ΔE 0.4 ΔRGB(2,2,2)fill recolour ΔRGB(+2,+2,+2) (ΔE 0.4)
ColorValue234,65 → 235,680.001913ΔE 0.3 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.3)
ColorValue44,170 → 45,1720.001913ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue73,47 → 75,480.001853ΔE 0.2 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.2)
ColorValue259,68 → 260,700.001793ΔE 0.2 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.2)
AntialiasCoverage236,70 → 236,730.001734ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
ColorValue236,65 → 236,670.001674ΔE 0.3 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.3)
ColorValue79,160 → 80,1620.001614ΔE 0.3 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.3)
AntialiasCoverage239,46 → 242,470.001554ΔE 0.6 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage257,68 → 258,700.001554ΔE 0.6 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage46,170 → 47,1720.001554ΔE 0.6 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage244,65 → 245,670.001495ΔE 0.3 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage234,70 → 235,720.001495ΔE 0.4 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage254,57 → 255,600.001375ΔE 0.6 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage51,160 → 52,1620.001375ΔE 0.5 ΔRGB(1,1,2)antialiasing coverage residue on a shared outline
AntialiasCoverage60,185 → 62,1860.001375ΔE 0.6 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage75,188 → 77,1880.001315ΔE 0.6 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage224,188 → 226,1880.001315ΔE 0.6 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
ColorValue230,78 → 231,790.001255ΔE 0.3 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.3)
AntialiasCoverage244,50 → 245,520.001136ΔE 0.4 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
ColorValue52,178 → 52,1800.001136ΔE 0.4 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.4)
ColorValue230,79 → 231,800.001076ΔE 0.3 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.3)
AntialiasCoverage50,57 → 50,610.000717ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage50,62 → 50,650.000598ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
source · cases/effects/box-shadow-blur.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>box-shadow blur</title>
6<style>
7  @page { size: 816px 216px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage { background: #e8f5e9; padding: 50px; }
12  .box {
13    width: 180px;
14    height: 110px;
15    background-color: #2e7d32;
16    /* offset plus a soft blur radius */
17    box-shadow: 12px 12px 16px 0 #1b5e20;
18  }
19</style>
20</head>
21<body>
22  <div class="stage"><div class="box"></div></div>
23</body>
24</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.07% · raw 0.07% (1252 px) box-shadow-inset-spread · inset-spreadPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 54.9
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
Inset box-shadow with spread: a solid inner ring clipped to the padding box.
regions (2 total; showing 2 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr2125240,40 → 240,170626total 0.07% · largest 0.04%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage40,40 → 240,400.04ΔRGB(-174,-150,-126)antialiasing coverage residue on a shared outline
AntialiasCoverage40,170 → 240,1700.04ΔRGB(-174,-150,-126)antialiasing coverage residue on a shared outline
source · cases/effects/box-shadow-inset-spread.html
1<!DOCTYPE html>
2<html lang="en"><head><meta charset="utf-8"><title>box-shadow inset spread</title><style>
3  @page { size: 816px 216px; margin: 0; }
4  html { font-family: ParitySans; line-height: 1.5; }
5  * { margin: 0; box-sizing: border-box; }
6  html, body { background: #ffffff; }
7  .stage { background: #fff3e0; padding: 40px; }
8  /* inset, zero blur, 16px spread -> solid inner ring clipped to padding box */
9  .box { width: 200px; height: 130px; background-color: #90caf9; box-shadow: inset 0 0 0 16px #37474f; }
10</style></head><body><div class="stage"><div class="box"></div></div></body></html>
PASS exact match box-shadow-border-radius · border-radius
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Box-shadow on a border-radius element must adopt the same rounded corners.
PASS exact match box-shadow-color · colored
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Hard offset box-shadow in a saturated color distinct from the box fill.
PASS exact match box-shadow-currentcolor · currentcolor
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Box-shadow with the color omitted, so it paints in the element's currentColor.
PASS exact match box-shadow-inset · inset
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Inset hard box-shadow drawing an inner band on two sides of the box.
PASS exact match box-shadow-multiple · multiple
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Two stacked hard box-shadows in different directions and colors.
PASS exact match box-shadow-negative-offset · negative-offset
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Box-shadow with negative offsets cast to the upper-left of the element.
PASS exact match box-shadow-negative-spread · negative-spread
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Hard-edged offset box-shadow with negative spread (-8px) shrinking the shadow smaller than the box.
PASS exact match box-shadow-offset · hard-offset
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Box with a hard-edged (zero-blur) offset box-shadow cast onto a non-white stage.
PASS exact match box-shadow-spread · spread
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Zero-offset zero-blur positive-spread box-shadow forming a hard symmetric halo.
PASS exact match box-shadow-spread-outline · spread-outline
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Zero-offset zero-blur box-shadow with positive spread: a solid even ring of equal width on all four sides.
PASS exact match effects-invalid-shadow-list-is-ignored · invalid-list-item-invalidates-declaration
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
One invalid shadow containing a non-zero unitless length invalidates the entire comma-separated box-shadow declaration, including its otherwise-valid first item. Catches parsers that accept bare lengths or silently filter invalid list entries.

box-shadow inset blur with border-radius — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.66% · raw 26.14% (82329 px) r2-box-shadow-inset-blur-radius · inset-blur-radiusPASS via raw same-coordinate visibility policyColorValueΔE 0.3
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: fill colour differs (ΔE 0.3)
inset box-shadow blur must fade inward inside rounded corners: A deterministic solid-color box isolates the shadow edge/order behavior. Catches wrong implementation: Simplified shadow renderer ignores blur/spread/order/inset clipping details.
regions (528 total; showing 64 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr528823290,0 → 164,8474779total 61.0% · largest 55.4% · max ΔE 0.7

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue0,0 → 164,8455.4ΔE 0.4fill colour differs (ΔE 0.4)
ColorValue37,4 → 126,51.5ΔE 0.4 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.4)
AntialiasCoverage42,34 → 124,350.4ΔE 0.3 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
ColorValue4,4 → 16,160.4ΔE 0.4 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.4)
AntialiasCoverage31,81 → 133,810.2ΔE 0.4 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage36,8 → 128,80.2ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage39,29 → 126,290.2ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
ColorValue4,37 → 5,470.2ΔE 0.4 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.4)
ColorValue154,7 → 159,160.2ΔE 0.4 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.4)
ColorValue126,39 → 128,460.1ΔE 0.3 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.3)
AntialiasCoverage13,5 → 17,110.07ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage6,13 → 11,170.06ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
ColorValue8,77 → 14,800.06ΔE 0.4fill colour differs (ΔE 0.4)
AntialiasCoverage160,50 → 162,600.06ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
ColorValue144,81 → 152,820.06ΔE 0.2 ΔRGB(0,-1,0)fill recolour ΔRGB(+0,-1,+0) (ΔE 0.2)
AntialiasCoverage24,39 → 24,460.05ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage137,37 → 137,480.05ΔE 0.3 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage145,13 → 151,170.05ΔE 0.4antialiasing coverage residue on a shared outline
ColorValue161,62 → 164,670.05ΔE 0.1 ΔRGB(-1,0,0)fill recolour ΔRGB(-1,+0,+0) (ΔE 0.1)
ColorValue158,69 → 160,760.05ΔE 0.09fill colour differs (ΔE 0.09)
AntialiasCoverage6,70 → 9,760.05ΔE 0.4 ΔRGB(1,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage14,75 → 17,790.05ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
ColorValue136,77 → 139,800.05ΔE 0.10 ΔRGB(-1,0,0)fill recolour ΔRGB(-1,+0,+0) (ΔE 0.10)
AntialiasCoverage134,80 → 144,820.04ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
ColorValue11,75 → 13,770.04ΔE 0.4 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.4)
ColorValue151,9 → 154,110.04ΔE 0.4fill colour differs (ΔE 0.4)
AntialiasCoverage142,20 → 146,230.04ΔE 0.4 ΔRGB(1,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage160,57 → 162,640.04ΔE 0.10 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage27,39 → 27,460.04ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage134,25 → 139,280.03ΔE 0.3antialiasing coverage residue on a shared outline
ColorValue163,24 → 164,260.03ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue155,67 → 157,700.03ΔE 0.4 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.4)
AntialiasCoverage148,12 → 152,140.03ΔE 0.4 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage157,26 → 159,310.03ΔE 0.4 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
ColorValue163,60 → 164,620.03ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
AntialiasCoverage129,36 → 129,470.02ΔE 0.3 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage139,80 → 144,810.02ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
ColorValue152,18 → 154,200.02ΔE 0.3 ΔRGB(1,0,0)fill recolour ΔRGB(+1,+0,+0) (ΔE 0.3)
AntialiasCoverage154,13 → 156,160.02ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage129,14 → 131,150.02ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage9,66 → 11,680.01ΔE 0.4 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage24,9 → 26,100.01ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage26,9 → 28,100.01ΔE 0.4 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage150,11 → 151,120.01ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage147,13 → 149,140.01ΔE 0.4antialiasing coverage residue on a shared outline
AntialiasCoverage152,14 → 154,170.01ΔE 0.4 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage151,13 → 152,160.01ΔE 0.4antialiasing coverage residue on a shared outline
AntialiasCoverage31,39 → 31,440.01ΔE 0.3 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
ColorValue11,6 → 13,60.01ΔE 0.09 ΔRGB(-1,0,0)fill recolour ΔRGB(-1,+0,+0) (ΔE 0.09)
AntialiasCoverage32,6 → 36,60.01ΔE 0.4 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage142,13 → 145,140.01ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage11,12 → 12,140.01ΔE 0.09 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage27,47 → 28,490.01ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage12,11 → 14,120.009635ΔE 0.09 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage14,12 → 15,130.009635ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage12,14 → 13,150.009635ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage29,58 → 30,590.009635ΔE 0.3 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage152,68 → 154,690.009635ΔE 0.4 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage150,70 → 151,720.009635ΔE 0.4 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage147,80 → 149,800.009635ΔE 0.4 ΔRGB(2,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage156,16 → 159,170.008894ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage151,17 → 152,180.008894ΔE 0.4antialiasing coverage residue on a shared outline
AntialiasCoverage9,24 → 10,260.008894ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage9,27 → 10,280.008894ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
source · cases/effects/r2-box-shadow-inset-blur-radius.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 box shadow inset blur radius</title>
6<style>
7  @page { size: 224px 144px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage { width: 220px; height: 140px; padding: 28px; background: #ffffff; }
12  .box { width: 164px; height: 84px; border-radius: 24px; background: #90caf9; box-shadow: inset 0 0 18px 16px rgba(1,87,155,0.85); }
13</style>
14</head>
15<body>
16  <div class="stage"><div class="box"></div></div>
17</body>
18</html>

box-shadow list with inset and outset layers — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.20% · raw 0.20% (628 px) r2-box-shadow-inset-outset-list · inset-outset-listPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 31.7
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
mixed inset and outset shadows must paint on opposite sides of the background: A deterministic solid-color box isolates the shadow edge/order behavior. Catches wrong implementation: Simplified shadow renderer ignores blur/spread/order/inset clipping details.
regions (2 total; showing 2 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr26280,0 → 100,70314total 0.5% · largest 0.2%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage0,0 → 100,00.2ΔRGB(-28,-134,-134)antialiasing coverage residue on a shared outline
AntialiasCoverage0,70 → 100,700.2ΔRGB(-28,-134,-134)antialiasing coverage residue on a shared outline
source · cases/effects/r2-box-shadow-inset-outset-list.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 box shadow inset outset list</title>
6<style>
7  @page { size: 240px 136px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage { width: 240px; height: 130px; padding: 30px; background: #ffffff; }
12  .box { width: 100px; height: 70px; background: #ffe082; box-shadow: 86px 0 0 0 #1565c0, inset 0 0 0 16px #d32f2f; }
13</style>
14</head>
15<body>
16  <div class="stage"><div class="box"></div></div>
17</body>
18</html>

box-shadow multiple shadow paint order — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-box-shadow-multiple-order-overlap · multiple-order-overlap
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
multiple box-shadows must paint first shadow on top: A deterministic solid-color box isolates the shadow edge/order behavior. Catches wrong implementation: Simplified shadow renderer ignores blur/spread/order/inset clipping details.

box-shadow positive spread with blur and border-radius — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.10% · raw 3.29% (14934 px) r2-box-shadow-spread-blur-radius · spread-blur-radiusPASS via raw same-coordinate visibility policyColorValueΔE 0.4
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
box-shadow spread plus blur and radius must grow the rounded shadow shape: A deterministic solid-color box isolates the shadow edge/order behavior. Catches wrong implementation: Simplified shadow renderer ignores blur/spread/order/inset clipping details.
regions (214 total; showing 64 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr2141493412,12 → 214,155667total 3.5% · largest 0.2% · max ΔE 0.7

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue152,127 → 163,1420.2ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue58,131 → 72,1400.1ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue147,24 → 157,370.1ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue168,27 → 178,320.09ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue191,104 → 198,1110.07ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue194,114 → 198,1220.06ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue180,76 → 183,880.06ΔE 0.4 ΔRGB(-1,-1,0)fill recolour ΔRGB(-1,-1,+0) (ΔE 0.4)
ColorValue40,37 → 46,450.05ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue160,29 → 165,370.05ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue50,47 → 58,550.05ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue35,52 → 40,600.05ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue28,68 → 35,760.05ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue163,137 → 168,1420.04ΔE 0.5 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.5)
ColorValue190,70 → 196,760.04ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue42,119 → 45,1270.04ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue163,19 → 168,240.04ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue196,99 → 203,1040.04ΔE 0.4 ΔRGB(-1,0,0)fill recolour ΔRGB(-1,+0,+0) (ΔE 0.4)
ColorValue68,29 → 72,370.04ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue201,63 → 207,680.04ΔE 0.4 ΔRGB(-1,-1,0)fill recolour ΔRGB(-1,-1,+0) (ΔE 0.4)
ColorValue22,68 → 28,730.04ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue60,140 → 65,1450.04ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue173,37 → 179,400.03ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue81,29 → 86,340.03ΔE 0.5 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.5)
ColorValue58,37 → 60,420.03ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue145,134 → 147,1400.03ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue76,29 → 78,340.03ΔE 0.5fill colour differs (ΔE 0.5)
ColorValue76,135 → 81,1400.03ΔE 0.4 ΔRGB(-1,0,0)fill recolour ΔRGB(-1,+0,+0) (ΔE 0.4)
ColorValue178,60 → 183,630.03ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue140,29 → 145,340.03ΔE 0.5 ΔRGB(-1,0,-1)fill recolour ΔRGB(-1,+0,-1) (ΔE 0.5)
ColorValue50,37 → 55,410.03ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue194,53 → 198,580.03ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue196,50 → 201,520.03ΔE 0.4 ΔRGB(1,0,0)fill recolour ΔRGB(+1,+0,+0) (ΔE 0.4)
ColorValue29,60 → 34,630.03ΔE 0.4fill colour differs (ΔE 0.4)
ColorValue14,63 → 18,680.03ΔE 0.5 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.5)
ColorValue137,135 → 142,1380.02ΔE 0.5 ΔRGB(1,1,0)fill recolour ΔRGB(+1,+1,+0) (ΔE 0.5)
ColorValue55,19 → 59,220.02ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue178,35 → 180,400.02ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue46,37 → 50,400.02ΔE 0.4 ΔRGB(1,0,1)fill recolour ΔRGB(+1,+0,+1) (ΔE 0.4)
ColorValue164,47 → 168,510.02ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue63,27 → 65,290.02ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue206,96 → 209,990.02ΔE 0.5 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.5)
ColorValue58,29 → 60,320.02ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue63,37 → 65,400.02ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue14,47 → 17,500.02ΔE 0.4 ΔRGB(-2,-2,-2)fill recolour ΔRGB(-2,-2,-2) (ΔE 0.4)
ColorValue178,24 → 180,270.02ΔE 0.5 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.5)
AntialiasCoverage72,29 → 73,370.02ΔE 0.4 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
ColorValue58,45 → 60,470.02ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue183,99 → 186,1010.02ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue58,129 → 60,1320.02ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue165,132 → 168,1340.02ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue63,32 → 65,350.02ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue50,124 → 52,1270.02ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue88,32 → 91,350.02ΔE 0.4 ΔRGB(-1,0,0)fill recolour ΔRGB(-1,+0,+0) (ΔE 0.4)
ColorValue134,32 → 137,350.02ΔE 0.4 ΔRGB(-1,0,0)fill recolour ΔRGB(-1,+0,+0) (ΔE 0.4)
ColorValue183,40 → 186,420.02ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue45,60 → 47,630.02ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue19,109 → 22,1110.02ΔE 0.5 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.5)
ColorValue198,37 → 201,400.02ΔE 0.5 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.5)
ColorValue168,152 → 170,1550.02ΔE 0.5 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.5)
ColorValue65,14 → 68,170.02ΔE 0.5 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.5)
ColorValue58,24 → 60,270.02ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue71,24 → 73,270.02ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue22,88 → 24,910.02ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
ColorValue196,93 → 198,960.02ΔE 0.4 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 0.4)
source · cases/effects/r2-box-shadow-spread-blur-radius.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 box shadow spread blur radius</title>
6<style>
7  @page { size: 264px 176px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage { width: 260px; height: 170px; padding: 48px; background: #eef7f2; }
12  .box { width: 130px; height: 74px; border-radius: 24px; background: #1565c0; box-shadow: 0 0 18px 16px #00695c; }
13</style>
14</head>
15<body>
16  <div class="stage"><div class="box"></div></div>
17</body>
18</html>

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

PASS visually equivalent · no rejecting defect · thresholded evidence 0.35% · raw 0.35% (1219 px) r2-isolation-isolate-descendant-blend · isolate-descendant-blendPASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 0.4%
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw candidate lacks paint present in reference (0.4%)
isolation:isolate must constrain descendant blending: Two identical groups contain a red multiply child over blue page stripes; the isolated group blends only within its own white group backdrop. Catches wrong implementation: Renderer ignores isolation so both red children multiply against the external blue backdrop.
regions (1 total; showing 1 representative)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
Missing112190,0 → 260,1301219total 0.4% · largest 0.4%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing0,0 → 260,1300.4candidate lacks paint present in reference (0.4%)
source · cases/effects/r2-isolation-isolate-descendant-blend.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 isolation isolate descendant blend</title>
6<style>
7  @page { size: 264px 136px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage { display: flex; gap: 32px; width: 260px; height: 130px; padding: 25px; background: #1565c0; }
12  .group { width: 85px; height: 80px; position: relative; }
13  .iso { isolation: isolate; }
14  .child { width: 85px; height: 80px; background: #d32f2f; mix-blend-mode: multiply; }
15</style>
16</head>
17<body>
18  <div class="stage"><div class="group iso"><div class="child"></div></div><div class="group"><div class="child"></div></div></div>
19</body>
20</html>

mix-blend-mode — 100.00% verified visual parity PASS 15 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.33% · raw 0.33% (4691 px) mix-blend-mode-screen · screenPASS via CSS-scale observation: sub-CSS shared-outline coverageAntialiasCoveragemissing 0.4%ΔE 17.1
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
Two overlapping solid boxes on a dark stage whose overlap should lighten via mix-blend-mode screen (aspirational; not implemented).
regions (6 total; showing 6 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr320040,0 → 210,2202002total 0.3% · largest 0.3%
Missing326870,0 → 320,2201000total 0.4% · largest 0.1%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage30,30 → 210,1700.3ΔRGB(-20,2,3)antialiasing coverage residue on a shared outline
Missing0,0 → 320,00.1candidate lacks paint present in reference (0.1%)
Missing0,220 → 320,2200.1candidate lacks paint present in reference (0.1%)
Missing0,0 → 0,2200.10candidate lacks paint present in reference (0.10%)
AntialiasCoverage0,0 → 0,00.000145ΔRGB(4,4,4)antialiasing coverage residue on a shared outline
AntialiasCoverage0,220 → 0,2200.000145ΔRGB(10,10,9)antialiasing coverage residue on a shared outline
source · cases/effects/mix-blend-mode-screen.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>mix-blend-mode screen</title>
6<style>
7  @page { size: 480px 304px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage { position: relative; width: 320px; height: 220px; background: #263238; margin: 40px; }
12  .base {
13    position: absolute; top: 30px; left: 30px;
14    width: 180px; height: 140px;
15    background-color: #c62828;
16  }
17  .blend {
18    position: absolute; top: 70px; left: 110px;
19    width: 180px; height: 140px;
20    background-color: #1565c0;
21    /* overlap region should lighten via screen */
22    mix-blend-mode: screen;
23  }
24</style>
25</head>
26<body>
27  <div class="stage"><div class="base"></div><div class="blend"></div></div>
28</body>
29</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.31% · raw 0.31% (4691 px) mix-blend-mode-multiply · multiplyPASS via CSS-scale observation: one-sided sub-CSS outline coverageAntialiasCoveragemissing 0.1%ΔE 8.1
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
Two overlapping solid boxes whose overlap should darken via mix-blend-mode multiply (aspirational; not implemented).
regions (3 total; showing 3 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr236910,0 → 320,2202002total 0.5% · largest 0.3%
Missing110000,220 → 320,2201000total 0.1% · largest 0.1%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage30,30 → 210,1700.3ΔRGB(27,9,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage0,0 → 320,2200.2ΔRGB(0,1,4)antialiasing coverage residue on a shared outline
Missing0,220 → 320,2200.1candidate lacks paint present in reference (0.1%)
source · cases/effects/mix-blend-mode-multiply.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>mix-blend-mode multiply</title>
6<style>
7  @page { size: 480px 320px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage { position: relative; width: 320px; height: 220px; background: #fff8e1; margin: 40px; }
12  .base {
13    position: absolute; top: 30px; left: 30px;
14    width: 180px; height: 140px;
15    background-color: #29b6f6;
16  }
17  .blend {
18    position: absolute; top: 70px; left: 110px;
19    width: 180px; height: 140px;
20    background-color: #ffca28;
21    /* overlap region should darken via multiply */
22    mix-blend-mode: multiply;
23  }
24</style>
25</head>
26<body>
27  <div class="stage"><div class="base"></div><div class="blend"></div></div>
28</body>
29</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.10% · raw 0.10% (344 px) r2-mix-blend-mode-color · colorPASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 0.4%
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw candidate lacks paint present in reference (0.4%)
Non-separable mix-blend-mode:color is required: A red square overlaps a blue/gray backdrop using non-separable blend mode color. Catches wrong implementation: Parser treats non-separable blend keywords as normal.
regions (1 total; showing 1 representative)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
Missing13440,90 → 110,90344total 0.4% · largest 0.4%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing0,90 → 110,900.4candidate lacks paint present in reference (0.4%)
source · cases/effects/r2-mix-blend-mode-color.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mix blend color</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: #ffffff; }
11  .stage { position: relative; width: 220px; height: 150px; background: #ffffff; }
12  .base { position: absolute; top: 25px; left: 25px; width: 110px; height: 90px; background: #1565c0; }
13  .blend { position: absolute; top: 45px; left: 85px; width: 110px; height: 90px; background: #d32f2f; mix-blend-mode: color; }
14</style>
15</head>
16<body>
17  <div class="stage"><div class="base"></div><div class="blend"></div></div>
18</body>
19</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.10% · raw 0.10% (344 px) r2-mix-blend-mode-color-burn · color-burnPASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 0.4%
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw candidate lacks paint present in reference (0.4%)
mix-blend-mode:color-burn needs direct parity coverage: A foreground red square overlaps a blue square with mix-blend-mode:color-burn. Catches wrong implementation: Renderer maps only multiply/screen or falls back to normal blend for this mode.
regions (1 total; showing 1 representative)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
Missing13440,90 → 110,90344total 0.4% · largest 0.4%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing0,90 → 110,900.4candidate lacks paint present in reference (0.4%)
source · cases/effects/r2-mix-blend-mode-color-burn.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mix blend color-burn</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: #ffffff; }
11  .stage { position: relative; width: 220px; height: 150px; background: #ffffff; }
12  .base { position: absolute; top: 25px; left: 25px; width: 110px; height: 90px; background: #1565c0; }
13  .blend { position: absolute; top: 45px; left: 85px; width: 110px; height: 90px; background: #d32f2f; mix-blend-mode: color-burn; }
14</style>
15</head>
16<body>
17  <div class="stage"><div class="base"></div><div class="blend"></div></div>
18</body>
19</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.10% · raw 0.10% (344 px) r2-mix-blend-mode-color-dodge · color-dodgePASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 0.4%
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw candidate lacks paint present in reference (0.4%)
mix-blend-mode:color-dodge needs direct parity coverage: A foreground red square overlaps a blue square with mix-blend-mode:color-dodge. Catches wrong implementation: Renderer maps only multiply/screen or falls back to normal blend for this mode.
regions (1 total; showing 1 representative)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
Missing13440,90 → 110,90344total 0.4% · largest 0.4%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing0,90 → 110,900.4candidate lacks paint present in reference (0.4%)
source · cases/effects/r2-mix-blend-mode-color-dodge.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mix blend color-dodge</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: #ffffff; }
11  .stage { position: relative; width: 220px; height: 150px; background: #ffffff; }
12  .base { position: absolute; top: 25px; left: 25px; width: 110px; height: 90px; background: #1565c0; }
13  .blend { position: absolute; top: 45px; left: 85px; width: 110px; height: 90px; background: #d32f2f; mix-blend-mode: color-dodge; }
14</style>
15</head>
16<body>
17  <div class="stage"><div class="base"></div><div class="blend"></div></div>
18</body>
19</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.10% · raw 0.10% (344 px) r2-mix-blend-mode-darken · darkenPASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 0.1%ΔE 8.1
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw candidate lacks paint present in reference (0.1%)
mix-blend-mode:darken needs direct parity coverage: A foreground red square overlaps a blue square with mix-blend-mode:darken. Catches wrong implementation: Renderer maps only multiply/screen or falls back to normal blend for this mode.
regions (2 total; showing 2 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
Missing11870,90 → 60,90187total 0.1% · largest 0.1%
ColorErr115760,90 → 110,90157total 0.09% · largest 0.09%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing0,90 → 60,900.1candidate lacks paint present in reference (0.1%)
AntialiasCoverage60,90 → 110,900.09ΔRGB(39,0,0)antialiasing coverage residue on a shared outline
source · cases/effects/r2-mix-blend-mode-darken.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mix blend darken</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: #ffffff; }
11  .stage { position: relative; width: 220px; height: 150px; background: #ffffff; }
12  .base { position: absolute; top: 25px; left: 25px; width: 110px; height: 90px; background: #1565c0; }
13  .blend { position: absolute; top: 45px; left: 85px; width: 110px; height: 90px; background: #d32f2f; mix-blend-mode: darken; }
14</style>
15</head>
16<body>
17  <div class="stage"><div class="base"></div><div class="blend"></div></div>
18</body>
19</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.10% · raw 0.10% (344 px) r2-mix-blend-mode-difference · differencePASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 0.1%ΔE 19.3
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw candidate lacks paint present in reference (0.1%)
mix-blend-mode:difference needs direct parity coverage: A foreground red square overlaps a blue square with mix-blend-mode:difference. Catches wrong implementation: Renderer maps only multiply/screen or falls back to normal blend for this mode.
regions (2 total; showing 2 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
Missing11870,90 → 60,90187total 0.1% · largest 0.1%
ColorErr115760,90 → 110,90157total 0.09% · largest 0.09%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing0,90 → 60,900.1candidate lacks paint present in reference (0.1%)
ColorValue60,90 → 110,900.09ΔRGB(5,55,23)fill recolour ΔRGB(+5,+55,+23) (ΔE 0)
source · cases/effects/r2-mix-blend-mode-difference.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mix blend difference</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: #ffffff; }
11  .stage { position: relative; width: 220px; height: 150px; background: #ffffff; }
12  .base { position: absolute; top: 25px; left: 25px; width: 110px; height: 90px; background: #1565c0; }
13  .blend { position: absolute; top: 45px; left: 85px; width: 110px; height: 90px; background: #d32f2f; mix-blend-mode: difference; }
14</style>
15</head>
16<body>
17  <div class="stage"><div class="base"></div><div class="blend"></div></div>
18</body>
19</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.10% · raw 0.10% (344 px) r2-mix-blend-mode-exclusion · exclusionPASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 0.1%ΔE 13.5
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw candidate lacks paint present in reference (0.1%)
mix-blend-mode:exclusion needs direct parity coverage: A foreground red square overlaps a blue square with mix-blend-mode:exclusion. Catches wrong implementation: Renderer maps only multiply/screen or falls back to normal blend for this mode.
regions (2 total; showing 2 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
Missing11870,90 → 60,90187total 0.1% · largest 0.1%
ColorErr115760,90 → 110,90157total 0.09% · largest 0.09%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing0,90 → 60,900.1candidate lacks paint present in reference (0.1%)
AntialiasCoverage60,90 → 110,900.09ΔRGB(-55,34,14)antialiasing coverage residue on a shared outline
source · cases/effects/r2-mix-blend-mode-exclusion.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mix blend exclusion</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: #ffffff; }
11  .stage { position: relative; width: 220px; height: 150px; background: #ffffff; }
12  .base { position: absolute; top: 25px; left: 25px; width: 110px; height: 90px; background: #1565c0; }
13  .blend { position: absolute; top: 45px; left: 85px; width: 110px; height: 90px; background: #d32f2f; mix-blend-mode: exclusion; }
14</style>
15</head>
16<body>
17  <div class="stage"><div class="base"></div><div class="blend"></div></div>
18</body>
19</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.10% · raw 0.10% (344 px) r2-mix-blend-mode-hard-light · hard-lightPASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 0.1%ΔE 7.8
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw candidate lacks paint present in reference (0.1%)
mix-blend-mode:hard-light needs direct parity coverage: A foreground red square overlaps a blue square with mix-blend-mode:hard-light. Catches wrong implementation: Renderer maps only multiply/screen or falls back to normal blend for this mode.
regions (2 total; showing 2 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
Missing11870,90 → 60,90187total 0.1% · largest 0.1%
ColorErr115760,90 → 110,90157total 0.09% · largest 0.09%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing0,90 → 60,900.1candidate lacks paint present in reference (0.1%)
AntialiasCoverage60,90 → 110,900.09ΔRGB(28,21,9)antialiasing coverage residue on a shared outline
source · cases/effects/r2-mix-blend-mode-hard-light.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mix blend hard-light</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: #ffffff; }
11  .stage { position: relative; width: 220px; height: 150px; background: #ffffff; }
12  .base { position: absolute; top: 25px; left: 25px; width: 110px; height: 90px; background: #1565c0; }
13  .blend { position: absolute; top: 45px; left: 85px; width: 110px; height: 90px; background: #d32f2f; mix-blend-mode: hard-light; }
14</style>
15</head>
16<body>
17  <div class="stage"><div class="base"></div><div class="blend"></div></div>
18</body>
19</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.10% · raw 0.10% (344 px) r2-mix-blend-mode-hue · huePASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 0.4%
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw candidate lacks paint present in reference (0.4%)
Non-separable mix-blend-mode:hue is required: A red square overlaps a blue/gray backdrop using non-separable blend mode hue. Catches wrong implementation: Parser treats non-separable blend keywords as normal.
regions (1 total; showing 1 representative)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
Missing13440,90 → 110,90344total 0.4% · largest 0.4%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing0,90 → 110,900.4candidate lacks paint present in reference (0.4%)
source · cases/effects/r2-mix-blend-mode-hue.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mix blend hue</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: #ffffff; }
11  .stage { position: relative; width: 220px; height: 150px; background: #ffffff; }
12  .base { position: absolute; top: 25px; left: 25px; width: 110px; height: 90px; background: #1565c0; }
13  .blend { position: absolute; top: 45px; left: 85px; width: 110px; height: 90px; background: #d32f2f; mix-blend-mode: hue; }
14</style>
15</head>
16<body>
17  <div class="stage"><div class="base"></div><div class="blend"></div></div>
18</body>
19</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.10% · raw 0.10% (344 px) r2-mix-blend-mode-lighten · lightenPASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 0.4%
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw candidate lacks paint present in reference (0.4%)
mix-blend-mode:lighten needs direct parity coverage: A foreground red square overlaps a blue square with mix-blend-mode:lighten. Catches wrong implementation: Renderer maps only multiply/screen or falls back to normal blend for this mode.
regions (1 total; showing 1 representative)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
Missing13440,90 → 110,90344total 0.4% · largest 0.4%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing0,90 → 110,900.4candidate lacks paint present in reference (0.4%)
source · cases/effects/r2-mix-blend-mode-lighten.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mix blend lighten</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: #ffffff; }
11  .stage { position: relative; width: 220px; height: 150px; background: #ffffff; }
12  .base { position: absolute; top: 25px; left: 25px; width: 110px; height: 90px; background: #1565c0; }
13  .blend { position: absolute; top: 45px; left: 85px; width: 110px; height: 90px; background: #d32f2f; mix-blend-mode: lighten; }
14</style>
15</head>
16<body>
17  <div class="stage"><div class="base"></div><div class="blend"></div></div>
18</body>
19</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.10% · raw 0.10% (344 px) r2-mix-blend-mode-overlay · overlayPASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 0.4%
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw candidate lacks paint present in reference (0.4%)
mix-blend-mode:overlay needs direct parity coverage: A foreground red square overlaps a blue square with mix-blend-mode:overlay. Catches wrong implementation: Renderer maps only multiply/screen or falls back to normal blend for this mode.
regions (1 total; showing 1 representative)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
Missing13440,90 → 110,90344total 0.4% · largest 0.4%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing0,90 → 110,900.4candidate lacks paint present in reference (0.4%)
source · cases/effects/r2-mix-blend-mode-overlay.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mix blend overlay</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: #ffffff; }
11  .stage { position: relative; width: 220px; height: 150px; background: #ffffff; }
12  .base { position: absolute; top: 25px; left: 25px; width: 110px; height: 90px; background: #1565c0; }
13  .blend { position: absolute; top: 45px; left: 85px; width: 110px; height: 90px; background: #d32f2f; mix-blend-mode: overlay; }
14</style>
15</head>
16<body>
17  <div class="stage"><div class="base"></div><div class="blend"></div></div>
18</body>
19</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.10% · raw 0.10% (344 px) r2-mix-blend-mode-saturation · saturationPASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 0.4%
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw candidate lacks paint present in reference (0.4%)
Non-separable mix-blend-mode:saturation is required: A red square overlaps a blue/gray backdrop using non-separable blend mode saturation. Catches wrong implementation: Parser treats non-separable blend keywords as normal.
regions (1 total; showing 1 representative)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
Missing13440,90 → 110,90344total 0.4% · largest 0.4%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing0,90 → 110,900.4candidate lacks paint present in reference (0.4%)
source · cases/effects/r2-mix-blend-mode-saturation.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mix blend saturation</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: #ffffff; }
11  .stage { position: relative; width: 220px; height: 150px; background: #ffffff; }
12  .base { position: absolute; top: 25px; left: 25px; width: 110px; height: 90px; background: #1565c0; }
13  .blend { position: absolute; top: 45px; left: 85px; width: 110px; height: 90px; background: #d32f2f; mix-blend-mode: saturation; }
14</style>
15</head>
16<body>
17  <div class="stage"><div class="base"></div><div class="blend"></div></div>
18</body>
19</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.10% · raw 0.10% (344 px) r2-mix-blend-mode-soft-light · soft-lightPASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 0.4%
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw candidate lacks paint present in reference (0.4%)
mix-blend-mode:soft-light needs direct parity coverage: A foreground red square overlaps a blue square with mix-blend-mode:soft-light. Catches wrong implementation: Renderer maps only multiply/screen or falls back to normal blend for this mode.
regions (1 total; showing 1 representative)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
Missing13440,90 → 110,90344total 0.4% · largest 0.4%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing0,90 → 110,900.4candidate lacks paint present in reference (0.4%)
source · cases/effects/r2-mix-blend-mode-soft-light.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mix blend soft-light</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: #ffffff; }
11  .stage { position: relative; width: 220px; height: 150px; background: #ffffff; }
12  .base { position: absolute; top: 25px; left: 25px; width: 110px; height: 90px; background: #1565c0; }
13  .blend { position: absolute; top: 45px; left: 85px; width: 110px; height: 90px; background: #d32f2f; mix-blend-mode: soft-light; }
14</style>
15</head>
16<body>
17  <div class="stage"><div class="base"></div><div class="blend"></div></div>
18</body>
19</html>
PASS exact match mix-blend-mode-luminosity · luminosity
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
mix-blend-mode: luminosity blends a yellow source with a blue backdrop; catches unsupported non-separable blend modes treated as normal.

mix-blend-mode on inline SVG content — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.42% · raw 0.42% (1331 px) r2-mix-blend-mode-inline-svg · inline-svg-screenPASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 0.4%ΔE 2.1
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw candidate lacks paint present in reference (0.4%)
mix-blend-mode must apply to inline SVG/replaced content: An inline SVG red circle blends with a blue box using screen. Catches wrong implementation: Blend state is applied to CSS boxes but not SVG/replaced drawing paths.
regions (147 total; showing 64 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
Missing111250,0 → 220,1401125total 0.4% · largest 0.4%
ColorErr14620640,30 → 120,1096total 0.07% · largest 0.001991%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing0,0 → 220,1400.4candidate lacks paint present in reference (0.4%)
AntialiasCoverage61,105 → 62,1060.001991ΔRGB(16,3,1)antialiasing coverage residue on a shared outline
AntialiasCoverage97,105 → 98,1060.001991ΔRGB(16,3,1)antialiasing coverage residue on a shared outline
AntialiasCoverage68,32 → 68,320.000996ΔRGB(15,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage92,32 → 92,320.000996ΔRGB(15,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage66,32 → 67,320.000996ΔRGB(10,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage93,32 → 93,320.000996ΔRGB(10,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage62,34 → 62,340.000996ΔRGB(16,3,1)antialiasing coverage residue on a shared outline
AntialiasCoverage97,34 → 98,340.000996ΔRGB(16,3,1)antialiasing coverage residue on a shared outline
AntialiasCoverage42,82 → 42,820.000996ΔRGB(10,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage118,82 → 118,820.000996ΔRGB(10,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage42,83 → 42,830.000996ΔRGB(10,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage117,83 → 118,830.000996ΔRGB(10,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage44,87 → 44,880.000996ΔRGB(19,3,1)antialiasing coverage residue on a shared outline
AntialiasCoverage116,87 → 116,880.000996ΔRGB(19,3,1)antialiasing coverage residue on a shared outline
AntialiasCoverage68,108 → 68,1080.000996ΔRGB(12,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage91,108 → 92,1080.000996ΔRGB(12,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage65,33 → 65,330.000664ΔRGB(12,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage95,33 → 95,330.000664ΔRGB(12,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage61,34 → 62,340.000664ΔRGB(24,4,2)antialiasing coverage residue on a shared outline
AntialiasCoverage98,34 → 98,340.000664ΔRGB(24,4,2)antialiasing coverage residue on a shared outline
AntialiasCoverage44,52 → 44,520.000664ΔRGB(20,3,1)antialiasing coverage residue on a shared outline
AntialiasCoverage116,52 → 116,520.000664ΔRGB(20,3,1)antialiasing coverage residue on a shared outline
AntialiasCoverage44,52 → 44,520.000664ΔRGB(33,5,2)antialiasing coverage residue on a shared outline
AntialiasCoverage116,52 → 116,520.000664ΔRGB(33,5,2)antialiasing coverage residue on a shared outline
AntialiasCoverage42,57 → 42,570.000664ΔRGB(14,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage118,57 → 118,570.000664ΔRGB(14,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage42,58 → 42,580.000664ΔRGB(26,4,2)antialiasing coverage residue on a shared outline
AntialiasCoverage118,58 → 118,580.000664ΔRGB(26,4,2)antialiasing coverage residue on a shared outline
AntialiasCoverage41,81 → 41,810.000664ΔRGB(14,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage118,81 → 118,810.000664ΔRGB(14,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage43,85 → 43,850.000664ΔRGB(16,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage117,85 → 117,850.000664ΔRGB(16,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage44,88 → 44,880.000664ΔRGB(27,4,1)antialiasing coverage residue on a shared outline
AntialiasCoverage116,88 → 116,880.000664ΔRGB(27,4,1)antialiasing coverage residue on a shared outline
AntialiasCoverage64,107 → 64,1070.000664ΔRGB(16,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage96,107 → 96,1070.000664ΔRGB(16,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage66,108 → 67,1080.000664ΔRGB(17,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage93,108 → 93,1080.000664ΔRGB(17,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage75,30 → 75,300.000332ΔRGB(12,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage85,30 → 85,300.000332ΔRGB(12,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage73,30 → 73,300.000332ΔRGB(10,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage87,30 → 87,300.000332ΔRGB(10,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage71,31 → 71,310.000332ΔRGB(10,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage89,31 → 89,310.000332ΔRGB(10,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage68,31 → 68,310.000332ΔRGB(10,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage69,31 → 69,310.000332ΔRGB(17,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage91,31 → 91,310.000332ΔRGB(17,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage91,31 → 91,310.000332ΔRGB(10,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage66,32 → 66,320.000332ΔRGB(9,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage94,32 → 94,320.000332ΔRGB(9,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage64,33 → 64,330.000332ΔRGB(9,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage96,33 → 96,330.000332ΔRGB(9,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage64,33 → 64,330.000332ΔRGB(16,3,1)antialiasing coverage residue on a shared outline
AntialiasCoverage96,33 → 96,330.000332ΔRGB(16,3,1)antialiasing coverage residue on a shared outline
AntialiasCoverage60,35 → 60,350.000332ΔRGB(17,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage99,35 → 99,350.000332ΔRGB(17,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage60,35 → 60,350.000332ΔRGB(16,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage100,35 → 100,350.000332ΔRGB(16,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage59,36 → 59,360.000332ΔRGB(10,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage101,36 → 101,360.000332ΔRGB(10,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage56,38 → 56,380.000332ΔRGB(7,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage104,38 → 104,380.000332ΔRGB(7,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage54,39 → 54,390.000332ΔRGB(17,2,1)antialiasing coverage residue on a shared outline
source · cases/effects/r2-mix-blend-mode-inline-svg.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mix blend mode inline svg</title>
6<style>
7  @page { size: 224px 144px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage { width: 220px; height: 140px; padding: 25px; background: #1565c0; }
12  svg { width: 120px; height: 90px; mix-blend-mode: screen; }
13</style>
14</head>
15<body>
16  <div class="stage"><svg viewBox="0 0 120 90" aria-hidden="true"><circle cx="55" cy="45" r="40" fill="#d32f2f"/></svg></div>
17</body>
18</html>

mix-blend-mode with overflow — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.08% · raw 0.08% (238 px) r2-mix-blend-mode-clipped-rounded-overflow · rounded-overflow-clipPASS via CSS-scale observation: coherent sub-authored colour frontierColorValueΔE 22.7
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw fill recolour ΔRGB(+19,+88,+88) (ΔE 22.7)
mix-blend-mode must respect clipping ancestors: A blended red child overflows a rounded clipped blue parent; blending is only visible inside the rounded clip. Catches wrong implementation: Renderer applies blend outside the clip or clips before selecting the proper backdrop.
regions (2 total; showing 2 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr223825,90 → 124,90234total 0.2% · largest 0.2%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue50,90 → 124,900.2ΔRGB(19,88,88)fill recolour ΔRGB(+19,+88,+88) (ΔE 0)
AntialiasCoverage25,90 → 26,900.003024ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
source · cases/effects/r2-mix-blend-mode-clipped-rounded-overflow.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mix blend mode clipped rounded overflow</title>
6<style>
7  @page { size: 216px 144px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .parent { position: relative; width: 150px; height: 90px; margin: 25px; overflow: hidden; border-radius: 28px; background: #1565c0; }
12  .child { position: absolute; top: -20px; left: 50px; width: 120px; height: 120px; background: #d32f2f; mix-blend-mode: screen; }
13</style>
14</head>
15<body>
16  <div class="parent"><div class="child"></div></div>
17</body>
18</html>

opacity group isolation with mix-blend-mode descendant — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-opacity-isolates-descendant-blend · opacity-isolates-blend
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Opacity-created stacking contexts must isolate inner blending: A parent with opacity:.99 contains a multiply child over a blue page; the opacity group is isolated, so child blends with the group backdrop, not the page. Catches wrong implementation: Renderer applies alpha per draw without isolating the group, allowing the child to multiply with page content behind the parent.

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

PASS visually equivalent · no rejecting defect · thresholded evidence 0.34% · raw 2.91% (29639 px) text-shadow-blur · blurPASS via raw same-coordinate visibility policyColorValueΔE 0.4
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: fill colour differs (ΔE 0.4)
Short heading with a blurred text-shadow glow (aspirational; not implemented).
regions (326 total; showing 64 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr3262963939,42 → 167,9213889total 2.9% · largest 1.4% · max ΔE 0.6

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue39,42 → 97,921.4ΔE 0.4fill colour differs (ΔE 0.4)
ColorValue92,46 → 144,920.7ΔE 0.4 ΔRGB(-1,0,0)fill recolour ΔRGB(-1,+0,+0) (ΔE 0.4)
ColorValue143,52 → 167,920.4ΔE 0.4 ΔRGB(-1,0,-1)fill recolour ΔRGB(-1,+0,-1) (ΔE 0.4)
ColorValue123,52 → 151,740.2ΔE 0.4 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.4)
ColorValue97,58 → 112,780.2ΔE 0.4 ΔRGB(-1,0,-1)fill recolour ΔRGB(-1,+0,-1) (ΔE 0.4)
ColorValue40,56 → 43,700.02ΔE 0.4fill colour differs (ΔE 0.4)
ColorValue132,54 → 137,590.01ΔE 0.4 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.4)
ColorValue42,50 → 47,570.01ΔE 0.5 ΔRGB(1,0,1)fill recolour ΔRGB(+1,+0,+1) (ΔE 0.5)
ColorValue148,52 → 154,580.01ΔE 0.2 ΔRGB(-1,0,0)fill recolour ΔRGB(-1,+0,+0) (ΔE 0.2)
ColorValue141,88 → 145,910.006863ΔE 0.6 ΔRGB(1,0,1)fill recolour ΔRGB(+1,+0,+1) (ΔE 0.6)
AntialiasCoverage92,42 → 95,470.005392ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
ColorValue100,70 → 100,730.004118ΔE 0.3 ΔRGB(1,0,1)fill recolour ΔRGB(+1,+0,+1) (ΔE 0.3)
AntialiasCoverage116,75 → 118,780.004118ΔE 0.3 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
ColorValue131,70 → 132,750.003824ΔE 0.3 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.3)
ColorValue145,52 → 148,540.003039ΔE 0.2 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.2)
AntialiasCoverage59,76 → 63,770.002843ΔE 0.4 ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage44,47 → 48,510.002745ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage111,68 → 112,730.002745ΔE 0.5 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage98,69 → 99,720.001667ΔE 0.3 ΔRGB(1,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage40,65 → 41,680.001569ΔE 0.4 ΔRGB(1,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage94,83 → 96,840.001569ΔE 0.4 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage92,74 → 94,760.001471ΔE 0.4 ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
ColorValue80,80 → 81,820.001471ΔE 0.4fill colour differs (ΔE 0.4)
AntialiasCoverage129,87 → 130,880.001471ΔE 0.5 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage119,70 → 119,730.001373ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage119,73 → 120,740.001373ΔE 0.3 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage164,67 → 165,680.001176ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage163,73 → 164,750.001176ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage151,79 → 152,800.001176ΔE 0.4 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage121,52 → 123,530.000980ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage164,53 → 166,540.000980ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage164,71 → 165,730.000980ΔE 0.6 ΔRGB(1,0,1)antialiasing coverage residue on a shared outline
ColorValue60,62 → 60,630.000882ΔE 0.6 ΔRGB(-1,0,-1)fill recolour ΔRGB(-1,+0,-1) (ΔE 0.6)
AntialiasCoverage165,68 → 166,690.000784ΔE 0.6 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage119,69 → 120,700.000784ΔE 0.3 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
ColorValue99,73 → 99,740.000784ΔE 0.4 ΔRGB(2,1,2)fill recolour ΔRGB(+2,+1,+2) (ΔE 0.4)
AntialiasCoverage115,74 → 116,760.000784ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage68,75 → 68,760.000784ΔRGB(2,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage66,75 → 67,760.000784ΔE 0.4 ΔRGB(2,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage163,79 → 163,800.000784ΔE 0.2 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage134,60 → 135,610.000686ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage90,85 → 91,850.000686ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage48,48 → 49,490.000588ΔRGB(1,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage56,53 → 57,540.000588ΔE 0.3 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage54,70 → 54,710.000588ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage82,81 → 83,820.000588ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage81,54 → 82,550.000490ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage148,54 → 148,550.000490ΔE 0.4 ΔRGB(1,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage103,71 → 103,720.000490ΔE 0.4 ΔRGB(1,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage78,76 → 79,770.000490ΔE 0.3 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage141,76 → 142,760.000490ΔE 0.3 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage112,81 → 113,820.000490ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage162,84 → 162,840.000490ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage48,85 → 49,850.000490ΔE 0.4 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage95,88 → 96,880.000490ΔE 0.6 ΔRGB(1,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage99,90 → 100,910.000490ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage146,90 → 146,910.000490ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage76,51 → 76,510.000392ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage60,52 → 60,520.000392ΔE 0.3 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage143,52 → 144,520.000392ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage161,54 → 162,540.000392ΔE 0.4 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage95,55 → 96,560.000392ΔE 0.4 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage101,67 → 101,680.000392ΔE 0.3 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage146,70 → 147,710.000392ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
source · cases/effects/text-shadow-blur.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>text-shadow blur</title>
6<style>
7  @page { size: 816px 128px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage { background: #f1f8e9; padding: 40px; }
12  .t {
13    font-family: ParitySans, ParitySans;
14    font-size: 48px;
15    line-height: 1;
16    color: #1b5e20;
17    /* offset plus blur radius -> soft glow behind glyphs */
18    text-shadow: 4px 4px 6px #2e7d32;
19  }
20</style>
21</head>
22<body>
23  <div class="stage"><div class="t">Glow</div></div>
24</body>
25</html>
PASS exact match text-shadow-offset · hard-offset
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Short heading with a hard-edged (zero-blur) offset text-shadow (aspirational; not implemented).

text-shadow blur with rgba color — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.86% · raw 7.89% (22786 px) r2-text-shadow-blur-rgba · blur-rgbaPASS via CSS-scale observation: stable same-coordinate outline phaseColorValuemissing 0.2%extra 0.08%ΔE 0.4
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw fill recolour ΔRGB(+0,+1,+1) (ΔE 0.4)
text-shadow blur with alpha color must preserve soft transparent edges: A large ParitySans text run isolates text-shadow color, order, blur, overflow, or decoration behavior. Catches wrong implementation: Renderer treats text-shadow as a single hard glyph-only pass or uses the wrong default color/order.
regions (2390 total; showing 64 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
Missing53830,0 → 115,2919total 0.1% · largest 0.02%
ColorErr2302226610,0 → 139,592660total 28.4% · largest 3.3% · max ΔE 0.8
Extra35427,7 → 121,183total 0.05% · largest 0.003757%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue6,0 → 41,513.3ΔE 0.4 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.4)
ColorValue105,17 → 136,481.9ΔE 0.4 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.4)
ColorValue41,0 → 61,411.6ΔE 0.4 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.4)
ColorValue62,13 → 84,461.3ΔE 0.4 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.4)
ColorValue126,17 → 139,310.8ΔE 0.5 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.5)
AntialiasCoverage7,12 → 15,330.8ΔE 0.4 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage61,17 → 73,350.6ΔE 0.4 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage88,20 → 105,420.6ΔE 0.3 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
ColorValue66,51 → 82,580.5ΔE 0.5 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.5)
AntialiasCoverage106,15 → 114,290.4ΔE 0.4 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
ColorValue115,45 → 123,520.4ΔE 0.4 ΔRGB(0,-1,-1)fill recolour ΔRGB(+0,-1,-1) (ΔE 0.4)
ColorValue48,46 → 56,540.3ΔE 0.4 ΔRGB(0,-1,-1)fill recolour ΔRGB(+0,-1,-1) (ΔE 0.4)
ColorValue100,45 → 108,510.3ΔE 0.4 ΔRGB(0,-1,-1)fill recolour ΔRGB(+0,-1,-1) (ΔE 0.4)
AntialiasCoverage124,44 → 131,520.2ΔE 0.5 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage59,16 → 64,340.2ΔE 0.4 ΔRGB(-4,-4,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage122,14 → 132,200.2ΔE 0.5 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
ColorValue13,7 → 26,100.2ΔE 0.5 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.5)
AntialiasCoverage92,16 → 97,290.2ΔE 0.4 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
ColorValue83,28 → 86,380.2ΔE 0.3 ΔRGB(0,-1,-1)fill recolour ΔRGB(+0,-1,-1) (ΔE 0.3)
ColorValue22,55 → 32,580.2ΔE 0.5 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.5)
ColorValue100,33 → 105,380.1ΔE 0.3 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.3)
AntialiasCoverage13,44 → 23,480.1ΔE 0.3 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage115,52 → 124,550.1ΔE 0.5 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage41,41 → 46,480.1ΔE 0.4 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage14,9 → 18,140.1ΔE 0.4 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage51,2 → 58,40.1ΔE 0.5 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage50,19 → 51,300.1ΔE 0.4 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
ColorValue103,42 → 109,440.1ΔE 0.3 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.3)
ColorValue25,46 → 32,480.1ΔE 0.3 ΔRGB(0,-1,-1)fill recolour ΔRGB(+0,-1,-1) (ΔE 0.3)
ColorValue86,47 → 89,520.1ΔE 0.5 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.5)
AntialiasCoverage79,16 → 85,210.10ΔE 0.4 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage33,52 → 39,550.09ΔE 0.5 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage90,15 → 96,170.09ΔE 0.5 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage32,4 → 35,120.09ΔE 0.5 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage61,24 → 65,280.09ΔE 0.4 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
ColorValue27,49 → 32,520.09ΔE 0.4 ΔRGB(0,-1,-1)fill recolour ΔRGB(+0,-1,-1) (ΔE 0.4)
AntialiasCoverage62,7 → 68,100.08ΔE 0.2 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage73,49 → 78,520.08ΔE 0.4 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage15,14 → 18,200.08ΔE 0.3 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage83,45 → 88,480.08ΔE 0.4 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
ColorValue90,53 → 97,560.08ΔE 0.2 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.2)
ColorValue102,39 → 106,420.08ΔE 0.3 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.3)
ColorValue68,45 → 73,470.07ΔE 0.3 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.3)
AntialiasCoverage2,35 → 4,400.07ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
ColorValue18,28 → 20,320.07ΔE 0.4 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.4)
ColorValue12,50 → 17,530.07ΔE 0.5 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.5)
AntialiasCoverage116,36 → 120,400.06ΔE 0.3 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
ColorValue91,49 → 93,530.06ΔE 0.5 ΔRGB(0,-1,-1)fill recolour ΔRGB(+0,-1,-1) (ΔE 0.5)
AntialiasCoverage80,14 → 84,170.06ΔE 0.5 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage37,51 → 42,540.06ΔE 0.4 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage100,52 → 106,540.06ΔE 0.5 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage59,54 → 65,560.06ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
ColorValue31,50 → 35,520.06ΔE 0.4 ΔRGB(0,-1,-1)fill recolour ΔRGB(+0,-1,-1) (ΔE 0.4)
AntialiasCoverage94,47 → 97,510.06ΔE 0.5 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage32,56 → 36,580.06ΔE 0.5 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage34,3 → 40,50.06ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage90,18 → 92,230.06ΔE 0.5 ΔRGB(0,-2,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage15,21 → 18,260.06ΔE 0.3 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage6,36 → 8,400.06ΔE 0.5 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
ColorValue107,48 → 110,510.06ΔE 0.4 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.4)
ColorValue132,12 → 134,140.05ΔE 0.2 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.2)
AntialiasCoverage35,38 → 38,420.05ΔE 0.3 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage50,32 → 50,400.05ΔE 0.4 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage114,44 → 116,470.05ΔE 0.4 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
source · cases/effects/r2-text-shadow-blur-rgba.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 text shadow blur rgba</title>
6<style>
7  @page { size: 264px 112px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .text { width: 260px; height: 110px; padding: 18px; color: #263238; font-size: 50px; font-weight: 700; line-height: 62px; text-shadow: 10px 10px 8px rgba(211,47,47,0.45); }
12</style>
13</head>
14<body>
15  <div class="text">Glow</div>
16</body>
17</html>

text-shadow currentColor default — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-text-shadow-currentcolor-default · currentcolor-default
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
text-shadow omitted color resolves to currentColor: A large ParitySans text run isolates text-shadow color, order, blur, overflow, or decoration behavior. Catches wrong implementation: Renderer treats text-shadow as a single hard glyph-only pass or uses the wrong default color/order.

text-shadow multiple shadow paint order — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-text-shadow-multiple-order · multiple-order
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
multiple text-shadows must paint first listed shadow on top: A large ParitySans text run isolates text-shadow color, order, blur, overflow, or decoration behavior. Catches wrong implementation: Renderer treats text-shadow as a single hard glyph-only pass or uses the wrong default color/order.

text-shadow shadows text decorations — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.26% · raw 0.26% (799 px) r2-text-shadow-decoration-line · decoration-linePASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 0.9%ΔE 11.7
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw candidate lacks paint present in reference (0.9%)
text-shadow must shadow text decorations too: A large ParitySans text run isolates text-shadow color, order, blur, overflow, or decoration behavior. Catches wrong implementation: Renderer treats text-shadow as a single hard glyph-only pass or uses the wrong default color/order.
regions (2 total; showing 2 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
Missing1494104,42 → 262,42494total 0.4% · largest 0.4%
ColorErr1305164,49 → 262,49305total 0.2% · largest 0.2%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing104,42 → 262,420.4candidate lacks paint present in reference (0.4%)
AntialiasCoverage164,49 → 262,490.2ΔRGB(-10,-50,-50)antialiasing coverage residue on a shared outline
source · cases/effects/r2-text-shadow-decoration-line.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 text shadow decoration line</title>
6<style>
7  @page { size: 280px 112px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .text { width: 280px; height: 110px; padding: 18px; color: #111111; font-size: 46px; line-height: 58px; text-decoration: underline; text-decoration-thickness: 7px; text-underline-offset: 8px; text-shadow: 104px 0 0 #d32f2f; }
12</style>
13</head>
14<body>
15  <div class="text">UNDER</div>
16</body>
17</html>

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

PASS visually equivalent · no rejecting defect · thresholded evidence 0.73% · raw 0.73% (3268 px) r2-text-shadow-visual-overflow-layout · visual-overflow-layoutPASS via CSS-scale observation: stable same-coordinate outline phaseAntialiasCoveragemissing 1.0%extra 0.7%ΔE 28.4
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
text-shadow visual overflow must not affect layout or be clipped to glyph bounds: A large ParitySans text run isolates text-shadow color, order, blur, overflow, or decoration behavior. Catches wrong implementation: Renderer treats text-shadow as a single hard glyph-only pass or uses the wrong default color/order.
regions (809 total; showing 64 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr454209315,0 → 256,35203total 0.9% · largest 0.08%
Missing16171115,0 → 250,35109total 0.3% · largest 0.05%
Extra19446421,0 → 256,3533total 0.2% · largest 0.01%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage231,0 → 246,350.08ΔRGB(135,84,132)antialiasing coverage residue on a shared outline
Missing51,0 → 51,350.05candidate lacks paint present in reference (0.05%)
Missing231,0 → 231,350.05candidate lacks paint present in reference (0.05%)
AntialiasCoverage57,19 → 66,300.03ΔRGB(-83,-83,-83)antialiasing coverage residue on a shared outline
AntialiasCoverage237,19 → 245,300.03ΔRGB(-72,-45,-71)antialiasing coverage residue on a shared outline
AntialiasCoverage57,5 → 65,140.02ΔRGB(-83,-83,-83)antialiasing coverage residue on a shared outline
AntialiasCoverage237,5 → 245,140.02ΔRGB(-72,-45,-71)antialiasing coverage residue on a shared outline
AntialiasCoverage51,0 → 66,00.02ΔRGB(83,83,83)antialiasing coverage residue on a shared outline
AntialiasCoverage51,35 → 66,350.02ΔRGB(-125,-125,-125)antialiasing coverage residue on a shared outline
AntialiasCoverage24,27 → 38,270.02ΔRGB(-154,-154,-154)antialiasing coverage residue on a shared outline
AntialiasCoverage204,27 → 219,270.02ΔRGB(-135,-84,-132)antialiasing coverage residue on a shared outline
Missing51,0 → 64,00.02candidate lacks paint present in reference (0.02%)
Missing231,0 → 244,00.02candidate lacks paint present in reference (0.02%)
AntialiasCoverage206,21 → 217,210.01ΔRGB(135,84,132)antialiasing coverage residue on a shared outline
AntialiasCoverage27,21 → 36,210.01ΔRGB(154,154,154)antialiasing coverage residue on a shared outline
Extra237,20 → 237,300.01candidate adds paint absent from reference (0.01%)
AntialiasCoverage237,30 → 245,300.01ΔRGB(135,84,132)antialiasing coverage residue on a shared outline
AntialiasCoverage57,30 → 65,300.01ΔRGB(154,154,154)antialiasing coverage residue on a shared outline
Extra237,6 → 237,140.01candidate adds paint absent from reference (0.01%)
AntialiasCoverage208,0 → 215,10.01ΔRGB(72,45,71)antialiasing coverage residue on a shared outline
AntialiasCoverage57,14 → 65,140.01ΔRGB(154,154,154)antialiasing coverage residue on a shared outline
AntialiasCoverage237,14 → 245,140.01ΔRGB(135,84,132)antialiasing coverage residue on a shared outline
AntialiasCoverage195,35 → 201,350.009496ΔRGB(-110,-68,-108)antialiasing coverage residue on a shared outline
AntialiasCoverage15,35 → 21,350.008670ΔRGB(-125,-125,-125)antialiasing coverage residue on a shared outline
AntialiasCoverage41,35 → 47,350.008670ΔRGB(-125,-125,-125)antialiasing coverage residue on a shared outline
AntialiasCoverage222,35 → 228,350.008670ΔRGB(-110,-68,-108)antialiasing coverage residue on a shared outline
Missing208,0 → 214,00.008258candidate lacks paint present in reference (0.008258%)
AntialiasCoverage28,0 → 34,10.008258ΔRGB(83,83,83)antialiasing coverage residue on a shared outline
Missing28,0 → 34,00.007845candidate lacks paint present in reference (0.007845%)
AntialiasCoverage76,23 → 76,270.006193ΔRGB(-83,-83,-83)antialiasing coverage residue on a shared outline
Extra23,29 → 24,320.005780candidate adds paint absent from reference (0.005780%)
AntialiasCoverage256,23 → 256,270.005780ΔRGB(-90,-56,-88)antialiasing coverage residue on a shared outline
Extra256,23 → 256,270.005367candidate adds paint absent from reference (0.005367%)
AntialiasCoverage68,8 → 69,110.004955ΔRGB(71,71,71)antialiasing coverage residue on a shared outline
Missing25,7 → 26,90.004129candidate lacks paint present in reference (0.004129%)
Missing22,13 → 23,160.004129candidate lacks paint present in reference (0.004129%)
Missing21,18 → 21,200.004129candidate lacks paint present in reference (0.004129%)
Missing18,24 → 19,270.004129candidate lacks paint present in reference (0.004129%)
Missing16,31 → 16,330.004129candidate lacks paint present in reference (0.004129%)
Extra30,9 → 31,110.004129candidate adds paint absent from reference (0.004129%)
Extra29,12 → 30,140.004129candidate adds paint absent from reference (0.004129%)
Extra28,15 → 29,170.004129candidate adds paint absent from reference (0.004129%)
AntialiasCoverage255,8 → 255,110.004129ΔRGB(-180,-112,-177)antialiasing coverage residue on a shared outline
Missing28,0 → 28,20.003716candidate lacks paint present in reference (0.003716%)
Extra252,14 → 253,160.003716candidate adds paint absent from reference (0.003716%)
Extra21,33 → 22,350.003716candidate adds paint absent from reference (0.003716%)
AntialiasCoverage248,1 → 250,20.003716ΔRGB(19,12,19)antialiasing coverage residue on a shared outline
AntialiasCoverage69,1 → 71,20.003716ΔRGB(63,63,63)antialiasing coverage residue on a shared outline
AntialiasCoverage75,8 → 75,110.003716ΔRGB(-85,-85,-85)antialiasing coverage residue on a shared outline
AntialiasCoverage70,23 → 70,260.003716ΔRGB(83,83,83)antialiasing coverage residue on a shared outline
Extra254,12 → 254,140.003303candidate adds paint absent from reference (0.003303%)
AntialiasCoverage252,3 → 253,40.003303ΔRGB(-37,-23,-36)antialiasing coverage residue on a shared outline
Missing249,9 → 249,110.002890candidate lacks paint present in reference (0.002890%)
Missing15,34 → 15,350.002890candidate lacks paint present in reference (0.002890%)
Extra255,8 → 255,100.002890candidate adds paint absent from reference (0.002890%)
AntialiasCoverage31,8 → 32,80.002890ΔRGB(-83,-83,-83)antialiasing coverage residue on a shared outline
AntialiasCoverage76,21 → 76,220.002890ΔRGB(-37,-37,-37)antialiasing coverage residue on a shared outline
AntialiasCoverage248,28 → 249,290.002890ΔRGB(135,84,132)antialiasing coverage residue on a shared outline
Missing27,3 → 27,40.002477candidate lacks paint present in reference (0.002477%)
Missing26,5 → 26,60.002477candidate lacks paint present in reference (0.002477%)
Missing24,9 → 25,110.002477candidate lacks paint present in reference (0.002477%)
Missing23,12 → 24,130.002477candidate lacks paint present in reference (0.002477%)
Missing22,16 → 22,170.002477candidate lacks paint present in reference (0.002477%)
Missing20,20 → 20,210.002477candidate lacks paint present in reference (0.002477%)
source · cases/effects/r2-text-shadow-visual-overflow-layout.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 text shadow visual overflow layout</title>
6<style>
7  @page { size: 320px 144px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .text { width: 320px; height: 72px; padding-left: 16px; color: #111111; font-size: 46px; font-weight: 700; line-height: 72px; text-shadow: 180px 0 0 #2e7d32; }
12  .bar { width: 120px; height: 42px; background: #d32f2f; }
13</style>
14</head>
15<body>
16  <div class="text">AB</div><div class="bar"></div>
17</body>
18</html>