/* Teste v325: camada final de responsividade mobile.
   Mantem o desktop intacto e corrige viewport, teclado, rolagem e paineis. */
:root{
  --mobile-safe-top:max(6px,env(safe-area-inset-top));
  --mobile-safe-right:max(6px,env(safe-area-inset-right));
  --mobile-safe-bottom:max(6px,env(safe-area-inset-bottom));
  --mobile-safe-left:max(6px,env(safe-area-inset-left));
}
html,body,#app,#stage{max-width:100%;}
*,*::before,*::after{box-sizing:border-box}
img,video{max-width:100%}
.panel,.system-window,.system-window *,.game-chat,.game-chat *{min-width:0}

/* O estado fechado e independente da escala escolhida para o chat aberto. */
.game-chat.minimized{
  width:129px!important;
  min-width:129px!important;
  max-width:129px!important;
  height:40px!important;
  min-height:40px!important;
  max-height:40px!important;
  overflow:hidden!important;
  transform:scale(var(--chat-effective-scale,1))!important;
  transform-origin:left bottom!important;
}
.game-chat{
  left:var(--chat-position-left,auto)!important;
  top:var(--chat-position-top,auto)!important;
  right:auto!important;
  bottom:auto!important;
}
.game-chat.minimized>header{
  width:129px!important;
  min-width:129px!important;
  height:40px!important;
  min-height:40px!important;
  padding:0 9px!important;
}
.game-chat.minimized>header strong{font-size:14px!important;line-height:1!important}
.game-chat.minimized>header #chat-status,.game-chat.minimized .chat-scale-controls{display:none!important}
.game-chat.minimized #minimize-chat{margin-left:auto!important;flex:0 0 30px!important;width:30px!important;height:26px!important}

