iphone14 step0 @scrollY=0: {"scrollY": 0, "maxScroll": 117, "panelTop": 618, "sheetH": 218, "sheetVar": "218px", "scrPadBottom": "232px", "navPos": "sticky", "nav": {"top": 97, "bottom": 153}, "next": {"top": 564, "bottom": 614}, "nextTappable": true, "lastOptBottom": 630}
  PASS  iphone14 step0: next bottom <= panelTop-2 @0  {"nextBottom": 614, "panelTop": 618}
  PASS  iphone14 step0: next tappable @0
iphone14 step0 @mid: {"scrollY": 59, "maxScroll": 117, "panelTop": 618, "sheetH": 218, "sheetVar": "218px", "scrPadBottom": "232px", "navPos": "sticky", "nav": {"top": 38, "bottom": 94}, "next": {"top": 564, "bottom": 614}, "nextTappable": true, "lastOptBottom": 571}
  PASS  iphone14 step0: nav pinned mid (navBottom <= panelTop-2)  {"navBottom": 94, "panelTop": 618}
  PASS  iphone14 step0: next still pinned mid (nextBottom <= panelTop-2)  {"nextBottom": 614, "panelTop": 618}
iphone14 step0 @max: {"scrollY": 117, "maxScroll": 117, "panelTop": 618, "sheetH": 218, "sheetVar": "218px", "scrPadBottom": "232px", "navPos": "sticky", "nav": {"top": -20, "bottom": 36}, "next": {"top": 550, "bottom": 600}, "nextTappable": true, "lastOptBottom": 513}
  PASS  iphone14 step0: last opt bottom <= panelTop-2 @max  {"lastOptBottom": 513, "panelTop": 618}
  PASS  iphone14 step0: next tappable @max
iphone14 step13-interests @scrollY=0: {"scrollY": 0, "maxScroll": 6, "panelTop": 618, "sheetH": 218, "sheetVar": "218px", "scrPadBottom": "232px", "navPos": "sticky", "nav": {"top": 97, "bottom": 153}, "next": {"top": 556, "bottom": 606}, "nextTappable": true, "lastOptBottom": 519}
  PASS  iphone14 step13-interests: next bottom <= panelTop-2 @0  {"nextBottom": 606, "panelTop": 618}
  PASS  iphone14 step13-interests: next tappable @0
iphone14 step13-interests @mid: {"scrollY": 3, "maxScroll": 6, "panelTop": 618, "sheetH": 218, "sheetVar": "218px", "scrPadBottom": "232px", "navPos": "sticky", "nav": {"top": 94, "bottom": 150}, "next": {"top": 553, "bottom": 603}, "nextTappable": true, "lastOptBottom": 516}
  PASS  iphone14 step13-interests: nav pinned mid (navBottom <= panelTop-2)  {"navBottom": 150, "panelTop": 618}
  PASS  iphone14 step13-interests: next still pinned mid (nextBottom <= panelTop-2)  {"nextBottom": 603, "panelTop": 618}
iphone14 step13-interests @max: {"scrollY": 6, "maxScroll": 6, "panelTop": 618, "sheetH": 218, "sheetVar": "218px", "scrPadBottom": "232px", "navPos": "sticky", "nav": {"top": 91, "bottom": 147}, "next": {"top": 550, "bottom": 600}, "nextTappable": true, "lastOptBottom": 513}
  PASS  iphone14 step13-interests: last opt bottom <= panelTop-2 @max  {"lastOptBottom": 513, "panelTop": 618}
  PASS  iphone14 step13-interests: next tappable @max
iphone14 income-step3 (doc coords): {"navTop": 97, "navBottom": 153, "navPos": "sticky", "nextTop": 485, "nextBottom": 535, "panelTop": 618, "maxScroll": 0, "scrollY": 0}
  PASS  iphone14: income nav top unchanged (97, round-1)  {"navTop": 97}
  PASS  iphone14: income CTA at round-1 (485) when not stuck, pinned when tall  {"nextTop": 485, "nextBottom": 535, "panelTop": 618, "maxScroll": 0}
