ticker fail

The services slide past in one slow line and stop the moment the reader hovers, focuses or presses Pause, so the whole range of work is seen at a glance without a list to read.

Earns its place when: Four or more offerings with short names (under about 40 characters) that the page would otherwise list in a plain row, on a page with room for one quiet band.

Never when: Over body copy or a photo, with names that are long sentences, with links the reader must tap while they move, or when the services are already shown as cards on the same screen.

Measured: A marquee puts text across the 16px page edge at every moment, which the rubric (R4 gutter) names on two of three accounts, and the one clean read (KMG) is a phase of the loop, not a property of the device; K&V also trips nothing-covers-text.

Not in the brief or the generator. It enters only if Ryan picks it.

HELF Hardscaping (light trade) fail

lint: no new finding at 1440 or 393 (scripts on and off, reduced motion). rubric new: R4 gutter: 2 text block(s) inside the 16px edge at 1440: "Pavers and Flagstone" -175px from the left; "Commercial Snow Removal and Parking Lot Salting; R4 gutter: 1 text block(s) inside the 16px edge at 390: "Pavers and Flagstone" -196px from the left. 19 device checks passed.

Open the live page with it on · the same page without it

Motion lint, new findings1440: none
390: none
Rubric (1440 and 390)2 findings with it, 0 without. New: R4 gutter: 2 text block(s) inside the 16px edge at 1440: "Pavers and Flagstone" -175px from the left; "Commercial Snow Removal and Parking Lot Salting" ; R4 gutter: 1 text block(s) inside the 16px edge at 390: "Pavers and Flagstone" -196px from the left
Checks (scripts on, off, reduced motion)
  • ok 1440: no new opacity-hidden text at load (scripts on): on 0, off 0
  • ok 1440: no sideways overflow: scrollWidth 1440 vs 1440
  • ok 1440: the line is moving: -112.8 -> -157.3
  • ok 1440: every repeat is aria-hidden: {"d":4,"ah":true,"tot":8}
  • ok 1440: hover stops it: -173.16 -> -173.16
  • ok 1440: the Pause button stops it: -173.16 -> -173.16
  • ok 1440: reduced motion is the static list: animations+repeats 0
  • ok 1440: scripts off is a static list with no button: {"n":4,"anim":"none","btn":"none"}
  • ok 1440: no new hidden text with scripts off: on 0, off 0
  • ok 390: no new opacity-hidden text at load (scripts on): on 0, off 0
  • ok 390: no sideways overflow: scrollWidth 390 vs 390
  • ok 390: the line is moving: -93.4 -> -130.7
  • ok 390: every repeat is aria-hidden: {"d":4,"ah":true,"tot":8}
  • ok 390: the Pause button stops it: -130.72 -> -131.13
  • ok 390: reduced motion is the static list: animations+repeats 0
  • ok 390: scripts off is a static list with no button: {"n":4,"anim":"none","btn":"none"}
  • ok 390: no new hidden text with scripts off: on 0, off 0
Page height with it vs without: 1440 7721 vs 7607, 390 9339 vs 9232 (px)

Without it, then with it

Without it, 1440
Without it, 1440
With it, 1440
With it, 1440
Without it, 390
Without it, 390
With it, 390
With it, 390

The motion, 1440 wide

1440, frame 1
1440, frame 1
1440, frame 2
1440, frame 2
1440, frame 3
1440, frame 3

The motion, 390 wide

390, frame 1
390, frame 1
390, frame 2
390, frame 2
390, frame 3
390, frame 3

KMG Heating & Plumbing (dark trade) pass

lint: no new finding at 1440 or 393 (scripts on and off, reduced motion). rubric: no new finding at 1440 or 390 (14 with it, 13 without). 19 device checks passed.

Open the live page with it on · the same page without it

Motion lint, new findings1440: none
390: none
Rubric (1440 and 390)14 findings with it, 13 without. New: none
Checks (scripts on, off, reduced motion)
  • ok 1440: no new opacity-hidden text at load (scripts on): on 0, off 0
  • ok 1440: no sideways overflow: scrollWidth 1440 vs 1440
  • ok 1440: the line is moving: -108.0 -> -151.5
  • ok 1440: every repeat is aria-hidden: {"d":4,"ah":true,"tot":8}
  • ok 1440: hover stops it: -166.41 -> -166.41
  • ok 1440: the Pause button stops it: -166.41 -> -166.41
  • ok 1440: reduced motion is the static list: animations+repeats 0
  • ok 1440: scripts off is a static list with no button: {"n":4,"anim":"none","btn":"none"}
  • ok 1440: no new hidden text with scripts off: on 0, off 0
  • ok 390: no new opacity-hidden text at load (scripts on): on 0, off 0
  • ok 390: no sideways overflow: scrollWidth 390 vs 390
  • ok 390: the line is moving: -90.8 -> -127.3
  • ok 390: every repeat is aria-hidden: {"d":4,"ah":true,"tot":8}
  • ok 390: the Pause button stops it: -127.30 -> -127.70
  • ok 390: reduced motion is the static list: animations+repeats 0
  • ok 390: scripts off is a static list with no button: {"n":4,"anim":"none","btn":"none"}
  • ok 390: no new hidden text with scripts off: on 0, off 0
