<!-- SOLID CITY · part 88 -->
(e.key === 'Escape') close(); });
  var h = el('div', 'cp-h'); h.appendChild(el('b', null, '\uD83D\uDCF7 SCREEN CAPTURE')); var x = el('button', null, '\u00d7'); x.type = 'button'; x.id = 'cap-x'; x.setAttribute('aria-label', 'Close'); x.onclick = close; h.appendChild(x); P.appendChild(h);
  P.appendChild(el('div', 'cp-l', 'WHAT TO CAPTURE')); var wseg = el('div', 'cp-seg cp-what'); wseg.id = 'cap-what';
  [['world', 'World only', 'the 3D view'], ['menus', 'World + menus', 'HUD and open panels']].forEach(function (w) { var b = el('button', 'cp-o', w[1]); b.type = 'button'; b.dataset.what = w[0]; b.appendChild(el('small', null, w[2])); b.onclick = function () { whatNow = w[0]; cfg.what = w[0]; save(); sync(); }; wseg.appendChild(b); }); P.appendChild(wseg);
  P.appendChild(el('div', 'cp-l', 'FILE TYPE')); var seg = el('div', 'cp-seg'); seg.id = 'cap-types';
  Object.keys(TYPES).forEach(function (k) { var b = el('button', 'cp-o', TYPES[k][1]); b.type = 'button'; b.dataset.type = k; b.onclick = function () { cfg.type = k; save(); sync(); }; seg.appendChild(b); }); P.appendChild(seg);
  P.appendChild(el('div', 'cp-l', 'SIZE (REAL PIXELS)')); var sz = el('div', 'cp-sizes'); sz.id = 'cap-sizes';
  SIZES.forEach(function (s) { var b = el('button', 'cp-o', s[1]); b.type = 'button'; b.dataset.size = s[0]; b.appendChild(el('small')); b.onclick = function () { cfg.size = s[0]; save(); sync(); }; sz.appendChild(b); }); P.appendChild(sz);
  P.appendChild(el('div', 'cp-l', 'OPTIONS'));
  var t1 = el('label', 'cp-t'), c1 = el('input'); c1.type = 'checkbox'; c1.id = 'cap-wm'; c1.onchange = function () { cfg.wm = c1.checked; save(); }; t1.appendChild(c1); t1.appendChild(el('span', null, 'Watermark EPISTLES.XYZ')); P.appendChild(t1);
  var t2 = el('label', 'cp-t'), c2 = el('input'); c2.type = 'checkbox'; c2.id = 'cap-fade'; c2.onchange = function () { Fade.set(c2.checked); }; t2.appendChild(c2); t2.appendChild(el('span', null, 'Auto-hide HUD after 5 s idle')); P.appendChild(t2);
  var go = el('button', null, 'CAPTURE'); go.type = 'button'; go.id = 'cap-go'; go.onclick = shoot; P.appendChild(go);
  var res = el('div'); res.id = 'cap-res'; res.hidden = true; P.appendChild(res);
  ($('sc-hud') || document.body).appendChild(P);
}
function sync() {
  if (!P) return;
  P.querySelectorAll('[data-what]').forEach(function (b) { b.setAttribute('aria-pressed', String(b.dataset.what === curWhat())); });
  P.querySelectorAll('[data-type]').forEach(function (b) { b.setAttribute('aria-pressed', String(b.dataset.type === cfg.type)); });
  P.querySelectorAll('[data-size]').forEach(function (b) { var d = dims(b.dataset.size); b.setAttribute('aria-pressed', String(b.dataset.size === cfg.size)); b.querySelector('small').textContent = d.w + '\u00d7' + d.h; });
  $('cap-wm').checked = cfg.wm; $('cap-fade').checked = Fade.enabled();
}
function open() {
  build(); whatNow = menuOpen() ? 'menus' : null; sync(); var old = P.querySelector('.cap-scaf'); if (old) old.remove(); P.insertBefore(scaffold('', innerWidth > 600), P.firstChild);
  P.hidden = false; btn.setAttribute('aria-expanded', 'true'); Fade.poke();
}
function close() { if (!P) return; P.hidden = true; btn.setAttribute('aria-expanded', 'false'); Fade.poke(); }
function fmtBytes(n) { return n > 1048576 ? (n / 1048576).toFixed(1) + ' MB' : Math.max(1, Math.round(n / 1024)) + ' KB'; }
function stamp() { var d = new Date(), p = function (n) { return (n < 10 ? '0' : '') + n; }; return d.getFullYear() + p(d.getMonth() + 1) + p(d.getDate()) + '-' + p(d.getHours()) + p(d.getMinutes()) + p(d.getSeconds()); }
function download(url, name) { var a = document.createElement('a'); a.href = url; a.download = name; a.rel = 'noopener'; a.style.display = 'none'; document.body.appendChild(a); a.click(); setTimeout(function () { a.remove(); }, 1000); }
function canShareFile(file) { try { return !!(navigator.share && navigator.canShare && navigator.canShare({ files: [file] })); } catch (e) { return false; } }
function shareFile(file) { return navigator.share({ files: [file], title: 'Solid City', text: 'Solid City \u2014 epistles.xyz/city' }); }
function showResult(r, name, file) {
  var res = $('cap-res'); if (!res) return; res.textContent = ''; res.hidden = false;
  var im = el('img'); im.alt = 'Your capture'; im.src = lastURL; res.appendChild(im);
  var m = el('div', 'cr-m'); m.appendChild(el('div', 'cr-i', (r.type.split('/')[1] || '').toUpperCase().replace('JPEG', 'JPEG') + ' \u00b7 ' + r.w + '\u00d7' + r.h + ' \u00b7 ' + fmtBytes(r.blob.size) + (r.note ? ' \u00b7 ' + r.note : '')));
  var bs = el('div', 'cr-b');
  if (canShareFile(file)) { var s = el('button', null, 'SHARE / SAVE'); s.type = 'button'; s.id = 'cap-share'; s.onclick = function () { shareFile(file).catch(function () {}); }; bs.appendChild(s); }
  var o = el('a', null, 'OPEN'); o.href = lastURL; o.target = '_blank'; o.rel = 'noopener'; o.id = 'cap-open'; bs.appendChild(o);
  var dl = el('a', null, 'DOWNLOAD'); dl