<!-- SOLUV · part 460 -->
ner.sky = api;
  container.dispatchEvent(new CustomEvent('word-sky-ready', { detail: api }));
  return api;
}

function injectStyle() {
  if (document.getElementById('ws-style')) return;
  const s = document.createElement('style'); s.id = 'ws-style';
  s.textContent = `
  .ws-root{display:block;overflow:hidden;background:#070a16;touch-action:none;-webkit-user-select:none;user-select:none}
  .ws-wrap{position:absolute;inset:0;font-family:${FONT_STACK};color:#e4e8f2}
  .ws-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}
  .ws-search{position:absolute;top:max(8px,env(safe-area-inset-top));left:8px;right:8px;display:flex;gap:6px;z-index:3;margin:0}
  .ws-q{flex:1;min-width:0;height:48px;box-sizing:border-box;border-radius:12px;border:1px solid #33406b;background:#111830;color:#fff;font:17px/1 ${FONT_STACK};padding:0 14px;outline:none;-webkit-appearance:none;appearance:none}
  .ws-q:focus{border-color:#ffc93c}
  .ws-btn{min-width:48px;height:48px;border-radius:12px;border:1px solid #33406b;background:#16203d;color:#fff;font:600 17px/1 ${FONT_STACK};padding:0 10px;cursor:pointer;touch-action:manipulation}
  .ws-btn:disabled{opacity:.45}
  .ws-go{background:#ffc93c;color:#1a1300;border-color:#ffc93c}
  .ws-status{position:absolute;top:calc(max(8px,env(safe-area-inset-top)) + 54px);left:10px;right:10px;font-size:13px;line-height:1.3;color:#9fb0dc;z-index:3;pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px #000}
  .ws-ctrls{position:absolute;right:8px;bottom:calc(max(8px,env(safe-area-inset-bottom)) + 34px);display:flex;flex-direction:column;gap:8px;z-index:3}
  .ws-ctrls .ws-btn{width:48px;font-size:22px;background:#111830e6}
  .ws-ctrls .ws-live{width:auto;min-width:64px;font-size:14px;padding:0 8px;color:#ffbf5a;border-color:#7a3d14}
  .ws-ctrls .ws-view{width:auto;min-width:64px;font-size:14px;padding:0 8px;color:#ffd479;border-color:#6b5a2a}
  .ws-badge{position:absolute;left:8px;right:64px;bottom:max(6px,env(safe-area-inset-bottom));font-size:11px;line-height:1.25;color:#8c97bd;z-index:2;pointer-events:none;background:#070a16cc;padding:3px 6px;border-radius:6px}
  .ws-hud{display:none;position:absolute;left:8px;bottom:calc(max(6px,env(safe-area-inset-bottom)) + 34px);font:11px monospace;color:#7f8;z-index:2;pointer-events:none;background:#000a;padding:2px 4px}
  `;
  document.head.appendChild(s);
}

class WordSkyElement extends HTMLElement {
  connectedCallback() {
    if (this._mounted) return; this._mounted = true;
    mountWordSky(this, { data: this.getAttribute('data') || new URL('data/', MODULE_BASE).href, hud: this.hasAttribute('hud') });
  }
}
if (!customElements.get('word-sky')) customElements.define('word-sky', WordSkyElement);


===== FILE: public/soluv/room.css =====
/* SOLUV ROOM — Playa. Phone first. Light on the GPU:
   no backdrop-filter, no big blur layers, no animated canvas, transforms/opacity only. */
.sr-room{
  --sr-ink:#16121c; --sr-ink2:#221c2b; --sr-paper:#f5ecd8; --sr-paper-edge:#e2d3b1;
  --sr-text:#2a2118; --sr-muted:#6b5d4b; --sr-wax:#9e1b24; --sr-wax-dark:#6d1017;
  --sr-gold:#e7b53a; --sr-live:#2fa35a; --sr-warn:#d08a12; --sr-bad:#c0392b;
  box-sizing:border-box; display:flex; flex-direction:column;
  height:100%; min-height:0; width:100%;
  background:var(--sr-ink); color:var(--sr-paper);
  font:17px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Georgia,serif;
  -webkit-text-size-adjust:100%;
}
.sr-room *, .sr-room *::before, .sr-room *::after{ box-sizing:border-box; }
.sr-room.sr-fit{ height:var(--sr-vvh,100dvh); }

/* Header: title, who you are, live status, jump-to-latest. Fixed rows, nothing appears/disappears. */
.sr-head{ flex:0 0 auto; padding:8px 12px; background:var(--sr-ink2); border-bottom:1px solid #3a3145;
  display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.sr-title{ font-size:19px; font-weight:700; letter-spacing:.02em; margin:0; flex:1 1 auto; color:var(--sr-paper); }
.sr-me{ font-size:17px; color:#cfc3ad; flex:1 1 100%; min-height:24px; }
.sr-me a{ color:var(--sr-gold); }
.sr-status{ display:inline-flex; align-items:center; gap:8px; min-height:48px; padding:0 12px; border-radius:24px;
  background:#2c2536; font-size:17px; font-weight:600; }
.sr-dot{ width:12px; height:12px; border-radius:50%; background:var(--sr-warn); flex:0 0 auto; }
.sr-status[data-state="live"] .sr-dot{ background:var(--sr-live); }
.sr-status[data-state="poll"] .sr-dot{ background:var(--sr-warn); }
.sr-status[data-state="down"] .sr-dot{ background:var(--sr-bad); }
.sr-btn{ min-width:48px; min-height:48px; padding:0 14px; border-radius:12px; border:2px solid #4a4056;
  background:#2c2536; color:var(--sr-paper); font-weight:600; font-size:17px; line-height:1; font-family:inherit; cursor:pointer;
  touch-action:manipulation; }
.sr-btn:disabled{ opacity:.45; cursor:not-allowed; }
.sr-btn:focus-visible{ outline:3px solid var(--sr-gold); outline-offset:2px; }