iphone14 SWIPE: [{"sel": " #g1", "hasSwipe": true, "inHeader": true, "swipeVisible": true, "swipeText": "swipe \u2192", "texts": 12, "svg": true, "intersectsText": false, "swipeInsideCard": true, "swipe": {"top": 1036, "bottom": 1060, "left": 301, "right": 363}}, {"sel": "#g2", "hasSwipe": true, "inHeader": true, "swipeVisible": true, "swipeText": "swipe \u2192", "texts": 12, "svg": true, "intersectsText": false, "swipeInsideCard": true, "swipe": {"top": 1445, "bottom": 1469, "left": 301, "right": 363}}, {"sel": "#g3", "hasSwipe": true, "inHeader": true, "swipeVisible": true, "swipeText": "swipe \u2192", "texts": 12, "svg": true, "intersectsText": false, "swipeInsideCard": true, "swipe": {"top": 1882, "bottom": 1906, "left": 301, "right": 363}}, {"sel": "#g4", "hasSwipe": true, "inHeader": true, "swipeVisible": true, "swipeText": "swipe \u2192", "texts": 13, "svg": true, "intersectsText": false, "swipeInsideCard": true, "swipe": {"top": 2319, "bottom": 2343, "left": 301, "right": 363}}]
  PASS  iphone14  #g1: swipe hint present+visible
  PASS  iphone14  #g1: swipe does not intersect <text>  {"texts": 12}
  PASS  iphone14  #g1: swipe inside card bounds
  PASS  iphone14 #g2: swipe hint present+visible
  PASS  iphone14 #g2: swipe does not intersect <text>  {"texts": 12}
  PASS  iphone14 #g2: swipe inside card bounds
  PASS  iphone14 #g3: swipe hint present+visible
  PASS  iphone14 #g3: swipe does not intersect <text>  {"texts": 12}
  PASS  iphone14 #g3: swipe inside card bounds
  PASS  iphone14 #g4: swipe hint present+visible
  PASS  iphone14 #g4: swipe does not intersect <text>  {"texts": 13}
  PASS  iphone14 #g4: swipe inside card bounds
  PASS  iphone14: swipe on all 4 charts
iphone14 HASH-ANCHOR: {"scrollY": 2662, "targetTop": 70, "hdrBottom": 55}
  PASS  iphone14: anchor scrollY > 0  {"scrollY": 2662}
  PASS  iphone14: #whatif clears sticky header  {"targetTop": 70, "hdrBottom": 55}
pixel step0 @scrollY=0: {"scrollY": 0, "maxScroll": 161, "panelTop": 574, "sheetH": 218, "sheetVar": "218px", "scrPadBottom": "232px", "navPos": "sticky", "nav": {"top": 97, "bottom": 153}, "next": {"top": 520, "bottom": 570}, "nextTappable": true, "lastOptBottom": 630}
  PASS  pixel step0: next bottom <= panelTop-2 @0  {"nextBottom": 570, "panelTop": 574}
  PASS  pixel step0: next tappable @0
pixel step0 @mid: {"scrollY": 81, "maxScroll": 161, "panelTop": 574, "sheetH": 218, "sheetVar": "218px", "scrPadBottom": "232px", "navPos": "sticky", "nav": {"top": 16, "bottom": 72}, "next": {"top": 520, "bottom": 570}, "nextTappable": true, "lastOptBottom": 549}
  PASS  pixel step0: nav pinned mid (navBottom <= panelTop-2)  {"navBottom": 72, "panelTop": 574}
  PASS  pixel step0: next still pinned mid (nextBottom <= panelTop-2)  {"nextBottom": 570, "panelTop": 574}
pixel step0 @max: {"scrollY": 161, "maxScroll": 161, "panelTop": 574, "sheetH": 218, "sheetVar": "218px", "scrPadBottom": "232px", "navPos": "sticky", "nav": {"top": -64, "bottom": -8}, "next": {"top": 506, "bottom": 556}, "nextTappable": true, "lastOptBottom": 469}
  PASS  pixel step0: last opt bottom <= panelTop-2 @max  {"lastOptBottom": 469, "panelTop": 574}
  PASS  pixel step0: next tappable @max
