/* ── Game V2 prototype — modern, full-screen, mobile-first, 16-bit-but-2026 ──
   Isolated from the production client. Mobile-first; desktop adds via @media. */

/* Vendored fonts (latin subset) — NO CDN. url() resolves relative to this file
   (/game-v2/game-v2.css → /game-v2/fonts/…), so it works regardless of the URL. */
@font-face{font-family:'VT323';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/vt323-latin.woff2) format('woff2')}
@font-face{font-family:'Press Start 2P';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/pressstart2p.ttf) format('truetype')}
@font-face{font-family:'Nunito';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/nunito-latin.woff2) format('woff2')}
@font-face{font-family:'Nunito';font-style:normal;font-weight:800;font-display:swap;src:url(fonts/nunito-latin.woff2) format('woff2')}

:root{
  /* Obsidian Glass palette — deep dark with blue accent. */
  --gold:#c8861a; --red:#1f6feb; --red2:#1a5fcc;
  --cream:#0d1117; --cream2:#161b22;
  --glass:rgba(13,17,23,.82); --glass-line:rgba(88,166,255,.35);
  --txt:#e6edf3; --ink:#e6edf3; --dim:#7d8590;
  --warm-shadow:rgba(0,0,0,.45);
  --pixel:'VT323', ui-monospace, 'Courier New', monospace;
  --sans:'Nunito', system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
  --dockh:64px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;width:100%;overflow:hidden;overscroll-behavior:none;background:#05070d;color:var(--txt);font-family:var(--sans);touch-action:none}
img{image-rendering:pixelated}
#gv2-root{position:fixed;inset:0;overflow:hidden}
#gv2-game{position:absolute;inset:0;width:100%;height:100%}
#gv2-game canvas{display:block;width:100%!important;height:100%!important;image-rendering:pixelated}

/* ── top HUD ── */
/* top HUD chips stay DARK/navy with GREEN text (user keeps these distinct from the cream UI) */
.gv2-top{position:absolute;top:calc(8px + env(safe-area-inset-top));z-index:20;display:flex;flex-direction:column;gap:3px;
  background:rgba(16,22,38,.74);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  border:1px solid rgba(88,166,255,.35);border-radius:11px;padding:4px 9px;box-shadow:0 6px 18px rgba(0,0,0,.4)}
.gv2-top-left{left:calc(8px + env(safe-area-inset-left))}
.gv2-top-right{right:calc(8px + env(safe-area-inset-right));align-items:flex-end}
.gv2-region{font-family:var(--pixel);font-size:18px;line-height:1;letter-spacing:1px;color:#6fd870;text-shadow:0 2px 0 rgba(0,0,0,.5)}
.gv2-substatus{font-size:10px;font-weight:800;color:#88c088}
.gv2-player{font-family:var(--pixel);font-size:16px;line-height:1;color:#7ee07e}
.gv2-wallet{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:800}
.gv2-coin{color:#a8e070}.gv2-token-balance{color:#6fd8a8}
.gv2-walletdot{filter:grayscale(.4);font-size:13px;background:none;border:none;color:#cfe8cf;cursor:pointer;padding:0;line-height:1}
.gv2-walletdot.linked{filter:none}
.gv2-gear{background:none;border:none;color:var(--ink);cursor:pointer;font-size:14px;padding:0;line-height:1;opacity:.7;transition:transform .25s ease,opacity .2s}
.gv2-gear:hover,.gv2-gear.active{opacity:1;transform:rotate(45deg)}
/* settings dropdown anchored under the top-right chip */
.gv2-menu{position:absolute;top:100%;right:0;margin-top:6px;min-width:174px;z-index:30;
  background:var(--cream);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border:1px solid var(--glass-line);border-radius:12px;box-shadow:0 12px 34px var(--warm-shadow);overflow:hidden;padding:5px}
.gv2-menu[hidden]{display:none}
.gv2-menu-item{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;color:var(--ink);
  font-size:13px;font-weight:800;text-align:left;padding:9px 11px;border-radius:8px;cursor:pointer;white-space:nowrap}
.gv2-menu-item:hover{background:rgba(31,111,235,.1)}
.gv2-mi-ic{font-size:14px;width:18px;text-align:center;flex-shrink:0}
/* top-center pixel brand title */
.gv2-brand{position:absolute;left:50%;top:calc(5px + env(safe-area-inset-top));transform:translateX(-50%);z-index:16;
  font-family:var(--pixel);font-size:26px;line-height:1;letter-spacing:1px;white-space:nowrap;pointer-events:none;
  text-shadow:0 2px 0 rgba(0,0,0,.55),0 0 12px rgba(0,0,0,.35)}
.gv2-brand-bolt{color:#ffd84d;margin-right:5px}
.gv2-brand-main{color:#ffe08a}
.gv2-brand-world{color:#ff5a5a}

/* ── bottom action dock ── */
.gv2-dock{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(8px + env(safe-area-inset-bottom));z-index:30;
  display:flex;gap:2px;background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border:1px solid var(--glass-line);border-radius:16px;padding:5px;box-shadow:0 8px 26px var(--warm-shadow);max-width:96vw;
  /* dock now holds more sections than fit on a phone — scroll horizontally instead of wrapping/clipping */
  overflow-x:auto;flex-wrap:nowrap;scroll-snap-type:x proximity;scrollbar-width:none;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.gv2-dock::-webkit-scrollbar{display:none}
.gv2-dockbtn{appearance:none;border:0;background:transparent;color:var(--dim);font-family:var(--sans);font-weight:800;
  display:flex;flex:0 0 auto;scroll-snap-align:center;flex-direction:column;align-items:center;gap:1px;padding:6px 9px;border-radius:11px;cursor:pointer;min-width:46px;transition:.12s}
/* a .gv2-dockbtn sets display:flex, which would beat the [hidden] UA rule — force-hide admin until detected */
.gv2-dockbtn[hidden],.gv2-panel[hidden]{display:none !important}
.gv2-dockbtn .gv2-ic{font-size:19px;line-height:1}
.gv2-dockbtn .gv2-lbl{font-size:9.5px;letter-spacing:.3px}
.gv2-dockbtn:hover{color:var(--red);background:rgba(31,111,235,.1)}
.gv2-dockbtn.active{color:#fff;background:linear-gradient(var(--red),var(--red2));box-shadow:0 3px 0 #0f3d8a}

/* ── battle HUD ── */
.gv2-battle-ui[hidden]{display:none}
/* hide the bottom nav dock while a battle is on screen (battle HUD visible) */
.gv2-battle-ui:not([hidden]) ~ .gv2-dock{display:none}
/* retro/pixel HP box — cream GB-style plate, compact (~30% smaller than the old glass card) */
.gv2-hpcard{position:absolute;z-index:20;background:#f3f0da;color:#20232e;
  border:2px solid #20232e;border-radius:2px;padding:2px 5px 3px;width:128px;box-shadow:0 2px 0 rgba(0,0,0,.45);image-rendering:pixelated}
/* diagonal corners: wild (foe) top-right, player bottom-left — kept out of the play area so mobile stays clear.
   foe is pushed down (~56px) so it clears the top HUD chip. */
.gv2-hp-enemy{right:calc(12px + env(safe-area-inset-right));top:calc(56px + env(safe-area-inset-top));left:auto;bottom:auto;transform:none}
.gv2-hp-player{left:calc(12px + env(safe-area-inset-left));bottom:calc(12px + env(safe-area-inset-bottom));right:auto;top:auto;transform:none}
.gv2-hpname{font-family:var(--pixel);font-size:15px;line-height:1;color:#20232e;display:flex;justify-content:space-between;gap:6px;align-items:baseline}
.gv2-hplv{color:#9a6a00}
.gv2-hpbar{margin-top:2px;height:5px;background:#3a3a30;border:1px solid #20232e;border-radius:1px;overflow:hidden}
.gv2-hpbar.sm{height:4px;margin-top:2px}
.gv2-hpbar>span{display:block;height:100%;border-radius:0;transition:width .4s,background-color 300ms ease}
.gv2-hpnum{margin-top:1px;font-family:var(--pixel);font-size:11px;font-weight:800;color:#3a3a30;text-align:right}
.gv2-hptype{margin-top:2px;display:inline-block;font-family:var(--pixel);font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:#10131c;padding:0 4px;border:1px solid #20232e;border-radius:2px}
/* wild foe meta row (type chips + rarity badge) — part of the battle UI, no separate card */
.gv2-hpmeta{margin-top:2px;display:flex;flex-wrap:wrap;gap:2px;align-items:center}
.gv2-hpchip{font-family:var(--pixel);font-size:11px;text-transform:uppercase;letter-spacing:.3px;color:#10131c;padding:0 4px;border:1px solid #20232e;border-radius:2px;line-height:1.25}
.gv2-rarity{font-family:var(--pixel);font-size:11px;text-transform:uppercase;letter-spacing:.4px;padding:0 4px;border-radius:2px;color:#fff;border:1px solid #20232e;line-height:1.25}
.gv2-wild{font-family:var(--pixel);font-size:11px;text-transform:uppercase;letter-spacing:.4px;padding:0 4px;border-radius:2px;color:#10131c;background:#7bd88a;border:1px solid #20232e;line-height:1.25}
.gv2-rar-common{background:#6b7280}
.gv2-rar-uncommon{background:#2f9e54}
.gv2-rar-rare{background:#6d5ae0}
.gv2-rar-shiny{background:linear-gradient(90deg,#caa53a,#ffe27a,#caa53a);color:#3a2e08;border-color:rgba(255,240,180,.7);text-shadow:0 1px 0 rgba(255,255,255,.3)}
.gv2-rar-dark{background:#2a2438;color:#d9c8ff;border-color:rgba(150,110,224,.6)}
.gv2-rar-legendary{background:linear-gradient(90deg,#e0902a,#ffc04a,#e0902a);color:#3a2400}

/* skill dock (bottom) */
.gv2-skilldock{position:absolute;right:calc(14px + env(safe-area-inset-right));bottom:calc(14px + env(safe-area-inset-bottom));z-index:25;
  width:min(440px,56vw);display:flex;flex-direction:column;gap:7px}
.gv2-skillgrid{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.gv2-skill{appearance:none;border:1.5px solid var(--tc);border-left-width:6px;background:var(--cream2);color:var(--ink);
  border-radius:11px;padding:8px 11px;cursor:pointer;text-align:left;display:flex;flex-direction:column;gap:4px;box-shadow:0 3px 0 var(--warm-shadow);transition:.1s}
.gv2-skill:active{transform:translateY(2px);box-shadow:0 2px 0 rgba(0,0,0,.35)}
.gv2-struggle{background:linear-gradient(135deg,#1f2937,#374151)!important;border:1px solid rgba(156,163,175,.4)!important;border-left-width:1px!important;color:#9ca3af;grid-column:1/-1}
.gv2-skn{font-family:var(--pixel);font-size:19px;line-height:1}
.gv2-skmeta{display:flex;align-items:center;justify-content:space-between}
.gv2-skbadge{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;background:var(--tc);color:#10131c;padding:1px 7px;border-radius:20px}
.gv2-skpow{font-size:11px;font-weight:800;color:var(--dim)}
.gv2-skpp{font-size:11px;font-weight:800;color:var(--dim);font-variant-numeric:tabular-nums}
.gv2-hpst{font-size:9px;font-weight:900;letter-spacing:.6px;padding:0 5px;border-radius:6px;color:#10131c;background:transparent}
.gv2-hpst:empty{display:none}
.gv2-hpst[data-st=psn]{background:#b15ad6;color:#fff}.gv2-hpst[data-st=brn]{background:#ff7a3c;color:#fff}
.gv2-hpst[data-st=par]{background:#f8d030}.gv2-hpst[data-st=slp]{background:#9aa6c0;color:#fff}
.gv2-skillrow{display:flex;gap:7px}
.gv2-bbtn{flex:1;appearance:none;border:1.5px solid var(--glass-line);background:var(--glass);color:var(--ink);font-family:var(--sans);
  font-weight:800;font-size:12.5px;border-radius:10px;padding:9px 6px;cursor:pointer;backdrop-filter:blur(8px)}
.gv2-throw{border-color:var(--gold);color:#a9700f}.gv2-run{border-color:#d05a5a;color:#b13838}
.gv2-bbtn:active{transform:translateY(1px)}
/* dock locked during a scripted battle animation (intro / ball throw / capture) */
.gv2-skilldock.gv2-locked{pointer-events:none}
.gv2-skilldock.gv2-locked .gv2-skill,.gv2-skilldock.gv2-locked .gv2-bbtn{opacity:.5;filter:saturate(.6);transition:opacity .15s}
/* PvP battle dock: turn / switch / item label above the skill grid */
.gv2-pvp-turnlbl{font-family:var(--pixel);font-size:15px;color:var(--ink);text-align:center;margin:0 0 4px;text-shadow:0 1px 2px rgba(0,0,0,.25)}
.gv2-pvp-turnlbl.dim{opacity:.7}
/* Throw-Ball picker — choose which ball to throw (warm battle-flow chrome) */
.gv2-ballpick{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;padding:16px}
.gv2-ballpick-scrim{position:absolute;inset:0;background:rgba(0,0,0,.5)}
.gv2-ballpick-card{position:relative;background:var(--cream2);border:2px solid var(--glass-line);border-radius:14px;padding:14px;width:min(320px,90vw);max-height:80vh;overflow-y:auto;box-shadow:0 16px 48px rgba(0,0,0,.3)}
.gv2-ballpick-title{font-family:var(--pixel);font-size:18px;color:var(--ink);text-align:center;margin-bottom:10px}
.gv2-ballpick-list{display:flex;flex-direction:column;gap:6px}
.gv2-ballpick-row{display:flex;align-items:center;gap:10px;width:100%;border:1.5px solid var(--glass-line);background:var(--glass);color:var(--ink);border-radius:10px;padding:8px 10px;cursor:pointer;text-align:left;box-shadow:0 2px 0 var(--warm-shadow)}
.gv2-ballpick-row:active{transform:translateY(2px);box-shadow:0 1px 0 var(--warm-shadow)}
.gv2-ballpick-row img{width:30px;height:30px;object-fit:contain;image-rendering:pixelated}
.gv2-ballpick-nm{flex:1;font-weight:800;font-size:14px}
.gv2-ballpick-c{font-weight:800;font-size:13px;color:var(--dim);font-variant-numeric:tabular-nums}
.gv2-ballpick-cancel{margin-top:10px;width:100%;border:1.5px solid var(--glass-line);background:var(--glass);color:var(--ink);font-weight:800;font-size:13px;border-radius:9px;padding:8px;cursor:pointer}

/* ── mobile controls ── */
.gv2-mobile[hidden]{display:none}
/* free/dynamic joystick: spawns at the pointer (JS sets left/top), never blocks the map.
   Wrapper fades 0↔1; base + knob carry their own subtle opacities so the map stays readable. */
.gv2-joystick{position:fixed;left:0;top:0;width:104px;height:104px;transform:translate(-50%,-50%);
  z-index:26;pointer-events:none;opacity:0;transition:opacity 140ms ease}
.gv2-joystick.active{opacity:1;transition:opacity 80ms ease}
.gv2-joy-base{position:absolute;inset:0;border-radius:50%;opacity:.42;
  background:rgba(20,20,20,.22);border:2px solid rgba(255,255,255,.18);box-shadow:0 1px 4px rgba(0,0,0,.18)}
.gv2-joy-knob{position:absolute;left:50%;top:50%;width:46px;height:46px;border-radius:50%;opacity:.68;
  transform:translate(-50%,-50%);background:rgba(245,248,255,.58);border:2px solid rgba(255,255,255,.35);box-shadow:0 1px 4px rgba(0,0,0,.25)}
/* the yellow "A" action button is hidden (keyboard space/enter still fires input-bus action) */
.gv2-actionbtn{display:none!important}

/* ── floating wild-encounter — Option B: in-world bubble + Platinum grass platform ──
   OUTER .gv2-wildcard = position:fixed wrapper (translate3d per frame, viewport coords).
   INNER .gv2-wc-inner = flex column: bubble → sprite → platform → Battle button. */
.gv2-wildcard{position:fixed;left:0;top:0;z-index:34;pointer-events:none;will-change:transform;
  transform:translate3d(-9999px,-9999px,0)}
.gv2-wc-inner{display:flex;flex-direction:column;align-items:center;gap:0;
  transform:translateX(-50%) translateY(-100%);
  animation:gv2-wc-in .28s cubic-bezier(.34,1.4,.64,1) both}
/* entrance */
@keyframes gv2-wc-in{
  from{opacity:0;transform:translateX(-50%) translateY(-90%) scale(.76)}
  to{opacity:1;transform:translateX(-50%) translateY(-100%) scale(1)}}
/* exit — added via JS class */
.gv2-wildcard.gv2-wc-exit-smooth .gv2-wc-inner{animation:gv2-wc-out .22s ease-in forwards}
.gv2-wildcard.gv2-wc-exit-quick  .gv2-wc-inner{animation:gv2-wc-out .12s ease-in forwards}
@keyframes gv2-wc-out{
  from{opacity:1;transform:translateX(-50%) translateY(-100%) scale(1)}
  to  {opacity:0;transform:translateX(-50%) translateY(-93%)  scale(.8)}}
/* name + level: plain white text below platform, no box */
.gv2-wc-name{font-family:var(--pixel);font-size:16px;line-height:1;color:#fff;white-space:nowrap;
  margin-top:4px;text-shadow:0 1px 4px rgba(0,0,0,.95),0 0 10px rgba(0,0,0,.8)}
.gv2-wc-catch{font-size:12px;margin-left:3px}
.gv2-wc-lv{font-family:var(--pixel);font-size:14px;color:#fff;line-height:1;margin-top:3px;
  text-shadow:0 1px 4px rgba(0,0,0,.95),0 0 10px rgba(0,0,0,.8)}
/* in-world stack: sprite sits directly on platform (absolute positioning = pixel-perfect) */
.gv2-wc-world{position:relative;width:110px;height:70px}
.gv2-wc-spr{width:70px;height:70px;image-rendering:pixelated;position:absolute;top:0;
  left:50%;transform:translateX(-50%);
  filter:drop-shadow(0 2px 6px rgba(0,0,0,.6));z-index:1}
.gv2-wc-platform{width:110px;height:auto;image-rendering:pixelated;
  position:absolute;bottom:0;left:0;z-index:0}
/* red Battle button */
.gv2-wc-battle{pointer-events:auto;background:linear-gradient(135deg,#e53935,#c62828);
  color:#fff;font-family:var(--sans);font-size:11px;font-weight:900;letter-spacing:.06em;
  padding:7px 22px;border-radius:20px;border:0;cursor:pointer;margin-top:7px;
  box-shadow:0 3px 0 #7f1010,0 0 14px rgba(229,57,53,.35);
  transition:filter .1s,transform .1s,box-shadow .1s}
.gv2-wc-battle:hover{filter:brightness(1.12)}
.gv2-wc-battle:active{transform:translateY(2px);box-shadow:0 1px 0 #7f1010}
/* rarity sprite effects (no bubble) */
.gv2-wc-inner.r-shiny .gv2-wc-spr{animation:gv2-wc-shine 1.6s ease-in-out infinite}
@keyframes gv2-wc-shine{0%,100%{filter:drop-shadow(0 2px 6px rgba(0,0,0,.6)) brightness(1)}
  50%{filter:drop-shadow(0 0 10px #ffd95c) brightness(1.18)}}
.gv2-wc-inner.r-dark .gv2-wc-spr{filter:drop-shadow(0 2px 6px rgba(0,0,0,.6)) brightness(.82) saturate(.9)}
/* type chip colours */
.gv2-type-normal{background:rgba(168,168,120,.2);color:#c8c88a}
.gv2-type-fire{background:rgba(240,128,48,.2);color:#f09040}
.gv2-type-water{background:rgba(104,144,240,.2);color:#7ab4f0}
.gv2-type-grass{background:rgba(120,200,80,.2);color:#88c864}
.gv2-type-electric{background:rgba(248,208,48,.2);color:#f8d048}
.gv2-type-ice{background:rgba(152,216,216,.2);color:#98d8d8}
.gv2-type-fighting{background:rgba(192,48,40,.2);color:#d04030}
.gv2-type-poison{background:rgba(160,64,160,.2);color:#b05ab0}
.gv2-type-ground{background:rgba(224,192,104,.2);color:#d4b068}
.gv2-type-flying{background:rgba(168,144,240,.2);color:#b4a0f0}
.gv2-type-psychic{background:rgba(248,88,136,.2);color:#f06090}
.gv2-type-bug{background:rgba(168,184,32,.2);color:#a8c020}
.gv2-type-rock{background:rgba(184,160,56,.2);color:#b8a038}
.gv2-type-ghost{background:rgba(112,88,152,.2);color:#9878d0}
.gv2-type-dragon{background:rgba(112,56,248,.2);color:#8040f8}
.gv2-type-dark{background:rgba(112,88,72,.2);color:#987860}
.gv2-type-steel{background:rgba(184,184,208,.2);color:#b8b8d0}
.gv2-type-fairy{background:rgba(238,153,172,.2);color:#ee99ac}
/* one-shot global rarity flourish — behind the encounter (z 33), ≤1s, pointer-events:none */
.gv2-wc-fx{position:fixed;inset:0;z-index:33;pointer-events:none}
.gv2-wc-fx.fx-rare{background:radial-gradient(circle at 50% 46%,rgba(79,140,255,.22),rgba(79,140,255,0) 42%);animation:gv2-fx-fade .9s ease-out forwards}
.gv2-wc-fx.fx-shiny{background:radial-gradient(circle at 50% 46%,rgba(255,224,130,.30),rgba(255,224,130,0) 38%);animation:gv2-fx-fade .6s ease-out forwards}
.gv2-wc-fx.fx-dark{background:radial-gradient(circle at 50% 50%,rgba(20,8,30,0) 55%,rgba(34,12,52,.5));animation:gv2-fx-fade .9s ease-out forwards}
.gv2-wc-fx.fx-legendary{background:radial-gradient(circle at 50% 44%,rgba(255,200,90,.34),rgba(255,170,40,0) 46%);animation:gv2-fx-glint .7s ease-out forwards}
@keyframes gv2-fx-fade{0%{opacity:0}22%{opacity:1}100%{opacity:0}}
@keyframes gv2-fx-glint{0%{opacity:0;transform:scale(.86)}28%{opacity:1}100%{opacity:0;transform:scale(1.06)}}
@media (prefers-reduced-motion:reduce){.gv2-wc-inner,.gv2-wc-inner .gv2-wc-spr{animation:none!important}.gv2-wc-fx{display:none!important}}

/* ── panels (bottom sheet on mobile, modal on desktop) ── */
.gv2-panel-scrim{position:absolute;inset:0;z-index:40;background:rgba(2,4,10,.55);backdrop-filter:blur(2px)}
.gv2-panel-scrim[hidden],.gv2-panel[hidden],.gv2-chat[hidden]{display:none}
.gv2-panel,.gv2-chat{position:absolute;z-index:41;left:0;right:0;bottom:0;max-height:78vh;color:var(--ink);
  background:rgba(13,17,23,.88);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border:1px solid var(--glass-line);
  border-radius:18px 18px 0 0;box-shadow:0 -10px 40px var(--warm-shadow);display:flex;flex-direction:column;
  padding-bottom:calc(8px + env(safe-area-inset-bottom));animation:gv2up .22s ease}
@keyframes gv2up{from{transform:translateY(100%)}to{transform:translateY(0)}}
.gv2-panel-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 6px}
.gv2-panel-title{font-family:var(--pixel);font-size:24px;color:var(--red)}
/* Earn $POKECR — dock label shrink to fit, panel title gold glow */
.gv2-dockbtn[data-panel="expeditions"] .gv2-lbl{font-size:7px;letter-spacing:0;white-space:nowrap}
.gv2-earn-token{color:#f59e0b;text-shadow:0 0 12px rgba(245,158,11,.65),0 0 3px rgba(255,210,0,.9);letter-spacing:.03em}
.gv2-panel-x{appearance:none;border:1px solid var(--glass-line);background:rgba(31,111,235,.06);color:var(--ink);font-size:16px;width:32px;height:32px;border-radius:9px;cursor:pointer}
.gv2-panel-body{overflow:auto;padding:6px 16px 14px;-webkit-overflow-scrolling:touch}
/* character selector (Team panel, V2-local) */
.gv2-charsel{margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid var(--glass-line)}
.gv2-charsel-h{font-family:var(--pixel);font-size:18px;color:var(--gold);margin-bottom:6px}
.gv2-charsel-h small{font-family:var(--sans);font-size:10px;font-weight:800;color:var(--dim)}
.gv2-chargrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(66px,1fr));gap:8px}
.gv2-charcard{background:var(--cream2);border:2px solid var(--glass-line);border-radius:11px;padding:6px 4px 4px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;transition:.12s}
.gv2-charcard:hover{border-color:rgba(255,255,255,.3)}
.gv2-charcard.active{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset}
.gv2-charpix{width:44px;height:44px;background-size:176px 176px;background-position:0 0;background-repeat:no-repeat;image-rendering:pixelated}
.gv2-charname{font-size:10px;font-weight:800;color:var(--dim)}
.gv2-charcard.active .gv2-charname{color:var(--ink)}
.gv2-teamgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}
.gv2-teamcard{background:var(--cream2);border:1px solid var(--glass-line);border-radius:13px;padding:8px 6px;text-align:center;box-shadow:0 2px 8px rgba(0,0,0,.3)}
.gv2-teamcard img{width:56px;height:56px}
.gv2-tcname{font-family:var(--pixel);font-size:17px;color:var(--ink);margin-top:2px}
.gv2-tclv{font-size:10.5px;font-weight:800;color:var(--dim);text-transform:capitalize}
/* ── Team panel — list layout ── */
.gv2-orb-ic{display:block;flex-shrink:0}
.gv2-team-heal{width:100%;margin-bottom:8px;padding:9px;border:none;border-radius:10px;background:#238636;color:#fff;font-size:13px;font-weight:800;cursor:pointer}
.gv2-team-heal:hover{background:#2ea043}
.gv2-team-heal:disabled{background:#3d4450;color:#8b949e;cursor:not-allowed}
.gv2-teamlist{display:flex;flex-direction:column;gap:6px}
.gv2-teamrow{display:flex;align-items:center;gap:8px;background:var(--cream2);border:1px solid var(--glass-line);border-radius:11px;padding:8px 9px;position:relative}
.gv2-teamrow-sprite{width:46px;height:46px;flex-shrink:0}
.gv2-teamrow-sprite img{width:46px;height:46px;transition:filter .2s}
/* ── variant showcase styling (shiny = recoloured sprite, dark = silhouette, legendary = special box) ── */
.gv2-teamrow.is-shiny{border-color:rgba(255,210,90,.55);box-shadow:0 0 0 1px rgba(255,210,90,.22) inset,0 0 10px rgba(255,210,90,.18)}
.gv2-teamrow.is-shiny .gv2-teamrow-sprite img{filter:hue-rotate(150deg) saturate(1.7) brightness(1.08) drop-shadow(0 0 4px rgba(255,225,120,.7))}
.gv2-teamrow.is-dark{border-color:rgba(150,100,255,.5);box-shadow:0 0 10px rgba(120,80,200,.22)}
.gv2-teamrow.is-dark .gv2-teamrow-sprite img{filter:brightness(.26) contrast(1.2) saturate(.45) drop-shadow(0 0 4px rgba(160,110,255,.65))}
.gv2-teamrow.is-legendary{border:2px solid transparent;background:linear-gradient(var(--cream2),var(--cream2)) padding-box,linear-gradient(120deg,#e0902a,#ffe27a,#e0902a,#ffc04a,#e0902a) border-box;box-shadow:0 0 16px rgba(255,176,46,.45);animation:gv2-legend-glow 2.4s ease-in-out infinite}
.gv2-teamrow.is-legendary .gv2-teamrow-name{color:#ffd95c;text-shadow:0 0 7px rgba(255,200,90,.55)}
.gv2-teamrow.is-legendary .gv2-teamrow-sprite img{filter:drop-shadow(0 0 6px rgba(255,200,90,.85)) saturate(1.12)}
@keyframes gv2-legend-glow{0%,100%{box-shadow:0 0 11px rgba(255,176,46,.35)}50%{box-shadow:0 0 24px rgba(255,205,95,.72)}}
.gv2-mon-badge.legend{background:linear-gradient(90deg,#e0902a,#ffc04a);color:#3a2400;border:1px solid rgba(255,205,95,.6);font-weight:900}
.gv2-teamrow-info{flex:1;min-width:0}
.gv2-teamrow-name{font-family:var(--pixel);font-size:16px;color:var(--ink);line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gv2-teamrow-stat{font-size:11px;font-weight:800;color:var(--gold);margin-top:2px}
.gv2-teamrow-actions{display:flex;flex-direction:column;gap:3px;flex-shrink:0;align-items:flex-end}
.gv2-trow-evo{font-size:10px;padding:3px 7px;border-radius:6px;border:none;font-weight:900;white-space:nowrap}
.gv2-trow-evo.ready{background:linear-gradient(#1f6feb,#1a5fcc);color:#fff;cursor:pointer}
.gv2-trow-evo.dis{background:transparent;border:1px solid rgba(88,166,255,.15);color:#3d4350;cursor:not-allowed}
.gv2-trow-btns{display:flex;gap:3px}
.gv2-trow-mv{width:24px;height:21px;border-radius:5px;border:1px solid rgba(88,166,255,.28);background:rgba(88,166,255,.06);color:var(--dim);cursor:pointer;font-size:13px;display:flex;align-items:center;justify-content:center;line-height:1}
.gv2-trow-mv:disabled{cursor:default}
.gv2-trow-rel{width:24px;height:21px;border-radius:5px;border:1px solid rgba(255,77,77,.32);background:rgba(255,77,77,.06);color:#ff6060;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;line-height:1}
.gv2-mon-badge{font-size:9px;padding:1px 5px;border-radius:4px;margin-left:4px;font-weight:700;vertical-align:middle;display:inline-block}
.gv2-mon-badge.shiny{background:rgba(200,134,26,.2);color:#c8861a;border:1px solid rgba(200,134,26,.45)}
.gv2-mon-badge.dark{background:rgba(150,100,255,.12);color:#a67fff;border:1px solid rgba(150,100,255,.4)}
.gv2-baglist{display:flex;flex-direction:column;gap:7px}
.gv2-bagrow{display:flex;align-items:center;gap:10px;background:var(--cream2);border:1px solid var(--glass-line);border-radius:11px;padding:8px 12px;box-shadow:0 2px 8px rgba(0,0,0,.25)}
.gv2-bagrow img{width:30px;height:30px}.gv2-bagn{flex:1;font-weight:800}.gv2-bagc{font-family:var(--pixel);font-size:20px;color:var(--gold)}
.gv2-baguse{margin-left:8px;padding:4px 10px;border:none;border-radius:8px;background:#238636;color:#fff;font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap}
.gv2-baguse:hover{background:#2ea043}.gv2-baguse:disabled{background:#3d4450;color:#8b949e;cursor:not-allowed}
.gv2-soon{text-align:center;font-family:var(--pixel);font-size:30px;color:var(--gold);padding:40px 16px;line-height:1.5}
.gv2-soon small{display:block;font-family:var(--sans);font-size:12px;font-weight:700;color:var(--dim);margin-top:8px}

/* ── Expeditions panel (Faz 2 — server-authoritative timed missions) ── */
.gv2-exp{display:flex;flex-direction:column;gap:14px}
.gv2-exp-empty{text-align:center;color:var(--dim);font-weight:700;font-size:13px;padding:14px 8px}
.gv2-exp-status{border-radius:11px;padding:9px 12px;font-size:12.5px;font-weight:700;line-height:1.45}
.gv2-exp-status.ok{background:rgba(73,211,106,.12);border:1px solid rgba(73,211,106,.4);color:#9ff0b3}
.gv2-exp-status.err{background:rgba(255,77,77,.12);border:1px solid rgba(255,77,77,.42);color:#ffb3b3}
.gv2-exp-status.reward{background:linear-gradient(#1a2440,#141c34);border:1px solid var(--gold);color:#ffe6a3}
.gv2-exp-status.reward b{color:var(--gold);font-family:var(--pixel);font-size:16px}
/* active mission cards */
.gv2-exp-active{display:flex;flex-direction:column;gap:10px}
.gv2-exp-card{background:var(--cream2);border:1px solid var(--glass-line);border-radius:14px;padding:10px 12px;display:flex;flex-direction:column;gap:8px}
.gv2-exp-card.claimable,.gv2-exp-card:has(.gv2-exp-badge.ready){border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset}
.gv2-exp-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.gv2-exp-region{font-family:var(--pixel);font-size:16px;color:var(--ink)}
.gv2-exp-badge{font-size:9.5px;font-weight:900;letter-spacing:.5px;padding:3px 7px;border-radius:7px}
.gv2-exp-badge.on{background:rgba(79,140,255,.18);color:#8fb6ff;border:1px solid rgba(79,140,255,.4)}
.gv2-exp-badge.ready{background:linear-gradient(#ffd76a,#f0b429);color:#0c1020}
.gv2-exp-card-mons{display:flex;flex-wrap:wrap;gap:6px}
.gv2-exp-chip-mon{position:relative;width:40px;height:40px;background:#0d1117;border:1px solid var(--glass-line);border-radius:9px;display:flex;align-items:center;justify-content:center}
.gv2-exp-chip-mon img{width:34px;height:34px;image-rendering:pixelated}
.gv2-exp-star{position:absolute;top:-5px;left:-4px;font-size:11px}
.gv2-exp-clv{position:absolute;bottom:-2px;right:-2px;font-size:9px;font-weight:900;background:#0d1117;color:var(--gold);border-radius:5px;padding:0 3px}
.gv2-exp-bar{height:7px;background:rgba(88,166,255,.12);border-radius:6px;overflow:hidden}
.gv2-exp-bar>span{display:block;height:100%;background:linear-gradient(90deg,#49d36a,#8ff0a8);border-radius:6px;transition:width .4s linear}
.gv2-exp-card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px}
.gv2-exp-timer{font-family:var(--pixel);font-size:19px;color:var(--dim)}
.gv2-exp-timer.ready{color:var(--gold)}
.gv2-exp-acts{display:flex;gap:6px}
.gv2-exp-cancel,.gv2-exp-claim{appearance:none;border:0;border-radius:9px;font-family:var(--sans);font-weight:800;font-size:12px;padding:7px 13px;cursor:pointer}
.gv2-exp-cancel{background:rgba(255,255,255,.07);color:var(--dim);border:1px solid var(--glass-line)}
.gv2-exp-cancel:hover{color:var(--ink)}
.gv2-exp-claim{background:linear-gradient(#ffd76a,#f0b429);color:#0c1020;box-shadow:0 3px 0 #b9871a}
.gv2-exp-claim:disabled{background:#2a3146;color:#5a6480;box-shadow:none;cursor:not-allowed}
/* new-expedition form */
.gv2-exp-form{background:rgba(10,16,30,.5);border:1px solid var(--glass-line);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:11px}
.gv2-exp-h{font-family:var(--pixel);font-size:19px;color:var(--gold);display:flex;align-items:center;justify-content:space-between;gap:8px}
.gv2-exp-cap{font-family:var(--sans);font-size:11px;font-weight:800;color:var(--dim)}
.gv2-exp-block{display:flex;flex-direction:column;gap:6px}
.gv2-exp-lbl{font-size:11px;font-weight:900;letter-spacing:.4px;text-transform:uppercase;color:var(--dim);display:flex;align-items:center;gap:7px}
.gv2-exp-pick{font-family:var(--pixel);font-size:14px;color:var(--gold);text-transform:none;letter-spacing:0}
.gv2-exp-chips{display:flex;flex-wrap:wrap;gap:6px}
.gv2-exp-pill{appearance:none;border:1px solid var(--glass-line);background:#161b22;color:var(--dim);font-family:var(--sans);font-weight:800;font-size:12px;padding:6px 12px;border-radius:9px;cursor:pointer;transition:.12s}
.gv2-exp-pill:hover{color:var(--ink);border-color:rgba(255,255,255,.28)}
.gv2-exp-pill.sel{background:linear-gradient(#ffd76a,#f0b429);color:#0c1020;border-color:transparent;box-shadow:0 2px 0 #b9871a}
.gv2-exp-party{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:8px}
.gv2-exp-pmon{position:relative;background:#161b22;border:2px solid var(--glass-line);border-radius:11px;padding:6px 4px 4px;cursor:pointer;text-align:center;transition:.12s}
.gv2-exp-pmon:hover{border-color:rgba(255,255,255,.3)}
.gv2-exp-pmon.sel{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset}
.gv2-exp-pmon.locked{opacity:.5;cursor:not-allowed;filter:grayscale(.7)}
.gv2-exp-pmon img{width:42px;height:42px;image-rendering:pixelated}
.gv2-exp-pname{font-size:10px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gv2-exp-plv{font-size:9.5px;font-weight:800;color:var(--dim)}
.gv2-exp-pstar{position:absolute;top:-4px;left:-2px;font-size:12px}
.gv2-exp-plock{position:absolute;top:3px;right:4px;font-size:13px}
.gv2-exp-preview{font-size:12px;line-height:1.55;color:var(--ink);background:rgba(255,255,255,.03);border:1px dashed var(--glass-line);border-radius:11px;padding:9px 11px}
.gv2-exp-preview b{color:var(--ink)}
.gv2-exp-dim{color:var(--dim)}
.gv2-exp-on{color:#ffe6a3}
.gv2-exp-start{appearance:none;border:0;border-radius:12px;font-family:var(--sans);font-weight:900;font-size:14px;padding:13px;cursor:pointer;background:linear-gradient(#ffd76a,#f0b429);color:#0c1020;box-shadow:0 4px 0 #b9871a;transition:.12s}
.gv2-exp-start:disabled{background:#2a3146;color:#5a6480;box-shadow:none;cursor:not-allowed}

/* ── Wild "Choose your Craterkin" overlay (Faz 3.1) ── */
.gv2-ts{position:absolute;inset:0;z-index:46;display:flex;align-items:center;justify-content:center}
.gv2-ts-scrim{position:absolute;inset:0;background:rgba(2,4,10,.62);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.gv2-ts-card{position:relative;z-index:1;width:min(94vw,440px);max-height:90vh;overflow:auto;-webkit-overflow-scrolling:touch;
  background:linear-gradient(var(--cream),var(--cream2));border:2px solid var(--gold);border-radius:18px;
  box-shadow:0 18px 60px rgba(0,0,0,.6);padding:14px 14px calc(14px + env(safe-area-inset-bottom));animation:gv2-ts-in .2s ease}
@keyframes gv2-ts-in{from{transform:scale(.94);opacity:0}to{transform:scale(1);opacity:1}}
.gv2-ts-head{text-align:center;margin-bottom:10px}
.gv2-ts-title{font-family:var(--pixel);font-size:24px;color:var(--gold)}
.gv2-ts-foe{display:flex;align-items:center;gap:11px;background:#161b22;border:1px solid var(--glass-line);border-radius:13px;padding:9px 12px;margin-bottom:12px;position:relative}
.gv2-ts-foe.r-shiny{border-color:#ffe082;box-shadow:0 0 0 1px rgba(255,224,130,.5) inset}
.gv2-ts-foe.r-dark{border-color:#7a4bbd}.gv2-ts-foe.r-legendary{border-color:#ffb02e;box-shadow:0 0 14px rgba(255,176,46,.35)}
.gv2-ts-foe-vs{font-size:9.5px;font-weight:900;letter-spacing:.6px;color:var(--dim);text-transform:uppercase}
.gv2-ts-foe-spr{width:54px;height:54px;image-rendering:pixelated}
.gv2-ts-foe-info{flex:1;min-width:0}
.gv2-ts-foe-name{font-family:var(--pixel);font-size:19px;color:var(--ink)}
.gv2-ts-foe-sub{font-size:11px;font-weight:800;color:var(--dim)}
.gv2-ts-foe-rar{display:inline-block;margin-top:3px;font-size:9.5px;font-weight:900;padding:2px 6px;border-radius:6px;background:rgba(255,255,255,.08);color:#ffe6a3}
/* wild foe rendered with the SAME card box as the player's mons (.gv2-ts-mon), but centered + non-interactive */
.gv2-ts-foewrap{display:flex;justify-content:center;margin-bottom:12px}
.gv2-ts-foecard{width:120px;cursor:default}
.gv2-ts-foecard:hover{transform:none;border-color:var(--glass-line)}
.gv2-ts-wild{position:absolute;top:4px;left:4px;font-size:8.5px;font-weight:900;letter-spacing:.4px;text-transform:uppercase;background:#0c1020;color:var(--dim);border:1px solid var(--glass-line);border-radius:6px;padding:1px 5px;z-index:1}
.gv2-ts-mon-rar{margin-top:6px;min-height:17px;display:flex;justify-content:center}
.gv2-ts-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:9px}
.gv2-ts-mon{position:relative;background:#161b22;border:2px solid var(--glass-line);border-radius:13px;padding:8px 6px 7px;cursor:pointer;text-align:center;transition:.12s}
.gv2-ts-mon:hover:not(.disabled){border-color:var(--gold);transform:translateY(-2px)}
.gv2-ts-mon.disabled{opacity:.5;cursor:not-allowed;filter:grayscale(.65)}
.gv2-ts-mon-spr{width:52px;height:52px;image-rendering:pixelated;transition:filter .2s}
/* variant showcase on the "Choose your Craterkin" cards — same look as the team panel */
.gv2-ts-mon.is-shiny{border-color:#ffd95c}
.gv2-ts-mon.is-shiny .gv2-ts-mon-spr{filter:hue-rotate(150deg) saturate(1.7) brightness(1.08) drop-shadow(0 0 4px rgba(255,225,120,.7))}
.gv2-ts-mon.is-dark{border-color:#7a4bbd}
.gv2-ts-mon.is-dark .gv2-ts-mon-spr{filter:brightness(.26) contrast(1.2) saturate(.45) drop-shadow(0 0 4px rgba(160,110,255,.65))}
.gv2-ts-mon.is-legendary{border-color:#ffb02e;box-shadow:0 0 14px rgba(255,176,46,.4);animation:gv2-legend-glow 2.4s ease-in-out infinite}
.gv2-ts-mon.is-legendary .gv2-ts-mon-spr{filter:drop-shadow(0 0 6px rgba(255,200,90,.85)) saturate(1.12)}
.gv2-ts-mon-name{font-family:var(--pixel);font-size:16px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gv2-ts-mon-sub{font-size:10px;font-weight:800;color:var(--dim);text-transform:capitalize}
.gv2-ts-hp{height:6px;background:rgba(88,166,255,.12);border-radius:5px;overflow:hidden;margin-top:5px}
.gv2-ts-hp>span{display:block;height:100%;border-radius:5px}
.gv2-ts-star{position:absolute;top:-5px;left:-3px;font-size:13px;z-index:1}
.gv2-ts-lock{position:absolute;top:4px;right:4px;font-size:8.5px;font-weight:900;background:#0c1020;color:#ffcb2e;border:1px solid var(--glass-line);border-radius:6px;padding:1px 4px;z-index:1}
.gv2-ts-lock.fnt{color:#ff7a7a}
.gv2-ts-empty{text-align:center;color:#ffb3b3;font-weight:800;font-size:14px;padding:22px 10px;line-height:1.6}
.gv2-ts-empty small{display:block;color:var(--dim);font-size:11px;font-weight:700;margin-top:6px}
.gv2-ts-run{display:block;width:100%;margin-top:13px;appearance:none;border:1px solid var(--glass-line);background:rgba(255,255,255,.06);color:#dfe6f5;font-family:var(--sans);font-weight:800;font-size:13px;padding:11px;border-radius:11px;cursor:pointer;transition:.12s}
.gv2-ts-run:hover{color:#fff;background:rgba(255,255,255,.1)}
.gv2-ts-head-row{display:flex;align-items:center;justify-content:space-between}
.gv2-ts-close{background:none;border:none;color:var(--dim);font-size:18px;cursor:pointer;padding:2px 6px;border-radius:6px;transition:.12s;line-height:1}
.gv2-ts-close:hover{color:var(--ink);background:rgba(255,255,255,.08)}
.gv2-ts-lock-active{background:#1f6feb;color:#fff}

/* ── Account panel (Faz 3.2) ── */
.gv2-acc{display:flex;flex-direction:column;gap:13px}
.gv2-acc-id{display:flex;align-items:center;gap:12px}
.gv2-acc-avatar{width:54px;height:54px;border-radius:12px;background:#161b22;border:2px solid var(--gold);background-size:216px 216px;background-position:0 0;background-repeat:no-repeat;image-rendering:pixelated;flex:0 0 auto}
.gv2-acc-name{font-family:var(--pixel);font-size:24px;color:var(--ink);line-height:1}
.gv2-acc-sub{font-size:11px;font-weight:800;color:#2f8f57;margin-top:3px}
.gv2-acc-grid{display:flex;flex-direction:column;gap:7px}
.gv2-acc-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#161b22;border:1px solid var(--glass-line);border-radius:11px;padding:9px 12px}
.gv2-acc-k{font-size:12px;font-weight:800;color:var(--dim)}
.gv2-acc-v{font-size:13px;font-weight:800;color:var(--ink);text-align:right}
.gv2-acc-ok{color:#9ff0b3}.gv2-acc-warn{color:#ffcb2e}.gv2-acc-off{color:var(--dim)}
.gv2-acc-note{font-size:11.5px;line-height:1.5;color:#8a5a12;background:rgba(200,134,26,.1);border:1px dashed rgba(200,134,26,.4);border-radius:11px;padding:9px 11px}
.gv2-acc-note b{color:var(--red)}
.gv2-acc-sec{display:flex;flex-direction:column;gap:6px}
.gv2-acc-h{font-size:11px;font-weight:900;letter-spacing:.4px;text-transform:uppercase;color:var(--dim)}
.gv2-acc-chars{display:grid;grid-template-columns:repeat(auto-fill,minmax(66px,1fr));gap:8px}
.gv2-acc-char{background:#161b22;border:2px solid var(--glass-line);border-radius:11px;padding:6px 4px 4px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;transition:.12s}
.gv2-acc-char:hover{border-color:rgba(255,255,255,.3)}
.gv2-acc-char.active{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset}
.gv2-acc-charpix{width:42px;height:42px;background-size:168px 168px;background-position:0 0;background-repeat:no-repeat;image-rendering:pixelated}
.gv2-acc-charname{font-size:10px;font-weight:800;color:var(--dim)}
.gv2-acc-char.active .gv2-acc-charname{color:var(--ink)}
.gv2-acc-char.locked{cursor:default;opacity:1}
.gv2-acc-char.locked:hover{border-color:var(--gold)}
.gv2-acc-charnote{font-size:10.5px;font-weight:700;line-height:1.45;color:var(--dim);margin-top:6px}
.gv2-acc-logout{appearance:none;border:1px solid rgba(31,111,235,.35);background:rgba(31,111,235,.08);color:var(--red);font-family:var(--sans);font-weight:800;font-size:13px;padding:12px;border-radius:11px;cursor:pointer;transition:.12s}
.gv2-acc-logout:hover{background:rgba(31,111,235,.18);color:var(--ink)}
.gv2-acc-logout:disabled{opacity:.6;cursor:not-allowed}
.gv2-acc-foot{text-align:center;font-size:10.5px;color:var(--dim);font-weight:700}

/* ── Online presence (Faz 3.3) ── */
.gv2-online{margin-top:6px;appearance:none;display:inline-flex;align-items:center;gap:5px;
  background:rgba(10,15,28,.72);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.15);
  color:#dfe6f5;font-family:var(--sans);font-weight:800;font-size:11px;padding:4px 9px;border-radius:9px;cursor:pointer}
.gv2-online:hover{color:#fff;border-color:rgba(255,255,255,.35)}
.gv2-pl-dot{width:8px;height:8px;border-radius:50%;background:#49d36a;box-shadow:0 0 6px rgba(73,211,106,.8);flex:0 0 auto;display:inline-block}
.gv2-pl{display:flex;flex-direction:column;gap:11px}
.gv2-pl-count{display:flex;align-items:center;gap:7px;font-family:var(--pixel);font-size:20px;color:var(--gold)}
.gv2-pl-count small{font-family:var(--sans);font-size:10.5px;font-weight:700;color:var(--dim)}
.gv2-pl-list{display:flex;flex-direction:column;gap:7px}
.gv2-pl-row{display:flex;align-items:center;gap:10px;background:#161b22;border:1px solid var(--glass-line);border-radius:11px;padding:8px 11px;cursor:pointer;transition:.12s}
.gv2-pl-row:hover:not(.you){border-color:rgba(255,255,255,.28)}
.gv2-pl-row.you{cursor:default;border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset}
.gv2-pl-ava{width:34px;height:34px;border-radius:9px;background:#0d1117;background-repeat:no-repeat;background-position:50% -2px;image-rendering:pixelated;flex:0 0 auto}
.gv2-pl-name{flex:1;min-width:0;font-weight:800;font-size:13px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gv2-pl-youtag{color:var(--gold);font-weight:900}
.gv2-pl-status{display:flex;align-items:center;gap:5px;font-size:10.5px;font-weight:800;color:#9ff0b3;white-space:nowrap}
.gv2-pl-loc{color:var(--dim)}
.gv2-pl-foot{text-align:center;font-size:10.5px;color:var(--dim);font-weight:700;margin-top:2px}
/* action sheet */
.gv2-pl-sheet{position:absolute;inset:0;z-index:5;display:flex;align-items:flex-end;justify-content:center;background:rgba(2,4,10,.5)}
.gv2-pl-sheet-card{width:100%;max-width:420px;background:linear-gradient(var(--cream),var(--cream2));border:1px solid var(--glass-line);border-top:2px solid var(--gold);border-radius:16px 16px 0 0;padding:12px;display:flex;flex-direction:column;gap:8px;animation:gv2up .2s ease}
.gv2-pl-sheet-h{font-family:var(--pixel);font-size:20px;color:var(--ink);text-align:center;padding:2px 0 6px}
.gv2-pl-act{appearance:none;border:1px solid var(--glass-line);background:#161b22;color:var(--ink);font-family:var(--sans);font-weight:800;font-size:13px;padding:11px;border-radius:11px;cursor:pointer;text-align:left;display:flex;align-items:center;gap:8px}
.gv2-pl-act small{margin-left:auto;color:var(--dim);font-weight:700;font-size:10.5px}
.gv2-pl-act:hover:not(.disabled):not(.cancel){border-color:var(--gold);color:var(--ink)}
.gv2-pl-act.disabled{opacity:.5;cursor:not-allowed}
.gv2-pl-act.cancel{justify-content:center;background:rgba(255,255,255,.06);color:var(--dim)}

/* ── Leaderboards (Faz 3.4, read-only) ── */
.gv2-lb-tabs{display:flex;gap:6px;margin-bottom:11px}
.gv2-lb-tab{flex:1;appearance:none;border:1px solid var(--glass-line);background:#161b22;color:var(--dim);font-family:var(--sans);font-weight:800;font-size:12px;padding:8px;border-radius:9px;cursor:pointer;transition:.12s}
.gv2-lb-tab:hover{color:var(--ink)}
.gv2-lb-tab.sel{background:linear-gradient(#ffd76a,#f0b429);color:#0c1020;border-color:transparent;box-shadow:0 2px 0 #b9871a}
.gv2-lb-list{display:flex;flex-direction:column;gap:6px}
.gv2-lb-msg{text-align:center;color:var(--dim);font-weight:700;font-size:13px;padding:22px 10px}
.gv2-lb-you-sum{font-size:12px;font-weight:800;color:#ffe6a3;background:rgba(255,214,106,.08);border:1px solid rgba(255,214,106,.3);border-radius:10px;padding:8px 11px;margin-bottom:4px}
.gv2-lb-you-sum.dim{color:var(--dim);background:rgba(255,255,255,.03);border-color:var(--glass-line)}
.gv2-lb-you-sum b{color:var(--gold)}
.gv2-lb-row{display:flex;align-items:center;gap:10px;background:#161b22;border:1px solid var(--glass-line);border-radius:11px;padding:8px 11px}
.gv2-lb-row.top{border-color:rgba(255,214,106,.32)}
.gv2-lb-row.top1{border-color:var(--gold);box-shadow:0 0 12px rgba(255,176,46,.25)}
.gv2-lb-row.you{box-shadow:0 0 0 1px var(--gold) inset;border-color:var(--gold)}
.gv2-lb-rank{min-width:30px;text-align:center;font-family:var(--pixel);font-size:20px;color:var(--dim)}
.gv2-lb-row.top1 .gv2-lb-rank,.gv2-lb-row.top2 .gv2-lb-rank,.gv2-lb-row.top3 .gv2-lb-rank{font-size:22px;color:var(--ink)}
.gv2-lb-ava{width:32px;height:32px;border-radius:9px;background:#0d1117;overflow:hidden;flex:0 0 auto;image-rendering:pixelated;background-repeat:no-repeat}
.gv2-lb-ava--letter{display:flex;align-items:center;justify-content:center;font-family:var(--pixel);font-size:17px;color:var(--ink)}
.gv2-lb-ava--img{display:flex;align-items:center;justify-content:center}
.gv2-lb-ava--img img{width:100%;height:100%;object-fit:cover;object-position:center top;image-rendering:pixelated;display:block}

/* ── Leaderboard player profile popup ── */
.gv2-lb-profile-overlay{position:fixed;inset:0;background:rgba(0,0,0,.65);display:flex;align-items:center;justify-content:center;z-index:9999;opacity:0;transition:opacity .18s;backdrop-filter:blur(3px)}
.gv2-lb-profile-overlay.open{opacity:1}
.gv2-lb-profile-card{background:#161b22;border:1px solid rgba(255,214,106,.35);border-radius:16px;padding:18px 16px 16px;width:min(340px,90vw);max-height:80vh;overflow-y:auto;position:relative;box-shadow:0 8px 40px rgba(0,0,0,.6);transform:translateY(8px);transition:transform .18s}
.gv2-lb-profile-overlay.open .gv2-lb-profile-card{transform:translateY(0)}
.gv2-lb-profile-close{position:absolute;top:10px;right:12px;background:none;border:none;color:var(--dim);font-size:18px;cursor:pointer;line-height:1;padding:2px 6px;border-radius:6px}
.gv2-lb-profile-close:hover{color:var(--ink);background:rgba(255,255,255,.07)}
.gv2-lb-prof-header{display:flex;align-items:center;gap:13px;margin-bottom:14px}
.gv2-lb-prof-ava{width:54px;height:54px;border-radius:12px;background:#0d1117;overflow:hidden;flex:0 0 54px;image-rendering:pixelated;background-repeat:no-repeat}
.gv2-lb-prof-ava--letter{display:flex;align-items:center;justify-content:center;font-family:var(--pixel);font-size:26px;color:var(--ink)}
.gv2-lb-prof-ava--img{display:flex;align-items:center;justify-content:center}
.gv2-lb-prof-ava--img img{width:100%;height:100%;object-fit:cover;object-position:center top;image-rendering:pixelated;display:block}
.gv2-lb-prof-hinfo{flex:1;min-width:0}
.gv2-lb-prof-name{font-weight:900;font-size:16px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gv2-lb-prof-stats{font-size:11px;font-weight:700;color:var(--dim);margin-top:3px}
.gv2-lb-prof-score{font-family:var(--pixel);font-size:15px;color:var(--gold);margin-top:4px}
.gv2-lb-prof-team-label{font-size:11px;font-weight:800;color:var(--dim);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}
.gv2-lb-prof-team{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.gv2-lb-prof-mon{background:#0d1117;border:1px solid var(--glass-line);border-radius:10px;padding:8px 4px 7px;display:flex;flex-direction:column;align-items:center;gap:3px;text-align:center}
.gv2-lb-prof-spr-wrap{position:relative;width:48px;height:48px;flex:0 0 48px}
.gv2-lb-prof-spr{width:48px;height:48px;image-rendering:pixelated;object-fit:contain;display:block}
.gv2-lb-prof-badge{position:absolute;top:-4px;right:-4px;font-size:12px;line-height:1}
.gv2-lb-prof-mname{font-size:10.5px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;text-align:center}
.gv2-lb-prof-mlv{font-size:10px;font-weight:700;color:var(--dim)}
.gv2-lb-prof-type{border-radius:20px;padding:1px 7px;font-size:9.5px;font-weight:800;color:#fff}
.gv2-lb-prof-noteam{grid-column:1/-1;text-align:center;color:var(--dim);font-size:12px;font-weight:700;padding:14px 0}
.gv2-lb-info{flex:1;min-width:0}
.gv2-lb-name{font-weight:800;font-size:13px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gv2-lb-youtag{color:var(--gold);font-weight:900}
.gv2-lb-meta{font-size:10.5px;font-weight:700;color:var(--dim)}
.gv2-lb-val{font-family:var(--pixel);font-size:19px;color:var(--gold);text-align:right;white-space:nowrap}
.gv2-lb-val small{font-family:var(--sans);font-size:9.5px;font-weight:800;color:var(--dim);margin-left:3px}
.gv2-lb-season{text-align:center;font-size:10.5px;color:var(--dim);font-weight:700;margin-top:6px}

/* ── Updates + Roadmap (Faz 3.5, client-only) ── */
.gv2-up{display:flex;flex-direction:column;gap:12px}
.gv2-up-tabs{display:flex;gap:6px}
.gv2-up-tab{flex:1;appearance:none;border:1px solid var(--glass-line);background:#161b22;color:var(--dim);font-family:var(--sans);font-weight:800;font-size:12px;padding:9px;border-radius:9px;cursor:pointer;transition:.12s}
.gv2-up-tab:hover{color:var(--ink)}
.gv2-up-tab.sel{background:linear-gradient(#ffd76a,#f0b429);color:#0c1020;border-color:transparent;box-shadow:0 2px 0 #b9871a}
/* updates */
.gv2-up-hero{background:linear-gradient(120deg,#1a2440,#141c34);border:1px solid var(--glass-line);border-radius:13px;padding:12px 14px}
.gv2-up-eyebrow{font-size:10px;font-weight:900;letter-spacing:1px;color:var(--gold)}
.gv2-up-hero h3{font-family:var(--pixel);font-size:22px;color:var(--ink);margin:4px 0 5px}
.gv2-up-hero p{font-size:11.5px;line-height:1.5;color:var(--dim)}
.gv2-up-list{display:flex;flex-direction:column;gap:9px}
.gv2-up-card{display:grid;grid-template-columns:52px 1fr;gap:11px;background:#161b22;border:1px solid var(--glass-line);border-left:4px solid var(--uc,#888);border-radius:12px;padding:11px 12px}
.gv2-up-date{display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--uc,#888);border-radius:9px;color:#fff;padding:6px 0;line-height:1.05}
.gv2-up-date span{font-size:10px;font-weight:800;opacity:.9}
.gv2-up-date b{font-family:var(--pixel);font-size:22px}
.gv2-up-cbody h4{font-family:var(--pixel);font-size:18px;color:var(--ink);margin:0 0 4px}
.gv2-up-cbody p{font-size:11.5px;line-height:1.55;color:var(--ink);margin:0 0 7px}
.gv2-up-cbody p b{color:var(--ink)}
.gv2-up-tags{display:flex;flex-wrap:wrap;gap:5px}
.gv2-up-tag{font-size:9.5px;font-weight:800;color:var(--uc,#aaa);background:rgba(255,255,255,.06);border:1px solid var(--glass-line);border-radius:6px;padding:2px 7px}
/* roadmap timeline */
.gv2-rm-intro{font-size:12px;line-height:1.55;color:var(--ink);background:rgba(255,255,255,.03);border:1px dashed var(--glass-line);border-radius:11px;padding:10px 12px}
.gv2-rm-intro b{color:var(--gold)}
.gv2-rm-timeline{display:flex;flex-direction:column;gap:11px;margin-top:11px}
.gv2-rm-q{display:grid;grid-template-columns:48px 1fr;gap:10px}
.gv2-rm-node{background:var(--rmc,#888);color:#06121f;font-family:var(--pixel);font-size:15px;font-weight:900;text-align:center;border-radius:10px;padding:8px 2px;align-self:start;line-height:1.05}
.gv2-rm-body{background:#161b22;border:1px solid var(--glass-line);border-left:3px solid var(--rmc,#888);border-radius:11px;padding:10px 12px}
.gv2-rm-head{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin-bottom:7px}
.gv2-rm-pill{font-size:9.5px;font-weight:900;letter-spacing:.4px;color:#fff;background:var(--rmc,#888);border-radius:6px;padding:2px 7px}
.gv2-rm-title{font-family:var(--pixel);font-size:17px;color:var(--ink)}
.gv2-rm-status{margin-left:auto;font-size:9.5px;font-weight:900;border-radius:6px;padding:2px 8px;white-space:nowrap}
.gv2-rm-status.done{background:rgba(73,211,106,.18);color:#9ff0b3;border:1px solid rgba(73,211,106,.4)}
.gv2-rm-status.progress{background:rgba(255,203,46,.16);color:#ffcb2e;border:1px solid rgba(255,203,46,.4)}
.gv2-rm-status.planned{background:rgba(255,255,255,.06);color:var(--dim);border:1px solid var(--glass-line)}
.gv2-rm-list{margin:0;padding-left:17px;display:flex;flex-direction:column;gap:4px}
.gv2-rm-list li{font-size:11.5px;line-height:1.5;color:var(--ink)}
.gv2-rm-list li i{color:var(--gold);font-style:italic}
.gv2-rm-disc{margin-top:12px;font-size:11px;line-height:1.55;color:#ffd9b0;background:rgba(255,176,46,.08);border:1px solid rgba(255,176,46,.32);border-radius:11px;padding:10px 12px}
.gv2-rm-disc b{color:#ffcb2e}

/* ── Shop: Coin + Token (Faz 3.6) ── */
.gv2-shop{display:flex;flex-direction:column;gap:12px}
.gv2-shop-inv{display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:#161b22;border:1px solid var(--glass-line);border-radius:11px;padding:9px 12px}
.gv2-shop-coins{font-family:var(--pixel);font-size:20px;color:var(--gold)}
.gv2-shop-inv-x{font-size:11px;font-weight:800;color:var(--dim)}
.gv2-shop-dim{color:var(--dim);font-weight:700;font-size:12px}
.gv2-shop-tabs{display:flex;gap:6px}
.gv2-shop-tab{flex:1;appearance:none;border:1px solid var(--glass-line);background:#161b22;color:var(--dim);font-family:var(--sans);font-weight:800;font-size:12px;padding:9px;border-radius:9px;cursor:pointer;transition:.12s}
.gv2-shop-tab:hover{color:var(--ink)}
.gv2-shop-tab.sel{background:linear-gradient(#ffd76a,#f0b429);color:#0c1020;border-color:transparent;box-shadow:0 2px 0 #b9871a}
.gv2-shop-msg{text-align:center;color:var(--dim);font-weight:700;font-size:13px;padding:22px 10px}
.gv2-shop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:9px}
.gv2-shop-card{background:#161b22;border:1px solid var(--glass-line);border-radius:13px;padding:10px 8px 9px;display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center}
.gv2-shop-card.token{border-color:rgba(157,120,221,.32)}
.gv2-shop-ic{font-size:28px;line-height:1;height:44px;display:flex;align-items:center;justify-content:center}
.gv2-shop-itemimg{width:42px;height:42px;object-fit:contain;image-rendering:pixelated}
.gv2-shop-emoji{font-size:28px;line-height:1}
.gv2-shop-nm{font-size:11px;font-weight:800;color:var(--ink);min-height:28px;display:flex;align-items:center}
.gv2-shop-price{font-family:var(--pixel);font-size:15px}
.gv2-shop-price.coin{color:var(--gold)}
.gv2-shop-price.token{color:#c9a8ff;font-size:12.5px}
.gv2-shop-reqw{font-size:9px;font-weight:800;color:#c9a8ff;background:rgba(157,120,221,.14);border:1px solid rgba(157,120,221,.34);border-radius:6px;padding:1px 6px}
.gv2-shop-buy{appearance:none;border:0;border-radius:9px;font-family:var(--sans);font-weight:800;font-size:12px;padding:8px 10px;width:100%;cursor:pointer;background:linear-gradient(#ffd76a,#f0b429);color:#0c1020;box-shadow:0 2px 0 #b9871a;transition:.12s}
.gv2-shop-buy:hover:not(:disabled){filter:brightness(1.05)}
.gv2-shop-buy:disabled{background:#2a3146;color:#5a6480;box-shadow:none;cursor:not-allowed}
.gv2-shop-note{font-size:10.5px;line-height:1.5;color:var(--dim);text-align:center;margin-top:4px}
.gv2-shop-warn{font-size:11.5px;line-height:1.55;color:#d8c8ff;background:rgba(157,120,221,.1);border:1px solid rgba(157,120,221,.34);border-radius:11px;padding:10px 12px;margin-bottom:10px}
.gv2-shop-warn b{color:var(--ink)}
.gv2-shop-card{cursor:pointer}
.gv2-shop-card:hover{border-color:rgba(255,215,106,.4)}
.gv2-shop-card.gv2-shop-card--sel{border-color:#ffd76a;background:#1a1408}
.gv2-shop-strip{border-top:1px solid var(--glass-line);padding:10px 12px;background:#0d1117;min-height:62px;display:flex;align-items:center;border-radius:0 0 11px 11px;margin-top:-12px}
.gv2-shop-strip-empty{color:var(--dim);font-size:11px;text-align:center;width:100%;font-weight:700}
.gv2-shop-strip-content{display:flex;align-items:center;gap:10px;width:100%}
.gv2-shop-strip-icon{width:40px;height:40px;flex:0 0 40px;object-fit:contain;image-rendering:pixelated}
.gv2-shop-strip-emoji{font-size:24px;width:40px;height:40px;flex:0 0 40px;display:flex;align-items:center;justify-content:center}
.gv2-shop-strip-info{flex:1;min-width:0}
.gv2-shop-strip-name{font-size:12.5px;font-weight:800;color:var(--ink);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gv2-shop-strip-desc{font-size:10.5px;color:var(--dim);line-height:1.45}
.gv2-shop-strip-buybtn{flex:0 0 auto;appearance:none;border:0;border-radius:9px;font-family:var(--sans);font-weight:800;font-size:11px;padding:8px 12px;cursor:pointer;background:linear-gradient(#ffd76a,#f0b429);color:#0c1020;box-shadow:0 2px 0 #b9871a;white-space:nowrap}
.gv2-shop-strip-buybtn:disabled{background:#2a3146;color:#5a6480;box-shadow:none;cursor:not-allowed}

/* ── Battle Hub (Faz 3.7) ── */
.gv2-bh{display:flex;flex-direction:column;gap:11px}
.gv2-bh-tabs{display:flex;gap:6px}
.gv2-bh-tab{flex:1;appearance:none;border:1px solid var(--glass-line);background:#161b22;color:var(--dim);font-family:var(--sans);font-weight:800;font-size:12px;padding:9px 4px;border-radius:9px;cursor:pointer;transition:.12s}
.gv2-bh-tab:hover{color:var(--red)}
.gv2-bh-tab.sel{background:linear-gradient(var(--red),var(--red2));color:#fff;border-color:transparent;box-shadow:0 2px 0 #0f3d8a}
.gv2-bh-practice{font-size:11px;line-height:1.5;color:#8a5a12;background:rgba(200,134,26,.1);border:1px solid rgba(200,134,26,.35);border-radius:10px;padding:8px 11px}
.gv2-bh-practice b{color:var(--gold)}
.gv2-bh-msg{text-align:center;color:var(--dim);font-weight:700;font-size:13px;padding:22px 10px}
.gv2-bh-badges-h{font-family:var(--pixel);font-size:18px;color:var(--gold);display:flex;align-items:center;gap:8px}
.gv2-bh-badges-h small{font-family:var(--sans);font-size:10.5px;font-weight:700;color:var(--dim)}
.gv2-bh-badges{display:grid;grid-template-columns:repeat(auto-fill,minmax(40px,1fr));gap:7px;margin:8px 0 4px}
.gv2-bh-badge{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:18px;background:#161b22;border:1px solid var(--glass-line);border-radius:9px;opacity:.45;filter:grayscale(1)}
.gv2-bh-badge.got{opacity:1;filter:none;border-color:var(--gold);box-shadow:0 0 8px rgba(255,176,46,.3)}
.gv2-bh-badge img{width:78%;height:78%;object-fit:contain}
.gv2-bh-list{display:flex;flex-direction:column;gap:8px}
.gv2-bh-card{display:flex;align-items:center;gap:10px;background:#161b22;border:1px solid var(--glass-line);border-left:4px solid var(--bc,#1f6feb);border-radius:12px;padding:9px 11px;box-shadow:0 2px 8px rgba(0,0,0,.25)}
.gv2-bh-spr{width:46px;height:46px;image-rendering:pixelated;flex:0 0 auto}
.gv2-bh-cinfo{flex:1;min-width:0}
.gv2-bh-cname{font-family:var(--pixel);font-size:17px;color:var(--ink)}
.gv2-bh-cdesc{font-size:10.5px;font-weight:700;color:var(--dim);line-height:1.4}
.gv2-bh-team{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.gv2-bh-mon{font-size:9.5px;font-weight:700;color:var(--ink);background:rgba(31,111,235,.06);border:1px solid var(--glass-line);border-radius:5px;padding:1px 5px}
.gv2-bh-mon b{color:var(--gold)}
.gv2-bh-fight{flex:0 0 auto;appearance:none;border:0;border-radius:9px;font-family:var(--sans);font-weight:800;font-size:12px;padding:9px 14px;cursor:pointer;background:linear-gradient(#ffd76a,#f0b429);color:#0c1020;box-shadow:0 2px 0 #b9871a}
.gv2-bh-fight:hover{filter:brightness(1.05)}

/* ── Admin (Faz 3.8, read-only) ── */
.gv2-adm-login{display:flex;flex-direction:column;gap:10px;padding:14px 6px;max-width:340px;margin:0 auto}
.gv2-adm-h{font-family:var(--pixel);font-size:24px;color:var(--gold)}
.gv2-adm-sub{font-size:11.5px;color:var(--dim);line-height:1.5}
.gv2-adm-login input,.gv2-adm-inrow input{appearance:none;background:#10182a;border:1px solid var(--glass-line);color:#fff;font-family:var(--sans);font-weight:700;font-size:13px;padding:11px 12px;border-radius:10px;width:100%}
.gv2-adm-login input:focus,.gv2-adm-inrow input:focus{outline:none;border-color:var(--gold)}
.gv2-adm-btn{appearance:none;border:0;border-radius:10px;font-family:var(--sans);font-weight:800;font-size:13px;padding:11px;cursor:pointer;background:linear-gradient(#ffd76a,#f0b429);color:#0c1020;box-shadow:0 3px 0 #b9871a}
.gv2-adm-btn.sm{padding:9px 14px;box-shadow:0 2px 0 #b9871a}
.gv2-adm-btn:disabled{opacity:.6;cursor:not-allowed}
.gv2-adm-err{font-size:12px;font-weight:700;color:#ffb3b3;background:rgba(255,77,77,.12);border:1px solid rgba(255,77,77,.4);border-radius:9px;padding:8px 11px}
.gv2-adm{display:flex;flex-direction:column;gap:11px}
.gv2-adm-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.gv2-adm-badge{font-size:11px;font-weight:900;color:#9ff0b3;background:rgba(73,211,106,.12);border:1px solid rgba(73,211,106,.4);border-radius:8px;padding:4px 9px}
.gv2-adm-out{appearance:none;border:1px solid var(--glass-line);background:rgba(255,255,255,.06);color:var(--dim);font-weight:800;font-size:11.5px;padding:6px 12px;border-radius:9px;cursor:pointer}
.gv2-adm-out:hover{color:#fff}
.gv2-adm-tabs{display:flex;flex-wrap:wrap;gap:5px}
.gv2-adm-tab{appearance:none;border:1px solid var(--glass-line);background:#10182a;color:var(--dim);font-family:var(--sans);font-weight:800;font-size:11.5px;padding:7px 12px;border-radius:9px;cursor:pointer}
.gv2-adm-tab:hover{color:#fff}
.gv2-adm-tab.sel{background:linear-gradient(#ffd76a,#f0b429);color:#0c1020;border-color:transparent}
.gv2-adm-msg{text-align:center;color:var(--dim);font-weight:700;font-size:12.5px;padding:18px 10px}
.gv2-adm-cards{display:flex;flex-direction:column;gap:6px}
.gv2-adm-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#10182a;border:1px solid var(--glass-line);border-radius:9px;padding:8px 12px;font-size:12.5px}
.gv2-adm-row span{color:var(--dim);font-weight:700}.gv2-adm-row b{color:#fff;text-align:right}
.gv2-adm-listh{font-family:var(--pixel);font-size:16px;color:var(--gold);margin-top:8px;display:flex;align-items:center;gap:7px}
.gv2-adm-listh small{font-family:var(--sans);font-size:10.5px;font-weight:700;color:var(--dim)}
.gv2-adm-list{display:flex;flex-direction:column;gap:5px}
.gv2-adm-li{background:#10182a;border:1px solid var(--glass-line);border-radius:8px;padding:7px 11px;font-size:11.5px;color:#dfe6f5}
.gv2-adm-li b{color:#fff}.gv2-adm-li small{color:var(--dim)}
.gv2-adm-li-d{font-size:10px;color:var(--dim);margin-top:2px;word-break:break-word}
.gv2-adm-inrow{display:flex;gap:7px;margin-bottom:9px}
.gv2-adm-inrow input{flex:1}

/* chat overlay */
.gv2-chat{max-height:62vh}
.gv2-chat-list{flex:1;overflow:auto;padding:8px 14px;display:flex;flex-direction:column;gap:6px}
.gv2-msg{background:#121a2c;border:1px solid var(--glass-line);border-radius:11px;padding:6px 10px;font-size:13.5px;max-width:85%}
.gv2-msg b{color:var(--gold);margin-right:5px}
.gv2-msg.me{align-self:flex-end;background:#1c2c1e;border-color:#3a6}
.gv2-chat-bar{display:flex;gap:8px;padding:8px 14px}
.gv2-chat-bar input{flex:1;background:#0a0e18;border:1px solid var(--glass-line);border-radius:10px;color:#fff;padding:9px 12px;font-family:var(--sans);font-size:14px}
.gv2-chat-bar button{border:0;background:var(--gold);color:#10131c;font-weight:800;border-radius:10px;padding:0 16px;cursor:pointer}

/* toast */
.gv2-toast{position:absolute;left:50%;top:calc(56px + env(safe-area-inset-top));transform:translate(-50%,-8px);z-index:35;
  background:var(--glass);border:1px solid var(--glass-line);border-radius:11px;padding:7px 16px;font-family:var(--pixel);font-size:19px;color:#fff;
  opacity:0;pointer-events:none;transition:.2s;backdrop-filter:blur(8px)}
.gv2-toast.show{opacity:1;transform:translate(-50%,0)}
.gv2-proto-badge{position:absolute;left:50%;top:calc(38px + env(safe-area-inset-top));transform:translateX(-50%);z-index:15;
  font-family:var(--pixel);font-size:13px;letter-spacing:1px;color:rgba(255,255,255,.5);background:rgba(0,0,0,.3);padding:2px 10px;border-radius:20px;pointer-events:none}

/* region intro — brief elegant banner on map enter (fades in/out, never blocks touch) */
.gv2-region-intro{position:absolute;left:50%;top:calc(86px + env(safe-area-inset-top));transform:translate(-50%,6px);z-index:18;
  display:flex;flex-direction:column;align-items:center;gap:2px;pointer-events:none;opacity:0;transition:opacity .5s ease,transform .5s ease}
.gv2-region-intro.show{opacity:1;transform:translate(-50%,0);transition:opacity .35s ease,transform .35s ease}
.gv2-ri-name{font-family:var(--pixel);font-size:34px;line-height:1;color:#fff;letter-spacing:1px;text-shadow:0 2px 6px rgba(0,0,0,.6),0 0 2px rgba(0,0,0,.8)}
.gv2-ri-sub{font-size:12px;font-weight:800;letter-spacing:.5px;color:var(--gold);text-shadow:0 1px 3px rgba(0,0,0,.7)}

/* ── desktop ── */
@media (min-width:721px){
  .gv2-mobile{display:none!important}
  .gv2-ri-name{font-size:42px}
  .gv2-dockbtn{min-width:66px;padding:7px 14px}
  .gv2-dockbtn .gv2-ic{font-size:21px}.gv2-dockbtn .gv2-lbl{font-size:11px}
  .gv2-region{font-size:19px}.gv2-player{font-size:17px}
  .gv2-panel,.gv2-chat{left:50%;right:auto;bottom:auto;top:50%;transform:translate(-50%,-50%);
    width:min(640px,92vw);max-height:80vh;border:3px solid var(--red);border-radius:18px;animation:gv2pop .2s ease}
  .gv2-chat{width:min(440px,92vw)}
  @keyframes gv2pop{from{opacity:0;transform:translate(-50%,-46%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
  .gv2-skilldock{bottom:calc(14px + env(safe-area-inset-bottom))}
  /* desktop HP boxes — diagonal corners (foe top-right, player bottom-left) */
  .gv2-hp-enemy{right:calc(14px + env(safe-area-inset-right));top:calc(58px + env(safe-area-inset-top));left:auto;bottom:auto;transform:none}
  .gv2-hp-player{left:calc(14px + env(safe-area-inset-left));bottom:calc(14px + env(safe-area-inset-bottom));right:auto;top:auto;transform:none}
}
/* ── mobile polish: lighter glass + tighter spacing so the HUD/dock don't cover the map ── */
@media (max-width:720px){
  .gv2-top{background:rgba(16,22,38,.74);padding:4px 9px;box-shadow:0 4px 14px rgba(0,0,0,.32)}
  .gv2-dock{background:rgba(13,17,23,.92);gap:1px;padding:4px;box-shadow:0 6px 20px var(--warm-shadow)}
  .gv2-dockbtn{min-width:44px;padding:6px 8px}
  .gv2-region{font-size:17px}
  .gv2-region-intro{top:calc(78px + env(safe-area-inset-top))}.gv2-ri-name{font-size:25px;white-space:nowrap}
  .gv2-actionbtn{opacity:.92}
  .gv2-brand{font-size:16px}
  .gv2-region{font-size:15px}.gv2-player{font-size:14px}
  .gv2-wallet{font-size:10px;gap:6px}
  /* phones: widen the skill dock so the move buttons stay tappable (still bottom-right) */
  .gv2-skilldock{width:min(420px,84vw)}
}
/* very small phones — keep the dock from overflowing */
@media (max-width:380px){
  .gv2-dockbtn{min-width:40px;padding:6px}.gv2-dockbtn .gv2-lbl{display:none}
  .gv2-region{font-size:16px}
  .gv2-brand{font-size:15px}
}
/* ── PORTRAIT battle layout (matches the JS ARENA.mobile pick: H > W·1.05 ⇔ aspect ≤ 20/21).
      The player mon's feet sit at ~63% of height (ARENA.mobile.plyrMon.feet). Put its HP plate
      to the RIGHT of the sprite and tuck the move buttons right under the mon so there's no dead
      gap between the Craterkin and the dock. Placed last → overrides the base / width-based rules. ── */
@media (max-aspect-ratio: 20/21){
  .gv2-hp-player{top:46%;right:calc(10px + env(safe-area-inset-right));left:auto;bottom:auto;transform:none}
  .gv2-skilldock{top:64%;left:50%;right:auto;bottom:auto;transform:translateX(-50%);width:min(440px,94vw)}
}

/* ── standalone Auth + Onboarding gate — visual design ported VERBATIM from the old
      main-site login (animated gradient + drifting Craterkin + white card + Crater TV).
      All scoped under .gv2-auth so it never touches the in-game UI. ── */
.gv2-auth{position:fixed;inset:0;z-index:9000;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:24px;
  background:linear-gradient(125deg,#2ec5ff 0%,#5d8bff 26%,#9b6bff 50%,#ff5e9e 74%,#ffb347 100%);background-size:220% 220%;
  animation:gv2authHue 18s ease-in-out infinite;font-family:'Nunito',sans-serif}
.gv2-auth[hidden]{display:none}
@keyframes gv2authHue{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}
.gv2-auth::before,.gv2-auth::after{content:'';position:absolute;border-radius:50%;filter:blur(60px);pointer-events:none;z-index:0}
.gv2-auth::before{width:520px;height:520px;background:#ffe34d;opacity:.5;top:-160px;right:-120px}
.gv2-auth::after{width:460px;height:460px;background:#37ffd0;opacity:.38;bottom:-180px;left:-120px}
/* drifting Craterkin + Capture Orbs */
.gv2-auth .bg-balls{display:block;position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:1}
.gv2-auth .bg-ball{position:absolute;border-radius:50%;border:2px solid #222;box-shadow:0 6px 14px rgba(0,0,0,.25);animation:gv2authFloat linear infinite;
  background:radial-gradient(circle at 50% 50%,#fff 0 16%,#222 16% 22%,transparent 22%),linear-gradient(#ff4d4d 0 48%,#fff 52% 100%)}
.gv2-auth .bg-mon{position:absolute;image-rendering:pixelated;filter:drop-shadow(0 8px 10px rgba(0,0,0,.28));animation:gv2authFloat linear infinite}
.gv2-auth .bg-ballimg{position:absolute;image-rendering:pixelated;filter:drop-shadow(0 5px 8px rgba(0,0,0,.28));animation:gv2authFloat linear infinite}
@keyframes gv2authFloat{from{transform:translateY(115vh) rotate(0deg);opacity:0}8%{opacity:1}92%{opacity:1}to{transform:translateY(-25vh) rotate(360deg);opacity:0}}
/* white auth card with red header */
.gv2-auth .auth-card{background:rgba(245,245,245,.97);border:1px solid #c8c8c8;border-radius:14px;padding:0 20px 22px;width:360px;max-width:calc(100vw - 32px);
  box-shadow:0 18px 50px rgba(0,0,0,.35),inset 0 0 0 3px #fff;position:relative;z-index:2;color:#222}
.gv2-auth .logo-wrap{text-align:center;margin:0 -20px 18px;padding:16px 8px 13px;background:linear-gradient(#ff3a3a,#c40000);border-bottom:5px solid #ffd34d;border-radius:14px 14px 0 0}
.gv2-auth .logo-craterkin{font-family:'Press Start 2P',monospace;display:block;font-size:17px;color:#ffe34d;text-shadow:3px 3px 0 #1c47b3,-1px -1px 0 #1c47b3;margin-bottom:9px}
.gv2-auth .logo-world{font-family:'Press Start 2P',monospace;display:block;font-size:9px;color:#fff;text-shadow:2px 2px 0 #333;letter-spacing:1px}
.gv2-auth .logo-divider{height:9px;background:#d7d7d7;border:1px solid #c0c0c0;margin:0 0 16px}
.gv2-auth .auth-sub{text-align:center;color:#555;font-size:11px;line-height:1.5;margin-bottom:16px}
.gv2-auth .form-group{margin-bottom:12px}
.gv2-auth .form-label{display:block;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:1px;color:#7d0000;margin-bottom:5px}
.gv2-auth .form-input{width:100%;box-sizing:border-box;background:#fff;border:1px solid #aaa;border-radius:3px;padding:8px 10px;color:#222;font-family:'Nunito',sans-serif;font-size:13px;outline:none;transition:border-color .2s,box-shadow .2s}
.gv2-auth .form-input:focus{border-color:#c82200;box-shadow:0 0 0 3px rgba(200,34,0,.15)}
.gv2-auth .form-input:disabled{opacity:.6}
.gv2-auth .btn-start{width:100%;background:linear-gradient(#ffcf33,#ff9e00);border:none;border-radius:10px;padding:12px;color:#7a3b00;font-family:'Press Start 2P',monospace;font-size:9px;cursor:pointer;box-shadow:0 4px 0 #b96b00;transition:all .15s;margin-top:6px}
.gv2-auth .btn-start:hover{filter:brightness(1.06)}
.gv2-auth .btn-start:active{transform:translateY(2px);box-shadow:0 2px 0 #b96b00}
.gv2-auth .btn-start:disabled{opacity:.6;cursor:default}
.gv2-auth .auth-link{text-align:center;margin-top:14px;font-size:11px;color:#555}
.gv2-auth .auth-link a{color:#9d0000;text-decoration:none;font-weight:900;cursor:pointer}
.gv2-auth .auth-link a:hover{color:#d00000}
.gv2-auth .gv2-auth-msg{min-height:15px;font-size:11px;font-weight:800;text-align:center;color:#777;margin-top:8px}
.gv2-auth .gv2-auth-msg.err{color:#c40000}.gv2-auth .gv2-auth-msg.ok{color:#177a3a}
/* starter picker (inside the white card) */
/* setup character picker (brand-new players: character + starter) — reuses .gv2-acc-charpix for the sprite */
.gv2-auth .gv2-setup-chars{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:2px 0 4px}
.gv2-auth .gv2-setup-char{display:flex;align-items:center;justify-content:center;background:#fff;border:2px solid #d8d8d8;border-radius:12px;padding:7px;cursor:pointer;line-height:0;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease}
.gv2-auth .gv2-setup-char:hover{transform:translateY(-2px);border-color:#c40000}
.gv2-auth .gv2-setup-char.sel{border-color:#c40000;box-shadow:0 0 0 2px #c40000 inset}
.gv2-auth .gv2-starter-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:2px 0}
.gv2-auth .gv2-starter{display:flex;flex-direction:column;align-items:center;gap:3px;background:#fff;border:2px solid #d8d8d8;border-radius:12px;padding:10px 6px;cursor:pointer;transition:transform .12s ease,border-color .12s ease}
.gv2-auth .gv2-starter:hover{transform:translateY(-2px);border-color:#c40000}
.gv2-auth .gv2-starter img{width:64px;height:64px;object-fit:contain;image-rendering:pixelated}
.gv2-auth .gv2-starter-n{font-size:13px;font-weight:900;color:#222}
.gv2-auth .gv2-starter-t{font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.5px;color:#fff;padding:1px 8px;border-radius:8px}
.gv2-auth .t-grass{background:#5fbf5f}.gv2-auth .t-fire{background:#f08030}.gv2-auth .t-water{background:#4f9fe0}.gv2-auth .t-electric{background:#e0c020;color:#3a2a00}
/* Crater TV retro video player (ported verbatim) */
.gv2-auth .login-video-card{position:absolute;right:22px;bottom:18px;z-index:2;width:260px;font-family:'VT323',monospace;user-select:none}
.gv2-auth .crater-tv-frame{position:relative;aspect-ratio:16/9;background:#05060a;border:3px solid #f4c430;border-radius:8px;box-shadow:0 8px 26px rgba(0,0,0,.5),inset 0 0 0 2px #7a0d12;overflow:hidden;image-rendering:pixelated}
.gv2-auth .crater-tv-screen{position:absolute;inset:0}
.gv2-auth .crater-video{width:100%;height:100%;object-fit:cover;display:block;background:#05060a}
.gv2-auth .crater-tv-scanlines{position:absolute;inset:0;z-index:2;pointer-events:none;background:repeating-linear-gradient(rgba(0,0,0,0) 0 2px,rgba(0,0,0,.16) 2px 3px)}
.gv2-auth .crater-tv-glow{position:absolute;inset:0;z-index:2;pointer-events:none;background:radial-gradient(120% 75% at 50% -5%,rgba(255,255,255,.10),transparent 60%);box-shadow:inset 0 0 24px rgba(0,0,0,.55)}
.gv2-auth .crater-tv-header{position:absolute;top:0;left:0;right:0;z-index:4;display:flex;align-items:center;gap:6px;padding:2px 8px;font-size:16px;letter-spacing:2px;color:#ffe9a8;pointer-events:none;background:linear-gradient(rgba(157,0,0,.92),rgba(110,0,0,0));text-shadow:0 1px 0 rgba(0,0,0,.7)}
.gv2-auth .crater-tv-dot{width:7px;height:7px;border-radius:50%;background:#f4c430;box-shadow:0 0 6px #f4c430}
.gv2-auth .crater-tv-live{margin-left:auto;color:#ff6a6a;font-size:12px;letter-spacing:1px;animation:gv2craterBlink 1.6s steps(2,end) infinite}
@keyframes gv2craterBlink{50%{opacity:.3}}
.gv2-auth .crater-tv-offline{position:absolute;inset:0;z-index:5;display:none;flex-direction:column;gap:4px;align-items:center;justify-content:center;text-align:center;color:#ffd76a;font-size:18px;letter-spacing:1px;background:repeating-linear-gradient(45deg,#14141c 0 8px,#1c1c26 8px 16px)}
.gv2-auth .crater-tv-offline span{font-size:24px}
.gv2-auth .login-video-card.crater-tv-is-offline .crater-tv-offline{display:flex}
.gv2-auth .login-video-card.crater-tv-is-offline .crater-video-controls{display:none}
.gv2-auth .crater-video-controls{position:absolute;bottom:0;left:0;right:0;z-index:4;display:flex;align-items:center;gap:5px;padding:3px 7px;background:linear-gradient(rgba(0,0,0,0),rgba(5,8,16,.92))}
.gv2-auth .crater-video-button{background:#2a3050;color:#ffe9a8;border:1px solid #f4c430;border-radius:4px;width:22px;height:20px;font-size:11px;line-height:1;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;font-family:inherit}
.gv2-auth .crater-video-button:hover{background:#3a4570}
.gv2-auth .crater-video-button:active{transform:translateY(1px)}
.gv2-auth .crater-video-progress{flex:1;height:7px;background:#05060a;border:1px solid #5a4a10;border-radius:4px;cursor:pointer;overflow:hidden}
.gv2-auth .crater-video-progress>span{display:block;height:100%;width:0%;background:linear-gradient(90deg,#f4c430,#ff8a00)}
.gv2-auth .crater-video-time{color:#ffd76a;font-size:13px;min-width:28px;text-align:right}
@media (max-width:720px){
  .gv2-auth{align-items:center;padding:16px}
  .gv2-auth .login-video-card{right:12px;bottom:12px;width:min(46vw,180px)}
  .gv2-auth .crater-tv-header{font-size:13px;letter-spacing:1px;padding:1px 6px}
  .gv2-auth .crater-tv-live{font-size:10px}
  .gv2-auth .crater-video-controls{gap:4px;padding:2px 5px}
  .gv2-auth .crater-video-button{width:19px;height:17px;font-size:10px}
  .gv2-auth .crater-video-time{display:none}
}

/* ── Evolution modal — ported VERBATIM from the old evolve-modal (scoped under .gv2-evolve) ── */
.gv2-evolve{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:9100;display:flex;align-items:center;justify-content:center;padding:18px;font-family:'Nunito',sans-serif}
.gv2-evolve[hidden]{display:none}
.gv2-evolve .evolve-card{background:#e9e9e9;border-radius:8px;max-width:660px;width:100%;overflow:hidden;box-shadow:0 18px 50px rgba(0,0,0,.45);border:1px solid #b5b5b5}
.gv2-evolve .evolve-header{background:linear-gradient(#c0392b,#a52f22);color:#fff;font-weight:900;font-size:16px;text-align:center;padding:11px 14px;position:relative;letter-spacing:.3px}
.gv2-evolve .evolve-close{position:absolute;top:8px;right:10px;background:rgba(255,255,255,.18);border:0;color:#fff;width:24px;height:24px;border-radius:50%;cursor:pointer;font-weight:900}
.gv2-evolve .evolve-info{background:#dce6f5;color:#3b5b8c;font-size:13px;text-align:center;padding:9px 14px;display:flex;align-items:center;justify-content:center;gap:9px}
.gv2-evolve .evolve-info-icon{background:#3b5b8c;color:#fff;width:18px;height:18px;border-radius:50%;font-size:11px;font-weight:900;display:inline-flex;align-items:center;justify-content:center;font-style:italic}
.gv2-evolve .evolve-body{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:22px 18px}
.gv2-evolve .evolve-side{flex-shrink:0}
.gv2-evolve .evolve-ball{width:120px;height:120px;border-radius:50%;background:radial-gradient(circle at 50% 38%,#fff 0 48%,#cfcfcf 49% 100%);border:3px solid #9a9a9a;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 -6px 14px rgba(0,0,0,.14);position:relative}
.gv2-evolve .evolve-ball::after{content:'';position:absolute;left:8%;right:8%;top:50%;height:3px;background:#9a9a9a;transform:translateY(-50%)}
.gv2-evolve .evolve-ball img{width:92px;height:92px;image-rendering:pixelated;position:relative;z-index:1}
.gv2-evolve .evolve-center{flex:1;display:flex;align-items:center;justify-content:center;gap:26px;position:relative}
.gv2-evolve .evolve-col-title{color:#c0392b;font-weight:900;font-size:13px;text-align:center;margin-bottom:5px}
.gv2-evolve .evolve-attacks{list-style:none;margin:0;padding:0;text-align:center;font-size:12px;color:#333;line-height:1.7}
.gv2-evolve .evolve-stat{font-size:12px;color:#333;line-height:1.7}
.gv2-evolve .evolve-stat b{color:#111}
.gv2-evolve .evolve-arrows{color:#c0392b;font-size:15px;line-height:1.25;font-weight:900}
.gv2-evolve .evolve-footer{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 18px 18px;flex-wrap:wrap}
.gv2-evolve .evolve-replace{font-size:13px;color:#333;display:flex;align-items:center;gap:8px;cursor:pointer}
.gv2-evolve .evolve-replace input{width:16px;height:16px;cursor:pointer}
.gv2-evolve .evolve-btn{background:linear-gradient(#c0392b,#a52f22);color:#fff;border:0;border-radius:5px;padding:11px 30px;font-weight:900;font-size:15px;cursor:pointer;box-shadow:0 3px 0 #7d2418;transition:all .12s}
.gv2-evolve .evolve-btn:hover{filter:brightness(1.07)}
.gv2-evolve .evolve-btn:active{transform:translateY(2px);box-shadow:0 1px 0 #7d2418}
.gv2-evolve .evolve-btn:disabled{opacity:.6;cursor:default}
@media (max-width:560px){.gv2-evolve .evolve-body{flex-direction:column}.gv2-evolve .evolve-center{flex-direction:column;gap:14px}.gv2-evolve .evolve-arrows{transform:rotate(90deg)}}
.gv2-evobtn{margin-top:6px;width:100%;border:none;border-radius:8px;padding:6px;font-size:11px;font-weight:900;cursor:default;background:#1e2530;color:var(--dim)}
.gv2-evobtn.ready{background:linear-gradient(#1f6feb,#1a5fcc);color:#fff;cursor:pointer}
.gv2-evobtn.ready:hover{filter:brightness(1.08)}

/* ── auto-hiding dock: hidden until the pointer nears the bottom edge (desktop only) ── */
.gv2-dock.gv2-dock-auto{transform:translate(-50%,150%);opacity:0;transition:transform .28s ease,opacity .28s ease;pointer-events:none}
.gv2-dock.gv2-dock-auto.show{transform:translate(-50%,0);opacity:1;pointer-events:auto}

/* ── Tournaments panel (read-only, cream+red) ── */
.gv2-tn{display:flex;flex-direction:column;gap:12px;padding-top:4px}
.gv2-tn-msg{text-align:center;color:var(--dim);font-weight:700;font-size:13px;padding:20px 10px}
.gv2-tn-status{text-align:center}
.gv2-tn-badge{display:inline-block;font-family:var(--pixel);font-size:18px;padding:6px 16px;border-radius:10px;letter-spacing:.5px}
.gv2-tn-badge.live{background:linear-gradient(var(--red),var(--red2));color:#fff;box-shadow:0 2px 0 #0f3d8a}
.gv2-tn-badge.done{background:#161b22;color:var(--ink);border:2px solid var(--gold)}
.gv2-tn-badge.idle{background:#161b22;color:var(--dim);border:1px solid var(--glass-line)}
.gv2-tn-h{font-family:var(--pixel);font-size:17px;color:var(--red)}
.gv2-tn-h small{font-family:var(--sans);font-size:11px;font-weight:700;color:var(--dim)}
.gv2-tn-bracket{display:flex;flex-direction:column;gap:7px}
.gv2-tn-match{display:flex;align-items:center;gap:8px;background:#161b22;border:1px solid var(--glass-line);border-radius:11px;padding:9px 12px;box-shadow:0 2px 8px rgba(0,0,0,.25)}
.gv2-tn-side{flex:1;font-weight:800;font-size:13px;color:var(--ink);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gv2-tn-side.win{color:#177a3a}.gv2-tn-side.win::after{content:' ✓'}
.gv2-tn-side.lose{color:var(--dim);opacity:.7}
.gv2-tn-vs{font-family:var(--pixel);font-size:13px;color:var(--red);flex:0 0 auto}
.gv2-tn-players{display:flex;flex-wrap:wrap;gap:6px}
.gv2-tn-player{font-size:12px;font-weight:800;color:var(--ink);background:#161b22;border:1px solid var(--glass-line);border-radius:8px;padding:4px 10px}
.gv2-tn-note{font-size:11.5px;line-height:1.5;color:#8a5a12;background:rgba(200,134,26,.1);border:1px solid rgba(200,134,26,.32);border-radius:11px;padding:9px 12px}
.gv2-tn-note b{color:var(--red)}

/* ── Chat = small popover above the dock's Chat button (like the original corner chat-box) ── */
#gv2-chat{position:absolute;left:auto !important;right:calc(10px + env(safe-area-inset-right)) !important;bottom:calc(74px + env(safe-area-inset-bottom)) !important;top:auto !important;
  width:300px;max-width:calc(100vw - 20px);height:min(56vh,400px);max-height:none;transform:none !important;
  background:linear-gradient(var(--cream),var(--cream2));border:2px solid var(--red);border-radius:14px;box-shadow:0 12px 34px var(--warm-shadow);overflow:hidden}
.gv2-msg{background:#121a2c;border:1px solid var(--glass-line);border-radius:11px;padding:6px 10px;font-size:13.5px;max-width:85%;color:var(--ink)}
.gv2-msg b{color:var(--gold);margin-right:5px}
.gv2-msg.me{align-self:flex-end;background:#1c2c1e;border-color:#3a6;color:var(--ink)}
.gv2-chat-bar input{flex:1;background:#0d1117;border:1px solid var(--glass-line);border-radius:10px;color:var(--ink);padding:9px 12px;font-family:var(--sans);font-size:14px}
.gv2-chat-bar button{border:0;background:linear-gradient(#ffcf33,#ef9f27);color:#7a3b00;font-weight:800;border-radius:10px;padding:0 16px;cursor:pointer}

/* ── Friendly PvP overlay (Faz 1) — cream+red, matches the panel language ── */
.gv2-pvp{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;font-family:var(--sans)}
.gv2-pvp-scrim{position:absolute;inset:0;background:rgba(40,16,10,.5);backdrop-filter:blur(3px)}
.gv2-pvp-card{position:relative;width:min(440px,calc(100vw - 24px));max-height:calc(100vh - 40px);overflow:auto;background:linear-gradient(var(--cream),var(--cream2));border:2px solid var(--red);border-top:4px solid var(--red);border-radius:18px;box-shadow:0 18px 50px var(--warm-shadow);color:var(--ink)}
.gv2-pvp-head{padding:13px 16px;border-bottom:1px solid var(--glass-line)}
.gv2-pvp-title{font-weight:800;color:var(--red);font-size:16px;letter-spacing:.2px}
.gv2-pvp-body{padding:14px 16px 18px}
.gv2-pvp-btn{appearance:none;border:0;border-radius:11px;padding:11px 16px;font-family:var(--sans);font-weight:800;font-size:14px;cursor:pointer;transition:.12s}
.gv2-pvp-btn.sm{padding:8px 13px;font-size:13px}
.gv2-pvp-btn.primary{background:linear-gradient(var(--red),var(--red2));color:#fff;box-shadow:0 4px 12px var(--warm-shadow)}
.gv2-pvp-btn.primary:hover{filter:brightness(1.06)}
.gv2-pvp-btn.ghost{background:#161b22;color:var(--ink);border:1px solid var(--glass-line)}
.gv2-pvp-invite-row{display:flex;gap:10px;margin-top:14px}
.gv2-pvp-invite-row .gv2-pvp-btn{flex:1}
/* invite prompt */
.gv2-pvp-invite{text-align:center;padding:8px 4px}
.gv2-pvp-invite-ic{font-size:42px;line-height:1}
.gv2-pvp-invite-h{font-size:17px;font-weight:800;margin-top:8px;color:var(--ink)}
.gv2-pvp-invite-h b{color:var(--red)}
.gv2-pvp-invite-sub{font-size:12.5px;color:var(--dim);margin-top:4px}
/* waiting */
.gv2-pvp-wait{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:18px 6px;color:var(--ink);font-weight:700}
.gv2-pvp-wait.inline{flex-direction:row;justify-content:center;padding:8px;font-weight:800}
.gv2-pvp-wait-sub{font-size:12px;color:var(--dim);font-weight:600}
.gv2-pvp-spin{width:30px;height:30px;border:3px solid var(--glass-line);border-top-color:var(--red);border-radius:50%;animation:gv2pvpspin .8s linear infinite}
.gv2-pvp-spin.sm{width:16px;height:16px;border-width:2px}
@keyframes gv2pvpspin{to{transform:rotate(360deg)}}
/* team pick */
.gv2-pvp-pick-h{font-size:16px;font-weight:800;color:var(--red)}
.gv2-pvp-pick-h small{color:var(--dim);font-weight:700}
.gv2-pvp-pick-sub{font-size:12px;color:var(--dim);margin:3px 0 10px}
.gv2-pvp-pick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
.gv2-pvp-pickmon{position:relative;background:#161b22;border:2px solid var(--glass-line);border-radius:13px;padding:9px 6px 8px;text-align:center;cursor:pointer;transition:.12s}
.gv2-pvp-pickmon:hover{border-color:var(--red)}
.gv2-pvp-pickmon.on{border-color:var(--red);background:#0d1e3a;box-shadow:0 0 0 2px rgba(31,111,235,.2) inset}
.gv2-pvp-pickchk{position:absolute;top:5px;right:6px;width:18px;height:18px;border-radius:50%;background:var(--red);color:#fff;font-size:12px;font-weight:800;line-height:18px;opacity:0;transition:.12s}
.gv2-pvp-pickmon.on .gv2-pvp-pickchk{opacity:1}
.gv2-pvp-pickmon img{width:52px;height:52px;object-fit:contain;image-rendering:pixelated}
.gv2-pvp-pickname{font-size:12px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gv2-pvp-picksub{font-size:10.5px;color:var(--dim)}
/* arena */
.gv2-pvp-arena{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;margin-bottom:10px}
.gv2-pvp-side{background:#161b22;border:1px solid var(--glass-line);border-radius:13px;padding:9px 8px;text-align:center}
.gv2-pvp-side.foe{border-color:#e3b9ad}
.gv2-pvp-side.mine{border-color:#bcdcbc}
.gv2-pvp-who{font-size:11px;font-weight:800;color:var(--dim);text-transform:uppercase;letter-spacing:.4px}
.gv2-pvp-spr{width:62px;height:62px;object-fit:contain;image-rendering:pixelated}
.gv2-pvp-mon{font-size:13px;font-weight:800;color:var(--ink)}
.gv2-pvp-mon small{color:var(--dim);font-weight:700}
.gv2-pvp-hp{height:8px;border-radius:6px;background:rgba(88,166,255,.12);overflow:hidden;margin:5px 2px 2px}
.gv2-pvp-hp span{display:block;height:100%;border-radius:6px;transition:width .35s}
.gv2-pvp-hpnum{font-size:10.5px;color:var(--dim);font-weight:700}
.gv2-pvp-vs{font-weight:800;color:var(--red);font-size:13px}
/* log + actions */
.gv2-pvp-log{background:#161b22;border:1px solid var(--glass-line);border-radius:11px;padding:8px 11px;font-size:12.5px;line-height:1.55;color:var(--ink);min-height:46px;margin-bottom:10px}
.gv2-pvp-log .dim{color:var(--dim)}
.gv2-pvp-log b{color:var(--red)}
.gv2-pvp-actlbl{font-size:12px;font-weight:800;color:var(--dim);margin-bottom:7px;text-transform:uppercase;letter-spacing:.4px}
.gv2-pvp-moves{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.gv2-pvp-mv{appearance:none;border:1px solid var(--glass-line);background:#161b22;border-radius:11px;padding:11px 10px;font-family:var(--sans);font-weight:800;font-size:13px;color:var(--ink);cursor:pointer;text-align:left;transition:.12s}
.gv2-pvp-mv small{display:block;color:var(--dim);font-weight:700;font-size:10.5px;margin-top:2px}
.gv2-pvp-mv:hover:not(:disabled){border-color:var(--red);background:#0d1e3a}
.gv2-pvp-mv.alt{background:#0d1117}
.gv2-pvp-mv:disabled{opacity:.4;cursor:not-allowed}
.gv2-pvp-forfeit{margin-top:10px;width:100%;appearance:none;border:1px solid rgba(31,111,235,.35);background:rgba(31,111,235,.06);color:var(--red);font-family:var(--sans);font-weight:800;font-size:12.5px;padding:9px;border-radius:11px;cursor:pointer}
/* result */
.gv2-pvp-result{text-align:center;padding:12px 6px}
.gv2-pvp-result-ic{font-size:50px;line-height:1}
.gv2-pvp-result-h{font-size:20px;font-weight:800;margin-top:8px;color:var(--ink)}
.gv2-pvp-result.win .gv2-pvp-result-h{color:var(--red)}
.gv2-pvp-result-sub{font-size:12.5px;color:var(--dim);margin:5px 0 14px}
.gv2-pvp-result .gv2-pvp-btn{width:100%}
@media (max-width:600px){.gv2-pvp-pick-grid{grid-template-columns:repeat(3,1fr)}.gv2-pvp-spr{width:54px;height:54px}}

/* ── $POKECR Wager overlay (Faz 2) — reuses .gv2-pvp-* + wager-specific bits ── */
.gv2-pvpw{position:fixed;inset:0;z-index:61;display:flex;align-items:center;justify-content:center;font-family:var(--sans)}
.gv2-pvpw .gv2-pvp-card{border-color:var(--gold);border-top-color:var(--gold)}
.gv2-pvpw .gv2-pvp-title{color:#a9730f}
.gv2-pvpw-body{padding:14px 16px 18px;color:var(--ink)}
.gv2-pvpw-warn{font-size:11.5px;line-height:1.5;color:#8a5a12;background:rgba(200,134,26,.1);border:1px dashed rgba(200,134,26,.4);border-radius:11px;padding:9px 11px;margin:8px 0 12px}
.gv2-pvpw-warn b{color:var(--red)}
.gv2-pvpw-lbl{display:block;font-size:12px;font-weight:800;color:var(--dim);text-transform:uppercase;letter-spacing:.4px;margin-bottom:6px}
.gv2-pvpw-stake{display:flex;align-items:center;gap:8px}
.gv2-pvpw-stake input{flex:1;background:#0d1117;border:2px solid var(--glass-line);border-radius:11px;padding:11px 13px;font-family:var(--sans);font-weight:800;font-size:16px;color:var(--ink)}
.gv2-pvpw-stake input:focus{border-color:var(--gold);outline:none}
.gv2-pvpw-stake span{font-weight:800;color:#a9730f;font-size:13px}
.gv2-pvpw-stakehint{font-size:11px;color:var(--dim);margin:5px 0 12px}
.gv2-pvp-pick-h.sm{font-size:13px;margin-top:4px}
/* terms breakdown */
.gv2-pvpw-terms{background:#161b22;border:1px solid var(--glass-line);border-radius:12px;padding:6px 12px;margin:4px 0 12px}
.gv2-pvpw-terms div{display:flex;justify-content:space-between;align-items:center;padding:7px 0;font-size:13px;border-bottom:1px solid rgba(88,166,255,.15)}
.gv2-pvpw-terms div:last-child{border-bottom:0}
.gv2-pvpw-terms span{color:var(--dim);font-weight:700}
.gv2-pvpw-terms b{color:var(--ink);font-weight:800}
.gv2-pvpw-terms .win b{color:#1f9d57}
.gv2-pvpw-terms .win span{color:#1f9d57}
.gv2-pvpw-pay .gv2-pvp-btn.primary{width:100%}
.gv2-pvpw-paidrow{background:rgba(126,231,135,.08);border:1px solid rgba(126,231,135,.3);border-radius:11px;padding:11px;font-size:13px;font-weight:700;color:#7ee787;text-align:center}
.gv2-pvpw-paidrow b{color:var(--ink)}
.gv2-pvp-btn.full{width:100%;margin-top:10px}
.gv2-pvpw-foot{font-size:11px;color:var(--dim);text-align:center;margin-top:12px;line-height:1.5}
.gv2-pvpw-foot b{color:#a9730f}
/* on-chain pay */
.gv2-pvpw-onchain{background:#161b22;border:1px solid var(--glass-line);border-radius:12px;padding:11px 12px}
.gv2-pvpw-onchain-h{font-size:12.5px;color:var(--ink);line-height:1.5;margin-bottom:9px}
.gv2-pvpw-addr{display:flex;flex-direction:column;gap:3px;margin-bottom:9px}
.gv2-pvpw-addr span{font-size:10.5px;color:var(--dim);font-weight:800;text-transform:uppercase}
.gv2-pvpw-addr code{font-size:11px;background:#0d1117;border-radius:7px;padding:6px 8px;word-break:break-all;color:var(--ink)}
.gv2-pvpw-onchain input{width:100%;box-sizing:border-box;background:#0d1117;border:2px solid var(--glass-line);border-radius:10px;padding:10px 12px;font-family:var(--sans);font-size:13px;color:var(--ink);margin-bottom:9px}
.gv2-pvpw-onchain-note{font-size:10.5px;color:var(--dim);margin-top:8px;line-height:1.45}
/* battle stake bar */
.gv2-pvpw-stakebar{background:linear-gradient(#fff6e6,#ffedcf);border:1px solid #ecd39a;border-radius:10px;padding:7px 11px;font-size:11.5px;font-weight:800;color:#a9730f;text-align:center;margin-bottom:10px}
.gv2-pvpw-ball{font-size:10px;color:var(--dim);font-weight:800}
/* payout pending */
.gv2-pvpw-payout{font-size:13px;line-height:1.55;color:#8a5a12;background:rgba(200,134,26,.1);border:1px dashed rgba(200,134,26,.45);border-radius:12px;padding:11px 13px;margin:6px 0 8px}
.gv2-pvpw-payout b{color:var(--red)}
/* ── Map right-click / long-press context menu ── */
.gv2-ctx-menu{position:fixed;z-index:9999;background:#0d1117;border:2px solid var(--red,#1f6feb);border-radius:10px;min-width:206px;box-shadow:0 6px 22px rgba(0,0,0,.38);padding:4px 0;font-family:var(--sans,Verdana,Arial,sans-serif);overflow:hidden;pointer-events:all}
.gv2-ctx-user{padding:7px 13px 5px;font-size:11px;font-weight:700;color:var(--dim);border-bottom:1px solid rgba(88,166,255,.2);letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gv2-ctx-item{display:flex;align-items:center;gap:6px;width:100%;padding:9px 13px;background:none;border:none;font-size:13px;font-family:inherit;color:var(--ink);cursor:pointer;text-align:left;transition:background .1s}
.gv2-ctx-item:hover:not(.disabled){background:rgba(88,166,255,.1)}
.gv2-ctx-item span{font-size:10px;color:#aaa;margin-left:auto;padding-left:6px;white-space:nowrap}
.gv2-ctx-item.disabled{opacity:.42;cursor:not-allowed;pointer-events:none}

/* ── Mobile left sidebar nav (≤768px) ── */
.gv2-mob-tab{display:none;position:absolute;left:0;top:50%;transform:translateY(-50%);z-index:31;background:rgba(13,17,23,.9);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(88,166,255,.35);border-left:none;border-radius:0 12px 12px 0;padding:12px 8px;color:var(--ink);cursor:pointer;font-size:18px;line-height:1;appearance:none;align-items:center;justify-content:center;transition:opacity .15s,transform .15s}
.gv2-mob-tab.gv2-mob-tab-hidden{opacity:0;pointer-events:none;transform:translateY(-50%) translateX(-6px)}
.gv2-mob-scrim{position:absolute;inset:0;z-index:32;background:rgba(2,4,10,.45);display:none}
.gv2-mob-scrim.visible{display:block}
.gv2-chat-fab{display:none;position:absolute;right:calc(12px + env(safe-area-inset-right));bottom:calc(12px + env(safe-area-inset-bottom));z-index:31;width:48px;height:48px;border-radius:50%;background:linear-gradient(var(--red),var(--red2));border:none;color:#fff;font-size:22px;cursor:pointer;align-items:center;justify-content:center;box-shadow:0 4px 14px rgba(0,0,0,.5);transition:transform .12s;line-height:1;appearance:none}
.gv2-chat-fab:active{transform:scale(.91)}
@media (max-width:768px){
  .gv2-mob-tab{display:flex}
  .gv2-chat-fab{display:flex}
  .gv2-dock{left:0 !important;top:50% !important;bottom:auto !important;transform:translateY(-50%) translateX(calc(-100% - 2px)) !important;flex-direction:column;gap:1px;border-radius:0 14px 14px 0;padding:6px 4px;max-width:none;max-height:80vh;overflow-x:hidden;overflow-y:auto;scroll-snap-type:none;transition:transform .22s ease;z-index:33}
  .gv2-dock.gv2-mob-open{transform:translateY(-50%) translateX(0) !important}
  .gv2-dockbtn{flex-direction:row;gap:7px;justify-content:flex-start;padding:8px 10px;min-width:124px;border-radius:10px}
  .gv2-dockbtn .gv2-ic{font-size:17px;width:18px;text-align:center}
  .gv2-dockbtn .gv2-lbl{display:inline;font-size:11.5px;letter-spacing:.2px}
  .gv2-dock .gv2-dockbtn[data-panel="chat"]{display:none !important}
}
