diff --git a/src/apps/epic/static/apps/epic/role-select.js b/src/apps/epic/static/apps/epic/role-select.js index cacc56b..dff301e 100644 --- a/src/apps/epic/static/apps/epic/role-select.js +++ b/src/apps/epic/static/apps/epic/role-select.js @@ -18,11 +18,11 @@ var RoleSelect = (function () { var _postTrayDelay = 3000; var ROLES = [ - { code: "PC", name: "Player", element: "Fire" }, - { code: "BC", name: "Builder", element: "Stone" }, { code: "SC", name: "Shepherd", element: "Air" }, - { code: "AC", name: "Alchemist", element: "Water" }, + { code: "PC", name: "Player", element: "Fire" }, { code: "NC", name: "Narrator", element: "Time" }, + { code: "AC", name: "Alchemist", element: "Water" }, + { code: "BC", name: "Builder", element: "Stone" }, { code: "EC", name: "Economist", element: "Space" }, ]; @@ -177,7 +177,7 @@ var RoleSelect = (function () { card.classList.add("guard-active"); window.showGuard( card, - "Start round 1 as
" + role.name + " (" + role.code + ") …?", + "Start round 1
as " + role.name + " (" + role.code + ") …?", function () { // confirm card.classList.remove("guard-active"); selectRole(role.code); diff --git a/src/static_src/scss/_base.scss b/src/static_src/scss/_base.scss index c49584d..e89f23b 100644 --- a/src/static_src/scss/_base.scss +++ b/src/static_src/scss/_base.scss @@ -451,6 +451,7 @@ body { font-size: 0.85rem; color: rgba(var(--secUser), 0.9); text-align: center; + white-space: nowrap; } .guard-actions { diff --git a/src/templates/core/base.html b/src/templates/core/base.html index 2625ea1..9a489bc 100644 --- a/src/templates/core/base.html +++ b/src/templates/core/base.html @@ -84,7 +84,8 @@ var rawLeft = rect.left + rect.width / 2; var cleft = Math.max(pw / 2 + 8, Math.min(rawLeft, window.innerWidth - pw / 2 - 8)); portal.style.left = Math.round(cleft) + 'px'; - if (rect.top > 120) { + var cardCenterY = rect.top + rect.height / 2; + if (cardCenterY < window.innerHeight / 2) { portal.style.top = Math.round(rect.top) + 'px'; portal.style.transform = 'translate(-50%, calc(-100% - 0.5rem))'; } else { @@ -123,7 +124,11 @@ document.addEventListener('click', function (e) { if (!portal.classList.contains('active')) return; if (portal.contains(e.target)) return; - e.stopPropagation(); + // If clicking a card, let the event through so the card's + // own handler immediately opens the guard on the new target. + // For any other outside click, stop propagation to prevent + // the backdrop from also closing the fan. + if (!e.target.closest('.card')) e.stopPropagation(); dismiss(); }, true); // Intercept [data-confirm] buttons (capture phase, before form submits)