pixel step13-interests @scrollY=0: {"scrollY": 0, "maxScroll": 109, "panelTop": 574, "sheetH": 218, "sheetVar": "218px", "scrPadBottom": "232px", "navPos": "sticky", "nav": {"top": 97, "bottom": 153}, "next": {"top": 520, "bottom": 570}, "nextTappable": true, "lastOptBottom": 578}
  PASS  pixel step13-interests: next bottom <= panelTop-2 @0  {"nextBottom": 570, "panelTop": 574}
  PASS  pixel step13-interests: next tappable @0
pixel step13-interests @mid: {"scrollY": 55, "maxScroll": 109, "panelTop": 574, "sheetH": 218, "sheetVar": "218px", "scrPadBottom": "232px", "navPos": "sticky", "nav": {"top": 42, "bottom": 98}, "next": {"top": 520, "bottom": 570}, "nextTappable": true, "lastOptBottom": 523}
  PASS  pixel step13-interests: nav pinned mid (navBottom <= panelTop-2)  {"navBottom": 98, "panelTop": 574}
  PASS  pixel step13-interests: next still pinned mid (nextBottom <= panelTop-2)  {"nextBottom": 570, "panelTop": 574}
pixel step13-interests @max: {"scrollY": 109, "maxScroll": 109, "panelTop": 574, "sheetH": 218, "sheetVar": "218px", "scrPadBottom": "232px", "navPos": "sticky", "nav": {"top": -12, "bottom": 44}, "next": {"top": 506, "bottom": 556}, "nextTappable": true, "lastOptBottom": 469}
  PASS  pixel step13-interests: last opt bottom <= panelTop-2 @max  {"lastOptBottom": 469, "panelTop": 574}
  PASS  pixel step13-interests: next tappable @max
pixel income-step3 (doc coords): {"navTop": 97, "navBottom": 153, "navPos": "sticky", "nextTop": 485, "nextBottom": 535, "panelTop": 574, "maxScroll": 0, "scrollY": 0}
  PASS  pixel: income nav top unchanged (97, round-1)  {"navTop": 97}
  PASS  pixel: income CTA at round-1 (485) when not stuck, pinned when tall  {"nextTop": 485, "nextBottom": 535, "panelTop": 574, "maxScroll": 0}
pixel SWIPE: [{"sel": " #g1", "hasSwipe": true, "inHeader": true, "swipeVisible": true, "swipeText": "swipe \u2192", "texts": 12, "svg": true, "intersectsText": false, "swipeInsideCard": true, "swipe": {"top": 1085, "bottom": 1109, "left": 271, "right": 333}}, {"sel": "#g2", "hasSwipe": true, "inHeader": true, "swipeVisible": true, "swipeText": "swipe \u2192", "texts": 12, "svg": true, "intersectsText": false, "swipeInsideCard": true, "swipe": {"top": 1522, "bottom": 1545, "left": 271, "right": 333}}, {"sel": "#g3", "hasSwipe": true, "inHeader": true, "swipeVisible": true, "swipeText": "swipe \u2192", "texts": 12, "svg": true, "intersectsText": false, "swipeInsideCard": true, "swipe": {"top": 1959, "bottom": 1982, "left": 271, "right": 333}}, {"sel": "#g4", "hasSwipe": true, "inHeader": true, "swipeVisible": true, "swipeText": "swipe \u2192", "texts": 13, "svg": true, "intersectsText": false, "swipeInsideCard": true, "swipe": {"top": 2428, "bottom": 2451, "left": 271, "right": 333}}]
  PASS  pixel  #g1: swipe hint present+visible
  PASS  pixel  #g1: swipe does not intersect <text>  {"texts": 12}
  PASS  pixel  #g1: swipe inside card bounds
  PASS  pixel #g2: swipe hint present+visible
  PASS  pixel #g2: swipe does not intersect <text>  {"texts": 12}
  PASS  pixel #g2: swipe inside card bounds
  PASS  pixel #g3: swipe hint present+visible
  PASS  pixel #g3: swipe does not intersect <text>  {"texts": 12}
  PASS  pixel #g3: swipe inside card bounds
  PASS  pixel #g4: swipe hint present+visible
  PASS  pixel #g4: swipe does not intersect <text>  {"texts": 13}
  PASS  pixel #g4: swipe inside card bounds
  PASS  pixel: swipe on all 4 charts
