IARPG research-link text-layout validation — 2.0.26-wip Generated UTC: 2026-07-23T23:45:50Z Status: PASS Checks: 56/56 passed [PASS] RESEARCH-CSS-001 — Shared research-link container declares a grid layout: pattern=present [PASS] RESEARCH-CSS-002 — Research links declare an internal card grid: pattern=present [PASS] RESEARCH-CSS-003 — Label, title, and description receive explicit block layout: pattern=present [PASS] RESEARCH-CSS-004 — Narrow screens collapse the component to one column: pattern=present [PASS] RESEARCH-CSS-005 — Forced-colors behavior is explicit: pattern=present [PASS] RESEARCH-CSS-006 — Reduced-motion behavior is explicit: pattern=present [PASS] RESEARCH-HOME-DESKTOP-001 — home renders research-link containers as CSS grids: grids=2; displays=['grid', 'grid']; templates=['318px 318px 318px 318px', '318px 318px 318px 318px'] [PASS] RESEARCH-HOME-DESKTOP-002 — home renders each research link as a structured card: cards=12; minimum=12; displays=['grid'] [PASS] RESEARCH-HOME-DESKTOP-003 — home separates label, title, description, and arrow text: first-card children=[{'tag': 'span', 'display': 'block', 'x': 53.5, 'y': 2000.734375, 'width': 210, 'height': 13.8125, 'right': 263.5, 'bottom': 2014.546875}, {'tag': 'strong', 'display': 'block', 'x': 53.5, 'y': 2021.546875, 'width': 210, 'height': 44.34375, 'right': 263.5, 'bottom': 2065.890625}, {'tag': 'small', 'display': 'block', 'x': 53.5, 'y': 2072.890625, 'width': 210, 'height': 83.3125, 'right': 263.5, 'bottom': 2156.203125}, {'tag': 'i', 'display': 'block', 'x': 287.5, 'y': 2224.34375, 'width': 24, 'height': 19.203125, 'right': 311.5, 'bottom': 2243.546875}] [PASS] RESEARCH-HOME-DESKTOP-004 — home avoids clipped or overlapping card text: clipped=0; overlap=False [PASS] RESEARCH-HOME-DESKTOP-005 — home preserves horizontal viewport containment: scrollWidth=1365; clientWidth=1365 [PASS] RESEARCH-HOME-DESKTOP-006 — home uses the expected responsive column count: templates=['318px 318px 318px 318px', '318px 318px 318px 318px']; interpreted_columns=[4, 4] [PASS] RESEARCH-HOME-MOBILE-001 — home renders research-link containers as CSS grids: grids=2; displays=['grid', 'grid']; templates=['370px', '370px'] [PASS] RESEARCH-HOME-MOBILE-002 — home renders each research link as a structured card: cards=12; minimum=12; displays=['grid'] [PASS] RESEARCH-HOME-MOBILE-003 — home separates label, title, description, and arrow text: first-card children=[{'tag': 'span', 'display': 'block', 'x': 33, 'y': 3342.359375, 'width': 286, 'height': 13.8125, 'right': 319, 'bottom': 3356.171875}, {'tag': 'strong', 'display': 'block', 'x': 33, 'y': 3363.171875, 'width': 286, 'height': 18.8125, 'right': 319, 'bottom': 3381.984375}, {'tag': 'small', 'display': 'block', 'x': 33, 'y': 3388.984375, 'width': 286, 'height': 62.484375, 'right': 319, 'bottom': 3451.46875}, {'tag': 'i', 'display': 'block', 'x': 335, 'y': 3432.265625, 'width': 24, 'height': 19.203125, 'right': 359, 'bottom': 3451.46875}] [PASS] RESEARCH-HOME-MOBILE-004 — home avoids clipped or overlapping card text: clipped=0; overlap=False [PASS] RESEARCH-HOME-MOBILE-005 — home preserves horizontal viewport containment: scrollWidth=390; clientWidth=390 [PASS] RESEARCH-HOME-MOBILE-006 — home uses the expected responsive column count: templates=['370px', '370px']; interpreted_columns=[1, 1] [PASS] RESEARCH-GLOBAL-DESKTOP-001 — global renders research-link containers as CSS grids: grids=3; displays=['grid', 'grid', 'grid']; templates=['318px 318px 318px 318px', '318px 318px 318px 318px', '318px 318px 318px 318px'] [PASS] RESEARCH-GLOBAL-DESKTOP-002 — global renders each research link as a structured card: cards=18; minimum=8; displays=['grid'] [PASS] RESEARCH-GLOBAL-DESKTOP-003 — global separates label, title, description, and arrow text: first-card children=[{'tag': 'span', 'display': 'block', 'x': 53.5, 'y': 3637.84375, 'width': 210, 'height': 13.8125, 'right': 263.5, 'bottom': 3651.65625}, {'tag': 'strong', 'display': 'block', 'x': 53.5, 'y': 3658.65625, 'width': 210, 'height': 22.171875, 'right': 263.5, 'bottom': 3680.828125}, {'tag': 'small', 'display': 'block', 'x': 53.5, 'y': 3687.828125, 'width': 210, 'height': 62.484375, 'right': 263.5, 'bottom': 3750.3125}, {'tag': 'i', 'display': 'block', 'x': 287.5, 'y': 3731.109375, 'width': 24, 'height': 19.203125, 'right': 311.5, 'bottom': 3750.3125}] [PASS] RESEARCH-GLOBAL-DESKTOP-004 — global avoids clipped or overlapping card text: clipped=0; overlap=False [PASS] RESEARCH-GLOBAL-DESKTOP-005 — global preserves horizontal viewport containment: scrollWidth=1365; clientWidth=1365 [PASS] RESEARCH-GLOBAL-DESKTOP-006 — global uses the expected responsive column count: templates=['318px 318px 318px 318px', '318px 318px 318px 318px', '318px 318px 318px 318px']; interpreted_columns=[4, 4, 4] [PASS] RESEARCH-GLOBAL-MOBILE-001 — global renders research-link containers as CSS grids: grids=3; displays=['grid', 'grid', 'grid']; templates=['370px', '370px', '370px'] [PASS] RESEARCH-GLOBAL-MOBILE-002 — global renders each research link as a structured card: cards=18; minimum=8; displays=['grid'] [PASS] RESEARCH-GLOBAL-MOBILE-003 — global separates label, title, description, and arrow text: first-card children=[{'tag': 'span', 'display': 'block', 'x': 33, 'y': 6534.984375, 'width': 286, 'height': 13.8125, 'right': 319, 'bottom': 6548.796875}, {'tag': 'strong', 'display': 'block', 'x': 33, 'y': 6555.796875, 'width': 286, 'height': 18.8125, 'right': 319, 'bottom': 6574.609375}, {'tag': 'small', 'display': 'block', 'x': 33, 'y': 6581.609375, 'width': 286, 'height': 62.484375, 'right': 319, 'bottom': 6644.09375}, {'tag': 'i', 'display': 'block', 'x': 335, 'y': 6624.890625, 'width': 24, 'height': 19.203125, 'right': 359, 'bottom': 6644.09375}] [PASS] RESEARCH-GLOBAL-MOBILE-004 — global avoids clipped or overlapping card text: clipped=0; overlap=False [PASS] RESEARCH-GLOBAL-MOBILE-005 — global preserves horizontal viewport containment: scrollWidth=390; clientWidth=390 [PASS] RESEARCH-GLOBAL-MOBILE-006 — global uses the expected responsive column count: templates=['370px', '370px', '370px']; interpreted_columns=[1, 1, 1] [PASS] RESEARCH-DOCS-DESKTOP-001 — docs renders research-link containers as CSS grids: grids=1; displays=['grid']; templates=['429.328px 429.328px 429.344px 0px'] [PASS] RESEARCH-DOCS-DESKTOP-002 — docs renders each research link as a structured card: cards=3; minimum=3; displays=['grid'] [PASS] RESEARCH-DOCS-DESKTOP-003 — docs separates label, title, description, and arrow text: first-card children=[{'tag': 'span', 'display': 'block', 'x': 53.5, 'y': 7676.234375, 'width': 321.328125, 'height': 13.8125, 'right': 374.828125, 'bottom': 7690.046875}, {'tag': 'strong', 'display': 'block', 'x': 53.5, 'y': 7697.046875, 'width': 321.328125, 'height': 22.171875, 'right': 374.828125, 'bottom': 7719.21875}, {'tag': 'small', 'display': 'block', 'x': 53.5, 'y': 7726.21875, 'width': 321.328125, 'height': 41.65625, 'right': 374.828125, 'bottom': 7767.875}, {'tag': 'i', 'display': 'block', 'x': 398.828125, 'y': 7748.671875, 'width': 24, 'height': 19.203125, 'right': 422.828125, 'bottom': 7767.875}] [PASS] RESEARCH-DOCS-DESKTOP-004 — docs avoids clipped or overlapping card text: clipped=0; overlap=False [PASS] RESEARCH-DOCS-DESKTOP-005 — docs preserves horizontal viewport containment: scrollWidth=1365; clientWidth=1365 [PASS] RESEARCH-DOCS-DESKTOP-006 — docs uses the expected responsive column count: templates=['429.328px 429.328px 429.344px 0px']; interpreted_columns=[3] [PASS] RESEARCH-DOCS-MOBILE-001 — docs renders research-link containers as CSS grids: grids=1; displays=['grid']; templates=['370px'] [PASS] RESEARCH-DOCS-MOBILE-002 — docs renders each research link as a structured card: cards=3; minimum=3; displays=['grid'] [PASS] RESEARCH-DOCS-MOBILE-003 — docs separates label, title, description, and arrow text: first-card children=[{'tag': 'span', 'display': 'block', 'x': 33, 'y': 11009, 'width': 286, 'height': 13.8125, 'right': 319, 'bottom': 11022.8125}, {'tag': 'strong', 'display': 'block', 'x': 33, 'y': 11029.8125, 'width': 286, 'height': 18.8125, 'right': 319, 'bottom': 11048.625}, {'tag': 'small', 'display': 'block', 'x': 33, 'y': 11055.625, 'width': 286, 'height': 41.65625, 'right': 319, 'bottom': 11097.28125}, {'tag': 'i', 'display': 'block', 'x': 335, 'y': 11078.078125, 'width': 24, 'height': 19.203125, 'right': 359, 'bottom': 11097.28125}] [PASS] RESEARCH-DOCS-MOBILE-004 — docs avoids clipped or overlapping card text: clipped=0; overlap=False [PASS] RESEARCH-DOCS-MOBILE-005 — docs preserves horizontal viewport containment: scrollWidth=390; clientWidth=390 [PASS] RESEARCH-DOCS-MOBILE-006 — docs uses the expected responsive column count: templates=['370px']; interpreted_columns=[1] [PASS] RESEARCH-STANDARDS-DESKTOP-001 — standards renders research-link containers as CSS grids: grids=1; displays=['grid']; templates=['318px 318px 318px 318px'] [PASS] RESEARCH-STANDARDS-DESKTOP-002 — standards renders each research link as a structured card: cards=18; minimum=12; displays=['grid'] [PASS] RESEARCH-STANDARDS-DESKTOP-003 — standards separates label, title, description, and arrow text: first-card children=[{'tag': 'span', 'display': 'block', 'x': 53.5, 'y': 1038.125, 'width': 210, 'height': 13.8125, 'right': 263.5, 'bottom': 1051.9375}, {'tag': 'strong', 'display': 'block', 'x': 53.5, 'y': 1058.9375, 'width': 210, 'height': 44.34375, 'right': 263.5, 'bottom': 1103.28125}, {'tag': 'small', 'display': 'block', 'x': 53.5, 'y': 1110.28125, 'width': 210, 'height': 62.484375, 'right': 263.5, 'bottom': 1172.765625}, {'tag': 'i', 'display': 'block', 'x': 287.5, 'y': 1153.5625, 'width': 24, 'height': 19.203125, 'right': 311.5, 'bottom': 1172.765625}] [PASS] RESEARCH-STANDARDS-DESKTOP-004 — standards avoids clipped or overlapping card text: clipped=0; overlap=False [PASS] RESEARCH-STANDARDS-DESKTOP-005 — standards preserves horizontal viewport containment: scrollWidth=1365; clientWidth=1365 [PASS] RESEARCH-STANDARDS-DESKTOP-006 — standards uses the expected responsive column count: templates=['318px 318px 318px 318px']; interpreted_columns=[4] [PASS] RESEARCH-STANDARDS-MOBILE-001 — standards renders research-link containers as CSS grids: grids=1; displays=['grid']; templates=['370px'] [PASS] RESEARCH-STANDARDS-MOBILE-002 — standards renders each research link as a structured card: cards=18; minimum=12; displays=['grid'] [PASS] RESEARCH-STANDARDS-MOBILE-003 — standards separates label, title, description, and arrow text: first-card children=[{'tag': 'span', 'display': 'block', 'x': 33, 'y': 1253.875, 'width': 286, 'height': 13.8125, 'right': 319, 'bottom': 1267.6875}, {'tag': 'strong', 'display': 'block', 'x': 33, 'y': 1274.6875, 'width': 286, 'height': 18.8125, 'right': 319, 'bottom': 1293.5}, {'tag': 'small', 'display': 'block', 'x': 33, 'y': 1300.5, 'width': 286, 'height': 62.484375, 'right': 319, 'bottom': 1362.984375}, {'tag': 'i', 'display': 'block', 'x': 335, 'y': 1343.78125, 'width': 24, 'height': 19.203125, 'right': 359, 'bottom': 1362.984375}] [PASS] RESEARCH-STANDARDS-MOBILE-004 — standards avoids clipped or overlapping card text: clipped=0; overlap=False [PASS] RESEARCH-STANDARDS-MOBILE-005 — standards preserves horizontal viewport containment: scrollWidth=390; clientWidth=390 [PASS] RESEARCH-STANDARDS-MOBILE-006 — standards uses the expected responsive column count: templates=['370px']; interpreted_columns=[1] [PASS] RESEARCH-THEME-LIGHT-001 — Research-link hierarchy remains visually distinct in light theme: {"background": "color(srgb 1 1 1 / 0.92)", "body": "rgb(82, 101, 109)", "border": "rgb(203, 215, 211)", "label": "rgb(8, 124, 118)"} [PASS] RESEARCH-THEME-DARK-001 — Research-link hierarchy remains visually distinct in dark theme: {"background": "oklab(0.999994 0.0000455678 0.0000200868 / 0.92)", "body": "rgb(165, 181, 184)", "border": "rgb(203, 215, 211)", "label": "rgb(79, 224, 208)"} Truth boundary: Managed Chromium fixture checks establish computed card hierarchy, responsive columns, text containment, theme separation, and zero horizontal overflow for the tested server-rendered routes. They do not establish human aesthetic preference or comprehension, every browser and font renderer, native assistive-technology speech output, externally hosted production behavior, or field performance.