/* ======================================================================
   BOOM PORTAL WORLD V1.4
   Approved mockup layout, integrated into the existing Portal shell.
   Everything is route-scoped to body.portal-world-active.
   ====================================================================== */

body.portal-world-active,
html.portal-world-active {
  background:
    radial-gradient(circle at 7% 10%, rgba(255, 73, 91, .075), transparent 26%),
    radial-gradient(circle at 92% 13%, rgba(40, 216, 255, .07), transparent 28%),
    #02070b !important;
}

/* WORLD uses the Portal itself as its shell. No second header, no command row. */
body.portal-world-active #portal-root.portal-shell {
  min-height: 100vh !important;
  display: grid !important;
  grid-template: 92px minmax(0, 1fr) / 1fr !important;
}
body.portal-world-active .portal-rail,
body.portal-world-active .portal-command-dock {
  display: none !important;
}
body.portal-world-active .portal-topbar {
  grid-column: 1 !important;
  grid-row: 1 !important;
  position: sticky !important;
  top: 0 !important;
  z-index: 1200 !important;
  min-height: 92px !important;
  height: 92px !important;
  padding: 0 14px !important;
  border-bottom: 1px solid rgba(39, 206, 255, .30) !important;
  background: linear-gradient(90deg, rgba(3,10,17,.985), rgba(5,17,30,.985) 48%, rgba(3,10,17,.985)) !important;
  box-shadow: 0 10px 36px rgba(0,0,0,.30) !important;
  backdrop-filter: blur(18px) saturate(140%) !important;
}
body.portal-world-active .portal-topbar > :not(.portal-world-shellbar) {
  display: none !important;
}
body.portal-world-active .portal-stage {
  grid-column: 1 !important;
  grid-row: 2 !important;
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 10px 12px 28px !important;
}
body.portal-world-active #portal-content {
  width: 100% !important;
  max-width: none !important;
}
body.portal-world-active .portal-stage::before {
  display: none !important;
}

/* ----------------------------------------------------------------------
   INTEGRATED WORLD TOPBAR
   ---------------------------------------------------------------------- */
.portal-world-shellbar {
  width: 100%;
  min-width: 0;
  display: grid;
  grid-template-columns: 250px minmax(0, 1fr) 220px 50px;
  align-items: center;
  gap: 12px;
  color: #eefbff;
}
.portal-world-shellbar * { box-sizing: border-box; }
.portal-world-shellbar__brand {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 12px;
  color: #fff;
  text-decoration: none;
}
.portal-world-shellbar__ball {
  position: relative;
  flex: 0 0 58px;
  width: 58px;
  height: 58px;
  border: 3px solid #d9e9f3;
  border-radius: 50%;
  overflow: hidden;
  background: linear-gradient(#ff5368 0 47%, #162534 47% 54%, #f1f7fb 54% 100%);
  box-shadow: 0 0 0 4px rgba(255,83,104,.10), 0 0 30px rgba(255,83,104,.15);
}
.portal-world-shellbar__ball::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 17px;
  height: 17px;
  border: 4px solid #172735;
  border-radius: 50%;
  background: #f8fbfd;
  transform: translate(-50%, -50%);
  z-index: 2;
}
.portal-world-shellbar__ball::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: calc(50% - 2px);
  height: 4px;
  background: #172735;
}
.portal-world-shellbar__brandcopy { min-width: 0; display: grid; }
.portal-world-shellbar__brandcopy b {
  white-space: nowrap;
  font-size: 1.42rem;
  line-height: 1;
  letter-spacing: .035em;
  font-weight: 950;
}
.portal-world-shellbar__brandcopy b span { color: #ff5d70; }
.portal-world-shellbar__brandcopy small {
  margin-top: 5px;
  color: #7f9aae;
  font-size: .60rem;
  font-weight: 850;
  letter-spacing: .04em;
}
.portal-world-shellbar__nav {
  min-width: 0;
  display: grid;
  grid-template-columns: repeat(8, minmax(72px, 1fr));
  gap: 5px;
}
.portal-world-shellbar__nav :is(a,button) {
  min-width: 0;
  min-height: 66px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 6px;
  padding: 7px 5px;
  border: 1px solid transparent;
  border-radius: 10px;
  background: transparent;
  color: #a8bdd0;
  text-decoration: none;
  font: inherit;
  cursor: pointer;
  transition: .16s ease;
}
.portal-world-shellbar__nav :is(a,button):hover {
  color: #fff;
  border-color: rgba(50,214,255,.28);
  background: rgba(13,35,52,.58);
}
.portal-world-shellbar__nav :is(a,button).is-current {
  color: #fff;
  border-color: rgba(30,199,255,.74);
  background: linear-gradient(180deg, rgba(19,92,129,.32), rgba(6,24,38,.88));
  box-shadow: inset 0 -3px #24cfff, 0 0 22px rgba(36,207,255,.10);
}
.portal-world-shellbar__nav i {
  font-style: normal;
  color: #c0d8ee;
  font-size: 1.08rem;
  line-height: 1;
}
.portal-world-shellbar__nav .is-current i { color: #dff8ff; }
.portal-world-shellbar__nav span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: .58rem;
  font-weight: 950;
  letter-spacing: .045em;
}
.portal-world-shellbar__profile {
  min-width: 0;
  height: 62px;
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) auto;
  align-items: center;
  gap: 9px;
  padding: 7px 10px;
  border: 1px solid rgba(47,199,255,.24);
  border-radius: 11px;
  background: linear-gradient(145deg, rgba(6,22,35,.94), rgba(5,14,24,.94));
}
.portal-world-shellbar__avatar {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(55,214,255,.36);
  border-radius: 9px;
  background: radial-gradient(circle, rgba(47,210,255,.16), transparent 70%), #071724;
  color: #63eaff;
  font-size: 1.15rem;
}
.portal-world-shellbar__profilecopy { min-width: 0; display: grid; }
.portal-world-shellbar__profilecopy b {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: .72rem;
  color: #fff;
}
.portal-world-shellbar__profilecopy small {
  margin-top: 4px;
  color: #6f8ba1;
  font-size: .48rem;
  font-weight: 900;
  letter-spacing: .08em;
}
.portal-world-shellbar__vip {
  padding: 4px 7px;
  border: 1px solid rgba(255,210,70,.34);
  border-radius: 999px;
  background: rgba(88,62,8,.45);
  color: #ffd84f;
  font-size: .50rem;
  font-weight: 950;
  letter-spacing: .05em;
}
.portal-world-shellbar__vip[hidden] { display: none !important; }
.portal-world-shellbar__menu {
  width: 50px;
  height: 50px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(47,199,255,.22);
  border-radius: 10px;
  background: #071724;
  color: #d7f5ff;
  text-decoration: none;
  font-size: 1.25rem;
}

/* ----------------------------------------------------------------------
   WORLD BODY
   ---------------------------------------------------------------------- */
.portal-world {
  --pw-cyan: #35dcff;
  --pw-red: #ff596b;
  --pw-green: #36e992;
  --pw-gold: #ffc943;
  --pw-line: rgba(48,214,255,.28);
  --pw-panel: #050e16;
  --pw-panel-2: #071925;
  --pw-muted: #7f98ab;
  width: 100%;
  max-width: 1880px;
  margin: 0 auto;
  display: grid;
  gap: 10px;
  color: #edfaff;
}
.portal-world * { box-sizing: border-box; }
.portal-world :is(button,input) { font: inherit; }

.portal-world__live-state,
.portal-world__catches,
.portal-world__spawn,
.portal-world__next,
.portal-world__game-card,
.portal-world__panel,
.portal-world__footer-card,
.portal-world__team {
  border: 1px solid var(--pw-line);
  background: linear-gradient(145deg, rgba(4,13,22,.985), rgba(6,20,32,.955));
  box-shadow: 0 16px 48px rgba(0,0,0,.24), inset 0 1px 0 rgba(255,255,255,.03);
}