pixel HASH-ANCHOR: {"scrollY": 2771, "targetTop": 70, "hdrBottom": 55}
  PASS  pixel: anchor scrollY > 0  {"scrollY": 2771}
  PASS  pixel: #whatif clears sticky header  {"targetTop": 70, "hdrBottom": 55}
se step0 @scrollY=0: {"scrollY": 0, "maxScroll": 295, "panelTop": 474, "sheetH": 218, "sheetVar": "218px", "scrPadBottom": "232px", "navPos": "sticky", "nav": {"top": 97, "bottom": 153}, "next": {"top": 420, "bottom": 470}, "nextTappable": true, "lastOptBottom": 664}
  PASS  se step0: next bottom <= panelTop-2 @0  {"nextBottom": 470, "panelTop": 474}
  PASS  se step0: next tappable @0
se step0 @mid: {"scrollY": 148, "maxScroll": 295, "panelTop": 474, "sheetH": 218, "sheetVar": "218px", "scrPadBottom": "232px", "navPos": "sticky", "nav": {"top": -51, "bottom": 5}, "next": {"top": 420, "bottom": 470}, "nextTappable": true, "lastOptBottom": 516}
  PASS  se step0: nav pinned mid (navBottom <= panelTop-2)  {"navBottom": 5, "panelTop": 474}
  PASS  se step0: next still pinned mid (nextBottom <= panelTop-2)  {"nextBottom": 470, "panelTop": 474}
se step0 @max: {"scrollY": 295, "maxScroll": 295, "panelTop": 474, "sheetH": 218, "sheetVar": "218px", "scrPadBottom": "232px", "navPos": "sticky", "nav": {"top": -198, "bottom": -142}, "next": {"top": 406, "bottom": 456}, "nextTappable": true, "lastOptBottom": 369}
  PASS  se step0: last opt bottom <= panelTop-2 @max  {"lastOptBottom": 369, "panelTop": 474}
  PASS  se step0: next tappable @max
se step13-interests @scrollY=0: {"scrollY": 0, "maxScroll": 240, "panelTop": 474, "sheetH": 218, "sheetVar": "218px", "scrPadBottom": "232px", "navPos": "sticky", "nav": {"top": 97, "bottom": 153}, "next": {"top": 420, "bottom": 470}, "nextTappable": true, "lastOptBottom": 609}
  PASS  se step13-interests: next bottom <= panelTop-2 @0  {"nextBottom": 470, "panelTop": 474}
  PASS  se step13-interests: next tappable @0
se step13-interests @mid: {"scrollY": 120, "maxScroll": 240, "panelTop": 474, "sheetH": 218, "sheetVar": "218px", "scrPadBottom": "232px", "navPos": "sticky", "nav": {"top": -23, "bottom": 33}, "next": {"top": 420, "bottom": 470}, "nextTappable": true, "lastOptBottom": 489}
  PASS  se step13-interests: nav pinned mid (navBottom <= panelTop-2)  {"navBottom": 33, "panelTop": 474}
  PASS  se step13-interests: next still pinned mid (nextBottom <= panelTop-2)  {"nextBottom": 470, "panelTop": 474}
