<!-- SOLIDABILITY-WORLD · part 6 -->
: translate(-50%, -50%) scale(0.95);
  z-index: 60;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease, transform 0.3s ease;
  max-width: 420px;
  width: 90%;
  max-height: 80vh;
  overflow-y: auto;
}
#glossary-panel.visible {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
  pointer-events: auto;
}
.glossary-panel {
  background: rgba(10, 14, 20, 0.97);
  border: 1px solid rgba(0, 255, 204, 0.4);
  border-radius: 16px;
  padding: 20px;
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
}
.glossary-panel h3 {
  color: #00ffcc;
  margin: 0 0 8px 0;
  font-size: 18px;
}
.glossary-term {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 8px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.glossary-term strong {
  color: #e0e0e0;
  font-size: 14px;
}
.glossary-term span {
  color: #888;
  font-size: 12px;
}
.glossary-panel .guide-btn {
  margin-top: 12px;
  width: 100%;
}

/* Mobile HUD fixes (iPhone) — 2026-10-08 */
@media (max-width: 768px) {
  /* Trust badge: move below title row, don't overlap phase tag */
  #trust-badge {
    top: auto;
    bottom: 12px;
    left: 12px;
    transform: none;
  }
  /* HUD controls: stack to prevent truncation */
  #hud-controls {
    flex-wrap: wrap;
  }
  #search-box {
    flex: 1 1 100%;
    margin-bottom: 4px;
  }
  #hud-top h1 {
    font-size: 15px;
  }
  .phase-tag {
    font-size: 9px;
    white-space: nowrap;
  }
}

/* 2026-10-09 Hyper Controller fixes: the column (11+ buttons) ran off the top of
   short screens, and the Glass panel (z 35) covered it so no button could be
   tapped after FOCUS. Two columns when space is tight; stay clickable above the
   Glass and step aside from it on wide screens. */
#hyper-controller { z-index: 36; }
@media (max-height: 880px) {
  #hc-buttons { display: grid; grid-template-columns: repeat(2, 44px); gap: 6px; }
}
@media (min-width: 769px) {
  body:has(#glass-panel.visible) #hyper-controller { right: calc(min(500px, 100vw) + 12px); }
}
@media (max-width: 768px) {
  body:has(#glass-panel.visible) #hyper-controller { bottom: calc(150px + 32vh + 10px); }
}
/* the second max-width (600px) overrode the viewport cap, so long narration ran off phone screens */
#ai-narration { max-width: min(600px, calc(100vw - 24px)); }


===== FILE: public/solidability-world/data/prototype-world.json =====
{
  "source": "server.js",
  "totalLines": 12668,
  "rooms": {
    "auth": {
      "label": "Authentication",
      "routes": [
        {
          "name": "GET /login",
          "line": 1294,
          "type": "route"
        },
        {
          "name": "POST /login",
          "line": 2264,
          "type": "route"
        },
        {
          "name": "GET /login/2fa",
          "line": 2299,
          "type": "route"
        },
        {
          "name": "POST /login/2fa",
          "line": 2304,
          "type": "route"
        },
        {
          "name": "GET /register",
          "line": 2344,
          "type": "route"
        },
        {
          "name": "POST /register",
          "line": 2349,
          "type": "route"
        },
        {
          "name": "POST /api/game/register",
          "line": 2400,
          "type": "route"
        },
        {
          "name": "POST /api/game/login",
          "line": 2426,
          "type": "route"
        },
        {
          "name": "POST /logout",
          "line": 2438,
          "type": "route"
        },
        {
          "name": "POST /api/solid-drive/session",
          "line": 6156,
          "type": "route"
        },
        {
          "name": "GET /api/solid-drive/session",
          "line": 6201,
          "type": "route"
        },
        {
          "name": "POST /api/agent-drive/session",
          "line": 6519,
          "type": "route"
        },
        {
          "name": "POST /api/agent-drive/session-token",
          "line": 6742,
          "type": "route"
        },
        {
          "name": "GET /admin/logins",
          "line": 7622,
          "type": "route"
        },
        {
          "name": "POST /api/economy/structure/register",
          "line": 11263,
          "type": "route"
        }
      ]
    },
    "forum": {
      "label": "Forum & Boards",
      "routes": [
        {
          "name": "GET /board/:id",
          "line": 1391,
          "type": "route"
        },
        {
          "name": "GET /board/:id/new-thread",
          "line": 1679,
          "type": "route"
        },
        {
          "name": "POST /board/:id/new-thread",
          "line": 1685,
          "type": "route"
        },
        {
          "name": "POST /api/shiplog/post",
          "line": 1815,
          "type": "route"
        },
        {
          "name": "GET /thread/:id",
          "line": 1837,
          "type": "route"
        },
        {
          "name": "POST /thread/:id/sticky",
          "line": 1998,
          "type": "route"
  