<!-- SOLID CITY · part 2866 -->
 (w, i) { g.fillText(w, 128, 90 + i * 70); });
  var t = new T.CanvasTexture(c); t.encoding = T.sRGBEncoding; return t;
}
function solids() {
  var hw = 0.75, hd = 0.62, c = Math.cos(FACE), s = Math.sin(FACE), ex = Math.abs(c) * hw + Math.abs(s) * hd, ez = Math.abs(s) * hw + Math.abs(c) * hd;
  var cx = POS.x - Math.sin(FACE) * 0.25, cz = POS.z - Math.cos(FACE) * 0.25;
  A.solids.push({ x0: cx - ex, x1: cx + ex, z0: cz - ez, z1: cz + ez, y0: Y, y1: Y + 2.3, podium: true });
  var bx = POS.x + (-1.2) * Math.cos(FACE) + (-1.0) * Math.sin(FACE), bz = POS.z - (-1.2) * Math.sin(FACE) + (-1.0) * Math.cos(FACE);
  A.solids.push({ x0: bx - 0.2, x1: bx + 0.2, z0: bz - 0.2, z1: bz + 0.2, y0: Y, y1: Y + 4.4, podium: true });
}
function stop() {
  var H = window.CityHyper; if (!H || !H.pois || H.pois.some(function (p) { return p.id === 'podium'; })) return;
  H.pois.splice(2, 0, { id: 'podium', name: 'ALL THAT WE CAN DO! podium', short: 'ALL WE CAN DO', x: POS.x, z: POS.z, stand: { x: READ.x, z: READ.z }, act: 'podium',
    alias: 'podium all that we can do features feature list everything catalog speaker lectern what can i do help',
    text: 'The speaker\u2019s podium in the Forum Plaza: every real feature of Solid City and epistles, the University course catalog and the Beauty Log, in one list. Walk up and tap READ.' });
  if (H.regrid) H.regrid();
}
function watchCap() {
  var W = window.CityWatch; if (!W || !W.routes || !W.routes.campus || W.routes.campus._podium) return;
  var orig = W.routes.campus.build; W.routes.campus._podium = true;
  W.routes.campus.build = function () { var w = orig.apply(this, arguments); w.unshift({ x: POS.x - 26, z: POS.z + 30, y: Y + 40, v: 100, cap: { cap: 'ALL THAT WE CAN DO!', sub: 'Forum Plaza \u00b7 the speaker\u2019s podium: every feature, every course, the Beauty Log' } }); return w; };
}
function init() { D.state = 'loading'; try { solids(); build(); stop(); watchCap(); D.state = 'ready'; arrive(); } catch (e) { D.state = 'failed'; try { console.warn('[city] podium skipped:', e && e.message); } catch (x) {} } }
function update(dt) { if (D.state === 'idle') { if (A.isBuilt && !A.isBuilt()) return; D.wait -= dt; if (D.wait <= 0) init(); } }
function actHere(x, z) { return D.state === 'ready' && (Math.hypot(x - READ.x, z - READ.z) < 3.4 || Math.hypot(x - POS.x, z - POS.z) < 3.2); }
function radar(g, blip, fl) { if (D.state === 'ready' && !fl) blip(POS.x, POS.z, '#ffd27a', 3, 'DO!'); }
function arrive() {
  if (new URLSearchParams(location.search).get('to') !== 'podium') return;
  (function wait() { var boot = $('sc-boot'); if ((boot && !boot.hidden) || S.mode !== 'walk') return setTimeout(wait, 500);
    S.p.x = READ.x + Math.sin(FACE) * 2.5; S.p.z = READ.z + Math.cos(FACE) * 2.5; S.p.y = A.groundAt(S.p.x, S.p.z); S.camYaw = FACE; open('features'); })();
}

/* ---------------- the glass panel ---------------- */
var P = null, body = null;
function css() {
  if ($('pd-css')) return; var st = document.createElement('style'); st.id = 'pd-css';
  st.textContent = '#pd-panel{position:absolute;z-index:23;right:calc(12px + env(safe-area-inset-right));top:calc(110px + env(safe-area-inset-top));bottom:16px;width:min(460px,calc(100vw - 24px));box-sizing:border-box;display:flex;flex-direction:column;' +
    'background:rgba(10,6,10,.72);-webkit-backdrop-filter:blur(14px) saturate(1.3);backdrop-filter:blur(14px) saturate(1.3);border:1px solid rgba(232,195,106,.75);border-radius:18px;box-shadow:0 12px 44px #000c,inset 0 1px 0 rgba(255,240,190,.18);color:#f6e9c4;font:14px/1.45 system-ui,sans-serif;pointer-events:auto;overflow-wrap:anywhere}' +
    '#pd-panel[hidden]{display:none}#pd-panel *{box-sizing:border-box;max-width:100%}.pd-hd{display:flex;align-items:center;gap:8px;padding:12px 12px 6px}.pd-hd b{flex:1;font:700 19px Georgia,serif;letter-spacing:.06em;color:#ffd27a;text-shadow:0 1px 0 #3a2608}' +
    '.pd-x{min-width:44px;min-height:44px;border-radius:12px;border:1px solid #e8c36a;background:#140c10;color:#f6dc8e;font:700 16px system-ui;cursor:pointer;flex-shrink:0}' +
    '.pd-tabs{display:flex;flex-wrap:wrap;gap:6px;padding:0 12px 8px;border-bottom:1px solid rgba(232,195,106,.25)}.pd-tabs button{flex:1 1 auto;min-height:40px;padding:0 10px;border-radius:12px;border:1px solid #6b5220;background:rgba(20,12,16,.8);color:#f6dc8e;font:700 13px system-ui;cursor:pointer}' +
    '.pd-tabs button.on{background:#e8c36a;border-color:#e8c36a;color:#140c10}.pd-bd{flex:1;overflow:auto;padding:10px 12px 14px;-webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior:contain}' +
    '.pd-g{margin:4px 0 12px}.pd-g h4{margin:8px 0 6px;font:700 12px system-ui;letter-spacing:.2em;color:#e8c36a;text-transform:uppercase}' +
    '.pd-i{display:flex;gap:8px;align-items:center;padding:9px 10px;margin:6px 0;border-radius:12px;border:1px solid rgba(90,26,31,.9);background:rgba(18,10,13,.82)}.pd-i div{flex:1;min-width:0}.pd-i b{display:block;color:#ffd27a;font-size:15