se step13-interests @max: {"scrollY": 240, "maxScroll": 240, "panelTop": 474, "sheetH": 218, "sheetVar": "218px", "scrPadBottom": "232px", "navPos": "sticky", "nav": {"top": -143, "bottom": -87}, "next": {"top": 406, "bottom": 456}, "nextTappable": true, "lastOptBottom": 369}
  PASS  se step13-interests: last opt bottom <= panelTop-2 @max  {"lastOptBottom": 369, "panelTop": 474}
  PASS  se step13-interests: next tappable @max
se income-step3 (doc coords): {"navTop": 97, "navBottom": 153, "navPos": "sticky", "nextTop": 420, "nextBottom": 470, "panelTop": 474, "maxScroll": 79, "scrollY": 0}
  PASS  se: income nav top unchanged (97, round-1)  {"navTop": 97}
  PASS  se: income CTA at round-1 (485) when not stuck, pinned when tall  {"nextTop": 420, "nextBottom": 470, "panelTop": 474, "maxScroll": 79}
se SWIPE: [{"sel": " #g1", "hasSwipe": true, "inHeader": true, "swipeVisible": true, "swipeText": "swipe \u2192", "texts": 12, "svg": true, "intersectsText": false, "swipeInsideCard": true, "swipe": {"top": 1108, "bottom": 1132, "left": 231, "right": 293}}, {"sel": "#g2", "hasSwipe": true, "inHeader": true, "swipeVisible": true, "swipeText": "swipe \u2192", "texts": 12, "svg": true, "intersectsText": false, "swipeInsideCard": true, "swipe": {"top": 1566, "bottom": 1590, "left": 231, "right": 293}}, {"sel": "#g3", "hasSwipe": true, "inHeader": true, "swipeVisible": true, "swipeText": "swipe \u2192", "texts": 12, "svg": true, "intersectsText": false, "swipeInsideCard": true, "swipe": {"top": 2035, "bottom": 2059, "left": 231, "right": 293}}, {"sel": "#g4", "hasSwipe": true, "inHeader": true, "swipeVisible": true, "swipeText": "swipe \u2192", "texts": 13, "svg": true, "intersectsText": false, "swipeInsideCard": true, "swipe": {"top": 2504, "bottom": 2528, "left": 231, "right": 293}}]
  PASS  se  #g1: swipe hint present+visible
  PASS  se  #g1: swipe does not intersect <text>  {"texts": 12}
  PASS  se  #g1: swipe inside card bounds
  PASS  se #g2: swipe hint present+visible
  PASS  se #g2: swipe does not intersect <text>  {"texts": 12}
  PASS  se #g2: swipe inside card bounds
  PASS  se #g3: swipe hint present+visible
  PASS  se #g3: swipe does not intersect <text>  {"texts": 12}
  PASS  se #g3: swipe inside card bounds
  PASS  se #g4: swipe hint present+visible
  PASS  se #g4: swipe does not intersect <text>  {"texts": 13}
  PASS  se #g4: swipe inside card bounds
  PASS  se: swipe on all 4 charts
se HASH-ANCHOR: {"scrollY": 2896, "targetTop": 70, "hdrBottom": 55}
  PASS  se: anchor scrollY > 0  {"scrollY": 2896}
  PASS  se: #whatif clears sticky header  {"targetTop": 70, "hdrBottom": 55}
desk1280 DESKTOP-QUIZ: {"navPos": "static", "scrPadBottom": "80px", "navTop": 107}
  PASS  desk1280: .step-nav position static  {"navPos": "static"}
  PASS  desk1280: .scr padding-bottom 80px  {"pad": "80px"}
desk1280 DESKTOP-SWIPE: [{"sel": "#g1", "present": true, "visible": false}, {"sel": "#g2", "present": true, "visible": false}, {"sel": "#g3", "present": true, "visible": false}, {"sel": "#g4", "present": true, "visible": false}]
  PASS  desk1280: desktop swipe hidden  [{"sel": "#g1", "present": true, "visible": false}, {"sel": "#g2", "present": true, "visible": false}, {"sel": "#g3", "present": true, "visible": false}, {"sel": "#g4", "present": true, "visible": false}]

VERIFY2-OK
