/* ── the faces round thirty-one drew and no step had ever read ── Home's own line and the slots behind it (how many follows it walked, how many came back empty-handed); the catalog's note on an artist page; whatever stub is up, whitespace collapsed; the Gaps line, the BUTTON only — the '.gapline.done' variant is a div and says something else entirely; the failed transfer's sentence; and whether the lyrics lookup itself failed, as opposed to having found nothing. Every backslash here is doubled and there is not one backtick, comment included — this block lives inside a template literal, and a backtick would END it (the file still PARSES, so node --check says nothing: what it becomes is a tagged template, and smoke.mjs throws on import). */ catDown: (document.querySelector('.sec-note.cat-down') || {}).textContent || '', homeSlots: (function () { try { return __ss.home.order.length; } catch (e) { return -1; } })(), homeErr: (function () { try { return __ss.home.order.filter(function (id) { var s = __ss.home.slots[id]; return !!(s && s.error); }).length; } catch (e) { return -1; } })(), catNote: (function () { var n = [].slice.call(document.querySelectorAll('.screen .sec-note:not(.cat-down)')).find(function (x) { return /catalog/i.test(x.textContent || ''); }); return n ? n.textContent.replace(/\\s+/g, ' ').trim() : ''; })(), stubText: ((document.querySelector('.screen .stub') || {}).textContent || '').replace(/\\s+/g, ' ').trim(), gapLine: ((document.querySelector('button.gapline') || {}).textContent || '').replace(/\\s+/g, ' ').trim(), xferFail: (document.querySelector('.row.xfer.failed .m') || {}).textContent || '', lyrFailed: (function () { try { return __ss.lyr.failed ? 'yes' : 'no'; } catch (e) { return ''; } })(),