/*
 * Myst Poketibia — tema do cliente (carregado depois do client.css).
 * Mesmo layout do OTClient, com o visual das janelas novas: painéis escuros arredondados, detalhes dourados.
 */
:root {
  --bg: #0b0e14;
  --panel: #151922;
  --panel-dark: #10131b;
  --panel2: #1a1f2b;
  --line: #262c3a;
  --line2: #30374a;
  --slot: #0e1118;
  --text: #dfe4ee;
  --muted: #7d8698;
  --gold: #ffcb3c;
  --gold2: #d29a1c;
  --hp: #d23a3a;
  --hp-ok: #3fbf4a;
  --exp: #3a86e8;
}

html, body { background: radial-gradient(ellipse at 50% 0%, #1a2030 0%, #0b0e14 60%) fixed; }

/* scrollbars finas */
* { scrollbar-width: thin; scrollbar-color: #343c50 transparent; }
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: #2c3344; border-radius: 8px; border: 2px solid transparent; background-clip: padding-box; }
::-webkit-scrollbar-thumb:hover { background-color: #3d4660; }
::-webkit-scrollbar-track { background: transparent; }

/* molduras */
.bevel { background: linear-gradient(180deg, #181d28, #12161f); border: 1px solid var(--line); border-radius: 10px; box-shadow: 0 6px 18px rgba(0,0,0,.35), inset 0 1px rgba(255,255,255,.03); }
.inset { background: var(--slot); border: 1px solid #222837; border-radius: 6px; box-shadow: inset 0 1px 3px rgba(0,0,0,.6); }
.btn { padding: 3px 10px; border-radius: 7px; background: linear-gradient(#262c3a, #1d222e); border: 1px solid var(--line2); box-shadow: inset 0 1px rgba(255,255,255,.05); color: var(--text); transition: border-color .12s, background .12s; }
.btn:hover { background: linear-gradient(#2c3344, #222838); border-color: rgba(255,203,60,.55); }
.btn:active { box-shadow: inset 0 2px 4px rgba(0,0,0,.5); }
.btn.on { background: linear-gradient(#7a2626, #561818); border-color: #a33; }
.btn.on-gold { box-shadow: inset 0 0 0 1px var(--gold); color: var(--gold); }
input.field, select.field, #chat-input { border-radius: 7px; border: 1px solid var(--line2); background: #0b0d13; color: #fff; box-shadow: none; }
input.field:focus, #chat-input:focus { outline: none; border-color: var(--gold); box-shadow: 0 0 0 3px rgba(255,203,60,.12); }

/* barra superior */
#top-bar { height: 36px; padding: 0 10px; border-radius: 0 0 12px 12px; border-top: 0;
  background: linear-gradient(90deg, rgba(255,203,60,.10), transparent 30%), linear-gradient(180deg, #1a1f2b, #12161f); }
#top-bar .brand { font-size: 13px; letter-spacing: 2px; text-shadow: 0 2px 8px rgba(255,180,40,.3); }
#top-bar .brand img { width: 22px; height: 22px; filter: drop-shadow(0 0 6px rgba(255,80,80,.45)); }
#top-bar .stat { padding: 3px 10px; border-radius: 20px; color: var(--muted); }
#top-bar .actions { gap: 4px; }
#top-bar .actions .btn { height: 26px; min-width: 28px; border-radius: 8px; }

/* layout e janelas */
#main-view { gap: 6px; padding: 6px; }
#sidebar-left, #sidebar-right, #center-viewport { gap: 6px; }
.window > .title { height: 24px; flex: 0 0 24px; padding: 0 8px; border-radius: 10px 10px 0 0; border-bottom: 1px solid var(--line);
  background: linear-gradient(90deg, rgba(255,203,60,.13), transparent 75%), #171c27; color: #ffe9a8; font-size: 10px;
  letter-spacing: .8px; text-transform: uppercase; text-shadow: 0 1px 0 #000; }
.window > .title small { text-transform: none; letter-spacing: 0; }
.window > .title .tbtn { width: 17px; height: 16px; border-radius: 5px; font-size: 10px; }
.window > .title { cursor: grab; }
.window.pinned > .title { cursor: default; }
/* janela solta pelo título: fica por cima do jogo onde o jogador deixou */
.window.floating { position: fixed !important; z-index: 60; box-shadow: 0 16px 40px rgba(0,0,0,.6), 0 0 0 1px rgba(255,203,60,.25); }
.window .tpin, .window .tdock { display: none; font-size: 9px; }
.window.floating .tpin, .window.floating .tdock { display: grid; place-items: center; }
.window.pinned .tpin { box-shadow: inset 0 0 0 1px var(--gold); background: #3a2d0c; }
.window > .body { padding: 6px; }

/* treinador */
.trainer-card { display: flex; gap: 8px; align-items: center; }
.trainer-pic { position: relative; flex: none; width: 50px; height: 50px; border-radius: 12px; display: grid; place-items: center;
  background: radial-gradient(circle at 50% 70%, rgba(255,255,255,.12), rgba(0,0,0,.35) 75%); border: 1px solid rgba(255,203,60,.35); }
.trainer-pic canvas { width: 44px; height: 44px; image-rendering: auto; }
.trainer-pic span { position: absolute; bottom: -6px; left: 50%; transform: translateX(-50%); padding: 1px 6px; border-radius: 10px; white-space: nowrap;
  background: linear-gradient(#ffd75a, var(--gold2)); color: #1a1305; font-size: 9px; font-weight: bold; box-shadow: 0 2px 0 #7a5208; }
.trainer-main { flex: 1; min-width: 0; }
.trainer-name { font-size: 12px; margin-bottom: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: block; }
.trainer-meta { margin-top: 8px; padding: 4px 8px; border-radius: 8px; background: var(--panel2); font-size: 10px; }
.trainer-meta b { color: var(--gold); }
/* nível do pokémon capturado (levelTier em things.js): até 49 vermelho, 50-69 laranja, 70-99 verde-claro, 100 arco-íris */
.lv-low { color: #ff4040 !important; }
.lv-mid { color: #ff9f43 !important; }
.lv-high { color: #8dff7a !important; }
.lv-max { animation: lv-rgb 2.2s linear infinite; font-weight: bold; }
@keyframes lv-rgb {
  0% { color: hsl(0, 100%, 62%); } 17% { color: hsl(60, 100%, 62%); } 33% { color: hsl(120, 100%, 62%); }
  50% { color: hsl(180, 100%, 62%); } 67% { color: hsl(240, 100%, 62%); } 83% { color: hsl(300, 100%, 62%); } 100% { color: hsl(360, 100%, 62%); }
}
.chat-msg.orange .author, .chat-msg.orange .text { color: #ff9f43 !important; } /* golpes e ordens ao pokémon (aba Servidor) */
.chat-tab.dragging { opacity: .45; }
.chat-tab.drop-before { box-shadow: inset 3px 0 0 var(--gold); }
.chat-tab[draggable="true"] { cursor: grab; }
.chat-msg.owner .author { color: #ff3030 !important; } /* fala do Dono, em qualquer canal: nome vermelho, texto amarelo */
.chat-msg.owner .text { color: #f0f000 !important; }
.chat-msg.gm .author { color: #ff9a2a !important; } /* fala do GM, em qualquer canal: nome laranja */
.trainer-meta .cifrao { font-size: 12px; color: #4ee06a; text-shadow: 0 0 4px rgba(78,224,106,.45); }

/* barras de vida/experiência */
.bar { height: 14px; margin: 3px 0; border-radius: 7px; overflow: hidden; }
.bar .fill { inset: 1px auto 1px 1px; border-radius: 6px; }
.bar .fill.hp { background: linear-gradient(90deg, #a52222, #ff5a5a); }
.bar .fill.exp { background: linear-gradient(90deg, #235fb8, #6fb4ff); box-shadow: 0 0 8px rgba(80,160,255,.35); }
.bar .fill.php { background: linear-gradient(90deg, #26902f, #7de06a); }
.bar .txt { font-size: 9px; font-weight: bold; }

/* pokébar */
#pokebar-slots { gap: 4px; }
.pokebar-slot { padding: 4px 6px; border-radius: 9px; background: var(--panel2) !important; border: 1px solid var(--line) !important; box-shadow: none !important; transition: border-color .12s, transform .12s; }
.pokebar-slot:hover { border-color: #4a5470 !important; transform: translateX(2px); }
.pokebar-slot.active { border-color: var(--gold) !important; background: linear-gradient(90deg, rgba(255,203,60,.14), var(--panel2)) !important; }
.pokebar-slot .pic { border-radius: 8px; background: radial-gradient(circle at 50% 65%, rgba(255,255,255,.1), transparent 70%); image-rendering: auto; }
.pokebar-slot .key { padding: 1px 4px; border-radius: 4px; background: #0b0d13; }

/* golpes */
#cooldown-bar { gap: 4px; padding: 5px; }
.move-slot { width: 70px; height: 40px; border-radius: 9px; background: var(--panel2) !important; border: 1px solid var(--line) !important; box-shadow: none !important; transition: border-color .12s, transform .1s; }
.move-slot:hover:not(.disabled) { border-color: var(--gold) !important; transform: translateY(-1px); }
.move-slot .cd { border-radius: 9px; }
.move-slot .tb { border-radius: 0 0 9px 9px; }
.move-slot .hk { padding: 0 3px; border-radius: 4px; background: rgba(0,0,0,.45); color: #ffe9a8; }

/* tela do jogo e HUD do pokémon */
#canvas-wrapper { border-radius: 10px; overflow: hidden; border: 1px solid var(--line); box-shadow: 0 8px 24px rgba(0,0,0,.5); }
#active-pokemon-hud { border-radius: 10px; background: rgba(16,19,27,.88) !important; border: 1px solid rgba(255,203,60,.3) !important; backdrop-filter: blur(3px); }
#zoom-controls .btn { border-radius: 6px; }

/* chat */
#chat-container { border-radius: 10px; overflow: hidden; }
.chat-tabs { gap: 3px; padding: 4px 4px 0; background: #121620; }
.chat-tab { padding: 3px 12px; border-radius: 8px 8px 0 0; background: #1a1f2b; border: 1px solid var(--line); border-bottom: 0; }
.chat-tab.active { background: #222838; color: var(--gold); }
.chat-messages { background: #0d1017; }
.chat-input-bar { gap: 4px; padding: 4px; background: #121620; }
.chat-input-bar input { padding: 5px 8px; }

/* lista de batalha, minimapa e mochila */
.battle-entry { border-radius: 8px; padding: 3px 4px; }
.battle-entry:hover { background: var(--panel2); border-color: var(--line); }
.battle-entry.targeted { border-color: #d23a3a; background: rgba(210,58,58,.12); }
.minimap-box { border-radius: 8px; overflow: hidden; }
.inv-slot, .ball-slot { border-radius: 6px; }
.inv-slot:hover, .ball-slot:hover { box-shadow: inset 0 0 0 1px var(--gold); }
.money-line { margin-top: 6px; padding: 4px 8px; border-radius: 8px; background: var(--panel2); }
.ball-label { font-size: 10px; text-transform: uppercase; letter-spacing: .5px; }
.inv-btn { border-radius: 6px; background: linear-gradient(#1d222e, #141822); border: 1px solid var(--line2); box-shadow: inset 0 1px rgba(255,255,255,.04); }
.inv-btn.filled .slotbg, .inv-btn.filled > img.slotbg { opacity: 0; }
.inv-btn > .slotbg { position: absolute; inset: 1px; width: 32px; height: 32px; }
.inv-btn > canvas { position: relative; }
.menu { border-radius: 10px; }

/* trade entre jogadores */
/* trade no centro da tela (a animação própria mantém o translate da centralização) */
.trade-win { position: fixed; z-index: 120; left: 50%; top: 50%; transform: translate(-50%, -50%); width: min(520px, 94vw); max-height: 92vh; overflow: auto;
  padding: 14px; border-radius: 16px; background: #12151d; border: 1px solid rgba(255,203,60,.3); box-shadow: 0 24px 60px rgba(0,0,0,.7); animation: trade-in .18s ease-out; }
@keyframes trade-in { from { transform: translate(-50%, calc(-50% + 10px)) scale(.98); opacity: 0; } }

.trade-head { cursor: grab; user-select: none; }
/* sem mexer na animação ao arrastar: desligar e religar fazia a entrada tocar de novo ao soltar */
.trade-win.dragging { transition: none; }
.trade-win.dragging .trade-head { cursor: grabbing; }

/* pedido de trade: cartão no alto, abaixo dos avisos do servidor */
.trade-request { position: fixed; z-index: 390; top: 112px; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 12px;
  min-width: min(430px, 92vw); padding: 12px 14px; border-radius: 16px; background: linear-gradient(160deg, #1f2433, #12151d);
  border: 1px solid rgba(255,203,60,.45); box-shadow: 0 18px 44px rgba(0,0,0,.6), 0 0 0 4px rgba(255,203,60,.06); animation: tr-in .22s cubic-bezier(.2,.9,.3,1.2); }
.trade-request.hidden { display: none; }
@keyframes tr-in { from { opacity: 0; transform: translate(-50%, -12px) scale(.96); } }
.tr-icon { flex: none; width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; font-size: 22px;
  background: radial-gradient(circle at 30% 30%, rgba(255,203,60,.35), rgba(255,203,60,.08)); border: 1px solid rgba(255,203,60,.35); animation: tr-pulse 1.6s ease-in-out infinite; }
@keyframes tr-pulse { 50% { box-shadow: 0 0 0 6px rgba(255,203,60,.08); } }
.tr-text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.tr-text b { color: #fff; font-size: 13px; } .tr-text b span { color: var(--gold); }
.tr-text small { color: var(--muted); font-size: 10px; }
.tr-timer { display: block; height: 3px; border-radius: 3px; background: rgba(255,255,255,.08); overflow: hidden; margin-top: 3px; }
.tr-timer i { display: block; height: 100%; width: 100%; background: linear-gradient(90deg, #ffd75a, #d29a1c); transition: width 1s linear; }
.tr-actions { display: flex; gap: 6px; }
.tr-actions .btn { padding: 7px 14px; }
.tr-actions .btn.primary { background: linear-gradient(#ffd75a, #d29a1c); color: #1a1305; font-weight: bold; border-color: #7a5208; }
.trade-request.waiting .tr-actions .primary { display: none; }

/* perfil do jogador */
.pf-card { position: relative; width: min(560px, 94vw); max-height: 92vh; overflow: auto; border-radius: 20px; background: #10131b;
  border: 1px solid rgba(255,203,60,.25); box-shadow: 0 30px 80px rgba(0,0,0,.7); animation: card-in .2s ease-out; }
.pf-hero { position: relative; display: flex; align-items: center; gap: 18px; padding: 22px 24px 20px; overflow: hidden;
  background: radial-gradient(circle at 15% 35%, rgba(255,203,60,.30), transparent 55%), radial-gradient(circle at 95% 0%, rgba(90,120,255,.28), transparent 55%), linear-gradient(160deg, #262b3a, #141720); }
.pf-hero::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: linear-gradient(90deg, transparent, rgba(255,203,60,.55), transparent); }
.pf-avatar { position: relative; flex: none; width: 112px; height: 112px; border-radius: 50%;
  background: radial-gradient(circle at 50% 70%, rgba(255,255,255,.14), rgba(0,0,0,.4) 70%); border: 2px solid rgba(255,203,60,.5);
  box-shadow: 0 0 0 6px rgba(255,203,60,.07), 0 12px 30px rgba(0,0,0,.5); }
.pf-avatar canvas { width: 112px; height: 112px; }
.pf-lvl { position: absolute; bottom: -7px; left: 50%; transform: translateX(-50%); padding: 3px 12px; border-radius: 20px; white-space: nowrap;
  background: linear-gradient(#ffd75a, #d29a1c); color: #1a1305; font-weight: bold; font-size: 11px; box-shadow: 0 3px 0 #7a5208; }
.pf-lvl b { font-size: 14px; }
.pf-id { flex: 1; min-width: 0; }
.pf-tags { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 6px; }
.pf-group, .pf-online { padding: 2px 9px; border-radius: 20px; font-size: 10px; font-weight: bold; letter-spacing: .4px; text-transform: uppercase; }
.pf-group { background: rgba(255,203,60,.14); color: var(--gold); border: 1px solid rgba(255,203,60,.35); }
.pf-group.owner { background: rgba(255,48,48,.14); color: #ff5050; border-color: rgba(255,48,48,.45); }
.pf-group.gm { background: rgba(255,140,30,.16); color: #ffa53a; border-color: rgba(255,140,30,.5); }
#pf-name.gm { color: #ff9a2a; }
.pf-online { background: rgba(63,220,90,.12); color: #3fdc5a; border: 1px solid rgba(63,220,90,.35); }
.pf-online.off { background: rgba(255,255,255,.05); color: var(--muted); border-color: var(--line2); }
.pf-id h2 { color: #fff; font-size: 22px; text-shadow: 0 2px 10px rgba(0,0,0,.6); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pf-id h2.owner { color: #ff3030; }
.pf-clan { margin-top: 4px; color: #b9c1d3; font-size: 12px; } .pf-clan b { color: #9fd0ff; } .pf-clan.none { color: var(--muted); font-style: italic; }
.pf-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; padding: 14px 16px 4px; }
.pf-stat { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; min-height: 84px; padding: 10px 6px;
  border-radius: 14px; background: linear-gradient(180deg, #1b2030, #151925); border: 1px solid var(--line); text-align: center; overflow: hidden; }
.pf-stat::before { content: ''; position: absolute; inset: 0 0 auto; height: 2px; background: linear-gradient(90deg, transparent, rgba(255,203,60,.6), transparent); }
.pf-ico { font-size: 18px; line-height: 1; filter: drop-shadow(0 2px 4px rgba(0,0,0,.6)); }
.pf-stat b { color: #fff; font-size: 18px; }
.pf-stat small { color: var(--muted); font-size: 10px; text-transform: uppercase; letter-spacing: .5px; }
.pf-fav b { font-size: 12px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pf-fav canvas { width: 40px; height: 40px; }
.pf-h { margin: 12px 18px 8px; color: #a8b1c3; font-size: 11px; text-transform: uppercase; letter-spacing: .8px; }
.pf-team { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; padding: 0 16px 18px; }
.pf-poke { position: relative; display: flex; align-items: center; gap: 8px; padding: 8px; border-radius: 12px; background: #171b27; border: 1px solid var(--line); }
.pf-poke.shiny { border-color: rgba(255,203,60,.45); background: linear-gradient(135deg, rgba(255,203,60,.10), #171b27 55%); }
.pf-poke.shiny::after { content: '✨'; position: absolute; top: 4px; right: 6px; font-size: 11px; }
.pf-poke.out { box-shadow: inset 0 0 0 1px rgba(63,220,90,.5); }
.pf-poke canvas { flex: none; width: 40px; height: 40px; }
.pf-poke div { min-width: 0; display: flex; flex-direction: column; }
.pf-poke b { color: #fff; font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pf-poke small { font-size: 10px; font-weight: bold; }
.pf-empty { grid-column: 1 / -1; padding: 16px; text-align: center; color: var(--muted); font-size: 11px; border: 1px dashed var(--line2); border-radius: 12px; }
@media (max-width: 520px) { .pf-stats { grid-template-columns: repeat(2, 1fr); } .pf-team { grid-template-columns: repeat(2, 1fr); } .pf-hero { flex-direction: column; text-align: center; } .pf-tags { justify-content: center; } }

/* aviso para o servidor todo (/bc): faixa no alto, no centro da tela, para todos */
#server-banners { position: fixed; z-index: 400; top: 46px; left: 50%; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center;
  gap: 6px; width: min(640px, 92vw); pointer-events: none; }
.server-banner { padding: 9px 18px; border-radius: 12px; background: linear-gradient(180deg, rgba(40,28,6,.94), rgba(22,16,4,.94)); border: 1px solid rgba(255,203,60,.55);
  box-shadow: 0 10px 30px rgba(0,0,0,.55), 0 0 18px rgba(255,203,60,.18); color: #ffe08a; font-weight: bold; font-size: 13px; text-align: center;
  text-shadow: 1px 1px #000; animation: banner-in .25s ease-out; transition: opacity .6s, transform .6s; }
.server-banner b { color: #ffcb3c; }
.server-banner b.owner { color: #ff3030; }
.server-banner b.gm { color: #ff9a2a; } /* nick do GM, como no chat */ /* tag e nick do Dono, como no chat */
.server-banner.out { opacity: 0; transform: translateY(-8px); }
@keyframes banner-in { from { opacity: 0; transform: translateY(-10px); } }

/* /comandos */
.cmd-list { display: flex; flex-direction: column; gap: 4px; min-width: min(460px, 86vw); }
.cmd-row { display: flex; gap: 10px; align-items: baseline; padding: 7px 10px; border-radius: 8px; background: var(--panel2); border: 1px solid var(--line); cursor: pointer; }
.cmd-row:hover { border-color: var(--gold); }
.cmd-row code { color: var(--gold); font-weight: bold; white-space: nowrap; font-family: Consolas, monospace; }
.cmd-row span { color: var(--text); font-size: 11px; }
.cmd-hint { margin-top: 8px; font-size: 10px; color: var(--muted); }
.trade-head { display: flex; align-items: center; margin-bottom: 10px; } .trade-head h2 { flex: 1; color: #fff; font-size: 15px; } .trade-head h2 span { color: var(--gold); }
.trade-head .acc-x { position: static; }
.trade-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.trade-col h4 { color: #a8b1c3; font-size: 11px; margin-bottom: 6px; } .trade-col h4 span:not(.trade-ok) { color: #fff; }
.trade-ok { color: #3fdc5a; font-weight: bold; margin-left: 4px; }
.trade-box { min-height: 130px; max-height: 220px; overflow: auto; display: flex; flex-wrap: wrap; align-content: flex-start; gap: 4px; padding: 8px; border-radius: 10px;
  background: #0d1017; border: 1px dashed #30374a; }
.trade-box.mine { border-color: rgba(255,203,60,.4); }
.trade-box .empty { width: 100%; align-self: center; font-size: 10px; }
.trade-item { position: relative; width: 38px; height: 38px; display: grid; place-items: center; border-radius: 8px; background: #1a1f2b; border: 1px solid #262c3a; }
.trade-box.mine .trade-item { cursor: pointer; } .trade-box.mine .trade-item:hover { border-color: #d23a3a; }
.trade-item.poke { border-color: rgba(213,155,255,.45); }
.trade-item span { position: absolute; right: 1px; bottom: 0; font-size: 8px; font-weight: bold; color: #fff; text-shadow: 1px 1px #000, -1px -1px #000; }
.trade-foot { display: flex; align-items: center; gap: 6px; margin-top: 12px; } .trade-foot .muted { flex: 1; font-size: 10px; color: var(--muted); }
.trade-foot .btn { padding: 7px 16px; } .trade-foot .btn.primary { background: linear-gradient(#ffd75a, #d29a1c); color: #1a1305; font-weight: bold; border-color: #7a5208; }
.trade-foot .btn:disabled { opacity: .5; cursor: not-allowed; }

/* janela Pokemon Info (game_pokemoninfo) */
.pki { display: flex; flex-direction: column; gap: 6px; }
.pki-top { display: flex; gap: 7px; align-items: center; }
.pki-pic { flex: none; width: 46px; height: 46px; border-radius: 10px; display: grid; place-items: center;
  background: radial-gradient(circle at 50% 70%, rgba(255,255,255,.12), rgba(0,0,0,.35) 75%), url('../ui/pokeinfo/slot.png') center/cover; border: 1px solid var(--line2); }
.pki-pic canvas { width: 40px; height: 40px; image-rendering: auto; }
.pki-id { flex: 1; min-width: 0; }
.pki-name { font-weight: bold; color: #fff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: 2px; }
.pki-name small.gmale, .pki-name small.g1 { color: #6fb4ff; } .pki-name small.gfemale, .pki-name small.g2 { color: #ff8ad0; } .pki-name b { color: var(--gold); }
.pki-bar { position: relative; height: 12px; margin: 2px 0; border-radius: 6px; background: #0b0d13; overflow: hidden; border: 1px solid #222837; }
.pki-bar i { position: absolute; inset: 0 auto 0 0; border-radius: 6px; transition: width .25s; }
.pki-bar.hp i { background: linear-gradient(90deg, #26902f, #7de06a); } .pki-bar.hp i.mid { background: linear-gradient(90deg, #b08a18, #ffd75a); } .pki-bar.hp i.low { background: linear-gradient(90deg, #a52222, #ff6a6a); }
.pki-bar.xp i { background: linear-gradient(90deg, #a83a8a, #ff8ad0); }
.pki-bar span { position: relative; display: block; text-align: center; font-size: 8px; line-height: 11px; font-weight: bold; color: #fff; text-shadow: 1px 1px #000; white-space: nowrap; }
.pki-mid { display: grid; grid-template-columns: auto 1fr auto; gap: 6px; align-items: center; }
.pki-btns { display: flex; flex-direction: column; gap: 4px; }
.pki-btn, .pki-arrow { padding: 0; border: 0; background: none; cursor: pointer; border-radius: 6px; display: grid; place-items: center; }
.pki-btn img { width: 26px; height: 26px; } .pki-btn:hover, .pki-arrow:hover { filter: brightness(1.3) drop-shadow(0 0 4px rgba(255,203,60,.6)); }
.pki-info { display: flex; flex-direction: column; gap: 3px; font-size: 9px; color: var(--muted); min-width: 0; }
.pki-info b { color: #cda953; } .pki-info b.on { color: #3fdc5a; }
.pki-pad { display: grid; grid-template-areas: ". u ." "l c r" ". d ."; grid-template-columns: repeat(3, 21px); grid-template-rows: repeat(3, 21px); }
.pki-arrow img { width: 21px; height: 21px; }
.pki-habs { display: flex; gap: 4px; flex-wrap: wrap; align-items: center; min-height: 18px; padding: 3px 6px; border-radius: 7px; background: #0e1118; border: 1px solid #222837; }
.pki-habs img { width: 16px; height: 12px; image-rendering: pixelated; }
.pki-habs span { color: #4f5768; font-size: 9px; }
.pki-habs img[data-hab] { cursor: help; transition: transform .12s, filter .12s; }
.pki-habs img[data-hab]:hover { transform: scale(1.35); filter: drop-shadow(0 0 3px rgba(255,203,60,.8)); }
/* opacidade da aura do lendário (só com lendário no Inventário) */
.pki-aura { display: flex; align-items: center; gap: 6px; margin-top: 4px; padding: 3px 7px; border-radius: 7px; font-size: 9px; color: #e9d38a;
  background: linear-gradient(90deg, rgba(255,203,60,.12), rgba(255,203,60,.03)), #0e1118; border: 1px solid rgba(255,203,60,.28); cursor: pointer; }
.pki-aura span { white-space: nowrap; font-weight: bold; }
.pki-aura b { min-width: 30px; text-align: right; color: #ffcb3c; font-size: 10px; }
.pki-aura input[type=range] { flex: 1; min-width: 0; height: 14px; margin: 0; accent-color: #ffcb3c; cursor: pointer; }
.pki-aura.hidden { display: none; }
.pki-run img { width: 26px; height: 26px; }

/* mira (order, corda, habilidades): retícula dourada no lugar da cruz do sistema */
body.targeting, body.targeting * {
  cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cg fill='none' stroke-linecap='round'%3E%3Ccircle cx='16' cy='16' r='9' stroke='%23000' stroke-opacity='.75' stroke-width='4'/%3E%3Ccircle cx='16' cy='16' r='9' stroke='%23ffcb3c' stroke-width='2' stroke-dasharray='9.4 4.7' transform='rotate(-38 16 16)'/%3E%3Cpath d='M16 2v6M16 24v6M2 16h6M24 16h6' stroke='%23000' stroke-opacity='.75' stroke-width='4'/%3E%3Cpath d='M16 2v6M16 24v6M2 16h6M24 16h6' stroke='%23fff' stroke-width='2'/%3E%3C/g%3E%3Ccircle cx='16' cy='16' r='2.2' fill='%23ff3b3b' stroke='%23000' stroke-width='1'/%3E%3C/svg%3E") 16 16, crosshair !important;
}
.window .pki-habs img[data-hab] { cursor: pointer; }
.aim-hint { position: fixed; z-index: 380; top: 46px; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 9px; padding: 8px 14px;
  border-radius: 20px; background: rgba(16,19,27,.92); border: 1px solid rgba(255,203,60,.5); color: #f3ead2; font-size: 12px; font-weight: bold;
  box-shadow: 0 10px 26px rgba(0,0,0,.55); pointer-events: none; animation: banner-in .2s ease-out; }
.aim-hint.hidden { display: none; }
.aim-hint kbd { padding: 1px 6px; border-radius: 5px; background: #2a303c; border: 1px solid #3a4152; color: #c9d0dd; font: bold 10px Consolas, monospace; }
.aim-dot { width: 9px; height: 9px; border-radius: 50%; background: #ff3b3b; box-shadow: 0 0 0 3px rgba(255,59,59,.25); animation: aim-pulse 1s ease-in-out infinite; }
@keyframes aim-pulse { 50% { box-shadow: 0 0 0 6px rgba(255,59,59,.05); } }

/* Pokédex: aparece fechada (tampa vermelha) e abre mostrando os pokémon */
#pokedex-modal .dex-card { position: relative; }
#pokedex-modal.active .dex-card { animation: dex-pop .32s cubic-bezier(.2,.9,.3,1.15); }
@keyframes dex-pop { from { transform: scale(.7) rotate(-2deg); opacity: 0; } }
.dex-cover { position: absolute; inset: 0; z-index: 30; border-radius: inherit; pointer-events: none; transform-origin: left center; backface-visibility: hidden;
  background: radial-gradient(circle at 25% 20%, rgba(255,255,255,.18), transparent 40%), linear-gradient(160deg, #e8383d, #a3141c 70%, #7a0d13);
  box-shadow: inset 0 0 0 3px rgba(0,0,0,.25), inset 0 -8px 20px rgba(0,0,0,.35); }
#pokedex-modal.active .dex-cover { animation: dex-cover-open .7s .28s cubic-bezier(.65,.05,.35,1) forwards; }
@keyframes dex-cover-open { 60% { opacity: 1; } to { transform: perspective(1600px) rotateY(-115deg); opacity: 0; } }
.dex-cover-lens { position: absolute; top: 22px; left: 26px; width: 64px; height: 64px; border-radius: 50%; background: #f4f4f4; box-shadow: 0 4px 0 rgba(0,0,0,.3); display: grid; place-items: center; }
.dex-cover-lens i { width: 48px; height: 48px; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #bff3ff, #2fa8e8 45%, #0b5c9c); box-shadow: inset 0 0 0 3px #0a3a66;
  animation: dex-lens 1s ease-in-out infinite alternate; }
@keyframes dex-lens { to { filter: brightness(1.35) drop-shadow(0 0 8px #6fd6ff); } }
.dex-cover-lights { position: absolute; top: 26px; left: 104px; display: flex; gap: 8px; }
.dex-cover-lights i { width: 14px; height: 14px; border-radius: 50%; border: 2px solid rgba(0,0,0,.4); }
.dex-cover-lights i:nth-child(1) { background: #ff5b5b; } .dex-cover-lights i:nth-child(2) { background: #ffd84a; } .dex-cover-lights i:nth-child(3) { background: #5bd96b; }
.dex-cover-line { position: absolute; top: 104px; left: 0; right: 0; height: 6px; background: rgba(0,0,0,.35); clip-path: polygon(0 0, 55% 0, 62% 100%, 100% 100%, 100% 100%, 0 100%); }
.dex-cover-hinge { position: absolute; top: 0; bottom: 0; left: 0; width: 14px; background: linear-gradient(90deg, #5a0a0f, #8c1218); }
.dex-cover-title { position: absolute; bottom: 26px; right: 30px; color: rgba(255,255,255,.85); font: 900 22px Verdana, sans-serif; letter-spacing: 4px; text-shadow: 0 3px 0 rgba(0,0,0,.35); }

/* Treinador: dinheiro em cima; PixMon e Run embaixo */
.trainer-meta { align-items: stretch; flex-direction: column; gap: 6px; }
.tr-money { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tr-actions { display: flex; gap: 6px; }
.tr-actions > button { flex: 1; justify-content: center; }
.tr-pix { display: inline-flex; align-items: center; gap: 5px; padding: 3px 8px; border-radius: 20px; cursor: pointer; color: #fff; font-size: 10px; font-weight: bold;
  background: linear-gradient(#1d3b3a, #142827); border: 1px solid rgba(50,215,190,.45); transition: border-color .12s, box-shadow .12s; }
.tr-pix:hover { border-color: #32d7be; box-shadow: 0 0 8px rgba(50,215,190,.4); }
/* ícone do Pix */
.pix-icon { width: 14px; height: 14px; color: #32d7be; filter: drop-shadow(0 0 3px rgba(50,215,190,.6)); }
.pix-badge { flex: none; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 13px; color: #32d7be;
  background: radial-gradient(circle at 30% 25%, rgba(50,215,190,.3), rgba(50,215,190,.08)); border: 1px solid rgba(50,215,190,.45); }
.pix-badge svg { width: 26px; height: 26px; filter: drop-shadow(0 0 5px rgba(50,215,190,.6)); }
/* nick do PixMon: verde achou, vermelho não achou */
#pix-to.ok { border-color: #3fdc5a; box-shadow: 0 0 0 3px rgba(63,220,90,.15); color: #8dff9e; }
#pix-to.bad { border-color: #ff4b4b; box-shadow: 0 0 0 3px rgba(255,75,75,.15); color: #ff8a8a; }
.pix-check { min-height: 13px; margin-top: -6px; font-size: 10px; font-weight: bold; color: var(--muted); }
.pix-check.ok { color: #3fdc5a; } .pix-check.bad { color: #ff5b5b; }
#pix-next:disabled { opacity: .4; cursor: not-allowed; }
.pix-amount.locked { opacity: .45; } .pix-amount.locked input { cursor: not-allowed; }
.pix-quick button:disabled { opacity: .4; cursor: not-allowed; }
.pix-amount.bad { border-color: #ff4b4b; box-shadow: 0 0 0 3px rgba(255,75,75,.15); } .pix-amount.bad input, .pix-amount.bad span { color: #ff6b6b !important; }
/* AutoAbrir */
.tr-auto { display: flex; align-items: center; gap: 7px; cursor: pointer; color: #c9d0dd; font-size: 10px; font-weight: bold; user-select: none; }
.tr-auto input { display: none; }
.tr-switch { position: relative; width: 28px; height: 15px; border-radius: 10px; background: #2a303c; border: 1px solid #3a4152; transition: background .15s; }
.tr-switch::after { content: ''; position: absolute; top: 1px; left: 1px; width: 11px; height: 11px; border-radius: 50%; background: #8a93a3; transition: transform .15s, background .15s; }
.tr-auto input:checked + .tr-switch { background: rgba(63,220,90,.3); border-color: rgba(63,220,90,.6); }
.tr-auto input:checked + .tr-switch::after { transform: translateX(13px); background: #3fdc5a; }
/* loja do NPC: verde o que dá para comprar/vender, vermelho o que não dá */
.npc-item.can .pr { color: #4ee06a !important; }
.npc-item.cant { opacity: .75; } .npc-item.cant .pr { color: #ff5b5b !important; } .npc-item.cant .nm { color: #c98a8a; }
.npc-item.cant:hover { cursor: not-allowed; }
.pix-logo { display: inline-grid; place-items: center; width: 16px; height: 16px; border-radius: 4px; transform: rotate(0deg); color: #0d2b28; font-size: 11px;
  background: linear-gradient(135deg, #5ff0d6, #1fae98); box-shadow: 0 0 6px rgba(50,215,190,.5); }
.pix-logo.big { width: 40px; height: 40px; border-radius: 12px; font-size: 24px; }
.pix-card { position: relative; width: min(380px, 92vw); display: flex; flex-direction: column; gap: 10px; padding: 18px; border-radius: 18px;
  background: #0f1517; border: 1px solid rgba(50,215,190,.35); box-shadow: 0 30px 80px rgba(0,0,0,.7); animation: card-in .2s ease-out; }
.pix-card #pix-form, .pix-card #pix-confirm { display: flex; flex-direction: column; gap: 10px; }
.pix-card .hidden { display: none !important; }
.pix-head { display: flex; align-items: center; gap: 11px; padding-right: 30px; }
.pix-head h2 { color: #fff; font-size: 17px; } .pix-head small { color: var(--muted); font-size: 11px; } .pix-head small b { color: #5ff0d6; }
.pix-amount { display: flex; align-items: center; border-radius: 9px; border: 1px solid var(--line2); background: #0b0d13; }
.pix-amount span { padding: 0 4px 0 11px; color: #5ff0d6; font-weight: bold; } .pix-amount input { flex: 1; border: 0 !important; background: none !important; padding: 9px 11px 9px 2px; color: #fff; }
.pix-quick { display: flex; gap: 5px; } .pix-quick button { flex: 1; padding: 5px; border-radius: 8px; cursor: pointer; font-size: 10px; font-weight: bold; color: #bff5ec;
  background: #142827; border: 1px solid rgba(50,215,190,.3); } .pix-quick button:hover { border-color: #32d7be; }
.pix-confirm-box { display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 18px; border-radius: 14px; text-align: center;
  background: radial-gradient(circle at 50% 0%, rgba(50,215,190,.18), transparent 70%), #0b1112; border: 1px solid rgba(50,215,190,.3); }
.pix-confirm-box small { color: var(--muted); font-size: 11px; } .pix-confirm-box b { color: #fff; font-size: 22px; } .pix-confirm-box b + small + b { font-size: 16px; color: #5ff0d6; }
.pix-card .run-actions .btn.primary { background: linear-gradient(#5ff0d6, #1fae98); color: #082220; border-color: #137a6a; }

/* dinheiro no trade */
.trade-money { display: flex; align-items: center; gap: 5px; margin-top: 6px; padding: 4px 6px; border-radius: 9px; background: #0e1118; border: 1px solid #222837; }
.trade-money .cifrao { color: #4ee06a; font-weight: bold; padding-left: 3px; }
.trade-money input { flex: 1; min-width: 0; padding: 4px 6px; border-radius: 6px; border: 1px solid var(--line2); background: #0b0d13; color: #fff; }
.trade-money .btn { padding: 4px 9px; font-size: 10px; }
.trade-money.over { border-color: #ff4d4d; box-shadow: 0 0 8px rgba(255,60,60,.35); }
.trade-money.over input { border-color: #ff4d4d; color: #ff6b6b; background: #1d0b0e; }
.trade-money-msg { margin-top: 4px; font-size: 11px; font-weight: bold; color: #ff6b6b; }
.trade-money-msg.hidden { display: none; }
.trade-money.theirs b { color: var(--muted); font-size: 12px; } .trade-money.theirs.has b { color: #4ee06a; }

/* casa: à venda ou com dono */
.house-card { position: relative; width: min(400px, 92vw); display: flex; flex-direction: column; gap: 12px; padding: 0 0 18px; border-radius: 18px; overflow: hidden;
  background: #10131b; border: 1px solid rgba(63,220,90,.4); box-shadow: 0 30px 80px rgba(0,0,0,.7); animation: card-in .2s ease-out; }
.house-card.owned { border-color: rgba(255,203,60,.4); }
.house-hero { display: flex; align-items: center; gap: 12px; padding: 18px 50px 16px 18px;
  background: radial-gradient(circle at 15% 30%, rgba(63,220,90,.3), transparent 60%), linear-gradient(160deg, #1d2a22, #141720); }
.house-card.owned .house-hero { background: radial-gradient(circle at 15% 30%, rgba(255,203,60,.28), transparent 60%), linear-gradient(160deg, #2a2618, #141720); }
.house-icon { flex: none; width: 50px; height: 50px; display: grid; place-items: center; font-size: 28px; border-radius: 14px; background: rgba(0,0,0,.3); }
.house-tag { display: inline-block; padding: 2px 9px; border-radius: 20px; font-size: 10px; font-weight: bold; color: #8dff9e; background: rgba(63,220,90,.15); border: 1px solid rgba(63,220,90,.45); }
.house-card.owned .house-tag { color: var(--gold); background: rgba(255,203,60,.12); border-color: rgba(255,203,60,.4); }
.house-hero h2 { color: #fff; font-size: 17px; margin-top: 4px; } .house-hero small { color: var(--muted); font-size: 11px; }
.house-facts { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; padding: 0 16px; }
.house-facts > div { display: flex; flex-direction: column; gap: 2px; padding: 10px; border-radius: 12px; background: #171b27; border: 1px solid var(--line); }
.house-facts > div.hidden { display: none; }
.house-facts small { color: var(--muted); font-size: 10px; text-transform: uppercase; letter-spacing: .5px; } .house-facts b { color: #fff; font-size: 14px; }
.house-msg { padding: 0 18px; color: #c9d0dd; font-size: 12px; }
.house-card .run-actions { padding: 0 16px; } .house-card .run-actions.hidden { display: none; }
.house-card .run-actions .btn.primary { background: linear-gradient(#5be06d, #2c9a3c); color: #06210c; border-color: #1d6a29; }
.house-card .run-actions .btn.primary:disabled { opacity: .4; cursor: not-allowed; }

/* Run na janela Treinador */
.tr-run { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px 2px 3px; border-radius: 20px; cursor: pointer; color: #fff; font-size: 10px; font-weight: bold;
  background: linear-gradient(#2b3346, #1d2230); border: 1px solid rgba(255,203,60,.4); transition: border-color .12s, box-shadow .12s; }
.tr-run:hover { border-color: var(--gold); box-shadow: 0 0 8px rgba(255,203,60,.35); }
.tr-run img { width: 20px; height: 20px; }
.tr-run kbd { padding: 0 5px; border-radius: 4px; background: #0b0d13; border: 1px solid #3a4152; color: var(--gold); font: bold 9px Consolas, monospace; }
.tr-run kbd.hidden { display: none; }
.run-card { position: relative; width: min(380px, 92vw); display: flex; flex-direction: column; gap: 10px; padding: 18px; border-radius: 18px;
  background: #10131b; border: 1px solid rgba(255,203,60,.3); box-shadow: 0 30px 80px rgba(0,0,0,.7); animation: card-in .2s ease-out; }
.run-head { display: flex; align-items: center; gap: 10px; padding-right: 30px; } .run-head img { width: 36px; height: 36px; }
.run-head h2 { color: #fff; font-size: 17px; } .run-head small { color: var(--muted); font-size: 11px; }
.run-field { display: flex; flex-direction: column; gap: 5px; color: #a8b1c3; font-size: 11px; font-weight: bold; }
.run-field input { padding: 9px 11px; border-radius: 9px; border: 1px solid var(--line2); background: #0b0d13; color: #fff; }
.run-keycap { padding: 10px; border-radius: 10px; cursor: pointer; font: bold 14px Consolas, monospace; color: var(--gold); letter-spacing: 1px;
  background: linear-gradient(#232a3a, #171b26); border: 1px solid var(--line2); box-shadow: 0 3px 0 #0b0d13; }
.run-keycap.listening { border-color: var(--gold); color: #fff; animation: aim-pulse 1s ease-in-out infinite; }
.run-hint { color: var(--muted); font-size: 10px; margin-top: -4px; }
.run-preview { padding: 8px 10px; border-radius: 9px; background: #0b0d13; color: var(--muted); font-size: 11px; } .run-preview b { color: #ff9f43; }
.run-actions { display: flex; justify-content: flex-end; gap: 6px; }
.run-actions .btn.primary { background: linear-gradient(#ffd75a, #d29a1c); color: #1a1305; font-weight: bold; border-color: #7a5208; }

/* voando (fly): subir e descer de andar */
.fly-pad { position: absolute; right: 12px; bottom: 12px; z-index: 6; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 6px;
  border-radius: 14px; background: rgba(14,17,24,.85); border: 1px solid rgba(120,190,255,.45); box-shadow: 0 10px 26px rgba(0,0,0,.5); }
.fly-pad.hidden { display: none; }
.fly-pad button { width: 38px; height: 32px; border-radius: 9px; border: 1px solid rgba(120,190,255,.4); cursor: pointer; font-size: 15px; color: #e8f4ff;
  background: linear-gradient(#2b3a52, #1b2536); transition: transform .1s, border-color .12s; }
.fly-pad button:hover:not(:disabled) { border-color: #8fd0ff; transform: translateY(-1px); box-shadow: 0 0 10px rgba(120,190,255,.4); }
.fly-pad button:disabled { opacity: .35; cursor: not-allowed; }
/* Ghost do Dono: o mesmo painel, em tom fantasma */
.fly-pad.ghost { border-color: rgba(200,225,255,.55) !important; box-shadow: 0 0 14px rgba(170,220,255,.35); }
.fly-pad.ghost .fly-alt small { font-size: 0; }
.fly-pad.ghost .fly-alt small::before { content: '👻 andar'; font-size: 9px; }
.fly-alt { display: flex; flex-direction: column; align-items: center; line-height: 1; padding: 2px 0; }
.fly-alt small { color: #8aa3c0; font-size: 9px; text-transform: uppercase; letter-spacing: .5px; } .fly-alt b { color: #fff; font-size: 15px; }

/* janela do Teleport (VIP) */
.tp-card { position: relative; width: min(520px, 94vw); max-height: 86vh; display: flex; flex-direction: column; border-radius: 20px; overflow: hidden;
  background: #10131b; border: 1px solid rgba(160,120,255,.35); box-shadow: 0 30px 80px rgba(0,0,0,.7); animation: card-in .2s ease-out; }
.tp-head { display: flex; align-items: center; gap: 12px; padding: 18px 50px 16px 18px;
  background: radial-gradient(circle at 12% 30%, rgba(160,120,255,.35), transparent 60%), linear-gradient(160deg, #241f3a, #141720); }
.tp-head img { width: 40px; height: 30px; image-rendering: pixelated; filter: drop-shadow(0 0 8px rgba(170,130,255,.8)); }
.tp-head h2 { color: #fff; font-size: 18px; } .tp-head small { color: #b8b2d6; font-size: 11px; }
.tp-head > div { flex: 1; }
.tp-vip { padding: 3px 10px; border-radius: 20px; font-size: 11px; font-weight: bold; color: #1a1305; background: linear-gradient(#ffe27a, #e0a92a); box-shadow: 0 2px 0 #8a6412; }
.tp-search { margin: 12px 16px 6px; padding: 9px 12px; border-radius: 10px; border: 1px solid var(--line2); background: #0b0d13; color: #fff; }
.tp-search:focus { outline: none; border-color: #a07cff; box-shadow: 0 0 0 3px rgba(160,124,255,.15); }
.tp-grid { display: flex; flex-direction: column; gap: 14px; padding: 6px 16px 18px; overflow: auto; }
.tp-cont h4 { display: flex; align-items: center; gap: 7px; margin-bottom: 7px; color: #d9cfff; font-size: 12px; text-transform: uppercase; letter-spacing: .8px; }
.tp-cont h4 small { margin-left: auto; padding: 1px 8px; border-radius: 10px; background: rgba(160,124,255,.15); color: #b8a6ff; font-size: 10px; }
.tp-cont h4::after { content: ''; flex: 1; height: 1px; order: 2; background: linear-gradient(90deg, rgba(160,124,255,.35), transparent); }
.tp-cont h4 small { order: 3; }
.tp-towns { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 6px; }
.tp-town { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border-radius: 11px; cursor: pointer; text-align: left;
  background: linear-gradient(180deg, #1b2030, #151925); border: 1px solid var(--line); color: #fff; font-size: 12px; transition: border-color .12s, transform .12s; }
.tp-town:hover { border-color: #a07cff; transform: translateY(-1px); box-shadow: 0 6px 16px rgba(0,0,0,.4); }
.tp-pin { filter: drop-shadow(0 2px 3px rgba(0,0,0,.6)); }

/* dica da habilidade de campo */
.hab-tip { position: fixed; z-index: 500; display: flex; gap: 9px; align-items: center; max-width: 240px; padding: 8px 11px; border-radius: 10px; pointer-events: none;
  background: linear-gradient(160deg, #222839, #141823); border: 1px solid rgba(255,203,60,.45); box-shadow: 0 10px 26px rgba(0,0,0,.6); animation: card-in .12s ease-out; }
.hab-tip.hidden { display: none; }
.hab-tip img { flex: none; width: 24px; height: 18px; image-rendering: pixelated; }
.hab-tip b { display: block; color: var(--gold); font-size: 12px; }
.hab-tip span { display: block; color: #c9d0dd; font-size: 10px; line-height: 1.35; }

/* habilidades na ficha do pokémon (passar o mouse) e na Pokédex */
.pt-habs { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin: 6px 0 2px; }
.pt-habs small { color: var(--muted); font-size: 9px; text-transform: uppercase; letter-spacing: .5px; margin-right: 2px; }
.pt-habs span { display: inline-flex; align-items: center; gap: 4px; padding: 2px 7px 2px 4px; border-radius: 20px; font-size: 10px; color: #fff;
  background: rgba(255,203,60,.10); border: 1px solid rgba(255,203,60,.3); }
.pt-habs img { width: 16px; height: 12px; image-rendering: pixelated; }
.dex-habs { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 6px; margin-bottom: 6px; }
.dex-hab { display: flex; gap: 8px; align-items: center; padding: 7px 9px; border-radius: 10px; background: var(--panel2); border: 1px solid var(--line); }
.dex-hab img { flex: none; width: 24px; height: 18px; image-rendering: pixelated; }
.dex-hab b { display: block; color: var(--gold); font-size: 11px; } .dex-hab span { display: block; color: var(--muted); font-size: 10px; line-height: 1.3; }

/* VIP: tag dourada (Treinador, Conta) e as abas Casa/VIP da Conta */
.vip-tag { display: inline-block; margin-left: 6px; padding: 0 6px; border-radius: 4px; font-size: 10px; font-weight: 800; letter-spacing: .5px; line-height: 15px; color: #3a2600; background: linear-gradient(180deg, #ffe27a, #f0a800); box-shadow: 0 0 6px rgba(255,200,40,.45); vertical-align: middle; }
.vip-tag::before { content: '★ '; }
.vip-tag.hidden { display: none; }
.acc-house-card { display: flex; align-items: center; gap: 12px; padding: 12px 14px; margin-bottom: 12px; border-radius: 12px; background: linear-gradient(135deg, rgba(80,160,255,.14), rgba(80,160,255,.04)); border: 1px solid rgba(120,180,255,.25); }
.acc-house-card.vip { background: linear-gradient(135deg, rgba(255,200,40,.18), rgba(255,200,40,.04)); border-color: rgba(255,200,40,.35); }
.acc-house-card .ah-icon { font-size: 30px; line-height: 1; }
.acc-house-card b { display: block; font-size: 15px; }
.acc-house-card small { opacity: .75; }
#acc-house .empty small, #acc-vip .empty small { display: block; margin-top: 6px; opacity: .7; }

/* tag VIP: contorno escuro + aro dourado e a cor pulsando de leve (igual à do mapa) */
.vip-tag { border: 1px solid rgba(70,40,0,.9); outline: 1.5px solid rgba(255,220,110,.6); outline-offset: 1px; animation: vip-pulse 2.8s ease-in-out infinite; }
@keyframes vip-pulse { 0%, 100% { filter: brightness(1); outline-color: rgba(255,220,110,.45); } 50% { filter: brightness(1.15); outline-color: rgba(255,220,110,.85); } }
/* texto da tag VIP sempre escuro (a .trainer-name span pintava de dourado e sumia no fundo dourado) */
.vip-tag, .trainer-name .vip-tag, .chat-msg .vip-tag { color: #3a2600 !important; font-size: 10px !important; text-shadow: 0 1px 0 rgba(255,240,180,.6); }
.trainer-name { padding: 3px 0 3px 3px; }
.trainer-name .vip-tag { margin-left: 7px; }
.chat-msg .vip-tag.chat-vip { margin: 0 5px 0 2px; padding: 0 4px; font-size: 9px !important; line-height: 13px; outline-width: 1px; }

/* tag do Dono: vermelha e branca (chat, Conta e janela Treinador; não vai em cima do nick) */
.owner-tag { display: inline-block; margin-left: 6px; padding: 0 6px; border-radius: 4px; font-size: 10px; font-weight: 900; letter-spacing: .6px; line-height: 15px;
  color: #fff !important; background: linear-gradient(180deg, #ff3b3b, #b30000); border: 1px solid #fff; outline: 1.5px solid rgba(255,70,70,.7); outline-offset: 1px;
  box-shadow: 0 0 8px rgba(255,40,40,.55); text-shadow: 0 1px 0 rgba(90,0,0,.9); vertical-align: middle; animation: owner-pulse 2.2s ease-in-out infinite; }
.owner-tag::before { content: '♛ '; }
.owner-tag.hidden { display: none; }
.trainer-name .owner-tag { margin-left: 7px; font-size: 9px !important; color: #fff !important; }
.server-banner .owner-tag { margin: 0 3px 0 0; font-size: 10px; }
.chat-msg .owner-tag.chat-vip { margin: 0 4px 0 2px; padding: 0 4px; font-size: 9px !important; line-height: 13px; outline-width: 1px; }
/* tag GM no chat (laranja, ao lado do nick em todas as abas) */
.gm-tag { display: inline-block; margin-left: 6px; padding: 0 6px; border-radius: 4px; font-size: 10px; font-weight: 900; letter-spacing: .6px; line-height: 15px;
  color: #fff !important; background: linear-gradient(180deg, #ffa13a, #d35400); border: 1px solid #ffe2bf; outline: 1.5px solid rgba(255,150,40,.6); outline-offset: 1px;
  box-shadow: 0 0 8px rgba(255,130,20,.55); text-shadow: 0 1px 0 rgba(90,30,0,.9); vertical-align: middle; animation: gm-pulse 2.2s ease-in-out infinite; }
.gm-tag::before { content: '★ '; }
@keyframes gm-pulse { 0%, 100% { filter: brightness(1); outline-color: rgba(255,150,40,.45); } 50% { filter: brightness(1.15); outline-color: rgba(255,235,200,.9); } }
.gm-tag.hidden { display: none; }
.trainer-name .gm-tag { margin-left: 7px; font-size: 9px !important; }
.trainer-name b.gm-name { color: #ff9a2a !important; }
.chat-msg .gm-tag.chat-vip { margin: 0 4px 0 2px; padding: 0 4px; font-size: 9px !important; line-height: 13px; }
@keyframes owner-pulse { 0%, 100% { filter: brightness(1); outline-color: rgba(255,70,70,.5); } 50% { filter: brightness(1.18); outline-color: rgba(255,255,255,.9); } }

/* modal de usar shiny stone / addon: aviso, liberados em destaque e os pokémon em que o addon serve */
.pick-note { margin: 8px 2px 6px; font-size: 12px; opacity: .8; }
.pick-note.bad { opacity: 1; color: #ff7a7a; background: rgba(255,80,80,.1); border: 1px solid rgba(255,80,80,.3); padding: 8px 10px; border-radius: 8px; }
.pick-row.ok { border-color: rgba(90,220,120,.45) !important; }
.pick-row:disabled { opacity: .45; cursor: not-allowed; }
.pick-species { display: flex; flex-wrap: wrap; gap: 8px; }
.pick-sp { display: flex; flex-direction: column; align-items: center; gap: 3px; width: 82px; padding: 8px 4px; border-radius: 10px; background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.08); }
.pick-sp.have { border-color: rgba(90,220,120,.5); }
.pick-sp b { font-size: 10px; text-align: center; line-height: 1.15; }

/* ficha do addon (hover na mochila e na aba Addons da staff) */
.addon-tip .at-head { font-size: 14px; margin-bottom: 4px; }
.addon-tip > small { opacity: .65; font-size: 11px; }
.addon-tip .at-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 6px; margin-top: 6px; }
.addon-tip .at-sp { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 6px 4px; border-radius: 9px; background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.07); }
.addon-tip .at-sp.have { border-color: rgba(90,220,120,.55); background: rgba(90,220,120,.08); }
.addon-tip .at-sp i { display: block; width: 44px; height: 44px; }
.addon-tip .at-sp span { font-size: 11px; font-weight: 700; text-align: center; line-height: 1.15; }
.addon-tip .at-sp em { font-style: normal; font-size: 9px; color: #6fe08c; }
.addon-tip .at-foot { margin-top: 8px; font-size: 10px; opacity: .6; }

/* aba Addons do painel da staff */
.st-addons { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 8px; margin-top: 8px; max-height: 52vh; overflow-y: auto; }
.st-addon { display: flex; flex-direction: column; gap: 6px; padding: 9px; border-radius: 10px; background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.08); }
.st-addon:hover { border-color: rgba(255,200,80,.45); }
.st-addon .sa-head { display: flex; align-items: center; gap: 8px; cursor: help; }
.st-addon .sa-head canvas { width: 32px; height: 32px; image-rendering: pixelated; }
.st-addon .sa-head b { display: block; font-size: 12px; }
.st-addon .sa-head small { opacity: .55; font-size: 10px; }
.st-addon .sa-pokes { display: flex; gap: 4px; flex-wrap: wrap; cursor: help; }
.st-addon .sa-pokes canvas { width: 36px; height: 36px; border-radius: 6px; background: rgba(255,255,255,.04); }
.st-addon .sa-btns { display: flex; gap: 6px; }
.st-addon .sa-btns .btn { flex: 1; font-size: 11px; padding: 5px 6px; }
.st-row .st-to { max-width: 190px; }

/* lista "ver quais pokémon viram shiny" no modal da shiny stone */
.pick-more { width: 100%; margin-top: 10px; }
.shiny-q { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; flex-wrap: wrap; }
.shiny-q label { display: flex; align-items: center; gap: 6px; font-size: 12px; }
.shiny-q input { width: 64px; padding: 5px 8px; border-radius: 8px; border: 1px solid rgba(255,255,255,.15); background: rgba(0,0,0,.3); color: inherit; font-weight: 700; }
.shiny-q #shiny-count { opacity: .65; font-size: 12px; }
.shiny-q .btn { margin-left: auto; }
.shiny-list { display: flex; flex-direction: column; gap: 5px; max-height: 46vh; overflow-y: auto; padding-right: 2px; }
.shiny-row { display: flex; align-items: center; gap: 10px; padding: 5px 10px 5px 6px; border-radius: 9px; background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.07); }
.shiny-row.have { border-color: rgba(90,220,120,.55); background: rgba(90,220,120,.08); }
.shiny-row > div { flex: 1; display: flex; flex-direction: column; line-height: 1.2; }
.shiny-row small { opacity: .7; font-size: 11px; }
.shiny-row em { font-style: normal; font-size: 10px; color: #6fe08c; }
.shiny-row .sh-stones { font-weight: 800; font-size: 13px; color: #8ff0a4; white-space: nowrap; }
.shiny-row .sh-stones.short { color: #ff8a8a; }

.shiny-row .sh-stones { display: flex; align-items: center; gap: 3px; }
.shiny-row .sh-stones canvas { width: 22px; height: 22px; image-rendering: pixelated; }
#shiny-q-icon { width: 24px; height: 24px; image-rendering: pixelated; }

.shiny-row small.sh-lvl-short { color: #ff8a8a; opacity: 1; }

/* limite de FPS na barra de cima */
.fps-cap { margin-left: 4px; padding: 0 2px; height: 18px; font-size: 10px; border-radius: 4px; border: 1px solid var(--line, #333); background: #0b0d13; color: #ffe9a8; cursor: pointer; }

/* ícones dos golpes (moveart.js): desenhados em 64x64 e reduzidos suave, sem serrilhar */
.move-slot .mi, .dex-move canvas, .pt-move canvas { image-rendering: auto; border-radius: 7px; }

/* ---------- level up ---------- */
/* linha do chat: verde brilhando, com uma faixa de luz que passa uma vez */
.chat-msg.levelup { position: relative; overflow: hidden; border-radius: 3px; background: linear-gradient(90deg, rgba(40,200,90,.22), rgba(40,200,90,.05));
  border-left: 2px solid #3be07a; animation: lu-chat-in .5s ease both; }
.chat-msg.levelup .text { color: #5cff95 !important; font-weight: bold; text-shadow: 0 0 6px rgba(60,255,130,.6); animation: lu-chat-glow 1.4s ease-in-out 3; }
.chat-msg.levelup::after { content: ''; position: absolute; top: 0; bottom: 0; left: -40%; width: 30%; transform: skewX(-20deg);
  background: linear-gradient(90deg, transparent, rgba(160,255,190,.45), transparent); animation: lu-chat-shine 1.6s ease-out .2s 2 both; pointer-events: none; }
@keyframes lu-chat-in { from { opacity: 0; transform: translateX(-10px); } }
@keyframes lu-chat-glow { 50% { text-shadow: 0 0 12px rgba(60,255,130,1), 0 0 22px rgba(60,255,130,.5); } }
@keyframes lu-chat-shine { to { left: 120%; } }

/* banner no meio da tela */
.lvlup { position: fixed; left: 50%; top: 96px; z-index: 250; width: 0; height: 0; pointer-events: none; }
.lvlup.out { animation: lu-out .6s ease forwards; }
@keyframes lu-out { to { opacity: 0; transform: translateY(-30px); } }
.lvlup-rays { position: absolute; left: -210px; top: -210px; width: 420px; height: 420px; border-radius: 50%; opacity: .55;
  background: repeating-conic-gradient(from 0deg, rgba(90,255,150,.35) 0 8deg, transparent 8deg 22deg);
  mask-image: radial-gradient(circle, #000 15%, transparent 68%); -webkit-mask-image: radial-gradient(circle, #000 15%, transparent 68%);
  animation: lu-rays 7s linear infinite, lu-pop-in .5s ease both; }
@keyframes lu-rays { to { transform: rotate(360deg); } }
.lvlup-sparks i { position: absolute; left: -4px; top: -4px; width: 8px; height: 8px; border-radius: 50%; background: #b6ffcf;
  box-shadow: 0 0 10px 3px rgba(80,255,140,.8); opacity: 0; animation: lu-spark 1.1s ease-out var(--d) both; }
@keyframes lu-spark { 0% { opacity: 1; transform: rotate(var(--a)) translateY(0) scale(1); } 100% { opacity: 0; transform: rotate(var(--a)) translateY(-170px) scale(.3); } }
.lvlup-card { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); min-width: 300px; padding: 16px 28px 14px; text-align: center; white-space: nowrap;
  border-radius: 16px; background: linear-gradient(160deg, rgba(14,40,24,.92), rgba(6,18,11,.94)); border: 1px solid rgba(90,255,150,.55);
  box-shadow: 0 0 0 1px rgba(0,0,0,.6), 0 0 30px rgba(60,255,130,.35), 0 18px 40px rgba(0,0,0,.6), inset 0 1px rgba(255,255,255,.08);
  animation: lu-card-in .65s cubic-bezier(.2,1.6,.4,1) both; }
@keyframes lu-card-in { from { opacity: 0; transform: translate(-50%, -50%) scale(.3); } }
@keyframes lu-pop-in { from { opacity: 0; transform: scale(.3); } }
.lvlup-title { font-size: 34px; font-weight: 900; letter-spacing: 5px; line-height: 1; color: transparent;
  background: linear-gradient(90deg, #3be07a, #eafff0, #5cff95, #2bbf63) 0 0 / 250% 100%; -webkit-background-clip: text; background-clip: text;
  filter: drop-shadow(0 2px 0 #0b4a22) drop-shadow(0 0 14px rgba(60,255,130,.55)); animation: lu-shine 2.2s linear infinite; }
@keyframes lu-shine { to { background-position: -250% 0; } }
.lvlup-levels { display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 10px; font-weight: bold; }
.lvlup-from { color: #9fb8a8; font-size: 15px; }
.lvlup-arrow { color: #5cff95; font-size: 18px; animation: lu-arrow .9s ease-in-out infinite; }
@keyframes lu-arrow { 50% { transform: translateX(5px); } }
.lvlup-to { color: #fff; font-size: 22px; padding: 2px 12px; border-radius: 10px; background: linear-gradient(#2fcf6c, #17863f);
  box-shadow: 0 3px 0 #0b4a22, 0 0 18px rgba(60,255,130,.5); animation: lu-to 1s cubic-bezier(.3,1.8,.5,1) .35s both; }
@keyframes lu-to { from { transform: scale(0); } }
.lvlup-sub { margin-top: 9px; font-size: 12px; color: #b8e6c8; }
/* level up do pokémon: o mesmo banner em vermelho, com a foto dele, um pouco abaixo do banner do treinador */
.lvlup-card { display: flex; align-items: center; justify-content: center; gap: 14px; }
.lvlup-pic { width: 56px; height: 56px; flex: none; border-radius: 12px; image-rendering: pixelated;
  background: radial-gradient(circle at 50% 60%, rgba(255,90,100,.35), transparent 70%), rgba(0,0,0,.35); box-shadow: inset 0 0 0 1px rgba(255,120,130,.35); }
/* os dois no alto da tela; se o do treinador e o do pokémon aparecem juntos, o segundo vai logo abaixo do primeiro */
.lvlup.stack { top: 238px; }
.lvlup.poke .lvlup-card { background: linear-gradient(160deg, rgba(48,12,16,.93), rgba(20,6,8,.95)); border-color: rgba(255,90,100,.6);
  box-shadow: 0 0 0 1px rgba(0,0,0,.6), 0 0 30px rgba(255,60,70,.38), 0 18px 40px rgba(0,0,0,.6), inset 0 1px rgba(255,255,255,.08); }
.lvlup.poke .lvlup-title { background-image: linear-gradient(90deg, #ff4b5c, #fff0f1, #ff7a86, #d92a3c);
  filter: drop-shadow(0 2px 0 #5a0b14) drop-shadow(0 0 14px rgba(255,60,80,.55)); }
.lvlup.poke .lvlup-arrow { color: #ff7a86; }
.lvlup.poke .lvlup-to { background: linear-gradient(#ff4b5c, #a3172a); box-shadow: 0 3px 0 #5a0b14, 0 0 18px rgba(255,60,80,.5); }
.lvlup.poke .lvlup-from { color: #c9a0a5; }
.lvlup.poke .lvlup-sub { color: #f2c4c9; }
.lvlup.poke .lvlup-rays { background: repeating-conic-gradient(from 0deg, rgba(255,90,100,.35) 0 8deg, transparent 8deg 22deg); }
.lvlup.poke .lvlup-sparks i { background: #ffd0d5; box-shadow: 0 0 10px 3px rgba(255,70,90,.8); }
/* linha do chat do level up do pokémon: vermelha */
.chat-msg.levelup.poke { background: linear-gradient(90deg, rgba(220,50,70,.24), rgba(220,50,70,.05)); border-left-color: #ff5a6a; }
.chat-msg.levelup.poke .text { color: #ff8a96 !important; text-shadow: 0 0 6px rgba(255,70,90,.6); animation-name: lu-chat-glow-red; }
@keyframes lu-chat-glow-red { 50% { text-shadow: 0 0 12px rgba(255,70,90,1), 0 0 22px rgba(255,70,90,.5); } }
@media (prefers-reduced-motion: reduce) { .lvlup *, .chat-msg.levelup, .chat-msg.levelup * { animation: none !important; } }

/* ---------------------------------------------------------------- Mestre Pokémon (master.js) */
.master-tag { display: inline-block; margin-left: 6px; padding: 0 6px; border-radius: 4px; font-size: 10px; font-weight: 800; letter-spacing: .5px; line-height: 15px;
  color: #fff !important; background: linear-gradient(180deg, #c77dff, #7b2cbf); border: 1px solid rgba(40,0,70,.9); outline: 1.5px solid rgba(214,160,255,.6);
  outline-offset: 1px; box-shadow: 0 0 8px rgba(170,90,255,.55); text-shadow: 0 1px 0 rgba(40,0,70,.8); vertical-align: middle; animation: master-pulse 2.4s ease-in-out infinite; }
.master-tag::before { content: '👑 '; }
.master-tag.hidden { display: none; }
.master-tag.pending { cursor: pointer; animation: master-pulse .9s ease-in-out infinite; }
.master-tag.big { margin: 0; padding: 3px 12px; font-size: 13px; line-height: 18px; border-radius: 8px; }
.trainer-name .master-tag { margin-left: 7px; font-size: 9px !important; }
.chat-msg .master-tag.chat-vip { margin: 0 4px 0 2px; padding: 0 4px; font-size: 9px !important; line-height: 13px; outline-width: 1px; }
.chat-msg .master-tag.chat-vip::before { content: ''; }
@keyframes master-pulse { 0%, 100% { filter: brightness(1); outline-color: rgba(214,160,255,.45); } 50% { filter: brightness(1.2); outline-color: rgba(214,160,255,.95); } }
.btn.master { background: linear-gradient(#a55eea, #6c2bb3); border-color: #4a1680; color: #fff; font-weight: bold; }
.btn.master:hover:not(:disabled) { filter: brightness(1.12); }
.btn:disabled { opacity: .5; cursor: not-allowed; }

/* nick roxo do mestre no canto de cima do mapa, com a foto do lendário dele */
#master-board { position: absolute; top: 8px; right: 8px; z-index: 5; display: flex; flex-direction: column; gap: 6px; align-items: flex-end; pointer-events: auto; }
#master-board.hidden { display: none; }
.mb-row { display: flex; align-items: center; gap: 8px; padding: 4px 6px 4px 12px; border-radius: 10px; background: linear-gradient(90deg, rgba(40,10,70,.55), rgba(25,6,45,.9));
  border: 1px solid rgba(190,120,255,.55); box-shadow: 0 0 14px rgba(150,60,255,.35); animation: master-glow 2.6s ease-in-out infinite; }
.mb-text { display: flex; flex-direction: column; align-items: flex-end; line-height: 1.1; }
.mb-text small { font-size: 9px; color: #d8b4ff; letter-spacing: .4px; text-transform: uppercase; }
.mb-text b { font-size: 14px; color: #c77dff; text-shadow: 0 0 6px rgba(170,80,255,.9), 1px 1px #000; }
.mb-row:not(.online) { opacity: .75; }
.mb-foto { width: 32px; height: 32px; border-radius: 7px; background: rgba(0,0,0,.45); border: 1px solid rgba(190,120,255,.5); image-rendering: pixelated; }
.mb-row { cursor: pointer; }
.mb-row.none { opacity: .85; filter: saturate(.45); animation: none; box-shadow: 0 0 8px rgba(120,60,180,.25); }
.mb-row.none .mb-text b { font-size: 12px; color: #b9a6d6; text-shadow: 1px 1px #000; }
div.mb-foto.empty { display: flex; align-items: center; justify-content: center; font-size: 17px; }
/* bolinha de status do mestre: verde pulsando online, cinza offline */
.mb-status { display: inline-flex; align-items: center; gap: 4px; font-size: 9px; font-weight: bold; text-transform: uppercase; letter-spacing: .4px; }
.mb-dot { width: 8px; height: 8px; border-radius: 50%; background: #7a7f8a; box-shadow: 0 0 0 1px rgba(0,0,0,.6); }
.mb-status.on { color: #6dff8f; }
.mb-status.on .mb-dot { background: #3dff6a; animation: mb-online 1.6s ease-in-out infinite; }
.mb-status.off { color: #9a9fab; }
@keyframes mb-online { 0%, 100% { box-shadow: 0 0 0 1px rgba(0,0,0,.6), 0 0 3px #3dff6a; } 50% { box-shadow: 0 0 0 1px rgba(0,0,0,.6), 0 0 9px #3dff6a; } }
@keyframes master-glow { 0%, 100% { box-shadow: 0 0 10px rgba(150,60,255,.3); } 50% { box-shadow: 0 0 20px rgba(170,80,255,.65); } }

/* "o Mestre Pokémon está na área" e os anúncios dele */
.master-alert { position: fixed; z-index: 410; top: 92px; left: 50%; transform: translateX(-50%); display: flex; gap: 10px; align-items: center; padding: 10px 20px;
  border-radius: 14px; background: linear-gradient(180deg, rgba(60,16,100,.95), rgba(28,6,50,.95)); border: 1px solid rgba(200,140,255,.7); color: #f1e2ff;
  font-weight: bold; font-size: 14px; text-shadow: 1px 1px #000; box-shadow: 0 10px 30px rgba(0,0,0,.55), 0 0 26px rgba(160,70,255,.5); pointer-events: none;
  animation: banner-in .25s ease-out; transition: opacity .6s, transform .6s; }
.master-alert.out { opacity: 0; transform: translate(-50%, -8px); }
.ma-bolt { color: #e0b0ff; animation: master-pulse .5s ease-in-out infinite; }
.server-banner.master { background: linear-gradient(180deg, rgba(60,16,100,.95), rgba(28,6,50,.95)); border-color: rgba(200,140,255,.7); color: #f1e2ff;
  box-shadow: 0 10px 30px rgba(0,0,0,.55), 0 0 22px rgba(160,70,255,.45); }
.chat-msg.master .text { color: #d59bff; }

/* parabéns: só para o novo mestre */
#master-modal { background: radial-gradient(circle, rgba(70,20,120,.55), rgba(0,0,0,.75)); }
.master-card { position: relative; width: min(500px, 94vw); padding: 30px 28px 24px; text-align: center; border-radius: 22px; overflow: hidden; color: #eadcff;
  background: linear-gradient(180deg, #24103d, #120822); border: 1px solid rgba(200,140,255,.6); box-shadow: 0 30px 80px rgba(0,0,0,.7), 0 0 60px rgba(150,60,255,.45);
  animation: card-in .25s ease-out; display: flex; flex-direction: column; align-items: center; gap: 10px; }
.master-card > * { position: relative; }
.master-rays { position: absolute !important; inset: -50%; background: repeating-conic-gradient(rgba(190,120,255,.14) 0 8deg, transparent 8deg 22deg); animation: master-spin 14s linear infinite; }
@keyframes master-spin { to { transform: rotate(360deg); } }
.master-crown { font-size: 54px; line-height: 1; filter: drop-shadow(0 0 14px rgba(200,130,255,.9)); animation: master-float 2s ease-in-out infinite; }
@keyframes master-float { 50% { transform: translateY(-6px); } }
.master-card h2 { margin: 6px 0 0; font-size: 24px; color: #fff; text-shadow: 0 0 12px rgba(170,80,255,.9); }
.master-card h2 span { color: #d59bff; }
.master-card p { margin: 0; font-size: 14px; line-height: 1.45; }
.master-lead { font-size: 16px !important; }
.master-card b { color: #e2c2ff; }
.master-quote { font-style: italic; color: #c9b0ea; padding: 10px 14px; border-left: 3px solid #a55eea; background: rgba(0,0,0,.25); border-radius: 8px; text-align: left; }
.master-actions { display: flex; gap: 10px; margin-top: 8px; }
.master-actions .btn { min-width: 120px; padding: 9px 16px; font-size: 14px; }

/* escolha do lendário */
.master-pick-card { width: min(760px, 95vw); border-color: rgba(200,140,255,.45); }
.master-pick-head { display: flex; gap: 14px; align-items: center; padding: 18px 50px 6px 18px; }
.master-pick-head h2 { margin: 0; color: #fff; }
.master-pick-head small { color: var(--muted, #9aa); }
.master-pick-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 10px; padding: 8px 16px; overflow: auto; min-height: 0; flex: 1; }
.mp-card { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 10px 6px; border-radius: 12px; cursor: pointer; color: #eee;
  background: #1a1426; border: 1px solid rgba(255,255,255,.08); font: inherit; transition: transform .12s, border-color .12s, box-shadow .12s; }
.mp-card:hover { transform: translateY(-2px); border-color: rgba(200,140,255,.6); }
.mp-card.selected { border-color: #c77dff; box-shadow: 0 0 0 2px rgba(199,125,255,.5), 0 0 18px rgba(160,70,255,.5); background: #2a1640; }
.mp-card b { font-size: 12px; }
.mp-card small { font-size: 10px; color: #b9a6d6; }
/* janela Mestre Pokémon: mestre atual, sobre, detalhes e histórico */
#master-info-modal { background: radial-gradient(circle, rgba(60,16,100,.5), rgba(0,0,0,.75)); }
.master-info-card { width: min(780px, 95vw); max-height: 88vh; display: flex; flex-direction: column; color: #eadcff;
  background: linear-gradient(180deg, #24103d, #120822); border: 1px solid rgba(200,140,255,.6); box-shadow: 0 30px 80px rgba(0,0,0,.7), 0 0 50px rgba(150,60,255,.4); }
#master-info-modal.no-master .master-info-card { filter: saturate(.6); }
.mi-head { display: flex; gap: 14px; align-items: center; padding: 18px 50px 10px 20px; }
.mi-head h2 { margin: 4px 0 0; color: #fff; font-size: 22px; text-shadow: 0 0 12px rgba(170,80,255,.9); }
.mi-head small { color: #c9b0ea; }
.mi-crown { font-size: 42px; filter: drop-shadow(0 0 12px rgba(200,130,255,.9)); animation: master-float 2s ease-in-out infinite; }
#master-info-modal.no-master .mi-crown { filter: grayscale(1) opacity(.6); animation: none; }
.mi-tabs { display: flex; gap: 4px; padding: 0 16px; border-bottom: 1px solid rgba(200,140,255,.25); }
.mi-tab { padding: 8px 14px; border: 1px solid transparent; border-bottom: none; border-radius: 10px 10px 0 0; background: transparent; color: #b9a6d6; font: inherit; font-weight: bold; cursor: pointer; }
.mi-tab:hover { color: #fff; }
.mi-tab.active { color: #fff; background: rgba(120,50,200,.3); border-color: rgba(200,140,255,.35); }
.mi-body { overflow: auto; padding: 14px 20px 20px; min-height: 0; flex: 1; }
.mi-pane.hidden { display: none; }
.mi-pane h3 { margin: 16px 0 6px; font-size: 15px; color: #d59bff; }
.mi-pane h3:first-child { margin-top: 0; }
.mi-pane p { margin: 0 0 8px; line-height: 1.5; font-size: 14px; }
.mi-pane b { color: #e2c2ff; }
.mi-note { padding: 8px 12px; border-radius: 8px; background: rgba(255,200,60,.1); border: 1px solid rgba(255,200,60,.35); }
.mi-list { margin: 0; padding-left: 20px; line-height: 1.55; font-size: 14px; }
.mi-list li { margin-bottom: 4px; }
.mi-empty-banner { text-align: center; padding: 14px 16px; margin-bottom: 14px; border-radius: 12px; background: rgba(0,0,0,.3); border: 1px dashed rgba(200,140,255,.35); }
.mi-empty-banner.hidden { display: none; }
.mi-sad { font-size: 38px; filter: grayscale(.4); }
.mi-hero { display: flex; gap: 16px; align-items: center; padding: 12px; border-radius: 14px; background: rgba(0,0,0,.28); border: 1px solid rgba(200,140,255,.3); }
.mi-char { width: 96px; height: 96px; border-radius: 12px; background: radial-gradient(circle, rgba(170,80,255,.35), transparent 70%); image-rendering: pixelated; }
.mi-hero-info { display: flex; flex-direction: column; gap: 3px; flex: 1; }
.mi-name { font-size: 22px; color: #c77dff !important; text-shadow: 0 0 8px rgba(170,80,255,.9), 1px 1px #000; }
.mi-online { color: #6dff8f; }
.mi-legend { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 8px 14px; border-radius: 12px; min-width: 120px;
  background: linear-gradient(180deg, rgba(255,210,90,.16), rgba(120,50,200,.2)); border: 1px solid rgba(255,210,90,.5); }
.mi-legend small { font-size: 10px; text-transform: uppercase; letter-spacing: .5px; color: #ffd76a; }
.mi-team { display: grid; grid-template-columns: repeat(auto-fill, minmax(112px, 1fr)); gap: 10px; }
.mi-poke { position: relative; display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 10px 6px 8px; border-radius: 12px; text-align: center;
  background: #1a1426; border: 1px solid rgba(255,255,255,.08); }
.mi-poke b { font-size: 12px; }
.mi-poke.shiny { border-color: rgba(120,220,255,.55); box-shadow: 0 0 12px rgba(120,220,255,.25); }
.mi-poke.legendary { border-color: rgba(255,210,90,.7); box-shadow: 0 0 14px rgba(255,200,60,.35); }
.mi-badge { font-size: 9px; font-weight: 800; letter-spacing: .5px; padding: 1px 6px; border-radius: 4px; }
.mi-badge.shiny { background: rgba(120,220,255,.2); color: #9be8ff; }
.mi-badge.leg { background: rgba(255,210,90,.2); color: #ffd76a; }
.mi-hist { display: flex; gap: 10px; align-items: center; padding: 8px 10px; border-radius: 10px; background: rgba(0,0,0,.25); margin-bottom: 6px; }
.mi-hist .info { flex: 1; font-size: 13px; }

.master-pick-foot { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 10px 16px 16px; border-top: 1px solid rgba(255,255,255,.06); }

/* depósito de pokémon */
.depot-card { width: min(780px, 95vw); }
.depot-head { display: flex; gap: 12px; align-items: center; padding: 18px 50px 8px 18px; }
.depot-head h2 { margin: 0; color: #fff; }
.depot-head small.bad { color: #ff8a8a; }
.depot-ico { font-size: 30px; }
.depot-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; padding: 4px 16px 16px; min-height: 0; overflow: hidden; flex: 1; }
.depot-cols > div { display: flex; flex-direction: column; min-height: 0; }
.depot-cols h4 { margin: 4px 0 6px; color: #ffcb3c; }
.depot-cols .tp-search { margin: 0 0 6px; }
.depot-list { display: flex; flex-direction: column; gap: 6px; overflow: auto; max-height: 58vh; padding-right: 2px; }
.depot-row { display: flex; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 10px; background: #181c26; border: 1px solid rgba(255,255,255,.06); }
.depot-row.locked { border-color: rgba(190,120,255,.5); background: linear-gradient(90deg, rgba(120,50,200,.18), #181c26); }
.depot-row .pic { width: 36px; height: 36px; flex: 0 0 36px; }
.depot-row .info { flex: 1; min-width: 0; font-size: 12px; }
.depot-row .info .muted { font-size: 10px; opacity: .7; }
.depot-row .btn { white-space: nowrap; }
@media (max-width: 620px) { .depot-cols { grid-template-columns: 1fr; overflow: auto; } }
/* tags Mestre Pokémon e VIP dentro dos modais (Conta e Perfil) */
.pf-tags .master-tag, .pf-tags .vip-tag { margin-left: 0; }
.pf-tags .master-tag.hidden, .pf-tags .vip-tag.hidden { display: none; }
/* janela Treinador: aura roxa do Mestre Pokémon (mesmo controle da aura do lendário, em roxo) */
.tr-master-aura { width: 100%; color: #e2c2ff; background: linear-gradient(90deg, rgba(120,50,200,.28), rgba(60,20,110,.18)); border: 1px solid rgba(190,120,255,.4); }
.tr-master-aura b { color: #d59bff; }
.tr-master-aura input[type=range] { accent-color: #b46cff; }
/* depósito: abas Itens / Pokémon */
.depot-tabs { display: flex; gap: 6px; padding: 0 16px 8px; }
.depot-tab { flex: 0 0 auto; padding: 6px 14px; border-radius: 9px; border: 1px solid rgba(255,255,255,.08); background: #181c26; color: #ccd; cursor: pointer; font: inherit; font-weight: bold; }
.depot-tab.active { background: linear-gradient(#e0a92a, #b8841a); color: #1a1305; border-color: #8a6412; }
.depot-pane.hidden { display: none; }
.depot-row .btn + .btn { margin-left: -2px; }
/* aba Casa: abandonar */
.acc-abandon { display: flex; flex-direction: column; gap: 4px; align-items: flex-start; margin-top: 10px; padding-top: 10px; border-top: 1px solid rgba(255,255,255,.06); }
.acc-abandon small { color: #9aa3b5; font-size: 11px; }
.acc-btn.danger { background: linear-gradient(#a33a3a, #6e2020); border-color: #4d1414; color: #fff; }
/* aba Segurança: 2FA */
.tfa-box { margin-top: 14px; padding: 12px 14px; border-radius: 12px; background: #161a24; border: 1px solid rgba(255,255,255,.07); }
.tfa-box.on { border-color: rgba(63,207,106,.45); }
.tfa-box.fresh { border-color: rgba(255,203,60,.6); box-shadow: 0 0 14px rgba(255,203,60,.18); }
.tfa-head { display: flex; gap: 10px; align-items: center; margin-bottom: 8px; }
.tfa-head small { display: block; color: #9aa3b5; font-size: 11px; }
.tfa-box.on .tfa-head small { color: #3fcf6a; }
.tfa-box.fresh .tfa-head small { color: #ffcb3c; font-weight: bold; }
.tfa-ico { font-size: 24px; }
.tfa-show { margin: 8px 0; padding: 9px 12px; border-radius: 9px; background: rgba(63,207,106,.12); border: 1px solid rgba(63,207,106,.45); color: #c8f5d3; }
.tfa-show b { font-size: 18px; letter-spacing: 3px; color: #fff; }
.tfa-show.hidden { display: none; }
.lf.hidden { display: none; }
/* 2FA ativo: só o selo em cima (os campos somem) */
.tfa-active { margin: -2px 0 10px; padding: 8px 12px; border-radius: 9px; text-align: center; font-weight: 800; letter-spacing: 1.5px; font-size: 15px;
  color: #eafff0; background: linear-gradient(180deg, #2f9e55, #1d6b38); border: 1px solid #3fcf6a; box-shadow: 0 0 14px rgba(63,207,106,.35); }
.tfa-active.hidden, .tfa-box .acc-form.hidden { display: none; }
/* Run do Mestre Pokémon: fala roxa no chat e a janela do Run em roxo */
.chat-msg.master-run .text, .chat-msg.master-run .author { color: #c77dff !important; opacity: .5; text-shadow: 0 0 6px rgba(170,80,255,.35); }
#run-modal.master .run-preview b { color: #c77dff; text-shadow: 0 0 8px rgba(170,80,255,.7); }
#run-modal.master .run-head h2::after { content: ' 👑 Mestre Pokémon · mais rápido que a bike'; font-size: 11px; color: #d59bff; }
/* contador do Run do Mestre Pokémon: centro de cima da tela do jogo */
#master-run-timer { position: absolute; top: 8px; left: 50%; transform: translateX(-50%); z-index: 6; display: flex; align-items: center; gap: 8px; padding: 5px 14px 9px;
  border-radius: 12px; background: linear-gradient(180deg, rgba(60,16,100,.92), rgba(28,6,50,.92)); border: 1px solid rgba(200,140,255,.75);
  box-shadow: 0 6px 18px rgba(0,0,0,.5), 0 0 18px rgba(160,70,255,.5); pointer-events: none; animation: master-glow 2s ease-in-out infinite; }
#master-run-timer.hidden { display: none; }
.mrt-ico { font-size: 18px; filter: drop-shadow(0 0 6px rgba(200,130,255,.9)); }
.mrt-body { display: flex; flex-direction: column; align-items: center; line-height: 1.05; }
.mrt-body small { font-size: 9px; letter-spacing: 1px; color: #d8b4ff; }
.mrt-body b { font-size: 20px; color: #fff; text-shadow: 0 0 8px rgba(199,125,255,.95), 1px 1px #000; font-variant-numeric: tabular-nums; min-width: 52px; text-align: center; }
.mrt-bar { position: absolute; left: 10px; right: 10px; bottom: 4px; height: 3px; border-radius: 2px; background: rgba(0,0,0,.45); overflow: hidden; }
.mrt-bar > i { display: block; height: 100%; background: linear-gradient(90deg, #7b2cbf, #e0aaff); transition: width .1s linear; }
#master-run-timer.ending .mrt-body b { color: #ffb3f0; animation: master-pulse .5s ease-in-out infinite; }
/* painel da staff → Efeito */
.st-fx-hint { margin: 2px 0 10px; color: #9aa3b5; font-size: 12px; }
.st-fx { display: flex; gap: 12px; align-items: center; padding: 10px 12px; border-radius: 12px; cursor: pointer; background: #171b24; border: 1px solid rgba(255,255,255,.08); transition: border-color .15s, box-shadow .15s; }
.st-fx:hover { border-color: rgba(255,255,255,.2); }
.st-fx input { width: 18px; height: 18px; accent-color: #ff3b3b; cursor: pointer; }
.st-fx.on { border-color: rgba(255,70,70,.7); box-shadow: 0 0 16px rgba(255,50,50,.3); background: linear-gradient(90deg, rgba(150,20,20,.25), #171b24); }
.st-fx-pic { flex: 0 0 38px; height: 38px; border-radius: 50%; }
.st-fx-pic.red { background: radial-gradient(circle, #ffd0c8 0 18%, #ff3b3b 40%, rgba(150,0,0,.2) 70%); box-shadow: 0 0 14px rgba(255,50,50,.7); animation: master-pulse 1.4s ease-in-out infinite; }
.st-fx-text { display: flex; flex-direction: column; gap: 2px; }
.st-fx-text b { color: #ff8a80; }
.st-fx-text small { color: #b9bfcc; font-size: 11px; line-height: 1.35; }
.chat-msg.fx-run .text, .chat-msg.fx-run .author { color: #ff4d4d !important; opacity: .5; text-shadow: 0 0 6px rgba(255,50,50,.35); }
/* contador do Run do Efeito 1 (vermelho) */
#master-run-timer.red { background: linear-gradient(180deg, rgba(110,10,5,.94), rgba(50,4,2,.94)); border-color: rgba(255,80,50,.8); box-shadow: 0 6px 18px rgba(0,0,0,.5), 0 0 18px rgba(255,40,20,.55); animation: none; }
#master-run-timer.red .mrt-body small { color: #ffb4a8; }
#master-run-timer.red .mrt-body b { text-shadow: 0 0 8px rgba(255,60,30,.95), 1px 1px #000; }
#master-run-timer.red .mrt-bar > i { background: linear-gradient(90deg, #b00000, #ffb347); }
#master-run-timer.red .mrt-ico { filter: drop-shadow(0 0 6px rgba(255,80,30,.9)); }
.chat-msg.fx-run .text, .chat-msg.fx-run .author { color: #ff2a2a !important; }
/* aba Efeito: dar efeito para um jogador (na cor escolhida) e a lista de quem tem */
.st-fx-give { margin-top: 10px; cursor: default; align-items: flex-start; }
.st-fx-give.on { border-color: var(--fx, #ff4646); box-shadow: 0 0 16px color-mix(in srgb, var(--fx, #ff4646) 35%, transparent); background: #171b24; }
#st-fx-give-pic { background: radial-gradient(circle, #fff 0 16%, var(--fx, #00b4ff) 42%, transparent 72%); box-shadow: 0 0 14px var(--fx, #00b4ff); margin-top: 4px; }
.st-fx-row { display: flex; gap: 8px; align-items: center; margin-top: 6px; }
.st-fx-row .st-search { flex: 1; min-width: 0; margin: 0; }
#st-fx-give-color { width: 42px; height: 32px; padding: 0; border: 1px solid rgba(255,255,255,.15); border-radius: 8px; background: none; cursor: pointer; }
.st-fx-h { margin: 14px 0 6px; color: #ffcb3c; }
.st-fx-list { display: flex; flex-direction: column; gap: 6px; }
.st-fx-item { display: flex; align-items: center; gap: 10px; padding: 6px 10px; border-radius: 10px; background: #171b24; border: 1px solid rgba(255,255,255,.07); }
.st-fx-item i { width: 18px; height: 18px; border-radius: 50%; background: var(--fx); box-shadow: 0 0 10px var(--fx); }
.st-fx-item b { flex: 1; cursor: pointer; }
.st-fx-item small { color: #8a93a3; font-size: 11px; }
.st-fx-item small.on { color: #3fcf6a; }
/* fala do Run e contador na cor do efeito dado */
.chat-msg.fx-run[style] .text, .chat-msg.fx-run[style] .author { color: var(--fx) !important; text-shadow: 0 0 6px color-mix(in srgb, var(--fx) 40%, transparent); }
#master-run-timer.red { border-color: var(--fx, #ff2a2a); box-shadow: 0 6px 18px rgba(0,0,0,.5), 0 0 18px color-mix(in srgb, var(--fx, #ff2a2a) 55%, transparent);
  background: linear-gradient(180deg, color-mix(in srgb, var(--fx, #ff2a2a) 45%, #000), color-mix(in srgb, var(--fx, #ff2a2a) 18%, #000)); }
#master-run-timer.red .mrt-bar > i { background: linear-gradient(90deg, color-mix(in srgb, var(--fx, #ff2a2a) 60%, #000), var(--fx, #ff2a2a)); }
#master-run-timer.red .mrt-body b { text-shadow: 0 0 8px var(--fx, #ff2a2a), 1px 1px #000; }
/* Run normal: a mesma caixa em amarelo/dourado (conta o tempo correndo) */
#master-run-timer.normal { background: linear-gradient(180deg, rgba(90,62,0,.94), rgba(40,26,0,.94)); border-color: rgba(255,203,60,.85);
  box-shadow: 0 6px 18px rgba(0,0,0,.5), 0 0 16px rgba(255,190,40,.45); animation: none; }
#master-run-timer.normal .mrt-body small { color: #ffe08a; }
#master-run-timer.normal .mrt-body b { color: #fff3c4; text-shadow: 0 0 8px rgba(255,190,40,.9), 1px 1px #000; }
#master-run-timer.normal .mrt-bar > i { background: linear-gradient(90deg, #b07a00, #ffd24a); }
#master-run-timer.normal .mrt-ico { filter: drop-shadow(0 0 6px rgba(255,200,40,.9)); }
#master-run-timer.normal.ending .mrt-body b { color: #ffd24a; }
/* evoluir com pedra: quem evolui → seta → em quem ele vira */
.shiny-row.evo { display: flex; align-items: center; gap: 8px; }
.evo-side { display: flex; flex-direction: column; align-items: center; gap: 1px; min-width: 64px; }
.evo-side b { font-size: 11px; text-align: center; line-height: 1.15; }
.evo-side.to b { color: #7ee08a; }
.evo-arrow { font-size: 18px; color: #ffcb3c; text-shadow: 0 0 6px rgba(255,203,60,.5); }
.evo-info { flex: 1; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.pick-evo { display: flex; align-items: center; gap: 4px; margin-left: auto; }
.pick-evo i { font-style: normal; font-size: 16px; color: #ffcb3c; }
/* Ghost do Dono: aba Efeito e janela Treinador */
.st-fx-pic.ghost { background: radial-gradient(circle, #fff 0 18%, #a9d6ff 45%, rgba(120,170,230,.15) 72%); box-shadow: 0 0 14px rgba(170,220,255,.8); animation: master-pulse 2s ease-in-out infinite; }
.st-fx-ghost.on { border-color: rgba(170,220,255,.7); box-shadow: 0 0 16px rgba(170,220,255,.35); background: linear-gradient(90deg, rgba(60,90,140,.35), #171b24); }
.st-fx-ghost.hidden { display: none; }
.tr-ghost { width: 100%; display: flex; flex-direction: column; gap: 4px; margin-top: 4px; padding: 5px 7px; border-radius: 8px; background: linear-gradient(90deg, rgba(60,90,140,.35), rgba(30,45,70,.25)); border: 1px solid rgba(170,220,255,.4); }
.tr-ghost.hidden { display: none; }
.tr-ghost-speed { margin: 0; background: none; padding: 0; color: #d8ecff; }
.tr-ghost-speed b { color: #bfe0ff; }
.tr-ghost-speed input[type=range] { accent-color: #9fd2ff; }
.chat-msg .author[data-name] { cursor: context-menu; }
/* mensagem privada: azul claro (chat, aba da conversa e a opção no menu do botão direito) */
.chat-msg.private .author, .chat-msg.private .text { color: #8fd3ff !important; }
.chat-tab.pm-tab { color: #8fd3ff; display: inline-flex; align-items: center; gap: 5px; }
.chat-tab.pm-tab.active { color: #bfe6ff; }
.chat-tab.pm-tab.unread { color: #ff9a3c; }
.chat-tab .pm-close { font-size: 13px; line-height: 1; opacity: .55; cursor: pointer; }
.chat-tab .pm-close:hover { opacity: 1; color: #ff6b6b; }
#poke-menu button.menu-pm { color: #8fd3ff; }
.server-banner.private { background: linear-gradient(180deg, rgba(10,40,70,.94), rgba(6,22,40,.94)); border-color: rgba(143,211,255,.7); color: #8fd3ff; }
.server-banner.private b, .server-banner.private b.owner { color: #bfe6ff; }
.server-banner .master-tag, .server-banner .vip-tag { margin: 0 4px 0 0; padding: 0 5px; font-size: 9px; line-height: 14px; }
/* confirmação dentro do jogo (askConfirm, no lugar do confirm() do navegador) */
.game-confirm { z-index: 1000; }
.gc-card { width: min(380px, 92vw); padding: 18px 18px 14px; border-radius: 14px; background: linear-gradient(180deg, #1b2130, #121620);
  border: 1px solid var(--line2, #333b4d); box-shadow: 0 18px 50px rgba(0,0,0,.6); color: #e9edf5; animation: gc-in .14s ease-out; }
.gc-card.master { border-color: rgba(200,140,255,.7); background: linear-gradient(180deg, #2a1442, #160a26); box-shadow: 0 0 28px rgba(170,80,255,.35), 0 18px 50px rgba(0,0,0,.6); }
.gc-text { font-size: 14px; line-height: 1.45; margin-bottom: 16px; }
.gc-foot { display: flex; justify-content: flex-end; gap: 8px; }
.gc-yes { background: linear-gradient(180deg, #ffd65a, #e0a516) !important; color: #2a1a00 !important; font-weight: bold; }
.gc-card.master .gc-yes { background: linear-gradient(180deg, #c98bff, #8a3fd6) !important; color: #fff !important; }
@keyframes gc-in { from { transform: scale(.94); opacity: 0; } to { transform: none; opacity: 1; } }
/* modal Punir */
.punish-card { width: min(520px, 94vw); padding: 18px; gap: 10px; }
/* /casa: moradores, convidados, quem está dentro */
.casa-card { width: min(520px, 94vw); max-height: 90vh; overflow-y: auto; }
.casa-sub, #casa-sub b { color: #e9edf5; }
.casa-on { color: #6fe39a; font-style: normal; }
.casa-sec { padding: 10px; border-radius: 10px; background: #171b24; border: 1px solid rgba(255,255,255,.07); margin-bottom: 8px; }
.casa-sec h4 { margin: 0 0 4px; color: #ffcb3c; font-size: 13px; }
.casa-sec h4 small { color: #8b93a5; font-weight: normal; margin-left: 4px; }
.casa-hint { margin: 0 0 8px; color: #9aa3b5; font-size: 11px; line-height: 1.4; }
.casa-list { display: flex; flex-direction: column; gap: 4px; }
.casa-person { display: flex; align-items: center; gap: 8px; padding: 5px 8px; border-radius: 8px; background: #0f1219; }
.casa-person b { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #fff; font-size: 12px; }
.casa-dot { width: 8px; height: 8px; border-radius: 50%; background: #4a5162; flex: none; }
.casa-dot.on { background: #3fdc5a; box-shadow: 0 0 6px rgba(63,220,90,.7); }
.casa-role { padding: 1px 7px; border-radius: 10px; font-size: 10px; font-weight: bold; background: #2a303c; color: #c9d2e3; }
.casa-role.owner, .casa-role.staff { background: rgba(255,203,60,.18); color: #ffcb3c; }
.casa-role.resident { background: rgba(80,200,120,.18); color: #7fe3a0; }
.casa-role.guest { background: rgba(90,160,255,.18); color: #9cc6ff; }
.casa-add { display: flex; gap: 6px; margin-top: 8px; }
.casa-add .st-search { flex: 1; margin: 0; min-width: 0; }
.casa-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.casa-tip { color: #8b93a5; }
.casa-tip b { color: #ffe9a8; }
/* Ctrl+K: teclas dos golpes */
.keys-card { width: min(460px, 94vw); }
.keys-list { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; max-height: 60vh; overflow-y: auto; }
.keys-row { display: flex; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 9px; background: #171b24; border: 1px solid rgba(255,255,255,.07); }
.keys-row.empty .keys-move { opacity: .45; }
.keys-n { width: 18px; text-align: center; font-weight: bold; color: #9aa3b5; font-size: 11px; }
.keys-move { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; color: #e9edf5; }
.keys-btn { min-width: 64px; padding: 4px 8px; font-weight: bold; letter-spacing: .5px; }
.keys-btn.listening { color: #ffcb3c; border-color: #ffcb3c; animation: owner-pulse 1s ease-in-out infinite; }
.keys-card .punish-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.keys-tip { color: #9aa3b5; }
.punish-head { display: flex; gap: 12px; align-items: center; padding-right: 36px; }
.punish-head h2 { margin: 0; color: #fff; }
.punish-head h2 span { color: #ff8a80; }
.punish-head small { color: #9aa3b5; }
.punish-ico { font-size: 30px; }
.punish-reason { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: #b9bfcc; }
.punish-reason input { padding: 8px 10px; border-radius: 9px; border: 1px solid rgba(255,255,255,.12); background: #0b0d13; color: #fff; }
.punish-list { display: flex; flex-direction: column; gap: 6px; }
.punish-opt { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 10px; background: #171b24; border: 1px solid rgba(255,255,255,.07); }
.punish-opt > span { font-size: 20px; }
.punish-opt > div { flex: 1; display: flex; flex-direction: column; }
.punish-opt small { color: #9aa3b5; font-size: 11px; }
.punish-opt input { width: 64px; padding: 5px 6px; border-radius: 7px; border: 1px solid rgba(255,255,255,.12); background: #0b0d13; color: #fff; }
.punish-opt.danger { border-color: rgba(224,72,72,.4); background: linear-gradient(90deg, rgba(150,20,20,.2), #171b24); }
.btn.danger { background: linear-gradient(#a33a3a, #6e2020); border-color: #4d1414; color: #fff; }
.punish-foot { display: flex; justify-content: flex-end; }
/* Pokédex: abas Pokémon / Shiny stone / Pedras de evolução */
.dex-tabs { display: flex; gap: 6px; padding: 6px 14px 0; }
.dex-tab { padding: 6px 12px; border-radius: 9px 9px 0 0; border: 1px solid rgba(255,255,255,.1); border-bottom: 0; background: rgba(0,0,0,.25); color: #dde; font: inherit; font-weight: bold; cursor: pointer; }
.dex-tab.active { background: linear-gradient(#e0a92a, #b8841a); color: #1a1305; border-color: #8a6412; }
.dex-body.hidden, .dex-stones.hidden, .dex-stone-chips.hidden { display: none; }
.dex-stones { display: flex; flex-direction: column; gap: 8px; padding: 10px 14px 14px; min-height: 0; flex: 1; overflow: hidden; }
.dex-stone-chips { display: flex; flex-wrap: wrap; gap: 6px; max-height: 96px; overflow: auto; }
.dex-stone-chip { display: flex; align-items: center; gap: 5px; padding: 3px 9px 3px 4px; border-radius: 9px; border: 1px solid rgba(255,255,255,.1); background: #171b24; color: #dde; font: inherit; font-size: 12px; cursor: pointer; }
.dex-stone-chip small { color: #8a93a3; font-size: 10px; }
.dex-stone-chip.active { border-color: #ffcb3c; box-shadow: 0 0 10px rgba(255,203,60,.3); background: #2a2210; }
.dex-stone-head { display: flex; align-items: center; gap: 8px; }
.dex-stone-head b { color: #ffcb3c; font-size: 15px; }
.dex-stone-head span { color: #9aa3b5; font-size: 12px; }
.dex-stone-head .dex-search { margin-left: auto; max-width: 220px; }
.dex-stone-list { flex: 1; min-height: 0; overflow: auto; }
/* modal de pedra: botão "ver quais evoluem" em cima e a troca de pedra */
.pick-more.top { order: -1; width: 100%; margin: 0 0 8px; }
.shiny-q select { max-width: 170px; padding: 4px 6px; border-radius: 7px; border: 1px solid rgba(255,255,255,.15); background: #0b0d13; color: #fff; }
/* pokébar: tipos embaixo do nick */
.pb-types { display: flex; gap: 3px; margin: 1px 0 2px; }
.pb-type { padding: 0 5px; border-radius: 4px; font-size: 8px; font-weight: bold; line-height: 12px; color: #fff; text-shadow: 0 1px 0 rgba(0,0,0,.6); }
/* janela Ghost (só o Dono) */
.owner-hidden { display: none !important; }
.ghost-win { display: flex; flex-direction: column; gap: 5px; padding: 4px 2px; }
.ghost-win.on { background: linear-gradient(90deg, rgba(60,90,140,.3), transparent); border-radius: 8px; }
.ghost-main small { margin-left: auto; color: #9fb6d6; font-size: 10px; }
.ghost-win.on .ghost-main small { color: #bfe0ff; }
.ghost-opts { display: flex; flex-direction: column; gap: 4px; padding-left: 4px; border-left: 2px solid rgba(170,220,255,.35); }
.ghost-opts.hidden { display: none; }

/* ===== Pokédex: abas Shiny stone e Pedras de evolução (visual novo) ===== */
.dex-tabs { padding: 8px 16px 0; gap: 4px; }
.dex-tab { position: relative; padding: 7px 16px; border-radius: 10px 10px 0 0; background: linear-gradient(#2a1414, #1c0d0d); border: 1px solid #4a1d1d; border-bottom: 0;
  color: #e9c9c9; letter-spacing: .3px; transition: filter .12s, transform .12s; }
.dex-tab:hover:not(.active) { filter: brightness(1.25); transform: translateY(-1px); }
.dex-tab.active { background: linear-gradient(#ffd23a, #d99a10); color: #2a1600; border-color: #9a6b0a; box-shadow: 0 -2px 12px rgba(255,210,58,.35); }
.dex-stones { margin: 0 14px 14px; padding: 12px; border-radius: 0 12px 12px 12px; background: #10131b; border: 6px solid #2a0d0d;
  box-shadow: inset 0 0 30px rgba(0,0,0,.7); gap: 10px; }
/* fichas das pedras */
.dex-stone-chips { gap: 6px; padding: 2px; max-height: 108px; }
.dex-stone-chip { gap: 6px; padding: 4px 10px 4px 5px; border-radius: 20px; background: linear-gradient(#1d222e, #151924); border: 1px solid rgba(255,255,255,.09);
  transition: border-color .12s, transform .12s, box-shadow .12s; }
.dex-stone-chip canvas { width: 24px; height: 24px; image-rendering: pixelated; }
.dex-stone-chip span { font-weight: 600; }
.dex-stone-chip small { padding: 0 6px; border-radius: 10px; background: rgba(255,255,255,.08); color: #aab3c4; font-weight: 700; }
.dex-stone-chip:hover { transform: translateY(-1px); border-color: rgba(255,210,58,.5); }
.dex-stone-chip.active { background: linear-gradient(#3a2c0c, #241a06); border-color: #ffd23a; box-shadow: 0 0 12px rgba(255,210,58,.35); }
.dex-stone-chip.active small { background: #ffd23a; color: #2a1600; }
/* cabeçalho da pedra escolhida */
.dex-stone-head { padding: 8px 10px; border-radius: 10px; background: linear-gradient(90deg, rgba(255,210,58,.12), transparent 70%); border: 1px solid rgba(255,210,58,.18); }
.dex-stone-head canvas { width: 32px; height: 32px; image-rendering: pixelated; filter: drop-shadow(0 0 6px rgba(255,210,58,.5)); }
.dex-stone-head b { font-size: 16px; color: #ffd23a; text-shadow: 0 1px 0 #000; }
.dex-stone-head span { padding: 2px 8px; border-radius: 10px; background: rgba(0,0,0,.35); }
.dex-stones.shiny .dex-stone-head { background: linear-gradient(90deg, rgba(255,120,200,.14), rgba(120,200,255,.12), transparent 80%); border-color: rgba(200,160,255,.3); }
.dex-stones.shiny .dex-stone-head b { background: linear-gradient(90deg, #ff9ad5, #ffe27a, #8fe3ff, #c9a8ff); -webkit-background-clip: text; background-clip: text; color: transparent; text-shadow: none; }
/* lista em cartões */
.dex-stone-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(232px, 1fr)); gap: 8px; align-content: start; max-height: none; padding: 2px 4px 2px 2px; }
.dex-stone-list .shiny-row.evo { position: relative; flex-wrap: wrap; justify-content: center; gap: 4px 6px; padding: 10px 8px 8px; border-radius: 12px;
  background: linear-gradient(160deg, #1b2030, #131722); border: 1px solid rgba(255,255,255,.08); transition: transform .12s, border-color .12s, box-shadow .12s; }
.dex-stone-list .shiny-row.evo:hover { transform: translateY(-2px); border-color: rgba(255,210,58,.45); box-shadow: 0 6px 16px rgba(0,0,0,.45); }
.dex-stone-list .shiny-row.evo.have { border-color: rgba(90,220,120,.65); background: linear-gradient(160deg, rgba(40,90,55,.55), #131722); }
.dex-stones.shiny .dex-stone-list .shiny-row.evo:hover { border-color: rgba(200,160,255,.6); box-shadow: 0 6px 16px rgba(0,0,0,.45), 0 0 14px rgba(200,160,255,.25); }
.dex-stone-list .evo-side { min-width: 78px; padding: 4px 2px; border-radius: 10px; background: rgba(0,0,0,.25); }
.dex-stone-list .evo-side canvas { width: 44px; height: 44px; }
.dex-stone-list .evo-side b { font-size: 11px; max-width: 86px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dex-stone-list .evo-side.to { background: rgba(126,224,138,.08); }
.dex-stones.shiny .dex-stone-list .evo-side.to b { background: linear-gradient(90deg, #ff9ad5, #ffe27a, #8fe3ff); -webkit-background-clip: text; background-clip: text; color: transparent; }
.dex-stone-list .evo-arrow { font-size: 20px; }
.dex-stone-list .evo-info { flex-basis: 100%; flex-direction: row; justify-content: center; gap: 6px; min-height: 0; }
.dex-stone-list .evo-info:empty { display: none; }
.dex-stone-list .evo-info small, .dex-stone-list .evo-info em { padding: 1px 7px; border-radius: 8px; background: rgba(0,0,0,.35); font-size: 10px; opacity: 1; }
.dex-stone-list .sh-stones { position: absolute; top: 6px; right: 6px; padding: 1px 6px 1px 7px; border-radius: 10px; background: rgba(0,0,0,.45); font-size: 12px; }
/* ícone da pedra nas linhas (uma imagem só, sem animar) */
.sh-stone-ico { width: 20px; height: 20px; image-rendering: pixelated; }

/* ================================================================ NPC: janela refeita
   Conversa simples (morador, transporte, enfermeira): compacta. Loja: conversa à esquerda e a lista à direita. */
.npc-card { width: min(470px, 94vw); border-radius: 18px; background: linear-gradient(180deg, #161a24 0%, #10131a 100%);
  border: 1px solid color-mix(in srgb, var(--accent) 45%, transparent); box-shadow: 0 24px 70px rgba(0,0,0,.75), 0 0 0 1px rgba(255,255,255,.03) inset, 0 0 36px var(--glow); }
.npc-card:has(.npc-trade:not(.hidden)) { width: min(880px, 96vw); }
.npc-card.theme-travel { --accent: #4fe0c0; --accent2: #12644f; --glow: rgba(60,220,180,.2); }
.npc-head { gap: 14px; padding: 14px 54px 12px 16px; background: radial-gradient(circle at 0% 50%, var(--glow), transparent 60%), linear-gradient(180deg, #232838, #181c27); }
.npc-face { width: 64px; height: 64px; border-width: 2px; box-shadow: 0 0 0 4px var(--glow), 0 6px 16px rgba(0,0,0,.5); }
.npc-face canvas { width: 58px; height: 58px; }
.npc-id { min-width: 0; }
.npc-id h2 { font-size: 19px; margin: 5px 0 1px; letter-spacing: .2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.npc-id small { font-size: 11.5px; color: #9aa4b8; }
.npc-role { font-size: 9.5px; padding: 2px 9px; }
.npc-head .acc-x { top: 50%; transform: translateY(-50%); right: 14px; background: rgba(255,255,255,.07); color: #cfd6e4; font-size: 18px; line-height: 30px; }
.npc-head .acc-x:hover { background: rgba(255,80,80,.55); color: #fff; }
.npc-layout { gap: 14px; padding: 14px 16px 16px; min-height: 0; }
.npc-card:not(:has(.npc-trade:not(.hidden))) .npc-layout { min-height: 0; }
.npc-dialog { min-height: 130px; max-height: 300px; padding: 12px 12px 14px; gap: 9px; background: #0b0e14 !important; border-color: #1f2533 !important; scrollbar-width: thin; }
.npc-card:has(.npc-trade:not(.hidden)) .npc-dialog { max-height: 380px; }
.npc-dialog > div { max-width: 86%; padding: 8px 12px; font-size: 12.5px; line-height: 1.45; border-radius: 14px; }
.npc-dialog .npc { background: #1a1f2c; border-left: 0; border: 1px solid color-mix(in srgb, var(--accent) 25%, #232a3a); border-bottom-left-radius: 4px; }
.npc-dialog .npc b { display: block; font-size: 10.5px; margin-bottom: 2px; letter-spacing: .3px; }
.npc-dialog .me { background: color-mix(in srgb, var(--accent) 26%, #171b26); border: 1px solid color-mix(in srgb, var(--accent) 35%, transparent); border-bottom-right-radius: 4px; }
.npc-dialog .me b { display: none; } /* a fala do jogador já está do lado dele */
.npc-dialog a.kw { padding: 0 6px; border: 1px solid color-mix(in srgb, var(--accent) 55%, transparent); border-radius: 10px; background: color-mix(in srgb, var(--accent) 14%, transparent); }
.npc-dialog a.kw:hover { background: color-mix(in srgb, var(--accent) 30%, transparent); filter: none; }
.npc-actions { gap: 8px; }
.npc-actions .btn { min-width: 0; padding: 10px 12px; font-size: 12.5px; border-radius: 11px; transition: transform .08s, border-color .1s, color .1s; }
.npc-actions .btn:active { transform: translateY(1px); }
.npc-actions .btn:last-child:not(:first-child) { flex: 0 0 auto; padding-inline: 18px; color: #9aa4b8; } /* Tchau: discreto */

/* NPC Sam / Renomeador: trocar o apelido do pokémon */
.npc-card.theme-rename { --accent: #ff9ff3; --accent2: #8a2f7c; --glow: rgba(255,140,230,.2); }
.npc-rename { display: flex; flex-direction: column; gap: 8px; padding: 10px; border-radius: 12px; background: #0d1017; border: 1px solid #232838; }
.nr-title { font-weight: bold; color: var(--accent); font-size: 12px; }
.nr-team { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
.nr-poke { display: flex; flex-direction: column; align-items: center; gap: 1px; padding: 6px 4px; border-radius: 10px; border: 1px solid #262c3a; background: #1a1e29; color: #fff; cursor: pointer; font: inherit; min-width: 0; }
.nr-poke:hover { border-color: #4a5470; }
.nr-poke.active { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 14%, #1a1e29); box-shadow: 0 0 10px var(--glow); }
.nr-poke canvas { width: 36px; height: 36px; }
.nr-poke b { font-size: 11px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nr-poke small { font-size: 9.5px; color: #8a93a3; }
.nr-row { display: flex; gap: 6px; }
.nr-row .field { flex: 1; min-width: 0; padding: 8px 10px; border-radius: 9px; }
.nr-go { padding: 8px 12px !important; border-radius: 9px !important; font-weight: bold; color: #2a0c26 !important; background: linear-gradient(color-mix(in srgb, var(--accent) 80%, #fff), var(--accent)) !important; border: 0 !important; }
.nr-go:disabled { filter: grayscale(.8) brightness(.6); cursor: not-allowed; }
.nr-hint { color: #7d8698; font-size: 10.5px; }
.nr-lock { padding: 10px; text-align: center; color: #ffd76a; font-size: 12.5px; }
.nr-master { padding: 7px 10px; border-radius: 9px; font-size: 11.5px; color: #ecd6ff; background: linear-gradient(90deg, rgba(120,50,200,.35), rgba(60,20,100,.2)); border: 1px solid rgba(200,140,255,.45); }
.nr-master b { color: #fff; }
.nr-poke { position: relative; }
.nr-poke:disabled { opacity: .4; cursor: not-allowed; }
.nr-used { position: absolute; top: 3px; right: 4px; font-style: normal; font-size: 10px; }
/* janela Seta: quadrado do chão embaixo do mouse */
.cur-win { display: flex; flex-direction: column; gap: 7px; padding: 4px 2px; }
#cur-preview { width: 100%; height: auto; border-radius: 8px; border: 1px solid #262c3a; image-rendering: auto; }
.cur-shapes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 5px; }
.cur-shape { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 6px 2px !important; line-height: 1; border-radius: 8px !important; }
.cur-shape i { font-style: normal; font-size: 15px; } .cur-shape small { font-size: 9.5px; color: #aab3c5; white-space: nowrap; }
.cur-shape.active small { color: var(--gold); }
.cur-shape.active { border-color: var(--gold) !important; color: var(--gold) !important; box-shadow: 0 0 8px rgba(255,203,60,.3) !important; }
.cur-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 12px; color: #cfd6e4; }
.cur-row input[type=color] { width: 44px; height: 22px; padding: 0; border: 1px solid #2a303c; border-radius: 6px; background: none; cursor: pointer; }
.cur-range { display: grid; grid-template-columns: 58px 1fr 40px; align-items: center; gap: 6px; font-size: 12px; color: #cfd6e4; }
.cur-range input { accent-color: var(--gold); width: 100%; }
.cur-range b { text-align: right; color: #fff; font-size: 11px; }

/* sala do inicial: cartão do pokémon ao passar o mouse no quadro/piso */
.starter-tip { position: fixed; z-index: 500; width: 270px; padding: 12px; border-radius: 14px; pointer-events: none;
  background: linear-gradient(180deg, #1c2230, #121620); border: 1px solid rgba(255,210,31,.55); box-shadow: 0 16px 40px rgba(0,0,0,.65), 0 0 22px rgba(255,210,31,.15);
  color: #e6ebf5; font-size: 12px; animation: card-in .12s ease-out; }
.starter-tip.hidden { display: none; }
.st-head { display: flex; gap: 10px; align-items: center; }
.st-head canvas { width: 56px; height: 56px; flex: none; border-radius: 50%; background: radial-gradient(circle at 50% 65%, rgba(255,255,255,.14), rgba(0,0,0,.35) 70%); border: 2px solid rgba(255,210,31,.6); }
.st-head b { font-size: 16px; color: #fff; }
.st-head small { display: block; margin-top: 3px; color: #9aa4b8; font-size: 10.5px; }
.st-types { display: flex; gap: 4px; margin-top: 3px; flex-wrap: wrap; }
.st-why { margin: 9px 0 8px; padding: 7px 9px; border-radius: 9px; background: rgba(255,210,31,.08); border-left: 2px solid #ffd21f; line-height: 1.4; }
/* (só no cartão do inicial: antes valia para toda .st-row e quebrava as linhas do painel da staff) */
.starter-tip .st-row { display: grid; grid-template-columns: 92px 1fr; gap: 6px; align-items: start; margin-top: 5px; }
.starter-tip .st-row > div { display: flex; flex-wrap: wrap; gap: 3px; }
.st-l { font-weight: bold; font-size: 11px; }
.st-l.good { color: #6dff9e; } .st-l.bad { color: #ff8a80; }
.st-foot { margin-top: 9px; padding-top: 7px; border-top: 1px solid #262c3a; color: #9aa4b8; font-size: 10.5px; }
.st-type { padding: 1px 7px; border-radius: 9px; font-size: 10px; font-weight: bold; color: #fff; text-shadow: 0 1px 1px rgba(0,0,0,.5); background: #777; }
.t-normal { background: #9fa19f; } .t-fire { background: #e62829; } .t-water { background: #2980ef; } .t-grass { background: #3fa129; }
.t-electric { background: #d8b600; } .t-ice { background: #3dcef3; } .t-fighting { background: #ff8000; } .t-poison { background: #9141cb; }
.t-ground { background: #915121; } .t-flying { background: #81b9ef; } .t-psychic { background: #ef4179; } .t-bug { background: #91a119; }
.t-rock { background: #afa981; } .t-ghost { background: #704170; } .t-dragon { background: #5060e1; } .t-dark { background: #50413f; }
.t-steel { background: #60a1b8; } .t-fairy { background: #ef70ef; }

/* Mestre Pokémon: o char do mestre e o lendário no canto da tela e no histórico; os tipos do time */
.mb-row { padding: 4px 6px; }
.mb-char, .mb-poke { width: 36px; height: 36px; flex: none; border-radius: 50%; image-rendering: auto;
  background: radial-gradient(circle at 50% 65%, rgba(255,255,255,.12), rgba(0,0,0,.4) 70%); border: 1px solid rgba(190,120,255,.55); }
.mb-poke { border-color: rgba(255,210,90,.6); box-shadow: 0 0 8px rgba(255,190,60,.25); }
.mb-char.empty, .mb-poke.empty { opacity: .45; }
.mi-types { display: flex; flex-wrap: wrap; justify-content: center; gap: 3px; }
.mi-types .st-type { font-size: 9.5px; padding: 1px 6px; }
.mi-hist-count { margin: 0 0 6px; font-size: 11px; }
.mi-hist-n { width: 26px; flex: none; text-align: center; font-weight: bold; color: #c9a7ff; font-size: 11px; }
.mi-hist-char, .mi-hist-poke { width: 40px; height: 40px; flex: none; border-radius: 50%; image-rendering: auto;
  background: radial-gradient(circle at 50% 65%, rgba(255,255,255,.1), rgba(0,0,0,.4) 70%); border: 1px solid rgba(190,120,255,.4); }
.mi-hist-poke { margin-left: auto; border-color: rgba(255,210,90,.5); }
.mi-hist-char.empty, .mi-hist-poke.empty { opacity: .4; }
.mi-hist .info { min-width: 0; }

/* Jarvis: o assistente no canto do mapa */
.jarvis { position: absolute; left: 10px; bottom: 10px; z-index: 8; display: flex; flex-direction: column; align-items: flex-start; gap: 6px; pointer-events: none; max-width: 320px; }
.jarvis.hidden { display: none; }
.jarvis > * { pointer-events: auto; }
#jv-face { width: 48px; height: 48px; image-rendering: pixelated; cursor: pointer; filter: drop-shadow(0 0 6px rgba(80,230,255,.55)); order: 2; }
#jv-face:hover { filter: drop-shadow(0 0 10px rgba(80,230,255,.9)); }
.jv-bubble { order: 1; max-width: 300px; padding: 8px 11px; border-radius: 12px 12px 12px 3px; font-size: 12px; line-height: 1.4; color: #dffbff;
  background: rgba(8,20,30,.9); border: 1px solid rgba(80,230,255,.55); box-shadow: 0 6px 20px rgba(0,0,0,.5), 0 0 14px rgba(80,230,255,.18);
  font-family: 'Courier New', ui-monospace, monospace; }
.jv-bubble.hidden { display: none; }
.jv-bubble.pop { animation: jv-pop .18s ease-out; }
@keyframes jv-pop { from { transform: translateY(6px) scale(.97); opacity: 0; } }
.jv-ask { order: 3; display: flex; gap: 4px; width: 280px; }
.jv-ask.hidden { display: none; }
.jv-ask input { flex: 1; min-width: 0; padding: 6px 9px; border-radius: 8px; border: 1px solid rgba(80,230,255,.5); background: rgba(8,20,30,.92); color: #dffbff; font-size: 12px; }
.jv-ask input:focus { outline: none; border-color: #7ff6ff; box-shadow: 0 0 8px rgba(80,230,255,.35); }
.jv-ask .btn { padding: 4px 10px; }
.jv-win { display: flex; flex-direction: column; gap: 7px; padding: 4px 2px; }
.jv-win small { line-height: 1.35; }
.jv-route { display: flex; align-items: center; justify-content: space-between; gap: 6px; padding: 6px 8px; border-radius: 8px; background: rgba(255,210,31,.1); border: 1px solid rgba(255,210,31,.4); font-size: 12px; color: #ffe9a8; }
.jv-route.hidden { display: none; }
/* Jarvis: sprites dos pokémon no balão e o ✖ (cala, fecha e cancela a rota) */
.jv-bubble { position: relative; padding-right: 24px; }
.jv-close { position: absolute; top: 4px; right: 5px; width: 18px; height: 18px; padding: 0; border: 0; border-radius: 50%; cursor: pointer;
  background: rgba(255,255,255,.08); color: #9fdcea; font-size: 10px; line-height: 18px; }
.jv-close:hover { background: rgba(255,80,80,.6); color: #fff; }
.jv-sprites { display: flex; align-items: center; gap: 4px; margin-bottom: 6px; }
.jv-sprite { display: flex; flex-direction: column; align-items: center; gap: 1px; padding: 3px 4px 2px; border-radius: 9px; background: rgba(80,230,255,.07); border: 1px solid rgba(80,230,255,.22); }
.jv-sprite canvas { width: 44px; height: 44px; }
.jv-sprite small { font-size: 9.5px; color: #bff4ff; max-width: 70px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-family: Verdana, sans-serif; }
.jv-arrow { color: #7ff6ff; font-size: 14px; }
/* Jarvis: dica do mouse e a ficha (quem é você + quests) */
.jv-hint { order: 1; padding: 6px 10px; border-radius: 10px 10px 10px 3px; font-size: 11.5px; color: #dffbff; background: rgba(8,20,30,.9); border: 1px dashed rgba(80,230,255,.55); font-family: 'Courier New', monospace; }
.jv-hint.hidden { display: none; }
.jv-hint small { color: #8fcfdc; }
.jv-card { position: relative; width: min(640px, 94vw); max-height: 88vh; overflow: auto; padding: 18px; border-radius: 16px; color: #dfeaf3;
  background: linear-gradient(180deg, #0f1c26, #0a131a); border: 1px solid rgba(80,230,255,.45); box-shadow: 0 24px 70px rgba(0,0,0,.7), 0 0 30px rgba(80,230,255,.15); animation: card-in .18s ease-out; }
.jv-card-head { display: flex; gap: 16px; align-items: center; }
#jv-big { width: 96px; height: 96px; flex: none; image-rendering: pixelated; filter: drop-shadow(0 0 10px rgba(80,230,255,.6)); }
.jv-card h2 { margin: 0; color: #7ff6ff; font-family: 'Courier New', monospace; letter-spacing: 1px; }
.jv-card-head small { color: #8fcfdc; }
.jv-card-head p { margin: 8px 0 0; line-height: 1.45; font-size: 12.5px; }
.jv-card h3 { margin: 16px 0 8px; color: #fff; font-size: 14px; }
.jv-tips-list { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 12px; }
.jv-tips-list span { padding: 3px 9px; border-radius: 10px; font-size: 11px; background: rgba(80,230,255,.08); border: 1px solid rgba(80,230,255,.25); color: #bff4ff; }
.jv-quests { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 8px; }
.jv-quest { display: flex; flex-direction: column; gap: 6px; padding: 10px; border-radius: 12px; background: #111d27; border: 1px solid #1f3140; }
.jv-quest.going { border-color: #ffd21f; box-shadow: 0 0 12px rgba(255,210,31,.2); }
.jv-quest.done { opacity: .55; }
.jv-q-top { display: flex; justify-content: space-between; gap: 6px; align-items: center; }
.jv-q-top b { color: #fff; }
.jv-q-lv { padding: 1px 8px; border-radius: 9px; font-size: 10.5px; font-weight: bold; color: #1a1305; background: #ffd21f; white-space: nowrap; }
.jv-q-rw { display: flex; flex-wrap: wrap; gap: 6px; }
.jv-rw { display: flex; align-items: center; gap: 5px; padding: 3px 8px 3px 3px; border-radius: 9px; background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.06); }
.jv-rw canvas { width: 32px; height: 32px; }
.jv-rw small { font-size: 11px; color: #e6edf5; }
.jv-xp { font-size: 18px; padding: 0 4px; }
.jv-q-foot { display: flex; justify-content: space-between; align-items: center; gap: 6px; }
.jv-q-foot small { color: #8fa3b5; }

/* Casas de graça (promoção do painel admin): a tela pulsa verde com o cartão "CORRA!" e o cronômetro */
.house-promo-fx { position: fixed; inset: 0; z-index: 260; pointer-events: none; display: flex; align-items: flex-start; justify-content: center; animation: hp-in .35s ease-out; }
.house-promo-fx.out { animation: hp-out .8s ease-in forwards; }
.house-promo-fx .hp-edge { position: absolute; inset: 0; box-shadow: inset 0 0 120px 30px rgba(40,255,120,.55); animation: hp-pulse 1s ease-in-out infinite; }
.house-promo-fx .hp-edge::before { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse at center, rgba(40,255,120,.0) 40%, rgba(40,255,120,.18) 100%); }
.house-promo-fx .hp-rain { position: absolute; inset: 0; overflow: hidden; }
.house-promo-fx .hp-rain i { position: absolute; top: -40px; left: var(--x); font-style: normal; font-size: calc(22px * var(--s)); opacity: .85;
  filter: drop-shadow(0 0 6px rgba(60,255,130,.9)); animation: hp-fall 3.2s linear var(--d) infinite; }
.house-promo-fx .hp-card { position: relative; margin-top: 90px; padding: 18px 30px 16px; min-width: 340px; text-align: center; border-radius: 16px;
  background: linear-gradient(180deg, rgba(6,48,22,.96), rgba(3,26,12,.96)); border: 2px solid #3dff86; color: #e9fff0;
  box-shadow: 0 0 40px rgba(61,255,134,.55), inset 0 0 24px rgba(61,255,134,.2); animation: hp-pop .6s cubic-bezier(.2,1.6,.4,1); }
.house-promo-fx .hp-title { font-size: 30px; font-weight: 900; letter-spacing: 1px; color: #5dff9a; text-shadow: 0 0 14px rgba(61,255,134,.9), 0 2px 0 #063; }
.house-promo-fx .hp-sub { margin-top: 4px; font-size: 15px; }
.house-promo-fx .hp-sub b { color: #9dffbf; }
.house-promo-fx .hp-run { margin: 8px 0 4px; font-size: 24px; font-weight: 900; color: #fff; text-shadow: 0 0 12px #3dff86; animation: hp-shake .5s ease-in-out infinite; }
.house-promo-fx .hp-regions { margin-top: 8px; }
.house-promo-fx .hp-regions small, .house-promo-fx .hp-timer small { display: block; font-size: 11px; color: #8fdcaa; text-transform: uppercase; letter-spacing: 1px; }
.house-promo-fx .hp-regions div { display: flex; gap: 6px; justify-content: center; flex-wrap: wrap; margin-top: 4px; }
.house-promo-fx .hp-regions span { padding: 2px 10px; border-radius: 10px; background: rgba(61,255,134,.18); border: 1px solid rgba(61,255,134,.5); font-weight: 700; }
.house-promo-fx .hp-timer { margin-top: 10px; }
.house-promo-fx .hp-timer b { font-size: 28px; color: #5dff9a; font-variant-numeric: tabular-nums; text-shadow: 0 0 10px rgba(61,255,134,.8); }
.house-promo-hud { position: absolute; top: 8px; left: 50%; transform: translateX(-50%); z-index: 9; padding: 4px 14px; border-radius: 14px; pointer-events: auto;
  background: rgba(4,36,16,.9); border: 1px solid #3dff86; color: #c9ffdb; font-weight: 700; font-size: 13px; box-shadow: 0 0 14px rgba(61,255,134,.45); animation: hp-glow 1.6s ease-in-out infinite; }
.house-promo-hud b { color: #5dff9a; font-variant-numeric: tabular-nums; margin-left: 4px; }
.house-promo-hud.hurry { border-color: #ffcb3c; animation-duration: .5s; }
.house-promo-hud.hurry b { color: #ffcb3c; }
.house-card.promo { box-shadow: 0 0 24px rgba(61,255,134,.5); border-color: #3dff86; }
@keyframes hp-in { from { opacity: 0; } }
@keyframes hp-out { to { opacity: 0; } }
@keyframes hp-pulse { 50% { box-shadow: inset 0 0 70px 10px rgba(40,255,120,.3); } }
@keyframes hp-fall { to { transform: translateY(calc(100vh + 60px)) rotate(25deg); } }
@keyframes hp-pop { from { transform: scale(.4); opacity: 0; } }
@keyframes hp-shake { 25% { transform: translateX(-3px); } 75% { transform: translateX(3px); } }
@keyframes hp-glow { 50% { box-shadow: 0 0 22px rgba(61,255,134,.85); } }

/* ⚙ Configurações gráficas: bolinha fixa no canto (também na tela de entrada) e o painel com Padrão / Desempenho */
.gfx-btn { position: fixed; right: 14px; bottom: 14px; z-index: 500; width: 40px; height: 40px; border-radius: 50%; cursor: pointer;
  border: 1px solid rgba(255,203,60,.55); background: rgba(14,17,24,.88); color: #ffcb3c; font-size: 21px; line-height: 1;
  display: grid; place-items: center; box-shadow: 0 4px 14px rgba(0,0,0,.5); opacity: .75; transition: opacity .2s, transform .3s; }
.gfx-btn:hover { opacity: 1; transform: rotate(60deg); }
.gfx-btn.lite { border-color: #3dff86; color: #5dff9a; }
.gfx-panel { position: fixed; right: 14px; bottom: 62px; z-index: 500; width: 300px; padding: 12px; border-radius: 14px;
  background: rgba(16,19,27,.97); border: 1px solid #2c3342; box-shadow: 0 12px 34px rgba(0,0,0,.6); color: #dfe3ea; font-size: 12px; }
.gfx-panel.hidden { display: none; }
.gfx-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; font-size: 14px; color: #ffcb3c; }
.gfx-x { background: none; border: 0; color: #8a93a3; font-size: 20px; cursor: pointer; line-height: 1; }
.gfx-opt { display: flex; gap: 10px; align-items: flex-start; width: 100%; text-align: left; margin-top: 6px; padding: 10px; border-radius: 10px; cursor: pointer;
  background: #1a1f2b; border: 1px solid #2a303c; color: inherit; font: inherit; }
.gfx-opt:hover { border-color: #4a5266; }
.gfx-opt.active { border-color: #ffcb3c; background: rgba(255,203,60,.1); }
.gfx-opt[data-mode="lite"].active { border-color: #3dff86; background: rgba(61,255,134,.1); }
.gfx-opt b { display: block; font-size: 13px; margin-bottom: 2px; }
.gfx-opt small { color: #9aa3b4; line-height: 1.35; }
.gfx-ico { font-size: 20px; }
.gfx-note { margin: 10px 2px 0; color: #8a93a3; font-size: 11px; line-height: 1.4; }

/* modo Desempenho máximo: a interface sem animações em loop, sem desfoque de vidro e sem o fundo animado do login.
   As animações terminam na hora (vão direto para o fim), então nada que entra animado fica invisível. */
body.gfx-lite *, body.gfx-lite *::before, body.gfx-lite *::after {
  animation-duration: .001s !important; animation-iteration-count: 1 !important; animation-delay: 0s !important;
  transition-duration: 0s !important; backdrop-filter: none !important; -webkit-backdrop-filter: none !important; }
body.gfx-lite .lb { display: none; }
body.gfx-lite .login-screen { background: #0b0e14; }
/* no jogo a bolinha some (ficava em cima da Mochila): lá é o botão ⚙ Gráficos da barra de cima */
body:has(#login-modal.hidden) .gfx-btn { display: none; }
.gfx-panel.from-top { top: 46px; bottom: auto; }
#btn-gfx.on-green { color: #5dff9a; border-color: rgba(61,255,134,.6); }

/* ===== Mapa mais aberto, como no cliente original (game_interface do OTClient): o mapa ocupa todo o meio, sem
   caixa arredondada nem espaços largos em volta, e a barra de ataques fica POR CIMA da borda de baixo do mapa (no
   original: gameActionPanel com margin-top -50). Assim ela não ocupa uma faixa própria e o chat não pula quando os
   ataques aparecem ou somem. ===== */
#main-view { gap: 3px; padding: 3px; }
#sidebar-left, #sidebar-right, #center-viewport { gap: 3px; }
#canvas-wrapper { border-radius: 4px; box-shadow: none; border-color: #05070b; }
#canvas-wrapper #cooldown-bar { position: absolute; left: 50%; bottom: 6px; transform: translateX(-50%); z-index: 7;
  min-height: 0; max-width: calc(100% - 130px); flex-wrap: nowrap; overflow-x: auto; overflow-y: hidden; gap: 3px; padding: 4px;
  border-radius: 12px; background: rgba(8,10,16,.55) !important; border: 1px solid rgba(255,255,255,.07) !important;
  box-shadow: 0 4px 14px rgba(0,0,0,.35) !important; scrollbar-width: none; }
#canvas-wrapper #cooldown-bar::-webkit-scrollbar { display: none; }
#canvas-wrapper #cooldown-bar:empty { display: none; }
#canvas-wrapper #cooldown-bar .move-slot { flex: 0 0 auto; background: rgba(22,26,36,.88) !important; }
#canvas-wrapper #cooldown-bar .move-slot:hover:not(.disabled) { transform: none; }

/* ===== Chat mais legível: letra maior, mais espaço entre as linhas, uma faixa leve a cada mensagem (dá para ver onde
   começa e termina cada uma) e o nick em negrito. ===== */
#chat-container { border-radius: 6px; }
.chat-messages { padding: 4px 4px 6px; background: #0a0d13; font-size: 12.5px; line-height: 18px; scrollbar-width: thin; scrollbar-color: #3a4152 transparent; }
.chat-msg { padding: 1px 6px; border-radius: 4px; overflow-wrap: anywhere; }
.chat-msg:nth-child(even):not(.levelup) { background: rgba(255,255,255,.035); }
.chat-msg:hover:not(.levelup) { background: rgba(255,255,255,.07); }
.chat-msg .time { color: #5f6878; font-size: 10.5px; margin-right: 6px; }
.chat-msg .author { font-weight: bold; margin-right: 4px; }
.chat-msg .text { text-shadow: 0 1px 1px rgba(0,0,0,.7); }
.chat-msg.default .text, .chat-msg.default .author { color: #ffe95a; }
.chat-msg.server .text { color: #eef1f6; }
/* altura mínima do chat: o layout salvo pelo Dono deixava 93 px (cabiam ~2 linhas). Arrastar a borda ainda aumenta. */
#chat-container { min-height: 132px !important; }

/* um pouco menores: botões de ataque (70x40 -> 62x34, ícone 32 -> 26) e os quadrados da mochila (4 -> 5 por linha) */
.move-slot { width: 62px; height: 34px; gap: 2px; padding: 2px 3px; }
.move-slot .mi { width: 26px; height: 26px; flex: 0 0 26px; }
.move-slot .mn { font-size: 8.5px; line-height: 9px; }
.move-slot .hk { font-size: 8px; }
.move-slot .cd { font-size: 11px; }
#canvas-wrapper #cooldown-bar { padding: 3px; gap: 2px; bottom: 5px; }
#inventory-grid, #ball-row { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 3px; }
#inventory-grid .inv-slot canvas, #ball-row .ball-slot canvas { max-width: 32px; }
#inventory-grid .inv-slot .count { font-size: 10px; }
/* NPC com vários destinos (Citero das hunts, barcos): os botões quebram em linhas de 3 em vez de espremer numa só */
.npc-actions .btn { flex: 1 1 calc(33% - 8px); min-width: 96px; white-space: nowrap; }

/* aluguel de pokémon e de casa (Rental) */
.trade-tabs { display: flex; gap: 6px; margin-bottom: 10px; }
.trade-tabs button { flex: 1; padding: 7px; border-radius: 9px; border: 1px solid #262c3a; background: #1a1f2b; color: #a8b1c3; font-weight: bold; font-size: 11px; cursor: pointer; }
.trade-tabs button.active { color: #1a1305; background: linear-gradient(#ffd75a, #d29a1c); border-color: #7a5208; }
.trade-pane.hidden, .rent-pane.hidden { display: none; }
.rent-win { width: min(440px, 94vw); z-index: 121; }
.rp-hint { color: var(--muted); font-size: 10px; margin-bottom: 8px; line-height: 1.4; } .rp-hint b { color: #fff; }
.rp-list { display: flex; flex-direction: column; gap: 4px; max-height: 230px; overflow: auto; }
.rp-poke { display: flex; align-items: center; gap: 8px; padding: 5px 8px; border-radius: 9px; background: #1a1f2b; border: 1px solid #262c3a; cursor: pointer; }
.rp-poke:hover { border-color: rgba(255,203,60,.5); }
.rp-poke.sel { border-color: var(--gold); box-shadow: 0 0 0 2px rgba(255,203,60,.18); background: #232117; }
.rp-poke.off { opacity: .5; cursor: not-allowed; }
.rp-poke b { color: #fff; font-size: 12px; } .rp-poke i { display: block; color: #ff8a8a; font-size: 9px; font-style: normal; }
.rp-boost { color: #ffb44d; font-weight: bold; }
.rp-form { display: grid; grid-template-columns: 1fr auto auto; gap: 6px; align-items: center; margin-top: 10px; }
.rp-form .trade-money { margin-top: 0; }
.rp-form select, .rh-grid select { padding: 6px; border-radius: 7px; border: 1px solid var(--line2); background: #0b0d13; color: #fff; }
.rp-form .btn.primary { padding: 7px 12px; background: linear-gradient(#ffd75a, #d29a1c); color: #1a1305; font-weight: bold; border-color: #7a5208; }
.rp-status h4 { color: #a8b1c3; font-size: 11px; margin: 12px 0 5px; }
.rp-run { display: flex; justify-content: space-between; gap: 8px; padding: 5px 8px; border-radius: 8px; background: #0e1118; font-size: 11px; color: #c9d1e0; margin-bottom: 3px; }
.rp-run b { color: #fff; } .rp-run small { color: #ffcf5a; white-space: nowrap; }
.rent-requests { position: fixed; z-index: 391; top: 112px; left: 50%; transform: translateX(-50%); display: flex; flex-direction: column; gap: 8px; pointer-events: none; }
.rent-requests .rent-request { position: static; transform: none; pointer-events: auto; animation: rr-in .22s ease-out; }
@keyframes rr-in { from { opacity: 0; transform: translateY(-10px); } }
.rent-request .tr-text small em { font-style: normal; color: #ffcf5a; }
.rent-house-box { margin-top: 14px; padding: 12px 14px; border-radius: 12px; background: #161a24; border: 1px solid rgba(255,203,60,.25); }
.rent-house-box h4 { color: #fff; font-size: 13px; margin-bottom: 8px; } .rent-house-box p { color: #c9d1e0; font-size: 11px; } .rent-house-box p b { color: var(--gold); }
.rh-grid { display: grid; grid-template-columns: 1.3fr 1.2fr .8fr; gap: 8px; }
.rh-grid label { display: flex; flex-direction: column; gap: 4px; color: #7d8698; font-size: 10px; }
.rh-grid .trade-money { margin-top: 0; }
.rh-mode { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 10px 0; }
.rh-mode label { display: block; padding: 8px 10px; border-radius: 9px; background: #0e1118; border: 1px solid #262c3a; cursor: pointer; font-size: 11px; color: #fff; }
.rh-mode label:has(input:checked) { border-color: var(--gold); background: #232117; }
.rh-mode small { display: block; color: var(--muted); font-size: 9.5px; margin-top: 4px; line-height: 1.35; }

/* aluguel: tempo em dias + horas, saldo do outro jogador e detalhes do tempo alugado */
.rp-form { grid-template-columns: 1fr auto; }
.rp-form .rent-time { grid-column: 1; } .rp-form .rp-send { grid-column: 2; grid-row: 1 / span 2; align-self: stretch; }
.rp-form .rp-send:disabled { opacity: .45; cursor: not-allowed; }
.rent-time { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rent-time label { display: flex; align-items: center; gap: 4px; color: #a8b1c3; font-size: 11px; }
.rent-time input { width: 52px; padding: 5px 6px; border-radius: 7px; border: 1px solid var(--line2); background: #0b0d13; color: #fff; text-align: center; }
.rt-total { color: #ffcf5a; font-size: 10px; } .rt-total.bad { color: #ff6b6b; }
.trade-money-msg.ok { color: #4ee06a; }
.rp-msg { margin-top: 6px; }
.rh-grid { grid-template-columns: 1fr 1fr; } .rh-grid > label:last-child { grid-column: 1 / -1; }
#rh-send:disabled { opacity: .45; cursor: not-allowed; }
.rp-run { display: block; }
.rp-run-top { display: flex; justify-content: space-between; gap: 8px; }
.rp-run-det { color: #8d96a8; font-size: 10px; margin-top: 2px; }
.rp-bar { display: block; height: 3px; border-radius: 3px; background: rgba(255,255,255,.08); overflow: hidden; margin-top: 4px; }
.rp-bar i { display: block; height: 100%; background: linear-gradient(90deg, #ffd75a, #d29a1c); }
.pt-rent { display: flex; flex-direction: column; gap: 2px; margin: 6px 0; padding: 6px 8px; border-radius: 8px; background: rgba(255,203,60,.08); border: 1px solid rgba(255,203,60,.3); font-size: 10px; color: #c9d1e0; }
.pt-rent > b { color: var(--gold); font-size: 11px; } .pt-rent span b { color: #fff; }

/* pokébola de pokémon alugado: selo 🐾 na mochila e borda dourada na Pokébar */
.rent-badge { position: absolute; top: 1px; left: 2px; font-size: 11px; line-height: 1; pointer-events: none; filter: drop-shadow(0 0 2px #000); }
/* alugado: borda verde inteira na pokébola (mochila, Inventário e Pokébar) */
.ball-slot.rented, #inv-ball.rented, .pokebar-slot.rented { box-shadow: inset 0 0 0 2px #2ee66b, 0 0 6px rgba(46,230,107,.55) !important; border-color: #2ee66b !important; }

/* aluguel recusado / sem resposta (para quem ofereceu) */
.rent-answer.refused { border-color: rgba(255,90,90,.6); }
.rent-answer.refused .tr-icon { background: radial-gradient(circle at 30% 30%, rgba(255,90,90,.35), rgba(255,90,90,.08)); border-color: rgba(255,90,90,.45); animation: none; }
.rent-answer.refused .tr-text b span { color: #ff8a8a; }
.rent-answer.expired { border-color: rgba(160,170,190,.45); }
.rent-answer.expired .tr-icon { background: rgba(160,170,190,.12); border-color: rgba(160,170,190,.35); animation: none; }
.rent-answer.leaving { opacity: 0; transform: translateY(-8px); transition: opacity .25s, transform .25s; }

/* pesca: o cursor vira a vara na mira, a vara acesa enquanto pesca, janela dos pokémon por nível */
body.targeting.fishing-aim, body.targeting.fishing-aim * { cursor: url("../ui/topbuttons/fishing_icon.png") 28 3, crosshair !important; }
#inv-rod.fishing { box-shadow: 0 0 0 1px #4fc3ff, 0 0 10px rgba(79,195,255,.7); border-radius: 6px; animation: rod-glow 1.4s ease-in-out infinite; }
@keyframes rod-glow { 50% { box-shadow: 0 0 0 1px #4fc3ff, 0 0 3px rgba(79,195,255,.3); } }
.fish-keycap { position: fixed; z-index: 400; top: 112px; left: 50%; transform: translateX(-50%); padding: 12px 18px; border-radius: 14px;
  background: linear-gradient(160deg, #1f2433, #12151d); border: 1px solid rgba(79,195,255,.55); color: #fff; font-size: 13px; box-shadow: 0 18px 44px rgba(0,0,0,.6); }
.fish-keycap kbd { margin-left: 6px; padding: 1px 6px; border-radius: 5px; background: #0b0d13; border: 1px solid #333a4a; font-size: 11px; }
.fish-win { width: min(470px, 94vw); border-color: rgba(79,195,255,.4); }
.fish-win .trade-head h2 span { color: #4fc3ff; }
.fw-bar { position: relative; height: 16px; border-radius: 8px; background: #0e1118; border: 1px solid #222837; overflow: hidden; margin-bottom: 8px; }
.fw-bar i { position: absolute; inset: 0 auto 0 0; background: linear-gradient(90deg, #1b8fd6, #4fc3ff); }
.fw-bar span { position: relative; display: block; text-align: center; font-size: 10px; line-height: 16px; color: #fff; text-shadow: 1px 1px #000; }
.fw-h { color: #a8b1c3; font-size: 11px; margin: 10px 0 5px; }
.fw-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; }
.fw-poke { display: flex; justify-content: space-between; align-items: center; gap: 4px; padding: 4px 7px; border-radius: 7px; background: #1a1f2b; border: 1px solid #262c3a; font-size: 11px; }
.fw-poke b { color: #fff; font-weight: 600; } .fw-poke small { color: #4ee06a; font-size: 9px; white-space: nowrap; }
.fw-poke.off { opacity: .55; } .fw-poke.off small { color: #8d96a8; }
