        vp: innerWidth + 'x' + innerHeight,
        /* the sheet's controls: any one of them off the viewport is the landscape bug */
        npOut: [].filter.call(document.querySelectorAll('.sheet.up .np-frame, .sheet.up .np-meta, .sheet.up .np-scrub, .sheet.up .np-transport, .sheet.up .np-foot'), function (x) { var b = x.getBoundingClientRect(); return b.height > 0 && !inside(b); }).length,
        /* stacked = the portrait column; beside = the cover left of the controls; face = a face has the column and the thumbnail is gone */
        npCols: (function () { var a = box('.sheet.up .np-frame'), b = box('.sheet.up .np-transport'); if (!a || !b) return ''; if (!a.height) return 'face'; return a.bottom <= b.top + 1 ? 'stacked' : 'beside'; })(),
        faceH: Math.round((box('.sheet.up .np-face') || { height: 0 }).height),
        /* WHICH face: the queue's own, up whether or not anything is after this one */
        qFace: !!document.querySelector('.sheet.up .q-face'),
        /* a half sheet: how tall it is allowed to be, that it is all on screen, and that its body still reaches its last row */
        halfH: Math.round((box('.halfsheet.up') || { height: 0 }).height),
        halfIn: inside(box('.halfsheet.up')),
        hsScroll: (function () { var x = document.querySelector('.halfsheet.up .hs-body'); return x ? getComputedStyle(x).overflowY : ''; })(),
        hsTail: (function () { var x = document.querySelector('.halfsheet.up .hs-body'); return x ? x.scrollHeight - x.clientHeight : -1; })(),
        heroH: Math.round((box('.screen .hero') || { height: 0 }).height),
        /* what a page offers first: Play on an artist hero, Play on a record head */
        actsIn: inside(box('.screen .hero-acts') || box('.screen .rec-acts')),
        recCols: (function () { var c = box('.screen .rec-cover'), m = box('.screen .rec-meta'); return c && m ? (c.bottom <= m.top + 1 ? 'stacked' : 'beside') : ''; })(),
        /* the glass bar above plus the floating bars below, as a share of the screen */
        chromePct: (function () { var g = box('.gbar'), low = box('.mini') || box('.nav'); return Math.round((((g ? g.height : 0) + (low ? innerHeight - low.top : 0)) / innerHeight) * 100); })(),
        miniLeft: Math.round((box('.mini') || { left: -1 }).left),
        screenPadL: (function () { var x = document.querySelector('.screen'); return x ? Math.round(parseFloat(getComputedStyle(x).paddingLeft)) : -1; })(),