Page height with it vs without: 1440 8794 vs 8680, 390 10311 vs 10204 (px)

Without it, then with it

Without it, 1440
Without it, 1440
With it, 1440
With it, 1440
Without it, 390
Without it, 390
With it, 390
With it, 390

The motion, 1440 wide

1440, frame 1
1440, frame 1
1440, frame 2
1440, frame 2
1440, frame 3
1440, frame 3

The motion, 390 wide

390, frame 1
390, frame 1
390, frame 2
390, frame 2
390, frame 3
390, frame 3

Kettle & Vine (restaurant) fail

lint new: desktop nothing-covers-text: 190 hit(s); phone nothing-covers-text: 257 hit(s). rubric new: R4 gutter: 2 text block(s) inside the 16px edge at 1440: "Large Parties" 9px from the left; "Private Dining Room" 1380px from the left; R2 motion-with-meaning: 1 element(s) change with scroll alone at 1440 (0 line(s) that grow or slide, 1 text(s) that re-colour or fade): "02" (screen a; R4 gutter: 2 text block(s) inside the 16px edge at 390: "Table Reservations" -117px from the left; "Private Dining Room" 309px from the left. 19 device checks passed.

Open the live page with it on · the same page without it

Motion lint, new findings1440: desktop: nothing-covers-text: 190 hit(s)
390: phone: nothing-covers-text: 257 hit(s)
Rubric (1440 and 390)16 findings with it, 15 without. New: R4 gutter: 2 text block(s) inside the 16px edge at 1440: "Large Parties" 9px from the left; "Private Dining Room" 1380px from the left ; R2 motion-with-meaning: 1 element(s) change with scroll alone at 1440 (0 line(s) that grow or slide, 1 text(s) that re-colour or fade): "02" (screen at y 6020) ; R4 gutter: 2 text block(s) inside the 16px edge at 390: "Table Reservations" -117px from the left; "Private Dining Room" 309px from the left
Cleared by it: R9 no-overlap ; R9 no-overlap
Checks (scripts on, off, reduced motion)
  • ok 1440: no new opacity-hidden text at load (scripts on): on 39, off 39
  • ok 1440: no sideways overflow: scrollWidth 1440 vs 1440
  • ok 1440: the line is moving: -150.7 -> -210.5
  • ok 1440: every repeat is aria-hidden: {"d":15,"ah":true,"tot":20}
  • ok 1440: hover stops it: -231.04 -> -231.04
  • ok 1440: the Pause button stops it: -231.71 -> -231.71
  • ok 1440: reduced motion is the static list: animations+repeats 0
  • ok 1440: scripts off is a static list with no button: {"n":5,"anim":"none","btn":"none"}
  • ok 1440: no new hidden text with scripts off: on 0, off 0
  • ok 390: no new opacity-hidden text at load (scripts on): on 39, off 39
  • ok 390: no sideways overflow: scrollWidth 390 vs 390
  • ok 390: the line is moving: -65.7 -> -92.0
  • ok 390: every repeat is aria-hidden: {"d":5,"ah":true,"tot":10}
  • ok 390: the Pause button stops it: -92.04 -> -92.33
  • ok 390: reduced motion is the static list: animations+repeats 0
  • ok 390: scripts off is a static list with no button: {"n":5,"anim":"none","btn":"none"}
  • ok 390: no new hidden text with scripts off: on 0, off 0
Page height with it vs without: 1440 12915 vs 12799, 390 12311 vs 12201 (px)

Without it, then with it

Without it, 1440
Without it, 1440
With it, 1440
With it, 1440
Without it, 390
Without it, 390
With it, 390
With it, 390

The motion, 1440 wide

1440, frame 1
1440, frame 1
1440, frame 2
1440, frame 2
1440, frame 3
1440, frame 3

The motion, 390 wide

390, frame 1
390, frame 1
390, frame 2
390, frame 2
390, frame 3
390, frame 3