/* LIVE strip */
.portal-world__livebar {
  min-width: 0;
  display: grid;
  grid-template-columns: 165px minmax(530px, 1fr) 240px 185px;
  gap: 8px;
}
.portal-world__live-state,
.portal-world__catches,
.portal-world__spawn,
.portal-world__next {
  min-height: 88px;
  border-radius: 12px;
}
.portal-world__live-state {
  padding: 12px 13px;
  display: grid;
  grid-template-columns: 40px 1fr;
  align-items: center;
  gap: 9px;
  border-color: rgba(255,86,105,.66);
  background: radial-gradient(circle at 15% 50%, rgba(255,86,105,.26), transparent 42%), linear-gradient(145deg,#390c18,#160911 74%);
}
.portal-world__broadcast {
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255,255,255,.20);
  border-radius: 50%;
  background: rgba(255,255,255,.07);
  color: #fff;
  font-size: 1.1rem;
  box-shadow: 0 0 22px rgba(255,80,99,.25);
}
.portal-world__live-state strong {
  display: block;
  color: #fff;
  font-size: 1.42rem;
  line-height: 1;
  letter-spacing: -.01em;
}
.portal-world__live-state strong::before { display: none !important; }
.portal-world__live-state small {
  display: block;
  margin-top: 5px;
  color: #ff9bab;
  font-size: .57rem;
  font-weight: 900;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.portal-world__catches {
  min-width: 0;
  padding: 8px 9px;
  overflow: hidden;
}
.portal-world__mini-title,
.portal-world__panel-title {
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.portal-world__mini-title b,
.portal-world__panel-title b {
  color: #d8f9ff;
  font-size: .62rem;
  font-weight: 950;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.portal-world__mini-title small,
.portal-world__panel-title small {
  color: var(--pw-muted);
  font-size: .48rem;
  font-weight: 850;
  letter-spacing: .07em;
  text-transform: uppercase;
}
.portal-world__catch-row {
  margin-top: 7px;
  display: grid;
  grid-template-columns: repeat(5, minmax(112px, 1fr));
  gap: 6px;
  min-width: 0;
}
.portal-world__catch {
  min-width: 0;
  height: 52px;
  display: grid;
  grid-template-columns: 38px minmax(0,1fr) auto;
  align-items: center;
  gap: 6px;
  padding: 5px 6px;
  border: 1px solid rgba(48,214,255,.18);
  border-radius: 8px;
  background: linear-gradient(145deg,#071b2a,#071421);
}
.portal-world__catch.is-shiny { border-color: rgba(255,207,64,.48); box-shadow: inset 0 0 18px rgba(255,207,64,.05); }
/* BOOM_GEN4_OVERLAY_SOURCE_V21: same smooth presentation as LIVE overlay. */
.portal-world__catch-sprite {
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  object-fit: contain;
  image-rendering: auto;
  border-radius: 7px;
  background: radial-gradient(circle,rgba(48,214,255,.12),transparent 72%);
}
.portal-world__catch-copy { min-width: 0; }
.portal-world__catch-copy :is(b,span) { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.portal-world__catch-copy b { color:#fff; font-size:.61rem; }
.portal-world__catch-copy span { margin-top:2px; color:#69eaff; font-size:.51rem; }
.portal-world__catch time { align-self:end; color:#60788b; font-size:.44rem; }
.portal-world__catch-empty {
  grid-column: 1 / -1;
  min-height: 52px;
  display:flex;
  align-items:center;
  padding:0 10px;
  border:1px dashed rgba(48,214,255,.16);
  border-radius:8px;
  color:#7891a5;
  font-size:.58rem;
}

/* VIP CATCH, deliberately the primary action in the upper-right strip. */
.portal-world__spawn {
  display:grid;
  grid-template-columns: 54px minmax(0,1fr);
  align-items:center;
  gap:8px;
  padding:9px 11px;
  text-decoration:none;
  border-color:rgba(255,207,65,.55);
  background: radial-gradient(circle at 16% 50%, rgba(255,207,65,.17), transparent 38%), linear-gradient(145deg,#473508,#10201d 66%,#071a20);
  transition: transform .16s ease, border-color .16s ease, filter .16s ease;
}
.portal-world__spawn:hover { transform:translateY(-1px); border-color:rgba(255,218,78,.88); filter:brightness(1.06); }
.portal-world__spawn img { width:52px; height:52px; object-fit:contain; image-rendering:pixelated; }
.portal-world__spawn strong { display:block; color:#ffe26a; font-size:.79rem; font-weight:950; letter-spacing:.03em; }
.portal-world__spawn span { display:block; margin-top:4px; color:#d6edc5; font-size:.52rem; font-weight:850; line-height:1.25; }
.portal-world__vip-crown,
.portal-world__vip-crown { width:50px; height:50px; display:grid; place-items:center; font-size:1.55rem; filter:drop-shadow(0 0 11px rgba(255,215,65,.22)); }
.portal-world__spawn.is-vip-active { box-shadow: 0 0 28px rgba(255,201,52,.08), inset 0 1px rgba(255,255,255,.04); }
.portal-world__spawn.is-vip-locked { opacity:.86; }

.portal-world__next {
  padding: 10px 11px;
  display:grid;
  grid-template-columns:35px 1fr;
  align-items:center;
  gap:7px;
}
.portal-world__clock { color:#caeaff; font-size:1.45rem; }
.portal-world__next small { display:block; color:#7690a4; font-size:.50rem; font-weight:900; letter-spacing:.09em; }
.portal-world__next strong { display:block; margin-top:4px; color:#fff; font-size:1.20rem; letter-spacing:.04em; }

/* Main game + right command column */
.portal-world__main {
  min-width:0;
  display:grid;
  grid-template-columns:minmax(0,1fr) clamp(330px,24vw,390px);
  gap:10px;
  align-items:stretch;
}
.portal-world__left { min-width:0; display:grid; gap:10px; align-content:start; }
.portal-world__right {
  min-width:0;
  display:grid;
  grid-template-rows:auto auto minmax(270px,1fr) auto;
  gap:9px;
  align-self:stretch;
}
.portal-world__game-card {
  position:relative;
  min-width:0;
  aspect-ratio:320 / 288;
  overflow:hidden;
  border-radius:13px;
  border-color:rgba(44,213,255,.56);
  background:#031018;
  box-shadow:0 20px 62px rgba(0,0,0,.34), inset 0 0 55px rgba(0,0,0,.16);
}
.portal-world__game-card::after {
  content:"";
  position:absolute;
  inset:0;
  z-index:8;
  pointer-events:none;
  box-shadow:inset 0 0 55px rgba(0,0,0,.10);
}
.portal-world__frame {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  border:0;
  background:#031018;
  opacity:0;
  transition:opacity .16s ease;
}
.portal-world__frame.is-ready { opacity:1; }
.portal-world__loading {
  position:absolute;
  inset:0;
  z-index:2;
  display:grid;
  place-items:center;
  align-content:center;
  gap:10px;
  background:radial-gradient(circle at 50% 42%,rgba(49,218,255,.08),transparent 34%),#031018;
  color:#76eaff;
  font-size:.58rem;
  font-weight:900;
  letter-spacing:.10em;
}
.portal-world__frame.is-ready + .portal-world__loading { display:none; }

.portal-world__zone-badge,
.portal-world__map-button {
  position:absolute;
  top:11px;
  z-index:20;
  min-height:42px;
  border:1px solid rgba(48,214,255,.38);
  border-radius:10px;
  background:rgba(4,18,29,.84);
  backdrop-filter:blur(9px);
  box-shadow:0 10px 28px rgba(0,0,0,.22);
}
.portal-world__zone-badge {
  left:11px;
  max-width:min(430px,62%);
  display:grid;
  grid-template-columns:24px minmax(0,1fr);
  align-items:center;
  gap:7px;
  padding:6px 10px;
}
.portal-world__pin { color:#ff5367; font-size:1.08rem; text-shadow:0 0 12px rgba(255,83,103,.45); }
.portal-world__zone-badge strong { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#fff; font-size:.80rem; }
.portal-world__zone-badge small { display:block; margin-top:2px; color:#6ae8fa; font-size:.48rem; font-weight:900; letter-spacing:.07em; }
.portal-world__map-button {
  right:11px;
  padding:0 13px;
  color:#d5faff;
  font-size:.59rem;
  font-weight:950;
  letter-spacing:.06em;
  cursor:pointer;
}
.portal-world__map-button:hover { border-color:rgba(48,214,255,.72); background:rgba(5,31,47,.92); }

.portal-world__pad {
  position:absolute;
  left:14px;
  bottom:14px;
  z-index:20;
  width:112px;
  height:112px;
  border:2px solid rgba(255,255,255,.18);
  border-radius:50%;
  background:rgba(4,23,32,.66);
  backdrop-filter:blur(8px);
  box-shadow:0 14px 34px rgba(0,0,0,.27), inset 0 0 20px rgba(41,214,255,.04);
}
.portal-world__pad button {
  position:absolute;
  width:34px;
  height:34px;
  display:grid;
  place-items:center;
  border:0;
  border-radius:50%;
  background:rgba(13,42,55,.84);
  color:#fff;
  font-weight:950;
  cursor:pointer;
}
.portal-world__pad [data-world-dir="up"] { left:37px; top:6px; }
.portal-world__pad [data-world-dir="down"] { left:37px; bottom:6px; }
.portal-world__pad [data-world-dir="left"] { left:6px; top:37px; }
.portal-world__pad [data-world-dir="right"] { right:6px; top:37px; }
.portal-world__pad button:active { transform:scale(.92); background:rgba(43,210,255,.35); }
.portal-world__interact {
  position:absolute;
  right:18px;
  bottom:18px;
  z-index:20;
  width:88px;
  height:88px;
  border:2px solid rgba(255,255,255,.20);
  border-radius:50%;
  background:rgba(4,23,31,.75);
  color:#fff;
  box-shadow:0 14px 34px rgba(0,0,0,.28);
  backdrop-filter:blur(8px);
  cursor:pointer;
}
.portal-world__interact b { display:block; font-size:1.48rem; }
.portal-world__interact small { display:block; margin-top:2px; font-size:.46rem; font-weight:900; letter-spacing:.07em; }
.portal-world__interact:active { transform:scale(.96); }

/* Bottom command strip */
.portal-world__toolbar {
  min-width:0;
  display:grid;
  grid-template-columns:220px minmax(260px,.85fr) minmax(360px,1fr);
  gap:8px;
}
.portal-world__footer-card {
  min-width:0;
  min-height:78px;
  padding:10px 12px;
  border-radius:11px;
}
.portal-world__footer-card > small { display:block; color:#6f889d; font-size:.48rem; font-weight:900; letter-spacing:.09em; }
.portal-world__footer-card > strong { display:block; margin-top:4px; color:#fff; font-size:.70rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.portal-world__footer-card > span { display:block; margin-top:4px; color:#6fe8fa; font-size:.51rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.portal-world__footer-zone > strong { color:#ff6073; }
.portal-world__commands { display:flex; align-items:center; gap:5px; margin-top:8px; }
.portal-world__commands button {
  flex:1 1 0;
  min-width:0;
  min-height:31px;
  padding:0 7px;
  border:1px solid rgba(48,214,255,.22);
  border-radius:7px;
  background:#071a28;
  color:#e3fbff;
  font-size:.53rem;
  font-weight:900;
  cursor:pointer;
}
.portal-world__commands button span { margin-left:3px; color:#91a9ba; font-weight:750; }

/* Right sidebar */
.portal-world__panel { min-width:0; border-radius:12px; overflow:hidden; }
.portal-world__panel-title {
  min-height:44px;
  padding:8px 10px;
  background:linear-gradient(90deg,rgba(74,13,22,.31),rgba(6,19,29,.15));
}
.portal-world__panel-title > div { min-width:0; display:grid; gap:2px; }
.portal-world__panel-title > div small { color:#ff7384; font-size:.43rem; }
.portal-world__panel-title > span { color:#cfeeff; font-size:.54rem; font-weight:900; }
.portal-world__party-open {
  min-height:30px;
  padding:0 9px;
  border:1px solid rgba(48,214,255,.26);
  border-radius:7px;
  background:#071a28;
  color:#dffbff;
  font-size:.50rem;
  font-weight:950;
  cursor:pointer;
}
.portal-world__party-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:6px;
  padding:8px;
}
.portal-world__mon {
  min-width:0;
  min-height:98px;
  display:grid;
  place-items:center;
  align-content:center;
  padding:5px;
  border:1px solid rgba(48,214,255,.20);
  border-radius:9px;
  background:linear-gradient(145deg,#071824,#06121d);
}
.portal-world__mon.is-empty { color:#657e92; font-size:.50rem; font-weight:900; }
.portal-world__mon img { width:52px; height:52px; object-fit:contain; image-rendering:pixelated; }
.portal-world__mon b { max-width:100%; margin-top:1px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#fff; font-size:.59rem; }
.portal-world__mon small { margin-top:1px; color:#dff9ff; font-size:.48rem; font-weight:900; }
.portal-world__mon em { margin-top:2px; color:#7994a8; font-style:normal; font-size:.40rem; font-weight:850; }
.portal-world__hp { width:78%; height:4px; margin-top:4px; overflow:hidden; border-radius:99px; background:#10252d; }
.portal-world__hp i { display:block; width:var(--party-hp,100%); height:100%; border-radius:inherit; background:linear-gradient(90deg,#24db85,#61ffb2); }

.portal-world__quick-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:6px;
  padding:8px;
}
.portal-world__quick-grid :is(a,button) {
  min-height:63px;
  display:grid;
  place-items:center;
  align-content:center;
  gap:6px;
  border:1px solid rgba(48,214,255,.25);
  border-radius:9px;
  background:linear-gradient(145deg,#071b29,#06131f);
  color:#ddf8ff;
  text-decoration:none;
  cursor:pointer;
}
.portal-world__quick-grid i { font-style:normal; font-size:1.05rem; }
.portal-world__quick-grid span { font-size:.53rem; font-weight:950; letter-spacing:.04em; }
.portal-world__quick-grid .is-bag { border-color:rgba(255,177,64,.55); background:linear-gradient(145deg,#4a2d0d,#17120b); }
.portal-world__quick-grid .is-shop { border-color:rgba(45,192,255,.52); }
.portal-world__quick-grid .is-red { border-color:rgba(255,76,100,.52); background:linear-gradient(145deg,#3d111b,#171017); }
.portal-world__quick-grid .is-gold { border-color:rgba(255,198,55,.55); background:linear-gradient(145deg,#3c2a08,#17130a); }

.portal-world__chat {
  min-height:0;
  display:grid;
  grid-template-rows:auto minmax(0,1fr) auto;
}
.portal-world__chat-title > span { color:#64f79b; }
.portal-world__chat-list {
  min-height:0;
  overflow:auto;
  display:flex;
  flex-direction:column;
  gap:5px;
  padding:7px;
  scrollbar-width:thin;
}
.portal-world__chat-message {
  padding:7px 8px;
  border:1px solid rgba(48,214,255,.16);
  border-radius:8px;
  background:#071c2b;
}
.portal-world__chat-message.is-me { border-color:rgba(255,206,64,.28); background:rgba(53,40,10,.34); }
.portal-world__chat-message header { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.portal-world__chat-message b { color:#60eaff; font-size:.55rem; }
.portal-world__chat-message.is-me b { color:#ffd959; }
.portal-world__chat-message time { color:#60788c; font-size:.42rem; }
.portal-world__chat-message p { margin:3px 0 0; color:#f1fbff; font-size:.58rem; line-height:1.28; overflow-wrap:anywhere; }
.portal-world__chat-empty { padding:18px 8px; color:#7891a4; font-size:.56rem; }
.portal-world__chat-compose {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:5px;
  padding:7px;
  border-top:1px solid rgba(48,214,255,.13);
}
.portal-world__chat-compose input {
  min-width:0;
  height:36px;
  padding:0 9px;
  border:1px solid rgba(48,214,255,.20);
  border-radius:8px;
  background:#050d15;
  color:#fff;
  outline:none;
  font-size:.58rem;
}
.portal-world__chat-compose input:focus { border-color:rgba(48,214,255,.58); }
.portal-world__chat-compose button {
  min-width:72px;
  border:0;
  border-radius:8px;
  background:#ff596b;
  color:#fff;
  font-size:.50rem;
  font-weight:950;
  cursor:pointer;
}
.portal-world__chat-compose button:disabled { opacity:.45; cursor:wait; }

.portal-world__team {
  min-height:58px;
  padding:9px 11px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  border-color:rgba(255,203,61,.30);
  border-radius:11px;
  background:linear-gradient(145deg,#211a08,#071019);
}
.portal-world__team div { display:grid; }
.portal-world__team b { color:#fff; font-size:.72rem; }
.portal-world__team b span { color:#ff5c70; }
.portal-world__team small { margin-top:2px; color:#8498a7; font-size:.42rem; letter-spacing:.07em; }
.portal-world__team > strong { color:#ffc943; font-size:.48rem; letter-spacing:.07em; }

.portal-world--locked {
  min-height:66vh;
  display:grid;
  place-items:center;
  text-align:center;
  border:1px solid rgba(48,214,255,.24);
  border-radius:16px;
  background:radial-gradient(circle at 50% 35%,rgba(48,214,255,.08),transparent 30%),rgba(4,13,22,.86);
}
.portal-world--locked > div { max-width:520px; padding:32px; }
.portal-world--locked h1 { margin:.35rem 0 .6rem; font-size:clamp(1.6rem,4vw,3rem); }
.portal-world--locked p { color:#7f98ab; line-height:1.6; }

/* ----------------------------------------------------------------------
   RESPONSIVE
   ---------------------------------------------------------------------- */
@media (max-width: 1450px) {
  .portal-world-shellbar { grid-template-columns: 220px minmax(0,1fr) 190px 46px; gap:8px; }
  .portal-world-shellbar__ball { flex-basis:50px; width:50px; height:50px; }
  .portal-world-shellbar__brandcopy b { font-size:1.18rem; }
  .portal-world-shellbar__nav :is(a,button) { min-height:60px; }
  .portal-world__livebar { grid-template-columns:145px minmax(470px,1fr) 215px 160px; }
  .portal-world__main { grid-template-columns:minmax(0,1fr) 340px; }
  .portal-world__mon { min-height:90px; }
  .portal-world__mon img { width:46px; height:46px; }
}

@media (max-width: 1180px) {
  body.portal-world-active #portal-root.portal-shell { grid-template-rows:82px minmax(0,1fr) !important; }
  body.portal-world-active .portal-topbar { height:82px !important; min-height:82px !important; }
  .portal-world-shellbar { grid-template-columns:180px minmax(0,1fr) 46px; }
  .portal-world-shellbar__profile { display:none; }
  .portal-world-shellbar__brandcopy b { font-size:1rem; }
  .portal-world-shellbar__ball { flex-basis:44px; width:44px; height:44px; }
  .portal-world-shellbar__nav { overflow-x:auto; grid-template-columns:repeat(8,76px); scrollbar-width:none; }
  .portal-world-shellbar__nav::-webkit-scrollbar { display:none; }
  .portal-world-shellbar__nav :is(a,button) { min-height:56px; }
  .portal-world__livebar { grid-template-columns:140px minmax(0,1fr) 200px; }
  .portal-world__next { display:none; }
  .portal-world__catch-row { grid-template-columns:repeat(4,minmax(110px,1fr)); }
  .portal-world__catch:nth-child(n+5) { display:none; }
  .portal-world__main { grid-template-columns:minmax(0,1fr) 320px; }
  .portal-world__toolbar { grid-template-columns:190px 1fr; }
  .portal-world__footer-commands { grid-column:1/-1; }
}

@media (max-width: 900px) {
  body.portal-world-active #portal-root.portal-shell { grid-template-rows:74px minmax(0,1fr) !important; }
  body.portal-world-active .portal-topbar { height:74px !important; min-height:74px !important; padding:0 8px !important; }
  body.portal-world-active .portal-stage { padding:7px 7px 90px !important; }
  .portal-world-shellbar { grid-template-columns:48px minmax(0,1fr) 44px; gap:5px; }
  .portal-world-shellbar__brandcopy { display:none; }
  .portal-world-shellbar__ball { flex-basis:42px; width:42px; height:42px; }
  .portal-world-shellbar__nav { grid-template-columns:repeat(8,70px); }
  .portal-world-shellbar__nav :is(a,button) { min-height:50px; padding:5px 3px; }
  .portal-world-shellbar__nav i { font-size:.92rem; }
  .portal-world-shellbar__nav span { font-size:.48rem; }
  .portal-world-shellbar__menu { width:42px; height:42px; }
  .portal-world { gap:7px; }
  .portal-world__livebar { display:flex; gap:7px; overflow-x:auto; scroll-snap-type:x proximity; padding-bottom:1px; scrollbar-width:none; }
  .portal-world__livebar::-webkit-scrollbar { display:none; }
  .portal-world__live-state { flex:0 0 135px; scroll-snap-align:start; }
  .portal-world__catches { flex:0 0 480px; scroll-snap-align:start; }
  .portal-world__spawn { flex:0 0 205px; scroll-snap-align:start; }
  .portal-world__next { display:grid; flex:0 0 145px; scroll-snap-align:start; }
  .portal-world__main { grid-template-columns:1fr; }
  .portal-world__right { grid-template-columns:1fr 1fr; grid-template-rows:auto auto auto; }
  .portal-world__chat { grid-column:1/-1; min-height:390px; }
  .portal-world__team { grid-column:1/-1; }
}

@media (max-width: 620px) {
  .portal-world__catches { flex-basis:385px; }
  .portal-world__catch-row { grid-template-columns:repeat(3,minmax(112px,1fr)); }
  .portal-world__catch:nth-child(n+4) { display:none; }
  .portal-world__game-card { border-radius:10px; }
  .portal-world__zone-badge { top:7px; left:7px; max-width:62%; }
  .portal-world__map-button { top:7px; right:7px; }
  .portal-world__pad { left:7px; bottom:7px; transform:scale(.77); transform-origin:left bottom; }
  .portal-world__interact { right:9px; bottom:9px; width:72px; height:72px; }
  .portal-world__toolbar { grid-template-columns:1fr; }
  .portal-world__footer-commands { grid-column:auto; }
  .portal-world__right { grid-template-columns:1fr; }
  .portal-world__chat { grid-column:auto; min-height:370px; }
  .portal-world__team { grid-column:auto; }
}

/* ======================================================================
   BOOM PORTAL WORLD V1.3
   Desktop visual lock to the approved mockup proportions.
   Main fixes:
   - Chat is a real fixed viewport with internal scroll, never page-height.
   - Sidebar width and game ratio match the approved reference much closer.
   - WORLD route uses readable px sizing instead of inheriting tiny Portal rems.
   - VIP CATCH is the primary live action.
   ====================================================================== */

.portal-world { position: relative; }
.portal-world__toast {
  position: fixed;
  left: 50%;
  top: 112px;
  z-index: 4000;
  transform: translateX(-50%) translateY(-8px);
  min-width: 260px;
  max-width: min(520px, calc(100vw - 28px));
  padding: 12px 16px;
  border: 1px solid rgba(62, 222, 255, .42);
  border-radius: 12px;
  background: rgba(3, 16, 25, .97);
  box-shadow: 0 18px 55px rgba(0,0,0,.48), 0 0 28px rgba(45,216,255,.10);
  color: #f4fbff;
  text-align: center;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .025em;
  opacity: 0;
  pointer-events: none;
  transition: opacity .18s ease, transform .18s ease;
}
.portal-world__toast.is-showing {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
.portal-world__toast.is-good {
  border-color: rgba(72, 243, 157, .54);
  box-shadow: 0 18px 55px rgba(0,0,0,.48), 0 0 30px rgba(72,243,157,.12);
}
.portal-world__toast.is-bad { border-color: rgba(255, 86, 105, .62); }

@media (min-width: 1101px) {
  body.portal-world-active #portal-root.portal-shell {
    grid-template-rows: 96px minmax(0, 1fr) !important;
  }
  body.portal-world-active .portal-topbar {
    min-height: 96px !important;
    height: 96px !important;
    padding: 0 10px !important;
  }
  body.portal-world-active .portal-stage {
    padding: 8px 10px 18px !important;
  }

  .portal-world-shellbar {
    width: 100%;
    max-width: 1344px;
    margin: 0 auto;
    grid-template-columns: 290px minmax(0, 1fr) 242px 54px;
    gap: 10px;
  }
  .portal-world-shellbar__ball {
    flex-basis: 64px;
    width: 64px;
    height: 64px;
  }
  .portal-world-shellbar__brand { gap: 14px; }
  .portal-world-shellbar__brandcopy b {
    font-size: 25px;
    line-height: 1;
  }
  .portal-world-shellbar__brandcopy small {
    margin-top: 5px;
    font-size: 10px;
  }
  .portal-world-shellbar__nav {
    grid-template-columns: repeat(8, minmax(76px, 1fr));
    gap: 4px;
  }
  .portal-world-shellbar__nav :is(a,button) {
    min-height: 70px;
    gap: 7px;
    padding: 8px 5px;
    border-radius: 11px;
  }
  .portal-world-shellbar__nav i { font-size: 20px; }
  .portal-world-shellbar__nav span { font-size: 10px; }
  .portal-world-shellbar__profile {
    height: 64px;
    grid-template-columns: 46px minmax(0, 1fr) auto;
    gap: 9px;
    padding: 7px 10px;
  }
  .portal-world-shellbar__avatar {
    width: 46px;
    height: 46px;
    overflow: hidden;
    font-size: 17px;
  }
  .portal-world-shellbar__avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  .portal-world-shellbar__profilecopy b { font-size: 12px; }
  .portal-world-shellbar__profilecopy small { font-size: 8px; }
  .portal-world-shellbar__vip { font-size: 9px; padding: 4px 7px; }
  .portal-world-shellbar__menu { width: 52px; height: 52px; font-size: 22px; }

  .portal-world {
    width: 100%;
    max-width: 1344px;
    gap: 10px;
  }

  .portal-world__livebar {
    grid-template-columns: 172px minmax(0, 1fr) 214px 188px;
    gap: 8px;
  }
  .portal-world__live-state,
  .portal-world__catches,
  .portal-world__spawn,
  .portal-world__next {
    min-height: 92px;
    height: 92px;
    border-radius: 12px;
  }
  .portal-world__live-state {
    grid-template-columns: 42px 1fr;
    gap: 10px;
    padding: 12px 14px;
  }
  .portal-world__broadcast { width: 40px; height: 40px; font-size: 19px; }
  .portal-world__live-state strong { font-size: 25px; }
  .portal-world__live-state small { margin-top: 5px; font-size: 10px; }
  .portal-world__mini-title b { font-size: 10px; }
  .portal-world__mini-title small { font-size: 8px; }
  .portal-world__catches { padding: 8px 10px; }
  .portal-world__catch-row {
    margin-top: 7px;
    grid-template-columns: repeat(5, minmax(100px, 1fr));
    gap: 6px;
  }
  .portal-world__catch {
    height: 56px;
    grid-template-columns: 40px minmax(0,1fr) auto;
    gap: 7px;
    padding: 5px 7px;
  }
  .portal-world__catch-sprite { width: 38px; height: 38px; }
  .portal-world__catch-copy b { font-size: 10px; }
  .portal-world__catch-copy span { font-size: 9px; }
  .portal-world__catch time { font-size: 8px; }

  .portal-world__spawn {
    grid-template-columns: 54px minmax(0,1fr);
    gap: 9px;
    padding: 9px 12px;
    cursor: pointer;
    border-color: rgba(255, 211, 64, .68);
    background:
      radial-gradient(circle at 13% 50%, rgba(255, 213, 73, .20), transparent 34%),
      linear-gradient(135deg, #173d25 0%, #0c6d43 48%, #075b47 100%);
    box-shadow: 0 0 0 1px rgba(255,211,64,.05), 0 16px 42px rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.08);
    color: #fff;
  }
  .portal-world__spawn:hover {
    transform: translateY(-1px);
    border-color: rgba(255, 222, 92, .95);
    filter: brightness(1.08);
  }
  .portal-world__spawn[aria-busy="true"] { filter: saturate(.65); }
  .portal-world__spawn img { width: 52px; height: 52px; }
  .portal-world__spawn strong {
    color: #fff3a0;
    font-size: 15px;
    line-height: 1.05;
  }
  .portal-world__spawn span {
    margin-top: 4px;
    color: #d7ffe8;
    font-size: 9px;
    line-height: 1.25;
  }
  .portal-world__vip-crown { width: 52px; height: 52px; font-size: 28px; }
  .portal-world__next { grid-template-columns: 38px 1fr; padding: 10px 12px; }
  .portal-world__clock { font-size: 25px; }
  .portal-world__next small { font-size: 9px; }
  .portal-world__next strong { margin-top: 4px; font-size: 21px; }

  .portal-world__main {
    grid-template-columns: minmax(0, 1fr) 372px;
    gap: 10px;
    align-items: start;
  }
  .portal-world__left { gap: 10px; align-content: start; }
  .portal-world__game-card {
    aspect-ratio: 1.145 / 1;
    border-radius: 13px;
  }
  .portal-world__zone-badge,
  .portal-world__map-button {
    top: 12px;
    min-height: 48px;
  }
  .portal-world__zone-badge {
    left: 12px;
    grid-template-columns: 26px minmax(0,1fr);
    gap: 8px;
    padding: 7px 11px;
  }
  .portal-world__pin { font-size: 20px; }
  .portal-world__zone-badge strong { font-size: 14px; }
  .portal-world__zone-badge small { font-size: 8px; }
  .portal-world__map-button {
    right: 12px;
    padding: 0 14px;
    font-size: 10px;
  }
  .portal-world__pad {
    left: 16px;
    bottom: 16px;
    width: 126px;
    height: 126px;
  }
  .portal-world__pad button { width: 38px; height: 38px; font-size: 15px; }
  .portal-world__pad [data-world-dir="up"] { left: 42px; top: 7px; }
  .portal-world__pad [data-world-dir="down"] { left: 42px; bottom: 7px; }
  .portal-world__pad [data-world-dir="left"] { left: 7px; top: 42px; }
  .portal-world__pad [data-world-dir="right"] { right: 7px; top: 42px; }
  .portal-world__interact {
    right: 20px;
    bottom: 20px;
    width: 100px;
    height: 100px;
  }
  .portal-world__interact b { font-size: 27px; }
  .portal-world__interact small { font-size: 8px; }

  .portal-world__toolbar {
    grid-template-columns: 230px minmax(290px, 1fr) minmax(390px, 1.05fr);
    gap: 8px;
  }
  .portal-world__footer-card {
    min-height: 90px;
    padding: 11px 13px;
  }
  .portal-world__footer-card > small { font-size: 8px; }
  .portal-world__footer-card > strong { margin-top: 5px; font-size: 12px; }
  .portal-world__footer-card > span { margin-top: 5px; font-size: 9px; }
  .portal-world__commands { gap: 6px; margin-top: 9px; }
  .portal-world__commands button { min-height: 34px; padding: 0 8px; font-size: 9px; }

  /* Critical V1.3 height lock. The chat scrolls inside its panel instead of
     making the whole page thousands of pixels tall. */
  .portal-world__right {
    grid-template-rows: auto auto 390px 62px;
    gap: 9px;
    align-self: start;
    align-content: start;
    min-height: 0;
  }
  .portal-world__panel { border-radius: 12px; }
  .portal-world__panel-title { min-height: 48px; padding: 8px 10px; }
  .portal-world__panel-title b { font-size: 10px; }
  .portal-world__panel-title small { font-size: 7px; }
  .portal-world__panel-title > span { font-size: 9px; }
  .portal-world__party-open { min-height: 31px; padding: 0 10px; font-size: 9px; }
  .portal-world__party-grid { gap: 7px; padding: 9px; }
  .portal-world__mon { min-height: 106px; padding: 6px; }
  .portal-world__mon img { width: 56px; height: 56px; }
  .portal-world__mon b { margin-top: 2px; font-size: 10px; }
  .portal-world__mon small { font-size: 9px; }
  .portal-world__mon em { font-size: 7px; }
  .portal-world__hp { height: 5px; margin-top: 4px; }

  .portal-world__quick-grid { gap: 7px; padding: 9px; }
  .portal-world__quick-grid :is(a,button) { min-height: 74px; gap: 7px; }
  .portal-world__quick-grid i { font-size: 22px; }
  .portal-world__quick-grid span { font-size: 10px; }

  .portal-world__chat {
    height: 390px;
    min-height: 390px;
    max-height: 390px;
    overflow: hidden;
    grid-template-rows: 48px minmax(0, 1fr) 52px;
  }
  .portal-world__chat-title { min-height: 48px; }
  .portal-world__chat-list {
    min-height: 0 !important;
    height: auto !important;
    max-height: none !important;
    overflow-y: auto !important;
    overscroll-behavior: contain;
    padding: 8px;
    gap: 6px;
  }
  .portal-world__chat-message {
    flex: 0 0 auto;
    padding: 8px 9px;
    border-radius: 9px;
  }
  .portal-world__chat-message b { font-size: 10px; }
  .portal-world__chat-message time { font-size: 8px; }
  .portal-world__chat-message p { margin-top: 3px; font-size: 10px; line-height: 1.28; }
  .portal-world__chat-compose { gap: 6px; padding: 8px; }
  .portal-world__chat-compose input { height: 36px; padding: 0 10px; font-size: 10px; }
  .portal-world__chat-compose button { min-width: 76px; font-size: 9px; }
  .portal-world__team {
    min-height: 62px;
    height: 62px;
    padding: 9px 12px;
  }
  .portal-world__team b { font-size: 13px; }
  .portal-world__team small { font-size: 8px; }
  .portal-world__team > strong { font-size: 9px; }
}

@media (min-width: 1101px) and (max-width: 1280px) {
  .portal-world-shellbar,
  .portal-world { max-width: 1220px; }
  .portal-world-shellbar { grid-template-columns: 250px minmax(0,1fr) 210px 50px; }
  .portal-world-shellbar__nav { grid-template-columns: repeat(8, minmax(66px, 1fr)); }
  .portal-world__livebar { grid-template-columns: 158px minmax(0,1fr) 200px 168px; }
  .portal-world__main { grid-template-columns: minmax(0,1fr) 340px; }
  .portal-world__right { grid-template-rows: auto auto 360px 58px; }
  .portal-world__chat { height: 360px; min-height: 360px; max-height: 360px; }
  .portal-world__mon { min-height: 96px; }
  .portal-world__quick-grid :is(a,button) { min-height: 66px; }
  .portal-world__toolbar { grid-template-columns: 205px 1fr 1.25fr; }
}

/* ======================================================================
   BOOM PORTAL WORLD V1.4 // WORLD TRAVEL + CLEAN GAME VIEW
   - Removes the non-working overlay D-pad / A control from Portal.
   - Adds one real WORLD travel control that opens the existing region selector.
   - Keeps the game viewport clean, closer to the approved reference.
   ====================================================================== */

.portal-world__pad,
.portal-world__interact { display: none !important; }

.portal-world__region-travel {
  width: 100%;
  min-height: 64px;
  display: grid;
  grid-template-columns: 42px minmax(0,1fr) auto 22px;
  align-items: center;
  gap: 10px;
  padding: 9px 11px;
  border: 1px solid rgba(48,214,255,.38);
  border-radius: 11px;
  background:
    radial-gradient(circle at 8% 50%, rgba(53,220,255,.13), transparent 33%),
    linear-gradient(145deg,#071e2e,#06131f);
  color: #eafaff;
  text-align: left;
  cursor: pointer;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.035);
  transition: transform .15s ease, border-color .15s ease, background .15s ease;
}
.portal-world__region-travel:hover {
  transform: translateY(-1px);
  border-color: rgba(59,222,255,.76);
  background:
    radial-gradient(circle at 8% 50%, rgba(53,220,255,.18), transparent 35%),
    linear-gradient(145deg,#09263a,#071827);
}
.portal-world__region-icon {
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(53,220,255,.35);
  border-radius: 10px;
  background: rgba(24,160,207,.09);
  color: #62e9ff;
  font-size: 24px;
}
.portal-world__region-copy { min-width: 0; display: grid; }
.portal-world__region-copy b {
  color: #eafaff;
  font-size: 13px;
  font-weight: 950;
  letter-spacing: .045em;
}
.portal-world__region-copy small {
  margin-top: 3px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #7fa4bb;
  font-size: 9px;
  font-weight: 800;
}
.portal-world__region-current {
  padding: 4px 7px;
  border: 1px solid rgba(61,231,255,.22);
  border-radius: 999px;
  background: rgba(42,183,220,.07);
  color: #7cecff;
  font-size: 8px;
  font-weight: 950;
  letter-spacing: .045em;
  white-space: nowrap;
}
.portal-world__region-arrow {
  color: #b8efff;
  font-size: 24px;
  line-height: 1;
  text-align: right;
}
.portal-world__commands .is-world {
  border-color: rgba(48,214,255,.55) !important;
  background: linear-gradient(145deg,rgba(10,67,91,.82),rgba(5,25,38,.92)) !important;
  color: #8fecff !important;
}

@media (min-width:1101px) {
  .portal-world__right {
    grid-template-rows: auto auto 68px 330px 62px;
  }
  .portal-world__chat {
    height: 330px;
    min-height: 330px;
    max-height: 330px;
  }
  .portal-world__game-card {
    /* Clean game viewport now that the fake controls are gone. */
    box-shadow: 0 20px 62px rgba(0,0,0,.34), inset 0 0 36px rgba(0,0,0,.10);
  }
}

@media (min-width:1101px) and (max-width:1280px) {
  .portal-world__right { grid-template-rows: auto auto 62px 305px 58px; }
  .portal-world__chat { height:305px; min-height:305px; max-height:305px; }
  .portal-world__region-travel { min-height:62px; }
  .portal-world__region-current { display:none; }
}

@media (max-width:900px) {
  .portal-world__region-travel { grid-column:1/-1; }
}

@media (max-width:620px) {
  .portal-world__region-travel {
    grid-template-columns: 38px minmax(0,1fr) 20px;
    min-height: 58px;
    padding: 8px 9px;
  }
  .portal-world__region-icon { width:36px; height:36px; font-size:21px; }
  .portal-world__region-current { display:none; }
  .portal-world__region-copy small { font-size:8px; }
}


/* ======================================================================
   BOOM PORTAL WORLD V1.5 // BOTTOM HUD MATCH
   Matches the approved mockup footer: Current Zone / Active Quest /
   Quick Commands + Team BOOM social strip.
   ====================================================================== */
.portal-world__toolbar--mockup {
  grid-template-columns: minmax(220px,.82fr) minmax(360px,1.28fr) minmax(360px,1.08fr) !important;
  gap: 10px !important;
}
.portal-world__toolbar--mockup .portal-world__footer-card {
  position: relative;
  min-height: 92px !important;
  overflow: hidden;
  border: 1px solid rgba(35,197,255,.34) !important;
  border-radius: 12px !important;
  background: linear-gradient(145deg,rgba(4,23,35,.98),rgba(3,14,25,.98)) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.025), 0 9px 24px rgba(0,0,0,.18);
}
.portal-world__footer-zone {
  display: grid !important;
  grid-template-columns: minmax(0,1fr) 74px;
  align-items: center;
  gap: 10px;
}
.portal-world__zone-copy { min-width:0; }
.portal-world__zone-copy > small,
.portal-world__footer-quest > small,
.portal-world__footer-commands > small {
  display:block;
  color:#738aa0;
  font-size:8px;
  line-height:1;
  font-weight:950;
  letter-spacing:.09em;
}
.portal-world__zone-copy > strong {
  display:block;
  margin-top:7px;
  color:#ff5e70;
  font-size:14px;
  line-height:1;
  font-weight:1000;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.portal-world__zone-copy > span {
  display:block;
  margin-top:10px;
  color:#c8f5ff;
  font-size:10px;
  font-weight:900;
}
.portal-world__zone-thumb {
  width:74px;
  height:66px;
  display:grid;
  place-items:center;
  overflow:hidden;
  border:1px solid rgba(46,214,255,.38);
  border-radius:8px;
  background:radial-gradient(circle at 50% 45%,rgba(39,217,255,.18),rgba(5,22,32,.96));
}
.portal-world__zone-thumb img {
  width:100%;
  height:100%;
  object-fit:cover;
  image-rendering:auto;
}
.portal-world__zone-thumb span {
  color:#61edff;
  font-size:28px;
  font-weight:900;
}
.portal-world__footer-quest { padding:11px 13px 9px !important; }
.portal-world__quest-row {
  min-width:0;
  display:grid;
  grid-template-columns:38px minmax(0,1fr) 30px;
  align-items:center;
  gap:9px;
  margin-top:7px;
}
.portal-world__quest-avatar {
  width:38px;
  height:38px;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:linear-gradient(145deg,#ffc23f,#ec7337);
  box-shadow:0 0 0 2px #092536,0 0 18px rgba(255,176,55,.20);
  font-size:20px;
}
.portal-world__quest-copy { min-width:0; }
.portal-world__quest-copy > strong {
  display:block;
  color:#fff;
  font-size:12px;
  line-height:1.08;
  font-weight:950;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.portal-world__quest-copy > span {
  display:block;
  margin-top:3px;
  color:#94a9ba;
  font-size:9px;
  line-height:1.1;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.portal-world__quest-progress {
  height:7px;
  margin-top:8px;
  overflow:hidden;
  border:1px solid rgba(48,214,255,.23);
  border-radius:999px;
  background:#071723;
}
.portal-world__quest-progress i {
  display:block;
  width:10%;
  height:100%;
  border-radius:inherit;
  background:linear-gradient(90deg,#16ddb0,#36f0d1);
  box-shadow:0 0 12px rgba(37,237,202,.30);
}
.portal-world__quest-ball {
  width:28px;
  height:28px;
  display:grid;
  place-items:center;
  color:#ff596b;
  font-size:24px;
  font-weight:1000;
  text-shadow:0 0 10px rgba(255,70,90,.26);
}
.portal-world__quest-count {
  position:absolute;
  right:13px;
  bottom:10px;
  color:#a7bfd1 !important;
  font-size:10px !important;
  font-weight:900;
}
.portal-world__footer-commands { padding:11px 13px !important; }
.portal-world__commands--mockup {
  display:grid !important;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:7px !important;
  margin-top:11px !important;
}
.portal-world__commands--mockup button {
  min-height:38px !important;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  padding:0 8px !important;
  border:1px solid rgba(49,212,255,.30) !important;
  border-radius:8px !important;
  background:linear-gradient(145deg,#071b29,#06131f) !important;
  color:#dff9ff !important;
  font-size:9px !important;
  font-weight:850 !important;
}
.portal-world__commands--mockup button b {
  width:23px;
  height:23px;
  flex:0 0 23px;
  display:grid;
  place-items:center;
  border:1px solid rgba(103,218,255,.52);
  border-radius:5px;
  background:#0b2638;
  color:#f4fcff;
  font-size:12px;
  line-height:1;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
}
.portal-world__commands--mockup button span {
  margin:0 !important;
  color:#9fb4c5 !important;
  font-size:9px;
  font-weight:800;
  white-space:nowrap;
}
.portal-world__team--mockup {
  min-height:62px !important;
  height:62px !important;
  padding:8px 12px !important;
  border:1px solid rgba(38,203,255,.28) !important;
  border-radius:11px !important;
  background:linear-gradient(145deg,#071a28,#071019) !important;
}
.portal-world__team-copy { display:grid; min-width:0; }
.portal-world__team--mockup .portal-world__team-copy b {
  color:#fff;
  font-size:14px;
  line-height:1;
}
.portal-world__team--mockup .portal-world__team-copy b span { color:#ff5c70; }
.portal-world__team--mockup .portal-world__team-copy small {
  margin-top:5px;
  color:#8499aa;
  font-size:8px;
  line-height:1;
  letter-spacing:.06em;
}
.portal-world__team-social {
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:13px;
}
.portal-world__team-social span {
  min-width:20px;
  display:grid;
  place-items:center;
  color:#e8fbff;
  font-size:18px;
  line-height:1;
  font-weight:950;
  filter:drop-shadow(0 0 8px rgba(40,210,255,.10));
}
.portal-world__team-social span:nth-child(1) { color:#eaffff; }
.portal-world__team-social span:nth-child(2) { color:#ff4e57; }
.portal-world__team-social span:nth-child(3) { color:#8399ff; }
.portal-world__team-social span:nth-child(4) { color:#f4fbff; }

@media (max-width:1100px) {
  .portal-world__toolbar--mockup { grid-template-columns:1fr 1.35fr !important; }
  .portal-world__toolbar--mockup .portal-world__footer-commands { grid-column:1/-1; }
}
@media (max-width:720px) {
  .portal-world__toolbar--mockup { grid-template-columns:1fr !important; }
  .portal-world__toolbar--mockup .portal-world__footer-commands { grid-column:auto; }
  .portal-world__commands--mockup { grid-template-columns:repeat(2,1fr); }
  .portal-world__footer-zone { grid-template-columns:minmax(0,1fr) 68px; }
  .portal-world__team-social { gap:10px; }
}

/* ======================================================================
   BOOM PORTAL WORLD V1.6 // SIDEBAR MATCH + REAL SOCIAL LINKS
   Right rail follows the approved reference: Party -> 6 quick actions ->
   WORLD travel -> compact WORLD CHAT -> Team BOOM links.
   ====================================================================== */

.portal-world__team-copy {
  color: inherit;
  text-decoration: none;
}
.portal-world__team-copy:hover b { color: #dffaff; }

.portal-world__team-social a {
  width: 28px;
  height: 28px;
  display: grid;
  place-items: center;
  border: 1px solid transparent;
  border-radius: 8px;
  text-decoration: none;
  font-size: 18px;
  line-height: 1;
  font-weight: 950;
  transition: transform .14s ease, border-color .14s ease, background .14s ease, filter .14s ease;
}
.portal-world__team-social a:hover {
  transform: translateY(-2px);
  border-color: rgba(56,216,255,.28);
  background: rgba(45,202,255,.07);
  filter: brightness(1.12);
}
.portal-world__team-social .is-tiktok { color:#f2ffff; text-shadow:2px 0 #ff426d,-2px 0 #45efff; }
.portal-world__team-social .is-youtube { color:#ff4b57; }
.portal-world__team-social .is-discord { color:#8c9cff; }
.portal-world__team-social .is-web { color:#65eaff; }

.portal-world__chat-live {
  display:flex;
  align-items:center;
  gap:6px;
  color:#9bf7c1 !important;
  font-size:9px !important;
  font-weight:900;
}
.portal-world__chat-live i {
  width:8px;
  height:8px;
  border-radius:50%;
  background:#24ed7a;
  box-shadow:0 0 10px rgba(36,237,122,.55);
}

/* Compact single-row chat, matching the approved sidebar instead of large bubbles. */
.portal-world__chat-list {
  gap: 0 !important;
  padding: 6px 8px !important;
}
.portal-world__chat-message {
  min-height: 31px;
  display:grid !important;
  grid-template-columns:22px minmax(0,1fr) auto;
  align-items:center;
  gap:7px;
  padding:3px 4px !important;
  border:0 !important;
  border-bottom:1px solid rgba(48,214,255,.12) !important;
  border-radius:0 !important;
  background:transparent !important;
}
.portal-world__chat-message:last-child { border-bottom:0 !important; }
.portal-world__chat-message.is-me { background:rgba(255,203,67,.035) !important; }
.portal-world__chat-avatar {
  width:20px;
  height:20px;
  display:grid;
  place-items:center;
  color:#5fe7ff;
  font-size:12px;
}
.portal-world__chat-body {
  min-width:0;
  display:flex;
  align-items:baseline;
  gap:8px;
  overflow:hidden;
}
.portal-world__chat-body b {
  flex:0 0 auto;
  color:#45e9ff !important;
  font-size:10px !important;
  white-space:nowrap;
}
.portal-world__chat-message.is-me .portal-world__chat-body b { color:#ffd85b !important; }
.portal-world__chat-body p {
  min-width:0;
  margin:0 !important;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:#edf9ff !important;
  font-size:10px !important;
  line-height:1.2 !important;
}
.portal-world__chat-message time {
  color:#668397 !important;
  font-size:8px !important;
  white-space:nowrap;
}

/* Remove the extra region pill. The reference has WORLD + teleport copy + arrow only. */
.portal-world__region-travel {
  grid-template-columns:46px minmax(0,1fr) 24px !important;
  min-height:68px !important;
  border-color:rgba(43,204,255,.72) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035), 0 0 20px rgba(39,204,255,.045);
}
.portal-world__region-icon {
  width:42px !important;
  height:42px !important;
  border:0 !important;
  background:transparent !important;
  font-size:27px !important;
}
.portal-world__region-copy b { font-size:15px !important; }
.portal-world__region-copy small { color:#70cbe2 !important; font-size:10px !important; }
.portal-world__region-arrow { font-size:30px !important; }

@media (min-width:1281px) {
  .portal-world-shellbar,
  .portal-world { max-width:1540px; }

  .portal-world__main {
    grid-template-columns:minmax(0,1fr) 420px !important;
    gap:11px;
  }
  .portal-world__right {
    grid-template-rows:auto auto 70px 342px 64px !important;
    gap:9px !important;
  }
  .portal-world__party-panel { border-color:rgba(42,204,255,.52); }
  .portal-world__panel-title {
    min-height:50px !important;
    padding:8px 11px !important;
  }
  .portal-world__panel-title b { font-size:13px !important; }
  .portal-world__panel-title > span { font-size:11px !important; }
  .portal-world__party-open {
    min-width:82px;
    min-height:34px !important;
    font-size:11px !important;
  }
  .portal-world__party-grid {
    gap:8px !important;
    padding:9px !important;
  }
  .portal-world__mon {
    min-height:124px !important;
    padding:7px !important;
    border-radius:10px !important;
  }
  .portal-world__mon img { width:70px !important; height:70px !important; }
  .portal-world__mon b { font-size:12px !important; }
  .portal-world__mon small { font-size:11px !important; }
  .portal-world__mon em { display:none !important; }
  .portal-world__hp { height:6px !important; margin-top:5px !important; }

  .portal-world__quick-grid { gap:8px !important; padding:0 !important; }
  .portal-world__quick-panel {
    border:0 !important;
    background:transparent !important;
    box-shadow:none !important;
    overflow:visible !important;
  }
  .portal-world__quick-grid :is(a,button) {
    min-height:76px !important;
    border-width:1px !important;
    border-radius:10px !important;
  }
  .portal-world__quick-grid i { font-size:25px !important; }
  .portal-world__quick-grid span { font-size:11px !important; }

  .portal-world__chat {
    height:342px !important;
    min-height:342px !important;
    max-height:342px !important;
    grid-template-rows:48px minmax(0,1fr) 54px !important;
    border-color:rgba(42,204,255,.48) !important;
  }
  .portal-world__chat-compose { padding:7px 8px !important; gap:7px !important; }
  .portal-world__chat-compose input { height:38px !important; font-size:11px !important; }
  .portal-world__chat-compose button { min-width:82px !important; font-size:10px !important; }

  .portal-world__team--mockup {
    min-height:64px !important;
    height:64px !important;
    padding:8px 12px !important;
  }
  .portal-world__team--mockup .portal-world__team-copy b { font-size:14px !important; }
  .portal-world__team-social { gap:8px !important; }
}

@media (min-width:1101px) and (max-width:1280px) {
  .portal-world__main { grid-template-columns:minmax(0,1fr) 360px !important; }
  .portal-world__right { grid-template-rows:auto auto 64px 312px 58px !important; }
  .portal-world__chat { height:312px !important; min-height:312px !important; max-height:312px !important; }
  .portal-world__mon img { width:58px !important; height:58px !important; }
  .portal-world__mon em { display:none !important; }
  .portal-world__region-travel { min-height:64px !important; }
}

@media (max-width:900px) {
  .portal-world__team-social a { width:30px; height:30px; }
}

/* ======================================================================
   BOOM PORTAL WORLD V1.7 // VIP HUB RESTORE + AUTHENTICATED VIP CATCH
   Reuses the original BOOM VIP module for Choice Eggs / style / status.
   ====================================================================== */
body > #boom-vip-open {
  display: none !important;
}

.portal-world-shellbar__vip {
  appearance: none;
  cursor: pointer;
  font-family: inherit;
}
.portal-world-shellbar__vip:hover {
  filter: brightness(1.15);
  box-shadow: 0 0 18px rgba(255,205,55,.16);
}

.portal-world__vip-hub {
  width:100%;
  min-height:62px;
  display:grid;
  grid-template-columns:46px minmax(0,1fr) 24px;
  align-items:center;
  gap:10px;
  padding:9px 12px;
  border:1px solid rgba(255,205,55,.58);
  border-radius:10px;
  background:linear-gradient(120deg,rgba(78,51,5,.78),rgba(7,28,42,.96));
  color:#fff;
  text-align:left;
  cursor:pointer;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 0 20px rgba(255,205,55,.045);
}
.portal-world__vip-hub:hover {
  border-color:#ffd447;
  background:linear-gradient(120deg,rgba(102,67,7,.86),rgba(8,35,49,.98));
}
.portal-world__vip-hub-icon {
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  font-size:25px;
  filter:drop-shadow(0 0 8px rgba(255,215,70,.25));
}
.portal-world__vip-hub-copy {
  min-width:0;
  display:grid;
  gap:2px;
}
.portal-world__vip-hub-copy b {
  color:#ffe075;
  font-size:15px;
  font-weight:950;
  letter-spacing:.02em;
}
.portal-world__vip-hub-copy small {
  color:#e7c968;
  font-size:10px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.portal-world__vip-hub-arrow {
  justify-self:end;
  color:#ffe075;
  font-size:30px;
  line-height:1;
}

@media (min-width:1281px) {
  .portal-world__right {
    grid-template-rows:auto auto 70px 64px 342px 64px !important;
  }
}
@media (min-width:1101px) and (max-width:1280px) {
  .portal-world__right {
    grid-template-rows:auto auto 64px 60px 312px 58px !important;
  }
}
@media (max-width:900px) {
  .portal-world__vip-hub { min-height:58px; }
}

/* ======================================================================
   BOOM PORTAL WORLD V1.9 // MOBILE PLAY CONTROLS
   Desktop stays clean. Phones get real held movement, ACTION, FLY,
   WORLD, Party and Bag controls bridged into the existing /world engine.
   ====================================================================== */
.portal-world__mobile-gamepad { display:none; }

@media (max-width:900px), (pointer:coarse) {
  .portal-world__mobile-gamepad {
    display:grid;
    gap:9px;
    padding:10px;
    border:1px solid rgba(43,207,255,.48);
    border-radius:12px;
    background:
      radial-gradient(circle at 12% 75%,rgba(40,213,255,.08),transparent 34%),
      linear-gradient(145deg,rgba(4,20,31,.99),rgba(3,12,21,.99));
    box-shadow:inset 0 1px 0 rgba(255,255,255,.03),0 14px 34px rgba(0,0,0,.24);
    overflow:hidden;
  }

  .portal-world__mobile-tools {
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:7px;
  }
  .portal-world__mobile-tools button {
    min-width:0;
    min-height:47px;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:6px;
    padding:6px 5px;
    border:1px solid rgba(48,214,255,.28);
    border-radius:9px;
    background:linear-gradient(145deg,#082131,#061722);
    color:#e9fbff;
    font-weight:950;
    letter-spacing:.035em;
    touch-action:manipulation;
    -webkit-tap-highlight-color:transparent;
  }
  .portal-world__mobile-tools button:first-child {
    border-color:rgba(118,235,255,.55);
    background:linear-gradient(145deg,rgba(16,83,104,.92),rgba(6,28,40,.98));
  }
  .portal-world__mobile-tools button:nth-child(2) {
    border-color:rgba(53,216,255,.64);
    box-shadow:inset 0 -2px rgba(53,216,255,.18);
  }
  .portal-world__mobile-tools i { font-style:normal; font-size:16px; }
  .portal-world__mobile-tools span { font-size:9px; }
  .portal-world__mobile-tools button:active { transform:translateY(1px); filter:brightness(1.2); }

  .portal-world__mobile-playrow {
    min-height:146px;
    display:grid;
    grid-template-columns:146px minmax(0,1fr) 96px;
    align-items:center;
    gap:10px;
  }

  .portal-world__mobile-dpad {
    position:relative;
    width:146px;
    height:146px;
    justify-self:start;
    border:2px solid rgba(119,223,244,.24);
    border-radius:50%;
    background:
      radial-gradient(circle,rgba(8,40,53,.98) 0 36%,rgba(5,27,38,.94) 37% 100%);
    box-shadow:inset 0 0 28px rgba(55,224,255,.06),0 12px 26px rgba(0,0,0,.28);
    user-select:none;
    -webkit-user-select:none;
    touch-action:none;
  }
  .portal-world__mobile-dpad button {
    position:absolute;
    width:48px;
    height:48px;
    display:grid;
    place-items:center;
    border:1px solid rgba(125,225,245,.20);
    border-radius:14px;
    background:linear-gradient(145deg,#123a4b,#082431);
    color:#f4feff;
    font-size:19px;
    font-weight:950;
    box-shadow:inset 0 1px rgba(255,255,255,.05),0 6px 14px rgba(0,0,0,.22);
    user-select:none;
    -webkit-user-select:none;
    touch-action:none;
    -webkit-tap-highlight-color:transparent;
  }
  .portal-world__mobile-dpad .is-up { left:49px; top:5px; }
  .portal-world__mobile-dpad .is-down { left:49px; bottom:5px; }
  .portal-world__mobile-dpad .is-left { left:5px; top:49px; }
  .portal-world__mobile-dpad .is-right { right:5px; top:49px; }
  .portal-world__mobile-dpad button.is-pressed,
  .portal-world__mobile-dpad button:active {
    transform:scale(.92);
    border-color:#60e7ff;
    background:linear-gradient(145deg,#17617b,#0a3445);
    box-shadow:0 0 20px rgba(64,222,255,.20),inset 0 1px rgba(255,255,255,.08);
  }
  .portal-world__mobile-dpad-core {
    position:absolute;
    left:50%;
    top:50%;
    width:39px;
    height:39px;
    display:grid;
    place-items:center;
    transform:translate(-50%,-50%);
    border:1px solid rgba(72,207,234,.14);
    border-radius:50%;
    color:#5d8493;
    font-size:21px;
    font-weight:900;
    pointer-events:none;
  }

  .portal-world__mobile-control-copy {
    min-width:0;
    display:grid;
    align-content:center;
    gap:5px;
    text-align:center;
  }
  .portal-world__mobile-control-copy b {
    color:#74eaff;
    font-size:10px;
    letter-spacing:.08em;
  }
  .portal-world__mobile-control-copy span {
    color:#d7f4fb;
    font-size:9px;
    font-weight:850;
  }
  .portal-world__mobile-control-copy small {
    color:#66899a;
    font-size:8px;
    line-height:1.25;
  }

  .portal-world__mobile-a {
    width:96px;
    height:96px;
    justify-self:end;
    display:grid;
    place-items:center;
    align-content:center;
    gap:3px;
    border:2px solid rgba(255,255,255,.20);
    border-radius:50%;
    background:
      radial-gradient(circle at 38% 28%,rgba(255,255,255,.09),transparent 28%),
      linear-gradient(145deg,#20433f,#102b2a);
    color:#fff;
    box-shadow:0 12px 28px rgba(0,0,0,.34),inset 0 0 18px rgba(96,255,210,.04);
    user-select:none;
    -webkit-user-select:none;
    touch-action:none;
    -webkit-tap-highlight-color:transparent;
  }
  .portal-world__mobile-a b { font-size:30px; line-height:1; }
  .portal-world__mobile-a span { font-size:8px; font-weight:950; letter-spacing:.08em; }
  .portal-world__mobile-a.is-pressed,
  .portal-world__mobile-a:active {
    transform:scale(.94);
    border-color:#70f0cb;
    background:linear-gradient(145deg,#286054,#153b36);
    box-shadow:0 0 24px rgba(83,239,195,.16),inset 0 0 18px rgba(96,255,210,.08);
  }
}

@media (max-width:620px) {
  .portal-world__mobile-gamepad { padding:8px; gap:8px; }
  .portal-world__mobile-tools { gap:5px; }
  .portal-world__mobile-tools button { min-height:44px; gap:4px; }
  .portal-world__mobile-tools i { font-size:14px; }
  .portal-world__mobile-tools span { font-size:8px; }
  .portal-world__mobile-playrow {
    grid-template-columns:132px minmax(0,1fr) 86px;
    gap:7px;
    min-height:132px;
  }
  .portal-world__mobile-dpad { width:132px; height:132px; }
  .portal-world__mobile-dpad button { width:44px; height:44px; border-radius:13px; font-size:17px; }
  .portal-world__mobile-dpad .is-up { left:43px; top:4px; }
  .portal-world__mobile-dpad .is-down { left:43px; bottom:4px; }
  .portal-world__mobile-dpad .is-left { left:4px; top:43px; }
  .portal-world__mobile-dpad .is-right { right:4px; top:43px; }
  .portal-world__mobile-dpad-core { width:36px; height:36px; font-size:18px; }
  .portal-world__mobile-a { width:86px; height:86px; }
  .portal-world__mobile-a b { font-size:27px; }
  .portal-world__mobile-control-copy b { font-size:9px; }
  .portal-world__mobile-control-copy span { font-size:8px; }
  .portal-world__mobile-control-copy small { display:none; }
}

@media (max-width:430px) {
  .portal-world__mobile-playrow { grid-template-columns:128px minmax(0,1fr) 82px; }
  .portal-world__mobile-dpad { width:128px; height:128px; }
  .portal-world__mobile-dpad button { width:42px; height:42px; }
  .portal-world__mobile-dpad .is-up { left:42px; top:4px; }
  .portal-world__mobile-dpad .is-down { left:42px; bottom:4px; }
  .portal-world__mobile-dpad .is-left { left:4px; top:42px; }
  .portal-world__mobile-dpad .is-right { right:4px; top:42px; }
  .portal-world__mobile-a { width:82px; height:82px; }
  .portal-world__mobile-control-copy { padding:0 2px; }
  .portal-world__mobile-control-copy span { line-height:1.2; }
}

/* ======================================================================
   BOOM PORTAL WORLD V2.0 // MOBILE CLEAN PLAYFIELD + PARTY BELOW CONTROLS
   Phone-only cleanup requested from the real-device view:
   - no KARTA button floating over the game
   - no duplicate P1-P6 strip inside the embedded WORLD viewport
   - the real Portal party panel sits immediately below the mobile controls
   Desktop layout is unchanged.
   ====================================================================== */
@media (max-width:900px), (pointer:coarse) {
  /* The phone already has FLY / WORLD controls below the game. Keep the
     actual playfield clean and remove the redundant top-right map button. */
  .portal-world__game-card > .portal-world__map-button {
    display:none !important;
  }

  /* Flatten only the mobile layout wrappers so we can put the existing
     party panel directly after the controller without cloning any data/UI. */
  .portal-world__main {
    display:flex !important;
    flex-direction:column !important;
    gap:9px !important;
  }
  .portal-world__left,
  .portal-world__right {
    display:contents !important;
  }

  .portal-world__game-card { order:10; width:100%; }
  .portal-world__mobile-gamepad { order:20; width:100%; }
  .portal-world__party-panel { order:30; width:100%; }
  .portal-world__toolbar--mockup { order:40; width:100%; }
  .portal-world__quick-panel { order:50; width:100%; }
  .portal-world__region-travel { order:60; width:100%; }
  .portal-world__vip-hub { order:70; width:100%; }
  .portal-world__chat { order:80; width:100%; }
  .portal-world__team { order:90; width:100%; }

  /* Party immediately below the steering area, compact enough for phone
     while still showing all six members clearly. */
  .portal-world__party-panel {
    margin:0 !important;
    border-radius:11px !important;
  }
  .portal-world__party-panel .portal-world__panel-title {
    min-height:48px !important;
    padding:8px 10px !important;
  }
  .portal-world__party-grid {
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
    gap:6px !important;
    padding:7px !important;
  }
  .portal-world__mon {
    min-height:104px !important;
    padding:7px 4px 6px !important;
  }
  .portal-world__mon img {
    width:54px !important;
    height:54px !important;
  }
  .portal-world__mon strong { font-size:10px !important; }
  .portal-world__mon span { font-size:9px !important; }
  .portal-world__mon em { font-size:7px !important; }
}

@media (max-width:620px) {
  .portal-world__main { gap:8px !important; }
  .portal-world__party-grid { gap:5px !important; padding:6px !important; }
  .portal-world__mon { min-height:96px !important; }
  .portal-world__mon img { width:50px !important; height:50px !important; }
}

/* BOOM_GEN4_OVERLAY_ARTWORK_V22 */
.portal-world__catch-sprite,
.portal-world__spawn img,
.portal-world__mon img {
  image-rendering: auto !important;
}

/* ======================================================================
   BOOM PORTAL WORLD V2.3 // DESKTOP TRADE QUICK ACTION
   Replaces the retired Arena tile in WORLD's right rail.
   ====================================================================== */
.portal-world__quick-grid .is-trade {
  border-color:rgba(62,220,255,.58) !important;
  background:linear-gradient(145deg,#0a2b38,#071720) !important;
}
.portal-world__quick-grid .is-trade i {
  color:#79ecff;
  font-size:1.25rem;
}

/* ======================================================================
   BOOM PORTAL WORLD V2.4 // TRADE MODAL POLISH
   Hide Portal map chrome while the embedded trade modal is open.
   ====================================================================== */
.portal-world__game-card.is-trade-open > .portal-world__zone-badge,
.portal-world__game-card.is-trade-open > .portal-world__map-button {
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
}

/* ======================================================================
   BOOM PORTAL WORLD V2.5 // PORTAL-NATIVE TRADE CENTER
   Trade UI lives in the Portal layer, not inside the /world iframe.
   This prevents legacy WORLD CSS, radar overlays and iframe clipping from
   bleeding into the trade surface.
   ====================================================================== */
.portal-world__game-card.is-trade-center-open > .portal-world__zone-badge,
.portal-world__game-card.is-trade-center-open > .portal-world__map-button {
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
}

.portal-world__trade-layer[hidden] { display:none !important; }
.portal-world__trade-layer {
  position:absolute;
  inset:0;
  z-index:120;
  display:grid;
  place-items:center;
  padding:18px;
  overflow:hidden;
}
.portal-world__trade-backdrop {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  margin:0;
  padding:0;
  border:0;
  border-radius:inherit;
  background:rgba(1,8,13,.78);
  backdrop-filter:blur(5px) saturate(90%);
  cursor:default;
}
.portal-world__trade-center {
  position:relative;
  z-index:2;
  width:min(760px,100%);
  max-height:calc(100% - 2px);
  display:grid;
  gap:12px;
  padding:18px;
  overflow:auto;
  overscroll-behavior:contain;
  border:1px solid rgba(48,214,255,.48);
  border-radius:18px;
  background:
    radial-gradient(circle at 92% 0%,rgba(42,194,240,.12),transparent 31%),
    linear-gradient(180deg,rgba(6,24,35,.99),rgba(3,13,21,.99));
  box-shadow:0 26px 70px rgba(0,0,0,.64),inset 0 1px 0 rgba(255,255,255,.035);
  color:#edfaff;
}
.portal-world__trade-head {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  padding-bottom:12px;
  border-bottom:1px solid rgba(61,210,241,.15);
}
.portal-world__trade-head > div { min-width:0; }
.portal-world__trade-head small {
  display:block;
  margin-bottom:4px;
  color:#ff6176;
  font-size:.52rem;
  font-weight:950;
  letter-spacing:.12em;
}
.portal-world__trade-head h2 {
  margin:0;
  color:#f3fbff;
  font-size:1.08rem;
  line-height:1.15;
  letter-spacing:.035em;
}
.portal-world__trade-head p {
  margin:5px 0 0;
  color:#7e9bad;
  font-size:.68rem;
  font-weight:700;
}
.portal-world__trade-close {
  flex:0 0 40px;
  width:40px;
  height:40px;
  display:grid;
  place-items:center;
  padding:0;
  border:1px solid rgba(255,91,112,.40);
  border-radius:11px;
  background:rgba(79,18,31,.50);
  color:#ff8798;
  font-size:1.45rem;
  line-height:1;
  cursor:pointer;
}
.portal-world__trade-close:hover { background:rgba(105,23,40,.64); color:#fff; }

.portal-world__trade-status {
  min-height:36px;
  display:flex;
  align-items:center;
  gap:8px;
  padding:7px 10px;
  border:1px solid rgba(53,219,255,.16);
  border-radius:10px;
  background:rgba(4,23,32,.72);
  color:#7f9eac;
  font-size:.60rem;
}
.portal-world__trade-status b {
  color:#73eaff;
  font-size:.57rem;
  letter-spacing:.08em;
}
.portal-world__trade-dot {
  width:8px;
  height:8px;
  flex:0 0 8px;
  border-radius:50%;
  background:#45e89b;
  box-shadow:0 0 12px rgba(69,232,155,.5);
}
.portal-world__trade-status.is-busy .portal-world__trade-dot { background:#ffd14e; box-shadow:0 0 12px rgba(255,209,78,.45); }
.portal-world__trade-status.is-bad .portal-world__trade-dot { background:#ff5a70; box-shadow:0 0 12px rgba(255,90,112,.45); }
.portal-world__trade-status.is-bad span:last-child { color:#ff9baa; }

.portal-world__trade-section {
  min-width:0;
  display:grid;
  gap:8px;
}
.portal-world__trade-section-head,
.portal-world__trade-picker-head {
  min-width:0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.portal-world__trade-section-head div small,
.portal-world__trade-picker-head div small {
  display:block;
  color:#6a899b;
  font-size:.47rem;
  font-weight:900;
  letter-spacing:.10em;
}
.portal-world__trade-section-head div b,
.portal-world__trade-picker-head div b {
  display:block;
  margin-top:2px;
  color:#eafaff;
  font-size:.72rem;
  font-weight:950;
  letter-spacing:.04em;
}
.portal-world__trade-section-head > span {
  color:#678797;
  font-size:.49rem;
  font-weight:900;
  letter-spacing:.08em;
}
.portal-world__trade-history,
.portal-world__trade-picker-head > button {
  min-height:30px;
  padding:0 10px;
  border:1px solid rgba(53,219,255,.24);
  border-radius:8px;
  background:#071f2b;
  color:#72e8ff;
  font-size:.51rem;
  font-weight:950;
  cursor:pointer;
}
.portal-world__trade-history[hidden] { display:none !important; }

.portal-world__trade-near,
.portal-world__trade-inbox {
  display:grid;
  gap:7px;
}
.portal-world__trade-near {
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.portal-world__trade-trainer {
  min-width:0;
  min-height:58px;
  display:grid;
  grid-template-columns:38px minmax(0,1fr) auto;
  align-items:center;
  gap:9px;
  padding:8px 10px;
  border:1px solid rgba(53,219,255,.20);
  border-radius:11px;
  background:linear-gradient(145deg,rgba(7,31,43,.92),rgba(4,19,28,.92));
  color:#dff9ff;
  text-align:left;
  cursor:pointer;
}
.portal-world__trade-trainer:hover { border-color:rgba(53,219,255,.55); background:linear-gradient(145deg,rgba(9,48,64,.95),rgba(5,25,35,.95)); }
.portal-world__trade-trainer-avatar {
  width:36px;
  height:36px;
  display:grid;
  place-items:center;
  border:1px solid rgba(53,219,255,.26);
  border-radius:9px;
  background:#062333;
  color:#56defb;
  font-size:1rem;
}
.portal-world__trade-trainer > span:nth-child(2) { min-width:0; display:grid; }
.portal-world__trade-trainer b { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#fff; font-size:.68rem; }
.portal-world__trade-trainer small { margin-top:2px; color:#6f91a2; font-size:.50rem; }
.portal-world__trade-trainer strong {
  color:#3af0a0;
  font-size:.51rem;
  letter-spacing:.07em;
}

.portal-world__trade-offer {
  min-width:0;
  display:grid;
  grid-template-columns:48px minmax(0,1fr) auto;
  align-items:center;
  gap:10px;
  padding:9px 10px;
  border:1px solid rgba(53,219,255,.18);
  border-radius:12px;
  background:rgba(4,21,30,.78);
}
.portal-world__trade-offer.is-incoming { border-color:rgba(67,235,164,.28); }
.portal-world__trade-offer.is-waiting { border-color:rgba(255,207,67,.25); }
.portal-world__trade-offer-mon {
  width:46px;
  height:46px;
  display:grid;
  place-items:center;
  border-radius:10px;
  background:radial-gradient(circle,rgba(53,219,255,.12),transparent 72%),#051722;
}
.portal-world__trade-offer-mon img { width:42px; height:42px; object-fit:contain; image-rendering:auto; }
.portal-world__trade-offer-copy { min-width:0; display:grid; }
.portal-world__trade-offer-copy small { color:#6b899a; font-size:.45rem; font-weight:900; letter-spacing:.08em; }
.portal-world__trade-offer-copy b { margin-top:2px; color:#fff; font-size:.68rem; }
.portal-world__trade-offer-copy span { margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#8eabb9; font-size:.56rem; }
.portal-world__trade-offer-actions { display:flex; gap:6px; align-items:center; }
.portal-world__trade-offer-actions button {
  min-height:32px;
  padding:0 10px;
  border-radius:8px;
  font-size:.49rem;
  font-weight:950;
  cursor:pointer;
}
.portal-world__trade-offer-actions .is-accept {
  border:1px solid rgba(54,235,155,.42);
  background:rgba(17,76,54,.60);
  color:#6af2b0;
}
.portal-world__trade-offer-actions .is-decline {
  border:1px solid rgba(255,92,112,.30);
  background:rgba(72,18,29,.46);
  color:#ff91a0;
}

.portal-world__trade-history-row {
  min-height:32px;
  display:grid;
  grid-template-columns:110px minmax(0,1fr) auto;
  align-items:center;
  gap:8px;
  padding:6px 10px;
  border:1px solid rgba(80,155,177,.13);
  border-radius:9px;
  background:rgba(4,18,26,.52);
  color:#718d9b;
  font-size:.52rem;
}
.portal-world__trade-history-row.is-done > span { color:#63dda0; }
.portal-world__trade-history-row.is-cancelled > span { color:#be7b87; }
.portal-world__trade-history-row b { color:#9bb5c1; }

.portal-world__trade-empty {
  min-height:48px;
  display:flex;
  align-items:center;
  padding:10px 12px;
  border:1px dashed rgba(65,190,220,.17);
  border-radius:10px;
  background:rgba(3,17,25,.48);
  color:#6e8c9c;
  font-size:.58rem;
  line-height:1.35;
}

.portal-world__trade-picker[hidden] { display:none !important; }
.portal-world__trade-picker {
  display:grid;
  gap:9px;
  padding:12px;
  border:1px solid rgba(255,202,67,.25);
  border-radius:13px;
  background:linear-gradient(145deg,rgba(50,37,8,.34),rgba(5,18,27,.80));
}
.portal-world__trade-picker > p {
  margin:0;
  color:#8da5b2;
  font-size:.57rem;
}
.portal-world__trade-party {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:7px;
}
.portal-world__trade-mon {
  min-width:0;
  min-height:96px;
  display:grid;
  place-items:center;
  align-content:center;
  gap:3px;
  padding:7px;
  border:1px solid rgba(53,219,255,.20);
  border-radius:10px;
  background:#061b28;
  color:#eefaff;
  cursor:pointer;
}
.portal-world__trade-mon:hover { border-color:rgba(53,219,255,.56); background:#082638; }
.portal-world__trade-mon img { width:52px; height:52px; object-fit:contain; image-rendering:auto; }
.portal-world__trade-mon b { max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.59rem; }
.portal-world__trade-mon small { max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#7e9bad; font-size:.46rem; }
.portal-world__trade-mon--empty { border-color:rgba(63,230,157,.26); color:#67eba8; }
.portal-world__trade-no-reply { font-size:1.65rem; line-height:1; }

@media (max-width:760px) {
  .portal-world__trade-layer { padding:7px; place-items:end center; }
  .portal-world__trade-center {
    width:100%;
    max-height:88%;
    gap:10px;
    padding:14px 11px 12px;
    border-radius:16px;
  }
  .portal-world__trade-head h2 { font-size:.88rem; }
  .portal-world__trade-head p { font-size:.61rem; }
  .portal-world__trade-near { grid-template-columns:1fr; }
  .portal-world__trade-offer { grid-template-columns:42px minmax(0,1fr); }
  .portal-world__trade-offer-actions { grid-column:1 / -1; justify-content:flex-end; }
  .portal-world__trade-party { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .portal-world__trade-history-row { grid-template-columns:90px minmax(0,1fr); }
  .portal-world__trade-history-row small { grid-column:2; }
}


/* ======================================================================
   BOOM PBO CLEAN PORTAL V1
   Active only when the WORLD iframe has actually navigated to /pbo-alpha.
   The PBO client owns Party/Bag/Pokedex/Trade/Chat/system chrome in this mode.
   ====================================================================== */
body.portal-world-active.portal-world-pbo-clean #portal-root.portal-shell{
  grid-template:72px minmax(0,1fr) / 1fr!important;
}
body.portal-world-active.portal-world-pbo-clean .portal-topbar{
  min-height:72px!important;
  height:72px!important;
  padding:0 12px!important;
}
body.portal-world-active.portal-world-pbo-clean .portal-stage{
  padding:8px 10px 12px!important;
}
body.portal-world-active.portal-world-pbo-clean .portal-world{
  max-width:none!important;
  gap:8px!important;
}
body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar{
  grid-template-columns:minmax(220px,1fr) 230px 50px!important;
  gap:10px!important;
}
body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__nav{
  display:none!important;
}
body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__brandcopy b{
  font-size:1.18rem!important;
}
body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__ball{
  width:48px!important;
  height:48px!important;
  flex-basis:48px!important;
}
body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__profile{
  height:52px!important;
}
body.portal-world-active.portal-world-pbo-clean .portal-world__right,
body.portal-world-active.portal-world-pbo-clean .portal-world__toolbar,
body.portal-world-active.portal-world-pbo-clean .portal-world__zone-badge,
body.portal-world-active.portal-world-pbo-clean .portal-world__map-button,
body.portal-world-active.portal-world-pbo-clean .portal-world__mobile-gamepad{
  display:none!important;
}
body.portal-world-active.portal-world-pbo-clean .portal-world__main{
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  gap:0!important;
}
body.portal-world-active.portal-world-pbo-clean .portal-world__left{
  display:block!important;
  min-width:0!important;
}
body.portal-world-active.portal-world-pbo-clean .portal-world__game-card{
  width:100%!important;
  /* Topbar + quick feature strip + LIVE strip. */
  height:calc(100dvh - 246px)!important;
  min-height:520px!important;
  aspect-ratio:auto!important;
  border-radius:10px!important;
}
body.portal-world-active.portal-world-pbo-clean .portal-world__livebar{
  grid-template-columns:150px minmax(480px,1fr) 215px 165px!important;
  gap:7px!important;
}
body.portal-world-active.portal-world-pbo-clean .portal-world__live-state,
body.portal-world-active.portal-world-pbo-clean .portal-world__catches,
body.portal-world-active.portal-world-pbo-clean .portal-world__spawn,
body.portal-world-active.portal-world-pbo-clean .portal-world__next{
  min-height:80px!important;
}
@media (max-width:1100px){
  body.portal-world-active.portal-world-pbo-clean .portal-world__livebar{
    grid-template-columns:130px minmax(300px,1fr) 180px 145px!important;
  }
}
@media (max-width:820px){
  body.portal-world-active.portal-world-pbo-clean #portal-root.portal-shell{
    grid-template:60px minmax(0,1fr) / 1fr!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-topbar{
    min-height:60px!important;
    height:60px!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar{
    grid-template-columns:minmax(0,1fr) auto!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__profile{
    display:none!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world__livebar{
    display:none!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world__game-card{
    height:calc(100dvh - 76px)!important;
    min-height:0!important;
  }
}
/* BOOM WORLD MOBILE COLLAPSIBLE TOPBAR V1 */
.portal-world-shellbar__collapse{display:none}
@media (max-width:820px){
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar{
    grid-template-columns:minmax(0,1fr) 40px 40px!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__collapse{
    display:grid!important;
    place-items:center;
    width:36px;
    height:36px;
    align-self:center;
    justify-self:end;
    border:1px solid rgba(90,167,199,.42);
    border-radius:8px;
    background:#0b2530;
    color:#dff7ff;
    font:1000 18px/1 Arial;
    cursor:pointer;
  }
  body.portal-world-active.portal-world-pbo-clean.portal-world-topbar-collapsed #portal-root.portal-shell{
    grid-template:14px minmax(0,1fr) / 1fr!important;
  }
  body.portal-world-active.portal-world-pbo-clean.portal-world-topbar-collapsed .portal-topbar{
    min-height:14px!important;
    height:14px!important;
    overflow:visible!important;
    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
  }
  body.portal-world-active.portal-world-pbo-clean.portal-world-topbar-collapsed .portal-world-shellbar{
    height:14px!important;
    min-height:14px!important;
    padding:0!important;
    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
  }
  body.portal-world-active.portal-world-pbo-clean.portal-world-topbar-collapsed .portal-world-shellbar__brand,
  body.portal-world-active.portal-world-pbo-clean.portal-world-topbar-collapsed .portal-world-shellbar__nav,
  body.portal-world-active.portal-world-pbo-clean.portal-world-topbar-collapsed .portal-world-shellbar__profile,
  body.portal-world-active.portal-world-pbo-clean.portal-world-topbar-collapsed .portal-world-shellbar__menu{
    display:none!important;
  }
  body.portal-world-active.portal-world-pbo-clean.portal-world-topbar-collapsed .portal-world-shellbar__collapse{
    position:fixed;
    top:2px;
    right:8px;
    z-index:2147483600;
    width:34px;
    height:22px;
    border-radius:0 0 8px 8px;
    font-size:14px;
  }
  body.portal-world-active.portal-world-pbo-clean.portal-world-topbar-collapsed .portal-world__game-card{
    height:calc(100dvh - 18px)!important;
  }
}

/* BOOM WORLD MOBILE HEADER GAME HUB V3 */
.portal-world-shellbar__mobilehub{display:none}
@media (max-width:820px){
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar{
    width:100%!important;
    max-width:none!important;
    min-height:48px!important;
    height:48px!important;
    padding:3px 6px!important;
    display:grid!important;
    grid-template-columns:42px minmax(0,1fr) 34px 38px!important;
    gap:4px!important;
    align-items:center!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__brand{
    width:42px!important;
    min-width:42px!important;
    height:42px!important;
    padding:0!important;
    display:grid!important;
    place-items:center!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__ball{
    width:38px!important;
    height:38px!important;
    margin:0!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__brandcopy,
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__nav,
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__profile{
    display:none!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__mobilehub{
    display:flex!important;
    min-width:0!important;
    width:100%!important;
    height:42px!important;
    gap:3px!important;
    align-items:center!important;
    overflow-x:auto!important;
    overflow-y:hidden!important;
    scrollbar-width:none!important;
    -webkit-overflow-scrolling:touch!important;
    padding:1px 2px!important;
    border:1px solid rgba(69,130,151,.38)!important;
    border-radius:7px!important;
    background:linear-gradient(180deg,rgba(8,31,40,.96),rgba(4,20,28,.96))!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__mobilehub::-webkit-scrollbar{display:none!important}
  .portal-world-mobilehub-btn{
    position:relative;
    flex:0 0 38px;
    width:38px;
    height:38px;
    padding:2px;
    display:flex;
    align-items:center;
    justify-content:center;
    border:1px solid #25495d;
    border-radius:5px;
    background:linear-gradient(180deg,#17364a,#0b2231);
    color:#e6d89f;
    box-shadow:inset 0 0 0 1px #102b3d;
    overflow:hidden;
  }
  .portal-world-mobilehub-btn img{
    width:23px!important;
    height:23px!important;
    object-fit:contain!important;
  }
  .portal-world-mobilehub-btn>span{
    font:900 12px/1 Arial;
    color:#f2df9c;
  }
  .portal-world-mobilehub-btn small{
    position:absolute;
    left:1px;
    right:1px;
    bottom:1px;
    overflow:hidden;
    white-space:nowrap;
    text-overflow:ellipsis;
    text-align:center;
    font:800 4px/1 Arial;
    color:#c9bc87;
  }
  .portal-world-mobilehub-btn.is-active{
    border-color:#40d88b;
    background:linear-gradient(180deg,#17533a,#0b3224);
    box-shadow:inset 0 0 0 1px #33af73,0 0 8px rgba(53,235,143,.35);
  }
  .portal-world-mobilehub-btn.is-boost-active{
    border-color:#ffd84a;
    box-shadow:0 0 10px rgba(255,216,74,.5);
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__collapse{
    display:grid!important;
    width:32px!important;
    height:38px!important;
    margin:0!important;
    place-items:center!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__menu{
    width:36px!important;
    height:38px!important;
    margin:0!important;
  }
  body.portal-world-active.portal-world-pbo-clean.portal-world-mobilehub-collapsed .portal-world-shellbar__mobilehub{
    visibility:hidden!important;
    pointer-events:none!important;
  }
}

/* WORLD mobile bottom navigation is Pokéball-only. Full routes live in More. */
@media (max-width:820px){
  body.portal-world-active .portal-mobile-menu-dock > a{
    display:none!important;
  }
  body.portal-world-active .portal-mobile-menu-dock{
    grid-template-columns:58px!important;
    width:58px!important;
    left:auto!important;
    right:8px!important;
    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
  }
}


/* BOOM_WORLD_FEATURE_STRIP_V1
   Canonical Portal shortcuts above LIVE Catches. */
.portal-world__feature-strip{
  display:flex;
  align-items:stretch;
  gap:7px;
  min-width:0;
  overflow-x:auto;
  scrollbar-width:none;
  padding:0 1px;
}
.portal-world__feature-strip::-webkit-scrollbar{display:none}
.portal-world__feature-strip :is(a,button){
  appearance:none;
  border:1px solid rgba(67,184,223,.30);
  border-radius:9px;
  min-width:92px;
  height:48px;
  padding:5px 10px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  flex:0 0 auto;
  background:linear-gradient(145deg,rgba(7,29,42,.96),rgba(5,18,29,.96));
  color:#dff8ff;
  text-decoration:none;
  cursor:pointer;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
}
.portal-world__feature-strip :is(a,button):hover{
  border-color:rgba(77,226,255,.72);
  transform:translateY(-1px);
}
.portal-world__feature-strip i{
  font-style:normal;
  font-size:20px;
  line-height:1;
}
.portal-world__feature-strip span{
  font:900 9px/1.05 Arial,sans-serif;
  letter-spacing:.045em;
  white-space:nowrap;
}
.portal-world__feature-strip .is-evolution{
  border-color:rgba(161,102,255,.55);
  background:linear-gradient(145deg,rgba(46,24,78,.96),rgba(12,19,32,.96));
}
.portal-world__feature-strip .is-eggs{
  border-color:rgba(255,202,76,.56);
  background:linear-gradient(145deg,rgba(70,49,12,.96),rgba(14,20,27,.96));
}
@media(max-width:820px){
  body.portal-world-active.portal-world-pbo-clean .portal-world__feature-strip{
    display:none!important;
  }
}


/* BOOM_WORLD_QUICKBAR_UP_MOBILE_PARTY_BAG_V1 */
body.portal-world-active.portal-world-pbo-clean .portal-stage{
  padding-top:2px!important;
}
body.portal-world-active.portal-world-pbo-clean .portal-world{
  gap:6px!important;
}
body.portal-world-active.portal-world-pbo-clean .portal-world__feature-strip{
  margin-top:-1px;
  min-height:44px;
}
body.portal-world-active.portal-world-pbo-clean .portal-world__feature-strip :is(a,button){
  height:44px;
}
body.portal-world-active.portal-world-pbo-clean .portal-world__game-card{
  height:calc(100dvh - 182px)!important;
}
@media(max-width:820px){
  body.portal-world-active.portal-world-pbo-clean .portal-stage{
    padding-top:0!important;
  }
  .portal-world-mobilehub-btn--portal{
    border-color:rgba(78,213,255,.72)!important;
    background:linear-gradient(180deg,#164257,#0b2939)!important;
    box-shadow:inset 0 0 0 1px rgba(67,195,235,.20)!important;
  }
  .portal-world-mobilehub-btn--portal>span{
    font-size:15px!important;
  }
  .portal-world-mobilehub-btn--portal small{
    color:#dff8ff!important;
    font-size:4.5px!important;
  }
  .portal-world-mobilehub-btn--party{
    border-color:rgba(244,207,79,.82)!important;
    background:
      radial-gradient(circle at 50% 28%,rgba(255,225,96,.16),transparent 48%),
      linear-gradient(180deg,#33412f,#162822)!important;
    box-shadow:
      inset 0 0 0 1px rgba(255,226,107,.12),
      0 0 10px rgba(239,201,63,.12)!important;
  }
  .portal-world-mobilehub-btn--party>span{
    color:#ffe778!important;
  }
  .portal-world-mobilehub-btn--party small{
    color:#fff0a3!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world__game-card{
    height:calc(100dvh - 76px)!important;
  }
}

/* BOOM_WORLD_SHELL_FEATURES_V2
   Desktop shortcuts live inside the BOOM WORLD shell.
   PARTY + BAG are intentionally reserved for the mobile Game HUB. */
.portal-world-shellbar__features{
  min-width:0;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  overflow-x:auto;
  scrollbar-width:none;
}
.portal-world-shellbar__features::-webkit-scrollbar{display:none}
.portal-world-shellbar__features a{
  min-width:94px;
  height:46px;
  padding:5px 9px;
  border:1px solid rgba(67,184,223,.30);
  border-radius:8px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  flex:0 0 auto;
  background:linear-gradient(145deg,rgba(7,29,42,.96),rgba(5,18,29,.96));
  color:#dff8ff;
  text-decoration:none;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
}
.portal-world-shellbar__features a:hover{
  border-color:rgba(77,226,255,.72);
  transform:translateY(-1px);
}
.portal-world-shellbar__features i{
  font-style:normal;
  font-size:18px;
  line-height:1;
}
.portal-world-shellbar__features span{
  font:900 8.5px/1 Arial,sans-serif;
  letter-spacing:.04em;
  white-space:nowrap;
}
.portal-world-shellbar__features .is-evolution{
  border-color:rgba(161,102,255,.55);
  background:linear-gradient(145deg,rgba(46,24,78,.96),rgba(12,19,32,.96));
}
.portal-world-shellbar__features .is-eggs{
  border-color:rgba(255,202,76,.56);
  background:linear-gradient(145deg,rgba(70,49,12,.96),rgba(14,20,27,.96));
}

/* PBO clean desktop: brand | quick access | trainer | menu */
body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar{
  grid-template-columns:220px minmax(0,1fr) 230px 50px!important;
}
body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__features{
  display:flex!important;
}

@media(max-width:820px){
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__features{
    display:none!important;
  }
  .portal-world-mobilehub-btn--portal>span{
    font-size:16px!important;
    line-height:1!important;
  }
}

/* BOOM_MOBILE_WORLD_CANONICAL_V1
   One authoritative phone layout after the legacy mobile layers. */
@media (max-width:820px){
  body.portal-world-active.portal-world-pbo-clean #portal-root.portal-shell{
    grid-template:50px minmax(0,1fr) / 1fr!important;
    width:100vw!important;
    min-height:100dvh!important;
    overflow:hidden!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-topbar{
    position:relative!important;
    min-height:50px!important;
    height:50px!important;
    padding:0!important;
    overflow:hidden!important;
    border-bottom:1px solid rgba(62,191,227,.28)!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar{
    width:100vw!important;
    height:50px!important;
    min-height:50px!important;
    padding:4px 5px!important;
    grid-template-columns:40px minmax(0,1fr) 38px!important;
    gap:4px!important;
    overflow:hidden!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__brand{
    width:40px!important;
    min-width:40px!important;
    height:40px!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__ball{
    width:34px!important;
    height:34px!important;
    flex-basis:34px!important;
    border-width:2px!important;
  }

  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__mobilehub,
  body.portal-world-active.portal-world-pbo-clean.portal-world-mobilehub-collapsed .portal-world-shellbar__mobilehub{
    display:flex!important;
    visibility:visible!important;
    pointer-events:auto!important;
    width:100%!important;
    min-width:0!important;
    height:40px!important;
    padding:1px!important;
    gap:3px!important;
    overflow-x:auto!important;
    overflow-y:hidden!important;
    border-radius:6px!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__collapse{
    display:none!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world-shellbar__menu{
    display:grid!important;
    width:36px!important;
    height:38px!important;
    min-width:36px!important;
    margin:0!important;
    border-radius:7px!important;
    font-size:17px!important;
  }
  .portal-world-mobilehub-btn{
    flex:0 0 36px!important;
    width:36px!important;
    min-width:36px!important;
    height:36px!important;
    padding:1px!important;
    border-radius:5px!important;
  }
  .portal-world-mobilehub-btn>span{font-size:13px!important}
  .portal-world-mobilehub-btn img{width:21px!important;height:21px!important}
  .portal-world-mobilehub-btn small{font-size:4.5px!important;bottom:1px!important}
  body.portal-world-active.portal-world-pbo-clean .portal-stage{
    width:100vw!important;
    height:calc(100dvh - 50px)!important;
    padding:0!important;
    overflow:hidden!important;
  }

  body.portal-world-active.portal-world-pbo-clean .portal-world,
  body.portal-world-active.portal-world-pbo-clean .portal-world__main,
  body.portal-world-active.portal-world-pbo-clean .portal-world__left{
    width:100%!important;
    height:100%!important;
    min-height:0!important;
    margin:0!important;
    gap:0!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world__game-card{
    width:100vw!important;
    height:100%!important;
    min-height:0!important;
    max-height:none!important;
    margin:0!important;
    border-left:0!important;
    border-right:0!important;
    border-bottom:0!important;
    border-radius:0!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world__frame{
    width:100%!important;
    height:100%!important;
    display:block!important;
  }
  body.portal-world-active .portal-mobile-menu-dock{
    display:none!important;
  }
}

/* BOOM MOBILE PREMIUM JEWEL BUTTON V1 */
@media (max-width:820px){
  .portal-world-mobilehub-btn[data-portal-world-mobile-action="donator-store"]{
    isolation:isolate!important;
    position:relative!important;
    overflow:hidden!important;
    border:1px solid #f4d260!important;
    background:
      radial-gradient(circle at 78% 16%,rgba(82,224,255,.26),transparent 27%),
      radial-gradient(circle at 20% 82%,rgba(188,90,255,.23),transparent 33%),
      linear-gradient(145deg,#2b1d07 0%,#142d3b 48%,#07151f 100%)!important;
    box-shadow:
      0 0 0 1px rgba(119,73,17,.72),
      0 0 8px rgba(255,211,72,.38),
      0 0 12px rgba(61,214,255,.22),
      inset 0 1px 0 rgba(255,247,190,.32),
      inset 0 0 10px rgba(255,201,47,.09)!important;
  }

  .portal-world-mobilehub-btn[data-portal-world-mobile-action="donator-store"]::before{
    content:""!important;
    position:absolute!important;
    z-index:1!important;
    top:-22%!important;
    bottom:-22%!important;
    left:-85%!important;
    width:54%!important;
    pointer-events:none!important;
    transform:skewX(-19deg)!important;
    background:linear-gradient(
      90deg,
      transparent 0%,
      rgba(255,255,255,0) 14%,
      rgba(255,246,180,.56) 46%,
      rgba(108,231,255,.52) 57%,
      rgba(255,255,255,0) 86%,
      transparent 100%
    )!important;
    filter:blur(.2px)!important;
    animation:boomPremiumMobileSweep 3.9s cubic-bezier(.45,0,.22,1) infinite!important;
  }

  .portal-world-mobilehub-btn[data-portal-world-mobile-action="donator-store"]::after{
    content:"✦"!important;
    position:absolute!important;
    z-index:4!important;
    right:3px!important;
    top:3px!important;
    width:7px!important;
    height:7px!important;
    display:grid!important;
    place-items:center!important;
    color:#fff5ad!important;
    font:1000 6px/1 Arial,sans-serif!important;
    text-shadow:
      0 0 3px #fff,
      0 0 6px #ffd84f,
      0 0 8px #57e5ff!important;
    animation:boomPremiumMobileSparkle 2.2s ease-in-out infinite!important;
    pointer-events:none!important;
  }

  .portal-world-mobilehub-btn[data-portal-world-mobile-action="donator-store"]>span{
    position:relative!important;
    z-index:3!important;
    color:#ffe477!important;
    font-size:17px!important;
    transform:translateY(-2px)!important;
    text-shadow:
      0 0 3px rgba(255,255,255,.86),
      0 0 7px rgba(255,215,78,.92),
      0 0 11px rgba(70,221,255,.62)!important;
    animation:boomPremiumMobileGemPulse 2.5s ease-in-out infinite!important;
  }

  .portal-world-mobilehub-btn[data-portal-world-mobile-action="donator-store"] small{
    position:absolute!important;
    z-index:3!important;
    left:0!important;
    right:0!important;
    bottom:2px!important;
    color:#fff0a0!important;
    font-size:4.7px!important;
    font-weight:1000!important;
    letter-spacing:.025em!important;
    text-shadow:
      0 1px 2px #000,
      0 0 5px rgba(255,205,62,.72)!important;
    overflow:visible!important;
    text-overflow:clip!important;
  }

  .portal-world-mobilehub-btn[data-portal-world-mobile-action="donator-store"]:active{
    transform:scale(.95)!important;
    filter:brightness(1.12)!important;
  }
}

@keyframes boomPremiumMobileSweep{
  0%,57%{left:-85%;opacity:0}
  62%{opacity:.72}
  79%{left:135%;opacity:.64}
  84%,100%{left:135%;opacity:0}
}
@keyframes boomPremiumMobileSparkle{
  0%,100%{opacity:.22;transform:scale(.68) rotate(0deg)}
  42%{opacity:1;transform:scale(1.28) rotate(20deg)}
  58%{opacity:.55;transform:scale(.88) rotate(40deg)}
}
@keyframes boomPremiumMobileGemPulse{
  0%,100%{transform:translateY(-2px) scale(1)}
  50%{transform:translateY(-3px) scale(1.10)}
}

@media (prefers-reduced-motion:reduce){
  .portal-world-mobilehub-btn[data-portal-world-mobile-action="donator-store"]::before,
  .portal-world-mobilehub-btn[data-portal-world-mobile-action="donator-store"]::after,
  .portal-world-mobilehub-btn[data-portal-world-mobile-action="donator-store"]>span{
    animation:none!important;
  }
}

/* BOOM_MOBILE_WORLD_VIEWPORT_LOCK_V2
   WORLD on phones is an app-like fixed viewport. The browser document itself
   must never scroll behind the game or slide the 50px HUB bar off screen. */
@media (max-width:820px){
  html.portal-world-active{
    width:100%!important;
    height:var(--boom-world-mobile-vh,100svh)!important;
    min-height:var(--boom-world-mobile-vh,100svh)!important;
    max-height:var(--boom-world-mobile-vh,100svh)!important;
    overflow:hidden!important;
    overscroll-behavior:none!important;
    background:#020a10!important;
  }
  body.portal-world-active{
    position:fixed!important;
    inset:0!important;
    width:100vw!important;
    height:var(--boom-world-mobile-vh,100svh)!important;
    min-height:var(--boom-world-mobile-vh,100svh)!important;
    max-height:var(--boom-world-mobile-vh,100svh)!important;
    margin:0!important;
    overflow:hidden!important;
    overscroll-behavior:none!important;
    touch-action:manipulation;
  }
  body.portal-world-active.portal-world-pbo-clean #portal-root.portal-shell{
    position:fixed!important;
    inset:0!important;
    width:100vw!important;
    height:var(--boom-world-mobile-vh,100svh)!important;
    min-height:0!important;
    max-height:var(--boom-world-mobile-vh,100svh)!important;
    grid-template:50px minmax(0,1fr) / 1fr!important;
    overflow:hidden!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-topbar{
    position:relative!important;
    top:0!important;
    z-index:100!important;
    height:50px!important;
    min-height:50px!important;
    max-height:50px!important;
    flex:0 0 50px!important;
    transform:none!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-stage{
    position:relative!important;
    width:100vw!important;
    height:calc(var(--boom-world-mobile-vh,100svh) - 50px)!important;
    min-height:0!important;
    max-height:calc(var(--boom-world-mobile-vh,100svh) - 50px)!important;
    padding:0!important;
    margin:0!important;
    overflow:hidden!important;
    overscroll-behavior:none!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world,
  body.portal-world-active.portal-world-pbo-clean .portal-world__main,
  body.portal-world-active.portal-world-pbo-clean .portal-world__left,
  body.portal-world-active.portal-world-pbo-clean .portal-world__game-card,
  body.portal-world-active.portal-world-pbo-clean .portal-world__frame{
    min-height:0!important;
    max-height:none!important;
    overscroll-behavior:none!important;
  }
  body.portal-world-active.portal-world-pbo-clean .portal-world__game-card,
  body.portal-world-active.portal-world-pbo-clean .portal-world__frame{
    height:100%!important;
  }
}
