html, body { margin: 0; height: 100%; overflow: hidden; background: #b9c4ee; font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; touch-action: none; }
#c { position: fixed; inset: 0; width: 100%; height: 100%; display: block; }
#loading { position: fixed; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; background: linear-gradient(#8ec5f0, #c9b8e8 60%, #f3d2c1); color: #fff; z-index: 5; transition: opacity .6s; }
#loading.gone { opacity: 0; pointer-events: none; }
.ld-title { font-size: 34px; font-weight: 800; letter-spacing: .12em; text-shadow: 0 2px 10px #6a5aa0; }
.ld-sub { margin-top: 6px; opacity: .9; }
#hud { position: fixed; top: max(8px, env(safe-area-inset-top)); left: 8px; right: 8px; display: flex; gap: 8px; align-items: center; justify-content: space-between; pointer-events: none; }
#title { color: #fff; font-weight: 800; letter-spacing: .08em; font-size: 15px; text-shadow: 0 1px 4px #3b2f66; }
#title span { font-weight: 500; letter-spacing: 0; opacity: .9; font-size: 12px; }
#module { pointer-events: auto; font-size: 13px; padding: 6px 8px; border-radius: 10px; border: 1px solid #ffffff88; background: #2b2450cc; color: #fff; }
#views { position: fixed; left: 50%; transform: translateX(-50%); bottom: max(10px, env(safe-area-inset-bottom)); display: flex; gap: 6px; flex-wrap: nowrap; }
#views button { font: 600 13px system-ui, sans-serif; color: #fff; background: #2b2450cc; border: 1px solid #ffffff66; border-radius: 12px; padding: 9px 10px; min-height: 40px; white-space: nowrap; }
#views button.on { background: #ff6a3dee; border-color: #fff; }
#help { position: fixed; left: 50%; transform: translateX(-50%); bottom: calc(max(10px, env(safe-area-inset-bottom)) + 52px); width: min(92vw, 420px); box-sizing: border-box; background: #221c44ee; color: #fff; border-radius: 14px; padding: 12px 14px; font-size: 13px; line-height: 1.45; }
#help a { color: #5fe8ff; display: inline-block; margin-top: 8px; }
#help .tc { display: none; margin-top: 4px; }
@media (pointer: coarse) { #help .tc { display: block; } #help .kb { display: none; } }
@media (max-width: 380px) { #views button { padding: 8px 7px; font-size: 12px; } }
#labels { position: fixed; inset: 0; pointer-events: none; overflow: hidden; }
.ph-label { position: absolute; left: 0; top: 0; font: 800 11px system-ui, Arial, sans-serif; letter-spacing: .03em; color: #fff; background: #1c1830e0; border: 2px solid #ff6a3d; border-radius: 7px; padding: 3px 7px; white-space: nowrap; will-change: transform; }
@media (min-width: 900px) { .ph-label { font-size: 13px; } }
.ph-label b { font-weight: 800; } .ph-label i { font-style: normal; font-weight: 600; color: #ffb39b; }
@media (max-width: 600px) { .ph-label { font-size: 10px; padding: 2px 5px; } .ph-label i { display: none; } }
@media (pointer: coarse), (max-width: 480px) { #views .k { display: none; } #views { gap: 4px; } #views button { padding: 8px 8px; } }
/* Nilo, third person */
#views #nilobtn { background: #2f7dffdd; border-color: #ffffffaa; }
#views #nilobtn.on { background: #ff6a3dee; border-color: #fff; }
#nilohint, #jumpbtn { display: none; }
body.nilo #nilohint { display: block; position: fixed; left: 50%; transform: translateX(-50%); top: calc(max(8px, env(safe-area-inset-top)) + 40px); width: max-content; max-width: min(94vw, 560px); box-sizing: border-box; text-align: center; color: #fff; background: #221c44cc; border-radius: 10px; padding: 5px 10px; font: 600 12px system-ui, sans-serif; pointer-events: none; }
#nilohint .tc { display: none; }
@media (pointer: coarse) { #nilohint .tc { display: inline; } #nilohint .kb { display: none; } }
body.nilo #labels { display: none; }
@media (pointer: coarse) {
  body.nilo #jumpbtn { display: block; position: fixed; right: max(22px, env(safe-area-inset-right)); bottom: calc(max(10px, env(safe-area-inset-bottom)) + 82px); width: 92px; height: 92px; border-radius: 50%; border: 2px solid #fff; background: #2f7dffdd; color: #fff; font: 800 16px system-ui, sans-serif; touch-action: none; box-shadow: 0 3px 10px #0006; }
  body.nilo #jumpbtn:active { background: #ff6a3dee; }
}
#nilohint .ph { display: block; color: #ffb39b; font-weight: 700; }
@media (max-width: 420px) { #views .long { display: none; } #views { gap: 3px; } #views button { padding: 8px 7px; font-size: 12px; } }

/* the main portal: a ring on the gate and a line of words while Nilo is in reach */
#gatering { position: fixed; left: 0; top: 0; display: none; border-radius: 50%; pointer-events: none; box-sizing: border-box;
  border: 2px solid #bff4ffcc; box-shadow: 0 0 18px #6fdcff99, inset 0 0 18px #6fdcff66; animation: gatepulse 1.6s ease-in-out infinite; will-change: transform; }
@keyframes gatepulse { 0%, 100% { opacity: .45; } 50% { opacity: 1; } }
#portalprompt { display: none; position: fixed; left: 50%; transform: translateX(-50%); bottom: calc(max(10px, env(safe-area-inset-bottom)) + 210px); padding: 8px 16px; border-radius: 20px;
  background: #1d2a66d9; border: 1px solid #9fe8ffaa; color: #fff; font: 700 14px system-ui, sans-serif; white-space: nowrap; pointer-events: none; box-shadow: 0 0 14px #5fd0ff66; }
body.gate-near #gatering { display: block; }
body.gate-near #portalprompt { display: block; }
#portalprompt span { display: none; }
#portalprompt:not(.home) .kb:not(.home) { display: inline; }
#portalprompt.home .kb.home { display: inline; }
@media (pointer: coarse) {
  #portalprompt:not(.home) .kb:not(.home), #portalprompt.home .kb.home { display: none; }
  #portalprompt:not(.home) .tc:not(.home) { display: inline; }
  #portalprompt.home .tc.home { display: inline; }
}
@media (pointer: fine) { #portalprompt { bottom: calc(max(10px, env(safe-area-inset-bottom)) + 62px); } }
/* during a crossing nothing else answers, so nothing else shows */
body[data-portal="ACTIVATING"] #jumpbtn, body[data-portal="JUMPING"] #jumpbtn, body[data-portal="ENTERING_PORTAL"] #jumpbtn, body[data-portal="TRANSITIONING"] #jumpbtn, body[data-portal="ARRIVING"] #jumpbtn { opacity: .25; pointer-events: none; }
/* in the sanctuary the island's fly views and scene picker step aside */
body.sanct #views button[data-view], body.sanct #module, body.sanct #nilobtn { display: none; }

/* ---------- player interface ---------- */
.hudr { display: flex; gap: 8px; align-items: center; pointer-events: auto; margin-left: auto; }
#menubtn { width: 40px; height: 40px; border-radius: 12px; border: 1px solid #ffd76aaa; background: #2b2450dd; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; padding: 0; box-shadow: 0 0 10px #b48cff55; }
#menubtn i { display: block; width: 18px; height: 2px; border-radius: 2px; background: #ffe9a8; }
#coins { color: #fff; font: 800 14px system-ui, sans-serif; background: #2b2450cc; border: 1px solid #ffd76a99; border-radius: 18px; padding: 6px 10px 6px 26px; position: relative; }
#coins::before { content: ""; position: absolute; left: 8px; top: 50%; width: 12px; height: 12px; margin-top: -6px; transform: rotate(45deg); background: linear-gradient(135deg, #f0b3ff, #8a4bff); border: 1px solid #fff; }
#coins.pop { animation: coinpop .5s ease-out; }
@keyframes coinpop { 0% { transform: scale(1); } 40% { transform: scale(1.3); background: #8a4bffee; } 100% { transform: scale(1); } }
/* fly views and the scene picker are building tools: only with ?dev=1 */
#views, #module { display: none; }
body.dev #views { display: flex; }
body.dev #module { display: inline-block; }
body.dev.sanct #views button[data-view], body.dev.sanct #module, body.dev.sanct #nilobtn { display: none; }
#nilohint { transition: opacity .8s; }
#nilohint.gone { opacity: 0; }
#nilohint .lv { display: none; }
body[data-world^="level"] #nilohint .lv { display: inline; }
#help { bottom: auto; top: calc(max(8px, env(safe-area-inset-top)) + 48px); z-index: 4; max-height: 70vh; overflow: auto; }
/* level interface */
#lvhud { display: none; position: fixed; left: max(8px, env(safe-area-inset-left)); top: max(8px, env(safe-area-inset-top)); pointer-events: none; color: #fff; font: 700 13px system-ui, sans-serif; max-width: calc(100vw - 172px); z-index: 2; }
body[data-world^="level"] #lvhud { display: block; }
#lvhud .row { display: flex; gap: 6px; margin-top: 6px; flex-wrap: wrap; }
.lvpanel { background: linear-gradient(#4a3a2cdd, #2c2238dd); border: 2px solid #e8c37a; border-radius: 14px; padding: 5px 10px 6px; box-shadow: 0 2px 10px #0006; }
.lvtop { display: flex; flex-direction: column; gap: 3px; }
.lvtop > b { font: 800 16px Georgia, "Times New Roman", serif; color: #fff4dc; text-shadow: 0 1px 3px #0008; }
#lumidots { display: flex; gap: 3px; }
#lumidots i { width: 11px; height: 11px; border-radius: 50%; background: #8d877f; border: 1.5px solid #cfc7b8; box-sizing: border-box; }
#lumidots i.f { background: #9fe8ff; border-color: #fff; }
#lumidots i.s { background: #ff6fc8; border-color: #ffd0ee; box-shadow: 0 0 6px #ff6fc8; }
.lvline { display: flex; flex-wrap: wrap; gap: 2px 9px; margin-top: 4px; font: 800 12px system-ui, sans-serif; color: #fff; align-items: center; }
.lvline .lvn { color: #8fe9ff; }
.lvline b { color: #ffe08a; }
.lvline .ic.gem { width: 10px; height: 10px; margin-right: 3px; vertical-align: -1px; }
#hearts { display: none; gap: 5px; position: fixed; top: calc(max(8px, env(safe-area-inset-top)) + 8px); right: calc(max(8px, env(safe-area-inset-right)) + 60px); pointer-events: none; z-index: 2; }
body[data-world^="level"] #hearts { display: flex; }
@media (min-width: 700px) { #hearts { right: auto; left: 50%; transform: translateX(-50%); } }
#hearts i { width: 26px; height: 24px; display: inline-block; background: no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 22'%3E%3Cpath d='M12 21 2.5 11.5A5.6 5.6 0 0 1 12 3.6a5.6 5.6 0 0 1 9.5 7.9Z' fill='%23ff5f8f' stroke='%23fff' stroke-width='1.6'/%3E%3C/svg%3E"); filter: drop-shadow(0 1px 2px #0007); transition: opacity .3s, transform .3s; }
#hearts i.off { opacity: .28; transform: scale(.8); filter: grayscale(1); }
#hearts.hit i { animation: hurt .5s; }
@keyframes hurt { 0%, 100% { transform: none; } 30% { transform: scale(1.35) rotate(-8deg); } }
/* the level's top bar: the panel and hearts replace the title and purse; the menu becomes a round pause button */
body[data-world^="level"] #title, body[data-world^="level"] #coins { display: none; }
body[data-world^="level"] #menubtn { width: 44px; height: 44px; border-radius: 50%; border: 2px solid #e8c37a; background: #3a3a2cdd; flex-direction: row; gap: 5px; }
body[data-world^="level"] #menubtn i { width: 5px; height: 16px; background: #fff4dc; }
body[data-world^="level"] #menubtn i:nth-child(3) { display: none; }
.chip { background: #1c2a4acc; border: 1px solid #ffffff55; border-radius: 14px; padding: 4px 9px 4px 6px; display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.chip b { font-weight: 800; }
.ic { width: 14px; height: 14px; display: inline-block; border-radius: 50%; }
.ic.lumi { background: radial-gradient(circle at 40% 35%, #fff, #7fdcff); }
.ic.home { background: radial-gradient(circle, #d9a8ff, #7a3dff); box-shadow: 0 0 6px #b48cff; }
.ic.gem { border-radius: 2px; transform: rotate(45deg) scale(.85); background: linear-gradient(135deg, #f0b3ff, #8a4bff); border: 1px solid #fff; }
.chip.flash { animation: chipflash .6s; }
@keyframes chipflash { 30% { background: #4fd18bee; transform: scale(1.12); } }
/* IMPULSO: the original's turquoise round button with a gold rim, white speed lines and its name */
#impbtn { display: none; position: fixed; right: max(16px, env(safe-area-inset-right)); bottom: calc(max(14px, env(safe-area-inset-bottom)) + 26px); width: 92px; height: 92px; border-radius: 50%; padding: 0; overflow: hidden;
  border: 4px solid #e2b553; background: radial-gradient(circle at 38% 30%, #9ff6f0 0%, #3fd3cf 38%, #14a9b0 78%, #0d8794 100%); color: #fff;
  box-shadow: 0 0 0 1px #fff3c855, 0 0 16px #5ff2ffaa, 0 3px 10px #0007; touch-action: none; -webkit-tap-highlight-color: transparent; user-select: none; -webkit-user-select: none;
  transition: filter .2s, transform .08s; z-index: 2; --k: 1; }
#impbtn .wind { position: absolute; left: 50%; top: 22%; width: 46%; height: auto; transform: translateX(-50%); fill: none; stroke: #fff; stroke-width: 3.2; stroke-linecap: round; filter: drop-shadow(0 1px 1px #0a5a6088); pointer-events: none; }
#impbtn span { position: absolute; left: 0; right: 0; top: 60%; text-align: center; font: 900 12.5px system-ui, sans-serif; letter-spacing: .08em; text-shadow: 0 1px 2px #075a6088; pointer-events: none; }
#impbtn .cd { position: absolute; inset: 0; border-radius: 50%; pointer-events: none; opacity: 0; transition: opacity .25s;
  background: conic-gradient(transparent calc(var(--k) * 360deg), #06323acc calc(var(--k) * 360deg)); }
#impbtn.cool { filter: saturate(.7) brightness(.8); box-shadow: 0 0 0 1px #fff3c833, 0 3px 10px #0007; }
#impbtn.cool .cd { opacity: .55; }
#impbtn.press { transform: scale(.9); filter: brightness(1.25); }
#impbtn.ready { animation: impready .5s ease-out; }
/* Level 2: the Double Impulse. Right after the first dash the button lights up again for a moment: press it again for a second, shorter dash */
#impbtn.dbl { filter: none; box-shadow: 0 0 0 3px #fff3c8, 0 0 18px #9ff6ff; animation: impdbl .3s ease-in-out infinite alternate; }
#impbtn.dbl .cd { opacity: 0; }
#impbtn::after { content: 'x2'; position: absolute; left: 0; right: 0; top: 6%; text-align: center; font: 900 13px system-ui, sans-serif; color: #fff7d6; text-shadow: 0 0 6px #ffd76a; opacity: 0; transition: opacity .1s; pointer-events: none; }
#impbtn.dbl::after { opacity: 1; }
@keyframes impdbl { from { transform: scale(1); } to { transform: scale(1.06); } }
@keyframes impready { 0% { box-shadow: 0 0 0 0 #9ff6f0cc, 0 3px 10px #0007; } 100% { box-shadow: 0 0 0 14px #9ff6f000, 0 0 16px #5ff2ffaa, 0 3px 10px #0007; } }
body.nilo[data-world^="level"] #impbtn { display: block; }
@media (pointer: fine) { #impbtn { width: 80px; height: 80px; bottom: 24px; right: 24px; } #impbtn span { font-size: 11px; } }
#toast { position: fixed; left: 50%; top: 32%; transform: translate(-50%, 0); max-width: 88vw; text-align: center; padding: 8px 16px; border-radius: 18px; background: #1d2a66e6; border: 1px solid #9fe8ffaa; color: #fff; font: 700 14px system-ui, sans-serif; pointer-events: none; opacity: 0; transition: opacity .3s; z-index: 3; }
#toast.on { opacity: 1; }
#card { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; background: #120f2a88; z-index: 6; }
#card[hidden] { display: none; }
#card .cin { width: min(86vw, 380px); background: linear-gradient(#2d2566f2, #1a1846f2); border: 2px solid #ffd76a; border-radius: 18px; padding: 18px; color: #fff; text-align: center; box-shadow: 0 0 30px #b48cff88; }
#card h2 { margin: 0 0 8px; font-size: 22px; letter-spacing: .04em; }
#card p { margin: 0 0 14px; line-height: 1.45; font-size: 14px; }
#card button { font: 800 16px system-ui, sans-serif; color: #1a1846; background: #ffd76a; border: 0; border-radius: 14px; padding: 10px 26px; }
/* the ring drawn over the portal and the line of words under it are gone: the portal's own swirl brightens when Nilu is in reach */
#gatering, #portalprompt { display: none !important; }
body.sanct #labels { display: none !important; }
/* in the maze the hint is a small panel docked in the lower-left corner, clear of the IMPULSO button, and it fades */
body[data-world^="level"] #nilohint { top: auto; left: max(10px, env(safe-area-inset-left)); transform: none; bottom: calc(max(10px, env(safe-area-inset-bottom)) + 12px);
  width: auto; max-width: min(calc(100vw - 140px), 300px); text-align: left; font-size: 11.5px; line-height: 1.35; padding: 6px 9px; background: #1d1838b8; border: 1px solid #ffffff22; }
/* with an equipped ability its round button sits left of IMPULSO: the hint stops short of it */
body[data-world^="level"]:has(#abbtn.has) #nilohint { max-width: min(calc(100vw - max(16px, env(safe-area-inset-right)) - 186px), 300px); }
/* maze levels: no stick and no Jump button, the whole view is the movement area */

.chip.stealth[data-k="hidden"] { background: #1f5a2ecc; border-color: #9dffb0aa; }
.chip.stealth[data-k="loud"] { background: #6a4a12cc; border-color: #ffd27aaa; }
.chip.stealth[data-k="heard"] { background: #6a1f3acc; border-color: #ff9ab8aa; }
.ic.eye { width: 14px; height: 10px; border-radius: 50%; background: radial-gradient(circle, #fff 0 25%, transparent 30%), #ffffff55; display: inline-block; }
.chip[hidden] { display: none; }

/* ---------- the menu (plaza and sanctuary: settings and explore; a level: camera, restart, return) ---------- */
#menu { position: fixed; inset: 0; z-index: 8; display: flex; justify-content: flex-end; background: #120f2a77; }
#menu[hidden] { display: none; }
.mpanel { width: min(88vw, 340px); height: 100%; box-sizing: border-box; overflow-y: auto; background: linear-gradient(#2d2566f6, #1a1846f6); border-left: 2px solid #ffd76a; color: #fff;
  padding: calc(max(12px, env(safe-area-inset-top)) + 4px) 16px max(16px, env(safe-area-inset-bottom)); box-shadow: -6px 0 30px #b48cff55; animation: mslide .22s ease-out; }
@keyframes mslide { from { transform: translateX(40px); opacity: 0; } }
.mhead { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.mhead b { font-size: 19px; letter-spacing: .06em; color: #ffe9a8; }
.mpage { display: flex; flex-direction: column; gap: 10px; }
.mpage[hidden] { display: none; }
.mpage > button { font: 700 16px system-ui, sans-serif; color: #fff; background: #3b3180; border: 1px solid #8f7fe0; border-radius: 12px; padding: 13px 14px; text-align: left; min-height: 48px; }
.mpage > button:active { background: #5a4bb0; }
.mpage > button.back { background: transparent; border-color: #ffffff44; text-align: center; }
.mpage > button.warn { background: #b8452f; border-color: #ff9a7a; text-align: center; }
.mpage label { display: flex; flex-direction: column; gap: 6px; font: 600 14px system-ui, sans-serif; color: #e8e2ff; }
.mpage label.tg { flex-direction: row; align-items: center; gap: 10px; min-height: 40px; }
.mpage label.tg input { width: 22px; height: 22px; accent-color: #ffd76a; }
.mpage select { font: 600 15px system-ui, sans-serif; padding: 10px; border-radius: 10px; background: #1a1846; color: #fff; border: 1px solid #8f7fe0; min-height: 44px; }
.mpage input[type=range] { width: 100%; accent-color: #ffd76a; height: 30px; }
.mpage p { margin: 0 0 6px; line-height: 1.45; font-size: 15px; }
#menu .x { font: 700 13px system-ui, sans-serif; color: #fff; background: transparent; border: 1px solid #ffffff55; border-radius: 10px; padding: 8px 12px; }
#menu .lv-only { display: none; }
body[data-world^="level"] #menu .lv-only { display: flex; }
body[data-world^="level"] #menu button.lv-only { display: block; }
#menu .plaza-only { display: none; }
#menu .l3-only { display: none; }
body[data-world="level3"] #menu button.l3-only { display: block; }
body[data-world="plaza"] #menu .plaza-only { display: block; }
#help .x { float: right; font: 700 12px system-ui, sans-serif; color: #fff; background: transparent; border: 1px solid #ffffff55; border-radius: 10px; padding: 6px 10px; }
#help { z-index: 9; }
/* no Jump in maze levels: the button and its key are both gone there; IMPULSE takes its place */
body[data-world^="level"] #jumpbtn { display: none !important; }
body[data-world^="level"] #nilohint .nolv { display: none; }
/* explore view: Nilu waits, the camera is free */
#explorebar { position: fixed; left: 50%; transform: translateX(-50%); bottom: calc(max(12px, env(safe-area-inset-bottom)) + 8px); z-index: 5; display: flex; gap: 10px; align-items: center;
  background: #221c44ee; color: #fff; border: 1px solid #ffd76a; border-radius: 14px; padding: 8px 10px 8px 14px; font: 600 13px system-ui, sans-serif; width: max-content; max-width: 92vw; box-sizing: border-box; }
#explorebar[hidden] { display: none; }
#explorebar button { font: 800 14px system-ui, sans-serif; color: #1a1846; background: #ffd76a; border: 0; border-radius: 10px; padding: 10px 14px; white-space: nowrap; }
body.explore #jumpbtn, body.explore #impbtn, body.explore #nilohint { display: none !important; }
.chip.stealth[data-k="searched"] { background: #2a4a5acc; border-color: #9de4ffaa; }
.chip.stealth[data-k="detected"] { background: #7a1a1acc; border-color: #ff8a8aaa; }
/* Settings > Time of Day: the six manual times in a 2 x 3 grid, shown only in Manual Selection; the day length only in Automatic Cycle */
.todrow { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.todrow button { font: 700 15px system-ui, sans-serif; color: #fff; background: #3b3180; border: 1px solid #8f7fe0; border-radius: 12px; min-height: 48px; }
.todrow button.on { background: #ffd76a; color: #2a2160; border-color: #ffd76a; }
.todnow { font-weight: 700; color: #ffd76a; }
.todnote { margin: 0; font: 500 13px system-ui, sans-serif; color: #e8e2ffcc; line-height: 1.35; }
.mpage[data-page="tod"][data-mode="auto"] .tod-manual, .mpage[data-page="tod"][data-mode="manual"] .tod-auto { display: none !important; }


/* the controls hint: what belongs to Level 1 (the tall grass) and what to Level 2 (the double impulse) */
#nilohint .lv2, #nilohint .lv3 { display: none; }
body.hasdbl[data-world^="level"] #nilohint .lv2 { display: inline; }
body[data-world="level3"] #nilohint .lv3 { display: inline; }
body[data-world="level2"] #nilohint .lv1, body[data-world="level3"] #nilohint .lv1 { display: none; }

/* Level 4, El Bosque de las Almas Perdidas: its first version has no rescue, gems or hearts yet, so their panel stays hidden */
#nilohint .lv4 { display: none; }
body[data-world="level4"] #nilohint .lv4 { display: inline; }
body[data-world="level4"] #nilohint .lv1 { display: none; }
/* Level 4 has hearts and the hiding chip now (its creatures came with the swamp); no rescue or gems yet, so that panel stays hidden */
body[data-world="level4"] #lvhud .lvpanel { display: none !important; }
