
:root{
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
  color-scheme:light dark;
  --bg:#dfe6c0; --panel:#f6f7e1; --ink:#1d2a1b; --muted:#56664f; --line:#b3c08f;
  --grass:#79c24d; --grass-d:#68b03f; --gold:#f0b92f; --gold-d:#c8901a; --danger:#d9483b;
  --fogo:#e8553a; --agua:#3b8de0; --grama:#3f9f4d; --shadow:rgba(29,42,27,.3);
  --btn-ink:#1d2a1b;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#101912; --panel:#1b2a20; --ink:#e9f1d4; --muted:#a2b79a; --line:#33493a; --shadow:rgba(0,0,0,.55);
  }
}
:root[data-theme="dark"]{
  --bg:#101912; --panel:#1b2a20; --ink:#e9f1d4; --muted:#a2b79a; --line:#33493a; --shadow:rgba(0,0,0,.55);
}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:"Nunito","Segoe UI",system-ui,-apple-system,sans-serif;font-size:17px;line-height:1.4;-webkit-tap-highlight-color:transparent}
button{font:inherit;color:inherit;touch-action:manipulation}
.app{max-width:560px;margin:0 auto;padding:10px 10px 28px}
h1,h2,h3{margin:0 0 8px;line-height:1.1;font-family:"Pixelify Sans","Nunito",system-ui,sans-serif}
h1{font-size:2.6rem;letter-spacing:.5px}
h2{font-size:1.45rem}
.muted{color:var(--muted)}
small{font-size:.82rem}