@media(max-width:780px), (hover:none) and (pointer:coarse){
  html,body{width:100%;height:100%;overflow:hidden!important;overscroll-behavior:none}
  body:has(#auth-screen.hidden) #stage{width:100vw!important;height:100dvh!important;overflow:hidden!important}

  /* Chat: tamanho do PDF preservado e encaixado via escala JS no viewport visual. */
  .game-chat{position:fixed!important;right:auto!important;bottom:auto!important;max-width:none!important;max-height:none!important;transform-origin:left bottom!important;contain:layout paint style}
  .game-chat:not(.minimized){width:435px!important;height:341px!important;min-height:341px!important;max-height:341px!important}
  .game-chat>header{touch-action:none}
  .game-chat .chat-messages{overscroll-behavior:contain;touch-action:pan-y}
  .game-chat input,.game-chat textarea{font-size:16px!important}
  .game-chat .chat-scale-controls button,#minimize-chat{min-height:0!important}

  /* Modais nunca ultrapassam notch, barra do navegador ou teclado virtual. */
  .modal.system-modal{
    align-items:center!important;
    justify-content:center!important;
    padding:var(--mobile-safe-top) var(--mobile-safe-right) var(--mobile-safe-bottom) var(--mobile-safe-left)!important;
    overflow:hidden!important;
  }
  .system-window,.system-window-wide,.outfit-window,.terminal-cp-window,.pokemon-broker-window,.guild-window,.pix-checkout-window,.trade-window{
    width:100%!important;
    max-width:100%!important;
    height:100%!important;
    max-height:100%!important;
    min-height:0!important;
    border-radius:10px!important;
    overflow:hidden!important;
  }
  .system-window>header,.friends-window>header,.pokemon-broker-header{
    flex:0 0 auto!important;
    min-height:48px!important;
    height:auto!important;
    padding:8px 12px!important;
    gap:8px;
  }
  .system-window>header h2,.pokemon-broker-header h2{font-size:clamp(16px,5vw,20px)!important;line-height:1.05}
  .system-window>header small,.pokemon-broker-header small{font-size:7px!important}
  .system-window>header button,.pokemon-broker-header>button{flex:0 0 34px;width:34px;height:34px;margin-left:auto!important}
  .system-tools,.pokedex-tools,.houses-tools,.terminal-cp-tools,.broker-filters{
    flex:none!important;
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:6px!important;
    max-height:min(30dvh,190px);
    padding:8px!important;
    overflow:auto!important;
    overscroll-behavior:contain;
  }
  .system-tools>input:first-child,.pokedex-tools>input:first-child,.houses-tools>input:first-child,.terminal-cp-tools>input:first-child,.broker-filters>input:first-child{grid-column:1/-1!important}
  .system-tools input,.system-tools select,.pokedex-tools input,.pokedex-tools select,.pokedex-tools button,.houses-tools input,.houses-tools select,.terminal-cp-tools input,.terminal-cp-tools select,.broker-filters input,.broker-filters select{width:100%!important;min-width:0!important;min-height:38px!important;font-size:16px!important}
  .system-summary,.terminal-cp-summary{flex:none;min-height:34px;padding:7px 10px!important;overflow-wrap:anywhere}
  .pokedex-list,.terminal-cp-grid,.houses-list,.diamond-offers,.rare-collection,.ranking-list,.guild-content,.trade-offers{
    flex:1!important;
    min-height:0!important;
    overflow:auto!important;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
  }
  .pokedex-list,.terminal-cp-grid,.houses-list,.diamond-offers,.rare-collection{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important;padding:8px!important}
  .dex-entry,.terminal-poke-card,.house-card,.diamond-offer,.rare-collection-card{min-width:0!important}

  /* CP, corretor, loja, social e guild passam de colunas desktop para fluxo mobile. */
  .pokemon-broker-header p{display:none!important}
  .pokemon-broker-layout{display:grid!important;grid-template-columns:1fr!important;grid-template-rows:auto minmax(0,1fr)!important;overflow:hidden!important}
  .pokemon-broker-sidebar{max-height:38dvh;padding:8px!important;border-right:0!important;border-bottom:1px solid #294957;overflow:auto!important}
  .pokemon-broker-main{min-height:0!important;overflow:hidden}
  .broker-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;padding:8px!important}
  .broker-result-bar{flex-wrap:wrap;padding:6px 8px!important}
  .broker-result-bar>span{width:100%;margin-right:0!important}
  .broker-checkout{grid-template-columns:1fr 1fr!important;gap:6px!important;padding:7px 9px!important}
  .broker-checkout button{grid-column:1/-1}
  .diamond-layout,.friends-layout{display:grid!important;grid-template-columns:1fr!important;grid-template-rows:auto minmax(0,1fr)!important;overflow:hidden}
  .diamond-layout>aside,.friends-layout>aside{max-height:33dvh;padding:9px!important;border-right:0!important;border-bottom:1px solid #34465a;overflow:auto}
  .diamond-layout>main,.friends-layout>main{min-height:0!important;overflow:auto}
  .friends-layout #conversation{min-height:0;grid-template-rows:42px minmax(0,1fr) 58px}
  .guild-grid{grid-template-columns:1fr!important}
  .guild-bonuses,.guild-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .guild-form label{grid-template-columns:1fr!important}
  .capture-tabs{flex:none;overflow-x:auto;scrollbar-width:none}
  .capture-tabs::-webkit-scrollbar{display:none}
  .capture-tabs button{flex:1 0 auto!important;min-width:92px}
  .capture-table-wrap{min-height:0;padding:0 6px 6px!important;overflow:auto!important;-webkit-overflow-scrolling:touch}
  .capture-table{min-width:820px}
  .player-trade-form{grid-template-columns:1fr 1fr!important;max-height:42dvh;overflow:auto}
  .player-trade-form>button{grid-column:1/-1}
  .pix-checkout-body{min-height:0;padding:12px!important;overflow:auto}
  .pix-payment{grid-template-columns:1fr!important}
  .pix-payment img{justify-self:center;width:min(210px,65vw)!important;height:auto!important;aspect-ratio:1}

  /* Janelas do cliente usam a area util inteira e rolagem somente no conteudo. */
  .panel.client-open:not(.auto-helper-panel):not(.hunt-analyzer-panel){
    max-width:calc(100vw - var(--mobile-safe-left) - var(--mobile-safe-right))!important;
    max-height:calc(100dvh - var(--mobile-safe-top) - var(--mobile-safe-bottom))!important;
  }
  .inventory-panel.client-open,.trainer-panel.client-open,.market-panel.client-open,.depot-panel.client-open,.player-market-panel.client-open,.npc-directory-panel.client-open,.npc-trade-panel.client-open{
    inset:var(--mobile-safe-top) var(--mobile-safe-right) var(--mobile-safe-bottom) var(--mobile-safe-left)!important;
    width:auto!important;
    height:auto!important;
    border-radius:9px!important;
    overflow:hidden!important;
  }
  .inventory-panel.client-open>:not(.inventory-title),.trainer-panel.client-open>:not(.panel-title),.market-panel.client-open>:not(.panel-title),.depot-panel.client-open>:not(.panel-title),.npc-directory-panel.client-open>:not(.panel-title){min-height:0}
  .inventory-body,.inventory-content,.inventory-grid,.trainer-panel .panel-content,.market-items,.depot-content,.npc-directory-list{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  .inventory-panel .inventory-title{grid-template-columns:34px minmax(0,1fr) auto 30px 30px!important;padding:7px!important}
  .inventory-team-slots{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .inventory-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:6px!important;padding-inline:7px!important}
  .inventory-grid>*{min-width:0!important}
  .npc-directory-card{grid-template-columns:44px minmax(0,1fr)!important}
  .npc-directory-card>button{grid-column:2;width:100%}

  /* Mercado: topo e filtros rolaveis, cards sem largura minima de desktop. */
  .panel.player-market-panel.client-open{inset:var(--mobile-safe-top) var(--mobile-safe-right) var(--mobile-safe-bottom) var(--mobile-safe-left)!important;width:auto!important;height:auto!important;max-height:none!important}
  .player-market-panel>.panel-title{flex-basis:48px;min-height:48px;padding:0 9px!important}
  .player-market-panel>.panel-title>span{font-size:14px!important}
  .player-market-panel>.panel-title>span:after{display:none!important}
  .player-market-panel #player-market-balance{margin-right:36px!important;padding:4px!important;font-size:0}
  .player-market-panel .client-tabs{overflow-x:auto;scrollbar-width:none}
  .player-market-panel .client-tabs button{flex:1 0 104px}
  .player-market-panel .player-market-tools{grid-template-columns:repeat(2,minmax(0,1fr))!important;max-height:156px;padding:7px!important;overflow:auto!important}
  .player-market-panel .player-market-tools>input:first-child{grid-column:1/-1}
  .player-market-panel .player-market-tools input,.player-market-panel .player-market-tools select{font-size:16px!important}
  .player-market-panel .player-market-content{grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-auto-rows:minmax(220px,auto)!important;gap:7px!important;padding:7px!important}
  .market-offer-card{min-width:0!important;min-height:220px!important}
  .market-card-art{flex-basis:74px!important;min-width:70px!important}
  .market-card-art canvas{width:68px!important;height:68px!important}
  .market-card-copy{padding:9px 8px 64px!important}

  /* HUD e avisos mantem o centro do mapa livre. */
  .activity{min-width:0!important;width:min(420px,calc(100vw - 12px))!important;max-height:38dvh!important;resize:none!important}
  .party-panel{max-height:calc(100dvh - 12px)!important;overflow:auto!important}
  .rare-capture-feed{top:max(60px,calc(env(safe-area-inset-top) + 52px))!important;width:calc(100vw - 12px)!important}
  .rare-capture-banner,.rare-capture-banner.mystery-capture-card,.capture-center-card{max-width:calc(100vw - 12px)!important}
  .rare-capture-banner:not(.mystery-victory-card){grid-template-columns:64px minmax(0,1fr)!important}
  .rare-capture-banner:not(.mystery-victory-card) .rare-capture-stats{grid-column:1/-1;border-left:0;border-top:1px solid #ffffff1c;padding:7px 0 0!important}
  .mystery-victory-feed{max-width:calc(100vw - 12px)!important}
  .sg-card,.sg-ranking,.courtesy-card,.house-guide-card,.session-replaced-card{max-width:calc(100vw - 12px)!important;max-height:calc(100dvh - 12px)!important;overflow:auto!important}
  .sg-next,.sg-dock{right:var(--mobile-safe-right)!important}
  #stage .pokemon-moves{left:var(--mobile-safe-left)!important;right:var(--mobile-safe-right)!important;width:auto!important;max-width:none!important;overflow-x:auto!important;touch-action:pan-x}
  input,textarea,select{font-size:16px}
}

@media(max-width:520px){
  .pokedex-tools,.houses-tools,.terminal-cp-tools,.broker-filters,.system-tools{grid-template-columns:1fr!important}
  .system-tools>input:first-child,.pokedex-tools>input:first-child,.houses-tools>input:first-child,.terminal-cp-tools>input:first-child,.broker-filters>input:first-child{grid-column:auto!important}
  .pokedex-list,.terminal-cp-grid,.houses-list,.diamond-offers,.rare-collection,.broker-grid{grid-template-columns:1fr!important}
  .inventory-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .player-market-panel .player-market-content{grid-template-columns:1fr!important}
  .player-trade-form{grid-template-columns:1fr!important}
  .player-trade-form>button{grid-column:auto}
  .rare-capture-banner:not(.mystery-victory-card){grid-template-columns:52px minmax(0,1fr)!important;padding:8px!important}
  .rare-capture-art,.rare-capture-art canvas{width:50px!important;height:50px!important}
  .rare-capture-copy{padding:0 7px!important}
  .rare-capture-copy strong{font-size:14px!important}
}

@media(max-width:370px){
  .inventory-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .inventory-team-slots{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .guild-bonuses,.guild-stats{grid-template-columns:1fr!important}
  .broker-checkout{grid-template-columns:1fr!important}
  .broker-checkout button{grid-column:auto}
}

/* Celular deitado: reduz cabecalhos, preserva a area de combate e o scroll. */
@media(max-height:500px) and (orientation:landscape){
  .system-window>header,.friends-window>header,.pokemon-broker-header{min-height:40px!important;padding-block:4px!important}
  .system-window>header h2,.pokemon-broker-header h2{font-size:15px!important}
  .system-window>header small,.pokemon-broker-header small,.pokemon-broker-header p{display:none!important}
  .pokemon-broker-sidebar,.diamond-layout>aside,.friends-layout>aside{max-height:42dvh!important}
  .system-tools,.pokedex-tools,.houses-tools,.terminal-cp-tools,.broker-filters{max-height:34dvh!important}
  .beta-card{max-height:58dvh!important;overflow:auto!important}
  .game-chat:not(.minimized){transform-origin:left bottom!important}
}
