[{"type":3,"data":{"source":1,"positions":[{"x":1485,"y":370,"id":24,"timeOffset":0}]},"timestamp":1786408502665},{"type":4,"data":{"href":"https://northrail.uxsense.ai/","width":1920,"height":963},"timestamp":1786408502665},{"type":2,"data":{"node":{"type":0,"childNodes":[{"type":1,"name":"html","publicId":"","systemId":"","id":2},{"type":2,"tagName":"html","attributes":{"lang":"en"},"childNodes":[{"type":2,"tagName":"head","attributes":{},"childNodes":[{"type":3,"textContent":"\n    ","id":5},{"type":2,"tagName":"meta","attributes":{"charset":"UTF-8"},"childNodes":[],"id":6},{"type":3,"textContent":"\n    ","id":7},{"type":2,"tagName":"meta","attributes":{"name":"viewport","content":"width=device-width, initial-scale=1.0"},"childNodes":[],"id":8},{"type":3,"textContent":"\n    ","id":9},{"type":2,"tagName":"title","attributes":{},"childNodes":[{"type":3,"textContent":"Northwind Rail — book a seat","id":11}],"id":10},{"type":3,"textContent":"\n    ","id":12},{"type":2,"tagName":"meta","attributes":{"name":"description","content":"Demo booking app used to demonstrate UXSense Drift on a pull request."},"childNodes":[],"id":13},{"type":3,"textContent":"\n    ","id":14},{"type":2,"tagName":"script","attributes":{"type":"module","crossorigin":"","src":"https://northrail.uxsense.ai/assets/index-D6QSSJUS.js"},"childNodes":[],"id":15},{"type":3,"textContent":"\n    ","id":16},{"type":2,"tagName":"link","attributes":{"crossorigin":"","_cssText":":root { --ink: #16202c; --ink-soft: #5a6b7d; --line: #d9e0e8; --surface: #ffffff; --page: #f4f6f9; --accent: #0b5cd5; --accent-ink: #ffffff; --danger: #b3261e; --radius: 10px; }* { box-sizing: border-box; }body { margin: 0px; background: var(--page); color: var(--ink); font: 16px / 1.55 -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif; }.app { max-width: 46rem; margin: 0px auto; padding: 1.5rem 1rem 4rem; }.masthead { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding-bottom: 1rem; border-bottom: 1px solid var(--line); }.masthead__brand { font-size: 1.15rem; font-weight: 700; color: var(--ink); text-decoration: none; letter-spacing: -0.01em; }.masthead__note { margin: 0px; color: var(--ink-soft); font-size: 0.85rem; }.main { padding-top: 1.5rem; }h1 { font-size: 1.6rem; line-height: 1.25; margin: 0px 0px 0.35rem; letter-spacing: -0.015em; }.lede { margin: 0px 0px 1.25rem; color: var(--ink-soft); }.card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.25rem; display: grid; gap: 1rem; }.row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }.field { display: grid; gap: 0.35rem; }.field__label { font-weight: 600; font-size: 0.92rem; }.field__hint { margin: 0px; color: var(--ink-soft); font-size: 0.85rem; }.field__error { margin: 0px; color: var(--danger); font-size: 0.85rem; }input, select { font: inherit; color: inherit; padding: 0.6rem 0.7rem; border: 1px solid var(--line); border-radius: 8px; background: rgb(255, 255, 255); width: 100%; min-height: 44px; }input:focus-visible, select:focus-visible, .button:focus-visible { outline: rgb(157, 192, 255) solid 3px; outline-offset: 1px; }.field--invalid input, .field--invalid select { border-color: var(--danger); }.button { font-style: inherit; font-variant: inherit; font-stretch: inherit; font-size: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-language-override: inherit; font-weight: 600; border-radius: 8px; border: 1px solid transparent; padding: 0.7rem 1.1rem; min-height: 44px; cursor: pointer; text-decoration: none; display: inline-flex; align-items: center; justify-content: center; }.button--primary { background: var(--accent); color: var(--accent-ink); }.button--primary:hover { background: rgb(8, 74, 173); }.button--quiet { background: transparent; border-color: var(--line); color: var(--ink); margin-top: 1rem; }.stepper { display: flex; flex-wrap: wrap; gap: 0.75rem; list-style: none; margin: 0px 0px 1.5rem; padding: 0px; font-size: 0.85rem; color: var(--ink-soft); }.stepper__step { display: flex; align-items: center; gap: 0.4rem; }.stepper__index { display: inline-flex; align-items: center; justify-content: center; width: 1.5rem; height: 1.5rem; border-radius: 50%; border: 1px solid var(--line); background: rgb(255, 255, 255); font-weight: 600; }.stepper__step--current { color: var(--ink); font-weight: 600; }.stepper__step--current .stepper__index { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }.stepper__step--done .stepper__index { background: rgb(223, 234, 255); border-color: rgb(185, 210, 255); color: rgb(8, 56, 127); }.services { list-style: none; margin: 0px; padding: 0px; display: grid; gap: 0.75rem; }.service { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 1rem; display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 1rem; }.service__times, .service__fare { display: grid; }.service__meta { color: var(--ink-soft); font-size: 0.85rem; }.summary { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 1rem; display: grid; gap: 0.6rem; margin-bottom: 1.25rem; }.summary__label { display: block; color: var(--ink-soft); font-size: 0.85rem; }.reference { letter-spacing: 0.08em; }.footer { margin-top: 3rem; padding-top: 1rem; border-top: 1px solid var(--line); color: var(--ink-soft); font-size: 0.85rem; }.footer a { color: var(--accent); }@media (max-width: 34rem) {\n  .row { grid-template-columns: 1fr; }\n  .service { grid-template-columns: 1fr; align-items: start; }\n  .service .button { width: 100%; }\n}"},"childNodes":[],"id":17},{"type":3,"textContent":"\n    ","id":18},{"type":2,"tagName":"script","attributes":{"src":"https://app.uxsense.ai/api/r.js?id=78498d24-6ca4-46d4-81e4-f6da097e24e4","async":"","defer":""},"childNodes":[],"id":19},{"type":3,"textContent":"\n  ","id":20}],"id":4},{"type":3,"textContent":"\n  ","id":21},{"type":2,"tagName":"body","attributes":{},"childNodes":[{"type":3,"textContent":"\n    ","id":23},{"type":2,"tagName":"div","attributes":{"id":"root"},"childNodes":[{"type":2,"tagName":"div","attributes":{"class":"app"},"childNodes":[{"type":2,"tagName":"header","attributes":{"class":"masthead"},"childNodes":[{"type":2,"tagName":"a","attributes":{"class":"masthead__brand","href":"https://northrail.uxsense.ai/"},"childNodes":[{"type":3,"textContent":"Northwind Rail","id":28}],"id":27},{"type":2,"tagName":"p","attributes":{"class":"masthead__note"},"childNodes":[{"type":3,"textContent":"Demo app — no real trains, no real payments.","id":30}],"id":29}],"id":26},{"type":2,"tagName":"main","attributes":{"class":"main"},"childNodes":[{"type":2,"tagName":"ol","attributes":{"class":"stepper","aria-label":"Booking progress","data-uxs":"30578197"},"childNodes":[{"type":2,"tagName":"li","attributes":{"class":"stepper__step stepper__step--current","data-uxs":"f39fd7a6"},"childNodes":[{"type":2,"tagName":"span","attributes":{"class":"stepper__index"},"childNodes":[{"type":3,"textContent":"1","id":35}],"id":34},{"type":2,"tagName":"span","attributes":{"class":"stepper__label"},"childNodes":[{"type":3,"textContent":"Search","id":37}],"id":36}],"id":33},{"type":2,"tagName":"li","attributes":{"class":"stepper__step stepper__step--todo","data-uxs":"f39fd7a6"},"childNodes":[{"type":2,"tagName":"span","attributes":{"class":"stepper__index"},"childNodes":[{"type":3,"textContent":"2","id":40}],"id":39},{"type":2,"tagName":"span","attributes":{"class":"stepper__label"},"childNodes":[{"type":3,"textContent":"Choose train","id":42}],"id":41}],"id":38},{"type":2,"tagName":"li","attributes":{"class":"stepper__step stepper__step--todo","data-uxs":"f39fd7a6"},"childNodes":[{"type":2,"tagName":"span","attributes":{"class":"stepper__index"},"childNodes":[{"type":3,"textContent":"3","id":45}],"id":44},{"type":2,"tagName":"span","attributes":{"class":"stepper__label"},"childNodes":[{"type":3,"textContent":"Passenger","id":47}],"id":46}],"id":43},{"type":2,"tagName":"li","attributes":{"class":"stepper__step stepper__step--todo","data-uxs":"f39fd7a6"},"childNodes":[{"type":2,"tagName":"span","attributes":{"class":"stepper__index"},"childNodes":[{"type":3,"textContent":"4","id":50}],"id":49},{"type":2,"tagName":"span","attributes":{"class":"stepper__label"},"childNodes":[{"type":3,"textContent":"Payment","id":52}],"id":51}],"id":48},{"type":2,"tagName":"li","attributes":{"class":"stepper__step stepper__step--todo","data-uxs":"f39fd7a6"},"childNodes":[{"type":2,"tagName":"span","attributes":{"class":"stepper__index"},"childNodes":[{"type":3,"textContent":"5","id":55}],"id":54},{"type":2,"tagName":"span","attributes":{"class":"stepper__label"},"childNodes":[{"type":3,"textContent":"Confirmation","id":57}],"id":56}],"id":53}],"id":32},{"type":2,"tagName":"h1","attributes":{},"childNodes":[{"type":3,"textContent":"Where are you going?","id":59}],"id":58},{"type":2,"tagName":"p","attributes":{"class":"lede"},"childNodes":[{"type":3,"textContent":"Find a seat on today’s services. Tickets are held for 20 minutes once you reach payment.","id":61}],"id":60},{"type":2,"tagName":"form","attributes":{"class":"card","novalidate":""},"childNodes":[{"type":2,"tagName":"div","attributes":{"class":"field","data-uxs":"ab38bfc5"},"childNodes":[{"type":2,"tagName":"label","attributes":{"class":"field__label","for":"origin"},"childNodes":[{"type":3,"textContent":"From","id":65}],"id":64},{"type":2,"tagName":"select","attributes":{"id":"origin","name":"origin","value":"London Paddington"},"childNodes":[{"type":2,"tagName":"option","attributes":{"value":""},"childNodes":[{"type":3,"textContent":"Select a station","id":68}],"id":67},{"type":2,"tagName":"option","attributes":{"value":"Bristol Temple Meads","data-uxs":"29699871"},"childNodes":[{"type":3,"textContent":"Bristol Temple Meads","id":70}],"id":69},{"type":2,"tagName":"option","attributes":{"value":"Cardiff Central","data-uxs":"29699871"},"childNodes":[{"type":3,"textContent":"Cardiff Central","id":72}],"id":71},{"type":2,"tagName":"option","attributes":{"value":"Edinburgh Waverley","data-uxs":"29699871"},"childNodes":[{"type":3,"textContent":"Edinburgh Waverley","id":74}],"id":73},{"type":2,"tagName":"option","attributes":{"value":"Leeds","data-uxs":"29699871"},"childNodes":[{"type":3,"textContent":"Leeds","id":76}],"id":75},{"type":2,"tagName":"option","attributes":{"value":"Liverpool Lime Street","data-uxs":"29699871"},"childNodes":[{"type":3,"textContent":"Liverpool Lime Street","id":78}],"id":77},{"type":2,"tagName":"option","attributes":{"value":"London Paddington","data-uxs":"29699871","selected":true},"childNodes":[{"type":3,"textContent":"London Paddington","id":80}],"id":79},{"type":2,"tagName":"option","attributes":{"value":"Manchester Piccadilly","data-uxs":"29699871"},"childNodes":[{"type":3,"textContent":"Manchester Piccadilly","id":82}],"id":81},{"type":2,"tagName":"option","attributes":{"value":"Newcastle","data-uxs":"29699871"},"childNodes":[{"type":3,"textContent":"Newcastle","id":84}],"id":83},{"type":2,"tagName":"option","attributes":{"value":"York","data-uxs":"29699871"},"childNodes":[{"type":3,"textContent":"York","id":86}],"id":85}],"id":66}],"id":63},{"type":2,"tagName":"div","attributes":{"class":"field","data-uxs":"ab38bfc5"},"childNodes":[{"type":2,"tagName":"label","attributes":{"class":"field__label","for":"destination"},"childNodes":[{"type":3,"textContent":"To","id":89}],"id":88},{"type":2,"tagName":"select","attributes":{"id":"destination","name":"destination"},"childNodes":[{"type":2,"tagName":"option","attributes":{"value":"","selected":true},"childNodes":[{"type":3,"textContent":"Select a station","id":92}],"id":91},{"type":2,"tagName":"option","attributes":{"value":"Bristol Temple Meads","data-uxs":"5ca2185f"},"childNodes":[{"type":3,"textContent":"Bristol Temple Meads","id":94}],"id":93},{"type":2,"tagName":"option","attributes":{"value":"Cardiff Central","data-uxs":"5ca2185f"},"childNodes":[{"type":3,"textContent":"Cardiff Central","id":96}],"id":95},{"type":2,"tagName":"option","attributes":{"value":"Edinburgh Waverley","data-uxs":"5ca2185f"},"childNodes":[{"type":3,"textContent":"Edinburgh Waverley","id":98}],"id":97},{"type":2,"tagName":"option","attributes":{"value":"Leeds","data-uxs":"5ca2185f"},"childNodes":[{"type":3,"textContent":"Leeds","id":100}],"id":99},{"type":2,"tagName":"option","attributes":{"value":"Liverpool Lime Street","data-uxs":"5ca2185f"},"childNodes":[{"type":3,"textContent":"Liverpool Lime Street","id":102}],"id":101},{"type":2,"tagName":"option","attributes":{"value":"London Paddington","data-uxs":"5ca2185f"},"childNodes":[{"type":3,"textContent":"London Paddington","id":104}],"id":103},{"type":2,"tagName":"option","attributes":{"value":"Manchester Piccadilly","data-uxs":"5ca2185f"},"childNodes":[{"type":3,"textContent":"Manchester Piccadilly","id":106}],"id":105},{"type":2,"tagName":"option","attributes":{"value":"Newcastle","data-uxs":"5ca2185f"},"childNodes":[{"type":3,"textContent":"Newcastle","id":108}],"id":107},{"type":2,"tagName":"option","attributes":{"value":"York","data-uxs":"5ca2185f"},"childNodes":[{"type":3,"textContent":"York","id":110}],"id":109}],"id":90}],"id":87},{"type":2,"tagName":"div","attributes":{"class":"row"},"childNodes":[{"type":2,"tagName":"div","attributes":{"class":"field","data-uxs":"ab38bfc5"},"childNodes":[{"type":2,"tagName":"label","attributes":{"class":"field__label","for":"date"},"childNodes":[{"type":3,"textContent":"Travel date","id":114}],"id":113},{"type":2,"tagName":"input","attributes":{"id":"date","name":"date","type":"date","value":"2026-08-11"},"childNodes":[],"id":115}],"id":112},{"type":2,"tagName":"div","attributes":{"class":"field","data-uxs":"ab38bfc5"},"childNodes":[{"type":2,"tagName":"label","attributes":{"class":"field__label","for":"passengers"},"childNodes":[{"type":3,"textContent":"Passengers","id":118}],"id":117},{"type":2,"tagName":"input","attributes":{"id":"passengers","name":"passengers","type":"number","min":"1","max":"9","value":"1"},"childNodes":[],"id":119}],"id":116}],"id":111},{"type":2,"tagName":"button","attributes":{"class":"button button--primary","type":"submit"},"childNodes":[{"type":3,"textContent":"Find trains","id":121}],"id":120}],"id":62}],"id":31},{"type":2,"tagName":"footer","attributes":{"class":"footer"},"childNodes":[{"type":2,"tagName":"p","attributes":{},"childNodes":[{"type":3,"textContent":"This site exists to demonstrate UXSense Drift on a pull request. Source:","id":124},{"type":3,"textContent":" ","id":125},{"type":2,"tagName":"a","attributes":{"href":"https://github.com/andrewdraper/uxsense-drift-demo"},"childNodes":[{"type":3,"textContent":"andrewdraper/uxsense-drift-demo","id":127}],"id":126},{"type":3,"textContent":".","id":128}],"id":123}],"id":122}],"id":25}],"id":24},{"type":3,"textContent":"\n  \n\n","id":129}],"id":22}],"id":3}],"id":1},"initialOffset":{"left":0,"top":0}},"timestamp":1786408502668},{"type":3,"data":{"source":1,"positions":[{"x":1631,"y":340,"id":24,"timeOffset":0}]},"timestamp":1786408503394},{"type":3,"data":{"source":1,"positions":[{"x":991,"y":191,"id":60,"timeOffset":-421},{"x":401,"y":141,"id":24,"timeOffset":-339},{"x":366,"y":113,"id":24,"timeOffset":-88},{"x":277,"y":93,"id":24,"timeOffset":-8}]},"timestamp":1786408503896},{"type":3,"data":{"source":1,"positions":[{"x":269,"y":48,"id":24,"timeOffset":-426}]},"timestamp":1786408504398}]