/* botões */
.btn{background:var(--gold);color:#1d2a1b;border:3px solid var(--btn-ink);border-radius:6px;padding:9px 16px;font-weight:800;cursor:pointer;box-shadow:0 4px 0 var(--btn-ink);transition:transform .06s,box-shadow .06s}
.btn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--btn-ink)}
.btn:focus-visible,.card:focus-visible,.node:focus-visible,.mv:focus-visible{outline:3px solid #fff;outline-offset:2px;box-shadow:0 0 0 6px var(--ink)}
.btn.ghost{background:var(--panel);color:var(--ink);border-color:var(--ink);box-shadow:0 4px 0 var(--ink)}
.btn.small{padding:3px 10px;font-size:.85rem;box-shadow:0 3px 0 var(--btn-ink)}
.btn.big{font-size:1.2rem;padding:12px 22px}
.btn:disabled{opacity:.5;cursor:not-allowed}

/* HUD */
.hud{background:var(--panel);border:3px solid var(--ink);border-radius:8px;padding:8px 10px;margin-bottom:10px}
.hud .stats{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.team{display:flex;gap:6px;flex-wrap:wrap}
.chip{display:flex;flex-direction:column;align-items:center;width:62px;background:transparent;border:2px solid var(--line);border-radius:6px;padding:2px 2px 4px;cursor:pointer;position:relative}
.chip.dead{opacity:.45;filter:grayscale(1)}
.chip svg{width:38px;height:38px}
.chip small{font-size:.72rem;color:var(--muted)}
.bar{display:block;width:100%;height:6px;background:rgba(0,0,0,.25);border-radius:3px;overflow:hidden}
.bar i{display:block;height:100%;background:#59c24b;width:100%;transition:width .12s}
.bar i.mid{background:#e8c13a}.bar i.low{background:var(--danger)}

/* tipos */
.tp{display:inline-flex;align-items:center;gap:4px;padding:1px 9px 1px 4px;border-radius:99px;color:var(--ink);font-size:.78rem;background:rgba(255,255,255,.07);white-space:nowrap}
.ti-only{display:inline-flex;align-items:center}
.ti-only .ti{margin:0 2px 0 0}
.sbs{width:100%;display:grid;gap:4px;margin:6px 0 4px}
.ti{vertical-align:middle;margin-right:2px;display:inline-block}
.tb{display:flex;align-items:flex-end;justify-content:center;width:100%}
.modal-ico{display:flex;justify-content:center;margin:0 0 6px}
.modal-ico img,.modal-ico svg{image-rendering:pixelated}

/* título */
.title{text-align:center;padding:0 0 12px}
.title .hero{margin:0 -10px;padding:26px 14px 22px;background:linear-gradient(180deg,#9fd8f2 0%,#cfeec0 62%,#79c24d 62%,#68b03f 100%);border-bottom:4px solid var(--ink);border-radius:0 0 22px 22px;color:#1d2a1b}
.title .trio{display:flex;justify-content:center;gap:4px;margin-bottom:6px}
.title .trio svg,.title .trio .pmd{max-width:96px}
.title .trio>div{animation:bob 2.4s ease-in-out infinite}
.title .trio>div:nth-child(2){animation-delay:.35s}.title .trio>div:nth-child(3){animation-delay:.7s}
.title h1{font-size:3rem;text-shadow:0 3px 0 rgba(255,255,255,.7);margin-bottom:6px}
.title h1 span{color:#c8901a}
.title .tag{max-width:32ch;margin:0 auto;font-weight:700}
.title .menu{display:flex;flex-direction:column;gap:14px;max-width:300px;margin:22px auto 16px}
.title .duo{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.btn.stack{display:flex;flex-direction:column;align-items:center;gap:2px}
.btn.stack small{font-weight:700;opacity:.8;font-size:.78rem}
.btn.stack .mini{display:flex;gap:2px;margin-top:2px}
.btn.stack .mini .tb{width:32px}
.pills{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.pills span{background:var(--panel);border:2px solid var(--line);border-radius:99px;padding:3px 12px;font-size:.88rem;color:var(--muted)}
.pills b{color:var(--ink)}
@keyframes bob{50%{transform:translateY(-6px)}}

/* arrastar e Pokédex */
.sortable>*{touch-action:none;user-select:none;-webkit-user-select:none}
.sortable>.drag{z-index:60;opacity:.85;box-shadow:0 6px 12px var(--shadow);cursor:grabbing;position:relative}
.dragtip{display:block;margin-top:6px}
.dex .dexbar{height:10px;background:rgba(0,0,0,.2);border-radius:5px;overflow:hidden;margin-bottom:6px}
.dex .dexbar i{display:block;height:100%;background:#59c24b}
.dex h3{margin:12px 0 6px;font-size:1.1rem}.dex h3 small{color:var(--muted);font-family:"Nunito",sans-serif}
.dexgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:6px}
.dexcell{display:flex;flex-direction:column;align-items:center;gap:1px;background:var(--panel);border:2px solid var(--line);border-radius:6px;padding:4px 2px;cursor:pointer;min-width:0}
.dexcell small{color:var(--muted);font-size:.68rem}
.dexcell b{font-size:.7rem;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dexcell.off{cursor:default;opacity:.7}
.dexcell.off .tb{filter:brightness(0) opacity(.35)}
@media (prefers-reduced-motion:reduce){.title .trio>div{animation:none}}

.panel{background:var(--panel);border:3px solid var(--ink);border-radius:8px;padding:14px}

/* mapa */
.mapframe{position:relative;background:#e7edc9;border:3px solid #1e2740;border-radius:6px;padding:9px;box-shadow:inset 0 0 0 3px #c7d2a6}
.mapframe .gate{position:absolute;left:50%;bottom:-3px;width:15%;height:14px;transform:translateX(-50%);background:#79c24d;border-left:3px solid #1e2740;border-right:3px solid #1e2740}
.map{position:relative;width:100%;aspect-ratio:542/894;background:#79c24d;border:3px solid #587a3c;overflow:hidden}
.map canvas.room{position:absolute;inset:0;width:100%;height:100%;image-rendering:pixelated}
.edges{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.edges line{stroke:rgba(25,35,25,.78);stroke-width:1.6;stroke-dasharray:4 4;vector-effect:non-scaling-stroke}
.edges line.solid{stroke:#8d98a0;stroke-dasharray:none;stroke-width:2}
.edges line.on{stroke:#fff;stroke-dasharray:none;stroke-width:3}
.node{position:absolute;width:clamp(40px,10%,56px);aspect-ratio:1;transform:translate(-50%,-50%);border:0;background:transparent;padding:0;cursor:default;display:flex;align-items:center;justify-content:center}
.node img.ico{display:block;height:auto;image-rendering:pixelated;filter:drop-shadow(0 2px 0 rgba(0,0,0,.28))}
.node svg.ico{width:100%;height:100%;display:block;filter:drop-shadow(0 2px 0 rgba(0,0,0,.25))}
.node.done{opacity:.4;filter:grayscale(.8)}
.node:disabled{cursor:default}
.node.open{cursor:pointer;z-index:2}
.node.open::after{content:"";position:absolute;inset:-5px;border:3px solid #fff;border-radius:50%;box-shadow:0 0 0 2px var(--ink);animation:pulse 1.2s ease-in-out infinite}
.node .num{position:absolute;top:-8px;right:-8px;background:#5b4bb0;color:#fff;border:2px solid #fff;border-radius:5px;font-style:normal;font-size:.75rem;min-width:20px;height:20px;line-height:16px;text-align:center}
.node.cur .pin{position:absolute;left:50%;top:-34px;width:38px;height:38px;transform:translateX(-50%);filter:drop-shadow(0 2px 0 rgba(0,0,0,.35));pointer-events:none;z-index:3}
.node.cur .pin svg{width:100%;height:100%}
@keyframes pulse{50%{transform:scale(1.12);opacity:.75}}
.legend{margin-top:10px;display:flex;gap:8px 14px;flex-wrap:wrap;font-size:.9rem;color:var(--muted)}
details.icons{margin-top:12px;background:var(--panel);border:3px solid var(--ink);border-radius:8px;padding:8px 12px}
details.icons summary{cursor:pointer;font-weight:700}
.iconlist{display:grid;gap:8px;margin-top:10px}
.iconlist div{display:flex;gap:10px;align-items:center}
.iconlist svg,.iconlist .lg{width:34px;height:34px;flex:none}
.iconlist .lg{display:flex;align-items:center;justify-content:center}
.iconlist .lg img{image-rendering:pixelated}
.iconlist small{display:block;color:var(--muted)}
.cmp{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;align-items:center;margin:8px 0}
.cmp .arrow{font-size:1.8rem;font-weight:800}
.cmp .mcard{background:var(--panel);border:2px solid var(--line);border-radius:8px;padding:6px}

/* cartas */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(138px,1fr));gap:10px;margin:10px 0}
.card{background:var(--panel);border:3px solid var(--ink);border-radius:8px;padding:8px;cursor:pointer;text-align:center;display:flex;flex-direction:column;gap:3px;align-items:center;box-shadow:0 4px 0 var(--ink)}
@media (hover:hover){.card:hover:not(:disabled){background:#fff8cf;color:#1d2a1b}.card:hover:not(:disabled) .mcard small{color:#4a5a44}}
.card:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 var(--ink)}
.card:disabled{opacity:.5;cursor:not-allowed}
.card svg{width:64px;height:64px}
.card .ico2{width:44px;height:44px;font-size:2rem;line-height:44px}
.mcard{display:flex;flex-direction:column;gap:3px;align-items:center}
.mcard small{color:var(--muted)}

/* modal */
.overlay{position:fixed;inset:0;background:rgba(8,14,10,.62);display:flex;align-items:center;justify-content:center;padding:12px;z-index:50}
.dialog{background:var(--panel);border:4px solid var(--ink);border-radius:10px;max-width:540px;width:100%;max-height:calc(100dvh - 28px);overflow:auto;padding:16px;box-shadow:0 8px 0 rgba(0,0,0,.35)}
.dtext{margin:0 0 6px}
.dtext ul{margin:6px 0;padding-left:20px}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
.actions.col{flex-direction:column}

/* batalha */
.battle{display:flex;flex-direction:column;gap:8px;height:calc(100vh - 34px);height:calc(100dvh - 34px);min-height:560px}
.blabel{text-align:center;font-weight:700;font-size:1.15rem}
.bhud{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.bcard{background:var(--panel);border:3px solid var(--ink);border-radius:8px;padding:6px 8px;display:flex;flex-direction:column;gap:3px;min-width:0}
.bcard b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bcard .row{display:flex;justify-content:space-between;gap:6px;font-size:.85rem}
.arena{position:relative;border:4px solid var(--ink);border-radius:8px;overflow:hidden;background:#79c24d;line-height:0;flex:1 1 auto;min-height:280px}
.arena canvas{position:absolute;inset:0;width:100%;height:100%;image-rendering:pixelated;touch-action:manipulation}
.pmd{image-rendering:pixelated;background-repeat:no-repeat;margin:0 auto;flex:none}
.dmg{position:absolute;transform:translateX(-50%);font-weight:700;font-size:1.3rem;color:#fff;text-shadow:0 2px 0 #1d2a1b,0 0 4px #1d2a1b;pointer-events:none;animation:floatup .9s ease-out forwards;text-align:center;white-space:nowrap}
.dmg small{display:block;font-size:.75rem}
@keyframes floatup{from{transform:translate(-50%,0);opacity:1}to{transform:translate(-50%,-48px);opacity:0}}
.moves{display:grid;grid-template-columns:1fr 1fr;gap:8px;min-height:136px;width:100%;max-width:720px;margin:0 auto}
.mv{position:relative;overflow:hidden;min-height:64px;border:3px solid var(--btn-ink);border-radius:8px;background:var(--gold);color:#1d2a1b;cursor:pointer;box-shadow:0 5px 0 var(--btn-ink);padding:8px;display:flex;flex-direction:column;gap:2px;align-items:flex-start;text-align:left}
.mv.fogo{background:#f08a6c}.mv.agua{background:#7cb8f0}.mv.grama{background:#8bd078}
.mv:active:not(:disabled){transform:translateY(4px);box-shadow:0 1px 0 var(--btn-ink)}
.mv .mn{font-weight:700;font-size:1.05rem;position:relative}
.mv .ms{font-size:.8rem;position:relative}
.mv .key{position:absolute;right:8px;top:6px;font-size:.75rem;background:rgba(0,0,0,.2);border-radius:4px;padding:0 6px;color:#fff}
.mv .cdfill{position:absolute;left:0;right:0;bottom:0;height:0;background:rgba(20,30,20,.62);pointer-events:none}
.mv.far{opacity:.7}
.mv.sup{outline:3px solid #fff}
.bteam{display:flex;gap:6px;justify-content:center;flex-wrap:wrap}
.bteam .chip{cursor:pointer;width:56px}
.bteam .chip:disabled:not(.dead):not(.on){opacity:.6;cursor:not-allowed}
.swinfo{text-align:center;color:var(--muted);font-size:.85rem;margin-top:-2px}
.bteam .chip svg{width:30px;height:30px}
.bteam .chip.on{border-color:var(--gold);background:rgba(240,185,47,.2)}

.chip .ord{position:absolute;left:3px;top:0;font-size:.7rem;font-style:normal;color:var(--muted)}
.hbtns{display:flex;gap:6px;margin-left:auto;flex-wrap:wrap;justify-content:flex-end}
.mapframe.johto{background:#E8CD8C;border-color:#8a5a12;box-shadow:inset 0 0 0 3px #D19A19}
.mapframe.johto .map{border-color:#a8791a}
.mapframe.johto .gate{background:#86C14A;border-left-color:#8a5a12;border-right-color:#8a5a12}
img.ret{image-rendering:pixelated}
.blabel img.ret{height:36px;width:auto;vertical-align:middle;margin-right:8px}
.hall{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;text-align:center;margin:10px 0}
.hall small{display:block;color:var(--muted)}
.liga{display:flex;align-items:center;gap:5px;margin:2px 0 6px;flex-wrap:nowrap;overflow-x:auto}
.liga img{flex:none;image-rendering:pixelated}
.liga img.off{filter:brightness(.28) saturate(.3);opacity:.85}
.liga .sep{flex:none;width:2px;height:22px;background:var(--line);margin:0 3px}
.card .mcard{width:100%}
.sbs{min-width:96px}
.sbs{width:100%;display:grid;gap:4px;margin:6px 0 4px}
.sb{display:grid;grid-template-columns:1fr 28px;gap:5px;align-items:center;text-align:left}
.sbar{position:relative;display:block;height:15px;border-radius:4px;border:1px solid #0b2112;overflow:hidden;background-color:#183620;background-image:linear-gradient(90deg,transparent 24%,rgba(0,0,0,.25) 24% 25%,transparent 25% 49%,rgba(0,0,0,.25) 49% 50%,transparent 50% 74%,rgba(0,0,0,.25) 74% 75%,transparent 75%)}
.sbar i{position:absolute;left:0;top:0;bottom:0;background:#9be37f;border-radius:3px 0 0 3px;opacity:.95}
.sbar em{position:absolute;left:5px;top:50%;transform:translateY(-50%);font-style:normal;font-size:.58rem;font-weight:800;color:#fff;text-shadow:0 1px 0 #0b2112,0 0 3px #0b2112;z-index:1;white-space:nowrap}
.sb .sv{text-align:right;font-weight:800;font-size:.8rem}
.genlist{display:grid;gap:8px;margin:10px 0}
.grow{display:flex;align-items:center;gap:10px;border:3px solid var(--ink);border-radius:8px;padding:8px 10px;background:var(--panel);cursor:pointer}
.grow.off{opacity:.5;cursor:not-allowed}
.grow input{width:22px;height:22px;accent-color:#59c24b;flex:none}
.grow .gname{display:flex;flex-direction:column}
.grow small{color:var(--muted)}
.app.battling{max-width:min(1000px,98vw);padding-bottom:6px}
.mv.locked{background:#9aa39a;color:#33402f;opacity:.75;cursor:not-allowed;box-shadow:0 5px 0 #556050}
.mv.locked .ms{font-size:.78rem}
.mv.locked .mn{display:flex;align-items:center}
.mv .lk{image-rendering:pixelated;margin-right:6px}
.mv.empty{background:#2a312c;border-color:#151a16;box-shadow:0 5px 0 #151a16;cursor:default;opacity:.9}
@media (max-width:520px){
  body{font-size:15px}
  h1{font-size:2rem}
  h2{font-size:1.2rem}
  .app{padding:8px 8px 20px}
  .hud{padding:6px 8px;margin-bottom:8px}
  .hud .stats{gap:10px;margin-bottom:4px;font-size:.92rem}
  .hbtns .btn{padding:3px 8px;font-size:.78rem;box-shadow:0 2px 0 var(--btn-ink)}
  .team{gap:4px}
  .chip{width:46px}
  .chip small{font-size:.66rem}
  .dialog{padding:12px;border-width:3px}
  .cards{grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:6px}
  .cards:has(.sbs){grid-template-columns:repeat(3,minmax(0,1fr))}
  .card{padding:6px;border-width:2px}
  .mcard .nm{font-size:.85rem;line-height:1.1}
  .mcard small{font-size:.68rem}
  .tp .tn{display:none}
  .tp{padding:1px 4px}
  .mapframe{padding:6px}
}
@media (max-width:420px){
  body{font-size:16px}
  h1{font-size:2.2rem}
  .map{height:680px}
}
@media (prefers-reduced-motion:reduce){
  .node.open::after{animation:none}
  .dmg{animation-duration:.01s}
}
