<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>https://wiki.gla.com.br/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gurren1</id>
	<title>Wiki Gla - Contribuições do usuário [pt-br]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.gla.com.br/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gurren1"/>
	<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php/Especial:Contribui%C3%A7%C3%B5es/Gurren1"/>
	<updated>2026-05-13T18:19:15Z</updated>
	<subtitle>Contribuições do usuário</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=MediaWiki:Common.css&amp;diff=46714</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=MediaWiki:Common.css&amp;diff=46714"/>
		<updated>2026-05-04T16:26:30Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;@import url('https://fonts.googleapis.com/css2?family=Noto+Sans:wght@400;600;700&amp;amp;display=swap');&lt;br /&gt;
&lt;br /&gt;
/* body::before {&lt;br /&gt;
	content: '';&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	height: 100vh;&lt;br /&gt;
	background: url('https://wiki.gla.com.br/images/b/b3/Testefundo.png') no-repeat;&lt;br /&gt;
	filter: brightness(0.6);&lt;br /&gt;
  &lt;br /&gt;
	background-attachment: fixed;&lt;br /&gt;
	background-position: center;&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	background-size: cover;&lt;br /&gt;
	z-index: -1;&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
/* === FONTE PADRÃO === */&lt;br /&gt;
body,&lt;br /&gt;
.mw-parser-output,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
h1,&lt;br /&gt;
h2,&lt;br /&gt;
h3,&lt;br /&gt;
h4,&lt;br /&gt;
h5,&lt;br /&gt;
h6,&lt;br /&gt;
p,&lt;br /&gt;
ul,&lt;br /&gt;
ol,&lt;br /&gt;
li,&lt;br /&gt;
table,&lt;br /&gt;
td,&lt;br /&gt;
th,&lt;br /&gt;
caption {&lt;br /&gt;
    font-family: 'Noto Sans', sans-serif !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === LEGENDAS DE IMAGEM === */&lt;br /&gt;
.thumbcaption {&lt;br /&gt;
    font-size: 1.1em !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    line-height: 1.4;&lt;br /&gt;
    font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === TABELAS ENHANCE === */&lt;br /&gt;
table.table-enhance {&lt;br /&gt;
    max-width: 600px;&lt;br /&gt;
    margin: 1em auto;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
    background-color: #fff;&lt;br /&gt;
    border: 1px solid #ccc;&lt;br /&gt;
    font-size: 13px;&lt;br /&gt;
    font-family: 'Segoe UI', 'Helvetica Neue', sans-serif;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.table-enhance th,&lt;br /&gt;
.table-enhance td {&lt;br /&gt;
    border: 1px solid #e0e0e0;&lt;br /&gt;
    padding: 6px 10px;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.table-enhance th {&lt;br /&gt;
    background-color: #f5f5f5;&lt;br /&gt;
    font-weight: 600;&lt;br /&gt;
    color: #333;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.table-enhance tr:nth-child(even) td {&lt;br /&gt;
    background-color: #fafafa;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.table-enhance tr:hover td {&lt;br /&gt;
    background-color: #f0f8ff;&lt;br /&gt;
    transition: background-color 0.2s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.table-enhance-vertical td:first-child {&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #2c3e50;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === AJUSTES NA SIDEBAR === */&lt;br /&gt;
#p-logo {&lt;br /&gt;
    background-color: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .mw-portlet.portal .vector-menu-content-list&amp;gt;li&amp;gt;a {&lt;br /&gt;
    font-size: 0.80rem !important;&lt;br /&gt;
    font-family: 'Noto Sans', sans-serif !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === REMOÇÃO DE BORDAS EM TÍTULOS === */&lt;br /&gt;
.mw-headline {&lt;br /&gt;
    border-bottom: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
h1,&lt;br /&gt;
h2,&lt;br /&gt;
h3,&lt;br /&gt;
h4,&lt;br /&gt;
h5,&lt;br /&gt;
h6 {&lt;br /&gt;
    border-bottom: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.video-responsivo {&lt;br /&gt;
    max-width: 600px;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    background: black;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.video-responsivo video {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    vertical-align: bottom;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#contentSub,&lt;br /&gt;
#contentSub2 {&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
    padding: 0 !important;&lt;br /&gt;
    display: none;&lt;br /&gt;
    /* opcional: se quiser sumir com tudo */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Discord */&lt;br /&gt;
#n-Discord {&lt;br /&gt;
    font-size: 10px;&lt;br /&gt;
    line-height: 1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-Discord-label {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#n-Discord a {&lt;br /&gt;
    color: #fff !important;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    border-radius: 4px;&lt;br /&gt;
    border: 1px solid #4c57d0;&lt;br /&gt;
    background-color: #5865f2;&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    padding: 4px 4px 3px calc(14px + 6.5px * 2);&lt;br /&gt;
    box-shadow: 0 2px 3px rgba(0, 0, 0, 0.1);&lt;br /&gt;
    transition: 0.2s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#n-Discord a::before {&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
    margin-left: 1.25em&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#n-Discord a::after {&lt;br /&gt;
    content: '';&lt;br /&gt;
    background: url(/images/7/76/Discord-brands.png) no-repeat;&lt;br /&gt;
    background-size: contain;&lt;br /&gt;
    background-position: center;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
    filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.1));&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 2px;&lt;br /&gt;
    left: 4px;&lt;br /&gt;
    width: 20px;&lt;br /&gt;
    height: 20px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#n-Discord a:hover {&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    background-color: #7885ff;&lt;br /&gt;
    border-color: #6c77f0;&lt;br /&gt;
    transition: .3s&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* css atual */&lt;br /&gt;
/* ESTILIZAÇÃO PADRÃO */&lt;br /&gt;
&lt;br /&gt;
.thumb .thumbcaption .magnify:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html {&lt;br /&gt;
    scroll-behavior: auto;&lt;br /&gt;
    /*smooth*/&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.dark-mode:root {&lt;br /&gt;
    --content-bg: #fcfcfc;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:root {&lt;br /&gt;
    --content-bg: #fcfcfc;&lt;br /&gt;
    --content-text: #000;&lt;br /&gt;
    --simpleSearch-bg: #fff;&lt;br /&gt;
    --searchInput-text: #aaaaaa;&lt;br /&gt;
    --link-text: #0645ad;&lt;br /&gt;
    --lightGray: rgba(240, 240, 240);&lt;br /&gt;
    --gray: rgb(190, 190, 190);&lt;br /&gt;
    --transparent-blue: #338be58c;&lt;br /&gt;
    --blue: #338be5;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.dark-mode:root {&lt;br /&gt;
    --content-bg: #fcfcfc;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:visited,&lt;br /&gt;
a {&lt;br /&gt;
    color: var(--link-text) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
body {&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
body {&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body::before {&lt;br /&gt;
	content: '';&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	height: 100vh;&lt;br /&gt;
	background: url('https://wiki.gla.com.br/images/3/35/Fundodawikiglatest.png') no-repeat;&lt;br /&gt;
	filter: brightness(0.8);&lt;br /&gt;
  &lt;br /&gt;
	background-attachment: fixed;&lt;br /&gt;
	background-position: center;&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	background-size: cover;&lt;br /&gt;
	z-index: -1;&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
body {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    background-image: url(/images/3/31/Cinza_capriw.png);&lt;br /&gt;
    background-repeat: repeat;&lt;br /&gt;
    background-attachment: fixed;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
  h1,&lt;br /&gt;
  h2 {&lt;br /&gt;
      margin-bottom: 0.6em;&lt;br /&gt;
      border-bottom: 0px !important;&lt;br /&gt;
  }&lt;br /&gt;
  */&lt;br /&gt;
#firstHeading {&lt;br /&gt;
    border-bottom: 0px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch {&lt;br /&gt;
    background-color: var(--simpleSearch-bg) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal {&lt;br /&gt;
    right: 1em;&lt;br /&gt;
    top: .5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-search {&lt;br /&gt;
    float: left;&lt;br /&gt;
    margin-left: -0.1em;&lt;br /&gt;
    margin-right: 1em;&lt;br /&gt;
    margin-top: -0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#searchInput {&lt;br /&gt;
    background-color: #231813;&lt;br /&gt;
    color: var(--searchInput-text);&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: 2.15384615em;&lt;br /&gt;
    border: 1px solid #524136;&lt;br /&gt;
    padding: 5px 2.15384615em 5px 0.4em;&lt;br /&gt;
    font-family: inherit;&lt;br /&gt;
    font-size: 0.8125em;&lt;br /&gt;
    direction: ltr;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body {&lt;br /&gt;
    margin-top: -1px;&lt;br /&gt;
    border: 2px solid #5c3f2b !important;&lt;br /&gt;
    border-right-width: 2px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Force lining numbers in headers (for fonts like Georgia) */&lt;br /&gt;
h1,&lt;br /&gt;
h2,&lt;br /&gt;
.firstHeading {&lt;br /&gt;
    -moz-font-feature-settings: &amp;quot;lnum&amp;quot;;&lt;br /&gt;
    -webkit-font-feature-settings: &amp;quot;lnum&amp;quot;;&lt;br /&gt;
    font-feature-settings: &amp;quot;lnum&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Consistent size for sub/sup */&lt;br /&gt;
.mw-body sub,&lt;br /&gt;
.mw-body sup,&lt;br /&gt;
span.reference&lt;br /&gt;
&lt;br /&gt;
/* for Parsoid */&lt;br /&gt;
    {&lt;br /&gt;
    font-size: 80%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Hide confusing &amp;quot;Discussion&amp;quot; tab on [[Project:Support_desk]],&lt;br /&gt;
       * For sanity, only do this if [[Project_talk:Support_desk]] is a&lt;br /&gt;
       * redirect (which goes back to [[Project:Support_desk]]).&lt;br /&gt;
       * If that is changed for some reason, it automatically comes back.&lt;br /&gt;
       */&lt;br /&gt;
.page-Project_Support_desk #ca-talk a.mw-redirect {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CSS Hover Gallery for Mediawiki */&lt;br /&gt;
&lt;br /&gt;
.gallery_zoom_img img {&lt;br /&gt;
    -moz-transition: -moz-transform 0.1s ease-in;&lt;br /&gt;
    -webkit-transition: -webkit-transform 0.1s ease-in;&lt;br /&gt;
    -o-transition: -o-transform 0.1s ease-in;&lt;br /&gt;
    transition: transform 0.1 ease-in;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery_zoom_img img:hover {&lt;br /&gt;
    -moz-transform: scale(2);&lt;br /&gt;
    -webkit-transform: scale(2);&lt;br /&gt;
    -o-transform: scale(2);&lt;br /&gt;
    transform: scale(2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*--------------------------------------------------&lt;br /&gt;
      CSS CUSTOMIZADO&lt;br /&gt;
      --------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
/*--------------------------------------------------&lt;br /&gt;
      Vector &lt;br /&gt;
      --------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
.vector-menu-tabs li {&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*--------------------------------------------------&lt;br /&gt;
      Tabber &lt;br /&gt;
      --------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
.center-tab .tabber__header {&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*--------------------------------------------------&lt;br /&gt;
      Tags de uso generalizado&lt;br /&gt;
      --------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
.mt-1 {&lt;br /&gt;
    margin-top: .75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mt-2 {&lt;br /&gt;
    margin-top: 1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mt-4 {&lt;br /&gt;
    margin-top: 3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mt--4 {&lt;br /&gt;
    margin-top: -2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mb-2 {&lt;br /&gt;
    margin-bottom: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.d-flex,&lt;br /&gt;
.td-flex td {&lt;br /&gt;
    display: flex;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.d-block {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.relative {&lt;br /&gt;
    position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.text-justify {&lt;br /&gt;
    text-align: justify;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.align-center {&lt;br /&gt;
    align-items: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.align-top {&lt;br /&gt;
    align-items: flex-start;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.justify-between {&lt;br /&gt;
    justify-content: space-between;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.justify-center {&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.border-none {&lt;br /&gt;
    border: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.w-25 {&lt;br /&gt;
    width: 25%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.h-100 {&lt;br /&gt;
    height: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.flex-wrap {&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.section-title {&lt;br /&gt;
    display: block;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    background: linear-gradient(to bottom, #459cca, #5684c8);&lt;br /&gt;
    width: fit-content;&lt;br /&gt;
    color: white;&lt;br /&gt;
    padding: .25em 5em;&lt;br /&gt;
    letter-spacing: 1px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.badge {&lt;br /&gt;
    padding: .25em .57em;&lt;br /&gt;
    margin: .45em;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    color: white;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-transform: capitalize;&lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
    max-height: 1.5em;&lt;br /&gt;
    font-size: .9em;&lt;br /&gt;
    letter-spacing: 1px;&lt;br /&gt;
    box-shadow: rgb(3 102 214 / 30%) 0px 0px 0px 3px;&lt;br /&gt;
    background: linear-gradient(to bottom, #459cca, #5684c8);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.card {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    min-height: 14em;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    box-shadow: rgb(0 0 0 / 9%) 0px 3px 12px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.card-title {&lt;br /&gt;
    display: block;&lt;br /&gt;
    padding: .25em 0;&lt;br /&gt;
    margin-bottom: 1em;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    border-radius: 10px 10px 0 0;&lt;br /&gt;
    background: linear-gradient(to bottom, #459cca, #5684c8);&lt;br /&gt;
&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    letter-spacing: 1px;&lt;br /&gt;
    color: white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.scaleUp-hover {&lt;br /&gt;
    transition: all .25s ease;&lt;br /&gt;
    image-rendering: auto;&lt;br /&gt;
    /* ou crisp-edges */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.scaleUp-hover:hover {&lt;br /&gt;
    transform: scale(1.1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*--------------------------------------------------&lt;br /&gt;
      Tooltip &lt;br /&gt;
      --------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
.simple-tooltip-inline {&lt;br /&gt;
    border: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tooltipster-default {&lt;br /&gt;
    background-color: rgb(220, 220, 220);&lt;br /&gt;
    color: black !important;&lt;br /&gt;
    box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tooltipster-arrow {&lt;br /&gt;
    borde-color: rgb(220, 220, 220) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#bigImage {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    transform: translate(0, -100%);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**********************************&lt;br /&gt;
          Widget:GlobalEventTimer&lt;br /&gt;
          **********************************/&lt;br /&gt;
.global-event-widget {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    width: 320px;&lt;br /&gt;
    height: 90px;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.global-event-image {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    object-fit: cover;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#global-event-time {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    bottom: 3%;&lt;br /&gt;
    left: 3px;&lt;br /&gt;
    padding: 2px 5px;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);&lt;br /&gt;
    background: linear-gradient(to right, rgba(25, 25, 25, 0.85), rgba(0, 0, 0, 0));&lt;br /&gt;
    border-top-right-radius: 4px;&lt;br /&gt;
    border-bottom-right-radius: 4px;&lt;br /&gt;
    max-width: fit-content;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**********************************&lt;br /&gt;
      WIDGET: PAGEVIDEO&lt;br /&gt;
      **********************************/&lt;br /&gt;
.pagevideo-wrapper {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    align-items: flex-start;&lt;br /&gt;
    margin: 20px auto;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.pagevideo {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    max-width: 800px;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    border: 1px solid #ccc;&lt;br /&gt;
    border-radius: 5px;&lt;br /&gt;
    background-color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width: 768px) {&lt;br /&gt;
    .pagevideo {&lt;br /&gt;
        max-width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**********************************&lt;br /&gt;
      MEDIAWIKI: SIMBOLO DE LINKS EXTERNOS&lt;br /&gt;
      **********************************/&lt;br /&gt;
.mw-parser-output .external {&lt;br /&gt;
    background-image: none !important;&lt;br /&gt;
    padding-right: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**********************************&lt;br /&gt;
      PREDEFINIÇÃO: Titulo&lt;br /&gt;
      #firstHeading {&lt;br /&gt;
      display: none;&lt;br /&gt;
  }&lt;br /&gt;
      **********************************/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#custom-title {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#custom-title img {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*--------------------------------------------------&lt;br /&gt;
      Pagina Inicial&lt;br /&gt;
      --------------------------------------------------*/&lt;br /&gt;
.initialPage--table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--table&amp;gt;tbody&amp;gt;tr&amp;gt;th,&lt;br /&gt;
.initialPage--table&amp;gt;tbody&amp;gt;tr&amp;gt;td {&lt;br /&gt;
    background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--title,&lt;br /&gt;
.initialPage--events {&lt;br /&gt;
    border: none;&lt;br /&gt;
    border-collapse: separate;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--events th,&lt;br /&gt;
.initialPage--title th {&lt;br /&gt;
    color: black !important;&lt;br /&gt;
    padding: .4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--title th {&lt;br /&gt;
    background-color: transparent !important;&lt;br /&gt;
    font-size: 2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--events {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    height: 20em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--eventsLogo {&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    padding: .5em 3.5em 2em 0;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--events td {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    justify-content: flex-end;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--mainContainer {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: flex-start;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--menuContainer {&lt;br /&gt;
    width: 75%;&lt;br /&gt;
    margin-right: 1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--sideMenuContainer {&lt;br /&gt;
    width: 25%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--menuTitle {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    font-size: 1.75em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
&lt;br /&gt;
    background: linear-gradient(to bottom, #459cca, #5684c8);&lt;br /&gt;
    border-radius: 10px 10px 0 0;&lt;br /&gt;
    color: white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--menu {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--menuItemContainer {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
&lt;br /&gt;
    padding: 1em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--menuItem {&lt;br /&gt;
    width: 22.5%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--menuItem a img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMediaContainer {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 8em;&lt;br /&gt;
    padding: 0 1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    border-top: 2px solid #689cc0;&lt;br /&gt;
    margin-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia:before {&lt;br /&gt;
    content: '';&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: -2px;&lt;br /&gt;
    display: block;&lt;br /&gt;
    width: 0;&lt;br /&gt;
    height: 2px;&lt;br /&gt;
    z-index: 1;&lt;br /&gt;
    transition: width .25s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia:hover::before {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMediaLink {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: space-between;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
&lt;br /&gt;
    font-size: 1.35em;&lt;br /&gt;
    font-weight: 600;&lt;br /&gt;
    letter-spacing: .03em;&lt;br /&gt;
    color: #689cc0 !important;&lt;br /&gt;
&lt;br /&gt;
    padding: .9em .5em;&lt;br /&gt;
    transition: color .25s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMediaLink:visited {&lt;br /&gt;
    color: #689cc0 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMediaLink:hover {&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.socialMedia--svg {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.socialMedia--svg svg {&lt;br /&gt;
    width: 2em;&lt;br /&gt;
    fill: #689cc0;&lt;br /&gt;
    transition: all .25s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.socialMedia--svg svg path {&lt;br /&gt;
    fill: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
      Discord&lt;br /&gt;
      */&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia.discord&amp;gt;.initialPage--socialMediaLink:hover {&lt;br /&gt;
    color: #5865f2 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia.discord:before {&lt;br /&gt;
    background: #5865f2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia.discord&amp;gt;.initialPage--socialMediaLink:hover&amp;gt;.socialMedia--svg svg {&lt;br /&gt;
    fill: #5865f2 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
      Instagram&lt;br /&gt;
      */&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia.instagram&amp;gt;.initialPage--socialMediaLink:hover {&lt;br /&gt;
    color: #f09433 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia.instagram:before {&lt;br /&gt;
    background: linear-gradient(45deg, #f09433 0%, #e6683c 25%, #dc2743 50%, #cc2366 75%, #bc1888 100%);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia.instagram&amp;gt;.initialPage--socialMediaLink:hover&amp;gt;.socialMedia--svg svg {&lt;br /&gt;
    fill: url(#gradient-vertical);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
      Facebook&lt;br /&gt;
      */&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia.facebook&amp;gt;.initialPage--socialMediaLink:hover {&lt;br /&gt;
    color: #4267B2 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia.facebook:before {&lt;br /&gt;
    background: #4267B2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia.facebook&amp;gt;.initialPage--socialMediaLink:hover&amp;gt;.socialMedia--svg svg {&lt;br /&gt;
    fill: #4267B2 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*--------------------------------------------------&lt;br /&gt;
      Ocultação de componentes&lt;br /&gt;
      --------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
#p-navigation {&lt;br /&gt;
    background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
    background-color: transparent;&lt;br /&gt;
    width: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel #p-tb h3 {&lt;br /&gt;
    color: rgb(0, 0, 0);&lt;br /&gt;
    font-size: .75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-tb {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* #ca-nstab-mediawiki { display: none; } */&lt;br /&gt;
/* #ca-talk { display: none; } */&lt;br /&gt;
#ca-view {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#ca-history {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#ca-viewsource {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* #ca-unwatch { display: none; } */&lt;br /&gt;
/* #p-cactions { display: none; } */&lt;br /&gt;
/*&lt;br /&gt;
      Pacientes&lt;br /&gt;
      */&lt;br /&gt;
&lt;br /&gt;
.table-pacients {&lt;br /&gt;
    display: block;&lt;br /&gt;
    max-width: 1400px;&lt;br /&gt;
    overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.table-pacients img {&lt;br /&gt;
    width: 15.715em;&lt;br /&gt;
    height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
      PERSONAGENS&lt;br /&gt;
      */&lt;br /&gt;
&lt;br /&gt;
.filter--containerSearch {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    padding: 0 2em;&lt;br /&gt;
    justify-content: flex-end;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--container {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    padding: 0 2em;&lt;br /&gt;
    justify-content: space-between;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter {&lt;br /&gt;
    width: fit-content;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    border: 3px solid #b0cff1;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--title {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    border-right: 3px solid #b0cff1;&lt;br /&gt;
    background: #4c91c9;&lt;br /&gt;
    padding: 0 1em;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    border-radius: 4px 0 0 4px;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    letter-spacing: .15em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon,&lt;br /&gt;
.calcXp--tierIcon {&lt;br /&gt;
    padding: .35em .95em;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon.tier img {&lt;br /&gt;
    filter: grayscale(.0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon.tier.active img {&lt;br /&gt;
    box-shadow: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon img {&lt;br /&gt;
    filter: grayscale(.8);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
&lt;br /&gt;
    transition: all .25s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.calcXp--tierIcon img {&lt;br /&gt;
    filter: drop-shadow(0px 1px 8px #4c91c900);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
&lt;br /&gt;
    transition: all .25s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon.active img {&lt;br /&gt;
    box-shadow: rgb(0 0 0 / 24%) 0px 2px 7px;&lt;br /&gt;
    filter: grayscale(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon.tier.active img,&lt;br /&gt;
.calcXp--tierIcon.active img {&lt;br /&gt;
    transform: scale(.85);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon.tier#bronze.active img,&lt;br /&gt;
.calcXp--tierIcon#bronze.active img {&lt;br /&gt;
    filter: drop-shadow(0px 1px 8px #f18a05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon.tier#silver.active img,&lt;br /&gt;
.calcXp--tierIcon#silver.active img {&lt;br /&gt;
    filter: drop-shadow(0px 1px 8px #8b8b8b);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon.tier#gold.active img,&lt;br /&gt;
.calcXp--tierIcon#gold.active img {&lt;br /&gt;
    filter: drop-shadow(0px 1px 8px #fbc300);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon.tier#diamond.active img,&lt;br /&gt;
.calcXp--tierIcon#diamond.active img {&lt;br /&gt;
    filter: drop-shadow(0px 1px 8px #0391c5);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--input {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    padding: .45em;&lt;br /&gt;
    padding-right: 2.5em;&lt;br /&gt;
    border: 3px solid #b0cff1;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    width: 23em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--inputContainer {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--searchButton {&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 3px solid #b0cff1;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    width: 4.5em;&lt;br /&gt;
    height: -webkit-fill-available;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    background: #4c91c9;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--searchButton img {&lt;br /&gt;
    filter: invert(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.calcXp--container {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    padding: 2.25em 1.25em;&lt;br /&gt;
    width: 43em;&lt;br /&gt;
    border: 3px solid #b0cff1;&lt;br /&gt;
    border-radius: 26px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.calcXp--resultTitle {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    color: #4f7ca0;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    margin-top: -.5em !important;&lt;br /&gt;
    letter-spacing: .05em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.calcXp--formItem {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.calcXp--formItem input {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    padding: .35em;&lt;br /&gt;
    border: 2px solid #b0cff1;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    letter-spacing: .05em;&lt;br /&gt;
    width: 4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.calcXp--formItem span {&lt;br /&gt;
    font-size: 1.225em;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    letter-spacing: .05em;&lt;br /&gt;
    margin-right: .5em;&lt;br /&gt;
    color: #386a93;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#calculate-btn {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    display: block;&lt;br /&gt;
    width: 15em;&lt;br /&gt;
    margin: 2em auto;&lt;br /&gt;
    padding: .45em 1em;&lt;br /&gt;
&lt;br /&gt;
    border: none;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    background: #4c91c9;&lt;br /&gt;
    box-shadow: rgb(0 0 0 / 24%) 0px 3px 8px;&lt;br /&gt;
    color: white;&lt;br /&gt;
&lt;br /&gt;
    font-size: 1.35em;&lt;br /&gt;
    text-transform: capitalize;&lt;br /&gt;
    letter-spacing: 0.05em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    transition: .35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#calculate-btn:hover {&lt;br /&gt;
    color: #ffffff;&lt;br /&gt;
    box-shadow: rgb(0 0 0 / 8%) 0px 3px 8px;&lt;br /&gt;
    transform: scale(.95);&lt;br /&gt;
    background: #4685b8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#calc-result {&lt;br /&gt;
    margin-top: 1em;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#calc-result .badge {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    max-height: 5em;&lt;br /&gt;
    width: 5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.calcXp--xpIcon {&lt;br /&gt;
    margin-left: -.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.calcXp--numberOfPots {&lt;br /&gt;
    padding-top: .2em;&lt;br /&gt;
    font-size: 1.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#characters-container {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    padding: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#characters-container&amp;gt;div {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 1em;&lt;br /&gt;
    width: 19%;&lt;br /&gt;
    margin-right: 1%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#characters-container&amp;gt;div.show {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#characters-container&amp;gt;div&amp;gt;a&amp;gt;img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    filter: grayscale(.3);&lt;br /&gt;
    transition: all .25s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#characters-container&amp;gt;div:hover&amp;gt;a&amp;gt;img {&lt;br /&gt;
    box-shadow: rgba(0, 0, 0, 0.16) 0px 3px 6px, rgba(0, 0, 0, 0.23) 0px 3px 6px;&lt;br /&gt;
    filter: grayscale(0);&lt;br /&gt;
    transform: scale(1.06);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterPage--splashArt {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: -2%;&lt;br /&gt;
    right: -2%;&lt;br /&gt;
    width: 35%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterPage--table {&lt;br /&gt;
    margin-top: -4em;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterPage--table&amp;gt;tbody {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: space-between;&lt;br /&gt;
    align-items: flex-end;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterPage--table&amp;gt;tbody&amp;gt;.characterPage--mainSection {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    justify-content: space-between;&lt;br /&gt;
    width: 65%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterPage--table&amp;gt;tbody&amp;gt;.characterPage--sideSection {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    width: 33%;&lt;br /&gt;
    padding: 0 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterPage--characterInfoContainer {&lt;br /&gt;
    width: 43%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterPage--statsInfoContainer {&lt;br /&gt;
    width: 55%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.stats--container {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    padding: 1.25em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.stats--container&amp;gt;div {&lt;br /&gt;
    width: 45%;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    margin: .5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.stats--container div img {&lt;br /&gt;
    width: 2.25em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.stats--bar {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    width: -webkit-fill-available;&lt;br /&gt;
    justify-content: space-between;&lt;br /&gt;
    padding: 0 1.25em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bar-filled:first-child,&lt;br /&gt;
.bar-notFilled:first-child {&lt;br /&gt;
    border-radius: 6px 0 0 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bar-filled:last-child,&lt;br /&gt;
.bar-notFilled:last-child {&lt;br /&gt;
    border-radius: 0 6px 6px 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bar-filled,&lt;br /&gt;
.bar-notFilled {&lt;br /&gt;
    display: block;&lt;br /&gt;
    width: 18%;&lt;br /&gt;
    height: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bar-filled {&lt;br /&gt;
    background: var(--blue);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bar-notFilled {&lt;br /&gt;
    background: var(--transparent-blue);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterInfo--name {&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterInfo--badgeContainer {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    width: fit-content;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterInfo--contentContainer {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: space-between;&lt;br /&gt;
    padding: .6em 1.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterInfo--imageContainer {&lt;br /&gt;
    width: 25%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterInfo--medal {&lt;br /&gt;
    margin-top: -1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.characterInfo--infoContainer {&lt;br /&gt;
    width: 75%;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterInfo--infoContainer #toc {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterPage--skins {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterPage--characterSkills {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
      Card de Skins&lt;br /&gt;
      */&lt;br /&gt;
&lt;br /&gt;
.skins--container {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: flex-start;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    padding: -0.75em 0.75em;&lt;br /&gt;
    gap: -0.5em;&lt;br /&gt;
    /* Adiciona espaçamento consistente entre os itens */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skins--container span {&lt;br /&gt;
    width: 33.3%;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skins--imageSkin {&lt;br /&gt;
    max-width: 100%;&lt;br /&gt;
    /* Limita o tamanho máximo da imagem */&lt;br /&gt;
    max-height: 100%;&lt;br /&gt;
    /* Limita o tamanho máximo da imagem */&lt;br /&gt;
    object-fit: contain;&lt;br /&gt;
    /* Garante que a imagem se ajusta proporcionalmente */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
      Seção das skills do personagem&lt;br /&gt;
      */&lt;br /&gt;
&lt;br /&gt;
.tabsContainer {&lt;br /&gt;
    width: 95%;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    padding-bottom: .5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabsContainer table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabsContainer table&amp;gt;tbody&amp;gt;tr&amp;gt;td {&lt;br /&gt;
    border-bottom: 2px solid rgb(225, 225, 225);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabSkill--container {&lt;br /&gt;
    padding-bottom: .85em;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    max-width: 72em;&lt;br /&gt;
    overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--description::-webkit-scrollbar,&lt;br /&gt;
.tabSkill--container::-webkit-scrollbar {&lt;br /&gt;
    width: 8px;&lt;br /&gt;
    height: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--description::-webkit-scrollbar-track,&lt;br /&gt;
.tabSkill--container::-webkit-scrollbar-track {&lt;br /&gt;
    background-color: #4799c954;&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--description::-webkit-scrollbar-thumb,&lt;br /&gt;
.tabSkill--container::-webkit-scrollbar-thumb {&lt;br /&gt;
    background-color: rgb(85 135 200 / 74%);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tab-skill {&lt;br /&gt;
    transition: all .25s ease;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    min-width: 5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tab-skill.active {&lt;br /&gt;
    border-color: #459cca;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tab-skill&amp;gt;div {&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    padding: .25em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tab-skill&amp;gt;div&amp;gt;img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    max-width: 40px;&lt;br /&gt;
    height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--container {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--container&amp;gt;td {&lt;br /&gt;
    border: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo.active {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo.active {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--videoContainer {&lt;br /&gt;
&lt;br /&gt;
    align-self: center;&lt;br /&gt;
    width: 45%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--skillVideo2 {&lt;br /&gt;
    display: none;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--skillVideo2.active {&lt;br /&gt;
    display: flex;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--videoSelector {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    width: 1.1em;&lt;br /&gt;
    height: 1.1em;&lt;br /&gt;
    border-radius: 50%;&lt;br /&gt;
    background: var(--transparent-blue);&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    margin-right: .85em;&lt;br /&gt;
&lt;br /&gt;
    transition: all .25s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--videoSelector.active {&lt;br /&gt;
    background: var(--blue);&lt;br /&gt;
    transform: scale(.8);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--infoContainer {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo&amp;gt;div&amp;gt;.skillInfo--infoContainer b {&lt;br /&gt;
    color: #2a87c4 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--infoContainer&amp;gt;center&amp;gt;b {&lt;br /&gt;
    font-size: 1.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--name {&lt;br /&gt;
    font-size: 1.85em;&lt;br /&gt;
    letter-spacing: 1px;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--description {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    font-size: 1.03em;&lt;br /&gt;
    line-height: 1.5em;&lt;br /&gt;
    padding: 0 1em;&lt;br /&gt;
    height: 12em;&lt;br /&gt;
    max-height: 12em;&lt;br /&gt;
    overflow-y: auto;&lt;br /&gt;
    text-align: justify;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--attributesContainer&amp;gt;h1 {&lt;br /&gt;
    color: #717171;&lt;br /&gt;
    font-size: 1.4em;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    letter-spacing: 1px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* card attributes */&lt;br /&gt;
.attribute--cardsContainer {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: flex-start;&lt;br /&gt;
&lt;br /&gt;
    width: fit-content;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
&lt;br /&gt;
    background: var(--lightGray);&lt;br /&gt;
    border: 2px solid var(--gray);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.cardAttribute {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-direction: column;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    width: 8em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.cardAttribute--icon {&lt;br /&gt;
    margin: .6em 0;&lt;br /&gt;
    height: 2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.cardAttribute--value {&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
&lt;br /&gt;
    font-size: .9em !important;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    line-height: 1.65em !important;&lt;br /&gt;
    letter-spacing: 2px;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*------------------------------------&lt;br /&gt;
      WANTED&lt;br /&gt;
      -----------------------------------*/&lt;br /&gt;
&lt;br /&gt;
.selectWanted--container {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#selectbox-wanted {&lt;br /&gt;
    padding: .35em .5em;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
    letter-spacing: .04em;&lt;br /&gt;
    font-size: 1.25em;&lt;br /&gt;
    width: 21em;&lt;br /&gt;
    border: 2px solid #5684c8;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wantedPortrait--container {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wantedPortrait--title {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    color: #292929;&lt;br /&gt;
    font-size: 1.5em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    letter-spacing: .035em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wantedPortraits {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wantedPortrait {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    width: 18em;&lt;br /&gt;
    padding: .35em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wantedPortrait img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width: 1440px) {&lt;br /&gt;
    :root {&lt;br /&gt;
        font-size: 14px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterInfo--contentContainer {&lt;br /&gt;
        padding: .6em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterInfo--infoContainer {&lt;br /&gt;
        width: 65%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterInfo--imageContainer {&lt;br /&gt;
        width: 35%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .tabSkill--container {&lt;br /&gt;
        max-width: 61em;&lt;br /&gt;
        margin: 0 auto;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .tab-skill&amp;gt;div&amp;gt;img {&lt;br /&gt;
        max-width: 38px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width: 1220px) {&lt;br /&gt;
    .tabSkill--container {&lt;br /&gt;
        max-width: 48em;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width: 1024px) {&lt;br /&gt;
&lt;br /&gt;
    .flex-wrap-md {&lt;br /&gt;
        flex-wrap: wrap;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .justify-center-md {&lt;br /&gt;
        justify-content: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .initialPage--mainContainer {&lt;br /&gt;
        flex-wrap: wrap;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .initialPage--menuContainer {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        margin-right: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .initialPage--sideMenuContainer {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        display: flex;&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
        margin-top: 1.5em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .initialPage--sideMenuContainer .card {&lt;br /&gt;
        width: 45%;&lt;br /&gt;
        min-height: 15em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #event-time {&lt;br /&gt;
        bottom: 5%;&lt;br /&gt;
        right: 5%;&lt;br /&gt;
        font-size: 1.25em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .initialPage--socialMediaContainer {&lt;br /&gt;
        margin-top: 2em;&lt;br /&gt;
        display: flex;&lt;br /&gt;
        justify-content: space-between;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .initialPage--socialMedia {&lt;br /&gt;
        width: 32%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #p-search {&lt;br /&gt;
        margin-right: 1em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .filter--containerSearch {&lt;br /&gt;
        justify-content: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .filter--container {&lt;br /&gt;
        margin-top: 1em;&lt;br /&gt;
        flex-wrap: wrap;&lt;br /&gt;
        justify-content: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .filter:last-of-type {&lt;br /&gt;
        margin-top: 1em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #characters-container&amp;gt;div {&lt;br /&gt;
        width: 24%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterPage--splashArt {&lt;br /&gt;
        display: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterPage--table&amp;gt;tbody&amp;gt;.characterPage--mainSection {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        justify-content: flex-start;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterPage--characterInfoContainer {&lt;br /&gt;
        width: 38%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterPage--statsInfoContainer {&lt;br /&gt;
        width: 30%;&lt;br /&gt;
        margin-left: 1.5%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .stats--container&amp;gt;div {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterInfo--contentContainer {&lt;br /&gt;
        flex-wrap: wrap;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterInfo--imageContainer {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        display: flex;&lt;br /&gt;
        justify-content: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterInfo--medal {&lt;br /&gt;
        margin-top: -2.5em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterInfo--infoContainer {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .tabsContainer {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .tab-skill {&lt;br /&gt;
        min-width: 3.5em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .tab-skill&amp;gt;div&amp;gt;img {&lt;br /&gt;
        max-width: 36px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .skillInfo&amp;gt;div {&lt;br /&gt;
        flex-wrap: wrap-reverse;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .skillInfo--infoContainer {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .skillInfo--infoContainer&amp;gt;center&amp;gt;b {&lt;br /&gt;
        font-size: 1.2em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .skillInfo--name {&lt;br /&gt;
        font-size: 2.2em !important;&lt;br /&gt;
        letter-spacing: 1px;&lt;br /&gt;
        margin-top: .5em !important;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .skillInfo--description {&lt;br /&gt;
        font-size: 1.35em !important;&lt;br /&gt;
        display: table;&lt;br /&gt;
        margin: 1em !important;&lt;br /&gt;
&lt;br /&gt;
        height: 5em;&lt;br /&gt;
        max-height: 5em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .skillInfo--videoContainer {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        margin: 0 auto;&lt;br /&gt;
        padding: 1em 10em;&lt;br /&gt;
        padding-bottom: 1em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .cardAttribute--value {&lt;br /&gt;
        letter-spacing: 1px;&lt;br /&gt;
        font-size: 1.1em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterPage--table&amp;gt;tbody&amp;gt;.characterPage--sideSection {&lt;br /&gt;
        width: 30%;&lt;br /&gt;
        padding-left: 1.5%;&lt;br /&gt;
        position: absolute;&lt;br /&gt;
        top: 0;&lt;br /&gt;
        right: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .skins--imageSkin {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .skins--container {&lt;br /&gt;
        max-height: 14em;&lt;br /&gt;
        overflow-x: clip;&lt;br /&gt;
        overflow-y: auto;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .skins--container span {&lt;br /&gt;
        width: 50%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .calcXp--formItem {&lt;br /&gt;
        justify-content: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .calcXp--container:last-of-type {&lt;br /&gt;
        margin-top: 2em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #p-tb h3 {&lt;br /&gt;
        display: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
      PRESET: ABAS&lt;br /&gt;
      *******************************************************************************/&lt;br /&gt;
.tabela-abas {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    margin-bottom: 20px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mostrar-aba {&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    background-color: transparent;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: none;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    transition: all 0.2s ease-in-out;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.imagem-botao {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    width: auto;&lt;br /&gt;
    height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sec-aba-cem {&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    color: #333;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mostrar-aba img {&lt;br /&gt;
    border: none;&lt;br /&gt;
    background-color: transparent;&lt;br /&gt;
    margin: 5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mostrar-aba:hover::after {&lt;br /&gt;
    content: '';&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 0;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    height: 3px;&lt;br /&gt;
    background-color: rgba(0, 0, 0, 0.4);&lt;br /&gt;
    /* Barrinha sutil ao passar o mouse */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mostrar-aba:hover img {&lt;br /&gt;
    filter: drop-shadow(0 2px 3px rgba(0, 0, 0, 0.3));&lt;br /&gt;
    /* Sombra leve ao passar o mouse */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mostrar-aba:active img {&lt;br /&gt;
    filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.3));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mostrar-aba.ativa::after {&lt;br /&gt;
    content: '';&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 0;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    height: 3px;&lt;br /&gt;
    background-color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.preset-aba {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.container-conteudo {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.aba {&lt;br /&gt;
    display: none;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY(-10px);&lt;br /&gt;
    transition: opacity 0.3s ease, transform 0.3s ease;&lt;br /&gt;
    margin-top: 20px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.aba.atual {&lt;br /&gt;
    display: block;&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.container-coliseu {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.coluna-abas {&lt;br /&gt;
    flex: 0 0 200px;&lt;br /&gt;
    margin-right: 20px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
      PRESET: DIÁLOGOS&lt;br /&gt;
      *******************************************************************************/&lt;br /&gt;
.transcrições {&lt;br /&gt;
    background-color: #F2F2F2;&lt;br /&gt;
    border-radius: 5px;&lt;br /&gt;
    box-shadow: 0 0 6px #B2B2B2;&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 10px 10px 10px 18px;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    color: #000;&lt;br /&gt;
    /* Garante que o texto dentro das transcrições será preto */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.transcrições b,&lt;br /&gt;
.transcrições strong {&lt;br /&gt;
    color: #000 !important;&lt;br /&gt;
    /* Garante que o texto negrito também será preto */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.transcrições::before {&lt;br /&gt;
    background-color: #F2F2F2;&lt;br /&gt;
    content: &amp;quot;\00a0&amp;quot;;&lt;br /&gt;
    display: block;&lt;br /&gt;
    height: 16px;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 11px;&lt;br /&gt;
    transform: rotate(29deg) skew(-35deg);&lt;br /&gt;
    -moz-transform: rotate(29deg) skew(-35deg);&lt;br /&gt;
    -ms-transform: rotate(29deg) skew(-35deg);&lt;br /&gt;
    -o-transform: rotate(29deg) skew(-35deg);&lt;br /&gt;
    -webkit-transform: rotate(29deg) skew(-35deg);&lt;br /&gt;
    width: 20px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.me {&lt;br /&gt;
    float: left;&lt;br /&gt;
    margin: 5px 45px 5px 20px;&lt;br /&gt;
    color: #000;&lt;br /&gt;
    /* Garante que o texto dentro da classe .me será preto */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.me::before {&lt;br /&gt;
    box-shadow: -2px 2px 2px 0 rgba(178, 178, 178, .4);&lt;br /&gt;
    left: -9px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
       PREDEFINIÇÃO ITEMBOX E RESPONSIVIDADE DAS PÁGINAS DE ITEM&lt;br /&gt;
      *******************************************************************************/&lt;br /&gt;
.item-grid {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 10px;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    margin: 20px auto;&lt;br /&gt;
    max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 1024px) {&lt;br /&gt;
    .item-grid&amp;gt;* {&lt;br /&gt;
        flex: 1 1 calc(25% - 10px);&lt;br /&gt;
        max-width: calc(25% - 10px);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .item-grid&amp;gt;* {&lt;br /&gt;
        flex: 1 1 calc(33.33% - 10px);&lt;br /&gt;
        max-width: calc(33.33% - 10px);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 480px) {&lt;br /&gt;
    .item-grid&amp;gt;* {&lt;br /&gt;
        flex: 1 1 calc(50% - 10px);&lt;br /&gt;
        max-width: calc(50% - 10px);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 360px) {&lt;br /&gt;
    .item-grid&amp;gt;* {&lt;br /&gt;
        flex: 1 1 100%;&lt;br /&gt;
        max-width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.iteminfobox {&lt;br /&gt;
    padding: 10px;&lt;br /&gt;
    background: #eeeded;&lt;br /&gt;
    border-radius: 25px;&lt;br /&gt;
    box-shadow: rgba(24, 27, 46, 0.24) 4px 4px 4px;&lt;br /&gt;
    width: 230px;&lt;br /&gt;
    height: 270px;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-direction: column;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.iteminfobox b {&lt;br /&gt;
    font-size: clamp(10px, 2vw, 14px);&lt;br /&gt;
    color: #6587c4;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    line-height: 1.2;&lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    text-overflow: ellipsis;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**********************&lt;br /&gt;
      VECTOR.CSS&lt;br /&gt;
  **********************/&lt;br /&gt;
&lt;br /&gt;
/* Geral */&lt;br /&gt;
a {&lt;br /&gt;
    color: #0645ad;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:visited {&lt;br /&gt;
    color: #0645ad;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.new {&lt;br /&gt;
    color: rgb(206, 0, 0) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
h1,&lt;br /&gt;
h2,&lt;br /&gt;
h3,&lt;br /&gt;
h4,&lt;br /&gt;
h5,&lt;br /&gt;
h6 {&lt;br /&gt;
    color: #000000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
hr {&lt;br /&gt;
    color: #222;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul {&lt;br /&gt;
    list-style-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Cabeçalho */&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
    background: url(http://70.39.70.36/images/f/fd/azul_capriw2.png);&lt;br /&gt;
    background-repeat: repeat-x;&lt;br /&gt;
    width: 1531px;&lt;br /&gt;
    max-height: 63px;&lt;br /&gt;
    margin-top: -3.5em;&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Navegação */&lt;br /&gt;
#p-cactions {&lt;br /&gt;
    background: none;&lt;br /&gt;
    margin-top: -0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-cactions li {&lt;br /&gt;
    background: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-cactions li.selected {&lt;br /&gt;
    background: none;&lt;br /&gt;
    border: 2px solid #5c3f2a;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-cactions li.new {&lt;br /&gt;
    background-color: #e2e2e2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-cactions li a {&lt;br /&gt;
    background-color: #e2e2e2;&lt;br /&gt;
    color: #7070FF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-cactions li.selected a {&lt;br /&gt;
    background-color: #324f74;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Barra de Pesquisa */&lt;br /&gt;
#searchInput {&lt;br /&gt;
    background-color: #ffffff;&lt;br /&gt;
    border-color: #0645ad;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#content {&lt;br /&gt;
    color: var(--content-text);&lt;br /&gt;
    background-color: var(--content-bg) !important;&lt;br /&gt;
    border: none !important;&lt;br /&gt;
    box-shadow: rgba(0, 0, 0, .1) 0px 8px 24px, rgba(0, 0, 0, 0.15) 0px 0px 0px 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    background-color: white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Menu */&lt;br /&gt;
.vector-menu-tabs,&lt;br /&gt;
.vector-menu-tabs a,&lt;br /&gt;
#mw-head .vector-menu-dropdown h3 {&lt;br /&gt;
    background: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-menu-tabs li a {&lt;br /&gt;
    background-position: center;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
    display: block;&lt;br /&gt;
    float: left;&lt;br /&gt;
    height: 3.07692308em;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    padding-top: 0.9em;&lt;br /&gt;
    padding-left: 8px;&lt;br /&gt;
    padding-right: 8px;&lt;br /&gt;
    font-size: 0.8125em;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-menu-tabs .selected {&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    border: 1px #0645ad solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-menu-tabs ul {&lt;br /&gt;
    float: left;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    list-style: none none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    margin-top: -0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content {&lt;br /&gt;
    background-color: none;&lt;br /&gt;
    list-style: none none;&lt;br /&gt;
    min-width: 100%;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 2.5em;&lt;br /&gt;
    right: -1px;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border: 2px solid #0645ad !important;&lt;br /&gt;
    border-top-width: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    box-shadow: 0 1px 1px 0 rgb(0 0 0 / 10%);&lt;br /&gt;
    text-align: left;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    visibility: hidden;&lt;br /&gt;
    -webkit-transition: opacity 100ms;&lt;br /&gt;
    transition: opacity 100ms;&lt;br /&gt;
    z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Conteúdo */&lt;br /&gt;
.mw-body {&lt;br /&gt;
    margin-top: -1px;&lt;br /&gt;
    border: 1px solid #8d6e63;&lt;br /&gt;
    border-right-width: 1px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output small li {&lt;br /&gt;
    color: #000000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output tr i {&lt;br /&gt;
    color: #000000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output tr big {&lt;br /&gt;
    color: #000000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .center .thumbcaption,&lt;br /&gt;
.mw-parser-output .tright .thumbcaption {&lt;br /&gt;
    color: #000000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tabelas */&lt;br /&gt;
.jquery-tablesorter tr td {&lt;br /&gt;
    background-color: #fcfcfc !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-content-text .mw-parser-output .jquery-tablesorter {&lt;br /&gt;
    transform: translatex(0px) translatey(0px);&lt;br /&gt;
    background-color: #fcfcfc;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
    border-color: #0645ad;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Links */&lt;br /&gt;
#mw-normal-catlinks ul a,&lt;br /&gt;
#mw-normal-catlinks a,&lt;br /&gt;
#ca-delete a,&lt;br /&gt;
#ca-move a,&lt;br /&gt;
#ca-unprotect a {&lt;br /&gt;
    color: #0645ad !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#ca-delete a,&lt;br /&gt;
#ca-move a,&lt;br /&gt;
#ca-unprotect a {&lt;br /&gt;
    background-color: #ffffff !important;&lt;br /&gt;
    border-color: #0645ad;&lt;br /&gt;
    border-width: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Rodapé */&lt;br /&gt;
#footer-info-lastmod {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Outros */&lt;br /&gt;
.mw-destfile-warning {&lt;br /&gt;
    border: 1px solid #8d6e63;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    margin-bottom: 1em;&lt;br /&gt;
    color: #f8f9fa;&lt;br /&gt;
    background-color: #0d1b2d;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logline-protect {&lt;br /&gt;
    color: #f8f9fa !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oo-ui-popupWidget-head&amp;gt;.oo-ui-iconElement-noIcon+.oo-ui-labelElement-label {&lt;br /&gt;
    margin-left: 12px;&lt;br /&gt;
    color: white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#msupload-div a {&lt;br /&gt;
    color: #3366cc;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    color: blue !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#msupload-bottom a {&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    margin-right: 20px;&lt;br /&gt;
    color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#msupload-list .file {&lt;br /&gt;
    background: #8b929e;&lt;br /&gt;
    border-top: 1px solid #c8ccd1;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 10px;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wikiEditor-ui-toolbar .booklet&amp;gt;.index {&lt;br /&gt;
    float: left;&lt;br /&gt;
    width: 20%;&lt;br /&gt;
    height: 125px;&lt;br /&gt;
    overflow: auto;&lt;br /&gt;
    resize: horizontal;&lt;br /&gt;
    color: black;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.codeEditor-status-message {&lt;br /&gt;
    border-left: 1px solid #c8ccd1;&lt;br /&gt;
    border-right: 1px solid #c8ccd1;&lt;br /&gt;
    padding: 0 0.3em;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wikiEditor-ui-toolbar .tabs span.tab a {&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    display: block;&lt;br /&gt;
    height: 32px;&lt;br /&gt;
    padding-left: 18px;&lt;br /&gt;
    padding-right: 12px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wikiEditor-ui-toolbar .group .tool-select .label {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    padding: 0 26px 0 4px;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    color: #222 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wikiEditor-ui-toolbar .group .tool-select .options .option {&lt;br /&gt;
    display: block;&lt;br /&gt;
    padding: 0.5em;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    color: #000 !important;&lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div.mw-number-text {&lt;br /&gt;
    color: #888 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div.mw-number-text h3 {&lt;br /&gt;
    color: #c1c1c1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tooltip */&lt;br /&gt;
.tip2 {&lt;br /&gt;
    background-color: #F2F2F2;&lt;br /&gt;
    border-radius: 2px;&lt;br /&gt;
    box-shadow: 0 0 6px #B2B2B2;&lt;br /&gt;
    display: none;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    padding: 10px;&lt;br /&gt;
    z-index: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tooltip {&lt;br /&gt;
    position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#tip-espaco {&lt;br /&gt;
    margin-left: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#youtube {&lt;br /&gt;
    margin-left: -155px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tooltip,&lt;br /&gt;
.tooltip:hover+.tip2,&lt;br /&gt;
.tip2:hover {&lt;br /&gt;
    display: inline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* tira o toggle do indice, ocultar/exibir */&lt;br /&gt;
#toc .toctogglelabel {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
span.toctogglespan {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*   WIKITABLE */&lt;br /&gt;
table.wikitablec,&lt;br /&gt;
table.prettytable {&lt;br /&gt;
    margin: 1em 1em 1em 0;&lt;br /&gt;
    background: #f9f9f9;&lt;br /&gt;
    border: 1px #aaa solid;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablecenter,&lt;br /&gt;
table.prettytable {&lt;br /&gt;
    margin-left: auto;&lt;br /&gt;
    margin-right: auto;&lt;br /&gt;
    background: #f9f9f9;&lt;br /&gt;
    border: 1px #aaa solid;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablec th,&lt;br /&gt;
table.wikitablec td,&lt;br /&gt;
table.prettytable th,&lt;br /&gt;
table.prettytable td {&lt;br /&gt;
    border: 1px #aaa solid;&lt;br /&gt;
    padding: 0.2em;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablec th,&lt;br /&gt;
table.prettytable th {&lt;br /&gt;
    background: #f2f2f2;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablec caption,&lt;br /&gt;
table.prettytable caption {&lt;br /&gt;
    margin-left: inherit;&lt;br /&gt;
    margin-right: inherit;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.prettytablec code,&lt;br /&gt;
table.wikitablec code {&lt;br /&gt;
    background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablew-tr th,&lt;br /&gt;
table.wikitablew-tr td {&lt;br /&gt;
    padding: 0.3em 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablecenter th,&lt;br /&gt;
table.wikitablecenter td,&lt;br /&gt;
table.prettytable th,&lt;br /&gt;
table.prettytable td {&lt;br /&gt;
    border: 1px #aaa solid;&lt;br /&gt;
    padding: 0.2em;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablecenter th,&lt;br /&gt;
table.prettytable th {&lt;br /&gt;
    background: #f2f2f2;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablecenter caption,&lt;br /&gt;
table.prettytable caption {&lt;br /&gt;
    margin-left: inherit;&lt;br /&gt;
    margin-right: inherit;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.prettytablecenter code,&lt;br /&gt;
table.wikitablecenter code {&lt;br /&gt;
    background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.elements {}&lt;br /&gt;
&lt;br /&gt;
table.elements th,&lt;br /&gt;
table.elements td {&lt;br /&gt;
    padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
td.effective {&lt;br /&gt;
    background-color: #BFFFBF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
td.ineffective {&lt;br /&gt;
    background-color: #FFBF7F;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
td.nullified {&lt;br /&gt;
    background-color: #FFBFBF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*   Wikitable White */&lt;br /&gt;
table.wikitablew,&lt;br /&gt;
table.prettytable,&lt;br /&gt;
table.wikitablew-tr {&lt;br /&gt;
    margin: 1em 0;&lt;br /&gt;
    background: #f9f9f9;&lt;br /&gt;
    border: 2px #fff solid;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablewhite,&lt;br /&gt;
table.prettytable {&lt;br /&gt;
    margin-left: auto;&lt;br /&gt;
    margin-right: auto;&lt;br /&gt;
    background: #f9f9f9;&lt;br /&gt;
    border: 2px #fff solid;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*   Wikitable White */&lt;br /&gt;
table.wikitablenb,&lt;br /&gt;
table.prettytable,&lt;br /&gt;
table.wikitablenb-tr {&lt;br /&gt;
    margin: 1em 0;&lt;br /&gt;
    background: #f9f9f9;&lt;br /&gt;
    border: none;&lt;br /&gt;
    border-opacity: 0.5;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wikitablenb border: opacity {&lt;br /&gt;
    opacity: 0.5;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablenoborder,&lt;br /&gt;
table.prettytable {&lt;br /&gt;
    margin-left: auto;&lt;br /&gt;
    margin-right: auto;&lt;br /&gt;
    background: #f9f9f9;&lt;br /&gt;
    border: 2px #e9e8e8 solid;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* HOVER DA TABELA*/&lt;br /&gt;
.wikitablew td: hover {&lt;br /&gt;
    background: #e9e8e8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wikitablew-tr tr: hover {&lt;br /&gt;
    background: #e9e8e8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wikitablenb border: hover {&lt;br /&gt;
    color: #e9e8e8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablew th,&lt;br /&gt;
table.wikitablew td,&lt;br /&gt;
table.prettytable th,&lt;br /&gt;
table.prettytable td,&lt;br /&gt;
table.wikitablew-tr th,&lt;br /&gt;
table.wikitablew-tr td {&lt;br /&gt;
    border: 2px #fff solid;&lt;br /&gt;
    padding: 0.3em 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablew th,&lt;br /&gt;
table.prettytable th,&lt;br /&gt;
table.wikitablew-tr th {&lt;br /&gt;
    background: #eaecf0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablew caption,&lt;br /&gt;
table.prettytable caption,&lt;br /&gt;
table.wikitablew-tr caption {&lt;br /&gt;
    margin-left: inherit;&lt;br /&gt;
    margin-right: inherit;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.prettytablec code,&lt;br /&gt;
table.prettytable code,&lt;br /&gt;
table.wikitablew-tr code {&lt;br /&gt;
    background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablewhite th,&lt;br /&gt;
table.wikitablewhite td,&lt;br /&gt;
table.prettytable th,&lt;br /&gt;
table.prettytable td {&lt;br /&gt;
    border: 2px #fff solid;&lt;br /&gt;
    padding: 0.2em;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablewhite th,&lt;br /&gt;
table.prettytable th,&lt;br /&gt;
table.wikitablew-tr th {&lt;br /&gt;
    background: #eaecf0;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border-right: 1px #fff solid;&lt;br /&gt;
    padding: 0.3em 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablewhite caption,&lt;br /&gt;
table.prettytable caption,&lt;br /&gt;
table.wikitablew-tr caption {&lt;br /&gt;
    margin-left: inherit;&lt;br /&gt;
    margin-right: inherit;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.prettytablecenter code,&lt;br /&gt;
table.wikitablewhite code,&lt;br /&gt;
table.wikitablew-tr code {&lt;br /&gt;
    background-color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.elements {}&lt;br /&gt;
&lt;br /&gt;
table.elements th,&lt;br /&gt;
table.elements td {&lt;br /&gt;
    padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
td.effective {&lt;br /&gt;
    background-color: #BFFFBF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
td.ineffective {&lt;br /&gt;
    background-color: #FFBF7F;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
td.nullified {&lt;br /&gt;
    background-color: #FFBFBF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**********************************&lt;br /&gt;
wiki.gla.com.br/index.php/Predefini%C3%A7%C3%A3o:Img&lt;br /&gt;
&lt;br /&gt;
predefinição:img | deixa as imagens responsivas pro mobile&lt;br /&gt;
**********************************/&lt;br /&gt;
.responsive-image {&lt;br /&gt;
    max-width: 100%;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.custom-image {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    max-width: 800px;&lt;br /&gt;
    height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.responsive-image[style*=&amp;quot;text-align:left&amp;quot;] {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.responsive-image[style*=&amp;quot;text-align:right&amp;quot;] {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    text-align: right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.responsive-image[style*=&amp;quot;text-align:center&amp;quot;] {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
/* Estilos CSS para o componente de abas MediaWiki */&lt;br /&gt;
/* Adicione este CSS na sua MediaWiki (Common.css ou página de estilos) */&lt;br /&gt;
&lt;br /&gt;
/* Container principal responsivo */&lt;br /&gt;
.mw-tabber-container {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    max-width: 100%;&lt;br /&gt;
    margin: 20px 0;&lt;br /&gt;
    border: 1px solid #a7d7f9;&lt;br /&gt;
    border-radius: 4px;&lt;br /&gt;
    background-color: #f8f9fa;&lt;br /&gt;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Container das abas */&lt;br /&gt;
.mw-tabber-tabs {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    background-color: #eaecf0;&lt;br /&gt;
    border-bottom: 2px solid #a7d7f9;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Estilo individual de cada aba */&lt;br /&gt;
.mw-tabber-tab {&lt;br /&gt;
    flex: 1 1 auto;&lt;br /&gt;
    min-width: 100px;&lt;br /&gt;
    padding: 12px 20px;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    background-color: #eaecf0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    border-right: 1px solid #c8ccd1;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: #0645ad;&lt;br /&gt;
    transition: all 0.2s ease;&lt;br /&gt;
    user-select: none;&lt;br /&gt;
    position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-tabber-tab:last-child {&lt;br /&gt;
    border-right: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover nas abas */&lt;br /&gt;
.mw-tabber-tab:hover {&lt;br /&gt;
    background-color: #f8f9fa;&lt;br /&gt;
    color: #0b0080;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Aba ativa */&lt;br /&gt;
.mw-tabber-tab.active {&lt;br /&gt;
    background-color: #ffffff;&lt;br /&gt;
    color: #0645ad;&lt;br /&gt;
    border-bottom: 3px solid #0645ad;&lt;br /&gt;
    font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Container do conteúdo */&lt;br /&gt;
.mw-tabber-content {&lt;br /&gt;
    padding: 20px;&lt;br /&gt;
    background-color: #ffffff;&lt;br /&gt;
    min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Painel de conteúdo individual */&lt;br /&gt;
.mw-tabber-panel {&lt;br /&gt;
    display: none;&lt;br /&gt;
    animation: fadeIn 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-tabber-panel.active {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Animação de fade in */&lt;br /&gt;
@keyframes fadeIn {&lt;br /&gt;
    from {&lt;br /&gt;
        opacity: 0;&lt;br /&gt;
        transform: translateY(5px);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    to {&lt;br /&gt;
        opacity: 1;&lt;br /&gt;
        transform: translateY(0);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Responsividade para tablets */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .mw-tabber-tabs {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .mw-tabber-tab {&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid #c8ccd1;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .mw-tabber-tab.active {&lt;br /&gt;
        border-bottom: 3px solid #0645ad;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .mw-tabber-content {&lt;br /&gt;
        padding: 15px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Responsividade para mobile */&lt;br /&gt;
@media (max-width: 480px) {&lt;br /&gt;
    .mw-tabber-tab {&lt;br /&gt;
        padding: 10px 15px;&lt;br /&gt;
        font-size: 13px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .mw-tabber-content {&lt;br /&gt;
        padding: 12px;&lt;br /&gt;
        min-height: 150px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================&lt;br /&gt;
   WIKITABLE RESPONSIVO (GLOBAL)&lt;br /&gt;
   Mantém visual atual e adiciona scroll horizontal no mobile.&lt;br /&gt;
========================================= */&lt;br /&gt;
@media (max-width: 900px) {&lt;br /&gt;
&lt;br /&gt;
    table.wikitable,&lt;br /&gt;
    table.wikitablec,&lt;br /&gt;
    table.wikitablecenter,&lt;br /&gt;
    table.wikitablew,&lt;br /&gt;
    table.wikitablewhite,&lt;br /&gt;
    table.wikitablenb,&lt;br /&gt;
    table.wikitablenoborder,&lt;br /&gt;
    table.wikitablew-tr,&lt;br /&gt;
    table.prettytable {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: max-content !important;&lt;br /&gt;
        min-width: 100%;&lt;br /&gt;
        max-width: 100%;&lt;br /&gt;
        overflow-x: auto;&lt;br /&gt;
        -webkit-overflow-scrolling: touch;&lt;br /&gt;
        box-sizing: border-box;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.wikitable th,&lt;br /&gt;
    table.wikitable td,&lt;br /&gt;
    table.wikitablec th,&lt;br /&gt;
    table.wikitablec td,&lt;br /&gt;
    table.wikitablecenter th,&lt;br /&gt;
    table.wikitablecenter td,&lt;br /&gt;
    table.wikitablew th,&lt;br /&gt;
    table.wikitablew td,&lt;br /&gt;
    table.wikitablewhite th,&lt;br /&gt;
    table.wikitablewhite td,&lt;br /&gt;
    table.wikitablenb th,&lt;br /&gt;
    table.wikitablenb td,&lt;br /&gt;
    table.wikitablenoborder th,&lt;br /&gt;
    table.wikitablenoborder td,&lt;br /&gt;
    table.wikitablew-tr th,&lt;br /&gt;
    table.wikitablew-tr td {&lt;br /&gt;
        padding: 0.32em 0.45em;&lt;br /&gt;
        word-break: normal;&lt;br /&gt;
        overflow-wrap: normal;&lt;br /&gt;
        hyphens: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.wikitable th,&lt;br /&gt;
    table.wikitablec th,&lt;br /&gt;
    table.wikitablecenter th,&lt;br /&gt;
    table.wikitablew th,&lt;br /&gt;
    table.wikitablewhite th,&lt;br /&gt;
    table.wikitablenb th,&lt;br /&gt;
    table.wikitablenoborder th,&lt;br /&gt;
    table.wikitablew-tr th {&lt;br /&gt;
        white-space: nowrap;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**************&lt;br /&gt;
gurren (2026)&lt;br /&gt;
**************/&lt;br /&gt;
.gla-responsive-frame {&lt;br /&gt;
    width: fit-content;&lt;br /&gt;
    max-width: 100%;&lt;br /&gt;
    margin: 12px auto;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
    box-shadow: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* neutraliza molduras do MediaWiki */&lt;br /&gt;
.gla-responsive-frame .thumbinner,&lt;br /&gt;
.gla-responsive-frame .thumb,&lt;br /&gt;
.gla-responsive-frame figure,&lt;br /&gt;
.gla-responsive-frame .mw-file-description {&lt;br /&gt;
    max-width: 100% !important;&lt;br /&gt;
    width: auto !important;&lt;br /&gt;
    padding: 0 !important;&lt;br /&gt;
    margin: 0 auto !important;&lt;br /&gt;
    border: 0 !important;&lt;br /&gt;
    background: transparent !important;&lt;br /&gt;
    box-shadow: none !important;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* imagem: tamanho natural + responsivo */&lt;br /&gt;
.gla-responsive-frame img {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    max-width: 100% !important;&lt;br /&gt;
    width: auto !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    margin: 0 auto !important;&lt;br /&gt;
    border: 0 !important;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    /* pode tirar também se quiser totalmente cru */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* [temporariamente desativado] GLA Wiki – dark mode&lt;br /&gt;
   (toggle; base; links; Vector; busca/inputs/botões; tabelas; home; imagens; ::selection)&lt;br /&gt;
   =========================&lt;br /&gt;
&lt;br /&gt;
#gla-darkmode-toggle {&lt;br /&gt;
    position: fixed;&lt;br /&gt;
    right: 18px;&lt;br /&gt;
    bottom: 18px;&lt;br /&gt;
    z-index: 99999;&lt;br /&gt;
&lt;br /&gt;
    display: inline-flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    gap: 7px;&lt;br /&gt;
&lt;br /&gt;
    min-height: 38px;&lt;br /&gt;
    padding: 8px 12px;&lt;br /&gt;
&lt;br /&gt;
    border: 1px solid #a2a9b1;&lt;br /&gt;
    border-radius: 999px;&lt;br /&gt;
&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
&lt;br /&gt;
    font-family: inherit;&lt;br /&gt;
    font-size: 13px;&lt;br /&gt;
    font-weight: 700;&lt;br /&gt;
    line-height: 1;&lt;br /&gt;
&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18);&lt;br /&gt;
&lt;br /&gt;
    transition:&lt;br /&gt;
        background-color 160ms ease,&lt;br /&gt;
        color 160ms ease,&lt;br /&gt;
        border-color 160ms ease,&lt;br /&gt;
        box-shadow 160ms ease,&lt;br /&gt;
        transform 160ms ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gla-darkmode-toggle:hover {&lt;br /&gt;
    background: #f8f9fa;&lt;br /&gt;
    border-color: #72777d;&lt;br /&gt;
    transform: translateY(-1px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gla-darkmode-toggle:focus {&lt;br /&gt;
    outline: 2px solid #36c;&lt;br /&gt;
    outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gla-darkmode-icon {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    min-width: 16px;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 16px;&lt;br /&gt;
    line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gla-darkmode-text {&lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width: 700px) {&lt;br /&gt;
    #gla-darkmode-toggle {&lt;br /&gt;
        right: 12px;&lt;br /&gt;
        bottom: 12px;&lt;br /&gt;
        width: 42px;&lt;br /&gt;
        height: 42px;&lt;br /&gt;
        justify-content: center;&lt;br /&gt;
        padding: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #gla-darkmode-toggle .gla-darkmode-text {&lt;br /&gt;
        display: none;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode,&lt;br /&gt;
html.gla-dark-mode body {&lt;br /&gt;
    background: #0f172a !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode #mw-page-base,&lt;br /&gt;
html.gla-dark-mode #mw-head-base {&lt;br /&gt;
    background: #0b1120 !important;&lt;br /&gt;
    background-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode #content,&lt;br /&gt;
html.gla-dark-mode .mw-body {&lt;br /&gt;
    background: #111827 !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
    border-color: #334155 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode #bodyContent,&lt;br /&gt;
html.gla-dark-mode .mw-body-content,&lt;br /&gt;
html.gla-dark-mode .mw-parser-output {&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode h1,&lt;br /&gt;
html.gla-dark-mode h2,&lt;br /&gt;
html.gla-dark-mode h3,&lt;br /&gt;
html.gla-dark-mode h4,&lt;br /&gt;
html.gla-dark-mode h5,&lt;br /&gt;
html.gla-dark-mode h6 {&lt;br /&gt;
    color: #f8fafc !important;&lt;br /&gt;
    border-color: #334155 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode p,&lt;br /&gt;
html.gla-dark-mode li,&lt;br /&gt;
html.gla-dark-mode dd,&lt;br /&gt;
html.gla-dark-mode dt {&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode hr {&lt;br /&gt;
    border-color: #334155 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode a {&lt;br /&gt;
    color: #7dd3fc !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode a:visited {&lt;br /&gt;
    color: #c4b5fd !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode a:hover {&lt;br /&gt;
    color: #bae6fd !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode #mw-navigation,&lt;br /&gt;
html.gla-dark-mode #mw-panel,&lt;br /&gt;
html.gla-dark-mode #p-logo,&lt;br /&gt;
html.gla-dark-mode #p-personal,&lt;br /&gt;
html.gla-dark-mode #left-navigation,&lt;br /&gt;
html.gla-dark-mode #right-navigation {&lt;br /&gt;
    background: transparent !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode #mw-panel .portal h3,&lt;br /&gt;
html.gla-dark-mode .vector-menu-heading,&lt;br /&gt;
html.gla-dark-mode .vector-menu-tabs .selected a,&lt;br /&gt;
html.gla-dark-mode .vector-menu-tabs a {&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .vector-menu-tabs,&lt;br /&gt;
html.gla-dark-mode .vector-menu-tabs li,&lt;br /&gt;
html.gla-dark-mode .vector-menu-tabs li a,&lt;br /&gt;
html.gla-dark-mode .vector-menu-dropdown,&lt;br /&gt;
html.gla-dark-mode .vector-menu-content,&lt;br /&gt;
html.gla-dark-mode .vector-menu-content-list {&lt;br /&gt;
    background: #111827 !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
    border-color: #334155 !important;&lt;br /&gt;
    background-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .vector-menu-tabs .selected {&lt;br /&gt;
    background: #1e293b !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode #footer {&lt;br /&gt;
    background: #0f172a !important;&lt;br /&gt;
    color: #cbd5e1 !important;&lt;br /&gt;
    border-color: #334155 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode input,&lt;br /&gt;
html.gla-dark-mode textarea,&lt;br /&gt;
html.gla-dark-mode select,&lt;br /&gt;
html.gla-dark-mode #searchInput,&lt;br /&gt;
html.gla-dark-mode .oo-ui-inputWidget-input {&lt;br /&gt;
    background: #0f172a !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
    border-color: #475569 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode input::placeholder,&lt;br /&gt;
html.gla-dark-mode textarea::placeholder {&lt;br /&gt;
    color: #94a3b8 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode button,&lt;br /&gt;
html.gla-dark-mode .mw-ui-button {&lt;br /&gt;
    background: #1e293b !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
    border-color: #475569 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode button:hover,&lt;br /&gt;
html.gla-dark-mode .mw-ui-button:hover {&lt;br /&gt;
    background: #334155 !important;&lt;br /&gt;
    color: #f8fafc !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode #gla-darkmode-toggle {&lt;br /&gt;
    background: #020617 !important;&lt;br /&gt;
    color: #f8fafc !important;&lt;br /&gt;
    border-color: #475569 !important;&lt;br /&gt;
    box-shadow: 0 4px 18px rgba(0, 0, 0, 0.45);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode #gla-darkmode-toggle:hover {&lt;br /&gt;
    background: #1e293b !important;&lt;br /&gt;
    border-color: #64748b !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode table,&lt;br /&gt;
html.gla-dark-mode .wikitable,&lt;br /&gt;
html.gla-dark-mode .infobox,&lt;br /&gt;
html.gla-dark-mode .toc,&lt;br /&gt;
html.gla-dark-mode #toc,&lt;br /&gt;
html.gla-dark-mode .catlinks,&lt;br /&gt;
html.gla-dark-mode .thumbinner,&lt;br /&gt;
html.gla-dark-mode .mw-parser-output .ambox,&lt;br /&gt;
html.gla-dark-mode .mw-parser-output .metadata {&lt;br /&gt;
    background: #1e293b !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
    border-color: #475569 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode th,&lt;br /&gt;
html.gla-dark-mode td,&lt;br /&gt;
html.gla-dark-mode .wikitable th,&lt;br /&gt;
html.gla-dark-mode .wikitable td {&lt;br /&gt;
    background-color: #1e293b !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
    border-color: #475569 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .wikitable th,&lt;br /&gt;
html.gla-dark-mode table th {&lt;br /&gt;
    background-color: #334155 !important;&lt;br /&gt;
    color: #f8fafc !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode code,&lt;br /&gt;
html.gla-dark-mode pre,&lt;br /&gt;
html.gla-dark-mode .mw-code {&lt;br /&gt;
    background: #020617 !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
    border-color: #334155 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .mw-parser-output .home-card,&lt;br /&gt;
html.gla-dark-mode .home-card {&lt;br /&gt;
    background: #1e293b !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
    border-color: #334155 !important;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .mw-parser-output .home-title,&lt;br /&gt;
html.gla-dark-mode .home-title {&lt;br /&gt;
    background: linear-gradient(to bottom, #2563eb, #1e40af) !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .home-button-item {&lt;br /&gt;
    background: #0f172a !important;&lt;br /&gt;
    border-color: #334155 !important;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .home-button-item:hover {&lt;br /&gt;
    border-color: #38bdf8 !important;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(56, 189, 248, 0.18) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .home-button-title {&lt;br /&gt;
    background: #111827 !important;&lt;br /&gt;
    color: #7dd3fc !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .index-cell {&lt;br /&gt;
    background: #0f172a !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
    border-color: #38bdf8 !important;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .index-title {&lt;br /&gt;
    color: #f8fafc !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .index-links {&lt;br /&gt;
    color: #cbd5e1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .index-grid .disabled-section {&lt;br /&gt;
    opacity: 0.55 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .index-grid .disabled-section::after {&lt;br /&gt;
    color: #f8fafc !important;&lt;br /&gt;
    text-shadow: 0 0 4px #000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode img {&lt;br /&gt;
    border-color: #334155 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .thumbcaption {&lt;br /&gt;
    color: #cbd5e1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode ::selection {&lt;br /&gt;
    background: #2563eb !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
}&lt;br /&gt;
*/&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=MediaWiki:Common.js&amp;diff=46713</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=MediaWiki:Common.js&amp;diff=46713"/>
		<updated>2026-05-04T16:20:25Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;$(document).ready(function () {&lt;br /&gt;
    //------- GLOBAL EVENTS TIMER ---------&lt;br /&gt;
    (function () {&lt;br /&gt;
        var globalEventsTimer = $('#global-event-time'); // Atualizado: ID do Timer dos Global Events&lt;br /&gt;
        var globalEventsImage = $('.global-event-image'); // Atualizado: Classe da Imagem dos Global Events&lt;br /&gt;
        var globalEventsInterval;&lt;br /&gt;
&lt;br /&gt;
        // Informações dos eventos&lt;br /&gt;
        /*&lt;br /&gt;
          0 - Domingo&lt;br /&gt;
          1 - Segunda-feira&lt;br /&gt;
          2 - Terça-feira&lt;br /&gt;
          3 - Quarta-feira&lt;br /&gt;
          4 - Quinta-feira&lt;br /&gt;
          5 - Sexta-feira&lt;br /&gt;
          6 - Sábado&lt;br /&gt;
        */&lt;br /&gt;
        var globalEventsInfo = {&lt;br /&gt;
            0: [&lt;br /&gt;
                { name: 'Foxy Memory', time: '02:00:00', src: '/images/3/37/Foxy_memory_event.png' },&lt;br /&gt;
                { name: 'Foxy race (ship)', time: '09:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },&lt;br /&gt;
                { name: 'Deathmatch', time: '12:00:00', src: '/images/4/46/Deathmatch_event.png' },&lt;br /&gt;
                { name: 'Foxy race', time: '15:00:00', src: '/images/e/e8/Foxy_race_event.png' },&lt;br /&gt;
                { name: 'Foxy quiz', time: '19:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },&lt;br /&gt;
                { name: 'Foxy count', time: '22:00:00', src: '/images/f/f3/Foxy_count_event.png' },&lt;br /&gt;
            ],&lt;br /&gt;
            1: [&lt;br /&gt;
                { name: 'Foxy Memory', time: '02:00:00', src: '/images/3/37/Foxy_memory_event.png' },&lt;br /&gt;
                { name: 'Foxy race (ship)', time: '09:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },&lt;br /&gt;
                { name: 'Deathmatch', time: '12:00:00', src: '/images/4/46/Deathmatch_event.png' },&lt;br /&gt;
                { name: 'Foxy race', time: '15:00:00', src: '/images/e/e8/Foxy_race_event.png' },&lt;br /&gt;
                { name: 'Foxy quiz', time: '19:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },&lt;br /&gt;
                { name: 'Foxy count', time: '22:00:00', src: '/images/f/f3/Foxy_count_event.png' },&lt;br /&gt;
            ],&lt;br /&gt;
            2: [&lt;br /&gt;
                { name: 'Foxy race (ship)', time: '02:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },&lt;br /&gt;
                { name: 'Deathmatch', time: '09:00:00', src: '/images/4/46/Deathmatch_event.png' },&lt;br /&gt;
                { name: 'Foxy race', time: '12:00:00', src: '/images/e/e8/Foxy_race_event.png' },&lt;br /&gt;
                { name: 'Foxy quiz', time: '15:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },&lt;br /&gt;
                { name: 'Foxy count', time: '19:00:00', src: '/images/f/f3/Foxy_count_event.png' },&lt;br /&gt;
                { name: 'Foxy Memory', time: '22:00:00', src: '/images/3/37/Foxy_memory_event.png' },&lt;br /&gt;
            ],&lt;br /&gt;
            3: [&lt;br /&gt;
                { name: 'Deathmatch', time: '02:00:00', src: '/images/4/46/Deathmatch_event.png' },&lt;br /&gt;
                { name: 'Foxy race', time: '09:00:00', src: '/images/e/e8/Foxy_race_event.png' },&lt;br /&gt;
                { name: 'Foxy quiz', time: '12:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },&lt;br /&gt;
                { name: 'Foxy count', time: '15:00:00', src: '/images/f/f3/Foxy_count_event.png' },&lt;br /&gt;
                { name: 'Foxy Memory', time: '19:00:00', src: '/images/3/37/Foxy_memory_event.png' },&lt;br /&gt;
                { name: 'Foxy race (ship)', time: '22:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },&lt;br /&gt;
            ],&lt;br /&gt;
            4: [&lt;br /&gt;
                { name: 'Foxy race', time: '02:00:00', src: '/images/e/e8/Foxy_race_event.png' },&lt;br /&gt;
                { name: 'Foxy quiz', time: '09:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },&lt;br /&gt;
                { name: 'Foxy count', time: '12:00:00', src: '/images/f/f3/Foxy_count_event.png' },&lt;br /&gt;
                { name: 'Foxy Memory', time: '15:00:00', src: '/images/3/37/Foxy_memory_event.png' },&lt;br /&gt;
                { name: 'Foxy race (ship)', time: '19:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },&lt;br /&gt;
                { name: 'Deathmatch', time: '22:00:00', src: '/images/4/46/Deathmatch_event.png' },&lt;br /&gt;
            ],&lt;br /&gt;
            5: [&lt;br /&gt;
                { name: 'Foxy quiz', time: '02:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },&lt;br /&gt;
                { name: 'Foxy count', time: '09:00:00', src: '/images/f/f3/Foxy_count_event.png' },&lt;br /&gt;
                { name: 'Foxy Memory', time: '12:00:00', src: '/images/3/37/Foxy_memory_event.png' },&lt;br /&gt;
                { name: 'Foxy race (ship)', time: '15:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },&lt;br /&gt;
                { name: 'Deathmatch', time: '19:00:00', src: '/images/4/46/Deathmatch_event.png' },&lt;br /&gt;
                { name: 'Foxy race', time: '22:00:00', src: '/images/e/e8/Foxy_race_event.png' },&lt;br /&gt;
            ],&lt;br /&gt;
            6: [&lt;br /&gt;
                { name: 'Foxy count', time: '02:00:00', src: '/images/f/f3/Foxy_count_event.png' },&lt;br /&gt;
                { name: 'Foxy Memory', time: '09:00:00', src: '/images/3/37/Foxy_memory_event.png' },&lt;br /&gt;
                { name: 'Foxy race (ship)', time: '12:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },&lt;br /&gt;
                { name: 'Deathmatch', time: '15:00:00', src: '/images/4/46/Deathmatch_event.png' },&lt;br /&gt;
                { name: 'Foxy race', time: '21:55:00', src: '/images/e/e8/Foxy_race_event.png' },&lt;br /&gt;
                { name: 'Foxy quiz', time: '22:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },&lt;br /&gt;
            ]&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        function pad(value) {&lt;br /&gt;
            return value &amp;lt; 10 ? '0' + value : value;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function getBrazilTime() {&lt;br /&gt;
            var now = new Date();&lt;br /&gt;
            var utc = now.getTime() + (now.getTimezoneOffset() * 60000); // Converte para UTC&lt;br /&gt;
            return new Date(utc - (3 * 3600000)); // Ajusta para UTC-3&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function startGlobalEventCountdown(eventStartTime, eventEndTime) {&lt;br /&gt;
            if (globalEventsInterval) clearInterval(globalEventsInterval);&lt;br /&gt;
&lt;br /&gt;
            globalEventsInterval = setInterval(function () {&lt;br /&gt;
                var now = getBrazilTime().getTime();&lt;br /&gt;
&lt;br /&gt;
                if (now &amp;lt; eventEndTime) {&lt;br /&gt;
                    var timeRemaining = Math.ceil((eventEndTime - now) / 1000); // Segundos restantes&lt;br /&gt;
                    var minutes = Math.floor(timeRemaining / 60);&lt;br /&gt;
                    var seconds = timeRemaining % 60;&lt;br /&gt;
                    globalEventsTimer.html('Iniciando: ' + pad(minutes) + &amp;quot;:&amp;quot; + pad(seconds));&lt;br /&gt;
                } else {&lt;br /&gt;
                    clearInterval(globalEventsInterval);&lt;br /&gt;
                    setGlobalEvent();&lt;br /&gt;
                }&lt;br /&gt;
            }, 1000);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function setGlobalEvent() {&lt;br /&gt;
            var now = getBrazilTime(); // Usa o horário do Brasil&lt;br /&gt;
            var dayEvents = globalEventsInfo[now.getDay()];&lt;br /&gt;
&lt;br /&gt;
            if (!dayEvents || dayEvents.length === 0) {&lt;br /&gt;
                globalEventsImage.attr('src', '/images/0/0a/Anyevent.png'); // Imagem padrão&lt;br /&gt;
                globalEventsTimer.html('Acabaram os eventos por hoje');&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            for (var i = 0; i &amp;lt; dayEvents.length; i++) {&lt;br /&gt;
                var event = dayEvents[i];&lt;br /&gt;
                var timeParts = event.time.split(':');&lt;br /&gt;
                var eventStartTime = new Date(&lt;br /&gt;
                    now.getFullYear(),&lt;br /&gt;
                    now.getMonth(),&lt;br /&gt;
                    now.getDate(),&lt;br /&gt;
                    parseInt(timeParts[0], 10),&lt;br /&gt;
                    parseInt(timeParts[1], 10),&lt;br /&gt;
                    parseInt(timeParts[2], 10)&lt;br /&gt;
                ).getTime();&lt;br /&gt;
                var eventEndTime = eventStartTime + 5 * 60 * 1000; // Evento dura 5 minutos para entrada&lt;br /&gt;
&lt;br /&gt;
                if (now &amp;gt;= eventStartTime &amp;amp;&amp;amp; now &amp;lt; eventEndTime) {&lt;br /&gt;
                    // Durante o período de entrada do evento&lt;br /&gt;
                    globalEventsImage.attr('src', event.src);&lt;br /&gt;
                    startGlobalEventCountdown(eventStartTime, eventEndTime);&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (now &amp;lt; eventStartTime) {&lt;br /&gt;
                    // Antes do evento, exibe o horário fixo&lt;br /&gt;
                    globalEventsImage.attr('src', event.src);&lt;br /&gt;
                    globalEventsTimer.html(&lt;br /&gt;
                        new Date(eventStartTime).toLocaleTimeString('pt-BR', {&lt;br /&gt;
                            hour: '2-digit',&lt;br /&gt;
                            minute: '2-digit',&lt;br /&gt;
                        })&lt;br /&gt;
                    );&lt;br /&gt;
&lt;br /&gt;
                    // Só inicia a contagem regressiva quando estiver próximo (faltando 5 minutos ou menos)&lt;br /&gt;
                    if (eventStartTime - now &amp;lt;= 5 * 60 * 1000) {&lt;br /&gt;
                        startGlobalEventCountdown(eventStartTime, eventEndTime);&lt;br /&gt;
                    }&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // Após o último evento do dia&lt;br /&gt;
            globalEventsImage.attr('src', '/images/0/0a/Anyevent.png'); // Imagem padrão&lt;br /&gt;
            globalEventsTimer.html('Acabaram os eventos por hoje');&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).ready(function () {&lt;br /&gt;
            setGlobalEvent();&lt;br /&gt;
        });&lt;br /&gt;
    })();&lt;br /&gt;
    //------- GLOBAL EVENTS TIMER ---------&lt;br /&gt;
    //------- TOOLTIP IMAGE---------&lt;br /&gt;
    /*&lt;br /&gt;
        Tooltip image consiste em uma funcionalidade que insere uma tag IMG &lt;br /&gt;
        quando o usuario passa o mouse por cima de uma imagem com a classe &amp;quot;tooltip-image&amp;quot;&lt;br /&gt;
        ao fazer é inserido no body uma tag IMG com a mesma &amp;quot;src&amp;quot; 1.3 vezes maior do que a imagem&lt;br /&gt;
        que o usuario está com o mouse em coma, esta tag IMG terá o mesmo X e Y do mouse + um offset &lt;br /&gt;
        para manter um distanciamento.&lt;br /&gt;
    */&lt;br /&gt;
&lt;br /&gt;
    //Distanciamento / margem do mouse&lt;br /&gt;
    const offset = { x: 20, y: 10 };&lt;br /&gt;
&lt;br /&gt;
    $('.tooltip-image').on('mouseenter',&lt;br /&gt;
        function (e) {&lt;br /&gt;
            var src = $(this).attr('src');&lt;br /&gt;
            var size = $(this).width() * 1.3;&lt;br /&gt;
&lt;br /&gt;
            $('&amp;lt;img src=&amp;quot;' + src + '&amp;quot; id=&amp;quot;bigImage&amp;quot; /&amp;gt;').css('left', e.pageX + offset.x).css('top', e.pageY + offset.y).css('width', size + &amp;quot;px&amp;quot;).appendTo('body').hide().fadeIn(500);&lt;br /&gt;
        }).on('mouseleave',&lt;br /&gt;
            function () {&lt;br /&gt;
                $('#bigImage').remove();&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
    $('.tooltip-image').mousemove(function (e) {&lt;br /&gt;
        $('#bigImage').css('left', e.pageX + offset.x).css('top', e.pageY + offset.y);&lt;br /&gt;
    });&lt;br /&gt;
    //------- TOOLTIP IMAGE---------&lt;br /&gt;
&lt;br /&gt;
    //------- FUNCIONALIDADES PACIENTES KUREHA ---------&lt;br /&gt;
    const pacients = {&lt;br /&gt;
        &amp;quot;bafo&amp;quot;: { image: &amp;quot;/images/c/ce/Bafo_static.png&amp;quot;, gif: &amp;quot;/images/e/e0/Bafo.gif&amp;quot; },&lt;br /&gt;
        &amp;quot;espirrando&amp;quot;: { image: &amp;quot;/images/thumb/5/5b/Espirro_static.png/180px-Espirro_static.png&amp;quot;, gif: &amp;quot;/images/thumb/9/90/Espirro.gif/180px-Espirro.gif&amp;quot;, audio: &amp;quot;/images/2/2b/Espirrando.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;enjoado&amp;quot;: { image: &amp;quot;/images/thumb/5/52/Enjoado_static.png/180px-Enjoado_static.png&amp;quot;, gif: &amp;quot;/images/thumb/7/76/Enjoado.gif/180px-Enjoado.gif&amp;quot;, audio: &amp;quot;/images/5/5b/Vomito.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;tremendo&amp;quot;: { image: &amp;quot;/images/thumb/3/35/Tremendo_static.png/180px-Tremendo_static.png&amp;quot;, gif: &amp;quot;/images/thumb/f/f4/Tremendo.gif/180px-Tremendo.gif&amp;quot; },&lt;br /&gt;
        &amp;quot;tossindo&amp;quot;: { image: &amp;quot;/images/thumb/e/ef/Tosse_static.png/180px-Tosse_static.png&amp;quot;, gif: &amp;quot;/images/thumb/a/a4/Tosse.gif/180px-Tosse.gif&amp;quot;, audio: &amp;quot;/images/f/f9/Tossindo.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;solucando&amp;quot;: { image: &amp;quot;/images/thumb/c/c0/Soluco_static.png/180px-Soluco_static.png&amp;quot;, gif: &amp;quot;/images/thumb/6/67/Soluco.gif/180px-Soluco.gif&amp;quot;, audio: &amp;quot;/images/e/e2/Solucando.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;funk&amp;quot;: { image: &amp;quot;/images/thumb/e/e8/Funkeiro_static.png/180px-Funkeiro_static.png &amp;quot;, gif: &amp;quot;/images/thumb/7/79/Funkeiro.gif/180px-Funkeiro.gif&amp;quot;, audio: &amp;quot;/images/d/d2/Funk.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;fedendo&amp;quot;: { image: &amp;quot;/images/thumb/1/1e/Fedido_static.png/180px-Fedido_static.png&amp;quot;, gif: &amp;quot;/images/thumb/c/c9/Fedido.gif/180px-Fedido.gif&amp;quot; },&lt;br /&gt;
        &amp;quot;febre&amp;quot;: { image: &amp;quot;/images/thumb/1/14/Febre_static.png/180px-Febre_static.png&amp;quot;, gif: &amp;quot;/images/thumb/7/75/Febre.gif/180px-Febre.gif&amp;quot; },&lt;br /&gt;
        &amp;quot;endemoniado&amp;quot;: { audio: &amp;quot;/images/3/32/Risada_maligna.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;fome&amp;quot;: { audio: &amp;quot;/images/3/37/Estomago_roncando.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;cardiaco&amp;quot;: { audio: &amp;quot;/images/2/27/Coracao_batendo.ogg&amp;quot; }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    const audioPlayer = document.querySelector(&amp;quot;#audio&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;.pacient-audio&amp;quot;).on(&amp;quot;click&amp;quot;, function (e) {&lt;br /&gt;
        id = $(this).attr('id');&lt;br /&gt;
&lt;br /&gt;
        if (pacients[id]) {&lt;br /&gt;
            audioPlayer.src = pacients[id].audio;&lt;br /&gt;
            audioPlayer.play();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $('.interactive-pacient').on('mouseenter', function (e) {&lt;br /&gt;
        id = $(this).attr('id');&lt;br /&gt;
&lt;br /&gt;
        if (pacients[id])&lt;br /&gt;
            $(this).attr('src', pacients[id].gif);&lt;br /&gt;
    }).on('mouseleave', function (e) {&lt;br /&gt;
        id = $(this).attr('id');&lt;br /&gt;
&lt;br /&gt;
        if (pacients[id])&lt;br /&gt;
            $(this).attr('src', pacients[id].image);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    //------- FUNCIONALIDADES PACIENTES KUREHA ---------&lt;br /&gt;
    //------- FUNCIONALIDADES BUZINAS ---------&lt;br /&gt;
    const horns = {&lt;br /&gt;
        &amp;quot;Buzinadelacucha&amp;quot;: { audio: &amp;quot;/images/5/55/Buzinadelacucha-audio.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;Buzinadefumaca&amp;quot;: { audio: &amp;quot;/images/3/3a/Buzinadefumaca-audio.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;Buzinadecaminhao&amp;quot;: { audio: &amp;quot;/images/e/e4/Buzinadecaminhao-audio.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;Buzinadetrem&amp;quot;: { audio: &amp;quot;/images/3/34/Buzinadetrem-audio.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;Buzinadeesporte&amp;quot;: { audio: &amp;quot;/images/2/2b/Buzinadeesporte-audio.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;Buzinadear&amp;quot;: { audio: &amp;quot;/images/9/95/Buzinadear-audio.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;Buzinadepalhaco&amp;quot;: { audio: &amp;quot;/images/a/a4/Buzinadepalhaco-audio.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;Buzinadeinvestida&amp;quot;: { audio: &amp;quot;/images/f/ff/Buzinadeinvestida-audio.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;Buzinadebicicleta&amp;quot;: { audio: &amp;quot;/images/1/15/Buzinadebicicleta-audio.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;Buzinadeneblina&amp;quot;: { audio: &amp;quot;/images/6/64/Buzinadeneblina-audio.ogg&amp;quot; }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    const hornAudioPlayer = document.querySelector(&amp;quot;#audio&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;.horn-audio&amp;quot;).on(&amp;quot;click&amp;quot;, function (e) {&lt;br /&gt;
        const id = $(this).attr('id');&lt;br /&gt;
        if (horns[id]) {&lt;br /&gt;
            hornAudioPlayer.src = horns[id].audio;&lt;br /&gt;
            hornAudioPlayer.play();&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    //------- FUNCIONALIDADES BUZINAS ---------&lt;br /&gt;
&lt;br /&gt;
    //------- PERSONAGENS ---------&lt;br /&gt;
&lt;br /&gt;
    const characters = [&lt;br /&gt;
        { name: &amp;quot;Silvers Rayleigh&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Silvers_Rayleigh&amp;quot;, img: &amp;quot;/images/f/f1/Rayleigh_Card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Monkey D Garp&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;marine&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Monkey_D_Garp&amp;quot;, img: &amp;quot;/images/a/a1/GarpCard.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Aokiji Dio&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;marine&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Aokiji&amp;quot;, img: &amp;quot;/images/6/67/Aokiji_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bartolomew Kuma&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Kuma&amp;quot;, img: &amp;quot;/images/b/b5/Card-kuma.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Boa Hancock&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;], link: &amp;quot;/Boa_Hancock&amp;quot;, img: &amp;quot;/images/4/47/Card-hancock.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Borsalino Kizaru&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Kizaru&amp;quot;, img: &amp;quot;/images/3/32/Card-kizaru.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Brook (TS)&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Brook_(Timeskip)&amp;quot;, img: &amp;quot;/images/1/1d/Card-brookts.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Tony Tony Chopper (TS) Gurren&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Chopper_(Timeskip)&amp;quot;, img: &amp;quot;/images/5/53/Card-chopperts.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Doflamingo&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Doflamingo&amp;quot;, img: &amp;quot;/images/8/8d/Card-doflamingo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Dracule Mihawk&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Mihawk&amp;quot;, img: &amp;quot;/images/9/91/Card-mihawk.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Emporio Ivankov&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Ivankov&amp;quot;, img: &amp;quot;/images/c/ca/Card-ivankov.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Enel&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;dps&amp;quot;], link: &amp;quot;/Enel&amp;quot;, img: &amp;quot;/images/8/85/Enel_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Franky (TS) Sanitaria&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Franky_(Timeskip)&amp;quot;, img: &amp;quot;/images/d/d0/Card-frankyts.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Jinbe&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Jinbe&amp;quot;, img: &amp;quot;/images/2/2e/Card-jinbe.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Marshall D. Teach Barba Negra&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;diamond&amp;quot;], link: &amp;quot;/Marshall_D._Teach&amp;quot;, img: &amp;quot;/images/f/ff/Card-kurohige.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Marco Abacaxi&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;fighter&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;diamond&amp;quot;], link: &amp;quot;/Marco&amp;quot;, img: &amp;quot;/images/2/2b/Marco_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Monkey D. Luffy (TS) Visno&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Luffy_(Timeskip)&amp;quot;, img: &amp;quot;/images/e/ed/Card-luffyts.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Nami (TS)&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;], link: &amp;quot;/Nami_(timeskip)&amp;quot;, img: &amp;quot;/images/3/35/Card-namits.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Portgas D. Ace Duduh&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;], link: &amp;quot;/Ace&amp;quot;, img: &amp;quot;/images/4/40/Card-ace.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Robin (TS)&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Robin_(Timeskip)&amp;quot;, img: &amp;quot;/images/b/b0/Card-robints.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Roronoa Zoro (TS)&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Zoro_(Timeskip)&amp;quot;, img: &amp;quot;/images/7/74/Card-zorots.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Sabo&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Sabo&amp;quot;, img: &amp;quot;/images/0/04/Card-sabo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Sakazuki Akainu&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Akainu&amp;quot;, img: &amp;quot;/images/b/b0/Card_akainu.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Shanks&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Shanks&amp;quot;, img: &amp;quot;/images/a/aa/Card-shanks.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Usopp (TS)&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Usopp_(Timeskip)&amp;quot;, img: &amp;quot;/images/c/cc/Card-usoppts.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Uta&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Uta&amp;quot;, img: &amp;quot;/images/2/22/Card_uta.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Sanji (TS)&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Sanji_(Timeskip)&amp;quot;, img: &amp;quot;/images/7/7a/Card-sanjits.png&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
        { name: &amp;quot;Kalifa&amp;quot;, types: [&amp;quot;support&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Kalifa&amp;quot;, img: &amp;quot;/images/3/39/Kalifa_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Jabra&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Jabra&amp;quot;, img: &amp;quot;/images/9/98/Jabra_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Kaku&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Kaku&amp;quot;, img: &amp;quot;/images/9/98/Kaku_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Rob Lucci&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Rob Lucci&amp;quot;, img: &amp;quot;/images/b/b1/Rob_Lucci_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Blueno&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Blueno&amp;quot;, img: &amp;quot;/images/5/55/Blueno_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Marguerite&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Marguerite&amp;quot;, img: &amp;quot;/images/1/1c/Marguerite_Card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Baby 5&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;shooter&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;dps&amp;quot;], link: &amp;quot;/Baby_5&amp;quot;, img: &amp;quot;/images/5/5e/Baby5_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bartolomeo&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Bartolomeo&amp;quot;, img: &amp;quot;/images/a/a9/Card-barto.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Basil Hawkins Lost&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Basil_Hawkins&amp;quot;, img: &amp;quot;/images/8/89/Card-hawkins.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bastille&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Bastille&amp;quot;, img: &amp;quot;/images/1/13/Card-bastille.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bellamy&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Bellamy&amp;quot;, img: &amp;quot;/images/7/7e/Card-bellamy.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bonney Poseidon&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Bonney&amp;quot;, img: &amp;quot;/images/9/91/Card-bonney.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Brook&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/brook&amp;quot;, img: &amp;quot;/images/7/76/Card-brook.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Capone gang bege&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Capone_Bege&amp;quot;, img: &amp;quot;/images/c/c0/Card-capone.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Carrot&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Carrot&amp;quot;, img: &amp;quot;/images/8/8d/Card-carrot.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Tony Tony Chopper Gurren&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Chopper&amp;quot;, img: &amp;quot;/images/1/19/Card-chopper.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Crocodile&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Crocodile&amp;quot;, img: &amp;quot;/images/5/5d/Card-crocodile.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Dalmatian&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Dalmatian&amp;quot;, img: &amp;quot;/images/9/99/Card-dalmatian.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Franky Sanitaria&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Franky&amp;quot;, img: &amp;quot;/images/6/61/Card-franky.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Gecko Moria Coxinha&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Gecko_Moria&amp;quot;, img: &amp;quot;/images/f/fc/Moria_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Hina&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Hina&amp;quot;, img: &amp;quot;/images/5/57/Card-hina.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Jesus Burgess&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Jesus_Burgess&amp;quot;, img: &amp;quot;/images/2/28/Card-burgess.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Eustass Kid Rag&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Kid&amp;quot;, img: &amp;quot;/images/9/9a/Card-kid.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Killer&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Killer&amp;quot;, img: &amp;quot;/images/b/b2/Card-killer.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Koala&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Koala&amp;quot;, img: &amp;quot;/images/f/f3/Card-koala.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Leo &amp;amp; Mansherry&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Leo&amp;quot;, img: &amp;quot;/images/d/d9/Card-leo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Monkey D. Luffy Visno&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Luffy&amp;quot;, img: &amp;quot;/images/a/af/Card-luffy.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Nami&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/nami&amp;quot;, img: &amp;quot;/images/0/08/Card-nami.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Perona&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Perona&amp;quot;, img: &amp;quot;/images/6/6d/Card-perona.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Rebecca Ghoul Den Berry&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Rebecca&amp;quot;, img: &amp;quot;/images/9/91/Card-rebecca.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Nico Robin&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Robin&amp;quot;, img: &amp;quot;/images/3/3f/Card-robin.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Roronoa zoro&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Roronoa_Zoro&amp;quot;, img: &amp;quot;/images/6/6f/Card-zoro.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Ryuma&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Ryuma&amp;quot;, img: &amp;quot;/images/a/ac/Card-ryuma.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Scratchmen Apoo&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Apoo&amp;quot;, img: &amp;quot;/images/9/90/Card-apoo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Smoker Piseiro&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Smoker&amp;quot;, img: &amp;quot;/images/f/fb/Card-smoker.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Trafalgar Law&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Trafalgar_Law&amp;quot;, img: &amp;quot;/images/b/b9/Card-law.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Urouge&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Urouge&amp;quot;, img: &amp;quot;/images/9/98/Card-urouge.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Usopp&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Usopp&amp;quot;, img: &amp;quot;/images/a/ac/Card-usopp.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Van Augur&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Van Augur&amp;quot;, img: &amp;quot;/images/c/c7/Card-vanaugur.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Ichiji&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Ichiji&amp;quot;, img: &amp;quot;/images/8/8c/Card-ichiji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Niji&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Niji&amp;quot;, img: &amp;quot;/images/6/66/Card-niji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Reiju Athena&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Reiju&amp;quot;, img: &amp;quot;/images/2/23/Card-reiju.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Sanji&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Sanji&amp;quot;, img: &amp;quot;/images/0/04/Card-sanji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Yonji&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Yonji&amp;quot;, img: &amp;quot;/images/7/73/Card-yonji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;X-drake&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/X_Drake&amp;quot;, img: &amp;quot;/images/6/69/Card-drake.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Satori&amp;quot;, types: [&amp;quot;support&amp;quot;, &amp;quot;shooter&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/Satori&amp;quot;, img: &amp;quot;/images/f/f3/Satori_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Gedatsu&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/Gedatsu&amp;quot;, img: &amp;quot;/images/f/f6/Gedatsu_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Ohm&amp;quot;, types: [&amp;quot;tank&amp;quot;, &amp;quot;slasher&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/Ohm&amp;quot;, img: &amp;quot;/images/1/1e/Ohm_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Shura&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/Shura&amp;quot;, img: &amp;quot;/images/2/2e/Shura_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Arlong&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;silver&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Arlong&amp;quot;, img: &amp;quot;/images/1/1e/Card-arlong.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bepo&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/Bepo&amp;quot;, img: &amp;quot;/images/1/1d/Card-bepo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Mr.2&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/mr.2&amp;quot;, img: &amp;quot;/images/2/27/Card-bonchan.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Buggy&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;silver&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/buggy&amp;quot;, img: &amp;quot;/images/c/ca/Card-buggy.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Daddy Masterson&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/Daddy_Masterson&amp;quot;, img: &amp;quot;/images/2/20/Card-daddy.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;mr.1 Daz Bonez Kolivier&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/mr.1&amp;quot;, img: &amp;quot;/images/6/61/Card-dazbonez.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Miss Doublefinger Zala&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/Miss_Doublefinger&amp;quot;, img: &amp;quot;/images/5/5f/Card-doublefinger.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Don Krieg&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/don_Krieg&amp;quot;, img: &amp;quot;/images/8/8f/Card-krieg.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Kuro&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/kuro&amp;quot;, img: &amp;quot;/images/3/3d/Card-kuro.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;mr.3 Galdino&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;silver&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/mr.3&amp;quot;, img: &amp;quot;/images/7/75/Card-mr3.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Tashigi&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/tashigi&amp;quot;, img: &amp;quot;/images/b/b8/Card-tashigi.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Nefertari Vivi&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/Vivi&amp;quot;, img: &amp;quot;/images/9/9c/Card-vivi.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Wapol&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;silver&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/wapol&amp;quot;, img: &amp;quot;/images/b/ba/Card-wapol.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Alvida&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Alvida&amp;quot;, img: &amp;quot;/images/8/83/Card-alvida.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Buchi &amp;amp; Sham&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Buchi&amp;quot;, img: &amp;quot;/images/0/0b/Card-buchi.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Cabaji&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Cabaji&amp;quot;, img: &amp;quot;/images/9/9d/Card-cabaji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Chew&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;bronze&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Chew&amp;quot;, img: &amp;quot;/images/0/0f/Card-chew.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Eric&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Eric&amp;quot;, img: &amp;quot;/images/3/31/Card-eric.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Gin&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Gin&amp;quot;, img: &amp;quot;/images/1/18/Card-gin.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Miss Goldenweek&amp;quot;, types: [&amp;quot;support&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Goldenweek&amp;quot;, img: &amp;quot;/images/0/0e/Card-goldenweek.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Hatchan&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Hatchan&amp;quot;, img: &amp;quot;/images/3/31/Card-hatchan.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Jango&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Jango&amp;quot;, img: &amp;quot;/images/4/48/Card-jango.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Kuroobi&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;bronze&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Kuroobi&amp;quot;, img: &amp;quot;/images/6/6a/Card-kuroobi.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Mohji&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Mohji&amp;quot;, img: &amp;quot;/images/5/58/Card-mohji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Morgan&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Morgan&amp;quot;, img: &amp;quot;/images/4/43/Card-morgan.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Mr.4&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Mr.4&amp;quot;, img: &amp;quot;/images/9/90/Card-mr4.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Mr.5&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Mr.5&amp;quot;, img: &amp;quot;/images/4/49/Card-mr5.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Pearl&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Pearl&amp;quot;, img: &amp;quot;/images/d/de/Card-pearl.png&amp;quot; },&lt;br /&gt;
    ];&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;.filter--icon&amp;quot;).on(&amp;quot;click&amp;quot;, function () {&lt;br /&gt;
        const id = $(this).attr(&amp;quot;id&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        if ($(this).hasClass(&amp;quot;all&amp;quot;)) {&lt;br /&gt;
            $('.filter--icon.active').removeClass('active');&lt;br /&gt;
            $(&amp;quot;.characters&amp;quot;).addClass('show');&lt;br /&gt;
            $(&amp;quot;.filter--icon.all&amp;quot;).addClass('active');&lt;br /&gt;
            return false;&lt;br /&gt;
        } else {&lt;br /&gt;
            $(&amp;quot;.filter--icon.all&amp;quot;).removeClass('active');&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if ($(this).hasClass(&amp;quot;active&amp;quot;)) {&lt;br /&gt;
            $(this).removeClass('active');&lt;br /&gt;
            actives = $('.filter--icon.active');&lt;br /&gt;
            query = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            $.each(actives, function (key, item) {&lt;br /&gt;
                query += &amp;quot;[data-type-&amp;quot; + item.id + &amp;quot;]&amp;quot;;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $(&amp;quot;.characters&amp;quot; + query).addClass('show');&lt;br /&gt;
        } else {&lt;br /&gt;
            if ($(this).hasClass(&amp;quot;tier&amp;quot;)) {&lt;br /&gt;
                $('.filter--icon.tier.active').removeClass('active');&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            $(this).addClass('active');&lt;br /&gt;
            $(&amp;quot;.characters&amp;quot;).removeClass('show');&lt;br /&gt;
            query = &amp;quot;&amp;quot;;&lt;br /&gt;
            actives = $('.filter--icon.active');&lt;br /&gt;
&lt;br /&gt;
            $.each(actives, function (key, item) {&lt;br /&gt;
                query += &amp;quot;[data-type-&amp;quot; + item.id + &amp;quot;]&amp;quot;;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $(&amp;quot;.characters&amp;quot; + query).addClass('show');&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $.each(characters, function (key, item) {&lt;br /&gt;
        data = '';&lt;br /&gt;
        id = item.name.replace(/\s/g, '_').toLowerCase();&lt;br /&gt;
&lt;br /&gt;
        $.each(item.types, function (key, value) {&lt;br /&gt;
            data += &amp;quot;data-type-&amp;quot; + value + &amp;quot; &amp;quot;;&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        $(&amp;quot;#characters-container&amp;quot;).append(&lt;br /&gt;
            &amp;quot;&amp;lt;div id=&amp;quot; + id + &amp;quot; class='characters show' &amp;quot; + data + &amp;quot; &amp;gt;&amp;quot; +&lt;br /&gt;
            &amp;quot;&amp;lt;a href='https://wiki.gla.com.br/index.php&amp;quot; + item.link + &amp;quot;'&amp;gt;&amp;quot; +&lt;br /&gt;
            &amp;quot;&amp;lt;img src='&amp;quot; + item.img + &amp;quot;' alt='imagem de &amp;quot; + item.name + &amp;quot;' /&amp;gt;&amp;quot; +&lt;br /&gt;
            &amp;quot;&amp;lt;/a&amp;gt;&amp;quot; +&lt;br /&gt;
            &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
        );&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;.filter--searchButton&amp;quot;).on(&amp;quot;click&amp;quot;, function () {&lt;br /&gt;
        $(&amp;quot;.filter--icon.active&amp;quot;).removeClass('active');&lt;br /&gt;
        $(&amp;quot;.characters.show&amp;quot;).removeClass('show');&lt;br /&gt;
        if ($(&amp;quot;#f-input&amp;quot;).val().toLowerCase() != '') {&lt;br /&gt;
            $(&amp;quot;.characters[id*=&amp;quot; + $(&amp;quot;#f-input&amp;quot;).val().toLowerCase() + &amp;quot;]&amp;quot;).addClass('show');&lt;br /&gt;
        } else {&lt;br /&gt;
            $(&amp;quot;.characters&amp;quot;).addClass('show');&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $('#f-input').keypress(function (e) {&lt;br /&gt;
        const key = e.which;&lt;br /&gt;
        if (key == 13)  // the enter key code&lt;br /&gt;
        {&lt;br /&gt;
            $('.filter--searchButton').click();&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    //------- PERSONAGENS ---------&lt;br /&gt;
&lt;br /&gt;
    //------- WANTED ---------&lt;br /&gt;
    const wanted_slashers = [&lt;br /&gt;
        { name: &amp;quot;Baby 5&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;jango&amp;quot;], img: &amp;quot;/images/5/5e/Baby5_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Ohm&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/1/1e/Ohm_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Roronoa Zoro&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/6/6f/Card-zoro.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Shanks&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;bellamy&amp;quot;], img: &amp;quot;/images/a/aa/Card-shanks.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Dracule Mihawk&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;crocodile&amp;quot;], img: &amp;quot;/images/9/91/Card-mihawk.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Killer&amp;quot;, wanteds: [&amp;quot;rebecca&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/b/b2/Card-killer.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Tashigi&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/b/b8/Card-tashigi.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Roronoa Zoro (TS)&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/7/74/Card-zorots.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Rebbeca&amp;quot;, wanteds: [&amp;quot;franky&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/9/91/Card-rebecca.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Carrot&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/8/8d/Card-carrot.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Shimotsuki Ryuma&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;crocodile&amp;quot;], img: &amp;quot;/images/a/ac/Card-ryuma.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Trafalgar Law&amp;quot;, wanteds: [&amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/b/b9/Card-law.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Mr. 1&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;], img: &amp;quot;/images/6/61/Card-dazbonez.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bastille&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;bellamy&amp;quot;], img: &amp;quot;/images/1/13/Card-bastille.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Dalmatian&amp;quot;, wanteds: [&amp;quot;capone&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;crocodile&amp;quot;], img: &amp;quot;/images/9/99/Card-dalmatian.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Morgan&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/4/43/Card-morgan.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Cabaji&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/9/9d/Card-cabaji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Kuro&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;bellamy&amp;quot;], img: &amp;quot;/images/3/3d/Card-kuro.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Eric&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/3/31/Card-eric.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Miss Doublefinger&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;], img: &amp;quot;/images/5/5f/Card-doublefinger.png&amp;quot; },&lt;br /&gt;
    ];&lt;br /&gt;
&lt;br /&gt;
    const wanted_shooters = [&lt;br /&gt;
        { name: &amp;quot;Baby 5&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;jango&amp;quot;], img: &amp;quot;/images/5/5e/Baby5_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Daddy Masterson&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;], img: &amp;quot;/images/2/20/Card-daddy.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Enel&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/8/85/Enel_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Capone Gang Bege&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/c/c0/Card-capone.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Franky&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/6/61/Card-franky.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Eustass kid&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;crocodile&amp;quot;], img: &amp;quot;/images/9/9a/Card-kid.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Van Augur&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/c/c7/Card-vanaugur.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Portgas D. Ace&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;], img: &amp;quot;/images/4/40/Card-ace.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Usopp (TS)&amp;quot;, wanteds: [&amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/c/cc/Card-usoppts.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Donquixote Doflamingo&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/8/8d/Card-doflamingo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Buggy&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/c/ca/Card-buggy.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Niji&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/6/66/Card-niji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Wapol&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;], img: &amp;quot;/images/b/ba/Card-wapol.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Franky (TS)&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/d/d0/Card-frankyts.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Borsalino Kizaru&amp;quot;, wanteds: [&amp;quot;capone&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/3/32/Card-kizaru.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Don Krieg&amp;quot;, wanteds: [&amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/8/8f/Card-krieg.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Eric&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/3/31/Card-eric.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Mr. 4&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;morgan&amp;quot;], img: &amp;quot;/images/9/90/Card-mr4.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Mr. 5&amp;quot;, wanteds: [&amp;quot;brook&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;], img: &amp;quot;/images/4/49/Card-mr5.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Gin&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/1/18/Card-gin.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Chew&amp;quot;, wanteds: [&amp;quot;mr. 5&amp;quot;], img: &amp;quot;/images/0/0f/Card-chew.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Usopp&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;], img: &amp;quot;/images/a/ac/Card-usopp.png&amp;quot; },&lt;br /&gt;
    ];&lt;br /&gt;
&lt;br /&gt;
    const wanted_fighters = [&lt;br /&gt;
        { name: &amp;quot;Sabo&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/0/04/Card-sabo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;X-Drake&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;, &amp;quot;bellamy&amp;quot;], img: &amp;quot;/images/6/69/Card-drake.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Hina&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/5/57/Card-hina.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Smoker&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/f/fb/Card-smoker.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bellamy&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/7/7e/Card-bellamy.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Urouge&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;chew&amp;quot;], img: &amp;quot;/images/9/98/Card-urouge.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Boa Hancock&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;, &amp;quot;bellamy&amp;quot;], img: &amp;quot;/images/4/47/Card-hancock.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;VinsmokeYonji&amp;quot;, wanteds: [&amp;quot;mr. 4&amp;quot;, &amp;quot;kuro&amp;quot;], img: &amp;quot;/images/7/73/Card-yonji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Ichiji&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/8/8c/Card-ichiji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Mr. 2&amp;quot;, wanteds: [&amp;quot;bonney&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/2/27/Card-bonchan.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Sanji (TS)&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/7/7a/Card-sanjits.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Monkey D. Luffy (TS)&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/e/ed/Card-luffyts.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Koala&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;, &amp;quot;bellamy&amp;quot;], img: &amp;quot;/images/f/f3/Card-koala.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Burgess&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/2/28/Card-burgess.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Monkey D. Luffy&amp;quot;, wanteds: [&amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/a/af/Card-luffy.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bepo&amp;quot;, wanteds: [&amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/1/1d/Card-bepo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Sanji&amp;quot;, wanteds: [&amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/0/04/Card-sanji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Arlong&amp;quot;, wanteds: [&amp;quot;mr. 2&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/1/1e/Card-arlong.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Gin&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/1/18/Card-gin.png&amp;quot; },&lt;br /&gt;
    ];&lt;br /&gt;
&lt;br /&gt;
    const wanted_especialists = [&lt;br /&gt;
        { name: &amp;quot;Sakazuki Akainu&amp;quot;, wanteds: [&amp;quot;capone&amp;quot;, &amp;quot;bellamy&amp;quot;], img: &amp;quot;/images/b/b0/Card_akainu.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Uta&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;], img: &amp;quot;/images/2/22/Card_uta.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Sabo&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/0/04/Card-sabo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Enel&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/8/85/Enel_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Reiju&amp;quot;, wanteds: [&amp;quot;brook&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/2/23/Card-reiju.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Portgas D. Ace&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;], img: &amp;quot;/images/4/40/Card-ace.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Donquixte Doflamingo&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/8/8d/Card-doflamingo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Borsalino Kizaru&amp;quot;, wanteds: [&amp;quot;capone&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/3/32/Card-kizaru.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Trafalgar Law&amp;quot;, wanteds: [&amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/b/b9/Card-law.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Carrot&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/8/8d/Card-carrot.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Nami (TS)&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/3/35/Card-namits.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Nami&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/0/08/Card-nami.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Nico Robin&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/3/3f/Card-robin.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Nico Robin (TS)&amp;quot;, wanteds: [&amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/b/b0/Card-robints.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bartolomeo&amp;quot;, wanteds: [&amp;quot;urouge&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/a/a9/Card-barto.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Marshall D. Teach&amp;quot;, wanteds: [&amp;quot;bonney&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/f/ff/Card-kurohige.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Crocodile&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/5/5d/Card-crocodile.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bartolomew Kuma&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;, &amp;quot;bellamy&amp;quot;], img: &amp;quot;/images/b/b5/Card-kuma.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Basil Hawkins&amp;quot;, wanteds: [&amp;quot;luffy&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/8/89/Card-hawkins.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Mohji&amp;quot;, wanteds: [&amp;quot;alvida&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;van augur&amp;quot;], img: &amp;quot;/images/5/58/Card-mohji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Leo &amp;amp; Mansherry&amp;quot;, wanteds: [&amp;quot;alvida&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;mohji&amp;quot;], img: &amp;quot;/images/d/d9/Card-leo.png&amp;quot; },&lt;br /&gt;
    ];&lt;br /&gt;
&lt;br /&gt;
    function filterAndAppend(array, value, id) {&lt;br /&gt;
        whoDo = array.filter(&lt;br /&gt;
            function (v) {&lt;br /&gt;
                return v.wanteds.includes(value);&lt;br /&gt;
            }&lt;br /&gt;
        );&lt;br /&gt;
&lt;br /&gt;
        $.each(whoDo, function (key, item) {&lt;br /&gt;
            $(&amp;quot;.wantedPortraits#&amp;quot; + id).append(&lt;br /&gt;
                &amp;quot;&amp;lt;div class='wantedPortrait' &amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;img src='&amp;quot; + item.img + &amp;quot;' alt='imagem de &amp;quot; + item.name + &amp;quot;' /&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
            );&lt;br /&gt;
        })&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;#selectbox-wanted&amp;quot;).on(&amp;quot;input&amp;quot;, function () {&lt;br /&gt;
        const value = $(this).val();&lt;br /&gt;
&lt;br /&gt;
        if ($(&amp;quot;.wantedPortrait&amp;quot;))&lt;br /&gt;
            $(&amp;quot;.wantedPortrait&amp;quot;).remove();&lt;br /&gt;
&lt;br /&gt;
        filterAndAppend(wanted_shooters, value, &amp;quot;wanted-shooter&amp;quot;);&lt;br /&gt;
        filterAndAppend(wanted_slashers, value, &amp;quot;wanted-slasher&amp;quot;);&lt;br /&gt;
        filterAndAppend(wanted_fighters, value, &amp;quot;wanted-fighter&amp;quot;);&lt;br /&gt;
        filterAndAppend(wanted_especialists, value, &amp;quot;wanted-especialist&amp;quot;);&lt;br /&gt;
    });&lt;br /&gt;
    //------- WANTED ---------&lt;br /&gt;
&lt;br /&gt;
    //------- SKILL TAB ---------&lt;br /&gt;
    $('.tab-skill').on('click', function () {&lt;br /&gt;
        $('.tab-skill.active').removeClass('active');&lt;br /&gt;
        $(this).addClass('active');&lt;br /&gt;
        const skillId = $(this).data('skill-id');&lt;br /&gt;
        if ($(&amp;quot;.skillInfo[data-skill-id=&amp;quot; + skillId + &amp;quot;]&amp;quot;)) {&lt;br /&gt;
            $(&amp;quot;.skillInfo.active&amp;quot;).removeClass('active');&lt;br /&gt;
            $(&amp;quot;.skillInfo[data-skill-id=&amp;quot; + skillId + &amp;quot;]&amp;quot;).addClass('active');&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
    //------- SKILL TAB ---------&lt;br /&gt;
&lt;br /&gt;
    //------- CALCULATOR XP ---------&lt;br /&gt;
    const maximum_level = 110;&lt;br /&gt;
    const tier_values = {&lt;br /&gt;
        &amp;quot;diamond&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;gold&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;silver&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;bronze&amp;quot;: 3&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;.calcXp--tierIcon&amp;quot;).on(&amp;quot;click&amp;quot;, function () {&lt;br /&gt;
        $(&amp;quot;.calcXp--tierIcon.active&amp;quot;).removeClass('active');&lt;br /&gt;
        $(this).addClass('active');&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;#calculate-btn&amp;quot;).on('click', function () {&lt;br /&gt;
        getNeededPotions();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    function calcMissingXpInPotions() {&lt;br /&gt;
        const currentPercentOfXp = $(&amp;quot;#char-currentPercentOfXp&amp;quot;).val() != &amp;quot;&amp;quot; ? $(&amp;quot;#char-currentPercentOfXp&amp;quot;).val() : 100;&lt;br /&gt;
        const currentLevel = $(&amp;quot;#char-level&amp;quot;).val() != &amp;quot;&amp;quot; ? $(&amp;quot;#char-level&amp;quot;).val() : 1;&lt;br /&gt;
        const levelToUp = $(&amp;quot;#char-levelToUp&amp;quot;).val() != &amp;quot;&amp;quot; ? $(&amp;quot;#char-levelToUp&amp;quot;).val() : 110;&lt;br /&gt;
        const charTier = $(&amp;quot;.calcXp--tierIcon.active&amp;quot;).length != 0 ? tier_values[$(&amp;quot;.calcXp--tierIcon.active&amp;quot;).attr('id')] : tier_values[&amp;quot;gold&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
        const percentToUp = 100 - currentPercentOfXp;&lt;br /&gt;
        const currentXp = ((50 * (Math.pow((currentLevel - 1), 3)) - 150 * (Math.pow((currentLevel - 1), 2)) + 400 * (currentLevel - 1)) / 3) + ((50 * Math.pow(currentLevel, 2) - 150 * currentLevel + 200) * percentToUp / 100);&lt;br /&gt;
        const desiredXp = (50 * (Math.pow((levelToUp - 1), 3)) - 150 * (Math.pow((levelToUp - 1), 2)) + 400 * (levelToUp - 1)) / 3;&lt;br /&gt;
        const missingXp = Math.round((desiredXp - currentXp));&lt;br /&gt;
&lt;br /&gt;
        const missingPotions = {&lt;br /&gt;
            &amp;quot;small&amp;quot;: Math.ceil((missingXp / (1000 * charTier))),&lt;br /&gt;
            &amp;quot;medium&amp;quot;: (missingXp / (10000 * charTier)).toFixed(1),&lt;br /&gt;
            &amp;quot;big&amp;quot;: (missingXp / (100000 * charTier)).toFixed(2)&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        return missingPotions;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function calcPotions() {&lt;br /&gt;
        const missingPotions = calcMissingXpInPotions();&lt;br /&gt;
&lt;br /&gt;
        var complementaryPotS;&lt;br /&gt;
        var complementaryPotM;&lt;br /&gt;
        potS = missingPotions['small'];&lt;br /&gt;
        potM = missingPotions['medium'];&lt;br /&gt;
        potB = missingPotions['big'];&lt;br /&gt;
&lt;br /&gt;
        if (String(potS).slice(-1) == &amp;quot;0&amp;quot;) {&lt;br /&gt;
            potM = Math.ceil(parseFloat(potM));&lt;br /&gt;
        } else {&lt;br /&gt;
            potM = Math.floor(potM);&lt;br /&gt;
            complementaryPotS = potS - potM * 10;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (String(potM).slice(-1) == &amp;quot;0&amp;quot;) {&lt;br /&gt;
            potM = Math.ceil((parseFloat(potM)));&lt;br /&gt;
            potB = Math.floor(potB);&lt;br /&gt;
        }&lt;br /&gt;
        else {&lt;br /&gt;
            potB = Math.floor(potB)&lt;br /&gt;
            complementaryPotM = potM - potB * 10&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        const potions = {&lt;br /&gt;
            &amp;quot;small&amp;quot;: complementaryPotS,&lt;br /&gt;
            &amp;quot;medium&amp;quot;: complementaryPotM,&lt;br /&gt;
            &amp;quot;big&amp;quot;: potB&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return potions;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function getNeededPotions() {&lt;br /&gt;
        const potions = calcPotions();&lt;br /&gt;
        const resultsArea = $(&amp;quot;#calc-result&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        resultsArea.html('');&lt;br /&gt;
&lt;br /&gt;
        if (potions[&amp;quot;big&amp;quot;]) {&lt;br /&gt;
            resultsArea.append(&lt;br /&gt;
                &amp;quot;&amp;lt;div class='badge'&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;img src='/images/a/a5/Bigexppot.png' class='calcXp--xpIcon' /&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;span class='calcXp--numberOfPots'&amp;gt;&amp;quot; + potions['big'] + &amp;quot;&amp;lt;/span&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
            );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        if (potions[&amp;quot;medium&amp;quot;]) {&lt;br /&gt;
            resultsArea.append(&lt;br /&gt;
                &amp;quot;&amp;lt;div class='badge'&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;img src='/images/d/df/Medexppot.png' class='calcXp--xpIcon' /&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;span class='calcXp--numberOfPots'&amp;gt;&amp;quot; + potions['medium'] + &amp;quot;&amp;lt;/span&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
            );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        if (potions[&amp;quot;small&amp;quot;]) {&lt;br /&gt;
            resultsArea.append(&lt;br /&gt;
                &amp;quot;&amp;lt;div class='badge'&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;img src='/images/5/5a/Smallexppot.png' class='calcXp--xpIcon' /&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;span class='calcXp--numberOfPots'&amp;gt;&amp;quot; + potions['small'] + &amp;quot;&amp;lt;/span&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
            );&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    //------- CALCULATOR XP ---------&lt;br /&gt;
&lt;br /&gt;
    //------- VIDEO SELECTOR ---------&lt;br /&gt;
    $(&amp;quot;.video-selector&amp;quot;).on(&amp;quot;click&amp;quot;, function () {&lt;br /&gt;
        $(&amp;quot;.video-selector.active&amp;quot;).removeClass(&amp;quot;active&amp;quot;);&lt;br /&gt;
        $(this).addClass(&amp;quot;active&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        const value = $(this).data(&amp;quot;value&amp;quot;);&lt;br /&gt;
        const obj = eval('(' + value + ')');&lt;br /&gt;
        $(&amp;quot;video[data-type-&amp;quot; + obj.select + &amp;quot;].active&amp;quot;).removeClass('active');&lt;br /&gt;
        const index = obj.showId - 1;&lt;br /&gt;
        $(&amp;quot;video[data-type-&amp;quot; + obj.select + &amp;quot;]&amp;quot;).eq(index).addClass('active');&lt;br /&gt;
    });&lt;br /&gt;
    //------- VIDEO SELECTOR ---------&lt;br /&gt;
    //-------- gurren&lt;br /&gt;
    $(document).ready(function () {&lt;br /&gt;
        // Alternar entre mostrar e ocultar abas ao clicar&lt;br /&gt;
        $('.mostrar-aba').click(function () {&lt;br /&gt;
            var aba_id = $(this).attr('data-aba');&lt;br /&gt;
            var aba_selecionada = $(&amp;quot;#aba-&amp;quot; + aba_id);&lt;br /&gt;
&lt;br /&gt;
            if (aba_selecionada.hasClass('atual')) {&lt;br /&gt;
                aba_selecionada.removeClass('atual'); // Oculta a aba se já estiver ativa&lt;br /&gt;
                $(this).removeClass('ativa'); // Remove a classe ativa do botão&lt;br /&gt;
            } else {&lt;br /&gt;
                $('.aba').removeClass('atual'); // Oculta todas as abas&lt;br /&gt;
                aba_selecionada.addClass('atual'); // Exibe a aba correspondente&lt;br /&gt;
                $('.mostrar-aba').removeClass('ativa'); // Remove a classe ativa de outros botões&lt;br /&gt;
                $(this).addClass('ativa'); // Adiciona a classe ativa ao botão clicado&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Exibir aba correspondente ao hash da URL&lt;br /&gt;
        var url = location.href;&lt;br /&gt;
        var hash = url.split('#')[1];&lt;br /&gt;
        if (hash != null &amp;amp;&amp;amp; hash.length &amp;gt; 0) {&lt;br /&gt;
            $(&amp;quot;#aba-&amp;quot; + hash).addClass('atual'); // Exibe a aba do hash&lt;br /&gt;
            $('*[data-aba=&amp;quot;' + hash + '&amp;quot;]').addClass('ativa'); // Ativa o botão correspondente&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//------- 2222222222222222222222222222222222222222222222222222222222222222222222 ---------&lt;br /&gt;
/*&lt;br /&gt;
(function () {&lt;br /&gt;
    'use strict';&lt;br /&gt;
&lt;br /&gt;
    var STORAGE_KEY = 'gla-wiki-theme';&lt;br /&gt;
    var DARK_CLASS = 'gla-dark-mode';&lt;br /&gt;
    var BUTTON_ID = 'gla-darkmode-toggle';&lt;br /&gt;
&lt;br /&gt;
    function getSavedTheme() {&lt;br /&gt;
        try {&lt;br /&gt;
            return localStorage.getItem(STORAGE_KEY);&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function saveTheme(theme) {&lt;br /&gt;
        try {&lt;br /&gt;
            localStorage.setItem(STORAGE_KEY, theme);&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            // Ignora caso o navegador bloqueie localStorage&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function isDarkMode() {&lt;br /&gt;
        return document.documentElement.classList.contains(DARK_CLASS);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function applyTheme(theme) {&lt;br /&gt;
        var dark = theme === 'dark';&lt;br /&gt;
&lt;br /&gt;
        document.documentElement.classList.toggle(DARK_CLASS, dark);&lt;br /&gt;
&lt;br /&gt;
        if (document.body) {&lt;br /&gt;
            document.body.classList.toggle(DARK_CLASS, dark);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        updateButton();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function updateButton() {&lt;br /&gt;
        var button = document.getElementById(BUTTON_ID);&lt;br /&gt;
&lt;br /&gt;
        if (!button) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var dark = isDarkMode();&lt;br /&gt;
&lt;br /&gt;
        button.setAttribute('aria-pressed', dark ? 'true' : 'false');&lt;br /&gt;
        button.setAttribute('title', dark ? 'Alternar para modo claro' : 'Alternar para modo escuro');&lt;br /&gt;
&lt;br /&gt;
        button.innerHTML = dark&lt;br /&gt;
            ? '&amp;lt;span class=&amp;quot;gla-darkmode-icon&amp;quot;&amp;gt;☀&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gla-darkmode-text&amp;quot;&amp;gt;Modo claro&amp;lt;/span&amp;gt;'&lt;br /&gt;
            : '&amp;lt;span class=&amp;quot;gla-darkmode-icon&amp;quot;&amp;gt;☾&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gla-darkmode-text&amp;quot;&amp;gt;Modo escuro&amp;lt;/span&amp;gt;';&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function createButton() {&lt;br /&gt;
        if (document.getElementById(BUTTON_ID)) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var button = document.createElement('button');&lt;br /&gt;
&lt;br /&gt;
        button.id = BUTTON_ID;&lt;br /&gt;
        button.type = 'button';&lt;br /&gt;
        button.className = 'gla-darkmode-button';&lt;br /&gt;
        button.setAttribute('aria-label', 'Alternar modo escuro');&lt;br /&gt;
        button.setAttribute('aria-pressed', isDarkMode() ? 'true' : 'false');&lt;br /&gt;
&lt;br /&gt;
        button.addEventListener('click', function () {&lt;br /&gt;
            var nextTheme = isDarkMode() ? 'light' : 'dark';&lt;br /&gt;
&lt;br /&gt;
            saveTheme(nextTheme);&lt;br /&gt;
            applyTheme(nextTheme);&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        document.body.appendChild(button);&lt;br /&gt;
        updateButton();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function ready(fn) {&lt;br /&gt;
        if (document.readyState === 'loading') {&lt;br /&gt;
            document.addEventListener('DOMContentLoaded', fn);&lt;br /&gt;
        } else {&lt;br /&gt;
            fn();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    var savedTheme = getSavedTheme();&lt;br /&gt;
&lt;br /&gt;
    if (savedTheme === 'dark') {&lt;br /&gt;
        document.documentElement.classList.add(DARK_CLASS);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ready(function () {&lt;br /&gt;
        if (savedTheme === 'dark') {&lt;br /&gt;
            document.body.classList.add(DARK_CLASS);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        createButton();&lt;br /&gt;
        updateButton();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
*/&lt;br /&gt;
/**&lt;br /&gt;
* Script JavaScript para o componente de abas MediaWiki&lt;br /&gt;
* Adicione este script na sua MediaWiki (Common.js ou página de scripts)&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
(function () {&lt;br /&gt;
    'use strict';&lt;br /&gt;
&lt;br /&gt;
    // Inicializa todos os componentes de abas na página&lt;br /&gt;
    function initTabbers() {&lt;br /&gt;
        const tabbers = document.querySelectorAll('[data-tabber]');&lt;br /&gt;
&lt;br /&gt;
        tabbers.forEach(function (tabber) {&lt;br /&gt;
            const tabs = tabber.querySelectorAll('.mw-tabber-tab');&lt;br /&gt;
            const panels = tabber.querySelectorAll('.mw-tabber-panel');&lt;br /&gt;
&lt;br /&gt;
            tabs.forEach(function (tab) {&lt;br /&gt;
                tab.addEventListener('click', function () {&lt;br /&gt;
                    const targetTab = this.getAttribute('data-tab');&lt;br /&gt;
&lt;br /&gt;
                    // Remove classe active de todas as abas&lt;br /&gt;
                    tabs.forEach(function (t) {&lt;br /&gt;
                        t.classList.remove('active');&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    // Remove classe active de todos os painéis&lt;br /&gt;
                    panels.forEach(function (p) {&lt;br /&gt;
                        p.classList.remove('active');&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    // Adiciona classe active na aba clicada&lt;br /&gt;
                    this.classList.add('active');&lt;br /&gt;
&lt;br /&gt;
                    // Adiciona classe active no painel correspondente&lt;br /&gt;
                    const targetPanel = tabber.querySelector('[data-panel=&amp;quot;' + targetTab + '&amp;quot;]');&lt;br /&gt;
                    if (targetPanel) {&lt;br /&gt;
                        targetPanel.classList.add('active');&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Inicializa quando o DOM estiver pronto&lt;br /&gt;
    if (document.readyState === 'loading') {&lt;br /&gt;
        document.addEventListener('DOMContentLoaded', initTabbers);&lt;br /&gt;
    } else {&lt;br /&gt;
        initTabbers();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Suporte para MediaWiki (quando o conteúdo é carregado dinamicamente)&lt;br /&gt;
    if (typeof mw !== 'undefined' &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        mw.hook('wikipage.content').add(function () {&lt;br /&gt;
            initTabbers();&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=MediaWiki:Common.css&amp;diff=46639</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=MediaWiki:Common.css&amp;diff=46639"/>
		<updated>2026-05-02T02:15:21Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;@import url('https://fonts.googleapis.com/css2?family=Noto+Sans:wght@400;600;700&amp;amp;display=swap');&lt;br /&gt;
&lt;br /&gt;
/* body::before {&lt;br /&gt;
	content: '';&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	height: 100vh;&lt;br /&gt;
	background: url('https://wiki.gla.com.br/images/b/b3/Testefundo.png') no-repeat;&lt;br /&gt;
	filter: brightness(0.6);&lt;br /&gt;
  &lt;br /&gt;
	background-attachment: fixed;&lt;br /&gt;
	background-position: center;&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	background-size: cover;&lt;br /&gt;
	z-index: -1;&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
/* === FONTE PADRÃO === */&lt;br /&gt;
body,&lt;br /&gt;
.mw-parser-output,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
h1,&lt;br /&gt;
h2,&lt;br /&gt;
h3,&lt;br /&gt;
h4,&lt;br /&gt;
h5,&lt;br /&gt;
h6,&lt;br /&gt;
p,&lt;br /&gt;
ul,&lt;br /&gt;
ol,&lt;br /&gt;
li,&lt;br /&gt;
table,&lt;br /&gt;
td,&lt;br /&gt;
th,&lt;br /&gt;
caption {&lt;br /&gt;
    font-family: 'Noto Sans', sans-serif !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === LEGENDAS DE IMAGEM === */&lt;br /&gt;
.thumbcaption {&lt;br /&gt;
    font-size: 1.1em !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    line-height: 1.4;&lt;br /&gt;
    font-weight: 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === TABELAS ENHANCE === */&lt;br /&gt;
table.table-enhance {&lt;br /&gt;
    max-width: 600px;&lt;br /&gt;
    margin: 1em auto;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
    background-color: #fff;&lt;br /&gt;
    border: 1px solid #ccc;&lt;br /&gt;
    font-size: 13px;&lt;br /&gt;
    font-family: 'Segoe UI', 'Helvetica Neue', sans-serif;&lt;br /&gt;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.table-enhance th,&lt;br /&gt;
.table-enhance td {&lt;br /&gt;
    border: 1px solid #e0e0e0;&lt;br /&gt;
    padding: 6px 10px;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.table-enhance th {&lt;br /&gt;
    background-color: #f5f5f5;&lt;br /&gt;
    font-weight: 600;&lt;br /&gt;
    color: #333;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.table-enhance tr:nth-child(even) td {&lt;br /&gt;
    background-color: #fafafa;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.table-enhance tr:hover td {&lt;br /&gt;
    background-color: #f0f8ff;&lt;br /&gt;
    transition: background-color 0.2s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.table-enhance-vertical td:first-child {&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #2c3e50;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === AJUSTES NA SIDEBAR === */&lt;br /&gt;
#p-logo {&lt;br /&gt;
    background-color: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel .mw-portlet.portal .vector-menu-content-list&amp;gt;li&amp;gt;a {&lt;br /&gt;
    font-size: 0.80rem !important;&lt;br /&gt;
    font-family: 'Noto Sans', sans-serif !important;&lt;br /&gt;
    font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* === REMOÇÃO DE BORDAS EM TÍTULOS === */&lt;br /&gt;
.mw-headline {&lt;br /&gt;
    border-bottom: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
h1,&lt;br /&gt;
h2,&lt;br /&gt;
h3,&lt;br /&gt;
h4,&lt;br /&gt;
h5,&lt;br /&gt;
h6 {&lt;br /&gt;
    border-bottom: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.video-responsivo {&lt;br /&gt;
    max-width: 600px;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    background: black;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.video-responsivo video {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    vertical-align: bottom;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#contentSub,&lt;br /&gt;
#contentSub2 {&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
    padding: 0 !important;&lt;br /&gt;
    display: none;&lt;br /&gt;
    /* opcional: se quiser sumir com tudo */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Discord */&lt;br /&gt;
#n-Discord {&lt;br /&gt;
    font-size: 10px;&lt;br /&gt;
    line-height: 1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-Discord-label {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#n-Discord a {&lt;br /&gt;
    color: #fff !important;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    border-radius: 4px;&lt;br /&gt;
    border: 1px solid #4c57d0;&lt;br /&gt;
    background-color: #5865f2;&lt;br /&gt;
    display: block;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    padding: 4px 4px 3px calc(14px + 6.5px * 2);&lt;br /&gt;
    box-shadow: 0 2px 3px rgba(0, 0, 0, 0.1);&lt;br /&gt;
    transition: 0.2s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#n-Discord a::before {&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
    margin-left: 1.25em&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#n-Discord a::after {&lt;br /&gt;
    content: '';&lt;br /&gt;
    background: url(/images/7/76/Discord-brands.png) no-repeat;&lt;br /&gt;
    background-size: contain;&lt;br /&gt;
    background-position: center;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
    filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.1));&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 2px;&lt;br /&gt;
    left: 4px;&lt;br /&gt;
    width: 20px;&lt;br /&gt;
    height: 20px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#n-Discord a:hover {&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    background-color: #7885ff;&lt;br /&gt;
    border-color: #6c77f0;&lt;br /&gt;
    transition: .3s&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* css atual */&lt;br /&gt;
/* ESTILIZAÇÃO PADRÃO */&lt;br /&gt;
&lt;br /&gt;
.thumb .thumbcaption .magnify:first-child {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html {&lt;br /&gt;
    scroll-behavior: auto;&lt;br /&gt;
    /*smooth*/&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.dark-mode:root {&lt;br /&gt;
    --content-bg: #fcfcfc;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:root {&lt;br /&gt;
    --content-bg: #fcfcfc;&lt;br /&gt;
    --content-text: #000;&lt;br /&gt;
    --simpleSearch-bg: #fff;&lt;br /&gt;
    --searchInput-text: #aaaaaa;&lt;br /&gt;
    --link-text: #0645ad;&lt;br /&gt;
    --lightGray: rgba(240, 240, 240);&lt;br /&gt;
    --gray: rgb(190, 190, 190);&lt;br /&gt;
    --transparent-blue: #338be58c;&lt;br /&gt;
    --blue: #338be5;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.dark-mode:root {&lt;br /&gt;
    --content-bg: #fcfcfc;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:visited,&lt;br /&gt;
a {&lt;br /&gt;
    color: var(--link-text) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
body {&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
body {&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
body::before {&lt;br /&gt;
	content: '';&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	height: 100vh;&lt;br /&gt;
	background: url('https://wiki.gla.com.br/images/3/35/Fundodawikiglatest.png') no-repeat;&lt;br /&gt;
	filter: brightness(0.8);&lt;br /&gt;
  &lt;br /&gt;
	background-attachment: fixed;&lt;br /&gt;
	background-position: center;&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	background-size: cover;&lt;br /&gt;
	z-index: -1;&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
body {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    background-image: url(/images/3/31/Cinza_capriw.png);&lt;br /&gt;
    background-repeat: repeat;&lt;br /&gt;
    background-attachment: fixed;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
  h1,&lt;br /&gt;
  h2 {&lt;br /&gt;
      margin-bottom: 0.6em;&lt;br /&gt;
      border-bottom: 0px !important;&lt;br /&gt;
  }&lt;br /&gt;
  */&lt;br /&gt;
#firstHeading {&lt;br /&gt;
    border-bottom: 0px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch {&lt;br /&gt;
    background-color: var(--simpleSearch-bg) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-personal {&lt;br /&gt;
    right: 1em;&lt;br /&gt;
    top: .5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-search {&lt;br /&gt;
    float: left;&lt;br /&gt;
    margin-left: -0.1em;&lt;br /&gt;
    margin-right: 1em;&lt;br /&gt;
    margin-top: -0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#searchInput {&lt;br /&gt;
    background-color: #231813;&lt;br /&gt;
    color: var(--searchInput-text);&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: 2.15384615em;&lt;br /&gt;
    border: 1px solid #524136;&lt;br /&gt;
    padding: 5px 2.15384615em 5px 0.4em;&lt;br /&gt;
    font-family: inherit;&lt;br /&gt;
    font-size: 0.8125em;&lt;br /&gt;
    direction: ltr;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-body {&lt;br /&gt;
    margin-top: -1px;&lt;br /&gt;
    border: 2px solid #5c3f2b !important;&lt;br /&gt;
    border-right-width: 2px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Force lining numbers in headers (for fonts like Georgia) */&lt;br /&gt;
h1,&lt;br /&gt;
h2,&lt;br /&gt;
.firstHeading {&lt;br /&gt;
    -moz-font-feature-settings: &amp;quot;lnum&amp;quot;;&lt;br /&gt;
    -webkit-font-feature-settings: &amp;quot;lnum&amp;quot;;&lt;br /&gt;
    font-feature-settings: &amp;quot;lnum&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Consistent size for sub/sup */&lt;br /&gt;
.mw-body sub,&lt;br /&gt;
.mw-body sup,&lt;br /&gt;
span.reference&lt;br /&gt;
&lt;br /&gt;
/* for Parsoid */&lt;br /&gt;
    {&lt;br /&gt;
    font-size: 80%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Hide confusing &amp;quot;Discussion&amp;quot; tab on [[Project:Support_desk]],&lt;br /&gt;
       * For sanity, only do this if [[Project_talk:Support_desk]] is a&lt;br /&gt;
       * redirect (which goes back to [[Project:Support_desk]]).&lt;br /&gt;
       * If that is changed for some reason, it automatically comes back.&lt;br /&gt;
       */&lt;br /&gt;
.page-Project_Support_desk #ca-talk a.mw-redirect {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* CSS Hover Gallery for Mediawiki */&lt;br /&gt;
&lt;br /&gt;
.gallery_zoom_img img {&lt;br /&gt;
    -moz-transition: -moz-transform 0.1s ease-in;&lt;br /&gt;
    -webkit-transition: -webkit-transform 0.1s ease-in;&lt;br /&gt;
    -o-transition: -o-transform 0.1s ease-in;&lt;br /&gt;
    transition: transform 0.1 ease-in;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery_zoom_img img:hover {&lt;br /&gt;
    -moz-transform: scale(2);&lt;br /&gt;
    -webkit-transform: scale(2);&lt;br /&gt;
    -o-transform: scale(2);&lt;br /&gt;
    transform: scale(2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*--------------------------------------------------&lt;br /&gt;
      CSS CUSTOMIZADO&lt;br /&gt;
      --------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
/*--------------------------------------------------&lt;br /&gt;
      Vector &lt;br /&gt;
      --------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
.vector-menu-tabs li {&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*--------------------------------------------------&lt;br /&gt;
      Tabber &lt;br /&gt;
      --------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
.center-tab .tabber__header {&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*--------------------------------------------------&lt;br /&gt;
      Tags de uso generalizado&lt;br /&gt;
      --------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
.mt-1 {&lt;br /&gt;
    margin-top: .75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mt-2 {&lt;br /&gt;
    margin-top: 1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mt-4 {&lt;br /&gt;
    margin-top: 3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mt--4 {&lt;br /&gt;
    margin-top: -2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mb-2 {&lt;br /&gt;
    margin-bottom: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.d-flex,&lt;br /&gt;
.td-flex td {&lt;br /&gt;
    display: flex;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.d-block {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.relative {&lt;br /&gt;
    position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.text-justify {&lt;br /&gt;
    text-align: justify;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.align-center {&lt;br /&gt;
    align-items: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.align-top {&lt;br /&gt;
    align-items: flex-start;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.justify-between {&lt;br /&gt;
    justify-content: space-between;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.justify-center {&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.border-none {&lt;br /&gt;
    border: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.w-25 {&lt;br /&gt;
    width: 25%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.h-100 {&lt;br /&gt;
    height: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.flex-wrap {&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.section-title {&lt;br /&gt;
    display: block;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    background: linear-gradient(to bottom, #459cca, #5684c8);&lt;br /&gt;
    width: fit-content;&lt;br /&gt;
    color: white;&lt;br /&gt;
    padding: .25em 5em;&lt;br /&gt;
    letter-spacing: 1px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.badge {&lt;br /&gt;
    padding: .25em .57em;&lt;br /&gt;
    margin: .45em;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    color: white;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-transform: capitalize;&lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
    max-height: 1.5em;&lt;br /&gt;
    font-size: .9em;&lt;br /&gt;
    letter-spacing: 1px;&lt;br /&gt;
    box-shadow: rgb(3 102 214 / 30%) 0px 0px 0px 3px;&lt;br /&gt;
    background: linear-gradient(to bottom, #459cca, #5684c8);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.card {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    min-height: 14em;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    box-shadow: rgb(0 0 0 / 9%) 0px 3px 12px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.card-title {&lt;br /&gt;
    display: block;&lt;br /&gt;
    padding: .25em 0;&lt;br /&gt;
    margin-bottom: 1em;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    border-radius: 10px 10px 0 0;&lt;br /&gt;
    background: linear-gradient(to bottom, #459cca, #5684c8);&lt;br /&gt;
&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    letter-spacing: 1px;&lt;br /&gt;
    color: white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.scaleUp-hover {&lt;br /&gt;
    transition: all .25s ease;&lt;br /&gt;
    image-rendering: auto;&lt;br /&gt;
    /* ou crisp-edges */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.scaleUp-hover:hover {&lt;br /&gt;
    transform: scale(1.1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*--------------------------------------------------&lt;br /&gt;
      Tooltip &lt;br /&gt;
      --------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
.simple-tooltip-inline {&lt;br /&gt;
    border: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tooltipster-default {&lt;br /&gt;
    background-color: rgb(220, 220, 220);&lt;br /&gt;
    color: black !important;&lt;br /&gt;
    box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tooltipster-arrow {&lt;br /&gt;
    borde-color: rgb(220, 220, 220) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#bigImage {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    transform: translate(0, -100%);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**********************************&lt;br /&gt;
          Widget:GlobalEventTimer&lt;br /&gt;
          **********************************/&lt;br /&gt;
.global-event-widget {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    width: 320px;&lt;br /&gt;
    height: 90px;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.global-event-image {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    object-fit: cover;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#global-event-time {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    bottom: 3%;&lt;br /&gt;
    left: 3px;&lt;br /&gt;
    padding: 2px 5px;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);&lt;br /&gt;
    background: linear-gradient(to right, rgba(25, 25, 25, 0.85), rgba(0, 0, 0, 0));&lt;br /&gt;
    border-top-right-radius: 4px;&lt;br /&gt;
    border-bottom-right-radius: 4px;&lt;br /&gt;
    max-width: fit-content;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**********************************&lt;br /&gt;
      WIDGET: PAGEVIDEO&lt;br /&gt;
      **********************************/&lt;br /&gt;
.pagevideo-wrapper {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    align-items: flex-start;&lt;br /&gt;
    margin: 20px auto;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.pagevideo {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    max-width: 800px;&lt;br /&gt;
    height: auto;&lt;br /&gt;
    border: 1px solid #ccc;&lt;br /&gt;
    border-radius: 5px;&lt;br /&gt;
    background-color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width: 768px) {&lt;br /&gt;
    .pagevideo {&lt;br /&gt;
        max-width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**********************************&lt;br /&gt;
      MEDIAWIKI: SIMBOLO DE LINKS EXTERNOS&lt;br /&gt;
      **********************************/&lt;br /&gt;
.mw-parser-output .external {&lt;br /&gt;
    background-image: none !important;&lt;br /&gt;
    padding-right: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**********************************&lt;br /&gt;
      PREDEFINIÇÃO: Titulo&lt;br /&gt;
      #firstHeading {&lt;br /&gt;
      display: none;&lt;br /&gt;
  }&lt;br /&gt;
      **********************************/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#custom-title {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#custom-title img {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*--------------------------------------------------&lt;br /&gt;
      Pagina Inicial&lt;br /&gt;
      --------------------------------------------------*/&lt;br /&gt;
.initialPage--table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--table&amp;gt;tbody&amp;gt;tr&amp;gt;th,&lt;br /&gt;
.initialPage--table&amp;gt;tbody&amp;gt;tr&amp;gt;td {&lt;br /&gt;
    background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--title,&lt;br /&gt;
.initialPage--events {&lt;br /&gt;
    border: none;&lt;br /&gt;
    border-collapse: separate;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--events th,&lt;br /&gt;
.initialPage--title th {&lt;br /&gt;
    color: black !important;&lt;br /&gt;
    padding: .4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--title th {&lt;br /&gt;
    background-color: transparent !important;&lt;br /&gt;
    font-size: 2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--events {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    height: 20em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--eventsLogo {&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    padding: .5em 3.5em 2em 0;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--events td {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    justify-content: flex-end;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--mainContainer {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: flex-start;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--menuContainer {&lt;br /&gt;
    width: 75%;&lt;br /&gt;
    margin-right: 1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--sideMenuContainer {&lt;br /&gt;
    width: 25%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--menuTitle {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    font-size: 1.75em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
&lt;br /&gt;
    background: linear-gradient(to bottom, #459cca, #5684c8);&lt;br /&gt;
    border-radius: 10px 10px 0 0;&lt;br /&gt;
    color: white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--menu {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--menuItemContainer {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
&lt;br /&gt;
    padding: 1em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--menuItem {&lt;br /&gt;
    width: 22.5%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--menuItem a img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMediaContainer {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin-top: 8em;&lt;br /&gt;
    padding: 0 1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    border-top: 2px solid #689cc0;&lt;br /&gt;
    margin-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia:before {&lt;br /&gt;
    content: '';&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: -2px;&lt;br /&gt;
    display: block;&lt;br /&gt;
    width: 0;&lt;br /&gt;
    height: 2px;&lt;br /&gt;
    z-index: 1;&lt;br /&gt;
    transition: width .25s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia:hover::before {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMediaLink {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: space-between;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
&lt;br /&gt;
    font-size: 1.35em;&lt;br /&gt;
    font-weight: 600;&lt;br /&gt;
    letter-spacing: .03em;&lt;br /&gt;
    color: #689cc0 !important;&lt;br /&gt;
&lt;br /&gt;
    padding: .9em .5em;&lt;br /&gt;
    transition: color .25s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMediaLink:visited {&lt;br /&gt;
    color: #689cc0 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMediaLink:hover {&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.socialMedia--svg {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.socialMedia--svg svg {&lt;br /&gt;
    width: 2em;&lt;br /&gt;
    fill: #689cc0;&lt;br /&gt;
    transition: all .25s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.socialMedia--svg svg path {&lt;br /&gt;
    fill: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
      Discord&lt;br /&gt;
      */&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia.discord&amp;gt;.initialPage--socialMediaLink:hover {&lt;br /&gt;
    color: #5865f2 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia.discord:before {&lt;br /&gt;
    background: #5865f2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia.discord&amp;gt;.initialPage--socialMediaLink:hover&amp;gt;.socialMedia--svg svg {&lt;br /&gt;
    fill: #5865f2 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
      Instagram&lt;br /&gt;
      */&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia.instagram&amp;gt;.initialPage--socialMediaLink:hover {&lt;br /&gt;
    color: #f09433 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia.instagram:before {&lt;br /&gt;
    background: linear-gradient(45deg, #f09433 0%, #e6683c 25%, #dc2743 50%, #cc2366 75%, #bc1888 100%);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia.instagram&amp;gt;.initialPage--socialMediaLink:hover&amp;gt;.socialMedia--svg svg {&lt;br /&gt;
    fill: url(#gradient-vertical);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
      Facebook&lt;br /&gt;
      */&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia.facebook&amp;gt;.initialPage--socialMediaLink:hover {&lt;br /&gt;
    color: #4267B2 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia.facebook:before {&lt;br /&gt;
    background: #4267B2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.initialPage--socialMedia.facebook&amp;gt;.initialPage--socialMediaLink:hover&amp;gt;.socialMedia--svg svg {&lt;br /&gt;
    fill: #4267B2 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*--------------------------------------------------&lt;br /&gt;
      Ocultação de componentes&lt;br /&gt;
      --------------------------------------------------*/&lt;br /&gt;
&lt;br /&gt;
#p-navigation {&lt;br /&gt;
    background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
    background-color: transparent;&lt;br /&gt;
    width: auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-page-base {&lt;br /&gt;
    background: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-panel #p-tb h3 {&lt;br /&gt;
    color: rgb(0, 0, 0);&lt;br /&gt;
    font-size: .75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-tb {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* #ca-nstab-mediawiki { display: none; } */&lt;br /&gt;
/* #ca-talk { display: none; } */&lt;br /&gt;
#ca-view {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#ca-history {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#ca-viewsource {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* #ca-unwatch { display: none; } */&lt;br /&gt;
/* #p-cactions { display: none; } */&lt;br /&gt;
/*&lt;br /&gt;
      Pacientes&lt;br /&gt;
      */&lt;br /&gt;
&lt;br /&gt;
.table-pacients {&lt;br /&gt;
    display: block;&lt;br /&gt;
    max-width: 1400px;&lt;br /&gt;
    overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.table-pacients img {&lt;br /&gt;
    width: 15.715em;&lt;br /&gt;
    height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
      PERSONAGENS&lt;br /&gt;
      */&lt;br /&gt;
&lt;br /&gt;
.filter--containerSearch {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    padding: 0 2em;&lt;br /&gt;
    justify-content: flex-end;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--container {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    padding: 0 2em;&lt;br /&gt;
    justify-content: space-between;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter {&lt;br /&gt;
    width: fit-content;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    border: 3px solid #b0cff1;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--title {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    border-right: 3px solid #b0cff1;&lt;br /&gt;
    background: #4c91c9;&lt;br /&gt;
    padding: 0 1em;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    border-radius: 4px 0 0 4px;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    letter-spacing: .15em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon,&lt;br /&gt;
.calcXp--tierIcon {&lt;br /&gt;
    padding: .35em .95em;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon.tier img {&lt;br /&gt;
    filter: grayscale(.0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon.tier.active img {&lt;br /&gt;
    box-shadow: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon img {&lt;br /&gt;
    filter: grayscale(.8);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
&lt;br /&gt;
    transition: all .25s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.calcXp--tierIcon img {&lt;br /&gt;
    filter: drop-shadow(0px 1px 8px #4c91c900);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
&lt;br /&gt;
    transition: all .25s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon.active img {&lt;br /&gt;
    box-shadow: rgb(0 0 0 / 24%) 0px 2px 7px;&lt;br /&gt;
    filter: grayscale(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon.tier.active img,&lt;br /&gt;
.calcXp--tierIcon.active img {&lt;br /&gt;
    transform: scale(.85);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon.tier#bronze.active img,&lt;br /&gt;
.calcXp--tierIcon#bronze.active img {&lt;br /&gt;
    filter: drop-shadow(0px 1px 8px #f18a05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon.tier#silver.active img,&lt;br /&gt;
.calcXp--tierIcon#silver.active img {&lt;br /&gt;
    filter: drop-shadow(0px 1px 8px #8b8b8b);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon.tier#gold.active img,&lt;br /&gt;
.calcXp--tierIcon#gold.active img {&lt;br /&gt;
    filter: drop-shadow(0px 1px 8px #fbc300);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--icon.tier#diamond.active img,&lt;br /&gt;
.calcXp--tierIcon#diamond.active img {&lt;br /&gt;
    filter: drop-shadow(0px 1px 8px #0391c5);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--input {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    padding: .45em;&lt;br /&gt;
    padding-right: 2.5em;&lt;br /&gt;
    border: 3px solid #b0cff1;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    width: 23em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--inputContainer {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--searchButton {&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    border: 3px solid #b0cff1;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    width: 4.5em;&lt;br /&gt;
    height: -webkit-fill-available;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    border-radius: 0 8px 8px 0;&lt;br /&gt;
    background: #4c91c9;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.filter--searchButton img {&lt;br /&gt;
    filter: invert(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.calcXp--container {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    padding: 2.25em 1.25em;&lt;br /&gt;
    width: 43em;&lt;br /&gt;
    border: 3px solid #b0cff1;&lt;br /&gt;
    border-radius: 26px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.calcXp--resultTitle {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    color: #4f7ca0;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    margin-top: -.5em !important;&lt;br /&gt;
    letter-spacing: .05em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.calcXp--formItem {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.calcXp--formItem input {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    padding: .35em;&lt;br /&gt;
    border: 2px solid #b0cff1;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    letter-spacing: .05em;&lt;br /&gt;
    width: 4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.calcXp--formItem span {&lt;br /&gt;
    font-size: 1.225em;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    letter-spacing: .05em;&lt;br /&gt;
    margin-right: .5em;&lt;br /&gt;
    color: #386a93;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#calculate-btn {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    display: block;&lt;br /&gt;
    width: 15em;&lt;br /&gt;
    margin: 2em auto;&lt;br /&gt;
    padding: .45em 1em;&lt;br /&gt;
&lt;br /&gt;
    border: none;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    background: #4c91c9;&lt;br /&gt;
    box-shadow: rgb(0 0 0 / 24%) 0px 3px 8px;&lt;br /&gt;
    color: white;&lt;br /&gt;
&lt;br /&gt;
    font-size: 1.35em;&lt;br /&gt;
    text-transform: capitalize;&lt;br /&gt;
    letter-spacing: 0.05em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    transition: .35s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#calculate-btn:hover {&lt;br /&gt;
    color: #ffffff;&lt;br /&gt;
    box-shadow: rgb(0 0 0 / 8%) 0px 3px 8px;&lt;br /&gt;
    transform: scale(.95);&lt;br /&gt;
    background: #4685b8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#calc-result {&lt;br /&gt;
    margin-top: 1em;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#calc-result .badge {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    max-height: 5em;&lt;br /&gt;
    width: 5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.calcXp--xpIcon {&lt;br /&gt;
    margin-left: -.2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.calcXp--numberOfPots {&lt;br /&gt;
    padding-top: .2em;&lt;br /&gt;
    font-size: 1.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#characters-container {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    padding: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#characters-container&amp;gt;div {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 1em;&lt;br /&gt;
    width: 19%;&lt;br /&gt;
    margin-right: 1%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#characters-container&amp;gt;div.show {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#characters-container&amp;gt;div&amp;gt;a&amp;gt;img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    filter: grayscale(.3);&lt;br /&gt;
    transition: all .25s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#characters-container&amp;gt;div:hover&amp;gt;a&amp;gt;img {&lt;br /&gt;
    box-shadow: rgba(0, 0, 0, 0.16) 0px 3px 6px, rgba(0, 0, 0, 0.23) 0px 3px 6px;&lt;br /&gt;
    filter: grayscale(0);&lt;br /&gt;
    transform: scale(1.06);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterPage--splashArt {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: -2%;&lt;br /&gt;
    right: -2%;&lt;br /&gt;
    width: 35%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterPage--table {&lt;br /&gt;
    margin-top: -4em;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterPage--table&amp;gt;tbody {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: space-between;&lt;br /&gt;
    align-items: flex-end;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterPage--table&amp;gt;tbody&amp;gt;.characterPage--mainSection {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    justify-content: space-between;&lt;br /&gt;
    width: 65%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterPage--table&amp;gt;tbody&amp;gt;.characterPage--sideSection {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    width: 33%;&lt;br /&gt;
    padding: 0 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterPage--characterInfoContainer {&lt;br /&gt;
    width: 43%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterPage--statsInfoContainer {&lt;br /&gt;
    width: 55%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.stats--container {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    padding: 1.25em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.stats--container&amp;gt;div {&lt;br /&gt;
    width: 45%;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    margin: .5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.stats--container div img {&lt;br /&gt;
    width: 2.25em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.stats--bar {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    width: -webkit-fill-available;&lt;br /&gt;
    justify-content: space-between;&lt;br /&gt;
    padding: 0 1.25em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bar-filled:first-child,&lt;br /&gt;
.bar-notFilled:first-child {&lt;br /&gt;
    border-radius: 6px 0 0 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bar-filled:last-child,&lt;br /&gt;
.bar-notFilled:last-child {&lt;br /&gt;
    border-radius: 0 6px 6px 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bar-filled,&lt;br /&gt;
.bar-notFilled {&lt;br /&gt;
    display: block;&lt;br /&gt;
    width: 18%;&lt;br /&gt;
    height: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bar-filled {&lt;br /&gt;
    background: var(--blue);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bar-notFilled {&lt;br /&gt;
    background: var(--transparent-blue);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterInfo--name {&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterInfo--badgeContainer {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    width: fit-content;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterInfo--contentContainer {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: space-between;&lt;br /&gt;
    padding: .6em 1.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterInfo--imageContainer {&lt;br /&gt;
    width: 25%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterInfo--medal {&lt;br /&gt;
    margin-top: -1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.characterInfo--infoContainer {&lt;br /&gt;
    width: 75%;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterInfo--infoContainer #toc {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterPage--skins {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.characterPage--characterSkills {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
      Card de Skins&lt;br /&gt;
      */&lt;br /&gt;
&lt;br /&gt;
.skins--container {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: flex-start;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    padding: -0.75em 0.75em;&lt;br /&gt;
    gap: -0.5em;&lt;br /&gt;
    /* Adiciona espaçamento consistente entre os itens */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skins--container span {&lt;br /&gt;
    width: 33.3%;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skins--imageSkin {&lt;br /&gt;
    max-width: 100%;&lt;br /&gt;
    /* Limita o tamanho máximo da imagem */&lt;br /&gt;
    max-height: 100%;&lt;br /&gt;
    /* Limita o tamanho máximo da imagem */&lt;br /&gt;
    object-fit: contain;&lt;br /&gt;
    /* Garante que a imagem se ajusta proporcionalmente */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
      Seção das skills do personagem&lt;br /&gt;
      */&lt;br /&gt;
&lt;br /&gt;
.tabsContainer {&lt;br /&gt;
    width: 95%;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    padding-bottom: .5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabsContainer table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabsContainer table&amp;gt;tbody&amp;gt;tr&amp;gt;td {&lt;br /&gt;
    border-bottom: 2px solid rgb(225, 225, 225);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tabSkill--container {&lt;br /&gt;
    padding-bottom: .85em;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    max-width: 72em;&lt;br /&gt;
    overflow-x: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--description::-webkit-scrollbar,&lt;br /&gt;
.tabSkill--container::-webkit-scrollbar {&lt;br /&gt;
    width: 8px;&lt;br /&gt;
    height: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--description::-webkit-scrollbar-track,&lt;br /&gt;
.tabSkill--container::-webkit-scrollbar-track {&lt;br /&gt;
    background-color: #4799c954;&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--description::-webkit-scrollbar-thumb,&lt;br /&gt;
.tabSkill--container::-webkit-scrollbar-thumb {&lt;br /&gt;
    background-color: rgb(85 135 200 / 74%);&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tab-skill {&lt;br /&gt;
    transition: all .25s ease;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    min-width: 5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tab-skill.active {&lt;br /&gt;
    border-color: #459cca;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tab-skill&amp;gt;div {&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    padding: .25em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tab-skill&amp;gt;div&amp;gt;img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    max-width: 40px;&lt;br /&gt;
    height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--container {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--container&amp;gt;td {&lt;br /&gt;
    border: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo.active {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo.active {&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--videoContainer {&lt;br /&gt;
&lt;br /&gt;
    align-self: center;&lt;br /&gt;
    width: 45%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--skillVideo2 {&lt;br /&gt;
    display: none;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--skillVideo2.active {&lt;br /&gt;
    display: flex;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--videoSelector {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    width: 1.1em;&lt;br /&gt;
    height: 1.1em;&lt;br /&gt;
    border-radius: 50%;&lt;br /&gt;
    background: var(--transparent-blue);&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    margin-right: .85em;&lt;br /&gt;
&lt;br /&gt;
    transition: all .25s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--videoSelector.active {&lt;br /&gt;
    background: var(--blue);&lt;br /&gt;
    transform: scale(.8);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--infoContainer {&lt;br /&gt;
    width: 50%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo&amp;gt;div&amp;gt;.skillInfo--infoContainer b {&lt;br /&gt;
    color: #2a87c4 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--infoContainer&amp;gt;center&amp;gt;b {&lt;br /&gt;
    font-size: 1.15em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--name {&lt;br /&gt;
    font-size: 1.85em;&lt;br /&gt;
    letter-spacing: 1px;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--description {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    font-size: 1.03em;&lt;br /&gt;
    line-height: 1.5em;&lt;br /&gt;
    padding: 0 1em;&lt;br /&gt;
    height: 12em;&lt;br /&gt;
    max-height: 12em;&lt;br /&gt;
    overflow-y: auto;&lt;br /&gt;
    text-align: justify;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.skillInfo--attributesContainer&amp;gt;h1 {&lt;br /&gt;
    color: #717171;&lt;br /&gt;
    font-size: 1.4em;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    letter-spacing: 1px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* card attributes */&lt;br /&gt;
.attribute--cardsContainer {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: flex-start;&lt;br /&gt;
&lt;br /&gt;
    width: fit-content;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
&lt;br /&gt;
    background: var(--lightGray);&lt;br /&gt;
    border: 2px solid var(--gray);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.cardAttribute {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-direction: column;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    width: 8em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.cardAttribute--icon {&lt;br /&gt;
    margin: .6em 0;&lt;br /&gt;
    height: 2em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.cardAttribute--value {&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
&lt;br /&gt;
    font-size: .9em !important;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    line-height: 1.65em !important;&lt;br /&gt;
    letter-spacing: 2px;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*------------------------------------&lt;br /&gt;
      WANTED&lt;br /&gt;
      -----------------------------------*/&lt;br /&gt;
&lt;br /&gt;
.selectWanted--container {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#selectbox-wanted {&lt;br /&gt;
    padding: .35em .5em;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
    letter-spacing: .04em;&lt;br /&gt;
    font-size: 1.25em;&lt;br /&gt;
    width: 21em;&lt;br /&gt;
    border: 2px solid #5684c8;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wantedPortrait--container {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wantedPortrait--title {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    color: #292929;&lt;br /&gt;
    font-size: 1.5em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    letter-spacing: .035em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wantedPortraits {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wantedPortrait {&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    width: 18em;&lt;br /&gt;
    padding: .35em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wantedPortrait img {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width: 1440px) {&lt;br /&gt;
    :root {&lt;br /&gt;
        font-size: 14px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterInfo--contentContainer {&lt;br /&gt;
        padding: .6em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterInfo--infoContainer {&lt;br /&gt;
        width: 65%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterInfo--imageContainer {&lt;br /&gt;
        width: 35%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .tabSkill--container {&lt;br /&gt;
        max-width: 61em;&lt;br /&gt;
        margin: 0 auto;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .tab-skill&amp;gt;div&amp;gt;img {&lt;br /&gt;
        max-width: 38px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width: 1220px) {&lt;br /&gt;
    .tabSkill--container {&lt;br /&gt;
        max-width: 48em;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width: 1024px) {&lt;br /&gt;
&lt;br /&gt;
    .flex-wrap-md {&lt;br /&gt;
        flex-wrap: wrap;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .justify-center-md {&lt;br /&gt;
        justify-content: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .initialPage--mainContainer {&lt;br /&gt;
        flex-wrap: wrap;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .initialPage--menuContainer {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        margin-right: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .initialPage--sideMenuContainer {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        display: flex;&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
        margin-top: 1.5em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .initialPage--sideMenuContainer .card {&lt;br /&gt;
        width: 45%;&lt;br /&gt;
        min-height: 15em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #event-time {&lt;br /&gt;
        bottom: 5%;&lt;br /&gt;
        right: 5%;&lt;br /&gt;
        font-size: 1.25em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .initialPage--socialMediaContainer {&lt;br /&gt;
        margin-top: 2em;&lt;br /&gt;
        display: flex;&lt;br /&gt;
        justify-content: space-between;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .initialPage--socialMedia {&lt;br /&gt;
        width: 32%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #p-search {&lt;br /&gt;
        margin-right: 1em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .filter--containerSearch {&lt;br /&gt;
        justify-content: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .filter--container {&lt;br /&gt;
        margin-top: 1em;&lt;br /&gt;
        flex-wrap: wrap;&lt;br /&gt;
        justify-content: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .filter:last-of-type {&lt;br /&gt;
        margin-top: 1em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #characters-container&amp;gt;div {&lt;br /&gt;
        width: 24%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterPage--splashArt {&lt;br /&gt;
        display: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterPage--table&amp;gt;tbody&amp;gt;.characterPage--mainSection {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        justify-content: flex-start;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterPage--characterInfoContainer {&lt;br /&gt;
        width: 38%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterPage--statsInfoContainer {&lt;br /&gt;
        width: 30%;&lt;br /&gt;
        margin-left: 1.5%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .stats--container&amp;gt;div {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterInfo--contentContainer {&lt;br /&gt;
        flex-wrap: wrap;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterInfo--imageContainer {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        display: flex;&lt;br /&gt;
        justify-content: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterInfo--medal {&lt;br /&gt;
        margin-top: -2.5em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterInfo--infoContainer {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .tabsContainer {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .tab-skill {&lt;br /&gt;
        min-width: 3.5em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .tab-skill&amp;gt;div&amp;gt;img {&lt;br /&gt;
        max-width: 36px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .skillInfo&amp;gt;div {&lt;br /&gt;
        flex-wrap: wrap-reverse;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .skillInfo--infoContainer {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .skillInfo--infoContainer&amp;gt;center&amp;gt;b {&lt;br /&gt;
        font-size: 1.2em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .skillInfo--name {&lt;br /&gt;
        font-size: 2.2em !important;&lt;br /&gt;
        letter-spacing: 1px;&lt;br /&gt;
        margin-top: .5em !important;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .skillInfo--description {&lt;br /&gt;
        font-size: 1.35em !important;&lt;br /&gt;
        display: table;&lt;br /&gt;
        margin: 1em !important;&lt;br /&gt;
&lt;br /&gt;
        height: 5em;&lt;br /&gt;
        max-height: 5em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .skillInfo--videoContainer {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        margin: 0 auto;&lt;br /&gt;
        padding: 1em 10em;&lt;br /&gt;
        padding-bottom: 1em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .cardAttribute--value {&lt;br /&gt;
        letter-spacing: 1px;&lt;br /&gt;
        font-size: 1.1em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .characterPage--table&amp;gt;tbody&amp;gt;.characterPage--sideSection {&lt;br /&gt;
        width: 30%;&lt;br /&gt;
        padding-left: 1.5%;&lt;br /&gt;
        position: absolute;&lt;br /&gt;
        top: 0;&lt;br /&gt;
        right: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .skins--imageSkin {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .skins--container {&lt;br /&gt;
        max-height: 14em;&lt;br /&gt;
        overflow-x: clip;&lt;br /&gt;
        overflow-y: auto;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .skins--container span {&lt;br /&gt;
        width: 50%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .calcXp--formItem {&lt;br /&gt;
        justify-content: center;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .calcXp--container:last-of-type {&lt;br /&gt;
        margin-top: 2em;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #p-tb h3 {&lt;br /&gt;
        display: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
      PRESET: ABAS&lt;br /&gt;
      *******************************************************************************/&lt;br /&gt;
.tabela-abas {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    margin-bottom: 20px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mostrar-aba {&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    background-color: transparent;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border: none;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    transition: all 0.2s ease-in-out;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.imagem-botao {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    width: auto;&lt;br /&gt;
    height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sec-aba-cem {&lt;br /&gt;
    padding: 5px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    color: #333;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mostrar-aba img {&lt;br /&gt;
    border: none;&lt;br /&gt;
    background-color: transparent;&lt;br /&gt;
    margin: 5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mostrar-aba:hover::after {&lt;br /&gt;
    content: '';&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 0;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    height: 3px;&lt;br /&gt;
    background-color: rgba(0, 0, 0, 0.4);&lt;br /&gt;
    /* Barrinha sutil ao passar o mouse */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mostrar-aba:hover img {&lt;br /&gt;
    filter: drop-shadow(0 2px 3px rgba(0, 0, 0, 0.3));&lt;br /&gt;
    /* Sombra leve ao passar o mouse */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mostrar-aba:active img {&lt;br /&gt;
    filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.3));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mostrar-aba.ativa::after {&lt;br /&gt;
    content: '';&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 0;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    height: 3px;&lt;br /&gt;
    background-color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.preset-aba {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.container-conteudo {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.aba {&lt;br /&gt;
    display: none;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    transform: translateY(-10px);&lt;br /&gt;
    transition: opacity 0.3s ease, transform 0.3s ease;&lt;br /&gt;
    margin-top: 20px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.aba.atual {&lt;br /&gt;
    display: block;&lt;br /&gt;
    opacity: 1;&lt;br /&gt;
    transform: translateY(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.container-coliseu {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.coluna-abas {&lt;br /&gt;
    flex: 0 0 200px;&lt;br /&gt;
    margin-right: 20px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
      PRESET: DIÁLOGOS&lt;br /&gt;
      *******************************************************************************/&lt;br /&gt;
.transcrições {&lt;br /&gt;
    background-color: #F2F2F2;&lt;br /&gt;
    border-radius: 5px;&lt;br /&gt;
    box-shadow: 0 0 6px #B2B2B2;&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 10px 10px 10px 18px;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    color: #000;&lt;br /&gt;
    /* Garante que o texto dentro das transcrições será preto */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.transcrições b,&lt;br /&gt;
.transcrições strong {&lt;br /&gt;
    color: #000 !important;&lt;br /&gt;
    /* Garante que o texto negrito também será preto */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.transcrições::before {&lt;br /&gt;
    background-color: #F2F2F2;&lt;br /&gt;
    content: &amp;quot;\00a0&amp;quot;;&lt;br /&gt;
    display: block;&lt;br /&gt;
    height: 16px;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 11px;&lt;br /&gt;
    transform: rotate(29deg) skew(-35deg);&lt;br /&gt;
    -moz-transform: rotate(29deg) skew(-35deg);&lt;br /&gt;
    -ms-transform: rotate(29deg) skew(-35deg);&lt;br /&gt;
    -o-transform: rotate(29deg) skew(-35deg);&lt;br /&gt;
    -webkit-transform: rotate(29deg) skew(-35deg);&lt;br /&gt;
    width: 20px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.me {&lt;br /&gt;
    float: left;&lt;br /&gt;
    margin: 5px 45px 5px 20px;&lt;br /&gt;
    color: #000;&lt;br /&gt;
    /* Garante que o texto dentro da classe .me será preto */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.me::before {&lt;br /&gt;
    box-shadow: -2px 2px 2px 0 rgba(178, 178, 178, .4);&lt;br /&gt;
    left: -9px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
       PREDEFINIÇÃO ITEMBOX E RESPONSIVIDADE DAS PÁGINAS DE ITEM&lt;br /&gt;
      *******************************************************************************/&lt;br /&gt;
.item-grid {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 10px;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    margin: 20px auto;&lt;br /&gt;
    max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 1024px) {&lt;br /&gt;
    .item-grid&amp;gt;* {&lt;br /&gt;
        flex: 1 1 calc(25% - 10px);&lt;br /&gt;
        max-width: calc(25% - 10px);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .item-grid&amp;gt;* {&lt;br /&gt;
        flex: 1 1 calc(33.33% - 10px);&lt;br /&gt;
        max-width: calc(33.33% - 10px);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 480px) {&lt;br /&gt;
    .item-grid&amp;gt;* {&lt;br /&gt;
        flex: 1 1 calc(50% - 10px);&lt;br /&gt;
        max-width: calc(50% - 10px);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 360px) {&lt;br /&gt;
    .item-grid&amp;gt;* {&lt;br /&gt;
        flex: 1 1 100%;&lt;br /&gt;
        max-width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.iteminfobox {&lt;br /&gt;
    padding: 10px;&lt;br /&gt;
    background: #eeeded;&lt;br /&gt;
    border-radius: 25px;&lt;br /&gt;
    box-shadow: rgba(24, 27, 46, 0.24) 4px 4px 4px;&lt;br /&gt;
    width: 230px;&lt;br /&gt;
    height: 270px;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-direction: column;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.iteminfobox b {&lt;br /&gt;
    font-size: clamp(10px, 2vw, 14px);&lt;br /&gt;
    color: #6587c4;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    line-height: 1.2;&lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    text-overflow: ellipsis;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**********************&lt;br /&gt;
      VECTOR.CSS&lt;br /&gt;
  **********************/&lt;br /&gt;
&lt;br /&gt;
/* Geral */&lt;br /&gt;
a {&lt;br /&gt;
    color: #0645ad;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a:visited {&lt;br /&gt;
    color: #0645ad;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a.new {&lt;br /&gt;
    color: rgb(206, 0, 0) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
h1,&lt;br /&gt;
h2,&lt;br /&gt;
h3,&lt;br /&gt;
h4,&lt;br /&gt;
h5,&lt;br /&gt;
h6 {&lt;br /&gt;
    color: #000000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
hr {&lt;br /&gt;
    color: #222;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ul {&lt;br /&gt;
    list-style-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Cabeçalho */&lt;br /&gt;
#mw-head-base {&lt;br /&gt;
    background: url(http://70.39.70.36/images/f/fd/azul_capriw2.png);&lt;br /&gt;
    background-repeat: repeat-x;&lt;br /&gt;
    width: 1531px;&lt;br /&gt;
    max-height: 63px;&lt;br /&gt;
    margin-top: -3.5em;&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Navegação */&lt;br /&gt;
#p-cactions {&lt;br /&gt;
    background: none;&lt;br /&gt;
    margin-top: -0.6em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-cactions li {&lt;br /&gt;
    background: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-cactions li.selected {&lt;br /&gt;
    background: none;&lt;br /&gt;
    border: 2px solid #5c3f2a;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-cactions li.new {&lt;br /&gt;
    background-color: #e2e2e2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-cactions li a {&lt;br /&gt;
    background-color: #e2e2e2;&lt;br /&gt;
    color: #7070FF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#p-cactions li.selected a {&lt;br /&gt;
    background-color: #324f74;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Barra de Pesquisa */&lt;br /&gt;
#searchInput {&lt;br /&gt;
    background-color: #ffffff;&lt;br /&gt;
    border-color: #0645ad;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#content {&lt;br /&gt;
    color: var(--content-text);&lt;br /&gt;
    background-color: var(--content-bg) !important;&lt;br /&gt;
    border: none !important;&lt;br /&gt;
    box-shadow: rgba(0, 0, 0, .1) 0px 8px 24px, rgba(0, 0, 0, 0.15) 0px 0px 0px 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#simpleSearch {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    background-color: white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Menu */&lt;br /&gt;
.vector-menu-tabs,&lt;br /&gt;
.vector-menu-tabs a,&lt;br /&gt;
#mw-head .vector-menu-dropdown h3 {&lt;br /&gt;
    background: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-menu-tabs li a {&lt;br /&gt;
    background-position: center;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
    display: block;&lt;br /&gt;
    float: left;&lt;br /&gt;
    height: 3.07692308em;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    padding-top: 0.9em;&lt;br /&gt;
    padding-left: 8px;&lt;br /&gt;
    padding-right: 8px;&lt;br /&gt;
    font-size: 0.8125em;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-menu-tabs .selected {&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    border: 1px #0645ad solid;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-menu-tabs ul {&lt;br /&gt;
    float: left;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    list-style: none none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    margin-top: -0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.vector-menu-dropdown .vector-menu-content {&lt;br /&gt;
    background-color: none;&lt;br /&gt;
    list-style: none none;&lt;br /&gt;
    min-width: 100%;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    top: 2.5em;&lt;br /&gt;
    right: -1px;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border: 2px solid #0645ad !important;&lt;br /&gt;
    border-top-width: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    box-shadow: 0 1px 1px 0 rgb(0 0 0 / 10%);&lt;br /&gt;
    text-align: left;&lt;br /&gt;
    opacity: 0;&lt;br /&gt;
    visibility: hidden;&lt;br /&gt;
    -webkit-transition: opacity 100ms;&lt;br /&gt;
    transition: opacity 100ms;&lt;br /&gt;
    z-index: 3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Conteúdo */&lt;br /&gt;
.mw-body {&lt;br /&gt;
    margin-top: -1px;&lt;br /&gt;
    border: 1px solid #8d6e63;&lt;br /&gt;
    border-right-width: 1px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output small li {&lt;br /&gt;
    color: #000000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output tr i {&lt;br /&gt;
    color: #000000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output tr big {&lt;br /&gt;
    color: #000000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .center .thumbcaption,&lt;br /&gt;
.mw-parser-output .tright .thumbcaption {&lt;br /&gt;
    color: #000000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tabelas */&lt;br /&gt;
.jquery-tablesorter tr td {&lt;br /&gt;
    background-color: #fcfcfc !important;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#mw-content-text .mw-parser-output .jquery-tablesorter {&lt;br /&gt;
    transform: translatex(0px) translatey(0px);&lt;br /&gt;
    background-color: #fcfcfc;&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
    border-color: #0645ad;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Links */&lt;br /&gt;
#mw-normal-catlinks ul a,&lt;br /&gt;
#mw-normal-catlinks a,&lt;br /&gt;
#ca-delete a,&lt;br /&gt;
#ca-move a,&lt;br /&gt;
#ca-unprotect a {&lt;br /&gt;
    color: #0645ad !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#ca-delete a,&lt;br /&gt;
#ca-move a,&lt;br /&gt;
#ca-unprotect a {&lt;br /&gt;
    background-color: #ffffff !important;&lt;br /&gt;
    border-color: #0645ad;&lt;br /&gt;
    border-width: 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Rodapé */&lt;br /&gt;
#footer-info-lastmod {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Outros */&lt;br /&gt;
.mw-destfile-warning {&lt;br /&gt;
    border: 1px solid #8d6e63;&lt;br /&gt;
    padding: 0.5em 1em;&lt;br /&gt;
    margin-bottom: 1em;&lt;br /&gt;
    color: #f8f9fa;&lt;br /&gt;
    background-color: #0d1b2d;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-logline-protect {&lt;br /&gt;
    color: #f8f9fa !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oo-ui-popupWidget-head&amp;gt;.oo-ui-iconElement-noIcon+.oo-ui-labelElement-label {&lt;br /&gt;
    margin-left: 12px;&lt;br /&gt;
    color: white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#msupload-div a {&lt;br /&gt;
    color: #3366cc;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    color: blue !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#msupload-bottom a {&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    margin-right: 20px;&lt;br /&gt;
    color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#msupload-list .file {&lt;br /&gt;
    background: #8b929e;&lt;br /&gt;
    border-top: 1px solid #c8ccd1;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 10px;&lt;br /&gt;
    position: relative;&lt;br /&gt;
    color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wikiEditor-ui-toolbar .booklet&amp;gt;.index {&lt;br /&gt;
    float: left;&lt;br /&gt;
    width: 20%;&lt;br /&gt;
    height: 125px;&lt;br /&gt;
    overflow: auto;&lt;br /&gt;
    resize: horizontal;&lt;br /&gt;
    color: black;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.codeEditor-status-message {&lt;br /&gt;
    border-left: 1px solid #c8ccd1;&lt;br /&gt;
    border-right: 1px solid #c8ccd1;&lt;br /&gt;
    padding: 0 0.3em;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    display: table-cell;&lt;br /&gt;
    color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wikiEditor-ui-toolbar .tabs span.tab a {&lt;br /&gt;
    color: #000000 !important;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    display: block;&lt;br /&gt;
    height: 32px;&lt;br /&gt;
    padding-left: 18px;&lt;br /&gt;
    padding-right: 12px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wikiEditor-ui-toolbar .group .tool-select .label {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    padding: 0 26px 0 4px;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    color: #222 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wikiEditor-ui-toolbar .group .tool-select .options .option {&lt;br /&gt;
    display: block;&lt;br /&gt;
    padding: 0.5em;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    color: #000 !important;&lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div.mw-number-text {&lt;br /&gt;
    color: #888 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div.mw-number-text h3 {&lt;br /&gt;
    color: #c1c1c1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tooltip */&lt;br /&gt;
.tip2 {&lt;br /&gt;
    background-color: #F2F2F2;&lt;br /&gt;
    border-radius: 2px;&lt;br /&gt;
    box-shadow: 0 0 6px #B2B2B2;&lt;br /&gt;
    display: none;&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    padding: 10px;&lt;br /&gt;
    z-index: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tooltip {&lt;br /&gt;
    position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#tip-espaco {&lt;br /&gt;
    margin-left: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#youtube {&lt;br /&gt;
    margin-left: -155px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tooltip,&lt;br /&gt;
.tooltip:hover+.tip2,&lt;br /&gt;
.tip2:hover {&lt;br /&gt;
    display: inline;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* tira o toggle do indice, ocultar/exibir */&lt;br /&gt;
#toc .toctogglelabel {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
span.toctogglespan {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*   WIKITABLE */&lt;br /&gt;
table.wikitablec,&lt;br /&gt;
table.prettytable {&lt;br /&gt;
    margin: 1em 1em 1em 0;&lt;br /&gt;
    background: #f9f9f9;&lt;br /&gt;
    border: 1px #aaa solid;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablecenter,&lt;br /&gt;
table.prettytable {&lt;br /&gt;
    margin-left: auto;&lt;br /&gt;
    margin-right: auto;&lt;br /&gt;
    background: #f9f9f9;&lt;br /&gt;
    border: 1px #aaa solid;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablec th,&lt;br /&gt;
table.wikitablec td,&lt;br /&gt;
table.prettytable th,&lt;br /&gt;
table.prettytable td {&lt;br /&gt;
    border: 1px #aaa solid;&lt;br /&gt;
    padding: 0.2em;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablec th,&lt;br /&gt;
table.prettytable th {&lt;br /&gt;
    background: #f2f2f2;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablec caption,&lt;br /&gt;
table.prettytable caption {&lt;br /&gt;
    margin-left: inherit;&lt;br /&gt;
    margin-right: inherit;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.prettytablec code,&lt;br /&gt;
table.wikitablec code {&lt;br /&gt;
    background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablew-tr th,&lt;br /&gt;
table.wikitablew-tr td {&lt;br /&gt;
    padding: 0.3em 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablecenter th,&lt;br /&gt;
table.wikitablecenter td,&lt;br /&gt;
table.prettytable th,&lt;br /&gt;
table.prettytable td {&lt;br /&gt;
    border: 1px #aaa solid;&lt;br /&gt;
    padding: 0.2em;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablecenter th,&lt;br /&gt;
table.prettytable th {&lt;br /&gt;
    background: #f2f2f2;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablecenter caption,&lt;br /&gt;
table.prettytable caption {&lt;br /&gt;
    margin-left: inherit;&lt;br /&gt;
    margin-right: inherit;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.prettytablecenter code,&lt;br /&gt;
table.wikitablecenter code {&lt;br /&gt;
    background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.elements {}&lt;br /&gt;
&lt;br /&gt;
table.elements th,&lt;br /&gt;
table.elements td {&lt;br /&gt;
    padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
td.effective {&lt;br /&gt;
    background-color: #BFFFBF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
td.ineffective {&lt;br /&gt;
    background-color: #FFBF7F;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
td.nullified {&lt;br /&gt;
    background-color: #FFBFBF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*   Wikitable White */&lt;br /&gt;
table.wikitablew,&lt;br /&gt;
table.prettytable,&lt;br /&gt;
table.wikitablew-tr {&lt;br /&gt;
    margin: 1em 0;&lt;br /&gt;
    background: #f9f9f9;&lt;br /&gt;
    border: 2px #fff solid;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablewhite,&lt;br /&gt;
table.prettytable {&lt;br /&gt;
    margin-left: auto;&lt;br /&gt;
    margin-right: auto;&lt;br /&gt;
    background: #f9f9f9;&lt;br /&gt;
    border: 2px #fff solid;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*   Wikitable White */&lt;br /&gt;
table.wikitablenb,&lt;br /&gt;
table.prettytable,&lt;br /&gt;
table.wikitablenb-tr {&lt;br /&gt;
    margin: 1em 0;&lt;br /&gt;
    background: #f9f9f9;&lt;br /&gt;
    border: none;&lt;br /&gt;
    border-opacity: 0.5;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wikitablenb border: opacity {&lt;br /&gt;
    opacity: 0.5;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablenoborder,&lt;br /&gt;
table.prettytable {&lt;br /&gt;
    margin-left: auto;&lt;br /&gt;
    margin-right: auto;&lt;br /&gt;
    background: #f9f9f9;&lt;br /&gt;
    border: 2px #e9e8e8 solid;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* HOVER DA TABELA*/&lt;br /&gt;
.wikitablew td: hover {&lt;br /&gt;
    background: #e9e8e8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wikitablew-tr tr: hover {&lt;br /&gt;
    background: #e9e8e8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wikitablenb border: hover {&lt;br /&gt;
    color: #e9e8e8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablew th,&lt;br /&gt;
table.wikitablew td,&lt;br /&gt;
table.prettytable th,&lt;br /&gt;
table.prettytable td,&lt;br /&gt;
table.wikitablew-tr th,&lt;br /&gt;
table.wikitablew-tr td {&lt;br /&gt;
    border: 2px #fff solid;&lt;br /&gt;
    padding: 0.3em 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablew th,&lt;br /&gt;
table.prettytable th,&lt;br /&gt;
table.wikitablew-tr th {&lt;br /&gt;
    background: #eaecf0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablew caption,&lt;br /&gt;
table.prettytable caption,&lt;br /&gt;
table.wikitablew-tr caption {&lt;br /&gt;
    margin-left: inherit;&lt;br /&gt;
    margin-right: inherit;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.prettytablec code,&lt;br /&gt;
table.prettytable code,&lt;br /&gt;
table.wikitablew-tr code {&lt;br /&gt;
    background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablewhite th,&lt;br /&gt;
table.wikitablewhite td,&lt;br /&gt;
table.prettytable th,&lt;br /&gt;
table.prettytable td {&lt;br /&gt;
    border: 2px #fff solid;&lt;br /&gt;
    padding: 0.2em;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablewhite th,&lt;br /&gt;
table.prettytable th,&lt;br /&gt;
table.wikitablew-tr th {&lt;br /&gt;
    background: #eaecf0;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border-right: 1px #fff solid;&lt;br /&gt;
    padding: 0.3em 0.4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.wikitablewhite caption,&lt;br /&gt;
table.prettytable caption,&lt;br /&gt;
table.wikitablew-tr caption {&lt;br /&gt;
    margin-left: inherit;&lt;br /&gt;
    margin-right: inherit;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.prettytablecenter code,&lt;br /&gt;
table.wikitablewhite code,&lt;br /&gt;
table.wikitablew-tr code {&lt;br /&gt;
    background-color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
table.elements {}&lt;br /&gt;
&lt;br /&gt;
table.elements th,&lt;br /&gt;
table.elements td {&lt;br /&gt;
    padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
td.effective {&lt;br /&gt;
    background-color: #BFFFBF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
td.ineffective {&lt;br /&gt;
    background-color: #FFBF7F;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
td.nullified {&lt;br /&gt;
    background-color: #FFBFBF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**********************************&lt;br /&gt;
wiki.gla.com.br/index.php/Predefini%C3%A7%C3%A3o:Img&lt;br /&gt;
&lt;br /&gt;
predefinição:img | deixa as imagens responsivas pro mobile&lt;br /&gt;
**********************************/&lt;br /&gt;
.responsive-image {&lt;br /&gt;
    max-width: 100%;&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.custom-image {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    max-width: 800px;&lt;br /&gt;
    height: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.responsive-image[style*=&amp;quot;text-align:left&amp;quot;] {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.responsive-image[style*=&amp;quot;text-align:right&amp;quot;] {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    text-align: right;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.responsive-image[style*=&amp;quot;text-align:center&amp;quot;] {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ---------------------------------------------------------------------------------------------------------------- */&lt;br /&gt;
&lt;br /&gt;
/* Estilos CSS para o componente de abas MediaWiki */&lt;br /&gt;
/* Adicione este CSS na sua MediaWiki (Common.css ou página de estilos) */&lt;br /&gt;
&lt;br /&gt;
/* Container principal responsivo */&lt;br /&gt;
.mw-tabber-container {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    max-width: 100%;&lt;br /&gt;
    margin: 20px 0;&lt;br /&gt;
    border: 1px solid #a7d7f9;&lt;br /&gt;
    border-radius: 4px;&lt;br /&gt;
    background-color: #f8f9fa;&lt;br /&gt;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Container das abas */&lt;br /&gt;
.mw-tabber-tabs {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    background-color: #eaecf0;&lt;br /&gt;
    border-bottom: 2px solid #a7d7f9;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Estilo individual de cada aba */&lt;br /&gt;
.mw-tabber-tab {&lt;br /&gt;
    flex: 1 1 auto;&lt;br /&gt;
    min-width: 100px;&lt;br /&gt;
    padding: 12px 20px;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    background-color: #eaecf0;&lt;br /&gt;
    border: none;&lt;br /&gt;
    border-right: 1px solid #c8ccd1;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
    font-weight: 500;&lt;br /&gt;
    color: #0645ad;&lt;br /&gt;
    transition: all 0.2s ease;&lt;br /&gt;
    user-select: none;&lt;br /&gt;
    position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-tabber-tab:last-child {&lt;br /&gt;
    border-right: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover nas abas */&lt;br /&gt;
.mw-tabber-tab:hover {&lt;br /&gt;
    background-color: #f8f9fa;&lt;br /&gt;
    color: #0b0080;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Aba ativa */&lt;br /&gt;
.mw-tabber-tab.active {&lt;br /&gt;
    background-color: #ffffff;&lt;br /&gt;
    color: #0645ad;&lt;br /&gt;
    border-bottom: 3px solid #0645ad;&lt;br /&gt;
    font-weight: 600;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Container do conteúdo */&lt;br /&gt;
.mw-tabber-content {&lt;br /&gt;
    padding: 20px;&lt;br /&gt;
    background-color: #ffffff;&lt;br /&gt;
    min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Painel de conteúdo individual */&lt;br /&gt;
.mw-tabber-panel {&lt;br /&gt;
    display: none;&lt;br /&gt;
    animation: fadeIn 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-tabber-panel.active {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Animação de fade in */&lt;br /&gt;
@keyframes fadeIn {&lt;br /&gt;
    from {&lt;br /&gt;
        opacity: 0;&lt;br /&gt;
        transform: translateY(5px);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    to {&lt;br /&gt;
        opacity: 1;&lt;br /&gt;
        transform: translateY(0);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Responsividade para tablets */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .mw-tabber-tabs {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .mw-tabber-tab {&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid #c8ccd1;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .mw-tabber-tab.active {&lt;br /&gt;
        border-bottom: 3px solid #0645ad;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .mw-tabber-content {&lt;br /&gt;
        padding: 15px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Responsividade para mobile */&lt;br /&gt;
@media (max-width: 480px) {&lt;br /&gt;
    .mw-tabber-tab {&lt;br /&gt;
        padding: 10px 15px;&lt;br /&gt;
        font-size: 13px;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .mw-tabber-content {&lt;br /&gt;
        padding: 12px;&lt;br /&gt;
        min-height: 150px;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================&lt;br /&gt;
   WIKITABLE RESPONSIVO (GLOBAL)&lt;br /&gt;
   Mantém visual atual e adiciona scroll horizontal no mobile.&lt;br /&gt;
========================================= */&lt;br /&gt;
@media (max-width: 900px) {&lt;br /&gt;
&lt;br /&gt;
    table.wikitable,&lt;br /&gt;
    table.wikitablec,&lt;br /&gt;
    table.wikitablecenter,&lt;br /&gt;
    table.wikitablew,&lt;br /&gt;
    table.wikitablewhite,&lt;br /&gt;
    table.wikitablenb,&lt;br /&gt;
    table.wikitablenoborder,&lt;br /&gt;
    table.wikitablew-tr,&lt;br /&gt;
    table.prettytable {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: max-content !important;&lt;br /&gt;
        min-width: 100%;&lt;br /&gt;
        max-width: 100%;&lt;br /&gt;
        overflow-x: auto;&lt;br /&gt;
        -webkit-overflow-scrolling: touch;&lt;br /&gt;
        box-sizing: border-box;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.wikitable th,&lt;br /&gt;
    table.wikitable td,&lt;br /&gt;
    table.wikitablec th,&lt;br /&gt;
    table.wikitablec td,&lt;br /&gt;
    table.wikitablecenter th,&lt;br /&gt;
    table.wikitablecenter td,&lt;br /&gt;
    table.wikitablew th,&lt;br /&gt;
    table.wikitablew td,&lt;br /&gt;
    table.wikitablewhite th,&lt;br /&gt;
    table.wikitablewhite td,&lt;br /&gt;
    table.wikitablenb th,&lt;br /&gt;
    table.wikitablenb td,&lt;br /&gt;
    table.wikitablenoborder th,&lt;br /&gt;
    table.wikitablenoborder td,&lt;br /&gt;
    table.wikitablew-tr th,&lt;br /&gt;
    table.wikitablew-tr td {&lt;br /&gt;
        padding: 0.32em 0.45em;&lt;br /&gt;
        word-break: normal;&lt;br /&gt;
        overflow-wrap: normal;&lt;br /&gt;
        hyphens: none;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    table.wikitable th,&lt;br /&gt;
    table.wikitablec th,&lt;br /&gt;
    table.wikitablecenter th,&lt;br /&gt;
    table.wikitablew th,&lt;br /&gt;
    table.wikitablewhite th,&lt;br /&gt;
    table.wikitablenb th,&lt;br /&gt;
    table.wikitablenoborder th,&lt;br /&gt;
    table.wikitablew-tr th {&lt;br /&gt;
        white-space: nowrap;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**************&lt;br /&gt;
gurren (2026)&lt;br /&gt;
**************/&lt;br /&gt;
.gla-responsive-frame {&lt;br /&gt;
    width: fit-content;&lt;br /&gt;
    max-width: 100%;&lt;br /&gt;
    margin: 12px auto;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    background: transparent;&lt;br /&gt;
    box-shadow: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* neutraliza molduras do MediaWiki */&lt;br /&gt;
.gla-responsive-frame .thumbinner,&lt;br /&gt;
.gla-responsive-frame .thumb,&lt;br /&gt;
.gla-responsive-frame figure,&lt;br /&gt;
.gla-responsive-frame .mw-file-description {&lt;br /&gt;
    max-width: 100% !important;&lt;br /&gt;
    width: auto !important;&lt;br /&gt;
    padding: 0 !important;&lt;br /&gt;
    margin: 0 auto !important;&lt;br /&gt;
    border: 0 !important;&lt;br /&gt;
    background: transparent !important;&lt;br /&gt;
    box-shadow: none !important;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* imagem: tamanho natural + responsivo */&lt;br /&gt;
.gla-responsive-frame img {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    max-width: 100% !important;&lt;br /&gt;
    width: auto !important;&lt;br /&gt;
    height: auto !important;&lt;br /&gt;
    margin: 0 auto !important;&lt;br /&gt;
    border: 0 !important;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    /* pode tirar também se quiser totalmente cru */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/******** teste darkmode *******/&lt;br /&gt;
/* =========================&lt;br /&gt;
   GLA Wiki - Botão Dark Mode&lt;br /&gt;
   ========================= */&lt;br /&gt;
&lt;br /&gt;
#gla-darkmode-toggle {&lt;br /&gt;
    position: fixed;&lt;br /&gt;
    right: 18px;&lt;br /&gt;
    bottom: 18px;&lt;br /&gt;
    z-index: 99999;&lt;br /&gt;
&lt;br /&gt;
    display: inline-flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    gap: 7px;&lt;br /&gt;
&lt;br /&gt;
    min-height: 38px;&lt;br /&gt;
    padding: 8px 12px;&lt;br /&gt;
&lt;br /&gt;
    border: 1px solid #a2a9b1;&lt;br /&gt;
    border-radius: 999px;&lt;br /&gt;
&lt;br /&gt;
    background: #ffffff;&lt;br /&gt;
    color: #202122;&lt;br /&gt;
&lt;br /&gt;
    font-family: inherit;&lt;br /&gt;
    font-size: 13px;&lt;br /&gt;
    font-weight: 700;&lt;br /&gt;
    line-height: 1;&lt;br /&gt;
&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18);&lt;br /&gt;
&lt;br /&gt;
    transition:&lt;br /&gt;
        background-color 160ms ease,&lt;br /&gt;
        color 160ms ease,&lt;br /&gt;
        border-color 160ms ease,&lt;br /&gt;
        box-shadow 160ms ease,&lt;br /&gt;
        transform 160ms ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gla-darkmode-toggle:hover {&lt;br /&gt;
    background: #f8f9fa;&lt;br /&gt;
    border-color: #72777d;&lt;br /&gt;
    transform: translateY(-1px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#gla-darkmode-toggle:focus {&lt;br /&gt;
    outline: 2px solid #36c;&lt;br /&gt;
    outline-offset: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gla-darkmode-icon {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    min-width: 16px;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 16px;&lt;br /&gt;
    line-height: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gla-darkmode-text {&lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media screen and (max-width: 700px) {&lt;br /&gt;
    #gla-darkmode-toggle {&lt;br /&gt;
        right: 12px;&lt;br /&gt;
        bottom: 12px;&lt;br /&gt;
        width: 42px;&lt;br /&gt;
        height: 42px;&lt;br /&gt;
        justify-content: center;&lt;br /&gt;
        padding: 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    #gla-darkmode-toggle .gla-darkmode-text {&lt;br /&gt;
        display: none;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   GLA Wiki - Dark Mode Base&lt;br /&gt;
   ========================= */&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode,&lt;br /&gt;
html.gla-dark-mode body {&lt;br /&gt;
    background: #0f172a !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode #mw-page-base,&lt;br /&gt;
html.gla-dark-mode #mw-head-base {&lt;br /&gt;
    background: #0b1120 !important;&lt;br /&gt;
    background-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode #content,&lt;br /&gt;
html.gla-dark-mode .mw-body {&lt;br /&gt;
    background: #111827 !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
    border-color: #334155 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode #bodyContent,&lt;br /&gt;
html.gla-dark-mode .mw-body-content,&lt;br /&gt;
html.gla-dark-mode .mw-parser-output {&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode h1,&lt;br /&gt;
html.gla-dark-mode h2,&lt;br /&gt;
html.gla-dark-mode h3,&lt;br /&gt;
html.gla-dark-mode h4,&lt;br /&gt;
html.gla-dark-mode h5,&lt;br /&gt;
html.gla-dark-mode h6 {&lt;br /&gt;
    color: #f8fafc !important;&lt;br /&gt;
    border-color: #334155 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode p,&lt;br /&gt;
html.gla-dark-mode li,&lt;br /&gt;
html.gla-dark-mode dd,&lt;br /&gt;
html.gla-dark-mode dt {&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode hr {&lt;br /&gt;
    border-color: #334155 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Links&lt;br /&gt;
   ========================= */&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode a {&lt;br /&gt;
    color: #7dd3fc !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode a:visited {&lt;br /&gt;
    color: #c4b5fd !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode a:hover {&lt;br /&gt;
    color: #bae6fd !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector / navegação&lt;br /&gt;
   ========================= */&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode #mw-navigation,&lt;br /&gt;
html.gla-dark-mode #mw-panel,&lt;br /&gt;
html.gla-dark-mode #p-logo,&lt;br /&gt;
html.gla-dark-mode #p-personal,&lt;br /&gt;
html.gla-dark-mode #left-navigation,&lt;br /&gt;
html.gla-dark-mode #right-navigation {&lt;br /&gt;
    background: transparent !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode #mw-panel .portal h3,&lt;br /&gt;
html.gla-dark-mode .vector-menu-heading,&lt;br /&gt;
html.gla-dark-mode .vector-menu-tabs .selected a,&lt;br /&gt;
html.gla-dark-mode .vector-menu-tabs a {&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .vector-menu-tabs,&lt;br /&gt;
html.gla-dark-mode .vector-menu-tabs li,&lt;br /&gt;
html.gla-dark-mode .vector-menu-tabs li a,&lt;br /&gt;
html.gla-dark-mode .vector-menu-dropdown,&lt;br /&gt;
html.gla-dark-mode .vector-menu-content,&lt;br /&gt;
html.gla-dark-mode .vector-menu-content-list {&lt;br /&gt;
    background: #111827 !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
    border-color: #334155 !important;&lt;br /&gt;
    background-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .vector-menu-tabs .selected {&lt;br /&gt;
    background: #1e293b !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode #footer {&lt;br /&gt;
    background: #0f172a !important;&lt;br /&gt;
    color: #cbd5e1 !important;&lt;br /&gt;
    border-color: #334155 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Busca / inputs / botões&lt;br /&gt;
   ========================= */&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode input,&lt;br /&gt;
html.gla-dark-mode textarea,&lt;br /&gt;
html.gla-dark-mode select,&lt;br /&gt;
html.gla-dark-mode #searchInput,&lt;br /&gt;
html.gla-dark-mode .oo-ui-inputWidget-input {&lt;br /&gt;
    background: #0f172a !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
    border-color: #475569 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode input::placeholder,&lt;br /&gt;
html.gla-dark-mode textarea::placeholder {&lt;br /&gt;
    color: #94a3b8 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode button,&lt;br /&gt;
html.gla-dark-mode .mw-ui-button {&lt;br /&gt;
    background: #1e293b !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
    border-color: #475569 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode button:hover,&lt;br /&gt;
html.gla-dark-mode .mw-ui-button:hover {&lt;br /&gt;
    background: #334155 !important;&lt;br /&gt;
    color: #f8fafc !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Mantém o botão do modo escuro com estilo próprio */&lt;br /&gt;
html.gla-dark-mode #gla-darkmode-toggle {&lt;br /&gt;
    background: #020617 !important;&lt;br /&gt;
    color: #f8fafc !important;&lt;br /&gt;
    border-color: #475569 !important;&lt;br /&gt;
    box-shadow: 0 4px 18px rgba(0, 0, 0, 0.45);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode #gla-darkmode-toggle:hover {&lt;br /&gt;
    background: #1e293b !important;&lt;br /&gt;
    border-color: #64748b !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Tabelas / caixas padrão MediaWiki&lt;br /&gt;
   ========================= */&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode table,&lt;br /&gt;
html.gla-dark-mode .wikitable,&lt;br /&gt;
html.gla-dark-mode .infobox,&lt;br /&gt;
html.gla-dark-mode .toc,&lt;br /&gt;
html.gla-dark-mode #toc,&lt;br /&gt;
html.gla-dark-mode .catlinks,&lt;br /&gt;
html.gla-dark-mode .thumbinner,&lt;br /&gt;
html.gla-dark-mode .mw-parser-output .ambox,&lt;br /&gt;
html.gla-dark-mode .mw-parser-output .metadata {&lt;br /&gt;
    background: #1e293b !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
    border-color: #475569 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode th,&lt;br /&gt;
html.gla-dark-mode td,&lt;br /&gt;
html.gla-dark-mode .wikitable th,&lt;br /&gt;
html.gla-dark-mode .wikitable td {&lt;br /&gt;
    background-color: #1e293b !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
    border-color: #475569 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .wikitable th,&lt;br /&gt;
html.gla-dark-mode table th {&lt;br /&gt;
    background-color: #334155 !important;&lt;br /&gt;
    color: #f8fafc !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode code,&lt;br /&gt;
html.gla-dark-mode pre,&lt;br /&gt;
html.gla-dark-mode .mw-code {&lt;br /&gt;
    background: #020617 !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
    border-color: #334155 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Página principal GLA&lt;br /&gt;
   ========================= */&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .mw-parser-output .home-card,&lt;br /&gt;
html.gla-dark-mode .home-card {&lt;br /&gt;
    background: #1e293b !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
    border-color: #334155 !important;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .mw-parser-output .home-title,&lt;br /&gt;
html.gla-dark-mode .home-title {&lt;br /&gt;
    background: linear-gradient(to bottom, #2563eb, #1e40af) !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .home-button-item {&lt;br /&gt;
    background: #0f172a !important;&lt;br /&gt;
    border-color: #334155 !important;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .home-button-item:hover {&lt;br /&gt;
    border-color: #38bdf8 !important;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(56, 189, 248, 0.18) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .home-button-title {&lt;br /&gt;
    background: #111827 !important;&lt;br /&gt;
    color: #7dd3fc !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .index-cell {&lt;br /&gt;
    background: #0f172a !important;&lt;br /&gt;
    color: #e5e7eb !important;&lt;br /&gt;
    border-color: #38bdf8 !important;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .index-title {&lt;br /&gt;
    color: #f8fafc !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .index-links {&lt;br /&gt;
    color: #cbd5e1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .index-grid .disabled-section {&lt;br /&gt;
    opacity: 0.55 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .index-grid .disabled-section::after {&lt;br /&gt;
    color: #f8fafc !important;&lt;br /&gt;
    text-shadow: 0 0 4px #000 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Imagens e ícones&lt;br /&gt;
   ========================= */&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode img {&lt;br /&gt;
    border-color: #334155 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode .thumbcaption {&lt;br /&gt;
    color: #cbd5e1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Seleção de texto&lt;br /&gt;
   ========================= */&lt;br /&gt;
&lt;br /&gt;
html.gla-dark-mode ::selection {&lt;br /&gt;
    background: #2563eb !important;&lt;br /&gt;
    color: #ffffff !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=MediaWiki:Common.js&amp;diff=46638</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=MediaWiki:Common.js&amp;diff=46638"/>
		<updated>2026-05-02T02:14:23Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;$(document).ready(function () {&lt;br /&gt;
    //------- GLOBAL EVENTS TIMER ---------&lt;br /&gt;
    (function () {&lt;br /&gt;
        var globalEventsTimer = $('#global-event-time'); // Atualizado: ID do Timer dos Global Events&lt;br /&gt;
        var globalEventsImage = $('.global-event-image'); // Atualizado: Classe da Imagem dos Global Events&lt;br /&gt;
        var globalEventsInterval;&lt;br /&gt;
&lt;br /&gt;
        // Informações dos eventos&lt;br /&gt;
        /*&lt;br /&gt;
          0 - Domingo&lt;br /&gt;
          1 - Segunda-feira&lt;br /&gt;
          2 - Terça-feira&lt;br /&gt;
          3 - Quarta-feira&lt;br /&gt;
          4 - Quinta-feira&lt;br /&gt;
          5 - Sexta-feira&lt;br /&gt;
          6 - Sábado&lt;br /&gt;
        */&lt;br /&gt;
        var globalEventsInfo = {&lt;br /&gt;
            0: [&lt;br /&gt;
                { name: 'Foxy Memory', time: '02:00:00', src: '/images/3/37/Foxy_memory_event.png' },&lt;br /&gt;
                { name: 'Foxy race (ship)', time: '09:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },&lt;br /&gt;
                { name: 'Deathmatch', time: '12:00:00', src: '/images/4/46/Deathmatch_event.png' },&lt;br /&gt;
                { name: 'Foxy race', time: '15:00:00', src: '/images/e/e8/Foxy_race_event.png' },&lt;br /&gt;
                { name: 'Foxy quiz', time: '19:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },&lt;br /&gt;
                { name: 'Foxy count', time: '22:00:00', src: '/images/f/f3/Foxy_count_event.png' },&lt;br /&gt;
            ],&lt;br /&gt;
            1: [&lt;br /&gt;
                { name: 'Foxy Memory', time: '02:00:00', src: '/images/3/37/Foxy_memory_event.png' },&lt;br /&gt;
                { name: 'Foxy race (ship)', time: '09:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },&lt;br /&gt;
                { name: 'Deathmatch', time: '12:00:00', src: '/images/4/46/Deathmatch_event.png' },&lt;br /&gt;
                { name: 'Foxy race', time: '15:00:00', src: '/images/e/e8/Foxy_race_event.png' },&lt;br /&gt;
                { name: 'Foxy quiz', time: '19:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },&lt;br /&gt;
                { name: 'Foxy count', time: '22:00:00', src: '/images/f/f3/Foxy_count_event.png' },&lt;br /&gt;
            ],&lt;br /&gt;
            2: [&lt;br /&gt;
                { name: 'Foxy race (ship)', time: '02:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },&lt;br /&gt;
                { name: 'Deathmatch', time: '09:00:00', src: '/images/4/46/Deathmatch_event.png' },&lt;br /&gt;
                { name: 'Foxy race', time: '12:00:00', src: '/images/e/e8/Foxy_race_event.png' },&lt;br /&gt;
                { name: 'Foxy quiz', time: '15:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },&lt;br /&gt;
                { name: 'Foxy count', time: '19:00:00', src: '/images/f/f3/Foxy_count_event.png' },&lt;br /&gt;
                { name: 'Foxy Memory', time: '22:00:00', src: '/images/3/37/Foxy_memory_event.png' },&lt;br /&gt;
            ],&lt;br /&gt;
            3: [&lt;br /&gt;
                { name: 'Deathmatch', time: '02:00:00', src: '/images/4/46/Deathmatch_event.png' },&lt;br /&gt;
                { name: 'Foxy race', time: '09:00:00', src: '/images/e/e8/Foxy_race_event.png' },&lt;br /&gt;
                { name: 'Foxy quiz', time: '12:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },&lt;br /&gt;
                { name: 'Foxy count', time: '15:00:00', src: '/images/f/f3/Foxy_count_event.png' },&lt;br /&gt;
                { name: 'Foxy Memory', time: '19:00:00', src: '/images/3/37/Foxy_memory_event.png' },&lt;br /&gt;
                { name: 'Foxy race (ship)', time: '22:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },&lt;br /&gt;
            ],&lt;br /&gt;
            4: [&lt;br /&gt;
                { name: 'Foxy race', time: '02:00:00', src: '/images/e/e8/Foxy_race_event.png' },&lt;br /&gt;
                { name: 'Foxy quiz', time: '09:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },&lt;br /&gt;
                { name: 'Foxy count', time: '12:00:00', src: '/images/f/f3/Foxy_count_event.png' },&lt;br /&gt;
                { name: 'Foxy Memory', time: '15:00:00', src: '/images/3/37/Foxy_memory_event.png' },&lt;br /&gt;
                { name: 'Foxy race (ship)', time: '19:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },&lt;br /&gt;
                { name: 'Deathmatch', time: '22:00:00', src: '/images/4/46/Deathmatch_event.png' },&lt;br /&gt;
            ],&lt;br /&gt;
            5: [&lt;br /&gt;
                { name: 'Foxy quiz', time: '02:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },&lt;br /&gt;
                { name: 'Foxy count', time: '09:00:00', src: '/images/f/f3/Foxy_count_event.png' },&lt;br /&gt;
                { name: 'Foxy Memory', time: '12:00:00', src: '/images/3/37/Foxy_memory_event.png' },&lt;br /&gt;
                { name: 'Foxy race (ship)', time: '15:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },&lt;br /&gt;
                { name: 'Deathmatch', time: '19:00:00', src: '/images/4/46/Deathmatch_event.png' },&lt;br /&gt;
                { name: 'Foxy race', time: '22:00:00', src: '/images/e/e8/Foxy_race_event.png' },&lt;br /&gt;
            ],&lt;br /&gt;
            6: [&lt;br /&gt;
                { name: 'Foxy count', time: '02:00:00', src: '/images/f/f3/Foxy_count_event.png' },&lt;br /&gt;
                { name: 'Foxy Memory', time: '09:00:00', src: '/images/3/37/Foxy_memory_event.png' },&lt;br /&gt;
                { name: 'Foxy race (ship)', time: '12:00:00', src: '/images/2/29/Foxy_race_ship_event.png' },&lt;br /&gt;
                { name: 'Deathmatch', time: '15:00:00', src: '/images/4/46/Deathmatch_event.png' },&lt;br /&gt;
                { name: 'Foxy race', time: '21:55:00', src: '/images/e/e8/Foxy_race_event.png' },&lt;br /&gt;
                { name: 'Foxy quiz', time: '22:00:00', src: '/images/b/b3/Foxy_quiz_event.png' },&lt;br /&gt;
            ]&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        function pad(value) {&lt;br /&gt;
            return value &amp;lt; 10 ? '0' + value : value;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function getBrazilTime() {&lt;br /&gt;
            var now = new Date();&lt;br /&gt;
            var utc = now.getTime() + (now.getTimezoneOffset() * 60000); // Converte para UTC&lt;br /&gt;
            return new Date(utc - (3 * 3600000)); // Ajusta para UTC-3&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function startGlobalEventCountdown(eventStartTime, eventEndTime) {&lt;br /&gt;
            if (globalEventsInterval) clearInterval(globalEventsInterval);&lt;br /&gt;
&lt;br /&gt;
            globalEventsInterval = setInterval(function () {&lt;br /&gt;
                var now = getBrazilTime().getTime();&lt;br /&gt;
&lt;br /&gt;
                if (now &amp;lt; eventEndTime) {&lt;br /&gt;
                    var timeRemaining = Math.ceil((eventEndTime - now) / 1000); // Segundos restantes&lt;br /&gt;
                    var minutes = Math.floor(timeRemaining / 60);&lt;br /&gt;
                    var seconds = timeRemaining % 60;&lt;br /&gt;
                    globalEventsTimer.html('Iniciando: ' + pad(minutes) + &amp;quot;:&amp;quot; + pad(seconds));&lt;br /&gt;
                } else {&lt;br /&gt;
                    clearInterval(globalEventsInterval);&lt;br /&gt;
                    setGlobalEvent();&lt;br /&gt;
                }&lt;br /&gt;
            }, 1000);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function setGlobalEvent() {&lt;br /&gt;
            var now = getBrazilTime(); // Usa o horário do Brasil&lt;br /&gt;
            var dayEvents = globalEventsInfo[now.getDay()];&lt;br /&gt;
&lt;br /&gt;
            if (!dayEvents || dayEvents.length === 0) {&lt;br /&gt;
                globalEventsImage.attr('src', '/images/0/0a/Anyevent.png'); // Imagem padrão&lt;br /&gt;
                globalEventsTimer.html('Acabaram os eventos por hoje');&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            for (var i = 0; i &amp;lt; dayEvents.length; i++) {&lt;br /&gt;
                var event = dayEvents[i];&lt;br /&gt;
                var timeParts = event.time.split(':');&lt;br /&gt;
                var eventStartTime = new Date(&lt;br /&gt;
                    now.getFullYear(),&lt;br /&gt;
                    now.getMonth(),&lt;br /&gt;
                    now.getDate(),&lt;br /&gt;
                    parseInt(timeParts[0], 10),&lt;br /&gt;
                    parseInt(timeParts[1], 10),&lt;br /&gt;
                    parseInt(timeParts[2], 10)&lt;br /&gt;
                ).getTime();&lt;br /&gt;
                var eventEndTime = eventStartTime + 5 * 60 * 1000; // Evento dura 5 minutos para entrada&lt;br /&gt;
&lt;br /&gt;
                if (now &amp;gt;= eventStartTime &amp;amp;&amp;amp; now &amp;lt; eventEndTime) {&lt;br /&gt;
                    // Durante o período de entrada do evento&lt;br /&gt;
                    globalEventsImage.attr('src', event.src);&lt;br /&gt;
                    startGlobalEventCountdown(eventStartTime, eventEndTime);&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (now &amp;lt; eventStartTime) {&lt;br /&gt;
                    // Antes do evento, exibe o horário fixo&lt;br /&gt;
                    globalEventsImage.attr('src', event.src);&lt;br /&gt;
                    globalEventsTimer.html(&lt;br /&gt;
                        new Date(eventStartTime).toLocaleTimeString('pt-BR', {&lt;br /&gt;
                            hour: '2-digit',&lt;br /&gt;
                            minute: '2-digit',&lt;br /&gt;
                        })&lt;br /&gt;
                    );&lt;br /&gt;
&lt;br /&gt;
                    // Só inicia a contagem regressiva quando estiver próximo (faltando 5 minutos ou menos)&lt;br /&gt;
                    if (eventStartTime - now &amp;lt;= 5 * 60 * 1000) {&lt;br /&gt;
                        startGlobalEventCountdown(eventStartTime, eventEndTime);&lt;br /&gt;
                    }&lt;br /&gt;
                    return;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // Após o último evento do dia&lt;br /&gt;
            globalEventsImage.attr('src', '/images/0/0a/Anyevent.png'); // Imagem padrão&lt;br /&gt;
            globalEventsTimer.html('Acabaram os eventos por hoje');&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $(document).ready(function () {&lt;br /&gt;
            setGlobalEvent();&lt;br /&gt;
        });&lt;br /&gt;
    })();&lt;br /&gt;
    //------- GLOBAL EVENTS TIMER ---------&lt;br /&gt;
    //------- TOOLTIP IMAGE---------&lt;br /&gt;
    /*&lt;br /&gt;
        Tooltip image consiste em uma funcionalidade que insere uma tag IMG &lt;br /&gt;
        quando o usuario passa o mouse por cima de uma imagem com a classe &amp;quot;tooltip-image&amp;quot;&lt;br /&gt;
        ao fazer é inserido no body uma tag IMG com a mesma &amp;quot;src&amp;quot; 1.3 vezes maior do que a imagem&lt;br /&gt;
        que o usuario está com o mouse em coma, esta tag IMG terá o mesmo X e Y do mouse + um offset &lt;br /&gt;
        para manter um distanciamento.&lt;br /&gt;
    */&lt;br /&gt;
&lt;br /&gt;
    //Distanciamento / margem do mouse&lt;br /&gt;
    const offset = { x: 20, y: 10 };&lt;br /&gt;
&lt;br /&gt;
    $('.tooltip-image').on('mouseenter',&lt;br /&gt;
        function (e) {&lt;br /&gt;
            var src = $(this).attr('src');&lt;br /&gt;
            var size = $(this).width() * 1.3;&lt;br /&gt;
&lt;br /&gt;
            $('&amp;lt;img src=&amp;quot;' + src + '&amp;quot; id=&amp;quot;bigImage&amp;quot; /&amp;gt;').css('left', e.pageX + offset.x).css('top', e.pageY + offset.y).css('width', size + &amp;quot;px&amp;quot;).appendTo('body').hide().fadeIn(500);&lt;br /&gt;
        }).on('mouseleave',&lt;br /&gt;
            function () {&lt;br /&gt;
                $('#bigImage').remove();&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
    $('.tooltip-image').mousemove(function (e) {&lt;br /&gt;
        $('#bigImage').css('left', e.pageX + offset.x).css('top', e.pageY + offset.y);&lt;br /&gt;
    });&lt;br /&gt;
    //------- TOOLTIP IMAGE---------&lt;br /&gt;
&lt;br /&gt;
    //------- FUNCIONALIDADES PACIENTES KUREHA ---------&lt;br /&gt;
    const pacients = {&lt;br /&gt;
        &amp;quot;bafo&amp;quot;: { image: &amp;quot;/images/c/ce/Bafo_static.png&amp;quot;, gif: &amp;quot;/images/e/e0/Bafo.gif&amp;quot; },&lt;br /&gt;
        &amp;quot;espirrando&amp;quot;: { image: &amp;quot;/images/thumb/5/5b/Espirro_static.png/180px-Espirro_static.png&amp;quot;, gif: &amp;quot;/images/thumb/9/90/Espirro.gif/180px-Espirro.gif&amp;quot;, audio: &amp;quot;/images/2/2b/Espirrando.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;enjoado&amp;quot;: { image: &amp;quot;/images/thumb/5/52/Enjoado_static.png/180px-Enjoado_static.png&amp;quot;, gif: &amp;quot;/images/thumb/7/76/Enjoado.gif/180px-Enjoado.gif&amp;quot;, audio: &amp;quot;/images/5/5b/Vomito.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;tremendo&amp;quot;: { image: &amp;quot;/images/thumb/3/35/Tremendo_static.png/180px-Tremendo_static.png&amp;quot;, gif: &amp;quot;/images/thumb/f/f4/Tremendo.gif/180px-Tremendo.gif&amp;quot; },&lt;br /&gt;
        &amp;quot;tossindo&amp;quot;: { image: &amp;quot;/images/thumb/e/ef/Tosse_static.png/180px-Tosse_static.png&amp;quot;, gif: &amp;quot;/images/thumb/a/a4/Tosse.gif/180px-Tosse.gif&amp;quot;, audio: &amp;quot;/images/f/f9/Tossindo.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;solucando&amp;quot;: { image: &amp;quot;/images/thumb/c/c0/Soluco_static.png/180px-Soluco_static.png&amp;quot;, gif: &amp;quot;/images/thumb/6/67/Soluco.gif/180px-Soluco.gif&amp;quot;, audio: &amp;quot;/images/e/e2/Solucando.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;funk&amp;quot;: { image: &amp;quot;/images/thumb/e/e8/Funkeiro_static.png/180px-Funkeiro_static.png &amp;quot;, gif: &amp;quot;/images/thumb/7/79/Funkeiro.gif/180px-Funkeiro.gif&amp;quot;, audio: &amp;quot;/images/d/d2/Funk.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;fedendo&amp;quot;: { image: &amp;quot;/images/thumb/1/1e/Fedido_static.png/180px-Fedido_static.png&amp;quot;, gif: &amp;quot;/images/thumb/c/c9/Fedido.gif/180px-Fedido.gif&amp;quot; },&lt;br /&gt;
        &amp;quot;febre&amp;quot;: { image: &amp;quot;/images/thumb/1/14/Febre_static.png/180px-Febre_static.png&amp;quot;, gif: &amp;quot;/images/thumb/7/75/Febre.gif/180px-Febre.gif&amp;quot; },&lt;br /&gt;
        &amp;quot;endemoniado&amp;quot;: { audio: &amp;quot;/images/3/32/Risada_maligna.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;fome&amp;quot;: { audio: &amp;quot;/images/3/37/Estomago_roncando.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;cardiaco&amp;quot;: { audio: &amp;quot;/images/2/27/Coracao_batendo.ogg&amp;quot; }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    const audioPlayer = document.querySelector(&amp;quot;#audio&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;.pacient-audio&amp;quot;).on(&amp;quot;click&amp;quot;, function (e) {&lt;br /&gt;
        id = $(this).attr('id');&lt;br /&gt;
&lt;br /&gt;
        if (pacients[id]) {&lt;br /&gt;
            audioPlayer.src = pacients[id].audio;&lt;br /&gt;
            audioPlayer.play();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $('.interactive-pacient').on('mouseenter', function (e) {&lt;br /&gt;
        id = $(this).attr('id');&lt;br /&gt;
&lt;br /&gt;
        if (pacients[id])&lt;br /&gt;
            $(this).attr('src', pacients[id].gif);&lt;br /&gt;
    }).on('mouseleave', function (e) {&lt;br /&gt;
        id = $(this).attr('id');&lt;br /&gt;
&lt;br /&gt;
        if (pacients[id])&lt;br /&gt;
            $(this).attr('src', pacients[id].image);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    //------- FUNCIONALIDADES PACIENTES KUREHA ---------&lt;br /&gt;
    //------- FUNCIONALIDADES BUZINAS ---------&lt;br /&gt;
    const horns = {&lt;br /&gt;
        &amp;quot;Buzinadelacucha&amp;quot;: { audio: &amp;quot;/images/5/55/Buzinadelacucha-audio.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;Buzinadefumaca&amp;quot;: { audio: &amp;quot;/images/3/3a/Buzinadefumaca-audio.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;Buzinadecaminhao&amp;quot;: { audio: &amp;quot;/images/e/e4/Buzinadecaminhao-audio.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;Buzinadetrem&amp;quot;: { audio: &amp;quot;/images/3/34/Buzinadetrem-audio.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;Buzinadeesporte&amp;quot;: { audio: &amp;quot;/images/2/2b/Buzinadeesporte-audio.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;Buzinadear&amp;quot;: { audio: &amp;quot;/images/9/95/Buzinadear-audio.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;Buzinadepalhaco&amp;quot;: { audio: &amp;quot;/images/a/a4/Buzinadepalhaco-audio.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;Buzinadeinvestida&amp;quot;: { audio: &amp;quot;/images/f/ff/Buzinadeinvestida-audio.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;Buzinadebicicleta&amp;quot;: { audio: &amp;quot;/images/1/15/Buzinadebicicleta-audio.ogg&amp;quot; },&lt;br /&gt;
        &amp;quot;Buzinadeneblina&amp;quot;: { audio: &amp;quot;/images/6/64/Buzinadeneblina-audio.ogg&amp;quot; }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    const hornAudioPlayer = document.querySelector(&amp;quot;#audio&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;.horn-audio&amp;quot;).on(&amp;quot;click&amp;quot;, function (e) {&lt;br /&gt;
        const id = $(this).attr('id');&lt;br /&gt;
        if (horns[id]) {&lt;br /&gt;
            hornAudioPlayer.src = horns[id].audio;&lt;br /&gt;
            hornAudioPlayer.play();&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    //------- FUNCIONALIDADES BUZINAS ---------&lt;br /&gt;
&lt;br /&gt;
    //------- PERSONAGENS ---------&lt;br /&gt;
&lt;br /&gt;
    const characters = [&lt;br /&gt;
    	{ name: &amp;quot;Silvers Rayleigh&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Silvers_Rayleigh&amp;quot;, img: &amp;quot;/images/f/f1/Rayleigh_Card.png&amp;quot; },&lt;br /&gt;
    	{ name: &amp;quot;Monkey D Garp&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;marine&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Monkey_D_Garp&amp;quot;, img: &amp;quot;/images/a/a1/GarpCard.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Aokiji Dio&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;marine&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Aokiji&amp;quot;, img: &amp;quot;/images/6/67/Aokiji_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bartolomew Kuma&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Kuma&amp;quot;, img: &amp;quot;/images/b/b5/Card-kuma.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Boa Hancock&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;], link: &amp;quot;/Boa_Hancock&amp;quot;, img: &amp;quot;/images/4/47/Card-hancock.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Borsalino Kizaru&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Kizaru&amp;quot;, img: &amp;quot;/images/3/32/Card-kizaru.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Brook (TS)&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Brook_(Timeskip)&amp;quot;, img: &amp;quot;/images/1/1d/Card-brookts.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Tony Tony Chopper (TS) Gurren&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Chopper_(Timeskip)&amp;quot;, img: &amp;quot;/images/5/53/Card-chopperts.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Doflamingo&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Doflamingo&amp;quot;, img: &amp;quot;/images/8/8d/Card-doflamingo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Dracule Mihawk&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Mihawk&amp;quot;, img: &amp;quot;/images/9/91/Card-mihawk.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Emporio Ivankov&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Ivankov&amp;quot;, img: &amp;quot;/images/c/ca/Card-ivankov.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Enel&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;dps&amp;quot;], link: &amp;quot;/Enel&amp;quot;, img: &amp;quot;/images/8/85/Enel_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Franky (TS) Sanitaria&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Franky_(Timeskip)&amp;quot;, img: &amp;quot;/images/d/d0/Card-frankyts.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Jinbe&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Jinbe&amp;quot;, img: &amp;quot;/images/2/2e/Card-jinbe.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Marshall D. Teach Barba Negra&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;diamond&amp;quot;], link: &amp;quot;/Marshall_D._Teach&amp;quot;, img: &amp;quot;/images/f/ff/Card-kurohige.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Marco Abacaxi&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;fighter&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;diamond&amp;quot;], link: &amp;quot;/Marco&amp;quot;, img: &amp;quot;/images/2/2b/Marco_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Monkey D. Luffy (TS) Visno&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Luffy_(Timeskip)&amp;quot;, img: &amp;quot;/images/e/ed/Card-luffyts.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Nami (TS)&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;], link: &amp;quot;/Nami_(timeskip)&amp;quot;, img: &amp;quot;/images/3/35/Card-namits.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Portgas D. Ace Duduh&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;], link: &amp;quot;/Ace&amp;quot;, img: &amp;quot;/images/4/40/Card-ace.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Robin (TS)&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Robin_(Timeskip)&amp;quot;, img: &amp;quot;/images/b/b0/Card-robints.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Roronoa Zoro (TS)&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Zoro_(Timeskip)&amp;quot;, img: &amp;quot;/images/7/74/Card-zorots.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Sabo&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Sabo&amp;quot;, img: &amp;quot;/images/0/04/Card-sabo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Sakazuki Akainu&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Akainu&amp;quot;, img: &amp;quot;/images/b/b0/Card_akainu.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Shanks&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Shanks&amp;quot;, img: &amp;quot;/images/a/aa/Card-shanks.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Usopp (TS)&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Usopp_(Timeskip)&amp;quot;, img: &amp;quot;/images/c/cc/Card-usoppts.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Uta&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Uta&amp;quot;, img: &amp;quot;/images/2/22/Card_uta.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Sanji (TS)&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;diamond&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Sanji_(Timeskip)&amp;quot;, img: &amp;quot;/images/7/7a/Card-sanjits.png&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
        { name: &amp;quot;Kalifa&amp;quot;, types: [&amp;quot;support&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Kalifa&amp;quot;, img: &amp;quot;/images/3/39/Kalifa_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Jabra&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Jabra&amp;quot;, img: &amp;quot;/images/9/98/Jabra_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Kaku&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Kaku&amp;quot;, img: &amp;quot;/images/9/98/Kaku_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Rob Lucci&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Rob Lucci&amp;quot;, img: &amp;quot;/images/b/b1/Rob_Lucci_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Blueno&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Blueno&amp;quot;, img: &amp;quot;/images/5/55/Blueno_card.png&amp;quot; },&lt;br /&gt;
		{ name: &amp;quot;Marguerite&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Marguerite&amp;quot;, img: &amp;quot;/images/1/1c/Marguerite_Card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Baby 5&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;shooter&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;dps&amp;quot;], link: &amp;quot;/Baby_5&amp;quot;, img: &amp;quot;/images/5/5e/Baby5_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bartolomeo&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Bartolomeo&amp;quot;, img: &amp;quot;/images/a/a9/Card-barto.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Basil Hawkins Lost&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Basil_Hawkins&amp;quot;, img: &amp;quot;/images/8/89/Card-hawkins.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bastille&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Bastille&amp;quot;, img: &amp;quot;/images/1/13/Card-bastille.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bellamy&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Bellamy&amp;quot;, img: &amp;quot;/images/7/7e/Card-bellamy.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bonney Poseidon&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Bonney&amp;quot;, img: &amp;quot;/images/9/91/Card-bonney.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Brook&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/brook&amp;quot;, img: &amp;quot;/images/7/76/Card-brook.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Capone gang bege&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Capone_Bege&amp;quot;, img: &amp;quot;/images/c/c0/Card-capone.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Carrot&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Carrot&amp;quot;, img: &amp;quot;/images/8/8d/Card-carrot.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Tony Tony Chopper Gurren&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Chopper&amp;quot;, img: &amp;quot;/images/1/19/Card-chopper.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Crocodile&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Crocodile&amp;quot;, img: &amp;quot;/images/5/5d/Card-crocodile.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Dalmatian&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Dalmatian&amp;quot;, img: &amp;quot;/images/9/99/Card-dalmatian.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Franky Sanitaria&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Franky&amp;quot;, img: &amp;quot;/images/6/61/Card-franky.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Gecko Moria Coxinha&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Gecko_Moria&amp;quot;, img: &amp;quot;/images/f/fc/Moria_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Hina&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Hina&amp;quot;, img: &amp;quot;/images/5/57/Card-hina.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Jesus Burgess&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Jesus_Burgess&amp;quot;, img: &amp;quot;/images/2/28/Card-burgess.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Eustass Kid Rag&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Kid&amp;quot;, img: &amp;quot;/images/9/9a/Card-kid.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Killer&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Killer&amp;quot;, img: &amp;quot;/images/b/b2/Card-killer.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Koala&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Koala&amp;quot;, img: &amp;quot;/images/f/f3/Card-koala.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Leo &amp;amp; Mansherry&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Leo&amp;quot;, img: &amp;quot;/images/d/d9/Card-leo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Monkey D. Luffy Visno&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Luffy&amp;quot;, img: &amp;quot;/images/a/af/Card-luffy.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Nami&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/nami&amp;quot;, img: &amp;quot;/images/0/08/Card-nami.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Perona&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Perona&amp;quot;, img: &amp;quot;/images/6/6d/Card-perona.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Rebecca Ghoul Den Berry&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Rebecca&amp;quot;, img: &amp;quot;/images/9/91/Card-rebecca.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Nico Robin&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/Robin&amp;quot;, img: &amp;quot;/images/3/3f/Card-robin.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Roronoa zoro&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Roronoa_Zoro&amp;quot;, img: &amp;quot;/images/6/6f/Card-zoro.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Ryuma&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Ryuma&amp;quot;, img: &amp;quot;/images/a/ac/Card-ryuma.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Scratchmen Apoo&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Apoo&amp;quot;, img: &amp;quot;/images/9/90/Card-apoo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Smoker Piseiro&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Smoker&amp;quot;, img: &amp;quot;/images/f/fb/Card-smoker.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Trafalgar Law&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Trafalgar_Law&amp;quot;, img: &amp;quot;/images/b/b9/Card-law.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Urouge&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Urouge&amp;quot;, img: &amp;quot;/images/9/98/Card-urouge.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Usopp&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Usopp&amp;quot;, img: &amp;quot;/images/a/ac/Card-usopp.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Van Augur&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Van Augur&amp;quot;, img: &amp;quot;/images/c/c7/Card-vanaugur.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Ichiji&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Ichiji&amp;quot;, img: &amp;quot;/images/8/8c/Card-ichiji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Niji&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Niji&amp;quot;, img: &amp;quot;/images/6/66/Card-niji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Reiju Athena&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;gold&amp;quot;], link: &amp;quot;/Reiju&amp;quot;, img: &amp;quot;/images/2/23/Card-reiju.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Sanji&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Sanji&amp;quot;, img: &amp;quot;/images/0/04/Card-sanji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Yonji&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Yonji&amp;quot;, img: &amp;quot;/images/7/73/Card-yonji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;X-drake&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;gold&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/X_Drake&amp;quot;, img: &amp;quot;/images/6/69/Card-drake.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Satori&amp;quot;, types: [&amp;quot;support&amp;quot;, &amp;quot;shooter&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/Satori&amp;quot;, img: &amp;quot;/images/f/f3/Satori_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Gedatsu&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/Gedatsu&amp;quot;, img: &amp;quot;/images/f/f6/Gedatsu_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Ohm&amp;quot;, types: [&amp;quot;tank&amp;quot;, &amp;quot;slasher&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/Ohm&amp;quot;, img: &amp;quot;/images/1/1e/Ohm_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Shura&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/Shura&amp;quot;, img: &amp;quot;/images/2/2e/Shura_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Arlong&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;silver&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Arlong&amp;quot;, img: &amp;quot;/images/1/1e/Card-arlong.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bepo&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/Bepo&amp;quot;, img: &amp;quot;/images/1/1d/Card-bepo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Mr.2&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/mr.2&amp;quot;, img: &amp;quot;/images/2/27/Card-bonchan.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Buggy&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;silver&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/buggy&amp;quot;, img: &amp;quot;/images/c/ca/Card-buggy.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Daddy Masterson&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/Daddy_Masterson&amp;quot;, img: &amp;quot;/images/2/20/Card-daddy.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;mr.1 Daz Bonez Kolivier&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/mr.1&amp;quot;, img: &amp;quot;/images/6/61/Card-dazbonez.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Miss Doublefinger Zala&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/Miss_Doublefinger&amp;quot;, img: &amp;quot;/images/5/5f/Card-doublefinger.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Don Krieg&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/don_Krieg&amp;quot;, img: &amp;quot;/images/8/8f/Card-krieg.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Kuro&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/kuro&amp;quot;, img: &amp;quot;/images/3/3d/Card-kuro.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;mr.3 Galdino&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;silver&amp;quot;, &amp;quot;bridge&amp;quot;], link: &amp;quot;/mr.3&amp;quot;, img: &amp;quot;/images/7/75/Card-mr3.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Tashigi&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/tashigi&amp;quot;, img: &amp;quot;/images/b/b8/Card-tashigi.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Nefertari Vivi&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;silver&amp;quot;], link: &amp;quot;/Vivi&amp;quot;, img: &amp;quot;/images/9/9c/Card-vivi.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Wapol&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;silver&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/wapol&amp;quot;, img: &amp;quot;/images/b/ba/Card-wapol.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Alvida&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Alvida&amp;quot;, img: &amp;quot;/images/8/83/Card-alvida.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Buchi &amp;amp; Sham&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Buchi&amp;quot;, img: &amp;quot;/images/0/0b/Card-buchi.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Cabaji&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Cabaji&amp;quot;, img: &amp;quot;/images/9/9d/Card-cabaji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Chew&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;bronze&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Chew&amp;quot;, img: &amp;quot;/images/0/0f/Card-chew.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Eric&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;slasher&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Eric&amp;quot;, img: &amp;quot;/images/3/31/Card-eric.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Gin&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Gin&amp;quot;, img: &amp;quot;/images/1/18/Card-gin.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Miss Goldenweek&amp;quot;, types: [&amp;quot;support&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Goldenweek&amp;quot;, img: &amp;quot;/images/0/0e/Card-goldenweek.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Hatchan&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Hatchan&amp;quot;, img: &amp;quot;/images/3/31/Card-hatchan.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Jango&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;support&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Jango&amp;quot;, img: &amp;quot;/images/4/48/Card-jango.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Kuroobi&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;bronze&amp;quot;, &amp;quot;break_wall&amp;quot;], link: &amp;quot;/Kuroobi&amp;quot;, img: &amp;quot;/images/6/6a/Card-kuroobi.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Mohji&amp;quot;, types: [&amp;quot;especialist&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Mohji&amp;quot;, img: &amp;quot;/images/5/58/Card-mohji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Morgan&amp;quot;, types: [&amp;quot;slasher&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Morgan&amp;quot;, img: &amp;quot;/images/4/43/Card-morgan.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Mr.4&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;bruiser&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Mr.4&amp;quot;, img: &amp;quot;/images/9/90/Card-mr4.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Mr.5&amp;quot;, types: [&amp;quot;shooter&amp;quot;, &amp;quot;dps&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Mr.5&amp;quot;, img: &amp;quot;/images/4/49/Card-mr5.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Pearl&amp;quot;, types: [&amp;quot;fighter&amp;quot;, &amp;quot;especialist&amp;quot;, &amp;quot;tank&amp;quot;, &amp;quot;bronze&amp;quot;], link: &amp;quot;/Pearl&amp;quot;, img: &amp;quot;/images/d/de/Card-pearl.png&amp;quot; },&lt;br /&gt;
    ];&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;.filter--icon&amp;quot;).on(&amp;quot;click&amp;quot;, function () {&lt;br /&gt;
        const id = $(this).attr(&amp;quot;id&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        if ($(this).hasClass(&amp;quot;all&amp;quot;)) {&lt;br /&gt;
            $('.filter--icon.active').removeClass('active');&lt;br /&gt;
            $(&amp;quot;.characters&amp;quot;).addClass('show');&lt;br /&gt;
            $(&amp;quot;.filter--icon.all&amp;quot;).addClass('active');&lt;br /&gt;
            return false;&lt;br /&gt;
        } else {&lt;br /&gt;
            $(&amp;quot;.filter--icon.all&amp;quot;).removeClass('active');&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if ($(this).hasClass(&amp;quot;active&amp;quot;)) {&lt;br /&gt;
            $(this).removeClass('active');&lt;br /&gt;
            actives = $('.filter--icon.active');&lt;br /&gt;
            query = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
            $.each(actives, function (key, item) {&lt;br /&gt;
                query += &amp;quot;[data-type-&amp;quot; + item.id + &amp;quot;]&amp;quot;;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $(&amp;quot;.characters&amp;quot; + query).addClass('show');&lt;br /&gt;
        } else {&lt;br /&gt;
            if ($(this).hasClass(&amp;quot;tier&amp;quot;)) {&lt;br /&gt;
                $('.filter--icon.tier.active').removeClass('active');&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            $(this).addClass('active');&lt;br /&gt;
            $(&amp;quot;.characters&amp;quot;).removeClass('show');&lt;br /&gt;
            query = &amp;quot;&amp;quot;;&lt;br /&gt;
            actives = $('.filter--icon.active');&lt;br /&gt;
&lt;br /&gt;
            $.each(actives, function (key, item) {&lt;br /&gt;
                query += &amp;quot;[data-type-&amp;quot; + item.id + &amp;quot;]&amp;quot;;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $(&amp;quot;.characters&amp;quot; + query).addClass('show');&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $.each(characters, function (key, item) {&lt;br /&gt;
        data = '';&lt;br /&gt;
        id = item.name.replace(/\s/g, '_').toLowerCase();&lt;br /&gt;
&lt;br /&gt;
        $.each(item.types, function (key, value) {&lt;br /&gt;
            data += &amp;quot;data-type-&amp;quot; + value + &amp;quot; &amp;quot;;&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        $(&amp;quot;#characters-container&amp;quot;).append(&lt;br /&gt;
            &amp;quot;&amp;lt;div id=&amp;quot; + id + &amp;quot; class='characters show' &amp;quot; + data + &amp;quot; &amp;gt;&amp;quot; +&lt;br /&gt;
            &amp;quot;&amp;lt;a href='https://wiki.gla.com.br/index.php&amp;quot; + item.link + &amp;quot;'&amp;gt;&amp;quot; +&lt;br /&gt;
            &amp;quot;&amp;lt;img src='&amp;quot; + item.img + &amp;quot;' alt='imagem de &amp;quot; + item.name + &amp;quot;' /&amp;gt;&amp;quot; +&lt;br /&gt;
            &amp;quot;&amp;lt;/a&amp;gt;&amp;quot; +&lt;br /&gt;
            &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
        );&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;.filter--searchButton&amp;quot;).on(&amp;quot;click&amp;quot;, function () {&lt;br /&gt;
        $(&amp;quot;.filter--icon.active&amp;quot;).removeClass('active');&lt;br /&gt;
        $(&amp;quot;.characters.show&amp;quot;).removeClass('show');&lt;br /&gt;
        if ($(&amp;quot;#f-input&amp;quot;).val().toLowerCase() != '') {&lt;br /&gt;
            $(&amp;quot;.characters[id*=&amp;quot; + $(&amp;quot;#f-input&amp;quot;).val().toLowerCase() + &amp;quot;]&amp;quot;).addClass('show');&lt;br /&gt;
        } else {&lt;br /&gt;
            $(&amp;quot;.characters&amp;quot;).addClass('show');&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $('#f-input').keypress(function (e) {&lt;br /&gt;
        const key = e.which;&lt;br /&gt;
        if (key == 13)  // the enter key code&lt;br /&gt;
        {&lt;br /&gt;
            $('.filter--searchButton').click();&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    //------- PERSONAGENS ---------&lt;br /&gt;
&lt;br /&gt;
    //------- WANTED ---------&lt;br /&gt;
    const wanted_slashers = [&lt;br /&gt;
        { name: &amp;quot;Baby 5&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;jango&amp;quot;], img: &amp;quot;/images/5/5e/Baby5_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Ohm&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/1/1e/Ohm_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Roronoa Zoro&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/6/6f/Card-zoro.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Shanks&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;bellamy&amp;quot;], img: &amp;quot;/images/a/aa/Card-shanks.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Dracule Mihawk&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;crocodile&amp;quot;], img: &amp;quot;/images/9/91/Card-mihawk.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Killer&amp;quot;, wanteds: [&amp;quot;rebecca&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/b/b2/Card-killer.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Tashigi&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/b/b8/Card-tashigi.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Roronoa Zoro (TS)&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/7/74/Card-zorots.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Rebbeca&amp;quot;, wanteds: [&amp;quot;franky&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/9/91/Card-rebecca.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Carrot&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/8/8d/Card-carrot.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Shimotsuki Ryuma&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;crocodile&amp;quot;], img: &amp;quot;/images/a/ac/Card-ryuma.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Trafalgar Law&amp;quot;, wanteds: [&amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/b/b9/Card-law.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Mr. 1&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;], img: &amp;quot;/images/6/61/Card-dazbonez.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bastille&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;bellamy&amp;quot;], img: &amp;quot;/images/1/13/Card-bastille.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Dalmatian&amp;quot;, wanteds: [&amp;quot;capone&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;crocodile&amp;quot;], img: &amp;quot;/images/9/99/Card-dalmatian.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Morgan&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/4/43/Card-morgan.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Cabaji&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/9/9d/Card-cabaji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Kuro&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;bellamy&amp;quot;], img: &amp;quot;/images/3/3d/Card-kuro.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Eric&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/3/31/Card-eric.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Miss Doublefinger&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;], img: &amp;quot;/images/5/5f/Card-doublefinger.png&amp;quot; },&lt;br /&gt;
    ];&lt;br /&gt;
&lt;br /&gt;
    const wanted_shooters = [&lt;br /&gt;
        { name: &amp;quot;Baby 5&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;jango&amp;quot;], img: &amp;quot;/images/5/5e/Baby5_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Daddy Masterson&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;], img: &amp;quot;/images/2/20/Card-daddy.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Enel&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/8/85/Enel_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Capone Gang Bege&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/c/c0/Card-capone.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Franky&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/6/61/Card-franky.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Eustass kid&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;crocodile&amp;quot;], img: &amp;quot;/images/9/9a/Card-kid.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Van Augur&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/c/c7/Card-vanaugur.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Portgas D. Ace&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;], img: &amp;quot;/images/4/40/Card-ace.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Usopp (TS)&amp;quot;, wanteds: [&amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/c/cc/Card-usoppts.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Donquixote Doflamingo&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/8/8d/Card-doflamingo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Buggy&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/c/ca/Card-buggy.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Niji&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/6/66/Card-niji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Wapol&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;], img: &amp;quot;/images/b/ba/Card-wapol.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Franky (TS)&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/d/d0/Card-frankyts.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Borsalino Kizaru&amp;quot;, wanteds: [&amp;quot;capone&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/3/32/Card-kizaru.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Don Krieg&amp;quot;, wanteds: [&amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/8/8f/Card-krieg.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Eric&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/3/31/Card-eric.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Mr. 4&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;morgan&amp;quot;], img: &amp;quot;/images/9/90/Card-mr4.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Mr. 5&amp;quot;, wanteds: [&amp;quot;brook&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;], img: &amp;quot;/images/4/49/Card-mr5.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Gin&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/1/18/Card-gin.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Chew&amp;quot;, wanteds: [&amp;quot;mr. 5&amp;quot;], img: &amp;quot;/images/0/0f/Card-chew.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Usopp&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;], img: &amp;quot;/images/a/ac/Card-usopp.png&amp;quot; },&lt;br /&gt;
    ];&lt;br /&gt;
&lt;br /&gt;
    const wanted_fighters = [&lt;br /&gt;
        { name: &amp;quot;Sabo&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/0/04/Card-sabo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;X-Drake&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;, &amp;quot;bellamy&amp;quot;], img: &amp;quot;/images/6/69/Card-drake.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Hina&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/5/57/Card-hina.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Smoker&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/f/fb/Card-smoker.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bellamy&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/7/7e/Card-bellamy.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Urouge&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;chew&amp;quot;], img: &amp;quot;/images/9/98/Card-urouge.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Boa Hancock&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;, &amp;quot;bellamy&amp;quot;], img: &amp;quot;/images/4/47/Card-hancock.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;VinsmokeYonji&amp;quot;, wanteds: [&amp;quot;mr. 4&amp;quot;, &amp;quot;kuro&amp;quot;], img: &amp;quot;/images/7/73/Card-yonji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Ichiji&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/8/8c/Card-ichiji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Mr. 2&amp;quot;, wanteds: [&amp;quot;bonney&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/2/27/Card-bonchan.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Sanji (TS)&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/7/7a/Card-sanjits.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Monkey D. Luffy (TS)&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/e/ed/Card-luffyts.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Koala&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;, &amp;quot;bellamy&amp;quot;], img: &amp;quot;/images/f/f3/Card-koala.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Burgess&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/2/28/Card-burgess.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Monkey D. Luffy&amp;quot;, wanteds: [&amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/a/af/Card-luffy.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bepo&amp;quot;, wanteds: [&amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/1/1d/Card-bepo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Sanji&amp;quot;, wanteds: [&amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/0/04/Card-sanji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Arlong&amp;quot;, wanteds: [&amp;quot;mr. 2&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/1/1e/Card-arlong.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Gin&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/1/18/Card-gin.png&amp;quot; },&lt;br /&gt;
    ];&lt;br /&gt;
&lt;br /&gt;
    const wanted_especialists = [&lt;br /&gt;
        { name: &amp;quot;Sakazuki Akainu&amp;quot;, wanteds: [&amp;quot;capone&amp;quot;, &amp;quot;bellamy&amp;quot;], img: &amp;quot;/images/b/b0/Card_akainu.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Uta&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;], img: &amp;quot;/images/2/22/Card_uta.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Sabo&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/0/04/Card-sabo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Enel&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/8/85/Enel_card.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Vinsmoke Reiju&amp;quot;, wanteds: [&amp;quot;brook&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/2/23/Card-reiju.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Portgas D. Ace&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;], img: &amp;quot;/images/4/40/Card-ace.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Donquixte Doflamingo&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/8/8d/Card-doflamingo.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Borsalino Kizaru&amp;quot;, wanteds: [&amp;quot;capone&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/3/32/Card-kizaru.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Trafalgar Law&amp;quot;, wanteds: [&amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/b/b9/Card-law.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Carrot&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/8/8d/Card-carrot.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Nami (TS)&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;], img: &amp;quot;/images/3/35/Card-namits.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Nami&amp;quot;, wanteds: [&amp;quot;chopper&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;law&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/0/08/Card-nami.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Nico Robin&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/3/3f/Card-robin.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Nico Robin (TS)&amp;quot;, wanteds: [&amp;quot;bonney&amp;quot;, &amp;quot;leo&amp;quot;, &amp;quot;apoo&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/b/b0/Card-robints.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bartolomeo&amp;quot;, wanteds: [&amp;quot;urouge&amp;quot;, &amp;quot;reiju&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/a/a9/Card-barto.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Marshall D. Teach&amp;quot;, wanteds: [&amp;quot;bonney&amp;quot;, &amp;quot;perona&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;goldenweek&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/f/ff/Card-kurohige.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Crocodile&amp;quot;, wanteds: [&amp;quot;nami&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/5/5d/Card-crocodile.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Bartolomew Kuma&amp;quot;, wanteds: [&amp;quot;robin&amp;quot;, &amp;quot;nami&amp;quot;, &amp;quot;brook&amp;quot;, &amp;quot;chopper&amp;quot;, &amp;quot;franky&amp;quot;, &amp;quot;zoro&amp;quot;, &amp;quot;luffy&amp;quot;, &amp;quot;sanji&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;rebecca&amp;quot;, &amp;quot;usopp&amp;quot;, &amp;quot;ryuma&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;burgess&amp;quot;, &amp;quot;capone&amp;quot;, &amp;quot;kid&amp;quot;, &amp;quot;van augur&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;niji&amp;quot;, &amp;quot;ichiji&amp;quot;, &amp;quot;baby 5&amp;quot;, &amp;quot;mr. 1&amp;quot;, &amp;quot;mr. 2&amp;quot;, &amp;quot;mr. 3&amp;quot;, &amp;quot;doublefinger&amp;quot;, &amp;quot;mr. 4&amp;quot;, &amp;quot;mr. 5&amp;quot;, &amp;quot;bepo&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;arlong&amp;quot;, &amp;quot;hatchan&amp;quot;, &amp;quot;buchi&amp;quot;, &amp;quot;chew&amp;quot;, &amp;quot;jango&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;koala&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;kuro&amp;quot;, &amp;quot;gin&amp;quot;, &amp;quot;krieg&amp;quot;, &amp;quot;mohji&amp;quot;, &amp;quot;morgan&amp;quot;, &amp;quot;drake&amp;quot;, &amp;quot;hawkins&amp;quot;, &amp;quot;alvida&amp;quot;, &amp;quot;wapol&amp;quot;, &amp;quot;crocodile&amp;quot;, &amp;quot;cabaji&amp;quot;, &amp;quot;bellamy&amp;quot;], img: &amp;quot;/images/b/b5/Card-kuma.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Basil Hawkins&amp;quot;, wanteds: [&amp;quot;luffy&amp;quot;, &amp;quot;urouge&amp;quot;, &amp;quot;yonji&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;kuroobi&amp;quot;, &amp;quot;alvida&amp;quot;], img: &amp;quot;/images/8/89/Card-hawkins.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Mohji&amp;quot;, wanteds: [&amp;quot;alvida&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;buggy&amp;quot;, &amp;quot;pearl&amp;quot;, &amp;quot;van augur&amp;quot;], img: &amp;quot;/images/5/58/Card-mohji.png&amp;quot; },&lt;br /&gt;
        { name: &amp;quot;Leo &amp;amp; Mansherry&amp;quot;, wanteds: [&amp;quot;alvida&amp;quot;, &amp;quot;bonney&amp;quot;, &amp;quot;mohji&amp;quot;], img: &amp;quot;/images/d/d9/Card-leo.png&amp;quot; },&lt;br /&gt;
    ];&lt;br /&gt;
&lt;br /&gt;
    function filterAndAppend(array, value, id) {&lt;br /&gt;
        whoDo = array.filter(&lt;br /&gt;
            function (v) {&lt;br /&gt;
                return v.wanteds.includes(value);&lt;br /&gt;
            }&lt;br /&gt;
        );&lt;br /&gt;
&lt;br /&gt;
        $.each(whoDo, function (key, item) {&lt;br /&gt;
            $(&amp;quot;.wantedPortraits#&amp;quot; + id).append(&lt;br /&gt;
                &amp;quot;&amp;lt;div class='wantedPortrait' &amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;img src='&amp;quot; + item.img + &amp;quot;' alt='imagem de &amp;quot; + item.name + &amp;quot;' /&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
            );&lt;br /&gt;
        })&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;#selectbox-wanted&amp;quot;).on(&amp;quot;input&amp;quot;, function () {&lt;br /&gt;
        const value = $(this).val();&lt;br /&gt;
&lt;br /&gt;
        if ($(&amp;quot;.wantedPortrait&amp;quot;))&lt;br /&gt;
            $(&amp;quot;.wantedPortrait&amp;quot;).remove();&lt;br /&gt;
&lt;br /&gt;
        filterAndAppend(wanted_shooters, value, &amp;quot;wanted-shooter&amp;quot;);&lt;br /&gt;
        filterAndAppend(wanted_slashers, value, &amp;quot;wanted-slasher&amp;quot;);&lt;br /&gt;
        filterAndAppend(wanted_fighters, value, &amp;quot;wanted-fighter&amp;quot;);&lt;br /&gt;
        filterAndAppend(wanted_especialists, value, &amp;quot;wanted-especialist&amp;quot;);&lt;br /&gt;
    });&lt;br /&gt;
    //------- WANTED ---------&lt;br /&gt;
&lt;br /&gt;
    //------- SKILL TAB ---------&lt;br /&gt;
    $('.tab-skill').on('click', function () {&lt;br /&gt;
        $('.tab-skill.active').removeClass('active');&lt;br /&gt;
        $(this).addClass('active');&lt;br /&gt;
        const skillId = $(this).data('skill-id');&lt;br /&gt;
        if ($(&amp;quot;.skillInfo[data-skill-id=&amp;quot; + skillId + &amp;quot;]&amp;quot;)) {&lt;br /&gt;
            $(&amp;quot;.skillInfo.active&amp;quot;).removeClass('active');&lt;br /&gt;
            $(&amp;quot;.skillInfo[data-skill-id=&amp;quot; + skillId + &amp;quot;]&amp;quot;).addClass('active');&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
    //------- SKILL TAB ---------&lt;br /&gt;
&lt;br /&gt;
    //------- CALCULATOR XP ---------&lt;br /&gt;
    const maximum_level = 110;&lt;br /&gt;
    const tier_values = {&lt;br /&gt;
        &amp;quot;diamond&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;gold&amp;quot;: 1,&lt;br /&gt;
        &amp;quot;silver&amp;quot;: 2,&lt;br /&gt;
        &amp;quot;bronze&amp;quot;: 3&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;.calcXp--tierIcon&amp;quot;).on(&amp;quot;click&amp;quot;, function () {&lt;br /&gt;
        $(&amp;quot;.calcXp--tierIcon.active&amp;quot;).removeClass('active');&lt;br /&gt;
        $(this).addClass('active');&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;#calculate-btn&amp;quot;).on('click', function () {&lt;br /&gt;
        getNeededPotions();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    function calcMissingXpInPotions() {&lt;br /&gt;
        const currentPercentOfXp = $(&amp;quot;#char-currentPercentOfXp&amp;quot;).val() != &amp;quot;&amp;quot; ? $(&amp;quot;#char-currentPercentOfXp&amp;quot;).val() : 100;&lt;br /&gt;
        const currentLevel = $(&amp;quot;#char-level&amp;quot;).val() != &amp;quot;&amp;quot; ? $(&amp;quot;#char-level&amp;quot;).val() : 1;&lt;br /&gt;
        const levelToUp = $(&amp;quot;#char-levelToUp&amp;quot;).val() != &amp;quot;&amp;quot; ? $(&amp;quot;#char-levelToUp&amp;quot;).val() : 110;&lt;br /&gt;
        const charTier = $(&amp;quot;.calcXp--tierIcon.active&amp;quot;).length != 0 ? tier_values[$(&amp;quot;.calcXp--tierIcon.active&amp;quot;).attr('id')] : tier_values[&amp;quot;gold&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
        const percentToUp = 100 - currentPercentOfXp;&lt;br /&gt;
        const currentXp = ((50 * (Math.pow((currentLevel - 1), 3)) - 150 * (Math.pow((currentLevel - 1), 2)) + 400 * (currentLevel - 1)) / 3) + ((50 * Math.pow(currentLevel, 2) - 150 * currentLevel + 200) * percentToUp / 100);&lt;br /&gt;
        const desiredXp = (50 * (Math.pow((levelToUp - 1), 3)) - 150 * (Math.pow((levelToUp - 1), 2)) + 400 * (levelToUp - 1)) / 3;&lt;br /&gt;
        const missingXp = Math.round((desiredXp - currentXp));&lt;br /&gt;
&lt;br /&gt;
        const missingPotions = {&lt;br /&gt;
            &amp;quot;small&amp;quot;: Math.ceil((missingXp / (1000 * charTier))),&lt;br /&gt;
            &amp;quot;medium&amp;quot;: (missingXp / (10000 * charTier)).toFixed(1),&lt;br /&gt;
            &amp;quot;big&amp;quot;: (missingXp / (100000 * charTier)).toFixed(2)&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        return missingPotions;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function calcPotions() {&lt;br /&gt;
        const missingPotions = calcMissingXpInPotions();&lt;br /&gt;
&lt;br /&gt;
        var complementaryPotS;&lt;br /&gt;
        var complementaryPotM;&lt;br /&gt;
        potS = missingPotions['small'];&lt;br /&gt;
        potM = missingPotions['medium'];&lt;br /&gt;
        potB = missingPotions['big'];&lt;br /&gt;
&lt;br /&gt;
        if (String(potS).slice(-1) == &amp;quot;0&amp;quot;) {&lt;br /&gt;
            potM = Math.ceil(parseFloat(potM));&lt;br /&gt;
        } else {&lt;br /&gt;
            potM = Math.floor(potM);&lt;br /&gt;
            complementaryPotS = potS - potM * 10;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (String(potM).slice(-1) == &amp;quot;0&amp;quot;) {&lt;br /&gt;
            potM = Math.ceil((parseFloat(potM)));&lt;br /&gt;
            potB = Math.floor(potB);&lt;br /&gt;
        }&lt;br /&gt;
        else {&lt;br /&gt;
            potB = Math.floor(potB)&lt;br /&gt;
            complementaryPotM = potM - potB * 10&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        const potions = {&lt;br /&gt;
            &amp;quot;small&amp;quot;: complementaryPotS,&lt;br /&gt;
            &amp;quot;medium&amp;quot;: complementaryPotM,&lt;br /&gt;
            &amp;quot;big&amp;quot;: potB&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return potions;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function getNeededPotions() {&lt;br /&gt;
        const potions = calcPotions();&lt;br /&gt;
        const resultsArea = $(&amp;quot;#calc-result&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        resultsArea.html('');&lt;br /&gt;
&lt;br /&gt;
        if (potions[&amp;quot;big&amp;quot;]) {&lt;br /&gt;
            resultsArea.append(&lt;br /&gt;
                &amp;quot;&amp;lt;div class='badge'&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;img src='/images/a/a5/Bigexppot.png' class='calcXp--xpIcon' /&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;span class='calcXp--numberOfPots'&amp;gt;&amp;quot; + potions['big'] + &amp;quot;&amp;lt;/span&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
            );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        if (potions[&amp;quot;medium&amp;quot;]) {&lt;br /&gt;
            resultsArea.append(&lt;br /&gt;
                &amp;quot;&amp;lt;div class='badge'&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;img src='/images/d/df/Medexppot.png' class='calcXp--xpIcon' /&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;span class='calcXp--numberOfPots'&amp;gt;&amp;quot; + potions['medium'] + &amp;quot;&amp;lt;/span&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
            );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        if (potions[&amp;quot;small&amp;quot;]) {&lt;br /&gt;
            resultsArea.append(&lt;br /&gt;
                &amp;quot;&amp;lt;div class='badge'&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;img src='/images/5/5a/Smallexppot.png' class='calcXp--xpIcon' /&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;span class='calcXp--numberOfPots'&amp;gt;&amp;quot; + potions['small'] + &amp;quot;&amp;lt;/span&amp;gt;&amp;quot; +&lt;br /&gt;
                &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
            );&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    //------- CALCULATOR XP ---------&lt;br /&gt;
&lt;br /&gt;
    //------- VIDEO SELECTOR ---------&lt;br /&gt;
    $(&amp;quot;.video-selector&amp;quot;).on(&amp;quot;click&amp;quot;, function () {&lt;br /&gt;
        $(&amp;quot;.video-selector.active&amp;quot;).removeClass(&amp;quot;active&amp;quot;);&lt;br /&gt;
        $(this).addClass(&amp;quot;active&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        const value = $(this).data(&amp;quot;value&amp;quot;);&lt;br /&gt;
        const obj = eval('(' + value + ')');&lt;br /&gt;
        $(&amp;quot;video[data-type-&amp;quot; + obj.select + &amp;quot;].active&amp;quot;).removeClass('active');&lt;br /&gt;
        const index = obj.showId - 1;&lt;br /&gt;
        $(&amp;quot;video[data-type-&amp;quot; + obj.select + &amp;quot;]&amp;quot;).eq(index).addClass('active');&lt;br /&gt;
    });&lt;br /&gt;
    //------- VIDEO SELECTOR ---------&lt;br /&gt;
    //-------- gurren&lt;br /&gt;
    $(document).ready(function () {&lt;br /&gt;
        // Alternar entre mostrar e ocultar abas ao clicar&lt;br /&gt;
        $('.mostrar-aba').click(function () {&lt;br /&gt;
            var aba_id = $(this).attr('data-aba');&lt;br /&gt;
            var aba_selecionada = $(&amp;quot;#aba-&amp;quot; + aba_id);&lt;br /&gt;
&lt;br /&gt;
            if (aba_selecionada.hasClass('atual')) {&lt;br /&gt;
                aba_selecionada.removeClass('atual'); // Oculta a aba se já estiver ativa&lt;br /&gt;
                $(this).removeClass('ativa'); // Remove a classe ativa do botão&lt;br /&gt;
            } else {&lt;br /&gt;
                $('.aba').removeClass('atual'); // Oculta todas as abas&lt;br /&gt;
                aba_selecionada.addClass('atual'); // Exibe a aba correspondente&lt;br /&gt;
                $('.mostrar-aba').removeClass('ativa'); // Remove a classe ativa de outros botões&lt;br /&gt;
                $(this).addClass('ativa'); // Adiciona a classe ativa ao botão clicado&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Exibir aba correspondente ao hash da URL&lt;br /&gt;
        var url = location.href;&lt;br /&gt;
        var hash = url.split('#')[1];&lt;br /&gt;
        if (hash != null &amp;amp;&amp;amp; hash.length &amp;gt; 0) {&lt;br /&gt;
            $(&amp;quot;#aba-&amp;quot; + hash).addClass('atual'); // Exibe a aba do hash&lt;br /&gt;
            $('*[data-aba=&amp;quot;' + hash + '&amp;quot;]').addClass('ativa'); // Ativa o botão correspondente&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//------- 2222222222222222222222222222222222222222222222222222222222222222222222 ---------&lt;br /&gt;
(function () {&lt;br /&gt;
    'use strict';&lt;br /&gt;
&lt;br /&gt;
    var STORAGE_KEY = 'gla-wiki-theme';&lt;br /&gt;
    var DARK_CLASS = 'gla-dark-mode';&lt;br /&gt;
    var BUTTON_ID = 'gla-darkmode-toggle';&lt;br /&gt;
&lt;br /&gt;
    function getSavedTheme() {&lt;br /&gt;
        try {&lt;br /&gt;
            return localStorage.getItem(STORAGE_KEY);&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function saveTheme(theme) {&lt;br /&gt;
        try {&lt;br /&gt;
            localStorage.setItem(STORAGE_KEY, theme);&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            // Ignora caso o navegador bloqueie localStorage&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function isDarkMode() {&lt;br /&gt;
        return document.documentElement.classList.contains(DARK_CLASS);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function applyTheme(theme) {&lt;br /&gt;
        var dark = theme === 'dark';&lt;br /&gt;
&lt;br /&gt;
        document.documentElement.classList.toggle(DARK_CLASS, dark);&lt;br /&gt;
&lt;br /&gt;
        if (document.body) {&lt;br /&gt;
            document.body.classList.toggle(DARK_CLASS, dark);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        updateButton();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function updateButton() {&lt;br /&gt;
        var button = document.getElementById(BUTTON_ID);&lt;br /&gt;
&lt;br /&gt;
        if (!button) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var dark = isDarkMode();&lt;br /&gt;
&lt;br /&gt;
        button.setAttribute('aria-pressed', dark ? 'true' : 'false');&lt;br /&gt;
        button.setAttribute('title', dark ? 'Alternar para modo claro' : 'Alternar para modo escuro');&lt;br /&gt;
&lt;br /&gt;
        button.innerHTML = dark&lt;br /&gt;
            ? '&amp;lt;span class=&amp;quot;gla-darkmode-icon&amp;quot;&amp;gt;☀&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gla-darkmode-text&amp;quot;&amp;gt;Modo claro&amp;lt;/span&amp;gt;'&lt;br /&gt;
            : '&amp;lt;span class=&amp;quot;gla-darkmode-icon&amp;quot;&amp;gt;☾&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;gla-darkmode-text&amp;quot;&amp;gt;Modo escuro&amp;lt;/span&amp;gt;';&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function createButton() {&lt;br /&gt;
        if (document.getElementById(BUTTON_ID)) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var button = document.createElement('button');&lt;br /&gt;
&lt;br /&gt;
        button.id = BUTTON_ID;&lt;br /&gt;
        button.type = 'button';&lt;br /&gt;
        button.className = 'gla-darkmode-button';&lt;br /&gt;
        button.setAttribute('aria-label', 'Alternar modo escuro');&lt;br /&gt;
        button.setAttribute('aria-pressed', isDarkMode() ? 'true' : 'false');&lt;br /&gt;
&lt;br /&gt;
        button.addEventListener('click', function () {&lt;br /&gt;
            var nextTheme = isDarkMode() ? 'light' : 'dark';&lt;br /&gt;
&lt;br /&gt;
            saveTheme(nextTheme);&lt;br /&gt;
            applyTheme(nextTheme);&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        document.body.appendChild(button);&lt;br /&gt;
        updateButton();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function ready(fn) {&lt;br /&gt;
        if (document.readyState === 'loading') {&lt;br /&gt;
            document.addEventListener('DOMContentLoaded', fn);&lt;br /&gt;
        } else {&lt;br /&gt;
            fn();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    var savedTheme = getSavedTheme();&lt;br /&gt;
&lt;br /&gt;
    if (savedTheme === 'dark') {&lt;br /&gt;
        document.documentElement.classList.add(DARK_CLASS);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ready(function () {&lt;br /&gt;
        if (savedTheme === 'dark') {&lt;br /&gt;
            document.body.classList.add(DARK_CLASS);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        createButton();&lt;br /&gt;
        updateButton();&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
* Script JavaScript para o componente de abas MediaWiki&lt;br /&gt;
* Adicione este script na sua MediaWiki (Common.js ou página de scripts)&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
(function () {&lt;br /&gt;
    'use strict';&lt;br /&gt;
&lt;br /&gt;
    // Inicializa todos os componentes de abas na página&lt;br /&gt;
    function initTabbers() {&lt;br /&gt;
        const tabbers = document.querySelectorAll('[data-tabber]');&lt;br /&gt;
&lt;br /&gt;
        tabbers.forEach(function (tabber) {&lt;br /&gt;
            const tabs = tabber.querySelectorAll('.mw-tabber-tab');&lt;br /&gt;
            const panels = tabber.querySelectorAll('.mw-tabber-panel');&lt;br /&gt;
&lt;br /&gt;
            tabs.forEach(function (tab) {&lt;br /&gt;
                tab.addEventListener('click', function () {&lt;br /&gt;
                    const targetTab = this.getAttribute('data-tab');&lt;br /&gt;
&lt;br /&gt;
                    // Remove classe active de todas as abas&lt;br /&gt;
                    tabs.forEach(function (t) {&lt;br /&gt;
                        t.classList.remove('active');&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    // Remove classe active de todos os painéis&lt;br /&gt;
                    panels.forEach(function (p) {&lt;br /&gt;
                        p.classList.remove('active');&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    // Adiciona classe active na aba clicada&lt;br /&gt;
                    this.classList.add('active');&lt;br /&gt;
&lt;br /&gt;
                    // Adiciona classe active no painel correspondente&lt;br /&gt;
                    const targetPanel = tabber.querySelector('[data-panel=&amp;quot;' + targetTab + '&amp;quot;]');&lt;br /&gt;
                    if (targetPanel) {&lt;br /&gt;
                        targetPanel.classList.add('active');&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Inicializa quando o DOM estiver pronto&lt;br /&gt;
    if (document.readyState === 'loading') {&lt;br /&gt;
        document.addEventListener('DOMContentLoaded', initTabbers);&lt;br /&gt;
    } else {&lt;br /&gt;
        initTabbers();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Suporte para MediaWiki (quando o conteúdo é carregado dinamicamente)&lt;br /&gt;
    if (typeof mw !== 'undefined' &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
        mw.hook('wikipage.content').add(function () {&lt;br /&gt;
            initTabbers();&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Arquivo:Chave_samui_island_chip_3.png&amp;diff=46628</id>
		<title>Arquivo:Chave samui island chip 3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Arquivo:Chave_samui_island_chip_3.png&amp;diff=46628"/>
		<updated>2026-04-30T23:41:32Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio_Discuss%C3%A3o:Gurren1&amp;diff=46627</id>
		<title>Usuário Discussão:Gurren1</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio_Discuss%C3%A3o:Gurren1&amp;diff=46627"/>
		<updated>2026-04-30T23:39:47Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=1° chip=&lt;br /&gt;
loc:&lt;br /&gt;
&lt;br /&gt;
[[File:mapa aberto redemoinho.png|link=]][[File:gif bolhas do redemoinho.gif|link=]]&lt;br /&gt;
&lt;br /&gt;
loc instancia:&lt;br /&gt;
&lt;br /&gt;
[[File:pegando chip 1.png|link=]]&lt;br /&gt;
&lt;br /&gt;
loc chave &lt;br /&gt;
&lt;br /&gt;
[[File:alavanca caixas inteiras chip 1.png|link=]][[File:alavanca caixas quebradas chip 1.png|link=]] recompensa em preset: key:1x&lt;br /&gt;
=2° chip =&lt;br /&gt;
FALTA A LOCALIZAÇÃO DO NPC &lt;br /&gt;
&lt;br /&gt;
[[File:gif wasp assustando fujita chip 2.gif|link=]]&lt;br /&gt;
=3° chip =&lt;br /&gt;
[[Arquivo:Gif_urso_batendo_na_arvore_chip_3.gif|ligação=|nenhum|commoldura|desc sobre o urso bater 3 vezes no chão pra chave cair da arvore]]&lt;br /&gt;
[[Arquivo:Parte_da_loc_do_urso_chip_3.png|ligação=|nenhum|commoldura|localização do urso ao norte do npc Sora]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:parte da loc da prisao chip 3.png|link=]]&lt;br /&gt;
[[Arquivo:Loc_buraco_local_chip_3.png|ligação=|nenhum|commoldura|entrada da prisão]]&lt;br /&gt;
&lt;br /&gt;
== KUMO CHIP ==&lt;br /&gt;
[[File:gif da aranha de kumo fazendo buraco.gif|link=]]&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Arquivo:Gif_da_aranha_de_kumo_fazendo_buraco.gif&amp;diff=46626</id>
		<title>Arquivo:Gif da aranha de kumo fazendo buraco.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Arquivo:Gif_da_aranha_de_kumo_fazendo_buraco.gif&amp;diff=46626"/>
		<updated>2026-04-30T23:39:28Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: Arquivo enviado com MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Arquivo enviado com MsUpload&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio_Discuss%C3%A3o:Gurren1&amp;diff=46625</id>
		<title>Usuário Discussão:Gurren1</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio_Discuss%C3%A3o:Gurren1&amp;diff=46625"/>
		<updated>2026-04-30T23:36:11Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= 1° chip =&lt;br /&gt;
loc:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:mapa aberto redemoinho.png|link=]][[File:gif bolhas do redemoinho.gif|link=]]&lt;br /&gt;
&lt;br /&gt;
loc instancia:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:pegando chip 1.png|link=]]&lt;br /&gt;
&lt;br /&gt;
loc chave &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:alavanca caixas inteiras chip 1.png|link=]][[File:alavanca caixas quebradas chip 1.png|link=]]&lt;br /&gt;
recompensa em preset: key:1x&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 2° chip =&lt;br /&gt;
FALTA A LOCALIZAÇÃO DO NPC&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:gif wasp assustando fujita chip 2.gif|link=]]&lt;br /&gt;
&lt;br /&gt;
= 3° chip =&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:parte da loc do urso chip 3.png|link=]]&lt;br /&gt;
[[File:gif urso batendo na arvore chip 3.gif|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:loc buraco local chip 3.png|link=]]&lt;br /&gt;
[[File:parte da loc da prisao chip 3.png|link=]]&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio_Discuss%C3%A3o:Gurren1&amp;diff=46624</id>
		<title>Usuário Discussão:Gurren1</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio_Discuss%C3%A3o:Gurren1&amp;diff=46624"/>
		<updated>2026-04-30T23:35:08Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: /* 2° chip */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= 1° chip =&lt;br /&gt;
loc:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:mapa aberto redemoinho.png|link=]][[File:gif bolhas do redemoinho.gif|link=]]&lt;br /&gt;
&lt;br /&gt;
loc instancia:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:pegando chip 1.png|link=]]&lt;br /&gt;
&lt;br /&gt;
loc chave &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:alavanca caixas inteiras chip 1.png|link=]][[File:alavanca caixas quebradas chip 1.png|link=]]&lt;br /&gt;
recompensa em preset: key:1x&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 2° chip =&lt;br /&gt;
FALTA A LOCALIZAÇÃO DO NPC&lt;br /&gt;
[[File:gif wasp assustando fujita chip 2.gif|link=]]&lt;br /&gt;
&lt;br /&gt;
= 3° chip =&lt;br /&gt;
[[File:gif wasp assustando fujita chip 2.gif|link=]]&lt;br /&gt;
[[File:gif urso batendo na arvore chip 3.gif|link=]]&lt;br /&gt;
[[File:loc buraco local chip 3.png|link=]]&lt;br /&gt;
[[File:parte da loc da prisao chip 3.png|link=]]&lt;br /&gt;
[[File:parte da loc do urso chip 3.png|link=]]&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio_Discuss%C3%A3o:Gurren1&amp;diff=46623</id>
		<title>Usuário Discussão:Gurren1</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio_Discuss%C3%A3o:Gurren1&amp;diff=46623"/>
		<updated>2026-04-30T23:34:54Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= 1° chip =&lt;br /&gt;
loc:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:mapa aberto redemoinho.png|link=]][[File:gif bolhas do redemoinho.gif|link=]]&lt;br /&gt;
&lt;br /&gt;
loc instancia:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:pegando chip 1.png|link=]]&lt;br /&gt;
&lt;br /&gt;
loc chave &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:alavanca caixas inteiras chip 1.png|link=]][[File:alavanca caixas quebradas chip 1.png|link=]]&lt;br /&gt;
recompensa em preset: key:1x&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 2° chip =&lt;br /&gt;
FALTA A LOCALIZAÇÃO DO NPC&lt;br /&gt;
[[File:gif wasp assustando fujita chip 2.gif|400px]]&lt;br /&gt;
&lt;br /&gt;
= 3° chip =&lt;br /&gt;
[[File:gif wasp assustando fujita chip 2.gif|link=]]&lt;br /&gt;
[[File:gif urso batendo na arvore chip 3.gif|link=]]&lt;br /&gt;
[[File:loc buraco local chip 3.png|link=]]&lt;br /&gt;
[[File:parte da loc da prisao chip 3.png|link=]]&lt;br /&gt;
[[File:parte da loc do urso chip 3.png|link=]]&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Arquivo:Parte_da_loc_do_urso_chip_3.png&amp;diff=46622</id>
		<title>Arquivo:Parte da loc do urso chip 3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Arquivo:Parte_da_loc_do_urso_chip_3.png&amp;diff=46622"/>
		<updated>2026-04-30T23:34:26Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: Arquivo enviado com MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Arquivo enviado com MsUpload&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Arquivo:Parte_da_loc_da_prisao_chip_3.png&amp;diff=46621</id>
		<title>Arquivo:Parte da loc da prisao chip 3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Arquivo:Parte_da_loc_da_prisao_chip_3.png&amp;diff=46621"/>
		<updated>2026-04-30T23:34:26Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: Arquivo enviado com MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Arquivo enviado com MsUpload&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Arquivo:Loc_buraco_local_chip_3.png&amp;diff=46620</id>
		<title>Arquivo:Loc buraco local chip 3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Arquivo:Loc_buraco_local_chip_3.png&amp;diff=46620"/>
		<updated>2026-04-30T23:34:25Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: Arquivo enviado com MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Arquivo enviado com MsUpload&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Arquivo:Gif_urso_batendo_na_arvore_chip_3.gif&amp;diff=46619</id>
		<title>Arquivo:Gif urso batendo na arvore chip 3.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Arquivo:Gif_urso_batendo_na_arvore_chip_3.gif&amp;diff=46619"/>
		<updated>2026-04-30T23:34:24Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: Arquivo enviado com MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Arquivo enviado com MsUpload&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Arquivo:Gif_wasp_assustando_fujita_chip_2.gif&amp;diff=46618</id>
		<title>Arquivo:Gif wasp assustando fujita chip 2.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Arquivo:Gif_wasp_assustando_fujita_chip_2.gif&amp;diff=46618"/>
		<updated>2026-04-30T23:32:10Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: Arquivo enviado com MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Arquivo enviado com MsUpload&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Arquivo:Pegando_chip_1.png&amp;diff=46617</id>
		<title>Arquivo:Pegando chip 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Arquivo:Pegando_chip_1.png&amp;diff=46617"/>
		<updated>2026-04-30T23:25:56Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: Arquivo enviado com MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Arquivo enviado com MsUpload&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Arquivo:Alavanca_caixas_quebradas_chip_1.png&amp;diff=46616</id>
		<title>Arquivo:Alavanca caixas quebradas chip 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Arquivo:Alavanca_caixas_quebradas_chip_1.png&amp;diff=46616"/>
		<updated>2026-04-30T23:25:53Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: Arquivo enviado com MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Arquivo enviado com MsUpload&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Arquivo:Alavanca_caixas_inteiras_chip_1.png&amp;diff=46615</id>
		<title>Arquivo:Alavanca caixas inteiras chip 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Arquivo:Alavanca_caixas_inteiras_chip_1.png&amp;diff=46615"/>
		<updated>2026-04-30T23:25:50Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: Arquivo enviado com MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Arquivo enviado com MsUpload&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Arquivo:Mapa_aberto_redemoinho.png&amp;diff=46614</id>
		<title>Arquivo:Mapa aberto redemoinho.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Arquivo:Mapa_aberto_redemoinho.png&amp;diff=46614"/>
		<updated>2026-04-30T23:23:24Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: Arquivo enviado com MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Arquivo enviado com MsUpload&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Arquivo:Gif_bolhas_do_redemoinho.gif&amp;diff=46613</id>
		<title>Arquivo:Gif bolhas do redemoinho.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Arquivo:Gif_bolhas_do_redemoinho.gif&amp;diff=46613"/>
		<updated>2026-04-30T23:23:23Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: Arquivo enviado com MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Arquivo enviado com MsUpload&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Widget:ReportWiki&amp;diff=46531</id>
		<title>Widget:ReportWiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Widget:ReportWiki&amp;diff=46531"/>
		<updated>2026-04-28T16:25:12Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
    .report-wiki-shell {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        max-width: 560px;&lt;br /&gt;
        margin: 0.75em 0;&lt;br /&gt;
        clear: both;&lt;br /&gt;
        box-sizing: border-box;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .report-wiki-shell iframe.report-wiki-frame {&lt;br /&gt;
        display: block;&lt;br /&gt;
        border: 0;&lt;br /&gt;
        border-radius: 12px;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        min-height: 480px;&lt;br /&gt;
        background: #0f172a;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
  Iframe = app no site https://gla.squareweb.app/reports — NÃO usa domínio da wiki.&lt;br /&gt;
  src tem de ser esta URL completa (absoluta). Se for /reports ou relativo, o browser liga à wiki e quebra.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;report-wiki-shell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;iframe class=&amp;quot;report-wiki-frame&amp;quot; title=&amp;quot;Reports GLA&amp;quot; src=&amp;quot;https://gla.squareweb.app/reports&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
        height=&amp;quot;980&amp;quot; loading=&amp;quot;lazy&amp;quot; referrerpolicy=&amp;quot;strict-origin-when-cross-origin&amp;quot; allowfullscreen=&amp;quot;allowfullscreen&amp;quot;&lt;br /&gt;
        style=&amp;quot;border:0;border-radius:12px;width:100%&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    (function () {&lt;br /&gt;
        function init() {&lt;br /&gt;
            var wrap = document.querySelector(&amp;quot;.report-wiki-shell:last-of-type&amp;quot;);&lt;br /&gt;
            if (!wrap || wrap.dataset.reportWikiInit) return;&lt;br /&gt;
            wrap.dataset.reportWikiInit = &amp;quot;1&amp;quot;;&lt;br /&gt;
            var frame = wrap.querySelector(&amp;quot;iframe.report-wiki-frame&amp;quot;);&lt;br /&gt;
            if (!frame) return;&lt;br /&gt;
            try {&lt;br /&gt;
                var h = parseInt(frame.getAttribute(&amp;quot;height&amp;quot;) || &amp;quot;980&amp;quot;, 10);&lt;br /&gt;
                if (h &amp;gt; 200 &amp;amp;&amp;amp; h &amp;lt; 4000) frame.style.minHeight = h + &amp;quot;px&amp;quot;;&lt;br /&gt;
            } catch (e) { /* */ }&lt;br /&gt;
        }&lt;br /&gt;
        if (document.readyState === &amp;quot;loading&amp;quot;) {&lt;br /&gt;
            document.addEventListener(&amp;quot;DOMContentLoaded&amp;quot;, init);&lt;br /&gt;
        } else {&lt;br /&gt;
            init();&lt;br /&gt;
        }&lt;br /&gt;
    })();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Teste&amp;diff=46530</id>
		<title>Teste</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Teste&amp;diff=46530"/>
		<updated>2026-04-28T16:22:43Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: Página substituída por '{{ReportWiki}}'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ReportWiki}}&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Predefini%C3%A7%C3%A3o:ReportWiki&amp;diff=46529</id>
		<title>Predefinição:ReportWiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Predefini%C3%A7%C3%A3o:ReportWiki&amp;diff=46529"/>
		<updated>2026-04-28T16:22:30Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: Criou página com '&amp;lt;includeonly&amp;gt;{{#widget:ReportWiki}}&amp;lt;/includeonly&amp;gt;'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#widget:ReportWiki}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Widget:ReportWiki&amp;diff=46528</id>
		<title>Widget:ReportWiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Widget:ReportWiki&amp;diff=46528"/>
		<updated>2026-04-28T16:21:55Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Colar na wiki: página [[Widget:ReportWiki]]. Parâmetros: url (opcional), height (opcional). --&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
    .report-wiki-shell {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        max-width: 560px;&lt;br /&gt;
        margin: 0.75em 0;&lt;br /&gt;
        clear: both;&lt;br /&gt;
        box-sizing: border-box;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .report-wiki-shell iframe.report-wiki-frame {&lt;br /&gt;
        display: block;&lt;br /&gt;
        border: 0;&lt;br /&gt;
        border-radius: 12px;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        min-height: 480px;&lt;br /&gt;
        background: #0f172a;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;report-wiki-shell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;iframe class=&amp;quot;report-wiki-frame&amp;quot; title=&amp;quot;Reports GLA&amp;quot; src=&amp;quot;{{{url|https://gla.squareweb.app/reports}}}&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
        height=&amp;quot;{{{height|980}}}&amp;quot; loading=&amp;quot;lazy&amp;quot; referrerpolicy=&amp;quot;strict-origin-when-cross-origin&amp;quot;&lt;br /&gt;
        allowfullscreen=&amp;quot;allowfullscreen&amp;quot; style=&amp;quot;border:0;border-radius:12px;width:100%&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    (function () {&lt;br /&gt;
        function init() {&lt;br /&gt;
            var wrap = document.querySelector(&amp;quot;.report-wiki-shell:last-of-type&amp;quot;);&lt;br /&gt;
            if (!wrap || wrap.dataset.reportWikiInit) return;&lt;br /&gt;
            wrap.dataset.reportWikiInit = &amp;quot;1&amp;quot;;&lt;br /&gt;
            var frame = wrap.querySelector(&amp;quot;iframe.report-wiki-frame&amp;quot;);&lt;br /&gt;
            if (!frame) return;&lt;br /&gt;
            try {&lt;br /&gt;
                var h = parseInt(frame.getAttribute(&amp;quot;height&amp;quot;) || &amp;quot;980&amp;quot;, 10);&lt;br /&gt;
                if (h &amp;gt; 200 &amp;amp;&amp;amp; h &amp;lt; 4000) frame.style.minHeight = h + &amp;quot;px&amp;quot;;&lt;br /&gt;
            } catch (e) { /* */ }&lt;br /&gt;
        }&lt;br /&gt;
        if (document.readyState === &amp;quot;loading&amp;quot;) {&lt;br /&gt;
            document.addEventListener(&amp;quot;DOMContentLoaded&amp;quot;, init);&lt;br /&gt;
        } else {&lt;br /&gt;
            init();&lt;br /&gt;
        }&lt;br /&gt;
    })();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Widget:ReportWiki&amp;diff=46527</id>
		<title>Widget:ReportWiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Widget:ReportWiki&amp;diff=46527"/>
		<updated>2026-04-28T16:21:02Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: Criou página com '&amp;lt;style&amp;gt;     .report-wiki-shell {         width: 100%;         max-width: 560px;         margin: 0.75em 0;         clear: both;         box-sizing: border-box;     }      .repo...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
    .report-wiki-shell {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        max-width: 560px;&lt;br /&gt;
        margin: 0.75em 0;&lt;br /&gt;
        clear: both;&lt;br /&gt;
        box-sizing: border-box;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .report-wiki-shell iframe.report-wiki-frame {&lt;br /&gt;
        display: block;&lt;br /&gt;
        border: 0;&lt;br /&gt;
        border-radius: 12px;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        min-height: 480px;&lt;br /&gt;
        background: #0f172a;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;report-wiki-shell&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;iframe class=&amp;quot;report-wiki-frame&amp;quot; title=&amp;quot;Reports GLA&amp;quot; src=&amp;quot;https://gla.squareweb.app/reports&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
        height=&amp;quot;980&amp;quot; loading=&amp;quot;lazy&amp;quot; referrerpolicy=&amp;quot;strict-origin-when-cross-origin&amp;quot; allowfullscreen=&amp;quot;allowfullscreen&amp;quot;&lt;br /&gt;
        style=&amp;quot;border:0;border-radius:12px;width:100%&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
    (function () {&lt;br /&gt;
        function init() {&lt;br /&gt;
            var wrap = document.querySelector(&amp;quot;.report-wiki-shell:last-of-type&amp;quot;);&lt;br /&gt;
            if (!wrap || wrap.dataset.reportWikiInit) return;&lt;br /&gt;
            wrap.dataset.reportWikiInit = &amp;quot;1&amp;quot;;&lt;br /&gt;
            var frame = wrap.querySelector(&amp;quot;iframe.report-wiki-frame&amp;quot;);&lt;br /&gt;
            if (!frame) return;&lt;br /&gt;
            try {&lt;br /&gt;
                var h = parseInt(frame.getAttribute(&amp;quot;height&amp;quot;) || &amp;quot;980&amp;quot;, 10);&lt;br /&gt;
                if (h &amp;gt; 200 &amp;amp;&amp;amp; h &amp;lt; 4000) frame.style.minHeight = h + &amp;quot;px&amp;quot;;&lt;br /&gt;
            } catch (e) { /* */ }&lt;br /&gt;
        }&lt;br /&gt;
        if (document.readyState === &amp;quot;loading&amp;quot;) {&lt;br /&gt;
            document.addEventListener(&amp;quot;DOMContentLoaded&amp;quot;, init);&lt;br /&gt;
        } else {&lt;br /&gt;
            init();&lt;br /&gt;
        }&lt;br /&gt;
    })();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Teste&amp;diff=46526</id>
		<title>Teste</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Teste&amp;diff=46526"/>
		<updated>2026-04-28T16:10:32Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#widget:Teste}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copiar para a página wiki &amp;quot;Teste&amp;quot; (troca só o URL pelo teu servidor real) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Formulário de report ==&lt;br /&gt;
&lt;br /&gt;
Este bloco só funciona na tua wiki se ela '''permitir a tag iframe'''. Se remover na gravação, usa o widget ou pede aos admins para permitir iframe só em páginas confiáveis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe src=&amp;quot;https://gla.squareweb.app/reports&amp;quot; title=&amp;quot;Reports Wiki GLA&amp;quot; width=&amp;quot;100%&amp;quot; height=&amp;quot;980&amp;quot; style=&amp;quot;max-width:560px;border:0;border-radius:12px;display:block;color-scheme:auto&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Exemplo quando o mesmo Node serve tanto API como o /reports compilado --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{#widget:ReportModal|api_base=https://gla.squareweb.app/reports}} --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Teste&amp;diff=46523</id>
		<title>Teste</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Teste&amp;diff=46523"/>
		<updated>2026-04-28T16:09:06Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#widget:Teste}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Copiar para a página wiki &amp;quot;Teste&amp;quot; (troca só o URL pelo teu servidor real) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Formulário de report ==&lt;br /&gt;
&lt;br /&gt;
Este bloco só funciona na tua wiki se ela '''permitir a tag iframe'''. Se remover na gravação, usa o widget ou pede aos admins para permitir iframe só em páginas confiáveis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe src=&amp;quot;https://COLOQUE_AQUI_URL_DO_editor/reports&amp;quot; title=&amp;quot;Reports Wiki GLA&amp;quot; width=&amp;quot;100%&amp;quot; height=&amp;quot;980&amp;quot; style=&amp;quot;max-width:560px;border:0;border-radius:12px;display:block;color-scheme:auto&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Exemplo quando o mesmo Node serve tanto API como o /reports compilado --&amp;gt;&lt;br /&gt;
&amp;lt;!-- {{#widget:ReportModal|api_base=https://COLOQUE_AQUI_MESMO_URL_DO_editor}} --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=M%C3%B3dulo:Teste&amp;diff=46522</id>
		<title>Módulo:Teste</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=M%C3%B3dulo:Teste&amp;diff=46522"/>
		<updated>2026-04-28T16:07:25Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
  Módulo: opcional para inserir o widget via {{#invoke}}.&lt;br /&gt;
&lt;br /&gt;
  Na wiki: criar página Módulo:GlaReportEmbed com este código.&lt;br /&gt;
&lt;br /&gt;
  Uso num modelo ou página:&lt;br /&gt;
    {{#invoke:GlaReportEmbed|embed|api_base=https://teu-deploy.com}}&lt;br /&gt;
&lt;br /&gt;
  Parâmetros nomeados (opcionais):&lt;br /&gt;
    |heading=Título da caixa&lt;br /&gt;
    |wid=2&lt;br /&gt;
&lt;br /&gt;
  Requer a extensão Scribunto e o widget {{#widget:ReportModal|...}} registrado.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.embed(frame)&lt;br /&gt;
	local pargs = (frame:getParent() and frame:getParent().args) or {}&lt;br /&gt;
	local args = frame.args or {}&lt;br /&gt;
	local base = (&lt;br /&gt;
		args.api_base&lt;br /&gt;
		or pargs.api_base&lt;br /&gt;
		or args[1]&lt;br /&gt;
		or pargs[1]&lt;br /&gt;
		or &amp;quot;&amp;quot;&lt;br /&gt;
	):gsub(&amp;quot;^%s+&amp;quot;, &amp;quot;&amp;quot;):gsub(&amp;quot;%s+$&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	if base == &amp;quot;&amp;quot; then&lt;br /&gt;
		return '&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;GlaReportEmbed: falta &amp;lt;code&amp;gt;api_base&amp;lt;/code&amp;gt;.&amp;lt;/span&amp;gt;'&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local heading = args.heading or pargs.heading or &amp;quot;&amp;quot;&lt;br /&gt;
	local wid = args.wid or pargs.wid or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local wikitext = &amp;quot;{{#widget:ReportModal|api_base=&amp;quot; .. base&lt;br /&gt;
	if heading ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		wikitext = wikitext .. &amp;quot;|heading=&amp;quot; .. heading&lt;br /&gt;
	end&lt;br /&gt;
	if wid ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		wikitext = wikitext .. &amp;quot;|wid=&amp;quot; .. wid&lt;br /&gt;
	end&lt;br /&gt;
	wikitext = wikitext .. &amp;quot;}}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	return frame:preprocess(wikitext)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Widget:Teste&amp;diff=46521</id>
		<title>Widget:Teste</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Widget:Teste&amp;diff=46521"/>
		<updated>2026-04-28T16:07:18Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
  &amp;lt;!--&lt;br /&gt;
  Widget:ReportModal — formulário embutido no corpo da página (sem overlay, sem botão extra).&lt;br /&gt;
&lt;br /&gt;
  {{#widget:ReportModal|api_base=https://TEU_DEPLOY}}&lt;br /&gt;
&lt;br /&gt;
  Opcionais:&lt;br /&gt;
    |wid=2      — vários widgets na mesma página (ids únicos)&lt;br /&gt;
    |heading=   — título da caixa (vazio → &amp;quot;Report ou sugestão&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  No servidor: REPORTS_CORS_ORIGINS=https://wiki.gla.com.br&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gla-report-widget-root&amp;quot; data-gla-init=&amp;quot;0&amp;quot; data-gla-api=&amp;quot;{{{api_base|}}}&amp;quot; data-gla-wid=&amp;quot;{{{wid|1}}}&amp;quot;&lt;br /&gt;
  data-gla-heading=&amp;quot;{{{heading|}}}&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  /*&amp;lt;![CDATA[*/&lt;br /&gt;
  (function () {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    var roots = document.currentScript.previousElementSibling;&lt;br /&gt;
    if (!roots || !roots.classList || !roots.classList.contains(&amp;quot;gla-report-widget-root&amp;quot;)) {&lt;br /&gt;
      roots = document.querySelector(&amp;quot;.gla-report-widget-root:not([data-gla-init])&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    if (!roots || roots.getAttribute(&amp;quot;data-gla-init&amp;quot;)) return;&lt;br /&gt;
    roots.setAttribute(&amp;quot;data-gla-init&amp;quot;, &amp;quot;1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    var REPORTS_API_BASE = (roots.getAttribute(&amp;quot;data-gla-api&amp;quot;) || &amp;quot;&amp;quot;).replace(/\/$/, &amp;quot;&amp;quot;);&lt;br /&gt;
    var wid = String(roots.getAttribute(&amp;quot;data-gla-wid&amp;quot;) || &amp;quot;1&amp;quot;).replace(/[^a-zA-Z0-9_-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
    var HEADING = roots.getAttribute(&amp;quot;data-gla-heading&amp;quot;) || &amp;quot;&amp;quot;;&lt;br /&gt;
    if (!HEADING) HEADING = &amp;quot;Report ou sugestão&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    var MAX_TITLE = 60;&lt;br /&gt;
    var MAX_BYTES = 5 * 1024 * 1024;&lt;br /&gt;
&lt;br /&gt;
    function esc(s) {&lt;br /&gt;
      var d = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
      d.textContent = s == null ? &amp;quot;&amp;quot; : String(s);&lt;br /&gt;
      return d.innerHTML;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function byId(id) {&lt;br /&gt;
      return document.getElementById(id);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function css() {&lt;br /&gt;
      if (byId(&amp;quot;gla-reports-inline-css-global&amp;quot;)) return;&lt;br /&gt;
      var st = document.createElement(&amp;quot;style&amp;quot;);&lt;br /&gt;
      st.id = &amp;quot;gla-reports-inline-css-global&amp;quot;;&lt;br /&gt;
      st.textContent =&lt;br /&gt;
        &amp;quot;.gla-report-widget-root{width:100%;max-width:520px;margin:1rem 0;display:block;clear:both}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-reports-inline{max-width:100%;box-sizing:border-box;background:#111827;color:#f9fafb;border-radius:12px;padding:18px 20px;font:14px/1.45 system-ui,sans-serif;border:1px solid #374151;box-shadow:0 8px 24px rgba(0,0,0,.15)}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-reports-inline-h2{font-size:1.1rem;margin:0 0 14px;color:#fff;font-weight:600}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-field{margin-bottom:12px}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-field label{display:block;font-size:.8rem;color:#d1d5db;margin-bottom:4px}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-field input[type=text],.gla-r-field select,.gla-r-field textarea{width:100%;box-sizing:border-box;border-radius:8px;border:1px solid #4b5563;background:#1f2937;color:#fff;padding:8px 10px;font:inherit}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-field textarea{min-height:120px;resize:vertical}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-actions{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap;align-items:center}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-actions button{border-radius:8px;padding:10px 16px;font:inherit;border:0;cursor:pointer}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-primary{background:#6366f1;color:#fff}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-muted{background:#374151;color:#e5e7eb}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-msg{margin-top:12px;font-size:.85rem;min-height:1.2em}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-msg.gla-r-ok{color:#6ee7b7}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-msg.gla-r-err{color:#fca5a5}&amp;quot;;&lt;br /&gt;
      document.head.appendChild(st);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    var mid = &amp;quot;gla-form-&amp;quot; + wid;&lt;br /&gt;
&lt;br /&gt;
    function buildFormBody() {&lt;br /&gt;
      return (&lt;br /&gt;
        '&amp;lt;section class=&amp;quot;gla-reports-inline&amp;quot; aria-labelledby=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-tit&amp;quot;&amp;gt;' +&lt;br /&gt;
        '&amp;lt;h2 class=&amp;quot;gla-reports-inline-h2&amp;quot; id=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-tit&amp;quot;&amp;gt;' +&lt;br /&gt;
        esc(HEADING) +&lt;br /&gt;
        &amp;quot;&amp;lt;/h2&amp;gt;&amp;quot; +&lt;br /&gt;
        '&amp;lt;form id=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-f&amp;quot; novalidate&amp;gt;' +&lt;br /&gt;
        '&amp;lt;div class=&amp;quot;gla-r-field&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-title&amp;quot;&amp;gt;Título &amp;lt;span style=&amp;quot;opacity:.65&amp;quot;&amp;gt;(opcional, até ' +&lt;br /&gt;
        MAX_TITLE +&lt;br /&gt;
        &amp;quot; caracteres)&amp;lt;/span&amp;gt;&amp;lt;/label&amp;gt;&amp;quot; +&lt;br /&gt;
        '&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-title&amp;quot; name=&amp;quot;name&amp;quot; maxlength=&amp;quot;' +&lt;br /&gt;
        MAX_TITLE +&lt;br /&gt;
        '&amp;quot; autocomplete=&amp;quot;off&amp;quot; placeholder=&amp;quot;Ex.: erro na página X&amp;quot;/&amp;gt;&amp;lt;/div&amp;gt;' +&lt;br /&gt;
        '&amp;lt;div class=&amp;quot;gla-r-field&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-cat&amp;quot;&amp;gt;Categoria&amp;lt;/label&amp;gt;' +&lt;br /&gt;
        '&amp;lt;select id=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-cat&amp;quot; name=&amp;quot;category&amp;quot; required&amp;gt;' +&lt;br /&gt;
        '&amp;lt;option value=&amp;quot;report&amp;quot;&amp;gt;' +&lt;br /&gt;
        esc(&amp;quot;Report&amp;quot;) +&lt;br /&gt;
        &amp;quot;&amp;lt;/option&amp;gt;&amp;quot; +&lt;br /&gt;
        '&amp;lt;option value=&amp;quot;suggestion&amp;quot;&amp;gt;' +&lt;br /&gt;
        esc(&amp;quot;Sugestão&amp;quot;) +&lt;br /&gt;
        &amp;quot;&amp;lt;/option&amp;gt;&amp;quot; +&lt;br /&gt;
        &amp;quot;&amp;lt;/select&amp;gt;&amp;lt;/div&amp;gt;&amp;quot; +&lt;br /&gt;
        '&amp;lt;div class=&amp;quot;gla-r-field&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-desc&amp;quot;&amp;gt;Descrição &amp;lt;span style=&amp;quot;color:#fca5a5&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;&amp;lt;/label&amp;gt;' +&lt;br /&gt;
        '&amp;lt;textarea id=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-desc&amp;quot; name=&amp;quot;description&amp;quot; maxlength=&amp;quot;8000&amp;quot; required placeholder=&amp;quot;Descrição detalhada&amp;quot;&amp;gt;&amp;lt;/textarea&amp;gt;&amp;lt;/div&amp;gt;' +&lt;br /&gt;
        '&amp;lt;div class=&amp;quot;gla-r-field&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-img&amp;quot;&amp;gt;Imagem (opcional)&amp;lt;/label&amp;gt;' +&lt;br /&gt;
        '&amp;lt;input type=&amp;quot;file&amp;quot; id=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-img&amp;quot; accept=&amp;quot;image/png,image/jpeg,image/gif&amp;quot;/&amp;gt;&amp;lt;/div&amp;gt;' +&lt;br /&gt;
        '&amp;lt;div class=&amp;quot;gla-r-actions&amp;quot;&amp;gt;' +&lt;br /&gt;
        '&amp;lt;button type=&amp;quot;submit&amp;quot; class=&amp;quot;gla-r-primary&amp;quot; id=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-send&amp;quot;&amp;gt;' +&lt;br /&gt;
        esc(&amp;quot;Enviar&amp;quot;) +&lt;br /&gt;
        &amp;quot;&amp;lt;/button&amp;gt;&amp;quot; +&lt;br /&gt;
        '&amp;lt;button type=&amp;quot;reset&amp;quot; class=&amp;quot;gla-r-muted&amp;quot; id=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-reset&amp;quot;&amp;gt;' +&lt;br /&gt;
        esc(&amp;quot;Limpar&amp;quot;) +&lt;br /&gt;
        &amp;quot;&amp;lt;/button&amp;gt;&amp;lt;/div&amp;gt;&amp;quot; +&lt;br /&gt;
        '&amp;lt;p class=&amp;quot;gla-r-msg&amp;quot; id=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-msg&amp;quot; role=&amp;quot;status&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;' +&lt;br /&gt;
        &amp;quot;&amp;lt;/form&amp;gt;&amp;lt;/section&amp;gt;&amp;quot;&lt;br /&gt;
      );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function localFileOk(f) {&lt;br /&gt;
      var t = (f.type || &amp;quot;&amp;quot;).toLowerCase();&lt;br /&gt;
      var n = (f.name || &amp;quot;&amp;quot;).toLowerCase();&lt;br /&gt;
      if (/^image\/(png|jpeg|gif)$/.test(t)) return true;&lt;br /&gt;
      if (/\.(png|jpe?g|gif)$/.test(n)) return true;&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    css();&lt;br /&gt;
    roots.innerHTML = buildFormBody();&lt;br /&gt;
&lt;br /&gt;
    var form = byId(mid + &amp;quot;-f&amp;quot;);&lt;br /&gt;
    var btnSend = byId(mid + &amp;quot;-send&amp;quot;);&lt;br /&gt;
    var msg = byId(mid + &amp;quot;-msg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    if (!REPORTS_API_BASE) {&lt;br /&gt;
      if (btnSend) btnSend.disabled = true;&lt;br /&gt;
      if (msg) {&lt;br /&gt;
        msg.textContent = &amp;quot;Configura api_base na wiki: api_base=https://…&amp;quot;;&lt;br /&gt;
        msg.className = &amp;quot;gla-r-msg gla-r-err&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    form.addEventListener(&amp;quot;submit&amp;quot;, function (e) {&lt;br /&gt;
      e.preventDefault();&lt;br /&gt;
      var title = (byId(mid + &amp;quot;-title&amp;quot;).value || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
      var cat = byId(mid + &amp;quot;-cat&amp;quot;).value;&lt;br /&gt;
      var desc = (byId(mid + &amp;quot;-desc&amp;quot;).value || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
      var fileIn = byId(mid + &amp;quot;-img&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      msg.textContent = &amp;quot;&amp;quot;;&lt;br /&gt;
      msg.className = &amp;quot;gla-r-msg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
      if (!desc) {&lt;br /&gt;
        msg.textContent = &amp;quot;Preencha a descrição.&amp;quot;;&lt;br /&gt;
        msg.className = &amp;quot;gla-r-msg gla-r-err&amp;quot;;&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      if (title.length &amp;gt; MAX_TITLE) {&lt;br /&gt;
        msg.textContent = &amp;quot;Título longo demais.&amp;quot;;&lt;br /&gt;
        msg.className = &amp;quot;gla-r-msg gla-r-err&amp;quot;;&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      var fd = new FormData();&lt;br /&gt;
      if (title) fd.append(&amp;quot;name&amp;quot;, title);&lt;br /&gt;
      fd.append(&amp;quot;category&amp;quot;, cat);&lt;br /&gt;
      fd.append(&amp;quot;description&amp;quot;, desc);&lt;br /&gt;
      if (fileIn.files &amp;amp;&amp;amp; fileIn.files[0]) {&lt;br /&gt;
        var f = fileIn.files[0];&lt;br /&gt;
        if (f.size &amp;gt; MAX_BYTES) {&lt;br /&gt;
          msg.textContent = &amp;quot;Imagem acima de 5 MB.&amp;quot;;&lt;br /&gt;
          msg.className = &amp;quot;gla-r-msg gla-r-err&amp;quot;;&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
        if (!localFileOk(f)) {&lt;br /&gt;
          msg.textContent = &amp;quot;Só PNG, JPG ou GIF.&amp;quot;;&lt;br /&gt;
          msg.className = &amp;quot;gla-r-msg gla-r-err&amp;quot;;&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
        fd.append(&amp;quot;image&amp;quot;, f);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      btnSend.disabled = true;&lt;br /&gt;
      var url = REPORTS_API_BASE + &amp;quot;/api/reports&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
      fetch(url, { method: &amp;quot;POST&amp;quot;, body: fd })&lt;br /&gt;
        .then(function (r) {&lt;br /&gt;
          return r.text().then(function (text) {&lt;br /&gt;
            var body = {};&lt;br /&gt;
            try {&lt;br /&gt;
              body = text ? JSON.parse(text) : {};&lt;br /&gt;
            } catch (ignore) {&lt;br /&gt;
              body = { _raw: text };&lt;br /&gt;
            }&lt;br /&gt;
            return { ok: r.ok, status: r.status, body: body, raw: text };&lt;br /&gt;
          });&lt;br /&gt;
        })&lt;br /&gt;
        .then(function (result) {&lt;br /&gt;
          if (result.ok) {&lt;br /&gt;
            msg.textContent = &amp;quot;Enviado. Obrigado!&amp;quot;;&lt;br /&gt;
            msg.className = &amp;quot;gla-r-msg gla-r-ok&amp;quot;;&lt;br /&gt;
            form.reset();&lt;br /&gt;
          } else {&lt;br /&gt;
            var detail =&lt;br /&gt;
              (result.body &amp;amp;&amp;amp; result.body.error) ||&lt;br /&gt;
              (result.raw &amp;amp;&amp;amp; result.raw.slice(0, 200)) ||&lt;br /&gt;
              &amp;quot;&amp;quot;;&lt;br /&gt;
            msg.textContent = detail&lt;br /&gt;
              ? detail + &amp;quot; (&amp;quot; + result.status + &amp;quot;)&amp;quot;&lt;br /&gt;
              : &amp;quot;Erro &amp;quot; + result.status;&lt;br /&gt;
            msg.className = &amp;quot;gla-r-msg gla-r-err&amp;quot;;&lt;br /&gt;
          }&lt;br /&gt;
        })&lt;br /&gt;
        .catch(function () {&lt;br /&gt;
          msg.textContent =&lt;br /&gt;
            &amp;quot;Rede ou CORS: confirma api_base e REPORTS_CORS_ORIGINS no servidor.&amp;quot;;&lt;br /&gt;
          msg.className = &amp;quot;gla-r-msg gla-r-err&amp;quot;;&lt;br /&gt;
        })&lt;br /&gt;
        .then(function () {&lt;br /&gt;
          btnSend.disabled = false;&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
  })();&lt;br /&gt;
  /*]]&amp;gt;*/&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Teste&amp;diff=46520</id>
		<title>Teste</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Teste&amp;diff=46520"/>
		<updated>2026-04-28T16:04:04Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#widget:Teste}}&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Widget:Teste&amp;diff=46519</id>
		<title>Widget:Teste</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Widget:Teste&amp;diff=46519"/>
		<updated>2026-04-28T16:03:58Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
  &amp;lt;!--&lt;br /&gt;
  GLA — Widget:ReportModal (Extension:Widgets)&lt;br /&gt;
&lt;br /&gt;
  Cola **ISTO TUDO** em [[Widget:ReportModal]].&lt;br /&gt;
  A versão anterior (.html) estava **truncada** (id=&amp;quot;gla-o-{{#widget:}}…&amp;quot;) e:&lt;br /&gt;
  - quebrava o HTML da página inteira (tags abertas);&lt;br /&gt;
  - deixava o overlay visível sem `hidden` → fundo escuro em ecrã completo;&lt;br /&gt;
  - podia mostrar {{{...}}} sem expandir.&lt;br /&gt;
&lt;br /&gt;
  Uso: {{#widget:ReportModal|api_base=https://TEU_DEPLOY}}&lt;br /&gt;
  Opcionais: |label=... |wid=2&lt;br /&gt;
&lt;br /&gt;
  No servidor: REPORTS_CORS_ORIGINS com o origin da wiki.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gla-report-widget-root&amp;quot; data-gla-api=&amp;quot;{{{api_base|}}}&amp;quot; data-gla-label=&amp;quot;{{{label|Reportar}}}&amp;quot;&lt;br /&gt;
  data-gla-wid=&amp;quot;{{{wid|1}}}&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  /*&amp;lt;![CDATA[*/&lt;br /&gt;
  (function () {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
    var roots = document.currentScript.previousElementSibling;&lt;br /&gt;
    if (!roots || !roots.classList || !roots.classList.contains(&amp;quot;gla-report-widget-root&amp;quot;)) {&lt;br /&gt;
      roots = document.querySelector(&amp;quot;.gla-report-widget-root:not([data-gla-init])&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    if (!roots || roots.getAttribute(&amp;quot;data-gla-init&amp;quot;)) return;&lt;br /&gt;
    roots.setAttribute(&amp;quot;data-gla-init&amp;quot;, &amp;quot;1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    var REPORTS_API_BASE = (roots.getAttribute(&amp;quot;data-gla-api&amp;quot;) || &amp;quot;&amp;quot;).replace(/\/$/, &amp;quot;&amp;quot;);&lt;br /&gt;
    var BUTTON_LABEL = roots.getAttribute(&amp;quot;data-gla-label&amp;quot;) || &amp;quot;Reportar&amp;quot;;&lt;br /&gt;
    var wid = String(roots.getAttribute(&amp;quot;data-gla-wid&amp;quot;) || &amp;quot;1&amp;quot;).replace(/[^a-zA-Z0-9_-]/g, &amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    var MAX_TITLE = 60;&lt;br /&gt;
    var MAX_BYTES = 5 * 1024 * 1024;&lt;br /&gt;
&lt;br /&gt;
    function esc(s) {&lt;br /&gt;
      var d = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
      d.textContent = s == null ? &amp;quot;&amp;quot; : String(s);&lt;br /&gt;
      return d.innerHTML;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function byId(id) {&lt;br /&gt;
      return document.getElementById(id);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function css() {&lt;br /&gt;
      if (byId(&amp;quot;gla-reports-modal-css-global&amp;quot;)) return;&lt;br /&gt;
      var st = document.createElement(&amp;quot;style&amp;quot;);&lt;br /&gt;
      st.id = &amp;quot;gla-reports-modal-css-global&amp;quot;;&lt;br /&gt;
      st.textContent =&lt;br /&gt;
        &amp;quot;.gla-report-widget-root{display:inline-block;vertical-align:middle}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-reports-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:2147483640;display:flex;align-items:center;justify-content:center;padding:16px}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-reports-overlay[hidden]{display:none!important}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-reports-modal-bx{max-width:480px;width:100%;max-height:90vh;overflow:auto;background:#111827;color:#f9fafb;border-radius:12px;padding:20px;font:14px/1.45 system-ui,sans-serif;box-shadow:0 24px 48px rgba(0,0,0,.4);border:1px solid #374151}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-reports-modal-bx h2{font-size:1.1rem;margin:0 0 14px;color:#fff}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-field{margin-bottom:12px}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-field label{display:block;font-size:.8rem;color:#d1d5db;margin-bottom:4px}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-field input[type=text],.gla-r-field select,.gla-r-field textarea{width:100%;box-sizing:border-box;border-radius:8px;border:1px solid #4b5563;background:#1f2937;color:#fff;padding:8px 10px;font:inherit}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-field textarea{min-height:120px;resize:vertical}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-actions{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-actions button{border-radius:8px;padding:10px 16px;font:inherit;border:0;cursor:pointer}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-primary{background:#6366f1;color:#fff}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-secondary{background:#374151;color:#e5e7eb}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-msg{margin-top:10px;font-size:.85rem;min-height:1.2em}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-msg.ok{color:#6ee7b7}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-r-msg.err{color:#fca5a5}&amp;quot; +&lt;br /&gt;
        &amp;quot;.gla-report-open-btn{font:inherit;cursor:pointer;border-radius:8px;padding:8px 14px;border:1px solid #4b5563;background:#1f2937;color:#e5e7eb}&amp;quot;;&lt;br /&gt;
      document.head.appendChild(st);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    var oid = &amp;quot;gla-o-&amp;quot; + wid;&lt;br /&gt;
    var mid = &amp;quot;gla-m-&amp;quot; + wid;&lt;br /&gt;
&lt;br /&gt;
    function buildModal(host) {&lt;br /&gt;
      host.innerHTML =&lt;br /&gt;
        '&amp;lt;div class=&amp;quot;gla-reports-overlay&amp;quot; id=&amp;quot;' +&lt;br /&gt;
        oid +&lt;br /&gt;
        '&amp;quot; hidden role=&amp;quot;presentation&amp;quot;&amp;gt;' +&lt;br /&gt;
        '&amp;lt;div class=&amp;quot;gla-reports-modal-bx&amp;quot; role=&amp;quot;dialog&amp;quot; aria-modal=&amp;quot;true&amp;quot; aria-labelledby=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-t&amp;quot;&amp;gt;' +&lt;br /&gt;
        '&amp;lt;h2 id=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-t&amp;quot;&amp;gt;' +&lt;br /&gt;
        esc(&amp;quot;Report ou sugestão&amp;quot;) +&lt;br /&gt;
        &amp;quot;&amp;lt;/h2&amp;gt;&amp;quot; +&lt;br /&gt;
        '&amp;lt;form id=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-f&amp;quot; novalidate&amp;gt;' +&lt;br /&gt;
        '&amp;lt;div class=&amp;quot;gla-r-field&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-title&amp;quot;&amp;gt;Título &amp;lt;span style=&amp;quot;opacity:.65&amp;quot;&amp;gt;(até ' +&lt;br /&gt;
        MAX_TITLE +&lt;br /&gt;
        &amp;quot; caracteres)&amp;lt;/span&amp;gt;&amp;lt;/label&amp;gt;&amp;quot; +&lt;br /&gt;
        '&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-title&amp;quot; name=&amp;quot;name&amp;quot; maxlength=&amp;quot;' +&lt;br /&gt;
        MAX_TITLE +&lt;br /&gt;
        '&amp;quot; placeholder=&amp;quot;Opcional&amp;quot;/&amp;gt;&amp;lt;/div&amp;gt;' +&lt;br /&gt;
        '&amp;lt;div class=&amp;quot;gla-r-field&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-cat&amp;quot;&amp;gt;Categoria&amp;lt;/label&amp;gt;' +&lt;br /&gt;
        '&amp;lt;select id=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-cat&amp;quot; name=&amp;quot;category&amp;quot; required&amp;gt;' +&lt;br /&gt;
        '&amp;lt;option value=&amp;quot;report&amp;quot;&amp;gt;' +&lt;br /&gt;
        esc(&amp;quot;Report&amp;quot;) +&lt;br /&gt;
        &amp;quot;&amp;lt;/option&amp;gt;&amp;quot; +&lt;br /&gt;
        '&amp;lt;option value=&amp;quot;suggestion&amp;quot;&amp;gt;' +&lt;br /&gt;
        esc(&amp;quot;Sugestão&amp;quot;) +&lt;br /&gt;
        &amp;quot;&amp;lt;/option&amp;gt;&amp;quot; +&lt;br /&gt;
        &amp;quot;&amp;lt;/select&amp;gt;&amp;lt;/div&amp;gt;&amp;quot; +&lt;br /&gt;
        '&amp;lt;div class=&amp;quot;gla-r-field&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-desc&amp;quot;&amp;gt;Descrição &amp;lt;span style=&amp;quot;color:#fca5a5&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;&amp;lt;/label&amp;gt;' +&lt;br /&gt;
        '&amp;lt;textarea id=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-desc&amp;quot; name=&amp;quot;description&amp;quot; maxlength=&amp;quot;8000&amp;quot; required placeholder=&amp;quot;Descrição detalhada&amp;quot;&amp;gt;&amp;lt;/textarea&amp;gt;&amp;lt;/div&amp;gt;' +&lt;br /&gt;
        '&amp;lt;div class=&amp;quot;gla-r-field&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-img&amp;quot;&amp;gt;Imagem (opcional)&amp;lt;/label&amp;gt;' +&lt;br /&gt;
        '&amp;lt;input type=&amp;quot;file&amp;quot; id=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-img&amp;quot; accept=&amp;quot;image/png,image/jpeg,image/gif&amp;quot;/&amp;gt;&amp;lt;/div&amp;gt;' +&lt;br /&gt;
        '&amp;lt;div class=&amp;quot;gla-r-actions&amp;quot;&amp;gt;' +&lt;br /&gt;
        '&amp;lt;button type=&amp;quot;submit&amp;quot; class=&amp;quot;gla-r-primary&amp;quot; id=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-send&amp;quot;&amp;gt;' +&lt;br /&gt;
        esc(&amp;quot;Enviar&amp;quot;) +&lt;br /&gt;
        &amp;quot;&amp;lt;/button&amp;gt;&amp;quot; +&lt;br /&gt;
        '&amp;lt;button type=&amp;quot;button&amp;quot; class=&amp;quot;gla-r-secondary&amp;quot; id=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-cancel&amp;quot;&amp;gt;' +&lt;br /&gt;
        esc(&amp;quot;Fechar&amp;quot;) +&lt;br /&gt;
        &amp;quot;&amp;lt;/button&amp;gt;&amp;lt;/div&amp;gt;&amp;quot; +&lt;br /&gt;
        '&amp;lt;p class=&amp;quot;gla-r-msg&amp;quot; id=&amp;quot;' +&lt;br /&gt;
        mid +&lt;br /&gt;
        '-msg&amp;quot;&amp;gt;&amp;lt;/p&amp;gt;' +&lt;br /&gt;
        &amp;quot;&amp;lt;/form&amp;gt;&amp;quot; +&lt;br /&gt;
        &amp;quot;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function openModal(overlay) {&lt;br /&gt;
      overlay.removeAttribute(&amp;quot;hidden&amp;quot;);&lt;br /&gt;
      var t = byId(mid + &amp;quot;-title&amp;quot;);&lt;br /&gt;
      if (t) t.focus();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function closeModal(overlay) {&lt;br /&gt;
      overlay.setAttribute(&amp;quot;hidden&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
      var m = byId(mid + &amp;quot;-msg&amp;quot;);&lt;br /&gt;
      if (m) {&lt;br /&gt;
        m.textContent = &amp;quot;&amp;quot;;&lt;br /&gt;
        m.className = &amp;quot;gla-r-msg&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    css();&lt;br /&gt;
&lt;br /&gt;
    var btn = document.createElement(&amp;quot;button&amp;quot;);&lt;br /&gt;
    btn.type = &amp;quot;button&amp;quot;;&lt;br /&gt;
    btn.className = &amp;quot;gla-report-open-btn&amp;quot;;&lt;br /&gt;
    btn.textContent = BUTTON_LABEL;&lt;br /&gt;
    roots.appendChild(btn);&lt;br /&gt;
&lt;br /&gt;
    var modalHost = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
    roots.appendChild(modalHost);&lt;br /&gt;
    buildModal(modalHost);&lt;br /&gt;
&lt;br /&gt;
    var overlay = byId(oid);&lt;br /&gt;
    var form = byId(mid + &amp;quot;-f&amp;quot;);&lt;br /&gt;
    var btnCancel = byId(mid + &amp;quot;-cancel&amp;quot;);&lt;br /&gt;
    var btnSend = byId(mid + &amp;quot;-send&amp;quot;);&lt;br /&gt;
    var msg = byId(mid + &amp;quot;-msg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    if (!REPORTS_API_BASE) {&lt;br /&gt;
      btn.disabled = true;&lt;br /&gt;
      btn.title = &amp;quot;Define api_base no widget (api_base=https://...)&amp;quot;;&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    btn.addEventListener(&amp;quot;click&amp;quot;, function () {&lt;br /&gt;
      openModal(overlay);&lt;br /&gt;
    });&lt;br /&gt;
    btnCancel.addEventListener(&amp;quot;click&amp;quot;, function () {&lt;br /&gt;
      closeModal(overlay);&lt;br /&gt;
    });&lt;br /&gt;
    overlay.addEventListener(&amp;quot;click&amp;quot;, function (e) {&lt;br /&gt;
      if (e.target === overlay) closeModal(overlay);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    form.addEventListener(&amp;quot;submit&amp;quot;, function (e) {&lt;br /&gt;
      e.preventDefault();&lt;br /&gt;
      var title = (byId(mid + &amp;quot;-title&amp;quot;).value || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
      var cat = byId(mid + &amp;quot;-cat&amp;quot;).value;&lt;br /&gt;
      var desc = (byId(mid + &amp;quot;-desc&amp;quot;).value || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
      var fileIn = byId(mid + &amp;quot;-img&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      msg.textContent = &amp;quot;&amp;quot;;&lt;br /&gt;
      msg.className = &amp;quot;gla-r-msg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
      if (!desc) {&lt;br /&gt;
        msg.textContent = &amp;quot;Preencha a descrição.&amp;quot;;&lt;br /&gt;
        msg.className = &amp;quot;gla-r-msg err&amp;quot;;&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      if (title.length &amp;gt; MAX_TITLE) {&lt;br /&gt;
        msg.textContent = &amp;quot;Título muito longo.&amp;quot;;&lt;br /&gt;
        msg.className = &amp;quot;gla-r-msg err&amp;quot;;&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      var fd = new FormData();&lt;br /&gt;
      if (title) fd.append(&amp;quot;name&amp;quot;, title);&lt;br /&gt;
      fd.append(&amp;quot;category&amp;quot;, cat);&lt;br /&gt;
      fd.append(&amp;quot;description&amp;quot;, desc);&lt;br /&gt;
      if (fileIn.files &amp;amp;&amp;amp; fileIn.files[0]) {&lt;br /&gt;
        var f = fileIn.files[0];&lt;br /&gt;
        if (f.size &amp;gt; MAX_BYTES) {&lt;br /&gt;
          msg.textContent = &amp;quot;Imagem acima de 5 MB.&amp;quot;;&lt;br /&gt;
          msg.className = &amp;quot;gla-r-msg err&amp;quot;;&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
        if (!/^image\/(png|jpeg|gif)$/i.test(f.type)) {&lt;br /&gt;
          msg.textContent = &amp;quot;Só PNG, JPG ou GIF.&amp;quot;;&lt;br /&gt;
          msg.className = &amp;quot;gla-r-msg err&amp;quot;;&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
        fd.append(&amp;quot;image&amp;quot;, f);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      btnSend.disabled = true;&lt;br /&gt;
      var url = REPORTS_API_BASE + &amp;quot;/api/reports&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
      fetch(url, { method: &amp;quot;POST&amp;quot;, body: fd })&lt;br /&gt;
        .then(function (r) {&lt;br /&gt;
          return r&lt;br /&gt;
            .json()&lt;br /&gt;
            .catch(function () {&lt;br /&gt;
              return {};&lt;br /&gt;
            })&lt;br /&gt;
            .then(function (j) {&lt;br /&gt;
              return { ok: r.ok, status: r.status, body: j };&lt;br /&gt;
            });&lt;br /&gt;
        })&lt;br /&gt;
        .then(function (result) {&lt;br /&gt;
          if (result.ok) {&lt;br /&gt;
            msg.textContent = &amp;quot;Enviado. Obrigado!&amp;quot;;&lt;br /&gt;
            msg.className = &amp;quot;gla-r-msg ok&amp;quot;;&lt;br /&gt;
            form.reset();&lt;br /&gt;
            setTimeout(function () {&lt;br /&gt;
              closeModal(overlay);&lt;br /&gt;
            }, 1500);&lt;br /&gt;
          } else {&lt;br /&gt;
            msg.textContent =&lt;br /&gt;
              (result.body &amp;amp;&amp;amp; result.body.error) || &amp;quot;Erro &amp;quot; + result.status;&lt;br /&gt;
            msg.className = &amp;quot;gla-r-msg err&amp;quot;;&lt;br /&gt;
          }&lt;br /&gt;
        })&lt;br /&gt;
        .catch(function () {&lt;br /&gt;
          msg.textContent =&lt;br /&gt;
            &amp;quot;Rede ou CORS: confirma api_base e REPORTS_CORS_ORIGINS no servidor.&amp;quot;;&lt;br /&gt;
          msg.className = &amp;quot;gla-r-msg err&amp;quot;;&lt;br /&gt;
        })&lt;br /&gt;
        .then(function () {&lt;br /&gt;
          btnSend.disabled = false;&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
  })();&lt;br /&gt;
  /*]]&amp;gt;*/&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Teste&amp;diff=46518</id>
		<title>Teste</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Teste&amp;diff=46518"/>
		<updated>2026-04-28T16:02:24Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: Limpou toda a página&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Teste&amp;diff=46517</id>
		<title>Teste</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Teste&amp;diff=46517"/>
		<updated>2026-04-28T16:02:01Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#widget:Teste}}&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Widget:Teste&amp;diff=46516</id>
		<title>Widget:Teste</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Widget:Teste&amp;diff=46516"/>
		<updated>2026-04-28T16:01:46Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: Página substituída por '&amp;lt;noinclude&amp;gt;   &amp;lt;!--   GLA Wiki — Widget:ReportModal (Extension:Widgets)   Cola isto na página Widget:ReportModal (conteúdo = HTML + parâmetros MediaWiki {{{...}...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
  &amp;lt;!--&lt;br /&gt;
  GLA Wiki — Widget:ReportModal (Extension:Widgets)&lt;br /&gt;
  Cola isto na página [[Widget:ReportModal]] (conteúdo = HTML + parâmetros MediaWiki {{{...}}}).&lt;br /&gt;
&lt;br /&gt;
  {{#widget:ReportModal|api_base=https://TEU_DEPLOY}}&lt;br /&gt;
&lt;br /&gt;
  Opcionais: |label=Texto do botão |wid=2&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;style id=&amp;quot;gla-reports-widget-styles&amp;quot;&amp;gt;&lt;br /&gt;
  .gla-report-widget-root {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gla-reports-overlay {&lt;br /&gt;
    position: fixed;&lt;br /&gt;
    inset: 0;&lt;br /&gt;
    background: rgba(0, 0, 0, 0.45);&lt;br /&gt;
    z-index: 2147483640;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    padding: 16px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gla-reports-overlay[hidden] {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gla-reports-modal-bx {&lt;br /&gt;
    max-width: 480px;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    max-height: 90vh;&lt;br /&gt;
    overflow: auto;&lt;br /&gt;
    background: #111827;&lt;br /&gt;
    color: #f9fafb;&lt;br /&gt;
    border-radius: 12px;&lt;br /&gt;
    padding: 20px;&lt;br /&gt;
    font: 14px/1.45 system-ui, sans-serif;&lt;br /&gt;
    box-shadow: 0 24px 48px rgba(0, 0, 0, 0.4);&lt;br /&gt;
    border: 1px solid #374151;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gla-reports-modal-bx h2 {&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    margin: 0 0 14px;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gla-r-field {&lt;br /&gt;
    margin-bottom: 12px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gla-r-field label {&lt;br /&gt;
    display: block;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
    color: #d1d5db;&lt;br /&gt;
    margin-bottom: 4px;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gla-r-field input[type=&amp;quot;text&amp;quot;],&lt;br /&gt;
  .gla-r-field select,&lt;br /&gt;
  .gla-r-field textarea {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    border: 1px solid #4b5563;&lt;br /&gt;
    background: #1f2937;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    padding: 8px 10px;&lt;br /&gt;
    font: inherit;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gla-r-field textarea {&lt;br /&gt;
    min-height: 120px;&lt;br /&gt;
    resize: vertical;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gla-r-actions {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    gap: 8px;&lt;br /&gt;
    margin-top: 16px;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gla-r-actions button {&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 10px 16px;&lt;br /&gt;
    font: inherit;&lt;br /&gt;
    border: 0;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gla-r-primary {&lt;br /&gt;
    background: #6366f1;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gla-r-secondary {&lt;br /&gt;
    background: #374151;&lt;br /&gt;
    color: #e5e7eb;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gla-r-msg {&lt;br /&gt;
    margin-top: 10px;&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    min-height: 1.2em;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gla-r-msg.gla-r-ok {&lt;br /&gt;
    color: #6ee7b7;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gla-r-msg.gla-r-err {&lt;br /&gt;
    color: #fca5a5;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gla-report-open-btn {&lt;br /&gt;
    font: inherit;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 8px 14px;&lt;br /&gt;
    border: 1px solid #4b5563;&lt;br /&gt;
    background: #1f2937;&lt;br /&gt;
    color: #e5e7eb;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gla-report-widget-root&amp;quot; data-gla-init=&amp;quot;0&amp;quot; data-gla-api=&amp;quot;{{{api_base|}}}&amp;quot; data-gla-wid=&amp;quot;{{{wid|1}}}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;button type=&amp;quot;button&amp;quot; class=&amp;quot;gla-report-open-btn&amp;quot;&amp;gt;&lt;br /&gt;
    {{{label|Reportar}}}&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gla-reports-overlay&amp;quot; id=&amp;quot;gla-o-{{#widget:}}&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=M%C3%B3dulo:Teste&amp;diff=46515</id>
		<title>Módulo:Teste</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=M%C3%B3dulo:Teste&amp;diff=46515"/>
		<updated>2026-04-28T16:01:18Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
  Módulo: opcional para inserir o widget via {{#invoke}}.&lt;br /&gt;
&lt;br /&gt;
  Na wiki: criar página Módulo:GlaReportEmbed com este código.&lt;br /&gt;
&lt;br /&gt;
  Uso num modelo ou página:&lt;br /&gt;
    {{#invoke:GlaReportEmbed|embed|api_base=https://teu-deploy.com}}&lt;br /&gt;
&lt;br /&gt;
  Parâmetros nomeados (opcionais):&lt;br /&gt;
    |label=Texto do botão&lt;br /&gt;
    |wid=2&lt;br /&gt;
&lt;br /&gt;
  Requer a extensão Scribunto e o widget {{#widget:ReportModal|...}} registrado.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.embed(frame)&lt;br /&gt;
	local pargs = (frame:getParent() and frame:getParent().args) or {}&lt;br /&gt;
	local args = frame.args or {}&lt;br /&gt;
	local base = (&lt;br /&gt;
		args.api_base&lt;br /&gt;
		or pargs.api_base&lt;br /&gt;
		or args[1]&lt;br /&gt;
		or pargs[1]&lt;br /&gt;
		or &amp;quot;&amp;quot;&lt;br /&gt;
	):gsub(&amp;quot;^%s+&amp;quot;, &amp;quot;&amp;quot;):gsub(&amp;quot;%s+$&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	if base == &amp;quot;&amp;quot; then&lt;br /&gt;
		return '&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;GlaReportEmbed: falta &amp;lt;code&amp;gt;api_base&amp;lt;/code&amp;gt;.&amp;lt;/span&amp;gt;'&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local label = args.label or pargs.label or &amp;quot;&amp;quot;&lt;br /&gt;
	local wid = args.wid or pargs.wid or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local wikitext = &amp;quot;{{#widget:ReportModal|api_base=&amp;quot; .. base&lt;br /&gt;
	if label ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		wikitext = wikitext .. &amp;quot;|label=&amp;quot; .. label&lt;br /&gt;
	end&lt;br /&gt;
	if wid ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		wikitext = wikitext .. &amp;quot;|wid=&amp;quot; .. wid&lt;br /&gt;
	end&lt;br /&gt;
	wikitext = wikitext .. &amp;quot;}}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	return frame:preprocess(wikitext)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Widget:C.Skills&amp;diff=46366</id>
		<title>Widget:C.Skills</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Widget:C.Skills&amp;diff=46366"/>
		<updated>2026-04-20T22:33:28Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- MAIN SKILLS SYSTEM --&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  (function () {&lt;br /&gt;
    const $ = (s, root = document) =&amp;gt; root.querySelector(s);&lt;br /&gt;
    const $$ = (s, root = document) =&amp;gt; Array.from(root.querySelectorAll(s));&lt;br /&gt;
    const ensureRemoved = (sel) =&amp;gt; {&lt;br /&gt;
      Array.from(document.querySelectorAll(sel)).forEach((n) =&amp;gt; n.remove());&lt;br /&gt;
    };&lt;br /&gt;
    const onceFlag = (el, key) =&amp;gt; {&lt;br /&gt;
      if (!el) return false;&lt;br /&gt;
      if (el.dataset[key]) return false;&lt;br /&gt;
      el.dataset[key] = &amp;quot;1&amp;quot;;&lt;br /&gt;
      return true;&lt;br /&gt;
    };&lt;br /&gt;
    const addOnce = (el, ev, fn, options = {}) =&amp;gt; {&lt;br /&gt;
      if (!el) return;&lt;br /&gt;
      const attr = `data-wired-${ev}`;&lt;br /&gt;
      if (el.hasAttribute(attr)) return;&lt;br /&gt;
      el.addEventListener(ev, fn, options);&lt;br /&gt;
      el.setAttribute(attr, &amp;quot;1&amp;quot;);&lt;br /&gt;
    };&lt;br /&gt;
    const FLAG_ICON_FILES = {&lt;br /&gt;
      aggro: &amp;quot;Enemyaggro-icon.png&amp;quot;,&lt;br /&gt;
      bridge: &amp;quot;Bridgemaker-icon.png&amp;quot;,&lt;br /&gt;
      wall: &amp;quot;Destroywall-icon.png&amp;quot;,&lt;br /&gt;
      quickcast: &amp;quot;Quickcast-icon.png&amp;quot;,&lt;br /&gt;
      wallpass: &amp;quot;Passthroughwall-icon.png&amp;quot;,&lt;br /&gt;
    };&lt;br /&gt;
    const subBarTemplateCache =&lt;br /&gt;
      window.__skillSubBarTemplateCache ||&lt;br /&gt;
      (window.__skillSubBarTemplateCache = new Map());&lt;br /&gt;
    const imagePreloadCache =&lt;br /&gt;
      window.__skillImagePreloadCache ||&lt;br /&gt;
      (window.__skillImagePreloadCache = new Map());&lt;br /&gt;
    const videoPreloadCache =&lt;br /&gt;
      window.__skillVideoPreloadCache ||&lt;br /&gt;
      (window.__skillVideoPreloadCache = new Set());&lt;br /&gt;
    const flagRowCache =&lt;br /&gt;
      window.__skillFlagRowCache || (window.__skillFlagRowCache = new Map());&lt;br /&gt;
    const flagIconURLCache =&lt;br /&gt;
      window.__skillFlagIconURLCache ||&lt;br /&gt;
      (window.__skillFlagIconURLCache = new Map());&lt;br /&gt;
&lt;br /&gt;
    // Sistema de múltiplas formas (genérico)&lt;br /&gt;
    let currentForm = null; // null = primeira forma, depois nome da forma atual&lt;br /&gt;
    let formsData = {};&lt;br /&gt;
    let fixedSkills = []; // Skills que sempre aparecem (Change Form, Guard Point, etc.)&lt;br /&gt;
&lt;br /&gt;
    // Sistema genérico de swap de personagens (ex: Buchi &amp;amp; Sham, futuros personagens)&lt;br /&gt;
    let activeCharacter = null; // null = personagem padrão, depois nome do personagem ativo (ex: &amp;quot;Buchi&amp;quot;, &amp;quot;Sham&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    function showFormTransitionVideo(changeFormIconEl) {&lt;br /&gt;
      const skillsRoot = document.getElementById(&amp;quot;skills&amp;quot;);&lt;br /&gt;
      if (!skillsRoot) return;&lt;br /&gt;
&lt;br /&gt;
      // Busca videoBox&lt;br /&gt;
      let videoBox = skillsRoot.querySelector(&amp;quot;.video-container&amp;quot;);&lt;br /&gt;
      if (!videoBox) {&lt;br /&gt;
        const skillsContainer = skillsRoot.querySelector(&amp;quot;.skills-container&amp;quot;);&lt;br /&gt;
        if (skillsContainer) {&lt;br /&gt;
          videoBox = skillsContainer.querySelector(&amp;quot;.video-container&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (!videoBox) return;&lt;br /&gt;
&lt;br /&gt;
      try {&lt;br /&gt;
        // Lê dados de forms para determinar forma atual e próxima&lt;br /&gt;
        const formsJSON = skillsRoot.dataset.forms || &amp;quot;{}&amp;quot;;&lt;br /&gt;
        if (formsJSON &amp;amp;&amp;amp; formsJSON !== &amp;quot;{}&amp;quot;) {&lt;br /&gt;
          const tempFormsData = JSON.parse(formsJSON);&lt;br /&gt;
          const formNames = Object.keys(tempFormsData);&lt;br /&gt;
&lt;br /&gt;
          // Determina forma atual e próxima&lt;br /&gt;
          const currentIdx = currentForm ? formNames.indexOf(currentForm) : -1;&lt;br /&gt;
          const nextIdx = (currentIdx + 1) % formNames.length;&lt;br /&gt;
          const nextForm = formNames[nextIdx];&lt;br /&gt;
&lt;br /&gt;
          // Busca vídeo de transição na skill Change Form&lt;br /&gt;
          // form_videos[forma_atual] = &amp;quot;video.mp4&amp;quot; (vídeo da transição atual → próxima)&lt;br /&gt;
          const formVideosRaw =&lt;br /&gt;
            changeFormIconEl.dataset.formVideos ||&lt;br /&gt;
            changeFormIconEl.getAttribute(&amp;quot;data-form-videos&amp;quot;);&lt;br /&gt;
          if (formVideosRaw) {&lt;br /&gt;
            try {&lt;br /&gt;
              const videos = JSON.parse(formVideosRaw);&lt;br /&gt;
              const transitionVideo = videos[currentForm] || &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
              if (transitionVideo &amp;amp;&amp;amp; transitionVideo.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                const videoURL = filePathURL(transitionVideo);&lt;br /&gt;
                if (videoURL) {&lt;br /&gt;
                  // Busca ou cria elemento de vídeo para esta transição&lt;br /&gt;
                  const videoKey = `form_transition:${currentForm}:${nextForm}`;&lt;br /&gt;
                  let v = videosCache.get(videoKey);&lt;br /&gt;
&lt;br /&gt;
                  if (!v) {&lt;br /&gt;
                    // Cria novo elemento de vídeo&lt;br /&gt;
                    v = document.createElement(&amp;quot;video&amp;quot;);&lt;br /&gt;
                    v.className = &amp;quot;skill-video&amp;quot;;&lt;br /&gt;
                    v.src = videoURL;&lt;br /&gt;
                    v.preload = &amp;quot;auto&amp;quot;;&lt;br /&gt;
                    v.controls = false;&lt;br /&gt;
                    v.muted = false;&lt;br /&gt;
                    v.loop = false;&lt;br /&gt;
                    v.playsInline = true;&lt;br /&gt;
                    videoBox.appendChild(v);&lt;br /&gt;
                    videosCache.set(videoKey, v);&lt;br /&gt;
                  }&lt;br /&gt;
&lt;br /&gt;
                  // Mostra e reproduz o vídeo&lt;br /&gt;
                  Array.from(&lt;br /&gt;
                    videoBox.querySelectorAll(&amp;quot;video.skill-video&amp;quot;)&lt;br /&gt;
                  ).forEach((vid) =&amp;gt; {&lt;br /&gt;
                    try {&lt;br /&gt;
                      vid.pause();&lt;br /&gt;
                    } catch (e) { }&lt;br /&gt;
                    vid.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
                  });&lt;br /&gt;
&lt;br /&gt;
                  videoBox.style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
                  v.style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
                  try {&lt;br /&gt;
                    v.currentTime = 0;&lt;br /&gt;
                    v.play().catch(() =&amp;gt; { });&lt;br /&gt;
                  } catch (e) { }&lt;br /&gt;
                }&lt;br /&gt;
              }&lt;br /&gt;
            } catch (e) {&lt;br /&gt;
              console.error(&amp;quot;[Forms] Erro ao parsear form_videos:&amp;quot;, e);&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      } catch (e) {&lt;br /&gt;
        console.error(&amp;quot;[Forms] Erro ao processar vídeo de transição:&amp;quot;, e);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Sistema genérico de swap de personagens (ex: Buchi &amp;amp; Sham, futuros personagens)&lt;br /&gt;
    // Detecta quais personagens estão disponíveis baseado nas skills&lt;br /&gt;
    function detectAvailableCharacters() {&lt;br /&gt;
      const iconBar = document.querySelector(&amp;quot;.icon-bar&amp;quot;);&lt;br /&gt;
      const skillsRoot = document.getElementById(&amp;quot;skills&amp;quot;);&lt;br /&gt;
      if (!iconBar) return [];&lt;br /&gt;
&lt;br /&gt;
      const characters = new Set();&lt;br /&gt;
      Array.from(&lt;br /&gt;
        iconBar.querySelectorAll(&amp;quot;.skill-icon[data-only-character]&amp;quot;)&lt;br /&gt;
      ).forEach((icon) =&amp;gt; {&lt;br /&gt;
        const character = (icon.dataset.onlyCharacter || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
        if (character) {&lt;br /&gt;
          characters.add(character);&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      const arr = Array.from(characters);&lt;br /&gt;
      const explicitDefault = (&lt;br /&gt;
        skillsRoot?.dataset?.defaultCharacter || &amp;quot;&amp;quot;&lt;br /&gt;
      ).trim();&lt;br /&gt;
      if (explicitDefault &amp;amp;&amp;amp; arr.includes(explicitDefault)) {&lt;br /&gt;
        const rest = arr.filter((c) =&amp;gt; c !== explicitDefault).sort();&lt;br /&gt;
        return [explicitDefault, ...rest];&lt;br /&gt;
      }&lt;br /&gt;
      return arr.sort();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Inicializa o personagem padrão (deve ser chamado quando a página carrega)&lt;br /&gt;
    function initializeActiveCharacter() {&lt;br /&gt;
      const availableCharacters = detectAvailableCharacters();&lt;br /&gt;
      if (availableCharacters.length &amp;gt; 0 &amp;amp;&amp;amp; activeCharacter === null) {&lt;br /&gt;
        // Inicializa com o primeiro personagem disponível (padrão)&lt;br /&gt;
        activeCharacter = availableCharacters[0];&lt;br /&gt;
        // Aplica o estado inicial (habilita/desabilita skills)&lt;br /&gt;
        applyCharacterSwapState();&lt;br /&gt;
        rebuildMainSkillsMetaFromBar();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Aplica o estado de swap nas skills (habilita/desabilita, vídeo, stats e descrição por personagem)&lt;br /&gt;
    function applyCharacterSwapState() {&lt;br /&gt;
      const iconBar = document.querySelector(&amp;quot;.icon-bar&amp;quot;);&lt;br /&gt;
      if (!iconBar) return;&lt;br /&gt;
&lt;br /&gt;
      Array.from(iconBar.querySelectorAll(&amp;quot;.skill-icon[data-index]&amp;quot;)).forEach(&lt;br /&gt;
        (icon) =&amp;gt; {&lt;br /&gt;
          const onlyCharacter = (icon.dataset.onlyCharacter || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
          const hasCharacterVideos =&lt;br /&gt;
            icon.dataset.characterVideos &amp;amp;&amp;amp;&lt;br /&gt;
            icon.dataset.characterVideos.trim() !== &amp;quot;&amp;quot;;&lt;br /&gt;
          const hasCharSkills =&lt;br /&gt;
            icon.dataset.characterSkills &amp;amp;&amp;amp;&lt;br /&gt;
            icon.dataset.characterSkills.trim() !== &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
          if (onlyCharacter) {&lt;br /&gt;
            if (onlyCharacter === activeCharacter) {&lt;br /&gt;
              icon.style.opacity = &amp;quot;1&amp;quot;;&lt;br /&gt;
              icon.style.filter = &amp;quot;&amp;quot;;&lt;br /&gt;
              icon.style.pointerEvents = &amp;quot;&amp;quot;;&lt;br /&gt;
              icon.classList.remove(&amp;quot;disabled-skill&amp;quot;);&lt;br /&gt;
            } else {&lt;br /&gt;
              icon.style.opacity = &amp;quot;0.3&amp;quot;;&lt;br /&gt;
              icon.style.filter = &amp;quot;grayscale(100%)&amp;quot;;&lt;br /&gt;
              icon.style.pointerEvents = &amp;quot;none&amp;quot;;&lt;br /&gt;
              icon.classList.add(&amp;quot;disabled-skill&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            return;&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          icon.style.opacity = &amp;quot;1&amp;quot;;&lt;br /&gt;
          icon.style.filter = &amp;quot;&amp;quot;;&lt;br /&gt;
          icon.style.pointerEvents = &amp;quot;&amp;quot;;&lt;br /&gt;
          icon.classList.remove(&amp;quot;disabled-skill&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
          if (!hasCharSkills &amp;amp;&amp;amp; !hasCharacterVideos) {&lt;br /&gt;
            return;&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          if (!icon.dataset.swapBaselineStored) {&lt;br /&gt;
            icon.dataset.swapBaselineStored = &amp;quot;1&amp;quot;;&lt;br /&gt;
            icon.dataset.swapBaselineAtr = icon.dataset.atr || &amp;quot;&amp;quot;;&lt;br /&gt;
            icon.dataset.swapBaselineDescPt = icon.dataset.descPt || &amp;quot;&amp;quot;;&lt;br /&gt;
            icon.dataset.swapBaselineDescEn = icon.dataset.descEn || &amp;quot;&amp;quot;;&lt;br /&gt;
            icon.dataset.swapBaselineDescEs = icon.dataset.descEs || &amp;quot;&amp;quot;;&lt;br /&gt;
            icon.dataset.swapBaselineDescPl = icon.dataset.descPl || &amp;quot;&amp;quot;;&lt;br /&gt;
            icon.dataset.swapBaselineLevel = icon.dataset.level || &amp;quot;&amp;quot;;&lt;br /&gt;
            icon.dataset.swapBaselineVideoFile = (&lt;br /&gt;
              icon.dataset.videoFile || &amp;quot;&amp;quot;&lt;br /&gt;
            ).trim();&lt;br /&gt;
            icon.dataset.swapBaselineVideo = (icon.dataset.video || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
            if (&lt;br /&gt;
              hasCharacterVideos &amp;amp;&amp;amp;&lt;br /&gt;
              !icon.dataset.originalVideoFile&lt;br /&gt;
            ) {&lt;br /&gt;
              icon.dataset.originalVideoFile =&lt;br /&gt;
                icon.dataset.swapBaselineVideoFile ||&lt;br /&gt;
                icon.dataset.swapBaselineVideo ||&lt;br /&gt;
                &amp;quot;&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          const oAtr = parseAttrString(&lt;br /&gt;
            icon.dataset.swapBaselineAtr || icon.dataset.atr || &amp;quot;&amp;quot;&lt;br /&gt;
          );&lt;br /&gt;
          let pve = oAtr.powerpve;&lt;br /&gt;
          let pvp = oAtr.powerpvp;&lt;br /&gt;
          let en = oAtr.energy;&lt;br /&gt;
          let cd = oAtr.cooldown;&lt;br /&gt;
          let dPt = icon.dataset.swapBaselineDescPt || &amp;quot;&amp;quot;;&lt;br /&gt;
          let dEn = icon.dataset.swapBaselineDescEn || &amp;quot;&amp;quot;;&lt;br /&gt;
          let dEs = icon.dataset.swapBaselineDescEs || &amp;quot;&amp;quot;;&lt;br /&gt;
          let dPl = icon.dataset.swapBaselineDescPl || &amp;quot;&amp;quot;;&lt;br /&gt;
          let lvl = icon.dataset.swapBaselineLevel || &amp;quot;&amp;quot;;&lt;br /&gt;
          let vFile = icon.dataset.swapBaselineVideoFile || &amp;quot;&amp;quot;;&lt;br /&gt;
          let vUrl = icon.dataset.swapBaselineVideo || &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
          if (hasCharSkills &amp;amp;&amp;amp; activeCharacter) {&lt;br /&gt;
            try {&lt;br /&gt;
              const cs = JSON.parse(icon.dataset.characterSkills);&lt;br /&gt;
              const co = cs[activeCharacter] || {};&lt;br /&gt;
              if (&lt;br /&gt;
                co.powerpve !== undefined &amp;amp;&amp;amp;&lt;br /&gt;
                co.powerpve !== null &amp;amp;&amp;amp;&lt;br /&gt;
                co.powerpve !== &amp;quot;&amp;quot;&lt;br /&gt;
              )&lt;br /&gt;
                pve = String(co.powerpve);&lt;br /&gt;
              if (&lt;br /&gt;
                co.powerpvp !== undefined &amp;amp;&amp;amp;&lt;br /&gt;
                co.powerpvp !== null &amp;amp;&amp;amp;&lt;br /&gt;
                co.powerpvp !== &amp;quot;&amp;quot;&lt;br /&gt;
              )&lt;br /&gt;
                pvp = String(co.powerpvp);&lt;br /&gt;
              if (&lt;br /&gt;
                co.energy !== undefined &amp;amp;&amp;amp;&lt;br /&gt;
                co.energy !== null &amp;amp;&amp;amp;&lt;br /&gt;
                co.energy !== &amp;quot;&amp;quot;&lt;br /&gt;
              )&lt;br /&gt;
                en = String(co.energy);&lt;br /&gt;
              if (&lt;br /&gt;
                co.cooldown !== undefined &amp;amp;&amp;amp;&lt;br /&gt;
                co.cooldown !== null &amp;amp;&amp;amp;&lt;br /&gt;
                co.cooldown !== &amp;quot;&amp;quot;&lt;br /&gt;
              )&lt;br /&gt;
                cd = String(co.cooldown);&lt;br /&gt;
              if (co.level !== undefined &amp;amp;&amp;amp; co.level !== null &amp;amp;&amp;amp; co.level !== &amp;quot;&amp;quot;)&lt;br /&gt;
                lvl = String(co.level);&lt;br /&gt;
              const di = co.desc_i18n || co.desc;&lt;br /&gt;
              if (di) {&lt;br /&gt;
                if (di.pt) dPt = di.pt;&lt;br /&gt;
                if (di.en) dEn = di.en;&lt;br /&gt;
                if (di.es) dEs = di.es;&lt;br /&gt;
                if (di.pl) dPl = di.pl;&lt;br /&gt;
              }&lt;br /&gt;
              if (co.video &amp;amp;&amp;amp; String(co.video).trim()) {&lt;br /&gt;
                const vf = String(co.video).trim();&lt;br /&gt;
                vFile = vf;&lt;br /&gt;
                vUrl = filePathURL(vf) || vf;&lt;br /&gt;
              }&lt;br /&gt;
            } catch (e) {&lt;br /&gt;
              console.error(&amp;quot;[Swap] Erro ao processar character_skills:&amp;quot;, e);&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          if (hasCharacterVideos &amp;amp;&amp;amp; activeCharacter) {&lt;br /&gt;
            try {&lt;br /&gt;
              const cv = JSON.parse(icon.dataset.characterVideos);&lt;br /&gt;
              const cvv = cv[activeCharacter];&lt;br /&gt;
              if (cvv &amp;amp;&amp;amp; String(cvv).trim()) {&lt;br /&gt;
                const vf = String(cvv).trim();&lt;br /&gt;
                vFile = vf;&lt;br /&gt;
                vUrl = filePathURL(vf) || vf;&lt;br /&gt;
              }&lt;br /&gt;
            } catch (e) {&lt;br /&gt;
              console.error(&amp;quot;[Swap] Erro ao processar character_videos:&amp;quot;, e);&lt;br /&gt;
            }&lt;br /&gt;
          } else if (&lt;br /&gt;
            hasCharacterVideos &amp;amp;&amp;amp;&lt;br /&gt;
            activeCharacter === null &amp;amp;&amp;amp;&lt;br /&gt;
            icon.dataset.originalVideoFile&lt;br /&gt;
          ) {&lt;br /&gt;
            const originalVideo = icon.dataset.originalVideoFile || &amp;quot;&amp;quot;;&lt;br /&gt;
            if (originalVideo) {&lt;br /&gt;
              vFile =&lt;br /&gt;
                extractFileNameFromURL(originalVideo) || originalVideo;&lt;br /&gt;
              vUrl = filePathURL(vFile) || originalVideo;&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          icon.dataset.atr = makeAttrString(pve, pvp, en, cd);&lt;br /&gt;
          icon.dataset.descPt = dPt;&lt;br /&gt;
          icon.dataset.descEn = dEn;&lt;br /&gt;
          icon.dataset.descEs = dEs;&lt;br /&gt;
          icon.dataset.descPl = dPl;&lt;br /&gt;
          if (lvl &amp;amp;&amp;amp; String(lvl).toUpperCase() !== &amp;quot;NIVEL&amp;quot;) {&lt;br /&gt;
            icon.dataset.level = lvl;&lt;br /&gt;
          } else {&lt;br /&gt;
            delete icon.dataset.level;&lt;br /&gt;
          }&lt;br /&gt;
          icon.dataset.videoFile = vFile;&lt;br /&gt;
          icon.dataset.video = vUrl;&lt;br /&gt;
        }&lt;br /&gt;
      );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Troca entre personagens (genérico)&lt;br /&gt;
    function handleSwapCharacter(swapIconEl) {&lt;br /&gt;
      if (!swapIconEl) return;&lt;br /&gt;
&lt;br /&gt;
      const iconBar = document.querySelector(&amp;quot;.icon-bar&amp;quot;);&lt;br /&gt;
      if (!iconBar) return;&lt;br /&gt;
&lt;br /&gt;
      const availableCharacters = detectAvailableCharacters();&lt;br /&gt;
      if (availableCharacters.length === 0) {&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      if (activeCharacter === null) {&lt;br /&gt;
        activeCharacter = availableCharacters[0];&lt;br /&gt;
      } else {&lt;br /&gt;
        const currentIndex = availableCharacters.indexOf(activeCharacter);&lt;br /&gt;
        const nextIndex = (currentIndex + 1) % availableCharacters.length;&lt;br /&gt;
        activeCharacter = availableCharacters[nextIndex];&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      applyCharacterSwapState();&lt;br /&gt;
      rebuildMainSkillsMetaFromBar();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Detecta qual forma está atualmente visível no DOM&lt;br /&gt;
    function detectCurrentForm() {&lt;br /&gt;
      const iconBar = document.querySelector(&amp;quot;.icon-bar&amp;quot;);&lt;br /&gt;
      if (!iconBar || !formsData || Object.keys(formsData).length === 0)&lt;br /&gt;
        return null;&lt;br /&gt;
&lt;br /&gt;
      // Coleta todas as skills de form que estão visíveis no DOM&lt;br /&gt;
      const allFormSkillNames = new Set();&lt;br /&gt;
      Object.values(formsData).forEach((form) =&amp;gt; {&lt;br /&gt;
        if (form.order &amp;amp;&amp;amp; Array.isArray(form.order)) {&lt;br /&gt;
          form.order.forEach((skillName) =&amp;gt; allFormSkillNames.add(skillName));&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      const visibleFormSkillNames = new Set();&lt;br /&gt;
      Array.from(iconBar.querySelectorAll(&amp;quot;.skill-icon[data-index]&amp;quot;)).forEach(&lt;br /&gt;
        (icon) =&amp;gt; {&lt;br /&gt;
          const name = (icon.dataset.nome || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
          if (name &amp;amp;&amp;amp; allFormSkillNames.has(name)) {&lt;br /&gt;
            visibleFormSkillNames.add(name);&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
      // Compara com cada forma para ver qual corresponde&lt;br /&gt;
      for (const [formName, formData] of Object.entries(formsData)) {&lt;br /&gt;
        if (formData.order &amp;amp;&amp;amp; Array.isArray(formData.order)) {&lt;br /&gt;
          const formSkillSet = new Set(formData.order);&lt;br /&gt;
          // Verifica se todas as skills desta forma estão visíveis&lt;br /&gt;
          let allMatch = true;&lt;br /&gt;
          for (const skillName of formData.order) {&lt;br /&gt;
            if (!visibleFormSkillNames.has(skillName)) {&lt;br /&gt;
              allMatch = false;&lt;br /&gt;
              break;&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
          if (&lt;br /&gt;
            allMatch &amp;amp;&amp;amp;&lt;br /&gt;
            formData.order.length === visibleFormSkillNames.size&lt;br /&gt;
          ) {&lt;br /&gt;
            return formName;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      return null;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function getNextFormName() {&lt;br /&gt;
      const formNames = Object.keys(formsData);&lt;br /&gt;
      if (formNames.length === 0) return null;&lt;br /&gt;
&lt;br /&gt;
      let cur = currentForm;&lt;br /&gt;
      if (cur === null) {&lt;br /&gt;
        cur = detectCurrentForm();&lt;br /&gt;
      }&lt;br /&gt;
      if (!cur &amp;amp;&amp;amp; formNames.length &amp;gt; 0) {&lt;br /&gt;
        cur = formNames[0];&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      let orderedFormNames = [];&lt;br /&gt;
      if (cur === &amp;quot;Brain Point&amp;quot; &amp;amp;&amp;amp; formNames.length === 3 &amp;amp;&amp;amp;&lt;br /&gt;
        formNames.includes(&amp;quot;Kung Fu Point&amp;quot;) &amp;amp;&amp;amp; formNames.includes(&amp;quot;Heavy Point&amp;quot;)) {&lt;br /&gt;
        orderedFormNames = [&amp;quot;Brain Point&amp;quot;, &amp;quot;Kung Fu Point&amp;quot;, &amp;quot;Heavy Point&amp;quot;];&lt;br /&gt;
      } else if (cur === &amp;quot;Kung Fu Point&amp;quot; &amp;amp;&amp;amp; formNames.length === 3 &amp;amp;&amp;amp;&lt;br /&gt;
        formNames.includes(&amp;quot;Heavy Point&amp;quot;) &amp;amp;&amp;amp; formNames.includes(&amp;quot;Brain Point&amp;quot;)) {&lt;br /&gt;
        orderedFormNames = [&amp;quot;Kung Fu Point&amp;quot;, &amp;quot;Heavy Point&amp;quot;, &amp;quot;Brain Point&amp;quot;];&lt;br /&gt;
      } else if (cur === &amp;quot;Heavy Point&amp;quot; &amp;amp;&amp;amp; formNames.length === 3 &amp;amp;&amp;amp;&lt;br /&gt;
        formNames.includes(&amp;quot;Brain Point&amp;quot;) &amp;amp;&amp;amp; formNames.includes(&amp;quot;Kung Fu Point&amp;quot;)) {&lt;br /&gt;
        orderedFormNames = [&amp;quot;Heavy Point&amp;quot;, &amp;quot;Brain Point&amp;quot;, &amp;quot;Kung Fu Point&amp;quot;];&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      if (orderedFormNames.length === 0) {&lt;br /&gt;
        orderedFormNames = [...formNames].sort();&lt;br /&gt;
        if (cur) {&lt;br /&gt;
          const idx = orderedFormNames.indexOf(cur);&lt;br /&gt;
          if (idx !== -1) {&lt;br /&gt;
            orderedFormNames = [&lt;br /&gt;
              ...orderedFormNames.slice(idx),&lt;br /&gt;
              ...orderedFormNames.slice(0, idx),&lt;br /&gt;
            ];&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      const idx = orderedFormNames.indexOf(cur);&lt;br /&gt;
      if (idx === -1) return null;&lt;br /&gt;
      return orderedFormNames[(idx + 1) % orderedFormNames.length];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function switchForm() {&lt;br /&gt;
      const skillsRoot = document.getElementById(&amp;quot;skills&amp;quot;);&lt;br /&gt;
      if (!skillsRoot) return;&lt;br /&gt;
&lt;br /&gt;
      // Lê dados de forms do atributo data-forms&lt;br /&gt;
      try {&lt;br /&gt;
        const formsJSON = skillsRoot.dataset.forms || &amp;quot;{}&amp;quot;;&lt;br /&gt;
        if (formsJSON &amp;amp;&amp;amp; formsJSON !== &amp;quot;{}&amp;quot;) {&lt;br /&gt;
          formsData = JSON.parse(formsJSON);&lt;br /&gt;
        }&lt;br /&gt;
      } catch (e) {&lt;br /&gt;
        console.error(&amp;quot;[Forms] Erro ao parsear forms:&amp;quot;, e);&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      if (!formsData || Object.keys(formsData).length === 0) {&lt;br /&gt;
        return; // Não tem forms, não faz nada&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Identifica skills fixas (sempre presentes)&lt;br /&gt;
      const iconBar = document.querySelector(&amp;quot;.icon-bar&amp;quot;);&lt;br /&gt;
      if (!iconBar) return;&lt;br /&gt;
&lt;br /&gt;
      // Busca a skill com form_switch dinamicamente (genérico)&lt;br /&gt;
      const changeFormIcon = Array.from(&lt;br /&gt;
        iconBar.querySelectorAll(&amp;quot;.skill-icon[data-index]&amp;quot;)&lt;br /&gt;
      ).find(&lt;br /&gt;
        (icon) =&amp;gt;&lt;br /&gt;
          icon.dataset.formSwitch === &amp;quot;true&amp;quot; ||&lt;br /&gt;
          icon.getAttribute(&amp;quot;data-form-switch&amp;quot;) === &amp;quot;true&amp;quot;&lt;br /&gt;
      );&lt;br /&gt;
      if (changeFormIcon) {&lt;br /&gt;
        changeFormIcon.classList.add(&amp;quot;active&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Determina skills fixas dinamicamente: todas que não estão em nenhuma forms&lt;br /&gt;
      const allFormSkillNames = new Set();&lt;br /&gt;
      Object.values(formsData).forEach((form) =&amp;gt; {&lt;br /&gt;
        if (form.order &amp;amp;&amp;amp; Array.isArray(form.order)) {&lt;br /&gt;
          form.order.forEach((skillName) =&amp;gt; allFormSkillNames.add(skillName));&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      // Skills fixas = todas as skills na barra que não estão em nenhuma forms&lt;br /&gt;
      fixedSkills = Array.from(&lt;br /&gt;
        iconBar.querySelectorAll(&amp;quot;.skill-icon[data-index]&amp;quot;)&lt;br /&gt;
      )&lt;br /&gt;
        .filter((icon) =&amp;gt; {&lt;br /&gt;
          const name = (icon.dataset.nome || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
          return name &amp;amp;&amp;amp; !allFormSkillNames.has(name);&lt;br /&gt;
        })&lt;br /&gt;
        .map((icon) =&amp;gt; snapshotIconData(icon));&lt;br /&gt;
&lt;br /&gt;
      // Obtém lista de formas disponíveis&lt;br /&gt;
      const formNames = Object.keys(formsData);&lt;br /&gt;
      if (formNames.length === 0) return;&lt;br /&gt;
&lt;br /&gt;
      if (currentForm === null) {&lt;br /&gt;
        currentForm = detectCurrentForm();&lt;br /&gt;
        if (!currentForm &amp;amp;&amp;amp; formNames.length &amp;gt; 0) {&lt;br /&gt;
          currentForm = formNames[0];&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      const nextForm = getNextFormName();&lt;br /&gt;
      if (!nextForm) return;&lt;br /&gt;
&lt;br /&gt;
      currentForm = nextForm;&lt;br /&gt;
&lt;br /&gt;
      // Atualiza barra de skills (que vai remover o active depois da animação)&lt;br /&gt;
      updateSkillsBarForForm(nextForm, formsData[nextForm], changeFormIcon);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function snapshotIconData(icon) {&lt;br /&gt;
      const img = icon.querySelector(&amp;quot;img&amp;quot;);&lt;br /&gt;
      const iconURL = img ? img.src : &amp;quot;&amp;quot;;&lt;br /&gt;
      const subsRaw = icon.dataset.subs || icon.getAttribute(&amp;quot;data-subs&amp;quot;) || &amp;quot;&amp;quot;;&lt;br /&gt;
      let subs = null;&lt;br /&gt;
      try {&lt;br /&gt;
        subs = subsRaw ? JSON.parse(subsRaw) : null;&lt;br /&gt;
      } catch {&lt;br /&gt;
        subs = null;&lt;br /&gt;
      }&lt;br /&gt;
      let flags = null;&lt;br /&gt;
      if (icon.dataset.flags) {&lt;br /&gt;
        try {&lt;br /&gt;
          flags = JSON.parse(icon.dataset.flags);&lt;br /&gt;
        } catch (e) { }&lt;br /&gt;
      }&lt;br /&gt;
      let weapon = null;&lt;br /&gt;
      if (icon.dataset.weapon) {&lt;br /&gt;
        try {&lt;br /&gt;
          weapon = JSON.parse(icon.dataset.weapon);&lt;br /&gt;
        } catch (e) { }&lt;br /&gt;
      }&lt;br /&gt;
      return {&lt;br /&gt;
        name: icon.dataset.nome || icon.dataset.name || &amp;quot;&amp;quot;,&lt;br /&gt;
        index: icon.dataset.index || &amp;quot;&amp;quot;,&lt;br /&gt;
        level: icon.dataset.level || &amp;quot;&amp;quot;,&lt;br /&gt;
        desc: icon.dataset.desc || &amp;quot;&amp;quot;,&lt;br /&gt;
        descPt: icon.dataset.descPt || &amp;quot;&amp;quot;,&lt;br /&gt;
        descEn: icon.dataset.descEn || &amp;quot;&amp;quot;,&lt;br /&gt;
        descEs: icon.dataset.descEs || &amp;quot;&amp;quot;,&lt;br /&gt;
        descPl: icon.dataset.descPl || &amp;quot;&amp;quot;,&lt;br /&gt;
        attrs: icon.dataset.atr || icon.dataset.attrs || &amp;quot;&amp;quot;,&lt;br /&gt;
        video: icon.dataset.video || &amp;quot;&amp;quot;,&lt;br /&gt;
        iconURL,&lt;br /&gt;
        iconFile: icon.dataset.iconFile || &amp;quot;&amp;quot;,&lt;br /&gt;
        subs,&lt;br /&gt;
        flags,&lt;br /&gt;
        weapon,&lt;br /&gt;
        formSwitch: icon.dataset.formSwitch || &amp;quot;&amp;quot;,&lt;br /&gt;
      };&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function updateSkillsBarForForm(formName, formData, changeFormIconEl) {&lt;br /&gt;
      const iconBar = document.querySelector(&amp;quot;.icon-bar&amp;quot;);&lt;br /&gt;
      if (!iconBar || !formData || !formData.skills) return;&lt;br /&gt;
&lt;br /&gt;
      // Determina skills fixas dinamicamente: todas que não estão em nenhuma forms&lt;br /&gt;
      const allFormSkillNames = new Set();&lt;br /&gt;
      Object.values(formsData).forEach((form) =&amp;gt; {&lt;br /&gt;
        if (form.order &amp;amp;&amp;amp; Array.isArray(form.order)) {&lt;br /&gt;
          form.order.forEach((skillName) =&amp;gt; allFormSkillNames.add(skillName));&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      // Remove skills de forma antigas (que não são fixas) com animação de saída&lt;br /&gt;
&lt;br /&gt;
      const existingIcons = Array.from(&lt;br /&gt;
        iconBar.querySelectorAll(&amp;quot;.skill-icon[data-index]&amp;quot;)&lt;br /&gt;
      );&lt;br /&gt;
      const iconsToRemove = [];&lt;br /&gt;
      existingIcons.forEach((icon) =&amp;gt; {&lt;br /&gt;
        const name = (icon.dataset.nome || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
        if (name &amp;amp;&amp;amp; allFormSkillNames.has(name)) {&lt;br /&gt;
          iconsToRemove.push(icon);&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      // Anima saída das skills antigas&lt;br /&gt;
      iconsToRemove.forEach((icon) =&amp;gt; {&lt;br /&gt;
        icon.style.transition = &amp;quot;opacity .15s ease, transform .15s ease&amp;quot;;&lt;br /&gt;
        icon.style.opacity = &amp;quot;0&amp;quot;;&lt;br /&gt;
        icon.style.transform = &amp;quot;translateY(-6px)&amp;quot;;&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      // Encontra a skill com form_switch dinamicamente (genérico)&lt;br /&gt;
      const changeFormIcon = Array.from(&lt;br /&gt;
        iconBar.querySelectorAll(&amp;quot;.skill-icon[data-index]&amp;quot;)&lt;br /&gt;
      ).find(&lt;br /&gt;
        (icon) =&amp;gt;&lt;br /&gt;
          icon.dataset.formSwitch === &amp;quot;true&amp;quot; ||&lt;br /&gt;
          icon.getAttribute(&amp;quot;data-form-switch&amp;quot;) === &amp;quot;true&amp;quot;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
      // Encontra a próxima skill fixa depois do form_switch dinamicamente&lt;br /&gt;
      let nextFixedSkillIcon = null;&lt;br /&gt;
      if (changeFormIcon) {&lt;br /&gt;
        const allIcons = Array.from(&lt;br /&gt;
          iconBar.querySelectorAll(&amp;quot;.skill-icon[data-index]&amp;quot;)&lt;br /&gt;
        ).sort((a, b) =&amp;gt; {&lt;br /&gt;
          return (&lt;br /&gt;
            parseInt(a.dataset.index || &amp;quot;0&amp;quot;, 10) -&lt;br /&gt;
            parseInt(b.dataset.index || &amp;quot;0&amp;quot;, 10)&lt;br /&gt;
          );&lt;br /&gt;
        });&lt;br /&gt;
        const changeFormIndex = allIcons.indexOf(changeFormIcon);&lt;br /&gt;
        const allFormSkillNames = new Set();&lt;br /&gt;
        Object.values(formsData).forEach((form) =&amp;gt; {&lt;br /&gt;
          if (form.order &amp;amp;&amp;amp; Array.isArray(form.order)) {&lt;br /&gt;
            form.order.forEach((skillName) =&amp;gt; allFormSkillNames.add(skillName));&lt;br /&gt;
          }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Procura a próxima skill fixa (que não está em forms)&lt;br /&gt;
        for (let i = changeFormIndex + 1; i &amp;lt; allIcons.length; i++) {&lt;br /&gt;
          const icon = allIcons[i];&lt;br /&gt;
          const name = (icon.dataset.nome || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
          if (name &amp;amp;&amp;amp; !allFormSkillNames.has(name)) {&lt;br /&gt;
            nextFixedSkillIcon = icon;&lt;br /&gt;
            break;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      if (!changeFormIcon || !nextFixedSkillIcon) {&lt;br /&gt;
        console.warn(&lt;br /&gt;
          &amp;quot;[Forms] Skill com form_switch ou próxima skill fixa não encontrada&amp;quot;&lt;br /&gt;
        );&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      const formSkills = formData.skills || [];&lt;br /&gt;
      const formOrder = formData.order || [];&lt;br /&gt;
&lt;br /&gt;
      // Primeira skill da forma (vai ANTES do Change Form)&lt;br /&gt;
      const firstSkillName = formOrder[0];&lt;br /&gt;
      const firstSkillData = formSkills.find((s) =&amp;gt; s.name === firstSkillName);&lt;br /&gt;
&lt;br /&gt;
      // Terceira skill da forma (vai DEPOIS do Change Form, ANTES do Guard Point)&lt;br /&gt;
      const thirdSkillName = formOrder[1]; // Segunda na ordem = terceira skill (índice 1)&lt;br /&gt;
      const thirdSkillData = formSkills.find((s) =&amp;gt; s.name === thirdSkillName);&lt;br /&gt;
&lt;br /&gt;
      // Skills &amp;quot;extras&amp;quot; da forma (order[2..N]) vão DEPOIS do Guard Point,&lt;br /&gt;
      // em sequência contígua. Para forms com 3 skills (caso clássico do Chopper)&lt;br /&gt;
      // isso insere apenas order[2] (quinta skill) mantendo o layout antigo.&lt;br /&gt;
      // Para forms com 4+ skills, as demais ocupam os slots seguintes.&lt;br /&gt;
      const extraSkillsData = [];&lt;br /&gt;
      for (let i = 2; i &amp;lt; formOrder.length; i++) {&lt;br /&gt;
        const nm = formOrder[i];&lt;br /&gt;
        const dt = formSkills.find((s) =&amp;gt; s.name === nm);&lt;br /&gt;
        if (dt) extraSkillsData.push(dt);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Cria fragments para inserir&lt;br /&gt;
      const firstFragment = document.createDocumentFragment();&lt;br /&gt;
      const thirdFragment = document.createDocumentFragment();&lt;br /&gt;
      const extrasFragment = document.createDocumentFragment();&lt;br /&gt;
&lt;br /&gt;
      if (firstSkillData) {&lt;br /&gt;
        const iconElement = createSkillIconElement(firstSkillData, 1);&lt;br /&gt;
        firstFragment.appendChild(iconElement);&lt;br /&gt;
      }&lt;br /&gt;
      if (thirdSkillData) {&lt;br /&gt;
        const changeFormIndex = parseInt(&lt;br /&gt;
          changeFormIcon.dataset.index || &amp;quot;2&amp;quot;,&lt;br /&gt;
          10&lt;br /&gt;
        );&lt;br /&gt;
        const iconElement = createSkillIconElement(&lt;br /&gt;
          thirdSkillData,&lt;br /&gt;
          changeFormIndex + 1&lt;br /&gt;
        );&lt;br /&gt;
        thirdFragment.appendChild(iconElement);&lt;br /&gt;
      }&lt;br /&gt;
      if (extraSkillsData.length &amp;gt; 0) {&lt;br /&gt;
        const nextFixedSkillIndex = parseInt(&lt;br /&gt;
          nextFixedSkillIcon.dataset.index || &amp;quot;4&amp;quot;,&lt;br /&gt;
          10&lt;br /&gt;
        );&lt;br /&gt;
        extraSkillsData.forEach((dt, offset) =&amp;gt; {&lt;br /&gt;
          const iconElement = createSkillIconElement(&lt;br /&gt;
            dt,&lt;br /&gt;
            nextFixedSkillIndex + 1 + offset&lt;br /&gt;
          );&lt;br /&gt;
          extrasFragment.appendChild(iconElement);&lt;br /&gt;
        });&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Remove os ícones antigos do DOM após animação&lt;br /&gt;
      setTimeout(() =&amp;gt; {&lt;br /&gt;
        iconsToRemove.forEach((icon) =&amp;gt; {&lt;br /&gt;
          if (icon.parentNode) {&lt;br /&gt;
            icon.remove();&lt;br /&gt;
          }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Insere a primeira skill ANTES da skill com form_switch&lt;br /&gt;
        if (firstFragment.hasChildNodes()) {&lt;br /&gt;
          iconBar.insertBefore(firstFragment, changeFormIcon);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Insere a terceira skill DEPOIS da skill com form_switch, ANTES da próxima skill fixa&lt;br /&gt;
        if (thirdFragment.hasChildNodes()) {&lt;br /&gt;
          iconBar.insertBefore(thirdFragment, nextFixedSkillIcon);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Insere as skills extras (order[2..N]) DEPOIS da próxima skill fixa,&lt;br /&gt;
        // em sequência contígua.&lt;br /&gt;
        if (extrasFragment.hasChildNodes()) {&lt;br /&gt;
          if (nextFixedSkillIcon.nextSibling) {&lt;br /&gt;
            iconBar.insertBefore(extrasFragment, nextFixedSkillIcon.nextSibling);&lt;br /&gt;
          } else {&lt;br /&gt;
            iconBar.appendChild(extrasFragment);&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Anima entrada das novas skills (similar a animateIconsBarEntrance)&lt;br /&gt;
        const newIconsInBar = Array.from(&lt;br /&gt;
          iconBar.querySelectorAll(&amp;quot;.skill-icon[data-index]&amp;quot;)&lt;br /&gt;
        ).filter((icon) =&amp;gt; {&lt;br /&gt;
          const name = (icon.dataset.nome || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
          return name &amp;amp;&amp;amp; allFormSkillNames.has(name);&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        newIconsInBar.forEach((icon, idx) =&amp;gt; {&lt;br /&gt;
          icon.style.opacity = &amp;quot;0&amp;quot;;&lt;br /&gt;
          icon.style.transform = &amp;quot;translateY(6px)&amp;quot;;&lt;br /&gt;
          requestAnimationFrame(() =&amp;gt; {&lt;br /&gt;
            setTimeout(() =&amp;gt; {&lt;br /&gt;
              icon.style.transition = &amp;quot;opacity .18s ease, transform .18s ease&amp;quot;;&lt;br /&gt;
              icon.style.opacity = &amp;quot;1&amp;quot;;&lt;br /&gt;
              icon.style.transform = &amp;quot;translateY(0)&amp;quot;;&lt;br /&gt;
            }, idx * 24);&lt;br /&gt;
          });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Remove slots de descrição das skills de forma antigas e cria novos&lt;br /&gt;
        const descBox = document.querySelector(&amp;quot;.skills-details .desc-box&amp;quot;);&lt;br /&gt;
        if (descBox) {&lt;br /&gt;
          // Encontra os slots de descrição dos elementos fixos&lt;br /&gt;
          const changeFormIndex = parseInt(&lt;br /&gt;
            changeFormIcon.dataset.index || &amp;quot;1&amp;quot;,&lt;br /&gt;
            10&lt;br /&gt;
          );&lt;br /&gt;
          const nextFixedSkillIndex = parseInt(&lt;br /&gt;
            nextFixedSkillIcon.dataset.index || &amp;quot;1&amp;quot;,&lt;br /&gt;
            10&lt;br /&gt;
          );&lt;br /&gt;
          const changeFormDescSlot = descBox.querySelector(&lt;br /&gt;
            `.skill-desc[data-index=&amp;quot;${changeFormIndex}&amp;quot;]`&lt;br /&gt;
          );&lt;br /&gt;
          const nextFixedSkillDescSlot = descBox.querySelector(&lt;br /&gt;
            `.skill-desc[data-index=&amp;quot;${nextFixedSkillIndex}&amp;quot;]`&lt;br /&gt;
          );&lt;br /&gt;
&lt;br /&gt;
          // Cria slot para primeira skill (antes do Change Form)&lt;br /&gt;
          if (firstSkillData &amp;amp;&amp;amp; changeFormDescSlot) {&lt;br /&gt;
            const descSlot = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
            descSlot.className = &amp;quot;skill-desc&amp;quot;;&lt;br /&gt;
            descSlot.setAttribute(&amp;quot;data-index&amp;quot;, changeFormIndex);&lt;br /&gt;
            descBox.insertBefore(descSlot, changeFormDescSlot);&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          // Cria slot para terceira skill (depois da skill com form_switch, antes da próxima skill fixa)&lt;br /&gt;
          if (thirdSkillData &amp;amp;&amp;amp; nextFixedSkillDescSlot) {&lt;br /&gt;
            const descSlot = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
            descSlot.className = &amp;quot;skill-desc&amp;quot;;&lt;br /&gt;
            descSlot.setAttribute(&amp;quot;data-index&amp;quot;, nextFixedSkillIndex);&lt;br /&gt;
            descBox.insertBefore(descSlot, nextFixedSkillDescSlot);&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          // Cria slots para TODAS as skills extras (depois da próxima skill fixa),&lt;br /&gt;
          // em sequência contígua. Cada uma recebe um data-index incremental.&lt;br /&gt;
          if (extraSkillsData.length &amp;gt; 0 &amp;amp;&amp;amp; nextFixedSkillDescSlot) {&lt;br /&gt;
            // anchor mantém a referência de inserção: cada novo slot entra&lt;br /&gt;
            // logo depois do anterior, preservando a ordem visual.&lt;br /&gt;
            let anchor = nextFixedSkillDescSlot;&lt;br /&gt;
            extraSkillsData.forEach((_, offset) =&amp;gt; {&lt;br /&gt;
              const descSlot = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
              descSlot.className = &amp;quot;skill-desc&amp;quot;;&lt;br /&gt;
              descSlot.setAttribute(&amp;quot;data-index&amp;quot;, nextFixedSkillIndex + 1 + offset);&lt;br /&gt;
              if (anchor.nextSibling) {&lt;br /&gt;
                descBox.insertBefore(descSlot, anchor.nextSibling);&lt;br /&gt;
              } else {&lt;br /&gt;
                descBox.appendChild(descSlot);&lt;br /&gt;
              }&lt;br /&gt;
              anchor = descSlot;&lt;br /&gt;
            });&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Re-numera todas as skills na ordem do DOM&lt;br /&gt;
        const allIcons = Array.from(&lt;br /&gt;
          iconBar.querySelectorAll(&amp;quot;.skill-icon[data-index]&amp;quot;)&lt;br /&gt;
        );&lt;br /&gt;
        let currentIndex = 1;&lt;br /&gt;
        allIcons.forEach((icon) =&amp;gt; {&lt;br /&gt;
          const oldIndex = icon.dataset.index;&lt;br /&gt;
          icon.setAttribute(&amp;quot;data-index&amp;quot;, currentIndex);&lt;br /&gt;
&lt;br /&gt;
          // Atualiza slot de descrição&lt;br /&gt;
          if (descBox &amp;amp;&amp;amp; oldIndex) {&lt;br /&gt;
            const descSlot = descBox.querySelector(&lt;br /&gt;
              `.skill-desc[data-index=&amp;quot;${oldIndex}&amp;quot;]`&lt;br /&gt;
            );&lt;br /&gt;
            if (descSlot) {&lt;br /&gt;
              descSlot.setAttribute(&amp;quot;data-index&amp;quot;, currentIndex);&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
          currentIndex++;&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Re-wire eventos&lt;br /&gt;
        wireClicksForCurrentBar();&lt;br /&gt;
        wireTooltipsForNewIcons();&lt;br /&gt;
&lt;br /&gt;
        // Remove active do Change Form após animação completar&lt;br /&gt;
        setTimeout(() =&amp;gt; {&lt;br /&gt;
          if (changeFormIconEl) {&lt;br /&gt;
            changeFormIconEl.classList.remove(&amp;quot;active&amp;quot;);&lt;br /&gt;
          }&lt;br /&gt;
        }, newIconsInBar.length * 24 + 180);&lt;br /&gt;
      }, 150);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function createSkillIconElement(skill, index) {&lt;br /&gt;
      const iconWrap = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
      iconWrap.className = &amp;quot;skill-icon&amp;quot;;&lt;br /&gt;
      iconWrap.setAttribute(&amp;quot;data-index&amp;quot;, index);&lt;br /&gt;
      iconWrap.setAttribute(&amp;quot;data-nome&amp;quot;, skill.name || &amp;quot;&amp;quot;);&lt;br /&gt;
      iconWrap.setAttribute(&amp;quot;data-desc&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
      iconWrap.setAttribute(&lt;br /&gt;
        &amp;quot;data-atr&amp;quot;,&lt;br /&gt;
        makeAttrString(&lt;br /&gt;
          skill.powerpve,&lt;br /&gt;
          skill.powerpvp,&lt;br /&gt;
          skill.energy,&lt;br /&gt;
          skill.cooldown&lt;br /&gt;
        )&lt;br /&gt;
      );&lt;br /&gt;
      iconWrap.setAttribute(&lt;br /&gt;
        &amp;quot;data-video&amp;quot;,&lt;br /&gt;
        skill.video ? filePathURL(skill.video) : &amp;quot;&amp;quot;&lt;br /&gt;
      );&lt;br /&gt;
      iconWrap.setAttribute(&amp;quot;data-video-preload&amp;quot;, &amp;quot;auto&amp;quot;);&lt;br /&gt;
      iconWrap.setAttribute(&amp;quot;data-icon-file&amp;quot;, skill.icon || &amp;quot;&amp;quot;);&lt;br /&gt;
      iconWrap.setAttribute(&amp;quot;data-video-file&amp;quot;, skill.video || &amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      if (&lt;br /&gt;
        skill.level &amp;amp;&amp;amp;&lt;br /&gt;
        skill.level !== &amp;quot;&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
        String(skill.level).toUpperCase() !== &amp;quot;NIVEL&amp;quot;&lt;br /&gt;
      ) {&lt;br /&gt;
        iconWrap.setAttribute(&amp;quot;data-level&amp;quot;, skill.level);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      if (skill.desc_i18n) {&lt;br /&gt;
        if (skill.desc_i18n.pt)&lt;br /&gt;
          iconWrap.setAttribute(&amp;quot;data-desc-pt&amp;quot;, skill.desc_i18n.pt);&lt;br /&gt;
        if (skill.desc_i18n.en)&lt;br /&gt;
          iconWrap.setAttribute(&amp;quot;data-desc-en&amp;quot;, skill.desc_i18n.en);&lt;br /&gt;
        if (skill.desc_i18n.es)&lt;br /&gt;
          iconWrap.setAttribute(&amp;quot;data-desc-es&amp;quot;, skill.desc_i18n.es);&lt;br /&gt;
        if (skill.desc_i18n.pl)&lt;br /&gt;
          iconWrap.setAttribute(&amp;quot;data-desc-pl&amp;quot;, skill.desc_i18n.pl);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      if (skill.subs &amp;amp;&amp;amp; Array.isArray(skill.subs) &amp;amp;&amp;amp; skill.subs.length &amp;gt; 0) {&lt;br /&gt;
        iconWrap.setAttribute(&amp;quot;data-subs&amp;quot;, JSON.stringify(skill.subs));&lt;br /&gt;
      }&lt;br /&gt;
      if (&lt;br /&gt;
        skill.suborder &amp;amp;&amp;amp;&lt;br /&gt;
        Array.isArray(skill.suborder) &amp;amp;&amp;amp;&lt;br /&gt;
        skill.suborder.length &amp;gt; 0&lt;br /&gt;
      ) {&lt;br /&gt;
        iconWrap.setAttribute(&amp;quot;data-suborder&amp;quot;, JSON.stringify(skill.suborder));&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      if (skill.flags &amp;amp;&amp;amp; Array.isArray(skill.flags) &amp;amp;&amp;amp; skill.flags.length &amp;gt; 0) {&lt;br /&gt;
        iconWrap.setAttribute(&amp;quot;data-flags&amp;quot;, JSON.stringify(skill.flags));&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      if (&lt;br /&gt;
        skill.weapon &amp;amp;&amp;amp;&lt;br /&gt;
        typeof skill.weapon === &amp;quot;object&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
        Object.keys(skill.weapon).length &amp;gt; 0&lt;br /&gt;
      ) {&lt;br /&gt;
        iconWrap.setAttribute(&amp;quot;data-weapon&amp;quot;, JSON.stringify(skill.weapon));&lt;br /&gt;
      }&lt;br /&gt;
      if (skill.effect &amp;amp;&amp;amp; typeof skill.effect === &amp;quot;object&amp;quot;) {&lt;br /&gt;
        try {&lt;br /&gt;
          iconWrap.setAttribute(&amp;quot;data-effect&amp;quot;, JSON.stringify(skill.effect));&lt;br /&gt;
        } catch (e) { }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      if (skill.formSwitch) {&lt;br /&gt;
        iconWrap.setAttribute(&amp;quot;data-form-switch&amp;quot;, skill.formSwitch);&lt;br /&gt;
      }&lt;br /&gt;
      if (skill.formVideos &amp;amp;&amp;amp; typeof skill.formVideos === &amp;quot;string&amp;quot; &amp;amp;&amp;amp; skill.formVideos.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
        iconWrap.setAttribute(&amp;quot;data-form-videos&amp;quot;, skill.formVideos);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      const img = document.createElement(&amp;quot;img&amp;quot;);&lt;br /&gt;
      img.className = &amp;quot;skill-icon-img&amp;quot;;&lt;br /&gt;
      img.src = filePathURL(skill.icon || &amp;quot;&amp;quot;);&lt;br /&gt;
      img.alt = &amp;quot;&amp;quot;;&lt;br /&gt;
      iconWrap.appendChild(img);&lt;br /&gt;
&lt;br /&gt;
      return iconWrap;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function createSkillIcon(skill, index, container) {&lt;br /&gt;
      // Cria ícone similar ao que é gerado pelo servidor&lt;br /&gt;
      const iconWrap = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
      iconWrap.className = &amp;quot;skill-icon&amp;quot;;&lt;br /&gt;
      iconWrap.setAttribute(&amp;quot;data-index&amp;quot;, index);&lt;br /&gt;
      iconWrap.setAttribute(&amp;quot;data-nome&amp;quot;, skill.name || &amp;quot;&amp;quot;);&lt;br /&gt;
      iconWrap.setAttribute(&amp;quot;data-desc&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
      iconWrap.setAttribute(&lt;br /&gt;
        &amp;quot;data-atr&amp;quot;,&lt;br /&gt;
        makeAttrString(&lt;br /&gt;
          skill.powerpve,&lt;br /&gt;
          skill.powerpvp,&lt;br /&gt;
          skill.energy,&lt;br /&gt;
          skill.cooldown&lt;br /&gt;
        )&lt;br /&gt;
      );&lt;br /&gt;
      iconWrap.setAttribute(&lt;br /&gt;
        &amp;quot;data-video&amp;quot;,&lt;br /&gt;
        skill.video ? filePathURL(skill.video) : &amp;quot;&amp;quot;&lt;br /&gt;
      );&lt;br /&gt;
      iconWrap.setAttribute(&amp;quot;data-video-preload&amp;quot;, &amp;quot;auto&amp;quot;);&lt;br /&gt;
      iconWrap.setAttribute(&amp;quot;data-icon-file&amp;quot;, skill.icon || &amp;quot;&amp;quot;);&lt;br /&gt;
      iconWrap.setAttribute(&amp;quot;data-video-file&amp;quot;, skill.video || &amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      if (&lt;br /&gt;
        skill.level &amp;amp;&amp;amp;&lt;br /&gt;
        skill.level !== &amp;quot;&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
        String(skill.level).toUpperCase() !== &amp;quot;NIVEL&amp;quot;&lt;br /&gt;
      ) {&lt;br /&gt;
        iconWrap.setAttribute(&amp;quot;data-level&amp;quot;, skill.level);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      if (skill.desc_i18n) {&lt;br /&gt;
        if (skill.desc_i18n.pt)&lt;br /&gt;
          iconWrap.setAttribute(&amp;quot;data-desc-pt&amp;quot;, skill.desc_i18n.pt);&lt;br /&gt;
        if (skill.desc_i18n.en)&lt;br /&gt;
          iconWrap.setAttribute(&amp;quot;data-desc-en&amp;quot;, skill.desc_i18n.en);&lt;br /&gt;
        if (skill.desc_i18n.es)&lt;br /&gt;
          iconWrap.setAttribute(&amp;quot;data-desc-es&amp;quot;, skill.desc_i18n.es);&lt;br /&gt;
        if (skill.desc_i18n.pl)&lt;br /&gt;
          iconWrap.setAttribute(&amp;quot;data-desc-pl&amp;quot;, skill.desc_i18n.pl);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      if (skill.subs &amp;amp;&amp;amp; Array.isArray(skill.subs) &amp;amp;&amp;amp; skill.subs.length &amp;gt; 0) {&lt;br /&gt;
        iconWrap.setAttribute(&amp;quot;data-subs&amp;quot;, JSON.stringify(skill.subs));&lt;br /&gt;
      }&lt;br /&gt;
      if (&lt;br /&gt;
        skill.suborder &amp;amp;&amp;amp;&lt;br /&gt;
        Array.isArray(skill.suborder) &amp;amp;&amp;amp;&lt;br /&gt;
        skill.suborder.length &amp;gt; 0&lt;br /&gt;
      ) {&lt;br /&gt;
        iconWrap.setAttribute(&amp;quot;data-suborder&amp;quot;, JSON.stringify(skill.suborder));&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      if (skill.flags &amp;amp;&amp;amp; Array.isArray(skill.flags) &amp;amp;&amp;amp; skill.flags.length &amp;gt; 0) {&lt;br /&gt;
        iconWrap.setAttribute(&amp;quot;data-flags&amp;quot;, JSON.stringify(skill.flags));&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      if (&lt;br /&gt;
        skill.weapon &amp;amp;&amp;amp;&lt;br /&gt;
        typeof skill.weapon === &amp;quot;object&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
        Object.keys(skill.weapon).length &amp;gt; 0&lt;br /&gt;
      ) {&lt;br /&gt;
        iconWrap.setAttribute(&amp;quot;data-weapon&amp;quot;, JSON.stringify(skill.weapon));&lt;br /&gt;
      }&lt;br /&gt;
      if (skill.effect &amp;amp;&amp;amp; typeof skill.effect === &amp;quot;object&amp;quot;) {&lt;br /&gt;
        try {&lt;br /&gt;
          iconWrap.setAttribute(&amp;quot;data-effect&amp;quot;, JSON.stringify(skill.effect));&lt;br /&gt;
        } catch (e) { }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      if (skill.formSwitch) {&lt;br /&gt;
        iconWrap.setAttribute(&amp;quot;data-form-switch&amp;quot;, skill.formSwitch);&lt;br /&gt;
      }&lt;br /&gt;
      if (skill.formVideos &amp;amp;&amp;amp; typeof skill.formVideos === &amp;quot;string&amp;quot; &amp;amp;&amp;amp; skill.formVideos.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
        iconWrap.setAttribute(&amp;quot;data-form-videos&amp;quot;, skill.formVideos);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      const img = document.createElement(&amp;quot;img&amp;quot;);&lt;br /&gt;
      img.className = &amp;quot;skill-icon-img&amp;quot;;&lt;br /&gt;
      img.src = filePathURL(skill.icon || &amp;quot;&amp;quot;);&lt;br /&gt;
      img.alt = &amp;quot;&amp;quot;;&lt;br /&gt;
      iconWrap.appendChild(img);&lt;br /&gt;
&lt;br /&gt;
      container.appendChild(iconWrap);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function makeAttrString(pve, pvp, energy, cd) {&lt;br /&gt;
      const parts = [&lt;br /&gt;
        pve !== undefined &amp;amp;&amp;amp; pve !== null &amp;amp;&amp;amp; pve !== &amp;quot;&amp;quot; ? String(pve) : &amp;quot;-&amp;quot;,&lt;br /&gt;
        pvp !== undefined &amp;amp;&amp;amp; pvp !== null &amp;amp;&amp;amp; pvp !== &amp;quot;&amp;quot; ? String(pvp) : &amp;quot;-&amp;quot;,&lt;br /&gt;
        energy !== undefined &amp;amp;&amp;amp; energy !== null &amp;amp;&amp;amp; energy !== &amp;quot;&amp;quot;&lt;br /&gt;
          ? String(energy)&lt;br /&gt;
          : &amp;quot;-&amp;quot;,&lt;br /&gt;
        cd !== undefined &amp;amp;&amp;amp; cd !== null &amp;amp;&amp;amp; cd !== &amp;quot;&amp;quot; ? String(cd) : &amp;quot;-&amp;quot;,&lt;br /&gt;
      ];&lt;br /&gt;
      return parts.join(&amp;quot;, &amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function filePathURL(fileName) {&lt;br /&gt;
      // Evita requisições para valores vazios&lt;br /&gt;
      if (!fileName || fileName.trim() === &amp;quot;&amp;quot;) {&lt;br /&gt;
        return &amp;quot;&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
      const f = encodeURIComponent(fileName.replace(/^Arquivo:|^File:/, &amp;quot;&amp;quot;));&lt;br /&gt;
      const base =&lt;br /&gt;
        window.mw &amp;amp;&amp;amp; mw.util &amp;amp;&amp;amp; typeof mw.util.wikiScript === &amp;quot;function&amp;quot;&lt;br /&gt;
          ? mw.util.wikiScript()&lt;br /&gt;
          : window.mw &amp;amp;&amp;amp; window.mw.config&lt;br /&gt;
            ? mw.config.get(&amp;quot;wgScript&amp;quot;) || &amp;quot;/index.php&amp;quot;&lt;br /&gt;
            : &amp;quot;/index.php&amp;quot;;&lt;br /&gt;
      // Garante HTTPS para evitar Mixed Content&lt;br /&gt;
      let url = `${base}?title=Especial:FilePath/${f}`;&lt;br /&gt;
      if (window.location.protocol === &amp;quot;https:&amp;quot; &amp;amp;&amp;amp; url.startsWith(&amp;quot;http://&amp;quot;)) {&lt;br /&gt;
        url = url.replace(&amp;quot;http://&amp;quot;, &amp;quot;https://&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      return url;&lt;br /&gt;
    }&lt;br /&gt;
    function slugify(s) {&lt;br /&gt;
      if (!s) return &amp;quot;&amp;quot;;&lt;br /&gt;
      return String(s)&lt;br /&gt;
        .toLowerCase()&lt;br /&gt;
        .normalize(&amp;quot;NFD&amp;quot;)&lt;br /&gt;
        .replace(/[\u0300-\u036f]/g, &amp;quot;&amp;quot;)&lt;br /&gt;
        .replace(/[^\w\s-]/g, &amp;quot;&amp;quot;)&lt;br /&gt;
        .replace(/[\s:/\-]+/g, &amp;quot;-&amp;quot;)&lt;br /&gt;
        .replace(/^-+|-+$/g, &amp;quot;&amp;quot;)&lt;br /&gt;
        .replace(/-+/g, &amp;quot;-&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    window.__skillSlugify = slugify;&lt;br /&gt;
    function getLangKey() {&lt;br /&gt;
      const skillsRoot = document.getElementById(&amp;quot;skills&amp;quot;);&lt;br /&gt;
      const raw = (&lt;br /&gt;
        document.documentElement.lang ||&lt;br /&gt;
        skillsRoot?.dataset.i18nDefault ||&lt;br /&gt;
        &amp;quot;pt&amp;quot;&lt;br /&gt;
      ).toLowerCase();&lt;br /&gt;
      return raw === &amp;quot;pt-br&amp;quot; ? &amp;quot;pt&amp;quot; : raw.split(&amp;quot;-&amp;quot;)[0] || &amp;quot;pt&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    function chooseDescFrom(obj) {&lt;br /&gt;
      const lang = getLangKey();&lt;br /&gt;
      // Aceita tanto desc_i18n quanto desc para compatibilidade&lt;br /&gt;
      const pack = obj.desc_i18n ||&lt;br /&gt;
        obj.desc || {&lt;br /&gt;
        pt: obj.descPt,&lt;br /&gt;
        en: obj.descEn,&lt;br /&gt;
        es: obj.descEs,&lt;br /&gt;
        pl: obj.descPl,&lt;br /&gt;
      };&lt;br /&gt;
      return (&lt;br /&gt;
        (pack &amp;amp;&amp;amp; (pack[lang] || pack.pt || pack.en || pack.es || pack.pl)) || &amp;quot;&amp;quot;&lt;br /&gt;
      );&lt;br /&gt;
    }&lt;br /&gt;
    function renderSubAttributesFromObj(s, L) {&lt;br /&gt;
      const chip = (label, val) =&amp;gt;&lt;br /&gt;
        val&lt;br /&gt;
          ? `&amp;lt;div class=&amp;quot;attr-row&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;attr-label&amp;quot;&amp;gt;${label}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;attr-value&amp;quot;&amp;gt;${val}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;`&lt;br /&gt;
          : &amp;quot;&amp;quot;;&lt;br /&gt;
      const pve = (s.powerpve || &amp;quot;&amp;quot;).toString().trim();&lt;br /&gt;
      const pvp = (s.powerpvp || &amp;quot;&amp;quot;).toString().trim();&lt;br /&gt;
      const en = (s.energy || &amp;quot;&amp;quot;).toString().trim();&lt;br /&gt;
      const cd = (s.cooldown || &amp;quot;&amp;quot;).toString().trim();&lt;br /&gt;
      const rows = [&lt;br /&gt;
        cd ? chip(L.cooldown, cd) : &amp;quot;&amp;quot;,&lt;br /&gt;
        en&lt;br /&gt;
          ? chip(&lt;br /&gt;
            en.startsWith(&amp;quot;-&amp;quot;) ? L.energy_cost : L.energy_gain,&lt;br /&gt;
            en.startsWith(&amp;quot;-&amp;quot;) ? en.replace(/^-/, &amp;quot;&amp;quot;) : en.replace(/^\+?/, &amp;quot;&amp;quot;)&lt;br /&gt;
          )&lt;br /&gt;
          : &amp;quot;&amp;quot;,&lt;br /&gt;
        pve ? chip(L.power, pve) : &amp;quot;&amp;quot;,&lt;br /&gt;
        pvp ? chip(L.power_pvp, pvp) : &amp;quot;&amp;quot;,&lt;br /&gt;
      ].filter(Boolean);&lt;br /&gt;
      return rows.length ? `&amp;lt;div class=&amp;quot;attr-list&amp;quot;&amp;gt;${rows.join(&amp;quot;&amp;quot;)}&amp;lt;/div&amp;gt;` : &amp;quot;&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    function getFlagIconURL(key) {&lt;br /&gt;
      const keyNorm = String(key || &amp;quot;&amp;quot;).trim().toLowerCase();&lt;br /&gt;
      if (!keyNorm || !FLAG_ICON_FILES[keyNorm]) return &amp;quot;&amp;quot;;&lt;br /&gt;
      if (!flagIconURLCache.has(keyNorm)) {&lt;br /&gt;
        flagIconURLCache.set(keyNorm, filePathURL(FLAG_ICON_FILES[keyNorm]));&lt;br /&gt;
      }&lt;br /&gt;
      return flagIconURLCache.get(keyNorm);&lt;br /&gt;
    }&lt;br /&gt;
    function renderFlagsRow(flags) {&lt;br /&gt;
      const arr = (flags || []).filter(Boolean).map((k) =&amp;gt; String(k || &amp;quot;&amp;quot;).trim().toLowerCase());&lt;br /&gt;
      const arrFiltered = arr.filter(Boolean);&lt;br /&gt;
      if (!arrFiltered.length) return &amp;quot;&amp;quot;;&lt;br /&gt;
      const cacheKey = arrFiltered.join(&amp;quot;|&amp;quot;);&lt;br /&gt;
      if (flagRowCache.has(cacheKey)) {&lt;br /&gt;
        return flagRowCache.get(cacheKey);&lt;br /&gt;
      }&lt;br /&gt;
      const items = arrFiltered&lt;br /&gt;
        .map((k) =&amp;gt; {&lt;br /&gt;
          const url = getFlagIconURL(k);&lt;br /&gt;
          return url&lt;br /&gt;
            ? `&amp;lt;img class=&amp;quot;skill-flag&amp;quot; data-flag=&amp;quot;${k}&amp;quot; alt=&amp;quot;&amp;quot; src=&amp;quot;${url}&amp;quot;&amp;gt;`&lt;br /&gt;
            : &amp;quot;&amp;quot;;&lt;br /&gt;
        })&lt;br /&gt;
        .join(&amp;quot;&amp;quot;);&lt;br /&gt;
      const html = items&lt;br /&gt;
        ? `&amp;lt;div class=&amp;quot;skill-flags&amp;quot; role=&amp;quot;group&amp;quot; aria-label=&amp;quot;Características&amp;quot;&amp;gt;${items}&amp;lt;/div&amp;gt;`&lt;br /&gt;
        : &amp;quot;&amp;quot;;&lt;br /&gt;
      if (html) flagRowCache.set(cacheKey, html);&lt;br /&gt;
      return html;&lt;br /&gt;
    }&lt;br /&gt;
    function applyFlagTooltips(container) {&lt;br /&gt;
      const skillsRoot = document.getElementById(&amp;quot;skills&amp;quot;);&lt;br /&gt;
      if (!skillsRoot) return;&lt;br /&gt;
      let pack = {};&lt;br /&gt;
      try {&lt;br /&gt;
        pack = JSON.parse(skillsRoot.dataset.i18nFlags || &amp;quot;{}&amp;quot;);&lt;br /&gt;
      } catch (e) { }&lt;br /&gt;
      const lang = getLangKey();&lt;br /&gt;
      const dict = pack[lang] || pack.pt || {};&lt;br /&gt;
      const flags = container.querySelectorAll(&lt;br /&gt;
        &amp;quot;.skill-flags .skill-flag[data-flag]&amp;quot;&lt;br /&gt;
      );&lt;br /&gt;
      const tooltip = window.__globalSkillTooltip;&lt;br /&gt;
      if (!tooltip) return;&lt;br /&gt;
      flags.forEach((el) =&amp;gt; {&lt;br /&gt;
        const key = el.getAttribute(&amp;quot;data-flag&amp;quot;);&lt;br /&gt;
        const tip = (dict &amp;amp;&amp;amp; dict[key]) || &amp;quot;&amp;quot;;&lt;br /&gt;
        if (!tip) return;&lt;br /&gt;
        if (el.dataset.flagTipWired) return;&lt;br /&gt;
        el.dataset.flagTipWired = &amp;quot;1&amp;quot;;&lt;br /&gt;
        el.setAttribute(&amp;quot;aria-label&amp;quot;, tip);&lt;br /&gt;
        if (el.hasAttribute(&amp;quot;title&amp;quot;)) el.removeAttribute(&amp;quot;title&amp;quot;);&lt;br /&gt;
        el.addEventListener(&amp;quot;mouseenter&amp;quot;, () =&amp;gt; {&lt;br /&gt;
          const tipEl = document.querySelector(&amp;quot;.skill-tooltip&amp;quot;);&lt;br /&gt;
          if (tipEl) tipEl.classList.add(&amp;quot;flag-tooltip&amp;quot;);&lt;br /&gt;
          tooltip.show(el, tip);&lt;br /&gt;
        });&lt;br /&gt;
        el.addEventListener(&amp;quot;mousemove&amp;quot;, () =&amp;gt; {&lt;br /&gt;
          if (performance.now() &amp;gt;= tooltip.lockUntil.value) {&lt;br /&gt;
            tooltip.measureAndPos(el);&lt;br /&gt;
          }&lt;br /&gt;
        });&lt;br /&gt;
        el.addEventListener(&amp;quot;click&amp;quot;, () =&amp;gt; {&lt;br /&gt;
          tooltip.lockUntil.value = performance.now() + 240;&lt;br /&gt;
          tooltip.measureAndPos(el);&lt;br /&gt;
        });&lt;br /&gt;
        el.addEventListener(&amp;quot;mouseleave&amp;quot;, () =&amp;gt; {&lt;br /&gt;
          const tipEl = document.querySelector(&amp;quot;.skill-tooltip&amp;quot;);&lt;br /&gt;
          if (tipEl) tipEl.classList.remove(&amp;quot;flag-tooltip&amp;quot;);&lt;br /&gt;
          tooltip.hide();&lt;br /&gt;
        });&lt;br /&gt;
      });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // ====== Skill/Subskill inheritance helpers ======&lt;br /&gt;
    const mainSkillsMeta = {&lt;br /&gt;
      byIndex: new Map(),&lt;br /&gt;
      byName: new Map(),&lt;br /&gt;
      ready: false,&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    function normalizeFileURL(raw, fallback = &amp;quot;&amp;quot;) {&lt;br /&gt;
      if (!raw) return fallback;&lt;br /&gt;
      const val = String(raw).trim();&lt;br /&gt;
      if (!val) return fallback;&lt;br /&gt;
      if (&lt;br /&gt;
        /^(https?:)?\/\//i.test(val) ||&lt;br /&gt;
        val.startsWith(&amp;quot;data:&amp;quot;) ||&lt;br /&gt;
        val.includes(&amp;quot;Especial:FilePath/&amp;quot;)&lt;br /&gt;
      ) {&lt;br /&gt;
        return val;&lt;br /&gt;
      }&lt;br /&gt;
      return filePathURL(val);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function extractFileNameFromURL(url) {&lt;br /&gt;
      if (!url) return &amp;quot;&amp;quot;;&lt;br /&gt;
      const match = String(url).match(/(?:FilePath\/)([^&amp;amp;?]+)/i);&lt;br /&gt;
      return match ? decodeURIComponent(match[1]) : &amp;quot;&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function parseAttrString(raw) {&lt;br /&gt;
      const parts = (raw || &amp;quot;&amp;quot;).split(&amp;quot;,&amp;quot;).map((v) =&amp;gt; v.trim());&lt;br /&gt;
      const safe = (idx) =&amp;gt; {&lt;br /&gt;
        const val = parts[idx] || &amp;quot;&amp;quot;;&lt;br /&gt;
        return val &amp;amp;&amp;amp; val !== &amp;quot;-&amp;quot; ? val : &amp;quot;&amp;quot;;&lt;br /&gt;
      };&lt;br /&gt;
      return {&lt;br /&gt;
        powerpve: safe(0),&lt;br /&gt;
        powerpvp: safe(1),&lt;br /&gt;
        energy: safe(2),&lt;br /&gt;
        cooldown: safe(3),&lt;br /&gt;
      };&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function hasText(value) {&lt;br /&gt;
      return typeof value === &amp;quot;string&amp;quot;&lt;br /&gt;
        ? value.trim() !== &amp;quot;&amp;quot;&lt;br /&gt;
        : value !== undefined &amp;amp;&amp;amp; value !== null;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function pickFilled(current, fallback) {&lt;br /&gt;
      if (current === 0 || current === &amp;quot;0&amp;quot;) return current;&lt;br /&gt;
      if (!hasText(current)) return fallback;&lt;br /&gt;
      return current;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function buildMainSkillsMeta(nodes) {&lt;br /&gt;
      if (mainSkillsMeta.ready) {&lt;br /&gt;
        return mainSkillsMeta;&lt;br /&gt;
      }&lt;br /&gt;
      (nodes || []).forEach((icon) =&amp;gt; {&lt;br /&gt;
        const index = (icon.dataset.index || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
        if (!index) return;&lt;br /&gt;
        const name = (icon.dataset.nome || icon.dataset.name || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
        const attrs = parseAttrString(icon.dataset.atr || &amp;quot;&amp;quot;);&lt;br /&gt;
        let iconFile = (icon.dataset.iconFile || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
        if (!iconFile) {&lt;br /&gt;
          const imgSrc = icon.querySelector(&amp;quot;img&amp;quot;)?.src || &amp;quot;&amp;quot;;&lt;br /&gt;
          const iconMatch = imgSrc.match(/(?:FilePath|images)\/([^\/?]+)$/);&lt;br /&gt;
          iconFile = iconMatch ? decodeURIComponent(iconMatch[1]) : &amp;quot;&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        let videoFile = (icon.dataset.videoFile || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
        if (!videoFile) {&lt;br /&gt;
          videoFile = extractFileNameFromURL(icon.dataset.video || &amp;quot;&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        let flags = null;&lt;br /&gt;
        if (icon.dataset.flags) {&lt;br /&gt;
          try {&lt;br /&gt;
            flags = JSON.parse(icon.dataset.flags);&lt;br /&gt;
            if (!Array.isArray(flags) || flags.length === 0) flags = null;&lt;br /&gt;
          } catch (e) { flags = null; }&lt;br /&gt;
        }&lt;br /&gt;
        const meta = {&lt;br /&gt;
          index,&lt;br /&gt;
          name,&lt;br /&gt;
          icon: iconFile || &amp;quot;&amp;quot;,&lt;br /&gt;
          level: icon.dataset.level || &amp;quot;&amp;quot;,&lt;br /&gt;
          video: videoFile || &amp;quot;&amp;quot;,&lt;br /&gt;
          powerpve: attrs.powerpve || &amp;quot;&amp;quot;,&lt;br /&gt;
          powerpvp: attrs.powerpvp || &amp;quot;&amp;quot;,&lt;br /&gt;
          energy: attrs.energy || &amp;quot;&amp;quot;,&lt;br /&gt;
          cooldown: attrs.cooldown || &amp;quot;&amp;quot;,&lt;br /&gt;
          desc: icon.dataset.desc || &amp;quot;&amp;quot;,&lt;br /&gt;
          descPt: icon.dataset.descPt || &amp;quot;&amp;quot;,&lt;br /&gt;
          descEn: icon.dataset.descEn || &amp;quot;&amp;quot;,&lt;br /&gt;
          descEs: icon.dataset.descEs || &amp;quot;&amp;quot;,&lt;br /&gt;
          descPl: icon.dataset.descPl || &amp;quot;&amp;quot;,&lt;br /&gt;
          flags: flags || null,&lt;br /&gt;
        };&lt;br /&gt;
        mainSkillsMeta.byIndex.set(index, meta);&lt;br /&gt;
        mainSkillsMeta.byIndex.set(parseInt(index, 10), meta);&lt;br /&gt;
        if (name) {&lt;br /&gt;
          mainSkillsMeta.byName.set(name, meta);&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
      mainSkillsMeta.ready = true;&lt;br /&gt;
      return mainSkillsMeta;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function rebuildMainSkillsMetaFromBar() {&lt;br /&gt;
      const iconBar = document.querySelector(&amp;quot;.icon-bar&amp;quot;);&lt;br /&gt;
      if (!iconBar) return;&lt;br /&gt;
      mainSkillsMeta.ready = false;&lt;br /&gt;
      mainSkillsMeta.byIndex.clear();&lt;br /&gt;
      mainSkillsMeta.byName.clear();&lt;br /&gt;
      buildMainSkillsMeta(&lt;br /&gt;
        Array.from(iconBar.querySelectorAll(&amp;quot;.skill-icon[data-index]&amp;quot;))&lt;br /&gt;
      );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function inheritSubskillFromMain(sub, meta) {&lt;br /&gt;
      if (!sub || !meta) return sub;&lt;br /&gt;
      // Verifica se herança está desabilitada&lt;br /&gt;
      const shouldInherit = !(&lt;br /&gt;
        sub.inherit === false ||&lt;br /&gt;
        sub.inherit === &amp;quot;no&amp;quot; ||&lt;br /&gt;
        sub.inherit === &amp;quot;false&amp;quot;&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
      // Suporta refS (novo) e refM (legado)&lt;br /&gt;
      const refS = ((sub.refS || sub.S || sub.s || &amp;quot;&amp;quot;) + &amp;quot;&amp;quot;).trim();&lt;br /&gt;
      const refIndex = ((sub.refM || sub.M || sub.m || &amp;quot;&amp;quot;) + &amp;quot;&amp;quot;).trim();&lt;br /&gt;
      let name = (sub.name || sub.n || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
      let main = null;&lt;br /&gt;
&lt;br /&gt;
      // Se herança está desabilitada, não busca a skill principal&lt;br /&gt;
      if (!shouldInherit) {&lt;br /&gt;
        return { ...sub };&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Primeiro tenta por refS&lt;br /&gt;
      if (refS) {&lt;br /&gt;
        main = meta.byIndex.get(refS) || meta.byIndex.get(parseInt(refS, 10));&lt;br /&gt;
      }&lt;br /&gt;
      // Depois por refM&lt;br /&gt;
      if (!main &amp;amp;&amp;amp; refIndex) {&lt;br /&gt;
        main =&lt;br /&gt;
          meta.byIndex.get(refIndex) ||&lt;br /&gt;
          meta.byIndex.get(parseInt(refIndex, 10));&lt;br /&gt;
      }&lt;br /&gt;
      // Por último pelo nome&lt;br /&gt;
      if (!main &amp;amp;&amp;amp; name) {&lt;br /&gt;
        main = meta.byName.get(name);&lt;br /&gt;
      }&lt;br /&gt;
      if (!main) {&lt;br /&gt;
        return sub;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      const hydrated = { ...sub };&lt;br /&gt;
      if (!name &amp;amp;&amp;amp; main.name) {&lt;br /&gt;
        name = main.name;&lt;br /&gt;
      }&lt;br /&gt;
      hydrated.name = name || hydrated.name || main.name || &amp;quot;&amp;quot;;&lt;br /&gt;
      hydrated.icon = pickFilled(hydrated.icon, main.icon || &amp;quot;&amp;quot;);&lt;br /&gt;
      hydrated.level = pickFilled(hydrated.level, main.level || &amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      // Vídeo NUNCA é herdado da skill principal&lt;br /&gt;
      const hasOwnVideo = Object.prototype.hasOwnProperty.call(sub, &amp;quot;video&amp;quot;);&lt;br /&gt;
      hydrated.video = hasOwnVideo ? sub.video || &amp;quot;&amp;quot; : &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
      hydrated.powerpve = pickFilled(hydrated.powerpve, main.powerpve || &amp;quot;&amp;quot;);&lt;br /&gt;
      hydrated.powerpvp = pickFilled(hydrated.powerpvp, main.powerpvp || &amp;quot;&amp;quot;);&lt;br /&gt;
      hydrated.energy = pickFilled(hydrated.energy, main.energy || &amp;quot;&amp;quot;);&lt;br /&gt;
      hydrated.cooldown = pickFilled(hydrated.cooldown, main.cooldown || &amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      // Flags: herda da skill principal se a subskill não tiver&lt;br /&gt;
      if (&lt;br /&gt;
        (!hydrated.flags || !Array.isArray(hydrated.flags) || hydrated.flags.length === 0) &amp;amp;&amp;amp;&lt;br /&gt;
        main.flags &amp;amp;&amp;amp; Array.isArray(main.flags) &amp;amp;&amp;amp; main.flags.length &amp;gt; 0&lt;br /&gt;
      ) {&lt;br /&gt;
        hydrated.flags = main.flags;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Descrição: sempre vem da subskill, nunca herda&lt;br /&gt;
      // PROTEÇÃO TOTAL: Remove qualquer descrição que possa ter sido copiada do main&lt;br /&gt;
      if (&lt;br /&gt;
        !sub.desc &amp;amp;&amp;amp;&lt;br /&gt;
        !sub.descPt &amp;amp;&amp;amp;&lt;br /&gt;
        !sub.descEn &amp;amp;&amp;amp;&lt;br /&gt;
        !sub.descEs &amp;amp;&amp;amp;&lt;br /&gt;
        !sub.descPl &amp;amp;&amp;amp;&lt;br /&gt;
        !sub.desc_i18n&lt;br /&gt;
      ) {&lt;br /&gt;
        hydrated.desc = undefined;&lt;br /&gt;
        hydrated.descPt = undefined;&lt;br /&gt;
        hydrated.descEn = undefined;&lt;br /&gt;
        hydrated.descEs = undefined;&lt;br /&gt;
        hydrated.descPl = undefined;&lt;br /&gt;
        hydrated.desc_i18n = undefined;&lt;br /&gt;
      } else {&lt;br /&gt;
        // Se subskill tem descrição, normaliza para desc_i18n&lt;br /&gt;
        if (&lt;br /&gt;
          !hydrated.desc_i18n &amp;amp;&amp;amp;&lt;br /&gt;
          (hydrated.descPt ||&lt;br /&gt;
            hydrated.descEn ||&lt;br /&gt;
            hydrated.descEs ||&lt;br /&gt;
            hydrated.descPl)&lt;br /&gt;
        ) {&lt;br /&gt;
          hydrated.desc_i18n = {&lt;br /&gt;
            pt: hydrated.descPt || &amp;quot;&amp;quot;,&lt;br /&gt;
            en: hydrated.descEn || &amp;quot;&amp;quot;,&lt;br /&gt;
            es: hydrated.descEs || &amp;quot;&amp;quot;,&lt;br /&gt;
            pl: hydrated.descPl || &amp;quot;&amp;quot;,&lt;br /&gt;
          };&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      return hydrated;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function inheritSubskillTree(subs, meta) {&lt;br /&gt;
      if (!Array.isArray(subs)) return [];&lt;br /&gt;
      return subs.map((sub) =&amp;gt; {&lt;br /&gt;
        const hydrated = inheritSubskillFromMain(sub, meta);&lt;br /&gt;
        if (Array.isArray(hydrated.subs)) {&lt;br /&gt;
          hydrated.subs = inheritSubskillTree(hydrated.subs, meta);&lt;br /&gt;
        }&lt;br /&gt;
        return hydrated;&lt;br /&gt;
      });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function collectAssetsFromSubs(subs, iconsSet, videosSet, flagsSet) {&lt;br /&gt;
      if (!Array.isArray(subs)) return;&lt;br /&gt;
      subs.forEach((sub) =&amp;gt; {&lt;br /&gt;
        const iconURL = normalizeFileURL(sub.icon || &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
        if (iconURL &amp;amp;&amp;amp; iconURL !== &amp;quot;&amp;quot;) iconsSet.add(iconURL);&lt;br /&gt;
        // Vídeo normal&lt;br /&gt;
        if (sub.video &amp;amp;&amp;amp; sub.video.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
          const videoURL = normalizeFileURL(sub.video);&lt;br /&gt;
          if (videoURL) videosSet.add(videoURL);&lt;br /&gt;
        }&lt;br /&gt;
        // Vídeo de weapon&lt;br /&gt;
        if (&lt;br /&gt;
          sub.weapon &amp;amp;&amp;amp;&lt;br /&gt;
          typeof sub.weapon === &amp;quot;object&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
          sub.weapon.video &amp;amp;&amp;amp;&lt;br /&gt;
          sub.weapon.video.trim() !== &amp;quot;&amp;quot;&lt;br /&gt;
        ) {&lt;br /&gt;
          const weaponVideoURL = normalizeFileURL(sub.weapon.video);&lt;br /&gt;
          if (weaponVideoURL) videosSet.add(weaponVideoURL);&lt;br /&gt;
        }&lt;br /&gt;
        if (Array.isArray(sub.flags)) {&lt;br /&gt;
          sub.flags.forEach((flagKey) =&amp;gt; {&lt;br /&gt;
            const url = getFlagIconURL(flagKey);&lt;br /&gt;
            if (url) flagsSet.add(url);&lt;br /&gt;
          });&lt;br /&gt;
        }&lt;br /&gt;
        if (Array.isArray(sub.subs)) {&lt;br /&gt;
          collectAssetsFromSubs(sub.subs, iconsSet, videosSet, flagsSet);&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
    }&lt;br /&gt;
    function buildAssetManifest() {&lt;br /&gt;
      if (window.__skillAssetManifest &amp;amp;&amp;amp; window.__skillAssetManifest.ready) {&lt;br /&gt;
        return window.__skillAssetManifest;&lt;br /&gt;
      }&lt;br /&gt;
      const iconsSet = new Set();&lt;br /&gt;
      const videosSet = new Set();&lt;br /&gt;
      const flagsSet = new Set();&lt;br /&gt;
      iconItems.forEach((el) =&amp;gt; {&lt;br /&gt;
        const img = el.querySelector(&amp;quot;img&amp;quot;);&lt;br /&gt;
        if (img &amp;amp;&amp;amp; img.src) {&lt;br /&gt;
          iconsSet.add(img.src);&lt;br /&gt;
        } else if (el.dataset.iconFile) {&lt;br /&gt;
          const iconURL = normalizeFileURL(el.dataset.iconFile);&lt;br /&gt;
          if (iconURL) iconsSet.add(iconURL);&lt;br /&gt;
        }&lt;br /&gt;
        // Vídeo normal da skill&lt;br /&gt;
        const videoRaw = (&lt;br /&gt;
          el.dataset.videoFile ||&lt;br /&gt;
          el.dataset.video ||&lt;br /&gt;
          &amp;quot;&amp;quot;&lt;br /&gt;
        ).trim();&lt;br /&gt;
        if (videoRaw) {&lt;br /&gt;
          const videoURL = normalizeFileURL(videoRaw);&lt;br /&gt;
          if (videoURL) videosSet.add(videoURL);&lt;br /&gt;
        }&lt;br /&gt;
        // Vídeo de weapon da skill&lt;br /&gt;
        if (el.dataset.weapon) {&lt;br /&gt;
          try {&lt;br /&gt;
            const weaponData = JSON.parse(el.dataset.weapon);&lt;br /&gt;
            if (&lt;br /&gt;
              weaponData &amp;amp;&amp;amp;&lt;br /&gt;
              weaponData.video &amp;amp;&amp;amp;&lt;br /&gt;
              weaponData.video.trim() !== &amp;quot;&amp;quot;&lt;br /&gt;
            ) {&lt;br /&gt;
              const weaponVideoURL = normalizeFileURL(weaponData.video);&lt;br /&gt;
              if (weaponVideoURL) videosSet.add(weaponVideoURL);&lt;br /&gt;
            }&lt;br /&gt;
          } catch (e) { }&lt;br /&gt;
        }&lt;br /&gt;
        if (el.dataset.flags) {&lt;br /&gt;
          try {&lt;br /&gt;
            const parsedFlags = JSON.parse(el.dataset.flags);&lt;br /&gt;
            (parsedFlags || []).forEach((flagKey) =&amp;gt; {&lt;br /&gt;
              const url = getFlagIconURL(flagKey);&lt;br /&gt;
              if (url) flagsSet.add(url);&lt;br /&gt;
            });&lt;br /&gt;
          } catch (e) { }&lt;br /&gt;
        }&lt;br /&gt;
        if (el.dataset.subs) {&lt;br /&gt;
          try {&lt;br /&gt;
            const subs = JSON.parse(el.dataset.subs);&lt;br /&gt;
            collectAssetsFromSubs(subs, iconsSet, videosSet, flagsSet);&lt;br /&gt;
          } catch (e) { }&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
      Object.keys(FLAG_ICON_FILES).forEach((flagKey) =&amp;gt; {&lt;br /&gt;
        const url = getFlagIconURL(flagKey);&lt;br /&gt;
        if (url) flagsSet.add(url);&lt;br /&gt;
      });&lt;br /&gt;
      const manifest = {&lt;br /&gt;
        icons: iconsSet,&lt;br /&gt;
        videos: videosSet,&lt;br /&gt;
        flags: flagsSet,&lt;br /&gt;
        ready: true,&lt;br /&gt;
      };&lt;br /&gt;
      window.__skillAssetManifest = manifest;&lt;br /&gt;
      return manifest;&lt;br /&gt;
    }&lt;br /&gt;
    const subskillVideosCache = new Map();&lt;br /&gt;
    window.__subskillVideosCache = subskillVideosCache;&lt;br /&gt;
&lt;br /&gt;
    // Cache de vídeos que falharam (404) para evitar tentativas repetidas&lt;br /&gt;
    const failedVideosCache = new Set();&lt;br /&gt;
    const missingVideosReported = new Set(); // Para avisar apenas uma vez sobre vídeos faltantes&lt;br /&gt;
&lt;br /&gt;
    // Cache de parsing JSON para evitar re-parsear os mesmos dados&lt;br /&gt;
    const jsonParseCache = new WeakMap();&lt;br /&gt;
    function getCachedJSON(el, key) {&lt;br /&gt;
      if (!el) return null;&lt;br /&gt;
      const cache = jsonParseCache.get(el) || {};&lt;br /&gt;
      if (cache[key] !== undefined) return cache[key];&lt;br /&gt;
      const raw = el.dataset[key] || el.getAttribute(`data-${key}`);&lt;br /&gt;
      if (!raw) {&lt;br /&gt;
        cache[key] = null;&lt;br /&gt;
        jsonParseCache.set(el, cache);&lt;br /&gt;
        return null;&lt;br /&gt;
      }&lt;br /&gt;
      try {&lt;br /&gt;
        const parsed = JSON.parse(raw);&lt;br /&gt;
        cache[key] = parsed;&lt;br /&gt;
        jsonParseCache.set(el, cache);&lt;br /&gt;
        return parsed;&lt;br /&gt;
      } catch (e) {&lt;br /&gt;
        cache[key] = null;&lt;br /&gt;
        jsonParseCache.set(el, cache);&lt;br /&gt;
        return null;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    let assetManifest = null;&lt;br /&gt;
    const skillsTab = $(&amp;quot;#skills&amp;quot;);&lt;br /&gt;
    const skinsTab = $(&amp;quot;#skins&amp;quot;);&lt;br /&gt;
    ensureRemoved(&amp;quot;.top-rail&amp;quot;);&lt;br /&gt;
    // NÃO remove .content-card aqui - será gerenciado abaixo&lt;br /&gt;
    // ensureRemoved('.content-card'); // REMOVIDO - pode estar removendo skills-container&lt;br /&gt;
    ensureRemoved(&amp;quot;.video-placeholder&amp;quot;);&lt;br /&gt;
    Array.from(&lt;br /&gt;
      document.querySelectorAll(&lt;br /&gt;
        &amp;quot;.card-skins-title, .card-skins .card-skins-title, .cardskins-title, .rail-title&amp;quot;&lt;br /&gt;
      )&lt;br /&gt;
    ).forEach((t) =&amp;gt; {&lt;br /&gt;
      if ((t.textContent || &amp;quot;&amp;quot;).trim().toLowerCase().includes(&amp;quot;skins&amp;quot;)) {&lt;br /&gt;
        t.remove();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    if (skillsTab) {&lt;br /&gt;
      const iconBar = skillsTab.querySelector(&amp;quot;.icon-bar&amp;quot;);&lt;br /&gt;
      if (iconBar) {&lt;br /&gt;
        const rail = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
        rail.className = &amp;quot;top-rail skills&amp;quot;;&lt;br /&gt;
        // Criar wrapper de scroll para permitir glow sem clipping&lt;br /&gt;
        if (&lt;br /&gt;
          !iconBar.parentElement ||&lt;br /&gt;
          !iconBar.parentElement.classList.contains(&amp;quot;icon-scroll-x&amp;quot;)&lt;br /&gt;
        ) {&lt;br /&gt;
          const scrollWrapper = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
          scrollWrapper.className = &amp;quot;icon-scroll-x&amp;quot;;&lt;br /&gt;
          scrollWrapper.appendChild(iconBar);&lt;br /&gt;
          rail.appendChild(scrollWrapper);&lt;br /&gt;
        } else {&lt;br /&gt;
          rail.appendChild(iconBar.parentElement);&lt;br /&gt;
        }&lt;br /&gt;
        skillsTab.prepend(rail);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Busca skills-container criado pelo Lua&lt;br /&gt;
      const skillsContainer = skillsTab.querySelector(&amp;quot;.skills-container&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      // Busca skills-details e video-container (podem estar dentro de skills-container ou soltos)&lt;br /&gt;
      let details = skillsTab.querySelector(&amp;quot;.skills-details&amp;quot;);&lt;br /&gt;
      if (!details &amp;amp;&amp;amp; skillsContainer) {&lt;br /&gt;
        details = skillsContainer.querySelector(&amp;quot;.skills-details&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      if (!details) {&lt;br /&gt;
        details = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
        details.className = &amp;quot;skills-details&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Busca ou cria desc-box dentro de details&lt;br /&gt;
      let descBoxEl = details.querySelector(&amp;quot;.desc-box&amp;quot;);&lt;br /&gt;
      if (!descBoxEl) {&lt;br /&gt;
        descBoxEl = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
        descBoxEl.className = &amp;quot;desc-box&amp;quot;;&lt;br /&gt;
        details.appendChild(descBoxEl);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Busca video-container&lt;br /&gt;
      let videoContainer = skillsTab.querySelector(&amp;quot;.video-container&amp;quot;);&lt;br /&gt;
      if (!videoContainer &amp;amp;&amp;amp; skillsContainer) {&lt;br /&gt;
        videoContainer = skillsContainer.querySelector(&amp;quot;.video-container&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      if (!videoContainer) {&lt;br /&gt;
        videoContainer = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
        videoContainer.className = &amp;quot;video-container&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Cria ou atualiza content-card skills-grid (estrutura esperada pelo CSS)&lt;br /&gt;
      let card = skillsTab.querySelector(&amp;quot;.content-card.skills-grid&amp;quot;);&lt;br /&gt;
      if (!card) {&lt;br /&gt;
        card = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
        card.className = &amp;quot;content-card skills-grid&amp;quot;;&lt;br /&gt;
        skillsTab.appendChild(card);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Move details e videoContainer para dentro do card (estrutura correta)&lt;br /&gt;
      // Remove skills-container se existir (não é necessário para o layout)&lt;br /&gt;
      if (skillsContainer &amp;amp;&amp;amp; skillsContainer.parentNode) {&lt;br /&gt;
        // Move os elementos filhos de skills-container para o card&lt;br /&gt;
        if (details.parentNode === skillsContainer) {&lt;br /&gt;
          skillsContainer.removeChild(details);&lt;br /&gt;
        }&lt;br /&gt;
        if (videoContainer.parentNode === skillsContainer) {&lt;br /&gt;
          skillsContainer.removeChild(videoContainer);&lt;br /&gt;
        }&lt;br /&gt;
        // Remove skills-container se estiver vazio&lt;br /&gt;
        if (skillsContainer.children.length === 0) {&lt;br /&gt;
          skillsContainer.remove();&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Garante que details e videoContainer estão no card na ordem correta&lt;br /&gt;
      // skills-details deve vir ANTES de video-container para o grid funcionar&lt;br /&gt;
      if (details.parentNode !== card) {&lt;br /&gt;
        // Se videoContainer já está no card, insere details antes dele&lt;br /&gt;
        if (videoContainer.parentNode === card) {&lt;br /&gt;
          card.insertBefore(details, videoContainer);&lt;br /&gt;
        } else {&lt;br /&gt;
          card.appendChild(details);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (videoContainer.parentNode !== card) {&lt;br /&gt;
        card.appendChild(videoContainer);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Garante ordem: details primeiro, videoContainer depois&lt;br /&gt;
      if (details.parentNode === card &amp;amp;&amp;amp; videoContainer.parentNode === card) {&lt;br /&gt;
        if (details.nextSibling !== videoContainer) {&lt;br /&gt;
          card.insertBefore(details, videoContainer);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    // Função para obter iconsBar de forma segura (com retry)&lt;br /&gt;
    function getIconsBar() {&lt;br /&gt;
      const skillsEl = document.getElementById(&amp;quot;skills&amp;quot;);&lt;br /&gt;
      if (!skillsEl) return null;&lt;br /&gt;
      return skillsEl.querySelector(&amp;quot;.icon-bar&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    const iconsBar = getIconsBar();&lt;br /&gt;
    const skillsTopRail = iconsBar&lt;br /&gt;
      ? iconsBar.closest(&amp;quot;.top-rail.skills&amp;quot;)&lt;br /&gt;
      : null;&lt;br /&gt;
    const iconItems = iconsBar&lt;br /&gt;
      ? Array.from(iconsBar.querySelectorAll(&amp;quot;.skill-icon&amp;quot;))&lt;br /&gt;
      : [];&lt;br /&gt;
    buildMainSkillsMeta(iconItems);&lt;br /&gt;
    // Verifica se há weapon em skills principais OU em subskills&lt;br /&gt;
    function checkHasAnyWeapon() {&lt;br /&gt;
      // Verifica skills principais&lt;br /&gt;
      const hasMainWeapon = iconItems.some((el) =&amp;gt; {&lt;br /&gt;
        const weapon = el.dataset.weapon;&lt;br /&gt;
        return weapon &amp;amp;&amp;amp; weapon.trim() !== &amp;quot;&amp;quot; &amp;amp;&amp;amp; weapon !== &amp;quot;{}&amp;quot;;&lt;br /&gt;
      });&lt;br /&gt;
      if (hasMainWeapon) {&lt;br /&gt;
        return true;&lt;br /&gt;
      }&lt;br /&gt;
      // Verifica subskills&lt;br /&gt;
      for (const el of iconItems) {&lt;br /&gt;
        const subsRaw = el.getAttribute(&amp;quot;data-subs&amp;quot;);&lt;br /&gt;
        if (!subsRaw) continue;&lt;br /&gt;
        try {&lt;br /&gt;
          const subs = JSON.parse(subsRaw);&lt;br /&gt;
          if (&lt;br /&gt;
            Array.isArray(subs) &amp;amp;&amp;amp;&lt;br /&gt;
            subs.some(&lt;br /&gt;
              (s) =&amp;gt;&lt;br /&gt;
                s &amp;amp;&amp;amp;&lt;br /&gt;
                s.weapon &amp;amp;&amp;amp;&lt;br /&gt;
                typeof s.weapon === &amp;quot;object&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
                Object.keys(s.weapon).length &amp;gt; 0&lt;br /&gt;
            )&lt;br /&gt;
          ) {&lt;br /&gt;
            return true;&lt;br /&gt;
          }&lt;br /&gt;
        } catch (e) { }&lt;br /&gt;
      }&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
    const hasWeaponSkillAvailable = checkHasAnyWeapon();&lt;br /&gt;
    let weaponToggleBtn = null;&lt;br /&gt;
    if (!assetManifest) {&lt;br /&gt;
      assetManifest = buildAssetManifest();&lt;br /&gt;
      // Pré-carrega apenas ícones e flags críticos&lt;br /&gt;
      if (assetManifest.icons &amp;amp;&amp;amp; assetManifest.icons.size) {&lt;br /&gt;
        assetManifest.icons.forEach((url) =&amp;gt; {&lt;br /&gt;
          if (!url || imagePreloadCache.has(url)) return;&lt;br /&gt;
          const img = new Image();&lt;br /&gt;
          img.decoding = &amp;quot;async&amp;quot;;&lt;br /&gt;
          img.loading = &amp;quot;eager&amp;quot;;&lt;br /&gt;
          img.referrerPolicy = &amp;quot;same-origin&amp;quot;;&lt;br /&gt;
          img.src = url;&lt;br /&gt;
          imagePreloadCache.set(url, img);&lt;br /&gt;
        });&lt;br /&gt;
      }&lt;br /&gt;
      if (assetManifest.flags &amp;amp;&amp;amp; assetManifest.flags.size) {&lt;br /&gt;
        assetManifest.flags.forEach((url) =&amp;gt; {&lt;br /&gt;
          if (!url || imagePreloadCache.has(url)) return;&lt;br /&gt;
          const img = new Image();&lt;br /&gt;
          img.decoding = &amp;quot;async&amp;quot;;&lt;br /&gt;
          img.loading = &amp;quot;eager&amp;quot;;&lt;br /&gt;
          img.referrerPolicy = &amp;quot;same-origin&amp;quot;;&lt;br /&gt;
          img.src = url;&lt;br /&gt;
          imagePreloadCache.set(url, img);&lt;br /&gt;
        });&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    // Busca descBox e videoBox após a estrutura estar organizada&lt;br /&gt;
    const descBox = $(&amp;quot;#skills&amp;quot;) ? $(&amp;quot;.desc-box&amp;quot;, $(&amp;quot;#skills&amp;quot;)) : null;&lt;br /&gt;
    let videoBox = $(&amp;quot;#skills&amp;quot;) ? $(&amp;quot;.video-container&amp;quot;, $(&amp;quot;#skills&amp;quot;)) : null;&lt;br /&gt;
    // Busca dinâmica do videoBox (pode não existir no momento da inicialização)&lt;br /&gt;
    function getVideoBox() {&lt;br /&gt;
      if (videoBox &amp;amp;&amp;amp; videoBox.isConnected) return videoBox;&lt;br /&gt;
      const skillsRoot = document.getElementById(&amp;quot;skills&amp;quot;);&lt;br /&gt;
      if (!skillsRoot) return null;&lt;br /&gt;
      videoBox = skillsRoot.querySelector(&amp;quot;.video-container&amp;quot;) ||&lt;br /&gt;
        skillsRoot.querySelector(&amp;quot;.skills-container .video-container&amp;quot;) ||&lt;br /&gt;
        skillsRoot.querySelector(&amp;quot;.content-card .video-container&amp;quot;);&lt;br /&gt;
      return videoBox;&lt;br /&gt;
    }&lt;br /&gt;
    const videosCache = new Map();&lt;br /&gt;
    const nestedVideoElByIcon = new WeakMap();&lt;br /&gt;
    const barStack = [];&lt;br /&gt;
    window.__barStack = barStack;&lt;br /&gt;
    let initialBarSnapshot = null;&lt;br /&gt;
    let totalVideos = 0,&lt;br /&gt;
      loadedVideos = 0,&lt;br /&gt;
      autoplay = false;&lt;br /&gt;
    window.__lastActiveSkillIcon = null;&lt;br /&gt;
    let userHasInteracted = false;&lt;br /&gt;
    let globalWeaponEnabled = false;&lt;br /&gt;
    try {&lt;br /&gt;
      if (localStorage.getItem(&amp;quot;glaWeaponEnabled&amp;quot;) === &amp;quot;1&amp;quot;) {&lt;br /&gt;
        globalWeaponEnabled = true;&lt;br /&gt;
      }&lt;br /&gt;
    } catch (err) { }&lt;br /&gt;
    const weaponStateListeners = new Set();&lt;br /&gt;
    let showWeaponPopupFn = null;&lt;br /&gt;
    let popupShouldOpen = false;&lt;br /&gt;
    function attachWeaponPopupFn(fn) {&lt;br /&gt;
      if (typeof fn !== &amp;quot;function&amp;quot;) return;&lt;br /&gt;
      showWeaponPopupFn = fn;&lt;br /&gt;
      if (popupShouldOpen) {&lt;br /&gt;
        popupShouldOpen = false;&lt;br /&gt;
        try {&lt;br /&gt;
          showWeaponPopupFn();&lt;br /&gt;
        } catch (err) { }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    attachWeaponPopupFn(window.__glaWeaponShowPopup);&lt;br /&gt;
    function requestWeaponPopupDisplay() {&lt;br /&gt;
      try {&lt;br /&gt;
        if (localStorage.getItem(&amp;quot;glaWeaponPopupDismissed&amp;quot;) === &amp;quot;1&amp;quot;) return;&lt;br /&gt;
      } catch (err) { }&lt;br /&gt;
      if (typeof showWeaponPopupFn === &amp;quot;function&amp;quot;) {&lt;br /&gt;
        showWeaponPopupFn();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      popupShouldOpen = true;&lt;br /&gt;
    }&lt;br /&gt;
    function onWeaponStateChange(fn) {&lt;br /&gt;
      if (typeof fn !== &amp;quot;function&amp;quot;) return;&lt;br /&gt;
      weaponStateListeners.add(fn);&lt;br /&gt;
    }&lt;br /&gt;
    function syncWeaponButtonState(enabled) {&lt;br /&gt;
      if (!weaponToggleBtn || !weaponToggleBtn.isConnected) return;&lt;br /&gt;
      // Usa .weapon-active em vez de .active para não conflitar com skills&lt;br /&gt;
      weaponToggleBtn.classList.toggle(&amp;quot;weapon-active&amp;quot;, !!enabled);&lt;br /&gt;
      weaponToggleBtn.classList.remove(&amp;quot;active&amp;quot;); // Garante que .active nunca seja aplicado&lt;br /&gt;
      weaponToggleBtn.setAttribute(&amp;quot;aria-pressed&amp;quot;, enabled ? &amp;quot;true&amp;quot; : &amp;quot;false&amp;quot;);&lt;br /&gt;
      weaponToggleBtn.setAttribute(&lt;br /&gt;
        &amp;quot;aria-label&amp;quot;,&lt;br /&gt;
        enabled ? &amp;quot;Desativar Arma Especial&amp;quot; : &amp;quot;Ativar Arma Especial&amp;quot;&lt;br /&gt;
      );&lt;br /&gt;
    }&lt;br /&gt;
    function syncWeaponRailState(enabled) {&lt;br /&gt;
      if (skillsTopRail) {&lt;br /&gt;
        skillsTopRail.classList.toggle(&amp;quot;weapon-mode-on&amp;quot;, !!enabled);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    function notifyWeaponStateListeners(enabled) {&lt;br /&gt;
      weaponStateListeners.forEach((listener) =&amp;gt; {&lt;br /&gt;
        try {&lt;br /&gt;
          listener(enabled);&lt;br /&gt;
        } catch (err) { }&lt;br /&gt;
      });&lt;br /&gt;
    }&lt;br /&gt;
    let pendingWeaponState = null;&lt;br /&gt;
    window.addEventListener(&amp;quot;weapon:ready&amp;quot;, (ev) =&amp;gt; {&lt;br /&gt;
      if (ev &amp;amp;&amp;amp; ev.detail &amp;amp;&amp;amp; ev.detail.showPopup) {&lt;br /&gt;
        attachWeaponPopupFn(ev.detail.showPopup);&lt;br /&gt;
      }&lt;br /&gt;
      if (pendingWeaponState === null) return;&lt;br /&gt;
      if (typeof window.__applyWeaponState === &amp;quot;function&amp;quot;) {&lt;br /&gt;
        const target = pendingWeaponState;&lt;br /&gt;
        pendingWeaponState = null;&lt;br /&gt;
        window.__applyWeaponState(target);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    window.__setGlobalWeaponEnabled = (enabled) =&amp;gt; {&lt;br /&gt;
      globalWeaponEnabled = enabled;&lt;br /&gt;
      notifyWeaponStateListeners(enabled);&lt;br /&gt;
    };&lt;br /&gt;
    function requestWeaponState(targetState) {&lt;br /&gt;
      if (typeof window.__applyWeaponState === &amp;quot;function&amp;quot;) {&lt;br /&gt;
        pendingWeaponState = null;&lt;br /&gt;
        window.__applyWeaponState(targetState);&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      pendingWeaponState = targetState;&lt;br /&gt;
    }&lt;br /&gt;
    onWeaponStateChange(syncWeaponButtonState);&lt;br /&gt;
    function reapplyWeaponClassesToBar() {&lt;br /&gt;
      // SISTEMA UNIFICADO: Aplica em skills E subskills (sempre, não só quando weapon está ativo)&lt;br /&gt;
      // Obtém iconsBar dinamicamente (pode não estar pronto ainda quando há flags)&lt;br /&gt;
      const currentIconsBar = getIconsBar();&lt;br /&gt;
      if (!currentIconsBar) {&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      // Busca em skills principais (dentro de iconsBar)&lt;br /&gt;
      currentIconsBar&lt;br /&gt;
        .querySelectorAll(&amp;quot;.skill-icon[data-weapon]&amp;quot;)&lt;br /&gt;
        .forEach((el) =&amp;gt; {&lt;br /&gt;
          const weapon = el.dataset.weapon;&lt;br /&gt;
          if (weapon &amp;amp;&amp;amp; weapon.trim() !== &amp;quot;&amp;quot; &amp;amp;&amp;amp; weapon !== &amp;quot;{}&amp;quot;) {&lt;br /&gt;
            try {&lt;br /&gt;
              const weaponObj = JSON.parse(weapon);&lt;br /&gt;
              if (&lt;br /&gt;
                weaponObj &amp;amp;&amp;amp;&lt;br /&gt;
                typeof weaponObj === &amp;quot;object&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
                Object.keys(weaponObj).length &amp;gt; 0&lt;br /&gt;
              ) {&lt;br /&gt;
                if (!el.classList.contains(&amp;quot;has-weapon-available&amp;quot;)) {&lt;br /&gt;
                  el.classList.add(&amp;quot;has-weapon-available&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
                if (!el.querySelector(&amp;quot;.weapon-indicator&amp;quot;)) {&lt;br /&gt;
                  const ind = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
                  ind.className = &amp;quot;weapon-indicator&amp;quot;;&lt;br /&gt;
                  el.appendChild(ind);&lt;br /&gt;
                }&lt;br /&gt;
              }&lt;br /&gt;
            } catch (e) {&lt;br /&gt;
              // Se não for JSON válido, não adiciona a classe&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        });&lt;br /&gt;
      // Busca em subskills (dentro de subskills-rail)&lt;br /&gt;
      document&lt;br /&gt;
        .querySelectorAll(&amp;quot;.subskills-rail .subicon[data-weapon]&amp;quot;)&lt;br /&gt;
        .forEach((el) =&amp;gt; {&lt;br /&gt;
          const weapon = el.dataset.weapon;&lt;br /&gt;
          if (weapon &amp;amp;&amp;amp; weapon.trim() !== &amp;quot;&amp;quot; &amp;amp;&amp;amp; weapon !== &amp;quot;{}&amp;quot;) {&lt;br /&gt;
            try {&lt;br /&gt;
              const weaponObj = JSON.parse(weapon);&lt;br /&gt;
              if (&lt;br /&gt;
                weaponObj &amp;amp;&amp;amp;&lt;br /&gt;
                typeof weaponObj === &amp;quot;object&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
                Object.keys(weaponObj).length &amp;gt; 0&lt;br /&gt;
              ) {&lt;br /&gt;
                if (!el.classList.contains(&amp;quot;has-weapon-available&amp;quot;)) {&lt;br /&gt;
                  el.classList.add(&amp;quot;has-weapon-available&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
              }&lt;br /&gt;
            } catch (e) {&lt;br /&gt;
              // Se não for JSON válido, não adiciona a classe&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
    // Aplica classes de weapon imediatamente ao carregar&lt;br /&gt;
    reapplyWeaponClassesToBar();&lt;br /&gt;
    // REMOVIDO: setupWeaponBarToggle - O toggle de weapon agora é criado apenas pelo C.WeaponToggle.html no header&lt;br /&gt;
    // Não cria mais botão na barra de skills - apenas aplica classes visuais&lt;br /&gt;
    onWeaponStateChange(syncWeaponRailState);&lt;br /&gt;
    // Reaplica classes quando o estado do weapon muda (para garantir que funcione mesmo quando toggle é ativado fora da barra)&lt;br /&gt;
    onWeaponStateChange(() =&amp;gt; {&lt;br /&gt;
      // Usa setTimeout para garantir que o DOM foi atualizado&lt;br /&gt;
      setTimeout(() =&amp;gt; {&lt;br /&gt;
        reapplyWeaponClassesToBar();&lt;br /&gt;
      }, 50);&lt;br /&gt;
    });&lt;br /&gt;
    syncWeaponRailState(globalWeaponEnabled);&lt;br /&gt;
    (function injectWeaponStyles() {&lt;br /&gt;
      if (document.getElementById(&amp;quot;weapon-toggle-styles&amp;quot;)) return;&lt;br /&gt;
      const style = document.createElement(&amp;quot;style&amp;quot;);&lt;br /&gt;
      style.id = &amp;quot;weapon-toggle-styles&amp;quot;;&lt;br /&gt;
      style.textContent = `&lt;br /&gt;
        /* ========== ESTILOS DE WEAPON - NOVO SISTEMA ========== */&lt;br /&gt;
        &lt;br /&gt;
        /* Animação simples para borda */&lt;br /&gt;
        @keyframes weapon-border-flow {&lt;br /&gt;
            0% { background-position: 0% 0%; }&lt;br /&gt;
            100% { background-position: 200% 0%; }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /* Animação sutil para brilho */&lt;br /&gt;
        @keyframes weapon-glow-breathe {&lt;br /&gt;
            0%, 100% { opacity: 0.7; }&lt;br /&gt;
            50% { opacity: 1; }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /* Animação do gradiente (sem girar a borda) */&lt;br /&gt;
        @property --effect-spin {&lt;br /&gt;
            syntax: &amp;quot;&amp;lt;angle&amp;gt;&amp;quot;;&lt;br /&gt;
            inherits: false;&lt;br /&gt;
            initial-value: 0deg;&lt;br /&gt;
        }&lt;br /&gt;
        @keyframes effect-border-spin {&lt;br /&gt;
            from { --effect-spin: 0deg; }&lt;br /&gt;
            to { --effect-spin: 360deg; }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /* ===== ÍCONE COM ARMA - Só mostra efeitos quando weapon-mode-on está ativo ===== */&lt;br /&gt;
        /* Quando NÃO está em weapon-mode-on, os ícones com arma devem ser normais (mesma borda padrão) */&lt;br /&gt;
        .character-box .top-rail.skills .icon-bar .skill-icon.has-weapon-available:not(.weapon-bar-toggle) {&lt;br /&gt;
            /* Remove borda sólida base que aparece na transição do toggle */&lt;br /&gt;
            border-color: transparent !important;&lt;br /&gt;
            box-shadow: none !important;&lt;br /&gt;
        }&lt;br /&gt;
        .character-box .top-rail.skills:not(.weapon-mode-on) .icon-bar .skill-icon.has-weapon-available:not(.weapon-bar-toggle) {&lt;br /&gt;
            /* Remove transform scale quando toggle está desativado */&lt;br /&gt;
            transform: none !important;&lt;br /&gt;
            transition: transform 0.15s ease !important;&lt;br /&gt;
        }&lt;br /&gt;
        .character-box .top-rail.skills:not(.weapon-mode-on) .icon-bar .skill-icon.has-weapon-available:not(.weapon-bar-toggle)::after {&lt;br /&gt;
            /* Reseta COMPLETAMENTE para borda padrão quando toggle está desativado */&lt;br /&gt;
            /* Remove background, padding e mask INSTANTANEAMENTE (sem transição) */&lt;br /&gt;
            background: none !important;&lt;br /&gt;
            background-size: unset !important;&lt;br /&gt;
            padding: 0 !important;&lt;br /&gt;
            -webkit-mask: none !important;&lt;br /&gt;
            mask: none !important;&lt;br /&gt;
            mask-composite: unset !important;&lt;br /&gt;
            -webkit-mask-composite: unset !important;&lt;br /&gt;
            animation: none !important;&lt;br /&gt;
            /* Apenas box-shadow tem transição suave */&lt;br /&gt;
            box-shadow: inset 0 0 0 var(--icon-ring-w) var(--icon-idle) !important;&lt;br /&gt;
            /* SEM transição no background/padding/mask para evitar &amp;quot;flash&amp;quot; durante a mudança */&lt;br /&gt;
            transition: box-shadow 0.15s ease !important;&lt;br /&gt;
        }&lt;br /&gt;
        .character-box .top-rail.skills:not(.weapon-mode-on) .icon-bar .skill-icon.has-weapon-available:not(.weapon-bar-toggle)::before {&lt;br /&gt;
            /* Remove efeitos de glow quando toggle está desativado - com transição suave */&lt;br /&gt;
            opacity: 0 !important;&lt;br /&gt;
            transition: opacity 0.15s ease !important;&lt;br /&gt;
        }&lt;br /&gt;
        /* Quando ativo mas toggle desativado, usa borda padrão de ativo */&lt;br /&gt;
        .character-box .top-rail.skills:not(.weapon-mode-on) .icon-bar .skill-icon.has-weapon-available:not(.weapon-bar-toggle).active {&lt;br /&gt;
            /* Mantém o zoom padrão mesmo quando toggle está desativado */&lt;br /&gt;
            transform: scale(1.10) translateZ(0) !important;&lt;br /&gt;
            transition: transform 0.15s ease !important;&lt;br /&gt;
        }&lt;br /&gt;
        .character-box .top-rail.skills:not(.weapon-mode-on) .icon-bar .skill-icon.has-weapon-available:not(.weapon-bar-toggle).active::after {&lt;br /&gt;
            /* Reseta COMPLETAMENTE para borda padrão de ativo */&lt;br /&gt;
            /* Remove background, padding e mask INSTANTANEAMENTE (sem transição) */&lt;br /&gt;
            background: none !important;&lt;br /&gt;
            background-size: unset !important;&lt;br /&gt;
            padding: 0 !important;&lt;br /&gt;
            -webkit-mask: none !important;&lt;br /&gt;
            mask: none !important;&lt;br /&gt;
            mask-composite: unset !important;&lt;br /&gt;
            -webkit-mask-composite: unset !important;&lt;br /&gt;
            animation: none !important;&lt;br /&gt;
            /* Apenas box-shadow tem transição suave */&lt;br /&gt;
            box-shadow: inset 0 0 0 var(--icon-ring-w) var(--icon-active) !important;&lt;br /&gt;
            /* SEM transição no background/padding/mask para evitar &amp;quot;flash&amp;quot; durante a mudança */&lt;br /&gt;
            transition: box-shadow 0.15s ease !important;&lt;br /&gt;
        }&lt;br /&gt;
        .character-box .top-rail.skills:not(.weapon-mode-on) .icon-bar .skill-icon.has-weapon-available:not(.weapon-bar-toggle).active::before {&lt;br /&gt;
            /* Sem glow amarelo no modo normal para skills com weapon */&lt;br /&gt;
            opacity: 0 !important;&lt;br /&gt;
            box-shadow: none !important;&lt;br /&gt;
            transition: opacity 0.15s ease !important;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /* ===== MODO WEAPON ON - INATIVO ===== */&lt;br /&gt;
        .character-box .top-rail.skills.weapon-mode-on .icon-bar .skill-icon.has-weapon-available:not(.weapon-bar-toggle):not(.active)::after {&lt;br /&gt;
            pointer-events: none !important;&lt;br /&gt;
            box-shadow: none !important;&lt;br /&gt;
            background: linear-gradient(90deg, &lt;br /&gt;
                #FF3333 0%, &lt;br /&gt;
                #FF0000 50%, &lt;br /&gt;
                #FF3333 100%) !important;&lt;br /&gt;
            background-size: 200% 100% !important;&lt;br /&gt;
            animation: weapon-border-flow 3s linear infinite !important;&lt;br /&gt;
            -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0) !important;&lt;br /&gt;
            mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0) !important;&lt;br /&gt;
            -webkit-mask-composite: xor !important;&lt;br /&gt;
            mask-composite: exclude !important;&lt;br /&gt;
            padding: 2px !important;&lt;br /&gt;
            /* SEM transição para permitir remoção instantânea quando toggle é desativado */&lt;br /&gt;
            transition: none !important;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .character-box .top-rail.skills.weapon-mode-on .icon-bar .skill-icon.has-weapon-available:not(.weapon-bar-toggle):not(.active)::before {&lt;br /&gt;
            pointer-events: none !important;&lt;br /&gt;
            inset: 0 !important;&lt;br /&gt;
            border-radius: inherit !important;&lt;br /&gt;
            z-index: 1 !important;&lt;br /&gt;
            animation: weapon-glow-breathe 2s ease-in-out infinite !important;&lt;br /&gt;
            box-shadow: &lt;br /&gt;
                0 0 8px 0 rgba(255, 0, 0, 0.4),&lt;br /&gt;
                0 0 12px 0 rgba(255, 51, 51, 0.3),&lt;br /&gt;
                0 0 16px 0 rgba(255, 0, 0, 0.2) !important;&lt;br /&gt;
            opacity: 1 !important;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /* ===== MODO WEAPON ON - ATIVO ===== */&lt;br /&gt;
        .character-box .top-rail.skills.weapon-mode-on .icon-bar .skill-icon.has-weapon-available:not(.weapon-bar-toggle).active {&lt;br /&gt;
            transform: scale(1.10) !important;&lt;br /&gt;
            z-index: 5 !important;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .character-box .top-rail.skills.weapon-mode-on .icon-bar .skill-icon.has-weapon-available:not(.weapon-bar-toggle).active::after {&lt;br /&gt;
            pointer-events: none !important;&lt;br /&gt;
            box-shadow: none !important;&lt;br /&gt;
            background: linear-gradient(90deg, &lt;br /&gt;
                #FFEB3B 0%, &lt;br /&gt;
                #FFD700 50%, &lt;br /&gt;
                #FFEB3B 100%) !important;&lt;br /&gt;
            background-size: 200% 100% !important;&lt;br /&gt;
            animation: weapon-border-flow 2s linear infinite !important;&lt;br /&gt;
            -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0) !important;&lt;br /&gt;
            mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0) !important;&lt;br /&gt;
            -webkit-mask-composite: xor !important;&lt;br /&gt;
            mask-composite: exclude !important;&lt;br /&gt;
            padding: 2px !important;&lt;br /&gt;
            /* SEM transição para permitir remoção instantânea quando toggle é desativado */&lt;br /&gt;
            transition: none !important;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .character-box .top-rail.skills.weapon-mode-on .icon-bar .skill-icon.has-weapon-available:not(.weapon-bar-toggle).active::before {&lt;br /&gt;
            pointer-events: none !important;&lt;br /&gt;
            inset: 0 !important;&lt;br /&gt;
            border-radius: inherit !important;&lt;br /&gt;
            z-index: 1 !important;&lt;br /&gt;
            animation: weapon-glow-breathe 1.5s ease-in-out infinite !important;&lt;br /&gt;
            box-shadow: &lt;br /&gt;
                0 0 10px 0 rgba(255, 215, 0, 0.5),&lt;br /&gt;
                0 0 16px 0 rgba(255, 235, 59, 0.4),&lt;br /&gt;
                0 0 22px 0 rgba(255, 215, 0, 0.3) !important;&lt;br /&gt;
            opacity: 1 !important;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .character-box .top-rail.skills .icon-bar {&lt;br /&gt;
            position: relative;&lt;br /&gt;
        }&lt;br /&gt;
        .character-box .top-rail.skills .icon-bar .skill-icon {&lt;br /&gt;
            z-index: 2;&lt;br /&gt;
        }&lt;br /&gt;
        .character-box .top-rail.skills .icon-bar .skill-icon.effect-active:not(.weapon-bar-toggle):not(.active) {&lt;br /&gt;
            border-color: transparent !important;&lt;br /&gt;
            outline: 2px solid rgba(210, 60, 60, 0.95) !important;&lt;br /&gt;
            outline-offset: -2px;&lt;br /&gt;
            animation: effect-child-outline 1.6s ease-in-out infinite !important;&lt;br /&gt;
        }&lt;br /&gt;
        .character-box .top-rail.skills .icon-bar .skill-icon.effect-active:not(.weapon-bar-toggle):not(.active)::after {&lt;br /&gt;
            box-shadow:&lt;br /&gt;
                inset 0 0 0 var(--icon-ring-w) rgba(210, 60, 60, 0.95),&lt;br /&gt;
                0 0 6px rgba(255, 60, 60, 0.45),&lt;br /&gt;
                0 0 10px rgba(120, 20, 20, 0.6) !important;&lt;br /&gt;
            animation: effect-child-ring 1.6s ease-in-out infinite !important;&lt;br /&gt;
            opacity: 1 !important;&lt;br /&gt;
        }&lt;br /&gt;
        .character-box .top-rail.skills .icon-bar .skill-icon.effect-active:not(.weapon-bar-toggle):not(.active)::before {&lt;br /&gt;
            inset: 0 !important;&lt;br /&gt;
            border-radius: inherit !important;&lt;br /&gt;
            z-index: 1 !important;&lt;br /&gt;
            opacity: 1 !important;&lt;br /&gt;
            box-shadow:&lt;br /&gt;
                0 0 8px rgba(255, 60, 60, 0.35),&lt;br /&gt;
                0 0 14px rgba(120, 20, 20, 0.45);&lt;br /&gt;
            animation: effect-child-glow 1.6s ease-in-out infinite !important;&lt;br /&gt;
        }&lt;br /&gt;
        .character-box .top-rail.skills.effect-mode-on .icon-bar .skill-icon.effect-active:not(.weapon-bar-toggle):not(.active)::after {&lt;br /&gt;
            box-shadow:&lt;br /&gt;
                inset 0 0 0 var(--icon-ring-w) rgba(210, 60, 60, 0.95),&lt;br /&gt;
                0 0 6px rgba(255, 60, 60, 0.45),&lt;br /&gt;
                0 0 10px rgba(120, 20, 20, 0.6) !important;&lt;br /&gt;
            animation: effect-child-ring 1.6s ease-in-out infinite !important;&lt;br /&gt;
            opacity: 1 !important;&lt;br /&gt;
        }&lt;br /&gt;
        .character-box .top-rail.skills.effect-mode-on .icon-bar .skill-icon.effect-active:not(.weapon-bar-toggle):not(.active)::before {&lt;br /&gt;
            inset: 0 !important;&lt;br /&gt;
            border-radius: inherit !important;&lt;br /&gt;
            z-index: 1 !important;&lt;br /&gt;
            opacity: 1 !important;&lt;br /&gt;
            box-shadow:&lt;br /&gt;
                0 0 8px rgba(255, 60, 60, 0.35),&lt;br /&gt;
                0 0 14px rgba(120, 20, 20, 0.45);&lt;br /&gt;
            animation: effect-child-glow 1.6s ease-in-out infinite !important;&lt;br /&gt;
        }&lt;br /&gt;
        @keyframes effect-child-ring {&lt;br /&gt;
            0% {&lt;br /&gt;
                box-shadow:&lt;br /&gt;
                    inset 0 0 0 var(--icon-ring-w) rgba(210, 60, 60, 0.95),&lt;br /&gt;
                    0 0 6px rgba(255, 60, 60, 0.45),&lt;br /&gt;
                    0 0 10px rgba(120, 20, 20, 0.6);&lt;br /&gt;
            }&lt;br /&gt;
            50% {&lt;br /&gt;
                box-shadow:&lt;br /&gt;
                    inset 0 0 0 var(--icon-ring-w) rgba(120, 20, 20, 0.95),&lt;br /&gt;
                    0 0 9px rgba(255, 70, 70, 0.65),&lt;br /&gt;
                    0 0 14px rgba(20, 0, 0, 0.8);&lt;br /&gt;
            }&lt;br /&gt;
            100% {&lt;br /&gt;
                box-shadow:&lt;br /&gt;
                    inset 0 0 0 var(--icon-ring-w) rgba(210, 60, 60, 0.95),&lt;br /&gt;
                    0 0 6px rgba(255, 60, 60, 0.45),&lt;br /&gt;
                    0 0 10px rgba(120, 20, 20, 0.6);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        @keyframes effect-child-outline {&lt;br /&gt;
            0% {&lt;br /&gt;
                outline-color: rgba(210, 60, 60, 0.95);&lt;br /&gt;
            }&lt;br /&gt;
            50% {&lt;br /&gt;
                outline-color: rgba(120, 20, 20, 0.95);&lt;br /&gt;
            }&lt;br /&gt;
            100% {&lt;br /&gt;
                outline-color: rgba(210, 60, 60, 0.95);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        @keyframes effect-child-glow {&lt;br /&gt;
            0% {&lt;br /&gt;
                box-shadow:&lt;br /&gt;
                    0 0 8px rgba(255, 60, 60, 0.35),&lt;br /&gt;
                    0 0 14px rgba(120, 20, 20, 0.45);&lt;br /&gt;
            }&lt;br /&gt;
            50% {&lt;br /&gt;
                box-shadow:&lt;br /&gt;
                    0 0 12px rgba(255, 70, 70, 0.55),&lt;br /&gt;
                    0 0 18px rgba(20, 0, 0, 0.75);&lt;br /&gt;
            }&lt;br /&gt;
            100% {&lt;br /&gt;
                box-shadow:&lt;br /&gt;
                    0 0 8px rgba(255, 60, 60, 0.35),&lt;br /&gt;
                    0 0 14px rgba(120, 20, 20, 0.45);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        .character-box .top-rail.skills .effect-lines-layer {&lt;br /&gt;
            position: absolute;&lt;br /&gt;
            left: 0;&lt;br /&gt;
            top: 0;&lt;br /&gt;
            width: 100%;&lt;br /&gt;
            height: 100%;&lt;br /&gt;
            pointer-events: none;&lt;br /&gt;
            z-index: 0;&lt;br /&gt;
            overflow: visible;&lt;br /&gt;
        }&lt;br /&gt;
        .character-box .top-rail.skills .effect-lines-layer .effect-line {&lt;br /&gt;
            fill: none;&lt;br /&gt;
            stroke-linecap: round;&lt;br /&gt;
            stroke-linejoin: round;&lt;br /&gt;
        }&lt;br /&gt;
        .character-box .top-rail.skills .effect-lines-layer .effect-line-glow {&lt;br /&gt;
            stroke: rgba(120, 20, 20, 0.7);&lt;br /&gt;
            stroke-width: 5;&lt;br /&gt;
            filter: drop-shadow(0 0 6px rgba(255, 60, 60, 0.45));&lt;br /&gt;
            animation: none;&lt;br /&gt;
        }&lt;br /&gt;
        .character-box .top-rail.skills .effect-lines-layer .effect-line-core {&lt;br /&gt;
            stroke: rgba(210, 60, 60, 0.95);&lt;br /&gt;
            stroke-width: 2.2;&lt;br /&gt;
            animation: none;&lt;br /&gt;
        }&lt;br /&gt;
        .character-box .top-rail.skills .effect-lines-layer .effect-line.effect-line-returning {&lt;br /&gt;
            animation: effect-line-return var(--effect-return-duration, 1.1s) ease forwards;&lt;br /&gt;
            animation-delay: var(--effect-return-delay, 0s);&lt;br /&gt;
        }&lt;br /&gt;
        @keyframes effect-line-pulse {&lt;br /&gt;
            0% {&lt;br /&gt;
                stroke: rgba(210, 60, 60, 0.95);&lt;br /&gt;
                stroke-width: 2.1;&lt;br /&gt;
            }&lt;br /&gt;
            50% {&lt;br /&gt;
                stroke: rgba(120, 20, 20, 0.95);&lt;br /&gt;
                stroke-width: 2.7;&lt;br /&gt;
            }&lt;br /&gt;
            100% {&lt;br /&gt;
                stroke: rgba(220, 70, 70, 0.95);&lt;br /&gt;
                stroke-width: 2.1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        @keyframes effect-line-glow {&lt;br /&gt;
            0% {&lt;br /&gt;
                stroke: rgba(140, 25, 25, 0.65);&lt;br /&gt;
                filter: drop-shadow(0 0 5px rgba(255, 80, 80, 0.35));&lt;br /&gt;
            }&lt;br /&gt;
            50% {&lt;br /&gt;
                stroke: rgba(20, 0, 0, 0.85);&lt;br /&gt;
                filter: drop-shadow(0 0 9px rgba(255, 70, 70, 0.65));&lt;br /&gt;
            }&lt;br /&gt;
            100% {&lt;br /&gt;
                stroke: rgba(140, 25, 25, 0.65);&lt;br /&gt;
                filter: drop-shadow(0 0 5px rgba(255, 80, 80, 0.35));&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        @keyframes effect-line-return {&lt;br /&gt;
            0% {&lt;br /&gt;
                stroke-dasharray: var(--effect-line-length, 0) var(--effect-line-length, 0);&lt;br /&gt;
                stroke-dashoffset: 0;&lt;br /&gt;
                opacity: 1;&lt;br /&gt;
            }&lt;br /&gt;
            100% {&lt;br /&gt;
                stroke-dasharray: 0 var(--effect-line-length, 0);&lt;br /&gt;
                stroke-dashoffset: calc(var(--effect-line-length, 0) * -1);&lt;br /&gt;
                opacity: 0;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        @media (prefers-reduced-motion: reduce) {&lt;br /&gt;
            .character-box .top-rail.skills .effect-lines-layer .effect-line {&lt;br /&gt;
                animation: none;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        .character-box .top-rail.skills.effect-mode-on .icon-bar .skill-icon.effect-active:not(.weapon-bar-toggle).active::before {&lt;br /&gt;
            pointer-events: none !important;&lt;br /&gt;
            inset: 0 !important;&lt;br /&gt;
            border-radius: inherit !important;&lt;br /&gt;
            z-index: 1 !important;&lt;br /&gt;
            animation: weapon-glow-breathe 1.4s ease-in-out infinite !important;&lt;br /&gt;
            box-shadow: &lt;br /&gt;
                0 0 10px 0 rgba(220, 220, 220, 0.5),&lt;br /&gt;
                0 0 16px 0 rgba(190, 190, 190, 0.4),&lt;br /&gt;
                0 0 22px 0 rgba(220, 220, 220, 0.3) !important;&lt;br /&gt;
            opacity: 1 !important;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /* ========== ESTILOS DE SWAP DE PERSONAGENS (Sistema Genérico) ========== */&lt;br /&gt;
        /* Skills desabilitadas quando o personagem ativo não pode usá-las */&lt;br /&gt;
        .character-box .top-rail.skills .icon-bar .skill-icon.disabled-skill {&lt;br /&gt;
            opacity: 0.3 !important;&lt;br /&gt;
            filter: grayscale(100%) !important;&lt;br /&gt;
            cursor: not-allowed !important;&lt;br /&gt;
            pointer-events: none !important;&lt;br /&gt;
            transition: opacity 0.2s ease, filter 0.2s ease !important;&lt;br /&gt;
        }&lt;br /&gt;
            `;&lt;br /&gt;
      document.head.appendChild(style);&lt;br /&gt;
    })();&lt;br /&gt;
    function applyWeaponBadge(el, weaponData, equipped) {&lt;br /&gt;
      // Apenas gerencia a classe weapon-equipped (badge visual removido)&lt;br /&gt;
      if (equipped &amp;amp;&amp;amp; weaponData) {&lt;br /&gt;
        el.classList.add(&amp;quot;weapon-equipped&amp;quot;);&lt;br /&gt;
      } else {&lt;br /&gt;
        el.classList.remove(&amp;quot;weapon-equipped&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    function getWeaponKey(el) {&lt;br /&gt;
      return (&lt;br /&gt;
        (el.dataset.index || &amp;quot;&amp;quot;) +&lt;br /&gt;
        &amp;quot;:&amp;quot; +&lt;br /&gt;
        (el.dataset.nome || el.dataset.name || &amp;quot;&amp;quot;)&lt;br /&gt;
      );&lt;br /&gt;
    }&lt;br /&gt;
    function isWeaponModeOn() {&lt;br /&gt;
      try {&lt;br /&gt;
        return localStorage.getItem(&amp;quot;glaWeaponEnabled&amp;quot;) === &amp;quot;1&amp;quot;;&lt;br /&gt;
      } catch (e) {&lt;br /&gt;
        return false;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    function getWeaponDataForIcon(iconEl) {&lt;br /&gt;
      if (!iconEl || !iconEl.dataset.weapon) return null;&lt;br /&gt;
      // Usa cache de parsing JSON&lt;br /&gt;
      return getCachedJSON(iconEl, &amp;quot;weapon&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    const effectState = {&lt;br /&gt;
      skills: new Set(),&lt;br /&gt;
      videos: new Map(),&lt;br /&gt;
      expiresAt: 0,&lt;br /&gt;
      sourceIcon: null,&lt;br /&gt;
      timer: null,&lt;br /&gt;
    };&lt;br /&gt;
    let effectLinesLayer = null;&lt;br /&gt;
    let effectLinesRAF = null;&lt;br /&gt;
    let effectLinesCleanupTimer = null;&lt;br /&gt;
    let effectLinesScrollWrap = null;&lt;br /&gt;
    let effectLinesBound = false;&lt;br /&gt;
    let effectLinesLastState = null;&lt;br /&gt;
    function getSkillNameFromIcon(iconEl) {&lt;br /&gt;
      return (iconEl?.dataset?.nome || iconEl?.dataset?.name || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
    }&lt;br /&gt;
    function getEffectVideoKey(iconEl, videoValue) {&lt;br /&gt;
      if (!iconEl) return &amp;quot;&amp;quot;;&lt;br /&gt;
      const baseIndex = iconEl.dataset.index || &amp;quot;&amp;quot;;&lt;br /&gt;
      const subName =&lt;br /&gt;
        iconEl.dataset.subName ||&lt;br /&gt;
        iconEl.dataset.nome ||&lt;br /&gt;
        iconEl.dataset.name ||&lt;br /&gt;
        &amp;quot;&amp;quot;;&lt;br /&gt;
      const namePart = baseIndex || subName || &amp;quot;&amp;quot;;&lt;br /&gt;
      const videoPart = String(videoValue || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
      if (!namePart || !videoPart) return &amp;quot;&amp;quot;;&lt;br /&gt;
      return `effect:${namePart}:${videoPart}`;&lt;br /&gt;
    }&lt;br /&gt;
    function normalizeEffectData(raw) {&lt;br /&gt;
      if (!raw || typeof raw !== &amp;quot;object&amp;quot;) return null;&lt;br /&gt;
      const rawSkills = raw.skills;&lt;br /&gt;
      const timeValue = Number(raw.time ?? raw.duration ?? 0);&lt;br /&gt;
      const timeMs = Number.isFinite(timeValue) ? timeValue * 1000 : 0;&lt;br /&gt;
      if (!timeMs || timeMs &amp;lt;= 0) return null;&lt;br /&gt;
      const skills = Array.isArray(rawSkills)&lt;br /&gt;
        ? rawSkills.map((s) =&amp;gt; String(s || &amp;quot;&amp;quot;).trim()).filter(Boolean)&lt;br /&gt;
        : [];&lt;br /&gt;
      if (!skills.length) return null;&lt;br /&gt;
      const videos = new Map();&lt;br /&gt;
      if (raw.videos &amp;amp;&amp;amp; typeof raw.videos === &amp;quot;object&amp;quot;) {&lt;br /&gt;
        Object.keys(raw.videos).forEach((k) =&amp;gt; {&lt;br /&gt;
          const key = String(k || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
          const val = String(raw.videos[k] || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
          if (key &amp;amp;&amp;amp; val) videos.set(key, val);&lt;br /&gt;
        });&lt;br /&gt;
      }&lt;br /&gt;
      return { skills, timeMs, videos };&lt;br /&gt;
    }&lt;br /&gt;
    function handleEffectLinesScroll() {&lt;br /&gt;
      scheduleEffectLinesUpdate();&lt;br /&gt;
    }&lt;br /&gt;
    function bindEffectLinesEvents() {&lt;br /&gt;
      if (!effectLinesBound) {&lt;br /&gt;
        window.addEventListener(&amp;quot;resize&amp;quot;, scheduleEffectLinesUpdate);&lt;br /&gt;
        window.addEventListener(&amp;quot;scroll&amp;quot;, scheduleEffectLinesUpdate, {&lt;br /&gt;
          passive: true,&lt;br /&gt;
        });&lt;br /&gt;
        effectLinesBound = true;&lt;br /&gt;
      }&lt;br /&gt;
      const rail = document.querySelector(&amp;quot;.top-rail.skills&amp;quot;);&lt;br /&gt;
      const scrollWrap = rail ? rail.querySelector(&amp;quot;.icon-scroll-x&amp;quot;) : null;&lt;br /&gt;
      if (scrollWrap &amp;amp;&amp;amp; scrollWrap !== effectLinesScrollWrap) {&lt;br /&gt;
        if (effectLinesScrollWrap) {&lt;br /&gt;
          effectLinesScrollWrap.removeEventListener(&lt;br /&gt;
            &amp;quot;scroll&amp;quot;,&lt;br /&gt;
            handleEffectLinesScroll&lt;br /&gt;
          );&lt;br /&gt;
        }&lt;br /&gt;
        scrollWrap.addEventListener(&amp;quot;scroll&amp;quot;, handleEffectLinesScroll, {&lt;br /&gt;
          passive: true,&lt;br /&gt;
        });&lt;br /&gt;
        effectLinesScrollWrap = scrollWrap;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    function scheduleEffectLinesUpdate() {&lt;br /&gt;
      if (effectLinesRAF) return;&lt;br /&gt;
      effectLinesRAF = requestAnimationFrame(() =&amp;gt; {&lt;br /&gt;
        effectLinesRAF = null;&lt;br /&gt;
        updateEffectLines();&lt;br /&gt;
      });&lt;br /&gt;
    }&lt;br /&gt;
    function getEffectLinesLayer() {&lt;br /&gt;
      const rail = document.querySelector(&amp;quot;.top-rail.skills&amp;quot;);&lt;br /&gt;
      if (!rail) return null;&lt;br /&gt;
      const iconBar = rail.querySelector(&amp;quot;.icon-bar&amp;quot;);&lt;br /&gt;
      if (!iconBar) return null;&lt;br /&gt;
      if (effectLinesLayer &amp;amp;&amp;amp; effectLinesLayer.isConnected) {&lt;br /&gt;
        return effectLinesLayer;&lt;br /&gt;
      }&lt;br /&gt;
      const existing = iconBar.querySelector(&amp;quot;.effect-lines-layer&amp;quot;);&lt;br /&gt;
      if (existing) {&lt;br /&gt;
        effectLinesLayer = existing;&lt;br /&gt;
        return effectLinesLayer;&lt;br /&gt;
      }&lt;br /&gt;
      const svg = document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;, &amp;quot;svg&amp;quot;);&lt;br /&gt;
      svg.classList.add(&amp;quot;effect-lines-layer&amp;quot;);&lt;br /&gt;
      svg.setAttribute(&amp;quot;aria-hidden&amp;quot;, &amp;quot;true&amp;quot;);&lt;br /&gt;
      iconBar.insertBefore(svg, iconBar.firstChild);&lt;br /&gt;
      effectLinesLayer = svg;&lt;br /&gt;
      return effectLinesLayer;&lt;br /&gt;
    }&lt;br /&gt;
    function updateEffectLines() {&lt;br /&gt;
      if (!effectState.sourceIcon || !effectState.sourceIcon.isConnected) {&lt;br /&gt;
        clearEffectLines();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      if (effectState.expiresAt &amp;lt;= Date.now()) {&lt;br /&gt;
        clearEffectLines();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      const layer = getEffectLinesLayer();&lt;br /&gt;
      if (!layer) return;&lt;br /&gt;
      const rail = layer.closest(&amp;quot;.top-rail.skills&amp;quot;);&lt;br /&gt;
      if (!rail) return;&lt;br /&gt;
      const iconBar = rail.querySelector(&amp;quot;.icon-bar&amp;quot;);&lt;br /&gt;
      if (!iconBar) return;&lt;br /&gt;
&lt;br /&gt;
      bindEffectLinesEvents();&lt;br /&gt;
&lt;br /&gt;
      const barRect = iconBar.getBoundingClientRect();&lt;br /&gt;
      const width = Math.max(1, Math.round(iconBar.scrollWidth || barRect.width));&lt;br /&gt;
      const height = Math.max(1, Math.round(iconBar.clientHeight || barRect.height));&lt;br /&gt;
      layer.style.left = &amp;quot;0px&amp;quot;;&lt;br /&gt;
      layer.style.top = &amp;quot;0px&amp;quot;;&lt;br /&gt;
      layer.setAttribute(&amp;quot;width&amp;quot;, String(width));&lt;br /&gt;
      layer.setAttribute(&amp;quot;height&amp;quot;, String(height));&lt;br /&gt;
      layer.setAttribute(&amp;quot;viewBox&amp;quot;, `0 0 ${width} ${height}`);&lt;br /&gt;
      layer.classList.remove(&amp;quot;effect-lines-returning&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      const srcRect = effectState.sourceIcon.getBoundingClientRect();&lt;br /&gt;
      const startX =&lt;br /&gt;
        srcRect.left + srcRect.width / 2 - barRect.left + iconBar.scrollLeft;&lt;br /&gt;
      const startY = srcRect.top + srcRect.height / 2 - barRect.top;&lt;br /&gt;
&lt;br /&gt;
      const allIcons = Array.from(&lt;br /&gt;
        document.querySelectorAll(&amp;quot;.icon-bar .skill-icon[data-index]&amp;quot;)&lt;br /&gt;
      ).filter((icon) =&amp;gt; !icon.classList.contains(&amp;quot;weapon-bar-toggle&amp;quot;));&lt;br /&gt;
      const targets = allIcons.filter((icon) =&amp;gt; {&lt;br /&gt;
        if (icon === effectState.sourceIcon) return false;&lt;br /&gt;
        const name = getSkillNameFromIcon(icon);&lt;br /&gt;
        return name &amp;amp;&amp;amp; effectState.skills.has(name);&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      if (!targets.length) {&lt;br /&gt;
        clearEffectLines();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      const frag = document.createDocumentFragment();&lt;br /&gt;
      const baselinePadding = 10;&lt;br /&gt;
      const baselineExtra = 12;&lt;br /&gt;
      const baselineY = Math.max(&lt;br /&gt;
        startY,&lt;br /&gt;
        height - baselinePadding + baselineExtra&lt;br /&gt;
      );&lt;br /&gt;
      const targetPoints = targets.map((target) =&amp;gt; {&lt;br /&gt;
        const tgtRect = target.getBoundingClientRect();&lt;br /&gt;
        const endX =&lt;br /&gt;
          tgtRect.left + tgtRect.width / 2 - barRect.left + iconBar.scrollLeft;&lt;br /&gt;
        const endY = tgtRect.top + tgtRect.height / 2 - barRect.top;&lt;br /&gt;
        return { x: endX, y: endY };&lt;br /&gt;
      });&lt;br /&gt;
      const xs = targetPoints.map((p) =&amp;gt; p.x);&lt;br /&gt;
      const minX = Math.min(startX, ...xs);&lt;br /&gt;
      const maxX = Math.max(startX, ...xs);&lt;br /&gt;
      effectLinesLastState = {&lt;br /&gt;
        startX,&lt;br /&gt;
        startY,&lt;br /&gt;
        baselineY,&lt;br /&gt;
        targets: targetPoints.map((p) =&amp;gt; ({&lt;br /&gt;
          x: p.x,&lt;br /&gt;
          y: p.y,&lt;br /&gt;
          dist: Math.hypot(p.x - startX, p.y - startY),&lt;br /&gt;
        })),&lt;br /&gt;
      };&lt;br /&gt;
      const dParts = [&lt;br /&gt;
        `M ${startX} ${startY}`,&lt;br /&gt;
        `L ${startX} ${baselineY}`,&lt;br /&gt;
        `L ${minX} ${baselineY}`,&lt;br /&gt;
        `L ${maxX} ${baselineY}`,&lt;br /&gt;
      ];&lt;br /&gt;
      targetPoints.forEach((p) =&amp;gt; {&lt;br /&gt;
        dParts.push(`M ${p.x} ${baselineY} L ${p.x} ${p.y}`);&lt;br /&gt;
      });&lt;br /&gt;
      const d = dParts.join(&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      const glow = document.createElementNS(&lt;br /&gt;
        &amp;quot;http://www.w3.org/2000/svg&amp;quot;,&lt;br /&gt;
        &amp;quot;path&amp;quot;&lt;br /&gt;
      );&lt;br /&gt;
      glow.setAttribute(&amp;quot;d&amp;quot;, d);&lt;br /&gt;
      glow.classList.add(&amp;quot;effect-line&amp;quot;, &amp;quot;effect-line-glow&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      const core = document.createElementNS(&lt;br /&gt;
        &amp;quot;http://www.w3.org/2000/svg&amp;quot;,&lt;br /&gt;
        &amp;quot;path&amp;quot;&lt;br /&gt;
      );&lt;br /&gt;
      core.setAttribute(&amp;quot;d&amp;quot;, d);&lt;br /&gt;
      core.classList.add(&amp;quot;effect-line&amp;quot;, &amp;quot;effect-line-core&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      frag.appendChild(glow);&lt;br /&gt;
      frag.appendChild(core);&lt;br /&gt;
&lt;br /&gt;
      requestAnimationFrame(() =&amp;gt; {&lt;br /&gt;
        const length = Math.max(1, Math.round(core.getTotalLength()));&lt;br /&gt;
        [core, glow].forEach((path) =&amp;gt; {&lt;br /&gt;
          path.style.setProperty(&amp;quot;--effect-line-length&amp;quot;, `${length}`);&lt;br /&gt;
          path.style.strokeDasharray = `${length}`;&lt;br /&gt;
          path.style.strokeDashoffset = &amp;quot;0&amp;quot;;&lt;br /&gt;
        });&lt;br /&gt;
      });&lt;br /&gt;
      layer.replaceChildren(frag);&lt;br /&gt;
    }&lt;br /&gt;
    function animateEffectLinesReturn() {&lt;br /&gt;
      const layer =&lt;br /&gt;
        (effectLinesLayer &amp;amp;&amp;amp; effectLinesLayer.isConnected&lt;br /&gt;
          ? effectLinesLayer&lt;br /&gt;
          : document.querySelector(&amp;quot;.effect-lines-layer&amp;quot;)) || null;&lt;br /&gt;
      if (!layer || !effectLinesLastState) {&lt;br /&gt;
        clearEffectLines();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      const { startX, startY, baselineY, targets } = effectLinesLastState;&lt;br /&gt;
      const sortedTargets = [...targets].sort((a, b) =&amp;gt; b.dist - a.dist);&lt;br /&gt;
      const returnDuration = 1.1;&lt;br /&gt;
      const returnStagger = 0.22;&lt;br /&gt;
      const frag = document.createDocumentFragment();&lt;br /&gt;
      sortedTargets.forEach((target, idx) =&amp;gt; {&lt;br /&gt;
        const d = [&lt;br /&gt;
          `M ${startX} ${startY}`,&lt;br /&gt;
          `L ${startX} ${baselineY}`,&lt;br /&gt;
          `L ${target.x} ${baselineY}`,&lt;br /&gt;
          `L ${target.x} ${target.y}`,&lt;br /&gt;
        ].join(&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        const glow = document.createElementNS(&lt;br /&gt;
          &amp;quot;http://www.w3.org/2000/svg&amp;quot;,&lt;br /&gt;
          &amp;quot;path&amp;quot;&lt;br /&gt;
        );&lt;br /&gt;
        glow.setAttribute(&amp;quot;d&amp;quot;, d);&lt;br /&gt;
        glow.classList.add(&lt;br /&gt;
          &amp;quot;effect-line&amp;quot;,&lt;br /&gt;
          &amp;quot;effect-line-glow&amp;quot;,&lt;br /&gt;
          &amp;quot;effect-line-returning&amp;quot;&lt;br /&gt;
        );&lt;br /&gt;
        glow.style.setProperty(&amp;quot;--effect-return-duration&amp;quot;, `${returnDuration}s`);&lt;br /&gt;
        glow.style.setProperty(&amp;quot;--effect-return-delay&amp;quot;, `${idx * returnStagger}s`);&lt;br /&gt;
&lt;br /&gt;
        const core = document.createElementNS(&lt;br /&gt;
          &amp;quot;http://www.w3.org/2000/svg&amp;quot;,&lt;br /&gt;
          &amp;quot;path&amp;quot;&lt;br /&gt;
        );&lt;br /&gt;
        core.setAttribute(&amp;quot;d&amp;quot;, d);&lt;br /&gt;
        core.classList.add(&lt;br /&gt;
          &amp;quot;effect-line&amp;quot;,&lt;br /&gt;
          &amp;quot;effect-line-core&amp;quot;,&lt;br /&gt;
          &amp;quot;effect-line-returning&amp;quot;&lt;br /&gt;
        );&lt;br /&gt;
        core.style.setProperty(&amp;quot;--effect-return-duration&amp;quot;, `${returnDuration}s`);&lt;br /&gt;
        core.style.setProperty(&amp;quot;--effect-return-delay&amp;quot;, `${idx * returnStagger}s`);&lt;br /&gt;
&lt;br /&gt;
        frag.appendChild(glow);&lt;br /&gt;
        frag.appendChild(core);&lt;br /&gt;
      });&lt;br /&gt;
      layer.replaceChildren(frag);&lt;br /&gt;
&lt;br /&gt;
      requestAnimationFrame(() =&amp;gt; {&lt;br /&gt;
        const paths = Array.from(layer.querySelectorAll(&amp;quot;path.effect-line&amp;quot;));&lt;br /&gt;
        paths.forEach((path) =&amp;gt; {&lt;br /&gt;
          const length = Math.max(1, Math.round(path.getTotalLength()));&lt;br /&gt;
          path.style.setProperty(&amp;quot;--effect-line-length&amp;quot;, `${length}`);&lt;br /&gt;
          path.style.strokeDasharray = `${length} ${length}`;&lt;br /&gt;
          path.style.strokeDashoffset = &amp;quot;0&amp;quot;;&lt;br /&gt;
        });&lt;br /&gt;
      });&lt;br /&gt;
      if (effectLinesCleanupTimer) {&lt;br /&gt;
        clearTimeout(effectLinesCleanupTimer);&lt;br /&gt;
      }&lt;br /&gt;
      effectLinesCleanupTimer = setTimeout(() =&amp;gt; {&lt;br /&gt;
        clearEffectLines();&lt;br /&gt;
      }, (returnDuration + returnStagger * Math.max(0, targets.length - 1)) * 1000 + 120);&lt;br /&gt;
    }&lt;br /&gt;
    function clearEffectLines() {&lt;br /&gt;
      if (effectLinesCleanupTimer) {&lt;br /&gt;
        clearTimeout(effectLinesCleanupTimer);&lt;br /&gt;
        effectLinesCleanupTimer = null;&lt;br /&gt;
      }&lt;br /&gt;
      const layer =&lt;br /&gt;
        (effectLinesLayer &amp;amp;&amp;amp; effectLinesLayer.isConnected&lt;br /&gt;
          ? effectLinesLayer&lt;br /&gt;
          : document.querySelector(&amp;quot;.effect-lines-layer&amp;quot;)) || null;&lt;br /&gt;
      if (layer) layer.remove();&lt;br /&gt;
      effectLinesLayer = null;&lt;br /&gt;
    }&lt;br /&gt;
    function applyEffectClasses() {&lt;br /&gt;
      const isActive = effectState.expiresAt &amp;gt; Date.now();&lt;br /&gt;
      const rail = document.querySelector(&amp;quot;.top-rail.skills&amp;quot;);&lt;br /&gt;
      if (rail) rail.classList.toggle(&amp;quot;effect-mode-on&amp;quot;, isActive);&lt;br /&gt;
      document&lt;br /&gt;
        .querySelectorAll(&amp;quot;.icon-bar .skill-icon[data-index]&amp;quot;)&lt;br /&gt;
        .forEach((icon) =&amp;gt; {&lt;br /&gt;
          if (icon.classList.contains(&amp;quot;weapon-bar-toggle&amp;quot;)) return;&lt;br /&gt;
          const name = getSkillNameFromIcon(icon);&lt;br /&gt;
          const should =&lt;br /&gt;
            isActive &amp;amp;&amp;amp; name &amp;amp;&amp;amp; effectState.skills.has(name);&lt;br /&gt;
          icon.classList.toggle(&amp;quot;effect-active&amp;quot;, !!should);&lt;br /&gt;
          if (!should) {&lt;br /&gt;
            icon.style.removeProperty(&amp;quot;--effect-strength&amp;quot;);&lt;br /&gt;
          }&lt;br /&gt;
        });&lt;br /&gt;
      if (isActive) {&lt;br /&gt;
        bindEffectLinesEvents();&lt;br /&gt;
        scheduleEffectLinesUpdate();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    function clearEffectState() {&lt;br /&gt;
      const activeIcon = document.querySelector(&lt;br /&gt;
        &amp;quot;.icon-bar .skill-icon.active&amp;quot;&lt;br /&gt;
      );&lt;br /&gt;
      const activeName = getSkillNameFromIcon(activeIcon);&lt;br /&gt;
      const wasAffected =&lt;br /&gt;
        activeName &amp;amp;&amp;amp; effectState.skills.has(activeName);&lt;br /&gt;
&lt;br /&gt;
      animateEffectLinesReturn();&lt;br /&gt;
      if (effectState.timer) {&lt;br /&gt;
        clearTimeout(effectState.timer);&lt;br /&gt;
        effectState.timer = null;&lt;br /&gt;
      }&lt;br /&gt;
      effectState.skills.clear();&lt;br /&gt;
      effectState.videos.clear();&lt;br /&gt;
      effectState.expiresAt = 0;&lt;br /&gt;
      effectState.sourceIcon = null;&lt;br /&gt;
      applyEffectClasses();&lt;br /&gt;
&lt;br /&gt;
      if (wasAffected &amp;amp;&amp;amp; activeIcon) {&lt;br /&gt;
        activeIcon.dispatchEvent(new Event(&amp;quot;click&amp;quot;, { bubbles: true }));&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    function activateEffectFromIcon(iconEl) {&lt;br /&gt;
      const effectRaw = getCachedJSON(iconEl, &amp;quot;effect&amp;quot;);&lt;br /&gt;
      const normalized = normalizeEffectData(effectRaw);&lt;br /&gt;
      if (!normalized) return;&lt;br /&gt;
&lt;br /&gt;
      effectState.skills = new Set(normalized.skills);&lt;br /&gt;
      effectState.videos = normalized.videos;&lt;br /&gt;
      effectState.expiresAt = Date.now() + normalized.timeMs;&lt;br /&gt;
      effectState.sourceIcon = iconEl;&lt;br /&gt;
&lt;br /&gt;
      if (effectState.timer) clearTimeout(effectState.timer);&lt;br /&gt;
      effectState.timer = setTimeout(() =&amp;gt; {&lt;br /&gt;
        clearEffectState();&lt;br /&gt;
      }, normalized.timeMs + 5);&lt;br /&gt;
&lt;br /&gt;
      applyEffectClasses();&lt;br /&gt;
    }&lt;br /&gt;
    function getEffectVideoForIcon(iconEl) {&lt;br /&gt;
      if (!iconEl) return &amp;quot;&amp;quot;;&lt;br /&gt;
      if (effectState.expiresAt &amp;lt;= Date.now()) return &amp;quot;&amp;quot;;&lt;br /&gt;
      const name = getSkillNameFromIcon(iconEl);&lt;br /&gt;
      if (!name || !effectState.skills.has(name)) return &amp;quot;&amp;quot;;&lt;br /&gt;
      if (effectState.videos.has(name)) return effectState.videos.get(name) || &amp;quot;&amp;quot;;&lt;br /&gt;
      return &amp;quot;&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    function getEffectiveSkillVideoFromIcon(iconEl) {&lt;br /&gt;
      const weaponOn = globalWeaponEnabled;&lt;br /&gt;
      const weaponData = getWeaponDataForIcon(iconEl);&lt;br /&gt;
      const baseVideoFile = (iconEl.dataset.videoFile || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
      const baseVideoURL = (iconEl.dataset.video || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
&lt;br /&gt;
      // console.log('[Skills DEBUG]', {&lt;br /&gt;
      //     skillName: iconEl.dataset.nome || iconEl.dataset.name,&lt;br /&gt;
      //     weaponOn,&lt;br /&gt;
      //     hasWeaponData: !!weaponData,&lt;br /&gt;
      //     weaponData: weaponData,&lt;br /&gt;
      //     baseVideoFile,&lt;br /&gt;
      //     baseVideoURL&lt;br /&gt;
      // });&lt;br /&gt;
&lt;br /&gt;
      const effectVideo = getEffectVideoForIcon(iconEl);&lt;br /&gt;
      if (effectVideo &amp;amp;&amp;amp; effectVideo.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
        return effectVideo.trim();&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      if (weaponOn &amp;amp;&amp;amp; weaponData) {&lt;br /&gt;
        // console.log('[Skills] checking weapon video', {&lt;br /&gt;
        //     skillName: iconEl.dataset.nome || iconEl.dataset.name,&lt;br /&gt;
        //     hasVideo: !!(weaponData.video),&lt;br /&gt;
        //     videoValue: weaponData.video,&lt;br /&gt;
        //     videoTrimmed: weaponData.video ? weaponData.video.trim() : ''&lt;br /&gt;
        // });&lt;br /&gt;
        if (weaponData.video &amp;amp;&amp;amp; weaponData.video.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
          // console.log('[Skills] video escolhido (weapon)', iconEl.dataset.nome || iconEl.dataset.name, weaponData.video);&lt;br /&gt;
          return weaponData.video.trim();&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Sistema genérico de swap: verifica character_videos se houver personagem ativo&lt;br /&gt;
      if (activeCharacter !== null &amp;amp;&amp;amp; iconEl.dataset.characterVideos) {&lt;br /&gt;
        try {&lt;br /&gt;
          const characterVideos = JSON.parse(iconEl.dataset.characterVideos);&lt;br /&gt;
          const characterVideo = characterVideos[activeCharacter];&lt;br /&gt;
          if (characterVideo &amp;amp;&amp;amp; characterVideo.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
            return characterVideo.trim();&lt;br /&gt;
          }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
          console.warn(&amp;quot;[Swap] Erro ao processar character_videos:&amp;quot;, e);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // form_switch (Change Form): usa vídeo da PRÓXIMA forma (transição atual → próxima)&lt;br /&gt;
      const isFormSwitch =&lt;br /&gt;
        iconEl.dataset.formSwitch === &amp;quot;true&amp;quot; ||&lt;br /&gt;
        iconEl.getAttribute(&amp;quot;data-form-switch&amp;quot;) === &amp;quot;true&amp;quot;;&lt;br /&gt;
      if (isFormSwitch) {&lt;br /&gt;
        const formVideosRaw =&lt;br /&gt;
          iconEl.dataset.formVideos || iconEl.getAttribute(&amp;quot;data-form-videos&amp;quot;);&lt;br /&gt;
        if (formVideosRaw) {&lt;br /&gt;
          try {&lt;br /&gt;
            const videos = JSON.parse(formVideosRaw);&lt;br /&gt;
            let formVideo = &amp;quot;&amp;quot;;&lt;br /&gt;
            const nextForm = typeof getNextFormName === &amp;quot;function&amp;quot; ? getNextFormName() : null;&lt;br /&gt;
            if (nextForm) {&lt;br /&gt;
              formVideo = videos[nextForm] || &amp;quot;&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            // Fallback: se nextForm for null (formsData ainda não carregado), usa primeiro vídeo disponível&lt;br /&gt;
            if ((!formVideo || formVideo.trim() === &amp;quot;&amp;quot;) &amp;amp;&amp;amp; Object.keys(videos).length &amp;gt; 0) {&lt;br /&gt;
              const firstKey = Object.keys(videos)[0];&lt;br /&gt;
              formVideo = videos[firstKey] || &amp;quot;&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            if (formVideo &amp;amp;&amp;amp; formVideo.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
              return formVideo.trim();&lt;br /&gt;
            }&lt;br /&gt;
          } catch (e) {&lt;br /&gt;
            console.warn(&amp;quot;[Forms] Erro ao parsear form_videos em getEffectiveSkillVideoFromIcon:&amp;quot;, e);&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Prioriza videoFile (nome do arquivo), mas se estiver vazio, usa video (pode ser URL completa)&lt;br /&gt;
      const result = baseVideoFile || baseVideoURL || &amp;quot;&amp;quot;;&lt;br /&gt;
      // console.log('[Skills] video escolhido (base)', iconEl.dataset.nome || iconEl.dataset.name, result);&lt;br /&gt;
      return result;&lt;br /&gt;
    }&lt;br /&gt;
    function createVideoElement(videoURL, extraAttrs = {}) {&lt;br /&gt;
      // Se o vídeo já falhou antes, não cria novo elemento&lt;br /&gt;
      if (failedVideosCache.has(videoURL)) {&lt;br /&gt;
        return null;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      const v = document.createElement(&amp;quot;video&amp;quot;);&lt;br /&gt;
      v.className = &amp;quot;skill-video&amp;quot;;&lt;br /&gt;
      v.setAttribute(&amp;quot;controls&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
      v.setAttribute(&amp;quot;preload&amp;quot;, &amp;quot;auto&amp;quot;); // Mudado de 'metadata' para 'auto' para carregar tudo imediatamente&lt;br /&gt;
      v.setAttribute(&amp;quot;playsinline&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
      v.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
      v.style.width = &amp;quot;100%&amp;quot;;&lt;br /&gt;
      v.style.height = &amp;quot;auto&amp;quot;;&lt;br /&gt;
      v.style.aspectRatio = &amp;quot;16/9&amp;quot;;&lt;br /&gt;
      v.style.objectFit = &amp;quot;cover&amp;quot;;&lt;br /&gt;
      Object.keys(extraAttrs).forEach((k) =&amp;gt; {&lt;br /&gt;
        v.dataset[k] = extraAttrs[k];&lt;br /&gt;
      });&lt;br /&gt;
      // Detectar formato do vídeo pela extensão&lt;br /&gt;
      const ext = (videoURL.split(&amp;quot;.&amp;quot;).pop() || &amp;quot;&amp;quot;).toLowerCase().split(&amp;quot;?&amp;quot;)[0];&lt;br /&gt;
      const mimeTypes = {&lt;br /&gt;
        mp4: &amp;quot;video/mp4&amp;quot;,&lt;br /&gt;
        m4v: &amp;quot;video/mp4&amp;quot;,&lt;br /&gt;
        webm: &amp;quot;video/webm&amp;quot;,&lt;br /&gt;
        ogv: &amp;quot;video/ogg&amp;quot;,&lt;br /&gt;
        ogg: &amp;quot;video/ogg&amp;quot;,&lt;br /&gt;
        mov: &amp;quot;video/quicktime&amp;quot;,&lt;br /&gt;
      };&lt;br /&gt;
      const mimeType = mimeTypes[ext] || &amp;quot;video/mp4&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
      const src = document.createElement(&amp;quot;source&amp;quot;);&lt;br /&gt;
      src.src = videoURL;&lt;br /&gt;
      src.type = mimeType;&lt;br /&gt;
      v.appendChild(src);&lt;br /&gt;
&lt;br /&gt;
      // Fallback para Safari/iOS mais antigos&lt;br /&gt;
      v.setAttribute(&amp;quot;webkit-playsinline&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
      v.setAttribute(&amp;quot;x-webkit-airplay&amp;quot;, &amp;quot;allow&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      // Tratamento silencioso de erros - marca como falhado e não tenta mais&lt;br /&gt;
      let errorHandled = false;&lt;br /&gt;
      v.addEventListener(&lt;br /&gt;
        &amp;quot;error&amp;quot;,&lt;br /&gt;
        (e) =&amp;gt; {&lt;br /&gt;
          if (errorHandled) return;&lt;br /&gt;
          errorHandled = true;&lt;br /&gt;
          // Marca o vídeo como falhado para não tentar carregar novamente&lt;br /&gt;
          failedVideosCache.add(videoURL);&lt;br /&gt;
          // Remove o vídeo do DOM se estiver lá&lt;br /&gt;
          if (v.parentNode) {&lt;br /&gt;
            v.parentNode.removeChild(v);&lt;br /&gt;
          }&lt;br /&gt;
          // Avisa apenas uma vez sobre vídeos faltantes&lt;br /&gt;
          if (!missingVideosReported.has(videoURL)) {&lt;br /&gt;
            missingVideosReported.add(videoURL);&lt;br /&gt;
            // Extrai nome do arquivo da URL para o aviso&lt;br /&gt;
            const fileName =&lt;br /&gt;
              videoURL.split(&amp;quot;/&amp;quot;).pop().split(&amp;quot;?&amp;quot;)[0] || videoURL;&lt;br /&gt;
            console.info(&lt;br /&gt;
              `[Skills] Vídeo não encontrado na wiki: ${decodeURIComponent(&lt;br /&gt;
                fileName&lt;br /&gt;
              )}. Este aviso aparecerá apenas uma vez.`&lt;br /&gt;
            );&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        { once: true }&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
      return v;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Função recursiva para carregar TODOS os vídeos de subskills (incluindo sub-subskills)&lt;br /&gt;
    function preloadSubskillVideosRecursively(&lt;br /&gt;
      subs,&lt;br /&gt;
      parentIdx,&lt;br /&gt;
      parentPath = &amp;quot;&amp;quot;&lt;br /&gt;
    ) {&lt;br /&gt;
      const vb = getVideoBox();&lt;br /&gt;
      if (!vb || !Array.isArray(subs)) return 0;&lt;br /&gt;
      let createdCount = 0;&lt;br /&gt;
      subs.forEach((s) =&amp;gt; {&lt;br /&gt;
        const subName = (s.name || s.n || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
        const currentPath = parentPath ? `${parentPath}:${subName}` : subName;&lt;br /&gt;
&lt;br /&gt;
        // Vídeo normal da subskill&lt;br /&gt;
        if (s.video &amp;amp;&amp;amp; s.video.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
          const key = `sub:${parentIdx}:${currentPath}`;&lt;br /&gt;
          if (!subskillVideosCache.has(key)) {&lt;br /&gt;
            const videoURL = normalizeFileURL(s.video);&lt;br /&gt;
            if (&lt;br /&gt;
              videoURL &amp;amp;&amp;amp;&lt;br /&gt;
              videoURL.trim() !== &amp;quot;&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
              !failedVideosCache.has(videoURL)&lt;br /&gt;
            ) {&lt;br /&gt;
              const v = createVideoElement(videoURL, {&lt;br /&gt;
                sub: &amp;quot;1&amp;quot;,&lt;br /&gt;
                parentIndex: parentIdx,&lt;br /&gt;
                subName: currentPath,&lt;br /&gt;
                cacheKey: key,&lt;br /&gt;
              });&lt;br /&gt;
              if (v) {&lt;br /&gt;
                // Só adiciona se o vídeo foi criado (não estava no cache de falhas)&lt;br /&gt;
                vb.appendChild(v);&lt;br /&gt;
                subskillVideosCache.set(key, v);&lt;br /&gt;
                createdCount++;&lt;br /&gt;
                // FORÇA carregamento imediatamente (apenas uma vez)&lt;br /&gt;
                v.load();&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Vídeo de weapon da subskill (sempre carrega, independente do toggle)&lt;br /&gt;
        if (&lt;br /&gt;
          s.weapon &amp;amp;&amp;amp;&lt;br /&gt;
          typeof s.weapon === &amp;quot;object&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
          s.weapon.video &amp;amp;&amp;amp;&lt;br /&gt;
          s.weapon.video.trim() !== &amp;quot;&amp;quot;&lt;br /&gt;
        ) {&lt;br /&gt;
          const weaponKey = `sub:${parentIdx}:${currentPath}:weapon`;&lt;br /&gt;
          if (!subskillVideosCache.has(weaponKey)) {&lt;br /&gt;
            const weaponVideoURL = normalizeFileURL(s.weapon.video);&lt;br /&gt;
            if (&lt;br /&gt;
              weaponVideoURL &amp;amp;&amp;amp;&lt;br /&gt;
              weaponVideoURL.trim() !== &amp;quot;&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
              !failedVideosCache.has(weaponVideoURL)&lt;br /&gt;
            ) {&lt;br /&gt;
              const v = createVideoElement(weaponVideoURL, {&lt;br /&gt;
                sub: &amp;quot;1&amp;quot;,&lt;br /&gt;
                parentIndex: parentIdx,&lt;br /&gt;
                subName: currentPath,&lt;br /&gt;
                weapon: &amp;quot;1&amp;quot;,&lt;br /&gt;
                cacheKey: weaponKey,&lt;br /&gt;
              });&lt;br /&gt;
              if (v) {&lt;br /&gt;
                // Só adiciona se o vídeo foi criado (não estava no cache de falhas)&lt;br /&gt;
                vb.appendChild(v);&lt;br /&gt;
                subskillVideosCache.set(weaponKey, v);&lt;br /&gt;
                createdCount++;&lt;br /&gt;
                // FORÇA carregamento imediatamente (apenas uma vez)&lt;br /&gt;
                v.load();&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // RECURSÃO: processa sub-subskills (SEMPRE processa, mesmo se o vídeo já estiver no cache)&lt;br /&gt;
        if (Array.isArray(s.subs) &amp;amp;&amp;amp; s.subs.length &amp;gt; 0) {&lt;br /&gt;
          createdCount += preloadSubskillVideosRecursively(&lt;br /&gt;
            s.subs,&lt;br /&gt;
            parentIdx,&lt;br /&gt;
            currentPath&lt;br /&gt;
          );&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
      return createdCount;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function precreateSubskillVideos() {&lt;br /&gt;
      if (!getVideoBox()) return;&lt;br /&gt;
      let createdCount = 0;&lt;br /&gt;
      iconItems.forEach((parentIcon) =&amp;gt; {&lt;br /&gt;
        const subs = getCachedJSON(parentIcon, &amp;quot;subs&amp;quot;);&lt;br /&gt;
        if (!Array.isArray(subs)) return;&lt;br /&gt;
        const parentIdx = parentIcon.dataset.index || &amp;quot;&amp;quot;;&lt;br /&gt;
        createdCount += preloadSubskillVideosRecursively(subs, parentIdx);&lt;br /&gt;
      });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Função para pré-carregar TODOS os vídeos recursivamente (principais, subskills, weapon, sub-subskills)&lt;br /&gt;
    function preloadAllVideosRecursively() {&lt;br /&gt;
      const vb = getVideoBox();&lt;br /&gt;
      if (!vb || !iconItems.length) return;&lt;br /&gt;
&lt;br /&gt;
      // 1. Carregar vídeos de skills principais&lt;br /&gt;
      iconItems.forEach((el) =&amp;gt; {&lt;br /&gt;
        const idx = el.dataset.index || &amp;quot;&amp;quot;;&lt;br /&gt;
        if (!idx) return;&lt;br /&gt;
&lt;br /&gt;
        // Vídeo normal da skill principal&lt;br /&gt;
        // form_switch com form_videos: NÃO pré-carrega o vídeo base (ex: Change Form-Video.mp4) pois pode não existir&lt;br /&gt;
        const isFormSwitchPreload =&lt;br /&gt;
          el.dataset.formSwitch === &amp;quot;true&amp;quot; ||&lt;br /&gt;
          el.getAttribute(&amp;quot;data-form-switch&amp;quot;) === &amp;quot;true&amp;quot;;&lt;br /&gt;
        const hasFormVideos =&lt;br /&gt;
          (el.dataset.formVideos || el.getAttribute(&amp;quot;data-form-videos&amp;quot;) || &amp;quot;&amp;quot;).trim() !== &amp;quot;&amp;quot;;&lt;br /&gt;
        const skipBaseVideo = isFormSwitchPreload &amp;amp;&amp;amp; hasFormVideos;&lt;br /&gt;
&lt;br /&gt;
        let src = &amp;quot;&amp;quot;;&lt;br /&gt;
        if (!skipBaseVideo) {&lt;br /&gt;
          src = (el.dataset.videoFile || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
          if (!src) {&lt;br /&gt;
            const videoAttr = (el.dataset.video || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
            if (videoAttr) {&lt;br /&gt;
              src = videoAttr.includes(&amp;quot;/&amp;quot;) || videoAttr.startsWith(&amp;quot;http&amp;quot;)&lt;br /&gt;
                ? videoAttr&lt;br /&gt;
                : videoAttr;&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        if (src &amp;amp;&amp;amp; !videosCache.has(idx)) {&lt;br /&gt;
          const videoURL = normalizeFileURL(src);&lt;br /&gt;
          if (videoURL &amp;amp;&amp;amp; !failedVideosCache.has(videoURL)) {&lt;br /&gt;
            const v = createVideoElement(videoURL, {&lt;br /&gt;
              index: idx,&lt;br /&gt;
            });&lt;br /&gt;
            if (v) {&lt;br /&gt;
              // Só adiciona se o vídeo foi criado (não estava no cache de falhas)&lt;br /&gt;
              totalVideos++;&lt;br /&gt;
              v.style.maxWidth = &amp;quot;100%&amp;quot;;&lt;br /&gt;
              v.addEventListener(&lt;br /&gt;
                &amp;quot;canplaythrough&amp;quot;,&lt;br /&gt;
                () =&amp;gt; {&lt;br /&gt;
                  loadedVideos++;&lt;br /&gt;
                  if (!userHasInteracted &amp;amp;&amp;amp; loadedVideos === 1) {&lt;br /&gt;
                    try {&lt;br /&gt;
                      v.pause();&lt;br /&gt;
                      v.currentTime = 0;&lt;br /&gt;
                    } catch (e) { }&lt;br /&gt;
                  }&lt;br /&gt;
                  if (loadedVideos === totalVideos) autoplay = true;&lt;br /&gt;
                },&lt;br /&gt;
                {&lt;br /&gt;
                  once: true,&lt;br /&gt;
                }&lt;br /&gt;
              );&lt;br /&gt;
              v.addEventListener(&lt;br /&gt;
                &amp;quot;error&amp;quot;,&lt;br /&gt;
                () =&amp;gt; {&lt;br /&gt;
                  loadedVideos++;&lt;br /&gt;
                  if (loadedVideos === totalVideos) autoplay = true;&lt;br /&gt;
                },&lt;br /&gt;
                {&lt;br /&gt;
                  once: true,&lt;br /&gt;
                }&lt;br /&gt;
              );&lt;br /&gt;
              vb.appendChild(v);&lt;br /&gt;
              videosCache.set(idx, v);&lt;br /&gt;
              nestedVideoElByIcon.set(el, v);&lt;br /&gt;
              // Força carregamento imediatamente (apenas uma vez)&lt;br /&gt;
              v.load();&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // form_switch: pré-carrega TODOS os vídeos de form_videos para transições&lt;br /&gt;
        const isFormSwitch =&lt;br /&gt;
          el.dataset.formSwitch === &amp;quot;true&amp;quot; ||&lt;br /&gt;
          el.getAttribute(&amp;quot;data-form-switch&amp;quot;) === &amp;quot;true&amp;quot;;&lt;br /&gt;
        if (isFormSwitch) {&lt;br /&gt;
          const formVideosRaw =&lt;br /&gt;
            el.dataset.formVideos || el.getAttribute(&amp;quot;data-form-videos&amp;quot;);&lt;br /&gt;
          if (formVideosRaw) {&lt;br /&gt;
            try {&lt;br /&gt;
              const videos = JSON.parse(formVideosRaw);&lt;br /&gt;
              Object.keys(videos).forEach((formName) =&amp;gt; {&lt;br /&gt;
                const videoFile = videos[formName];&lt;br /&gt;
                if (videoFile &amp;amp;&amp;amp; videoFile.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                  const videoKey = idx + &amp;quot;:&amp;quot; + videoFile;&lt;br /&gt;
                  if (!videosCache.has(videoKey)) {&lt;br /&gt;
                    const videoURL = normalizeFileURL(videoFile);&lt;br /&gt;
                    if (videoURL &amp;amp;&amp;amp; !failedVideosCache.has(videoURL)) {&lt;br /&gt;
                      const v = createVideoElement(videoURL, { index: idx });&lt;br /&gt;
                      if (v) {&lt;br /&gt;
                        totalVideos++;&lt;br /&gt;
                        v.addEventListener(&lt;br /&gt;
                          &amp;quot;canplaythrough&amp;quot;,&lt;br /&gt;
                          () =&amp;gt; {&lt;br /&gt;
                            loadedVideos++;&lt;br /&gt;
                            if (loadedVideos === totalVideos) autoplay = true;&lt;br /&gt;
                          },&lt;br /&gt;
                          { once: true }&lt;br /&gt;
                        );&lt;br /&gt;
                        v.addEventListener(&lt;br /&gt;
                          &amp;quot;error&amp;quot;,&lt;br /&gt;
                          () =&amp;gt; {&lt;br /&gt;
                            loadedVideos++;&lt;br /&gt;
                            if (loadedVideos === totalVideos) autoplay = true;&lt;br /&gt;
                          },&lt;br /&gt;
                          { once: true }&lt;br /&gt;
                        );&lt;br /&gt;
                        vb.appendChild(v);&lt;br /&gt;
                        videosCache.set(videoKey, v);&lt;br /&gt;
                        v.load();&lt;br /&gt;
                      }&lt;br /&gt;
                    }&lt;br /&gt;
                  }&lt;br /&gt;
                }&lt;br /&gt;
              });&lt;br /&gt;
            } catch (e) {&lt;br /&gt;
              console.warn(&amp;quot;[Forms] Erro ao pré-carregar form_videos:&amp;quot;, e);&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Vídeo de weapon (sempre carrega, independente do toggle)&lt;br /&gt;
        const weaponData = getCachedJSON(el, &amp;quot;weapon&amp;quot;);&lt;br /&gt;
        if (&lt;br /&gt;
          weaponData &amp;amp;&amp;amp;&lt;br /&gt;
          weaponData.video &amp;amp;&amp;amp;&lt;br /&gt;
          weaponData.video.trim() !== &amp;quot;&amp;quot;&lt;br /&gt;
        ) {&lt;br /&gt;
          const weaponKey = `weapon:${idx}:${(&lt;br /&gt;
            el.dataset.nome ||&lt;br /&gt;
            el.dataset.name ||&lt;br /&gt;
            &amp;quot;&amp;quot;&lt;br /&gt;
          ).trim()}`;&lt;br /&gt;
          if (!videosCache.has(weaponKey)) {&lt;br /&gt;
            const weaponVideoURL = normalizeFileURL(weaponData.video);&lt;br /&gt;
            if (weaponVideoURL &amp;amp;&amp;amp; !failedVideosCache.has(weaponVideoURL)) {&lt;br /&gt;
              const v = createVideoElement(weaponVideoURL, {&lt;br /&gt;
                index: idx,&lt;br /&gt;
                weapon: &amp;quot;1&amp;quot;,&lt;br /&gt;
              });&lt;br /&gt;
              if (v) {&lt;br /&gt;
                // Só adiciona se o vídeo foi criado (não estava no cache de falhas)&lt;br /&gt;
                totalVideos++;&lt;br /&gt;
                v.style.maxWidth = &amp;quot;100%&amp;quot;;&lt;br /&gt;
                v.addEventListener(&lt;br /&gt;
                  &amp;quot;canplaythrough&amp;quot;,&lt;br /&gt;
                  () =&amp;gt; {&lt;br /&gt;
                    loadedVideos++;&lt;br /&gt;
                    if (loadedVideos === totalVideos) autoplay = true;&lt;br /&gt;
                  },&lt;br /&gt;
                  {&lt;br /&gt;
                    once: true,&lt;br /&gt;
                  }&lt;br /&gt;
                );&lt;br /&gt;
                v.addEventListener(&lt;br /&gt;
                  &amp;quot;error&amp;quot;,&lt;br /&gt;
                  () =&amp;gt; {&lt;br /&gt;
                    loadedVideos++;&lt;br /&gt;
                    if (loadedVideos === totalVideos) autoplay = true;&lt;br /&gt;
                  },&lt;br /&gt;
                  {&lt;br /&gt;
                    once: true,&lt;br /&gt;
                  }&lt;br /&gt;
                );&lt;br /&gt;
                vb.appendChild(v);&lt;br /&gt;
                videosCache.set(weaponKey, v);&lt;br /&gt;
                // Força carregamento imediatamente (apenas uma vez)&lt;br /&gt;
                v.load();&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      // 2. Carregar vídeos de subskills (recursivamente)&lt;br /&gt;
      precreateSubskillVideos();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Função para pré-carregar TODOS os ícones recursivamente&lt;br /&gt;
    function preloadAllIconsRecursively() {&lt;br /&gt;
      const iconCache = new Set();&lt;br /&gt;
&lt;br /&gt;
      // Função recursiva para processar subskills&lt;br /&gt;
      function processSubskillsRecursively(subs) {&lt;br /&gt;
        if (!Array.isArray(subs)) return;&lt;br /&gt;
        subs.forEach((s) =&amp;gt; {&lt;br /&gt;
          const icon = (s.icon || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
          if (icon) {&lt;br /&gt;
            const iconURL = normalizeFileURL(icon);&lt;br /&gt;
            if (iconURL &amp;amp;&amp;amp; !iconCache.has(iconURL)) {&lt;br /&gt;
              iconCache.add(iconURL);&lt;br /&gt;
              const img = new Image();&lt;br /&gt;
              img.decoding = &amp;quot;async&amp;quot;;&lt;br /&gt;
              img.loading = &amp;quot;eager&amp;quot;;&lt;br /&gt;
              img.referrerPolicy = &amp;quot;same-origin&amp;quot;;&lt;br /&gt;
              img.src = iconURL;&lt;br /&gt;
              imagePreloadCache.set(iconURL, img);&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
          // Recursão para sub-subskills&lt;br /&gt;
          if (Array.isArray(s.subs)) {&lt;br /&gt;
            processSubskillsRecursively(s.subs);&lt;br /&gt;
          }&lt;br /&gt;
        });&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Carregar ícones de skills principais&lt;br /&gt;
      iconItems.forEach((el) =&amp;gt; {&lt;br /&gt;
        const img = el.querySelector(&amp;quot;img&amp;quot;);&lt;br /&gt;
        if (img &amp;amp;&amp;amp; img.src) {&lt;br /&gt;
          const iconURL = img.src;&lt;br /&gt;
          if (iconURL &amp;amp;&amp;amp; !iconCache.has(iconURL)) {&lt;br /&gt;
            iconCache.add(iconURL);&lt;br /&gt;
            // Já está no DOM, mas força pré-carregamento&lt;br /&gt;
            const preloadImg = new Image();&lt;br /&gt;
            preloadImg.decoding = &amp;quot;async&amp;quot;;&lt;br /&gt;
            preloadImg.loading = &amp;quot;eager&amp;quot;;&lt;br /&gt;
            preloadImg.referrerPolicy = &amp;quot;same-origin&amp;quot;;&lt;br /&gt;
            preloadImg.src = iconURL;&lt;br /&gt;
            imagePreloadCache.set(iconURL, preloadImg);&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Carregar ícones de subskills recursivamente&lt;br /&gt;
        const subs = getCachedJSON(el, &amp;quot;subs&amp;quot;);&lt;br /&gt;
        if (Array.isArray(subs)) {&lt;br /&gt;
          processSubskillsRecursively(subs);&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Função principal que carrega TUDO imediatamente&lt;br /&gt;
    function preloadAllAssets() {&lt;br /&gt;
      // Carregar TUDO imediatamente - sem lazy loading&lt;br /&gt;
      // 1. Carregar TODOS os vídeos (principais, subskills, weapon, sub-subskills)&lt;br /&gt;
      preloadAllVideosRecursively();&lt;br /&gt;
&lt;br /&gt;
      // 2. Carregar TODOS os ícones (principais, subskills, sub-subskills)&lt;br /&gt;
      preloadAllIconsRecursively();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Executa pré-carregamento imediatamente&lt;br /&gt;
    preloadAllAssets();&lt;br /&gt;
    function wireTooltipsForNewIcons() {&lt;br /&gt;
      const tip = document.querySelector(&amp;quot;.skill-tooltip&amp;quot;);&lt;br /&gt;
      if (!tip) return;&lt;br /&gt;
      let lockUntil2 = 0;&lt;br /&gt;
      Array.from(document.querySelectorAll(&amp;quot;.icon-bar .skill-icon&amp;quot;)).forEach(&lt;br /&gt;
        (icon) =&amp;gt; {&lt;br /&gt;
          if (&lt;br /&gt;
            icon.dataset.weaponToggle === &amp;quot;1&amp;quot; ||&lt;br /&gt;
            icon.classList.contains(&amp;quot;weapon-bar-toggle&amp;quot;)&lt;br /&gt;
          )&lt;br /&gt;
            return;&lt;br /&gt;
          if (icon.dataset.tipwired) return;&lt;br /&gt;
          icon.dataset.tipwired = &amp;quot;1&amp;quot;;&lt;br /&gt;
          const label =&lt;br /&gt;
            icon.dataset.nome || icon.dataset.name || icon.title || &amp;quot;&amp;quot;;&lt;br /&gt;
          if (label &amp;amp;&amp;amp; !icon.hasAttribute(&amp;quot;aria-label&amp;quot;))&lt;br /&gt;
            icon.setAttribute(&amp;quot;aria-label&amp;quot;, label);&lt;br /&gt;
          if (icon.hasAttribute(&amp;quot;title&amp;quot;)) icon.removeAttribute(&amp;quot;title&amp;quot;);&lt;br /&gt;
          const img = icon.querySelector(&amp;quot;img&amp;quot;);&lt;br /&gt;
          if (img) {&lt;br /&gt;
            const imgAlt = img.getAttribute(&amp;quot;alt&amp;quot;) || &amp;quot;&amp;quot;;&lt;br /&gt;
            const imgTitle = img.getAttribute(&amp;quot;title&amp;quot;) || &amp;quot;&amp;quot;;&lt;br /&gt;
            if (!label &amp;amp;&amp;amp; (imgAlt || imgTitle))&lt;br /&gt;
              icon.setAttribute(&amp;quot;aria-label&amp;quot;, imgAlt || imgTitle);&lt;br /&gt;
            img.setAttribute(&amp;quot;alt&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
            if (img.hasAttribute(&amp;quot;title&amp;quot;)) img.removeAttribute(&amp;quot;title&amp;quot;);&lt;br /&gt;
          }&lt;br /&gt;
          const measureAndPos = (el) =&amp;gt; {&lt;br /&gt;
            if (!el || tip.getAttribute(&amp;quot;aria-hidden&amp;quot;) === &amp;quot;true&amp;quot;) return;&lt;br /&gt;
            tip.style.left = &amp;quot;0px&amp;quot;;&lt;br /&gt;
            tip.style.top = &amp;quot;0px&amp;quot;;&lt;br /&gt;
            const rect = el.getBoundingClientRect();&lt;br /&gt;
            const tr = tip.getBoundingClientRect();&lt;br /&gt;
            let left = Math.round(rect.left + (rect.width - tr.width) / 2);&lt;br /&gt;
            left = Math.max(&lt;br /&gt;
              8,&lt;br /&gt;
              Math.min(left, window.innerWidth - tr.width - 8)&lt;br /&gt;
            );&lt;br /&gt;
            const coarse =&lt;br /&gt;
              (window.matchMedia &amp;amp;&amp;amp; matchMedia(&amp;quot;(pointer: coarse)&amp;quot;).matches) ||&lt;br /&gt;
              window.innerWidth &amp;lt;= 600;&lt;br /&gt;
            let top = coarse&lt;br /&gt;
              ? Math.round(rect.bottom + 10)&lt;br /&gt;
              : Math.round(rect.top - tr.height - 8);&lt;br /&gt;
            if (top &amp;lt; 8) top = Math.round(rect.bottom + 10);&lt;br /&gt;
            tip.style.left = left + &amp;quot;px&amp;quot;;&lt;br /&gt;
            tip.style.top = top + &amp;quot;px&amp;quot;;&lt;br /&gt;
          };&lt;br /&gt;
          const show = (el, text) =&amp;gt; {&lt;br /&gt;
            tip.textContent = text || &amp;quot;&amp;quot;;&lt;br /&gt;
            tip.setAttribute(&amp;quot;aria-hidden&amp;quot;, &amp;quot;false&amp;quot;);&lt;br /&gt;
            measureAndPos(el);&lt;br /&gt;
            tip.style.opacity = &amp;quot;1&amp;quot;;&lt;br /&gt;
          };&lt;br /&gt;
          const hide = () =&amp;gt; {&lt;br /&gt;
            tip.setAttribute(&amp;quot;aria-hidden&amp;quot;, &amp;quot;true&amp;quot;);&lt;br /&gt;
            tip.style.opacity = &amp;quot;0&amp;quot;;&lt;br /&gt;
            tip.style.left = &amp;quot;-9999px&amp;quot;;&lt;br /&gt;
            tip.style.top = &amp;quot;-9999px&amp;quot;;&lt;br /&gt;
          };&lt;br /&gt;
          icon.addEventListener(&amp;quot;mouseenter&amp;quot;, () =&amp;gt;&lt;br /&gt;
            show(icon, icon.dataset.nome || icon.dataset.name || &amp;quot;&amp;quot;)&lt;br /&gt;
          );&lt;br /&gt;
          icon.addEventListener(&amp;quot;mousemove&amp;quot;, () =&amp;gt; {&lt;br /&gt;
            if (performance.now() &amp;gt;= lockUntil2) measureAndPos(icon);&lt;br /&gt;
          });&lt;br /&gt;
          icon.addEventListener(&amp;quot;click&amp;quot;, () =&amp;gt; {&lt;br /&gt;
            lockUntil2 = performance.now() + 240;&lt;br /&gt;
            measureAndPos(icon);&lt;br /&gt;
          });&lt;br /&gt;
          icon.addEventListener(&amp;quot;mouseleave&amp;quot;, hide);&lt;br /&gt;
        }&lt;br /&gt;
      );&lt;br /&gt;
    }&lt;br /&gt;
    function showVideoForIcon(el) {&lt;br /&gt;
      userHasInteracted = true;&lt;br /&gt;
      const videoBox = getVideoBox();&lt;br /&gt;
      if (!videoBox) return;&lt;br /&gt;
      const effectiveVideo = getEffectiveSkillVideoFromIcon(el);&lt;br /&gt;
      if (!effectiveVideo || effectiveVideo.trim() === &amp;quot;&amp;quot;) {&lt;br /&gt;
        videoBox.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      const videoURL = normalizeFileURL(effectiveVideo);&lt;br /&gt;
      if (!videoURL || videoURL.trim() === &amp;quot;&amp;quot;) {&lt;br /&gt;
        videoBox.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      Array.from(videoBox.querySelectorAll(&amp;quot;video.skill-video&amp;quot;)).forEach(&lt;br /&gt;
        (v) =&amp;gt; {&lt;br /&gt;
          try {&lt;br /&gt;
            v.pause();&lt;br /&gt;
          } catch (e) { }&lt;br /&gt;
          v.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
      );&lt;br /&gt;
      if (window.__subskills) window.__subskills.hideAll?.(videoBox);&lt;br /&gt;
      const hasIdx = !!el.dataset.index;&lt;br /&gt;
      const weaponOn = globalWeaponEnabled;&lt;br /&gt;
      const weaponData = getWeaponDataForIcon(el);&lt;br /&gt;
      const isWeaponVideo =&lt;br /&gt;
        weaponOn &amp;amp;&amp;amp;&lt;br /&gt;
        weaponData &amp;amp;&amp;amp;&lt;br /&gt;
        weaponData.video &amp;amp;&amp;amp;&lt;br /&gt;
        weaponData.video.trim() !== &amp;quot;&amp;quot;;&lt;br /&gt;
      const effectVideo = getEffectVideoForIcon(el);&lt;br /&gt;
      const isEffectVideo = !!(effectVideo &amp;amp;&amp;amp; effectVideo.trim() !== &amp;quot;&amp;quot;);&lt;br /&gt;
      const effectKey = isEffectVideo&lt;br /&gt;
        ? getEffectVideoKey(el, effectiveVideo)&lt;br /&gt;
        : &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
      // console.log('[Skills] showVideoForIcon chamado', {&lt;br /&gt;
      //     skillName: el.dataset.nome || el.dataset.name,&lt;br /&gt;
      //     weaponOn,&lt;br /&gt;
      //     isWeaponVideo,&lt;br /&gt;
      //     effectiveVideo: getEffectiveSkillVideoFromIcon(el)&lt;br /&gt;
      // });&lt;br /&gt;
      const videoKey = isWeaponVideo&lt;br /&gt;
        ? `weapon:${getWeaponKey(el)}`&lt;br /&gt;
        : isEffectVideo&lt;br /&gt;
          ? effectKey&lt;br /&gt;
          : el.dataset.index || &amp;quot;&amp;quot;;&lt;br /&gt;
      const isSubskill = !hasIdx || el.dataset.nested === &amp;quot;1&amp;quot;;&lt;br /&gt;
      const parentIdx = el.dataset.parentIndex || &amp;quot;&amp;quot;;&lt;br /&gt;
      const subName =&lt;br /&gt;
        el.dataset.subName || el.dataset.nome || el.dataset.name || &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
      if (&lt;br /&gt;
        hasIdx &amp;amp;&amp;amp;&lt;br /&gt;
        !isWeaponVideo &amp;amp;&amp;amp;&lt;br /&gt;
        !isEffectVideo &amp;amp;&amp;amp;&lt;br /&gt;
        videosCache.has(el.dataset.index)&lt;br /&gt;
      ) {&lt;br /&gt;
        const v = videosCache.get(el.dataset.index);&lt;br /&gt;
        // Verifica se o vídeo cacheado corresponde ao vídeo atual da skill&lt;br /&gt;
        // (ao trocar de form, o índice é reutilizado mas o vídeo muda)&lt;br /&gt;
        const cachedSrc = v.querySelector(&amp;quot;source&amp;quot;)?.getAttribute(&amp;quot;src&amp;quot;) || &amp;quot;&amp;quot;;&lt;br /&gt;
        const currentVideoFile = (el.dataset.videoFile || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
        const currentVideoURL = currentVideoFile ? normalizeFileURL(currentVideoFile) : &amp;quot;&amp;quot;;&lt;br /&gt;
        const decodeCached = decodeURIComponent(cachedSrc.split(&amp;quot;/&amp;quot;).pop().split(&amp;quot;?&amp;quot;)[0] || &amp;quot;&amp;quot;);&lt;br /&gt;
        const decodeTarget = decodeURIComponent((currentVideoURL || currentVideoFile).split(&amp;quot;/&amp;quot;).pop().split(&amp;quot;?&amp;quot;)[0] || &amp;quot;&amp;quot;);&lt;br /&gt;
        const srcMismatch = decodeTarget &amp;amp;&amp;amp; decodeCached &amp;amp;&amp;amp; decodeCached !== decodeTarget;&lt;br /&gt;
        if (!srcMismatch) {&lt;br /&gt;
          videoBox.style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
          v.style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
          try {&lt;br /&gt;
            v.currentTime = 0;&lt;br /&gt;
          } catch (e) { }&lt;br /&gt;
          const suppress = document.body.dataset.suppressSkillPlay === &amp;quot;1&amp;quot;;&lt;br /&gt;
          if (!suppress) {&lt;br /&gt;
            v.play().catch(() =&amp;gt; { });&lt;br /&gt;
          } else {&lt;br /&gt;
            try {&lt;br /&gt;
              v.pause();&lt;br /&gt;
            } catch (e) { }&lt;br /&gt;
          }&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
        // Vídeo não corresponde - remove do cache e do DOM&lt;br /&gt;
        v.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
        try { v.pause(); } catch (e) { }&lt;br /&gt;
        if (v.parentNode) v.parentNode.removeChild(v);&lt;br /&gt;
        videosCache.delete(el.dataset.index);&lt;br /&gt;
      }&lt;br /&gt;
      // Para form_switch, permite criação dinâmica de vídeos (transições de forma)&lt;br /&gt;
      // Vídeos normais devem estar pré-carregados&lt;br /&gt;
      const isFormSwitch =&lt;br /&gt;
        el.dataset.formSwitch === &amp;quot;true&amp;quot; ||&lt;br /&gt;
        el.getAttribute(&amp;quot;data-form-switch&amp;quot;) === &amp;quot;true&amp;quot;;&lt;br /&gt;
      let v = null;&lt;br /&gt;
      if (isWeaponVideo) {&lt;br /&gt;
        const weaponKeyFull = `weapon:${getWeaponKey(el)}`;&lt;br /&gt;
        v = videosCache.get(weaponKeyFull);&lt;br /&gt;
        if (!v &amp;amp;&amp;amp; isSubskill &amp;amp;&amp;amp; parentIdx &amp;amp;&amp;amp; subName) {&lt;br /&gt;
          // Tenta buscar vídeo de weapon de subskill&lt;br /&gt;
          // O cache usa o formato: sub:${parentIdx}:${path}:weapon onde path NÃO inclui o nome da skill principal&lt;br /&gt;
          // O subName agora já está no formato correto (sem nome da skill principal)&lt;br /&gt;
&lt;br /&gt;
          // Tenta buscar diretamente com o subName&lt;br /&gt;
          let subWeaponKey = `sub:${parentIdx}:${subName}:weapon`;&lt;br /&gt;
          v = subskillVideosCache.get(subWeaponKey);&lt;br /&gt;
&lt;br /&gt;
          // Se não encontrou, tenta buscar recursivamente&lt;br /&gt;
          if (!v) {&lt;br /&gt;
            const basePattern = `sub:${parentIdx}:`;&lt;br /&gt;
            const weaponSuffix = &amp;quot;:weapon&amp;quot;;&lt;br /&gt;
            const searchName = subName.split(&amp;quot;:&amp;quot;).pop();&lt;br /&gt;
            for (const [key, video] of subskillVideosCache.entries()) {&lt;br /&gt;
              if (key.startsWith(basePattern) &amp;amp;&amp;amp; key.endsWith(weaponSuffix)) {&lt;br /&gt;
                const pathInKey = key.substring(&lt;br /&gt;
                  basePattern.length,&lt;br /&gt;
                  key.length - weaponSuffix.length&lt;br /&gt;
                );&lt;br /&gt;
                // Tenta match exato, ou se termina com o nome da skill&lt;br /&gt;
                if (&lt;br /&gt;
                  pathInKey === subName ||&lt;br /&gt;
                  pathInKey.endsWith(`:${searchName}`) ||&lt;br /&gt;
                  pathInKey === searchName&lt;br /&gt;
                ) {&lt;br /&gt;
                  v = video;&lt;br /&gt;
                  break;&lt;br /&gt;
                }&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        if (!v) {&lt;br /&gt;
          // Tenta buscar pelo padrão antigo também&lt;br /&gt;
          v = videoBox.querySelector(`video[data-weapon-key=&amp;quot;${videoKey}&amp;quot;]`);&lt;br /&gt;
        }&lt;br /&gt;
      } else if (isEffectVideo &amp;amp;&amp;amp; effectKey) {&lt;br /&gt;
        v = videosCache.get(effectKey);&lt;br /&gt;
      } else {&lt;br /&gt;
        if (isSubskill &amp;amp;&amp;amp; parentIdx &amp;amp;&amp;amp; subName) {&lt;br /&gt;
          // Busca vídeo de subskill no cache correto&lt;br /&gt;
          // O cache usa o formato: sub:${parentIdx}:${path} onde path NÃO inclui o nome da skill principal&lt;br /&gt;
          // O subName agora já está no formato correto (sem nome da skill principal)&lt;br /&gt;
&lt;br /&gt;
          // Tenta buscar diretamente com o subName&lt;br /&gt;
          let subKey = `sub:${parentIdx}:${subName}`;&lt;br /&gt;
          v = subskillVideosCache.get(subKey);&lt;br /&gt;
&lt;br /&gt;
          // Se não encontrou, tenta buscar recursivamente todas as chaves que começam com o padrão&lt;br /&gt;
          // Isso é útil caso haja alguma diferença no formato do caminho&lt;br /&gt;
          if (!v) {&lt;br /&gt;
            const basePattern = `sub:${parentIdx}:`;&lt;br /&gt;
            const searchName = subName.split(&amp;quot;:&amp;quot;).pop(); // Último segmento do caminho&lt;br /&gt;
            // Tenta também buscar apenas pelo último segmento (útil para sub-subskills)&lt;br /&gt;
            const lastSegmentKey = `sub:${parentIdx}:${searchName}`;&lt;br /&gt;
            v = subskillVideosCache.get(lastSegmentKey);&lt;br /&gt;
&lt;br /&gt;
            // Se ainda não encontrou, faz busca mais ampla&lt;br /&gt;
            if (!v) {&lt;br /&gt;
              for (const [key, video] of subskillVideosCache.entries()) {&lt;br /&gt;
                if (key.startsWith(basePattern)) {&lt;br /&gt;
                  const pathInKey = key.substring(basePattern.length);&lt;br /&gt;
                  // Tenta match exato, ou se termina com o nome da skill, ou se contém o caminho completo&lt;br /&gt;
                  if (&lt;br /&gt;
                    pathInKey === subName ||&lt;br /&gt;
                    pathInKey.endsWith(`:${searchName}`) ||&lt;br /&gt;
                    pathInKey === searchName ||&lt;br /&gt;
                    (subName.includes(&amp;quot;:&amp;quot;) &amp;amp;&amp;amp; pathInKey.includes(subName)) ||&lt;br /&gt;
                    (subName.includes(&amp;quot;:&amp;quot;) &amp;amp;&amp;amp;&lt;br /&gt;
                      pathInKey.endsWith(&lt;br /&gt;
                        subName.split(&amp;quot;:&amp;quot;).slice(-2).join(&amp;quot;:&amp;quot;)&lt;br /&gt;
                      ))&lt;br /&gt;
                  ) {&lt;br /&gt;
                    v = video;&lt;br /&gt;
                    break;&lt;br /&gt;
                  }&lt;br /&gt;
                }&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        } else {&lt;br /&gt;
          v = videosCache.get(el.dataset.index);&lt;br /&gt;
          if (!v) {&lt;br /&gt;
            v = nestedVideoElByIcon.get(el);&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Se vídeo não foi encontrado no cache, verifica se falhou antes&lt;br /&gt;
      if (!v) {&lt;br /&gt;
        // Se o vídeo já foi marcado como falhado, não mostra aviso repetido&lt;br /&gt;
        if (failedVideosCache.has(videoURL)) {&lt;br /&gt;
          videoBox.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
        // Para effect, cria vídeo dinamicamente (vídeo alternativo por tempo)&lt;br /&gt;
        if (isEffectVideo &amp;amp;&amp;amp; videoURL) {&lt;br /&gt;
          const baseIndex = el.dataset.index || &amp;quot;&amp;quot;;&lt;br /&gt;
          const effectCacheKey =&lt;br /&gt;
            effectKey || `effect:${effectiveVideo || videoURL}`;&lt;br /&gt;
          v = videosCache.get(effectCacheKey);&lt;br /&gt;
          if (!v) {&lt;br /&gt;
            v = createVideoElement(videoURL, {&lt;br /&gt;
              index: baseIndex,&lt;br /&gt;
              effect: &amp;quot;1&amp;quot;,&lt;br /&gt;
            });&lt;br /&gt;
            if (v) {&lt;br /&gt;
              videoBox.appendChild(v);&lt;br /&gt;
              videosCache.set(effectCacheKey, v);&lt;br /&gt;
              v.load();&lt;br /&gt;
            } else {&lt;br /&gt;
              videoBox.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
              return;&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        // Para form_switch, cria vídeo dinamicamente (transições de forma são dinâmicas)&lt;br /&gt;
        // Usa uma chave única que inclui o nome do arquivo do vídeo para garantir que cada vídeo diferente seja cacheado separadamente&lt;br /&gt;
        else if (isFormSwitch &amp;amp;&amp;amp; videoURL) {&lt;br /&gt;
          const baseIndex = el.dataset.index || &amp;quot;&amp;quot;;&lt;br /&gt;
          const videoFileName = effectiveVideo || &amp;quot;&amp;quot;;&lt;br /&gt;
          // Chave única: index + nome do arquivo do vídeo&lt;br /&gt;
          const videoKey = baseIndex + &amp;quot;:&amp;quot; + videoFileName;&lt;br /&gt;
          v = videosCache.get(videoKey);&lt;br /&gt;
          if (!v) {&lt;br /&gt;
            v = createVideoElement(videoURL, { index: baseIndex });&lt;br /&gt;
            if (v) {&lt;br /&gt;
              videoBox.appendChild(v);&lt;br /&gt;
              videosCache.set(videoKey, v);&lt;br /&gt;
              v.load();&lt;br /&gt;
            } else {&lt;br /&gt;
              videoBox.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
              return;&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        // Vídeos de form skills ou outros que não estão no cache - cria dinamicamente&lt;br /&gt;
        else if (videoURL) {&lt;br /&gt;
          const idx = el.dataset.index || &amp;quot;&amp;quot;;&lt;br /&gt;
          v = createVideoElement(videoURL, { index: idx });&lt;br /&gt;
          if (v) {&lt;br /&gt;
            videoBox.appendChild(v);&lt;br /&gt;
            if (idx) videosCache.set(idx, v);&lt;br /&gt;
            v.load();&lt;br /&gt;
          } else {&lt;br /&gt;
            videoBox.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
            return;&lt;br /&gt;
          }&lt;br /&gt;
        } else {&lt;br /&gt;
          videoBox.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      videoBox.style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
      v.style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
      try {&lt;br /&gt;
        v.currentTime = 0;&lt;br /&gt;
      } catch (e) { }&lt;br /&gt;
      const suppress = document.body.dataset.suppressSkillPlay === &amp;quot;1&amp;quot;;&lt;br /&gt;
      if (!suppress) {&lt;br /&gt;
        v.play().catch(() =&amp;gt; { });&lt;br /&gt;
      } else {&lt;br /&gt;
        try {&lt;br /&gt;
          v.pause();&lt;br /&gt;
        } catch (e) { }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    function activateSkill(el, options = {}) {&lt;br /&gt;
      const { openSubs = true } = options;&lt;br /&gt;
      const tip = document.querySelector(&amp;quot;.skill-tooltip&amp;quot;);&lt;br /&gt;
      if (tip) {&lt;br /&gt;
        tip.setAttribute(&amp;quot;aria-hidden&amp;quot;, &amp;quot;true&amp;quot;);&lt;br /&gt;
        tip.style.opacity = &amp;quot;0&amp;quot;;&lt;br /&gt;
        tip.style.left = &amp;quot;-9999px&amp;quot;;&lt;br /&gt;
        tip.style.top = &amp;quot;-9999px&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
      const skillsRoot = document.getElementById(&amp;quot;skills&amp;quot;);&lt;br /&gt;
      const i18nMap = skillsRoot&lt;br /&gt;
        ? JSON.parse(skillsRoot.dataset.i18nAttrs || &amp;quot;{}&amp;quot;)&lt;br /&gt;
        : {};&lt;br /&gt;
      const L = i18nMap[getLangKey()] ||&lt;br /&gt;
        i18nMap.pt || {&lt;br /&gt;
        cooldown: &amp;quot;Recarga&amp;quot;,&lt;br /&gt;
        energy_gain: &amp;quot;Ganho de energia&amp;quot;,&lt;br /&gt;
        energy_cost: &amp;quot;Custo de energia&amp;quot;,&lt;br /&gt;
        power: &amp;quot;Poder&amp;quot;,&lt;br /&gt;
        power_pvp: &amp;quot;Poder PvP&amp;quot;,&lt;br /&gt;
        level: &amp;quot;Nível&amp;quot;,&lt;br /&gt;
      };&lt;br /&gt;
      const name = el.dataset.nome || el.dataset.name || &amp;quot;&amp;quot;;&lt;br /&gt;
      if (el.dataset.effect) {&lt;br /&gt;
        activateEffectFromIcon(el);&lt;br /&gt;
      }&lt;br /&gt;
      let weaponData = null;&lt;br /&gt;
      if (el.dataset.weapon) {&lt;br /&gt;
        try {&lt;br /&gt;
          const parsed = JSON.parse(el.dataset.weapon);&lt;br /&gt;
          // Só considera weapon válido se for um objeto não vazio&lt;br /&gt;
          if (&lt;br /&gt;
            parsed &amp;amp;&amp;amp;&lt;br /&gt;
            typeof parsed === &amp;quot;object&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
            Object.keys(parsed).length &amp;gt; 0&lt;br /&gt;
          ) {&lt;br /&gt;
            weaponData = parsed;&lt;br /&gt;
          }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
          weaponData = null;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      const hasWeapon = !!weaponData;&lt;br /&gt;
      const weaponEquipped = hasWeapon &amp;amp;&amp;amp; globalWeaponEnabled;&lt;br /&gt;
      // Level: usa o level da weapon se estiver ativa e tiver level, senão usa o level da skill base&lt;br /&gt;
      let level = (el.dataset.level || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
      if (weaponEquipped &amp;amp;&amp;amp; weaponData) {&lt;br /&gt;
        // Verifica se weapon tem level definido (pode ser número ou string)&lt;br /&gt;
        const weaponLevel = weaponData.level;&lt;br /&gt;
        if (&lt;br /&gt;
          weaponLevel !== undefined &amp;amp;&amp;amp;&lt;br /&gt;
          weaponLevel !== null &amp;amp;&amp;amp;&lt;br /&gt;
          weaponLevel !== &amp;quot;&amp;quot;&lt;br /&gt;
        ) {&lt;br /&gt;
          level = weaponLevel.toString().trim();&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      const lang = getLangKey();&lt;br /&gt;
      const baseDescPack = {&lt;br /&gt;
        pt: el.dataset.descPt || &amp;quot;&amp;quot;,&lt;br /&gt;
        en: el.dataset.descEn || &amp;quot;&amp;quot;,&lt;br /&gt;
        es: el.dataset.descEs || &amp;quot;&amp;quot;,&lt;br /&gt;
        pl: el.dataset.descPl || &amp;quot;&amp;quot;,&lt;br /&gt;
      };&lt;br /&gt;
      const baseDesc =&lt;br /&gt;
        baseDescPack[lang] ||&lt;br /&gt;
        baseDescPack.pt ||&lt;br /&gt;
        baseDescPack.en ||&lt;br /&gt;
        baseDescPack.es ||&lt;br /&gt;
        baseDescPack.pl ||&lt;br /&gt;
        el.dataset.desc ||&lt;br /&gt;
        &amp;quot;&amp;quot;;&lt;br /&gt;
      // Aceita tanto desc_i18n quanto desc para compatibilidade&lt;br /&gt;
      let weaponDescPack = {};&lt;br /&gt;
      if (weaponData) {&lt;br /&gt;
        if (weaponData.desc_i18n) {&lt;br /&gt;
          weaponDescPack = weaponData.desc_i18n;&lt;br /&gt;
        } else if (weaponData.desc) {&lt;br /&gt;
          weaponDescPack = weaponData.desc;&lt;br /&gt;
        } else {&lt;br /&gt;
          weaponDescPack = {&lt;br /&gt;
            pt: weaponData.descPt || &amp;quot;&amp;quot;,&lt;br /&gt;
            en: weaponData.descEn || &amp;quot;&amp;quot;,&lt;br /&gt;
            es: weaponData.descEs || &amp;quot;&amp;quot;,&lt;br /&gt;
            pl: weaponData.descPl || &amp;quot;&amp;quot;,&lt;br /&gt;
          };&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      const weaponDesc =&lt;br /&gt;
        weaponDescPack[lang] ||&lt;br /&gt;
        weaponDescPack.pt ||&lt;br /&gt;
        weaponDescPack.en ||&lt;br /&gt;
        weaponDescPack.es ||&lt;br /&gt;
        weaponDescPack.pl ||&lt;br /&gt;
        &amp;quot;&amp;quot;;&lt;br /&gt;
      const chosenDesc = weaponEquipped &amp;amp;&amp;amp; weaponDesc ? weaponDesc : baseDesc;&lt;br /&gt;
      const descHtml = chosenDesc.replace(/'''(.*?)'''/g, &amp;quot;&amp;lt;b&amp;gt;$1&amp;lt;/b&amp;gt;&amp;quot;);&lt;br /&gt;
      let attrsHTML = &amp;quot;&amp;quot;;&lt;br /&gt;
      if (weaponEquipped &amp;amp;&amp;amp; weaponData) {&lt;br /&gt;
        // Faz merge: usa atributos da skill base e substitui apenas os que existem no weapon&lt;br /&gt;
        // Parse dos atributos da skill base (formato: &amp;quot;pve, pvp, energy, cooldown&amp;quot; ou &amp;quot;pve, pvp, energy, cooldown&amp;quot;)&lt;br /&gt;
        const baseAttrsStr = el.dataset.atr || &amp;quot;&amp;quot;;&lt;br /&gt;
        // Suporta tanto &amp;quot;, &amp;quot; quanto &amp;quot;,&amp;quot; como separador&lt;br /&gt;
        const baseAttrs = baseAttrsStr.split(/\s*,\s*/).map((a) =&amp;gt; a.trim());&lt;br /&gt;
        const basePve =&lt;br /&gt;
          baseAttrs[0] &amp;amp;&amp;amp; baseAttrs[0] !== &amp;quot;-&amp;quot; ? baseAttrs[0] : &amp;quot;&amp;quot;;&lt;br /&gt;
        const basePvp =&lt;br /&gt;
          baseAttrs[1] &amp;amp;&amp;amp; baseAttrs[1] !== &amp;quot;-&amp;quot; ? baseAttrs[1] : &amp;quot;&amp;quot;;&lt;br /&gt;
        const baseEnergy =&lt;br /&gt;
          baseAttrs[2] &amp;amp;&amp;amp; baseAttrs[2] !== &amp;quot;-&amp;quot; ? baseAttrs[2] : &amp;quot;&amp;quot;;&lt;br /&gt;
        const baseCd = baseAttrs[3] &amp;amp;&amp;amp; baseAttrs[3] !== &amp;quot;-&amp;quot; ? baseAttrs[3] : &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        // Valores do weapon (substituem os da skill base se existirem)&lt;br /&gt;
        const wPve =&lt;br /&gt;
          weaponData.powerpve !== undefined &amp;amp;&amp;amp;&lt;br /&gt;
            weaponData.powerpve !== null &amp;amp;&amp;amp;&lt;br /&gt;
            weaponData.powerpve !== &amp;quot;&amp;quot;&lt;br /&gt;
            ? weaponData.powerpve.toString().trim()&lt;br /&gt;
            : basePve;&lt;br /&gt;
        const wPvp =&lt;br /&gt;
          weaponData.powerpvp !== undefined &amp;amp;&amp;amp;&lt;br /&gt;
            weaponData.powerpvp !== null &amp;amp;&amp;amp;&lt;br /&gt;
            weaponData.powerpvp !== &amp;quot;&amp;quot;&lt;br /&gt;
            ? weaponData.powerpvp.toString().trim()&lt;br /&gt;
            : basePvp;&lt;br /&gt;
        const wEnergy =&lt;br /&gt;
          weaponData.energy !== undefined &amp;amp;&amp;amp;&lt;br /&gt;
            weaponData.energy !== null &amp;amp;&amp;amp;&lt;br /&gt;
            weaponData.energy !== &amp;quot;&amp;quot;&lt;br /&gt;
            ? weaponData.energy.toString().trim()&lt;br /&gt;
            : baseEnergy;&lt;br /&gt;
        const wCd =&lt;br /&gt;
          weaponData.cooldown !== undefined &amp;amp;&amp;amp;&lt;br /&gt;
            weaponData.cooldown !== null &amp;amp;&amp;amp;&lt;br /&gt;
            weaponData.cooldown !== &amp;quot;&amp;quot;&lt;br /&gt;
            ? weaponData.cooldown.toString().trim()&lt;br /&gt;
            : baseCd;&lt;br /&gt;
&lt;br /&gt;
        // Monta string de atributos mesclados&lt;br /&gt;
        const mergedAttrs = [wPve, wPvp, wEnergy, wCd].join(&amp;quot;,&amp;quot;);&lt;br /&gt;
        attrsHTML = renderAttributes(mergedAttrs);&lt;br /&gt;
      } else {&lt;br /&gt;
        attrsHTML = el.dataset.atr&lt;br /&gt;
          ? renderAttributes(el.dataset.atr)&lt;br /&gt;
          : el.dataset.subattrs&lt;br /&gt;
            ? renderSubAttributesFromObj(JSON.parse(el.dataset.subattrs), L)&lt;br /&gt;
            : &amp;quot;&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
      let flagsHTML = &amp;quot;&amp;quot;;&lt;br /&gt;
      // Debug: verifica se é uma skill do Urouge (verifica pela URL da página ou pelo contexto)&lt;br /&gt;
      const isUrougePage =&lt;br /&gt;
        window.location.href &amp;amp;&amp;amp;&lt;br /&gt;
        window.location.href.toLowerCase().includes(&amp;quot;urouge&amp;quot;);&lt;br /&gt;
      if (el.dataset.flags) {&lt;br /&gt;
        try {&lt;br /&gt;
          const flags = JSON.parse(el.dataset.flags);&lt;br /&gt;
          if (flags &amp;amp;&amp;amp; Array.isArray(flags) &amp;amp;&amp;amp; flags.length &amp;gt; 0) {&lt;br /&gt;
            flagsHTML = renderFlagsRow(flags);&lt;br /&gt;
            // Debug para Urouge&lt;br /&gt;
            if (isUrougePage) {&lt;br /&gt;
              console.log(&amp;quot;[Skills] Urouge - Flags processadas:&amp;quot;, {&lt;br /&gt;
                skill: name || el.dataset.nome,&lt;br /&gt;
                flags: flags,&lt;br /&gt;
                htmlLength: flagsHTML ? flagsHTML.length : 0,&lt;br /&gt;
                hasHTML: !!flagsHTML,&lt;br /&gt;
              });&lt;br /&gt;
            }&lt;br /&gt;
          } else {&lt;br /&gt;
            if (isUrougePage) {&lt;br /&gt;
              console.warn(&amp;quot;[Skills] Urouge - Flags inválidas:&amp;quot;, {&lt;br /&gt;
                skill: name || el.dataset.nome,&lt;br /&gt;
                flags: flags,&lt;br /&gt;
                rawData: el.dataset.flags,&lt;br /&gt;
              });&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
          console.warn(&lt;br /&gt;
            &amp;quot;[Skills] Erro ao processar flags:&amp;quot;,&lt;br /&gt;
            e,&lt;br /&gt;
            &amp;quot;flags data:&amp;quot;,&lt;br /&gt;
            el.dataset.flags,&lt;br /&gt;
            &amp;quot;skill:&amp;quot;,&lt;br /&gt;
            name || el.dataset.nome&lt;br /&gt;
          );&lt;br /&gt;
          if (isUrougePage) {&lt;br /&gt;
            console.error(&lt;br /&gt;
              &amp;quot;[Skills] Urouge - Erro ao processar flags:&amp;quot;,&lt;br /&gt;
              e,&lt;br /&gt;
              &amp;quot;element:&amp;quot;,&lt;br /&gt;
              el&lt;br /&gt;
            );&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      } else {&lt;br /&gt;
        // Debug: verifica se deveria ter flags mas não tem (apenas para Urouge)&lt;br /&gt;
        if (isUrougePage) {&lt;br /&gt;
          console.warn(&amp;quot;[Skills] Urouge - Skill sem data-flags:&amp;quot;, {&lt;br /&gt;
            skill: name || el.dataset.nome,&lt;br /&gt;
            element: el,&lt;br /&gt;
            allAttributes: Array.from(el.attributes).map(&lt;br /&gt;
              (attr) =&amp;gt; attr.name + &amp;quot;=&amp;quot; + attr.value&lt;br /&gt;
            ),&lt;br /&gt;
          });&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (descBox) {&lt;br /&gt;
        descBox.innerHTML = `&amp;lt;div class=&amp;quot;skill-title&amp;quot;&amp;gt;&amp;lt;h3&amp;gt;${name}&amp;lt;/h3&amp;gt;&amp;lt;/div&amp;gt;${level&lt;br /&gt;
          ? `&amp;lt;div class=&amp;quot;skill-level-line&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;attr-label&amp;quot;&amp;gt;${L.level} ${level}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;`&lt;br /&gt;
          : &amp;quot;&amp;quot;&lt;br /&gt;
          }${attrsHTML}&amp;lt;div class=&amp;quot;desc&amp;quot;&amp;gt;${descHtml}&amp;lt;/div&amp;gt;`;&lt;br /&gt;
      }&lt;br /&gt;
      if (hasWeapon) {&lt;br /&gt;
        applyWeaponBadge(el, weaponData, weaponEquipped);&lt;br /&gt;
      }&lt;br /&gt;
      const vb = getVideoBox();&lt;br /&gt;
      if (vb) {&lt;br /&gt;
        const oldFlags = vb.querySelector(&amp;quot;.skill-flags&amp;quot;);&lt;br /&gt;
        if (oldFlags) oldFlags.remove();&lt;br /&gt;
        if (flagsHTML) {&lt;br /&gt;
          vb.insertAdjacentHTML(&amp;quot;beforeend&amp;quot;, flagsHTML);&lt;br /&gt;
          applyFlagTooltips(vb);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      const currIcons = Array.from(iconsBar.querySelectorAll(&amp;quot;.skill-icon&amp;quot;));&lt;br /&gt;
      currIcons.forEach((i) =&amp;gt; i.classList.remove(&amp;quot;active&amp;quot;));&lt;br /&gt;
      const subsRaw = el.dataset.subs || el.getAttribute(&amp;quot;data-subs&amp;quot;);&lt;br /&gt;
      const isFormSwitch =&lt;br /&gt;
        el.dataset.formSwitch === &amp;quot;true&amp;quot; ||&lt;br /&gt;
        el.getAttribute(&amp;quot;data-form-switch&amp;quot;) === &amp;quot;true&amp;quot;;&lt;br /&gt;
      const isSwap =&lt;br /&gt;
        el.dataset.swap === &amp;quot;true&amp;quot; || el.getAttribute(&amp;quot;data-swap&amp;quot;) === &amp;quot;true&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
      // Se for skill de swap, troca personagem (não marca como ativo, não processa como back)&lt;br /&gt;
      if (isSwap &amp;amp;&amp;amp; !isFormSwitch) {&lt;br /&gt;
        handleSwapCharacter(el);&lt;br /&gt;
        // Não marca como ativo (similar ao form_switch)&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Não marca como ativo se for form_switch (Change Form)&lt;br /&gt;
      if (!isFormSwitch) {&lt;br /&gt;
        el.classList.add(&amp;quot;active&amp;quot;);&lt;br /&gt;
        if (!autoplay &amp;amp;&amp;amp; loadedVideos &amp;gt; 0) autoplay = true;&lt;br /&gt;
        window.__lastActiveSkillIcon = el;&lt;br /&gt;
        // Lógica de vídeo: usa função centralizada que já considera weapon&lt;br /&gt;
        showVideoForIcon(el);&lt;br /&gt;
      }&lt;br /&gt;
      const isBack =&lt;br /&gt;
        el.dataset.back === &amp;quot;true&amp;quot; ||&lt;br /&gt;
        el.getAttribute(&amp;quot;data-back&amp;quot;) === &amp;quot;true&amp;quot; ||&lt;br /&gt;
        el.dataset.back === &amp;quot;yes&amp;quot; ||&lt;br /&gt;
        el.getAttribute(&amp;quot;data-back&amp;quot;) === &amp;quot;yes&amp;quot; ||&lt;br /&gt;
        el.dataset.back === &amp;quot;1&amp;quot; ||&lt;br /&gt;
        el.getAttribute(&amp;quot;data-back&amp;quot;) === &amp;quot;1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
      // Se for form_switch, alterna forma (não processa como back)&lt;br /&gt;
      if (isFormSwitch) {&lt;br /&gt;
        try {&lt;br /&gt;
          const formsJSON = skillsRoot.dataset.forms || &amp;quot;{}&amp;quot;;&lt;br /&gt;
          if (formsJSON &amp;amp;&amp;amp; formsJSON !== &amp;quot;{}&amp;quot;) {&lt;br /&gt;
            if (Object.keys(formsData).length === 0) {&lt;br /&gt;
              formsData = JSON.parse(formsJSON);&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          // Inicializa currentForm se necessário&lt;br /&gt;
          if (currentForm === null) {&lt;br /&gt;
            currentForm = detectCurrentForm();&lt;br /&gt;
            const formNames = Object.keys(formsData);&lt;br /&gt;
            if (!currentForm &amp;amp;&amp;amp; formNames.length &amp;gt; 0) {&lt;br /&gt;
              currentForm = formNames[0];&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          // Calcula a próxima forma ANTES de trocar&lt;br /&gt;
          const nextForm = getNextFormName();&lt;br /&gt;
&lt;br /&gt;
          // Vídeo de transição: usa o vídeo da PRÓXIMA forma&lt;br /&gt;
          const formVideosRaw =&lt;br /&gt;
            el.dataset.formVideos || el.getAttribute(&amp;quot;data-form-videos&amp;quot;);&lt;br /&gt;
          if (formVideosRaw &amp;amp;&amp;amp; nextForm) {&lt;br /&gt;
            const videos = JSON.parse(formVideosRaw);&lt;br /&gt;
            const transitionVideo = videos[nextForm] || &amp;quot;&amp;quot;;&lt;br /&gt;
            if (transitionVideo &amp;amp;&amp;amp; transitionVideo.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
              el.dataset.videoFile = transitionVideo;&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
          console.error(&amp;quot;[Forms] Erro ao processar transição:&amp;quot;, e);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        showVideoForIcon(el);&lt;br /&gt;
        switchForm();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      if (isBack &amp;amp;&amp;amp; !isFormSwitch &amp;amp;&amp;amp; barStack.length) {&lt;br /&gt;
        const prev = barStack.pop();&lt;br /&gt;
        // Restaura currentForm se estava salvo no snapshot&lt;br /&gt;
        if (prev.currentForm !== undefined) {&lt;br /&gt;
          currentForm = prev.currentForm;&lt;br /&gt;
        }&lt;br /&gt;
        renderBarFromItems(prev);&lt;br /&gt;
        const btn = document.querySelector(&amp;quot;.skills-back-wrapper&amp;quot;);&lt;br /&gt;
        if (btn) btn.style.display = barStack.length ? &amp;quot;block&amp;quot; : &amp;quot;none&amp;quot;;&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      if (openSubs &amp;amp;&amp;amp; subsRaw &amp;amp;&amp;amp; subsRaw.trim() !== &amp;quot;&amp;quot;) {&lt;br /&gt;
        if (barStack.length &amp;amp;&amp;amp; barStack[barStack.length - 1].parentIcon === el)&lt;br /&gt;
          return;&lt;br /&gt;
        try {&lt;br /&gt;
          const subs = JSON.parse(subsRaw);&lt;br /&gt;
          pushSubBarFrom(subs, el);&lt;br /&gt;
        } catch { }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    function wireClicksForCurrentBar() {&lt;br /&gt;
      const currIcons = Array.from(iconsBar.querySelectorAll(&amp;quot;.skill-icon&amp;quot;));&lt;br /&gt;
      currIcons.forEach((el) =&amp;gt; {&lt;br /&gt;
        if (&lt;br /&gt;
          el.dataset.weaponToggle === &amp;quot;1&amp;quot; ||&lt;br /&gt;
          el.classList.contains(&amp;quot;weapon-bar-toggle&amp;quot;)&lt;br /&gt;
        )&lt;br /&gt;
          return;&lt;br /&gt;
        if (el.dataset.wired) return;&lt;br /&gt;
        el.dataset.wired = &amp;quot;1&amp;quot;;&lt;br /&gt;
        const label = el.dataset.nome || el.dataset.name || &amp;quot;&amp;quot;;&lt;br /&gt;
        el.setAttribute(&amp;quot;aria-label&amp;quot;, label);&lt;br /&gt;
        if (el.hasAttribute(&amp;quot;title&amp;quot;)) el.removeAttribute(&amp;quot;title&amp;quot;);&lt;br /&gt;
        const img = el.querySelector(&amp;quot;img&amp;quot;);&lt;br /&gt;
        if (img) {&lt;br /&gt;
          img.setAttribute(&amp;quot;alt&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
          if (img.hasAttribute(&amp;quot;title&amp;quot;)) img.removeAttribute(&amp;quot;title&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        el.addEventListener(&amp;quot;click&amp;quot;, () =&amp;gt; {&lt;br /&gt;
          activateSkill(el, {&lt;br /&gt;
            openSubs: true,&lt;br /&gt;
          });&lt;br /&gt;
        });&lt;br /&gt;
      });&lt;br /&gt;
      wireTooltipsForNewIcons();&lt;br /&gt;
      applyEffectClasses();&lt;br /&gt;
    }&lt;br /&gt;
    function animateIconsBarEntrance() {&lt;br /&gt;
      Array.from(iconsBar.children).forEach((c, i) =&amp;gt; {&lt;br /&gt;
        c.style.opacity = &amp;quot;0&amp;quot;;&lt;br /&gt;
        c.style.transform = &amp;quot;translateY(6px)&amp;quot;;&lt;br /&gt;
        requestAnimationFrame(() =&amp;gt; {&lt;br /&gt;
          setTimeout(() =&amp;gt; {&lt;br /&gt;
            c.style.transition = &amp;quot;opacity .18s ease, transform .18s ease&amp;quot;;&lt;br /&gt;
            c.style.opacity = &amp;quot;1&amp;quot;;&lt;br /&gt;
            c.style.transform = &amp;quot;translateY(0)&amp;quot;;&lt;br /&gt;
          }, i * 24);&lt;br /&gt;
        });&lt;br /&gt;
      });&lt;br /&gt;
    }&lt;br /&gt;
    function snapshotCurrentBarItemsFromDOM() {&lt;br /&gt;
      const items = Array.from(iconsBar.querySelectorAll(&amp;quot;.skill-icon&amp;quot;))&lt;br /&gt;
        .filter((el) =&amp;gt; el.dataset.weaponToggle !== &amp;quot;1&amp;quot;)&lt;br /&gt;
        .map((el) =&amp;gt; {&lt;br /&gt;
          const img = el.querySelector(&amp;quot;img&amp;quot;);&lt;br /&gt;
          const iconURL = img ? img.src : &amp;quot;&amp;quot;;&lt;br /&gt;
          const subsRaw = el.dataset.subs || el.getAttribute(&amp;quot;data-subs&amp;quot;) || &amp;quot;&amp;quot;;&lt;br /&gt;
          let subs = null;&lt;br /&gt;
          try {&lt;br /&gt;
            subs = subsRaw ? JSON.parse(subsRaw) : null;&lt;br /&gt;
          } catch {&lt;br /&gt;
            subs = null;&lt;br /&gt;
          }&lt;br /&gt;
          const subattrsRaw = el.dataset.subattrs || &amp;quot;&amp;quot;;&lt;br /&gt;
          let flags = null;&lt;br /&gt;
          if (el.dataset.flags) {&lt;br /&gt;
            try {&lt;br /&gt;
              flags = JSON.parse(el.dataset.flags);&lt;br /&gt;
            } catch (e) { }&lt;br /&gt;
          }&lt;br /&gt;
          let weapon = null;&lt;br /&gt;
          if (el.dataset.weapon) {&lt;br /&gt;
            try {&lt;br /&gt;
              weapon = JSON.parse(el.dataset.weapon);&lt;br /&gt;
            } catch (e) { }&lt;br /&gt;
          }&lt;br /&gt;
          let effect = null;&lt;br /&gt;
          if (el.dataset.effect) {&lt;br /&gt;
            try {&lt;br /&gt;
              effect = JSON.parse(el.dataset.effect);&lt;br /&gt;
            } catch (e) { }&lt;br /&gt;
          }&lt;br /&gt;
          // Preserva data-form-videos para poder restaurar depois&lt;br /&gt;
          const formVideos =&lt;br /&gt;
            el.dataset.formVideos || el.getAttribute(&amp;quot;data-form-videos&amp;quot;) || &amp;quot;&amp;quot;;&lt;br /&gt;
          return {&lt;br /&gt;
            name: el.dataset.nome || el.dataset.name || &amp;quot;&amp;quot;,&lt;br /&gt;
            index: el.dataset.index || &amp;quot;&amp;quot;,&lt;br /&gt;
            level: el.dataset.level || &amp;quot;&amp;quot;,&lt;br /&gt;
            desc: el.dataset.desc || &amp;quot;&amp;quot;,&lt;br /&gt;
            descPt: el.dataset.descPt || &amp;quot;&amp;quot;,&lt;br /&gt;
            descEn: el.dataset.descEn || &amp;quot;&amp;quot;,&lt;br /&gt;
            descEs: el.dataset.descEs || &amp;quot;&amp;quot;,&lt;br /&gt;
            descPl: el.dataset.descPl || &amp;quot;&amp;quot;,&lt;br /&gt;
            attrs: el.dataset.atr || el.dataset.attrs || &amp;quot;&amp;quot;,&lt;br /&gt;
            video: el.dataset.video || &amp;quot;&amp;quot;,&lt;br /&gt;
            iconURL,&lt;br /&gt;
            subs,&lt;br /&gt;
            subattrsStr: subattrsRaw,&lt;br /&gt;
            flags: flags,&lt;br /&gt;
            weapon: weapon,&lt;br /&gt;
            effect: effect,&lt;br /&gt;
            nested: el.dataset.nested || &amp;quot;&amp;quot;,&lt;br /&gt;
            subName: el.dataset.subName || &amp;quot;&amp;quot;,&lt;br /&gt;
            parentIndex: el.dataset.parentIndex || &amp;quot;&amp;quot;,&lt;br /&gt;
            formSwitch:&lt;br /&gt;
              el.dataset.formSwitch ||&lt;br /&gt;
              el.getAttribute(&amp;quot;data-form-switch&amp;quot;) ||&lt;br /&gt;
              &amp;quot;&amp;quot;,&lt;br /&gt;
            formVideos: formVideos,&lt;br /&gt;
          };&lt;br /&gt;
        });&lt;br /&gt;
      // Retorna objeto com items e currentForm para poder restaurar depois&lt;br /&gt;
      return { items, currentForm: currentForm };&lt;br /&gt;
    }&lt;br /&gt;
    function ensureBackButton() {&lt;br /&gt;
      const rail = iconsBar.closest(&amp;quot;.top-rail.skills&amp;quot;);&lt;br /&gt;
      if (!rail) return null;&lt;br /&gt;
      let wrap = rail.parentElement;&lt;br /&gt;
      if (&lt;br /&gt;
        !wrap ||&lt;br /&gt;
        !wrap.classList ||&lt;br /&gt;
        !wrap.classList.contains(&amp;quot;skills-rail-wrap&amp;quot;)&lt;br /&gt;
      ) {&lt;br /&gt;
        const parentNode = rail.parentNode;&lt;br /&gt;
        const newWrap = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
        newWrap.className = &amp;quot;skills-rail-wrap&amp;quot;;&lt;br /&gt;
        parentNode.insertBefore(newWrap, rail);&lt;br /&gt;
        newWrap.appendChild(rail);&lt;br /&gt;
        wrap = newWrap;&lt;br /&gt;
      }&lt;br /&gt;
      let backWrap = wrap.querySelector(&amp;quot;.skills-back-wrapper&amp;quot;);&lt;br /&gt;
      if (!backWrap) {&lt;br /&gt;
        backWrap = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
        backWrap.className = &amp;quot;skills-back-wrapper&amp;quot;;&lt;br /&gt;
        const btnInner = document.createElement(&amp;quot;button&amp;quot;);&lt;br /&gt;
        btnInner.className = &amp;quot;skills-back&amp;quot;;&lt;br /&gt;
        btnInner.type = &amp;quot;button&amp;quot;;&lt;br /&gt;
        btnInner.setAttribute(&amp;quot;aria-label&amp;quot;, &amp;quot;Voltar&amp;quot;);&lt;br /&gt;
        btnInner.innerHTML =&lt;br /&gt;
          '&amp;lt;svg class=&amp;quot;back-chevron&amp;quot; width=&amp;quot;100%&amp;quot; height=&amp;quot;100%&amp;quot; viewBox=&amp;quot;0 0 36 32&amp;quot; fill=&amp;quot;none&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; aria-hidden=&amp;quot;true&amp;quot; preserveAspectRatio=&amp;quot;xMidYMid meet&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M10 2L4 16L10 30&amp;quot; stroke=&amp;quot;currentColor&amp;quot; stroke-width=&amp;quot;2.8&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;/&amp;gt;&amp;lt;path d=&amp;quot;M20 2L14 16L20 30&amp;quot; stroke=&amp;quot;currentColor&amp;quot; stroke-width=&amp;quot;2.8&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;/&amp;gt;&amp;lt;path d=&amp;quot;M30 2L24 16L30 30&amp;quot; stroke=&amp;quot;currentColor&amp;quot; stroke-width=&amp;quot;2.8&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; stroke-linejoin=&amp;quot;round&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt;';&lt;br /&gt;
        backWrap.appendChild(btnInner);&lt;br /&gt;
        wrap.insertBefore(backWrap, rail);&lt;br /&gt;
        btnInner.addEventListener(&amp;quot;click&amp;quot;, () =&amp;gt; {&lt;br /&gt;
          if (!barStack.length) return;&lt;br /&gt;
          const prev = barStack.pop();&lt;br /&gt;
          renderBarFromItems(prev);&lt;br /&gt;
          backWrap.style.display = barStack.length ? &amp;quot;block&amp;quot; : &amp;quot;none&amp;quot;;&lt;br /&gt;
          wrap.classList.toggle(&amp;quot;has-sub-bar&amp;quot;, barStack.length &amp;gt; 0);&lt;br /&gt;
          if (!barStack.length) btnInner.classList.remove(&amp;quot;peek&amp;quot;);&lt;br /&gt;
        });&lt;br /&gt;
      }&lt;br /&gt;
      backWrap.style.display = barStack.length ? &amp;quot;block&amp;quot; : &amp;quot;none&amp;quot;;&lt;br /&gt;
      wrap.classList.toggle(&amp;quot;has-sub-bar&amp;quot;, barStack.length &amp;gt; 0);&lt;br /&gt;
      const btnInner = backWrap.querySelector(&amp;quot;.skills-back&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      // Calcula a posição do botão baseado na posição real do top-rail&lt;br /&gt;
      function updateBackButtonPosition() {&lt;br /&gt;
        if (!rail || !backWrap) return;&lt;br /&gt;
        const railRect = rail.getBoundingClientRect();&lt;br /&gt;
        const wrapRect = wrap.getBoundingClientRect();&lt;br /&gt;
        // Calcula a posição relativa do rail dentro do wrap&lt;br /&gt;
        const railLeft = railRect.left - wrapRect.left;&lt;br /&gt;
        // Posiciona o wrapper na borda esquerda do rail&lt;br /&gt;
        // O botão interno usa translateX(-97%) para ficar atrás da barra&lt;br /&gt;
        backWrap.style.left = railLeft + &amp;quot;px&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Atualiza a posição quando necessário&lt;br /&gt;
      if (backWrap.style.display !== &amp;quot;none&amp;quot;) {&lt;br /&gt;
        // Usa requestAnimationFrame para garantir que o DOM foi atualizado&lt;br /&gt;
        requestAnimationFrame(() =&amp;gt; {&lt;br /&gt;
          updateBackButtonPosition();&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Recalcula em resize e scroll&lt;br /&gt;
        if (!backWrap.dataset.positionWired) {&lt;br /&gt;
          backWrap.dataset.positionWired = &amp;quot;1&amp;quot;;&lt;br /&gt;
          const updateOnResize = () =&amp;gt; {&lt;br /&gt;
            if (backWrap.style.display !== &amp;quot;none&amp;quot;) {&lt;br /&gt;
              updateBackButtonPosition();&lt;br /&gt;
            }&lt;br /&gt;
          };&lt;br /&gt;
          window.addEventListener(&amp;quot;resize&amp;quot;, updateOnResize);&lt;br /&gt;
          const observer = new ResizeObserver(() =&amp;gt; {&lt;br /&gt;
            if (backWrap.style.display !== &amp;quot;none&amp;quot;) {&lt;br /&gt;
              updateBackButtonPosition();&lt;br /&gt;
            }&lt;br /&gt;
          });&lt;br /&gt;
          if (rail) observer.observe(rail);&lt;br /&gt;
          observer.observe(wrap);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      return btnInner;&lt;br /&gt;
    }&lt;br /&gt;
    function renderBarFromItems(itemsOrSnapshot) {&lt;br /&gt;
      // Suporta tanto o formato antigo (array) quanto o novo (objeto com items e currentForm)&lt;br /&gt;
      let items, savedCurrentForm;&lt;br /&gt;
      if (Array.isArray(itemsOrSnapshot)) {&lt;br /&gt;
        items = itemsOrSnapshot;&lt;br /&gt;
        savedCurrentForm = null;&lt;br /&gt;
      } else if (itemsOrSnapshot &amp;amp;&amp;amp; itemsOrSnapshot.items) {&lt;br /&gt;
        items = itemsOrSnapshot.items;&lt;br /&gt;
        savedCurrentForm = itemsOrSnapshot.currentForm;&lt;br /&gt;
      } else {&lt;br /&gt;
        items = [];&lt;br /&gt;
        savedCurrentForm = null;&lt;br /&gt;
      }&lt;br /&gt;
      // Restaura currentForm se estava salvo&lt;br /&gt;
      if (savedCurrentForm !== undefined &amp;amp;&amp;amp; savedCurrentForm !== null) {&lt;br /&gt;
        currentForm = savedCurrentForm;&lt;br /&gt;
      }&lt;br /&gt;
      const tip = document.querySelector(&amp;quot;.skill-tooltip&amp;quot;);&lt;br /&gt;
      if (tip) {&lt;br /&gt;
        tip.setAttribute(&amp;quot;aria-hidden&amp;quot;, &amp;quot;true&amp;quot;);&lt;br /&gt;
        tip.style.opacity = &amp;quot;0&amp;quot;;&lt;br /&gt;
        tip.style.left = &amp;quot;-9999px&amp;quot;;&lt;br /&gt;
        tip.style.top = &amp;quot;-9999px&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
      iconsBar.innerHTML = &amp;quot;&amp;quot;;&lt;br /&gt;
      items.forEach((it, idx) =&amp;gt; {&lt;br /&gt;
        const node = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
        node.className = &amp;quot;skill-icon&amp;quot;;&lt;br /&gt;
        node.dataset.nome = it.name || &amp;quot;&amp;quot;;&lt;br /&gt;
        if (it.index) node.dataset.index = it.index;&lt;br /&gt;
        if (it.level) node.dataset.level = it.level;&lt;br /&gt;
        if (it.desc) node.dataset.desc = it.desc;&lt;br /&gt;
        if (it.descPt) node.dataset.descPt = it.descPt;&lt;br /&gt;
        if (it.descEn) node.dataset.descEn = it.descEn;&lt;br /&gt;
        if (it.descEs) node.dataset.descEs = it.descEs;&lt;br /&gt;
        if (it.descPl) node.dataset.descPl = it.descPl;&lt;br /&gt;
        if (it.attrs) node.dataset.atr = it.attrs;&lt;br /&gt;
        if (it.video) node.dataset.video = it.video;&lt;br /&gt;
        if (it.subs) node.dataset.subs = JSON.stringify(it.subs);&lt;br /&gt;
        if (it.subattrsStr) node.dataset.subattrs = it.subattrsStr;&lt;br /&gt;
        if (it.flags) node.dataset.flags = JSON.stringify(it.flags);&lt;br /&gt;
        if (&lt;br /&gt;
          it.weapon &amp;amp;&amp;amp;&lt;br /&gt;
          typeof it.weapon === &amp;quot;object&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
          Object.keys(it.weapon).length &amp;gt; 0&lt;br /&gt;
        ) {&lt;br /&gt;
          node.dataset.weapon = JSON.stringify(it.weapon);&lt;br /&gt;
        }&lt;br /&gt;
        if (it.effect &amp;amp;&amp;amp; typeof it.effect === &amp;quot;object&amp;quot;) {&lt;br /&gt;
          try {&lt;br /&gt;
            node.dataset.effect = JSON.stringify(it.effect);&lt;br /&gt;
          } catch (e) { }&lt;br /&gt;
        }&lt;br /&gt;
        // Restaura informações de subskill importantes para busca de vídeos&lt;br /&gt;
        if (it.nested) node.dataset.nested = it.nested;&lt;br /&gt;
        if (it.subName) node.dataset.subName = it.subName;&lt;br /&gt;
        if (it.parentIndex) node.dataset.parentIndex = it.parentIndex;&lt;br /&gt;
        if (!it.index &amp;amp;&amp;amp; !it.nested) node.dataset.nested = &amp;quot;1&amp;quot;;&lt;br /&gt;
        // Restaura formSwitch (Change Form)&lt;br /&gt;
        if (it.formSwitch) {&lt;br /&gt;
          node.dataset.formSwitch = it.formSwitch;&lt;br /&gt;
          node.setAttribute(&amp;quot;data-form-switch&amp;quot;, it.formSwitch);&lt;br /&gt;
        }&lt;br /&gt;
        // Restaura formVideos (vídeos de transição de forma)&lt;br /&gt;
        if (it.formVideos) {&lt;br /&gt;
          node.dataset.formVideos = it.formVideos;&lt;br /&gt;
          node.setAttribute(&amp;quot;data-form-videos&amp;quot;, it.formVideos);&lt;br /&gt;
        }&lt;br /&gt;
        const img = document.createElement(&amp;quot;img&amp;quot;);&lt;br /&gt;
        img.alt = &amp;quot;&amp;quot;;&lt;br /&gt;
        img.src = it.iconURL || (it.icon ? filePathURL(it.icon) : &amp;quot;&amp;quot;);&lt;br /&gt;
        img.decoding = &amp;quot;async&amp;quot;;&lt;br /&gt;
        img.loading = &amp;quot;lazy&amp;quot;;&lt;br /&gt;
        img.width = 50;&lt;br /&gt;
        img.height = 50;&lt;br /&gt;
        node.appendChild(img);&lt;br /&gt;
        iconsBar.appendChild(node);&lt;br /&gt;
      });&lt;br /&gt;
      animateIconsBarEntrance();&lt;br /&gt;
      wireClicksForCurrentBar();&lt;br /&gt;
      // Remove qualquer toggle antigo que possa aparecer&lt;br /&gt;
      const oldToggle = iconsBar.querySelector(&amp;quot;.weapon-bar-toggle&amp;quot;);&lt;br /&gt;
      if (oldToggle) oldToggle.remove();&lt;br /&gt;
      // Reaplica classes de weapon após renderizar barra&lt;br /&gt;
      reapplyWeaponClassesToBar();&lt;br /&gt;
      const b = ensureBackButton();&lt;br /&gt;
      if (b) b.classList.add(&amp;quot;peek&amp;quot;);&lt;br /&gt;
      // Atualiza a posição do botão back após a barra ser renderizada&lt;br /&gt;
      requestAnimationFrame(() =&amp;gt; {&lt;br /&gt;
        const backWrap = document.querySelector(&amp;quot;.skills-back-wrapper&amp;quot;);&lt;br /&gt;
        if (backWrap &amp;amp;&amp;amp; backWrap.style.display !== &amp;quot;none&amp;quot;) {&lt;br /&gt;
          const rail = iconsBar.closest(&amp;quot;.top-rail.skills&amp;quot;);&lt;br /&gt;
          const wrap = rail ? rail.parentElement : null;&lt;br /&gt;
          if (rail &amp;amp;&amp;amp; wrap &amp;amp;&amp;amp; wrap.classList.contains(&amp;quot;skills-rail-wrap&amp;quot;)) {&lt;br /&gt;
            const railRect = rail.getBoundingClientRect();&lt;br /&gt;
            const wrapRect = wrap.getBoundingClientRect();&lt;br /&gt;
            const railLeft = railRect.left - wrapRect.left;&lt;br /&gt;
            // Posiciona na borda esquerda do rail (botão fica atrás com translateX)&lt;br /&gt;
            backWrap.style.left = railLeft + &amp;quot;px&amp;quot;;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
    }&lt;br /&gt;
    function pushSubBarFrom(subs, parentIconEl) {&lt;br /&gt;
      const tip = document.querySelector(&amp;quot;.skill-tooltip&amp;quot;);&lt;br /&gt;
      if (tip) {&lt;br /&gt;
        tip.setAttribute(&amp;quot;aria-hidden&amp;quot;, &amp;quot;true&amp;quot;);&lt;br /&gt;
        tip.style.opacity = &amp;quot;0&amp;quot;;&lt;br /&gt;
        tip.style.left = &amp;quot;-9999px&amp;quot;;&lt;br /&gt;
        tip.style.top = &amp;quot;-9999px&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
      const parentNameSnapshot = parentIconEl&lt;br /&gt;
        ? parentIconEl.dataset.nome || parentIconEl.dataset.name || &amp;quot;&amp;quot;&lt;br /&gt;
        : &amp;quot;&amp;quot;;&lt;br /&gt;
      // Para subskills, usa parentIndex; para skills principais, usa index&lt;br /&gt;
      const parentIndexSnapshot = parentIconEl&lt;br /&gt;
        ? parentIconEl.dataset.nested === &amp;quot;1&amp;quot;&lt;br /&gt;
          ? parentIconEl.dataset.parentIndex || &amp;quot;&amp;quot;&lt;br /&gt;
          : parentIconEl.dataset.index || &amp;quot;&amp;quot;&lt;br /&gt;
        : &amp;quot;&amp;quot;;&lt;br /&gt;
      const snapshot = snapshotCurrentBarItemsFromDOM();&lt;br /&gt;
      barStack.push({&lt;br /&gt;
        items: snapshot.items,&lt;br /&gt;
        currentForm: snapshot.currentForm,&lt;br /&gt;
        parentIcon: parentIconEl,&lt;br /&gt;
        parentName: parentNameSnapshot,&lt;br /&gt;
        parentIndex: parentIndexSnapshot,&lt;br /&gt;
      });&lt;br /&gt;
      ensureBackButton();&lt;br /&gt;
      const langKey = getLangKey();&lt;br /&gt;
      let cacheKey = null;&lt;br /&gt;
      if (parentIconEl) {&lt;br /&gt;
        cacheKey = parentIconEl.dataset.subCacheKey || null;&lt;br /&gt;
        if (!cacheKey) {&lt;br /&gt;
          if (parentIconEl.dataset.index) {&lt;br /&gt;
            cacheKey = `idx:${parentIconEl.dataset.index}`;&lt;br /&gt;
          } else {&lt;br /&gt;
            const slug = slugify(&lt;br /&gt;
              parentIconEl.dataset.nome || parentIconEl.dataset.name || &amp;quot;&amp;quot;&lt;br /&gt;
            );&lt;br /&gt;
            if (slug) cacheKey = `slug:${slug}`;&lt;br /&gt;
          }&lt;br /&gt;
          if (cacheKey) parentIconEl.dataset.subCacheKey = cacheKey;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (cacheKey) {&lt;br /&gt;
        const cached = subBarTemplateCache.get(cacheKey);&lt;br /&gt;
        if (cached &amp;amp;&amp;amp; cached.lang === langKey) {&lt;br /&gt;
          iconsBar.innerHTML = &amp;quot;&amp;quot;;&lt;br /&gt;
          const clone = cached.template.cloneNode(true);&lt;br /&gt;
          iconsBar.appendChild(clone);&lt;br /&gt;
          animateIconsBarEntrance();&lt;br /&gt;
          wireClicksForCurrentBar();&lt;br /&gt;
          // Remove qualquer toggle antigo que possa aparecer&lt;br /&gt;
          const oldToggle2 = iconsBar.querySelector(&amp;quot;.weapon-bar-toggle&amp;quot;);&lt;br /&gt;
          if (oldToggle2) oldToggle2.remove();&lt;br /&gt;
          // Reaplica classes de weapon após renderizar do cache&lt;br /&gt;
          reapplyWeaponClassesToBar();&lt;br /&gt;
          const cachedBtn = ensureBackButton();&lt;br /&gt;
          if (cachedBtn) cachedBtn.classList.add(&amp;quot;peek&amp;quot;);&lt;br /&gt;
          return;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      const skillsRoot = document.getElementById(&amp;quot;skills&amp;quot;);&lt;br /&gt;
      const i18nMap = skillsRoot&lt;br /&gt;
        ? JSON.parse(skillsRoot.dataset.i18nAttrs || &amp;quot;{}&amp;quot;)&lt;br /&gt;
        : {};&lt;br /&gt;
      const L = i18nMap[getLangKey()] ||&lt;br /&gt;
        i18nMap.pt || {&lt;br /&gt;
        cooldown: &amp;quot;Recarga&amp;quot;,&lt;br /&gt;
        energy_gain: &amp;quot;Ganho de energia&amp;quot;,&lt;br /&gt;
        energy_cost: &amp;quot;Custo de energia&amp;quot;,&lt;br /&gt;
        power: &amp;quot;Poder&amp;quot;,&lt;br /&gt;
        power_pvp: &amp;quot;Poder PvP&amp;quot;,&lt;br /&gt;
        level: &amp;quot;Nível&amp;quot;,&lt;br /&gt;
      };&lt;br /&gt;
      const hydratedSubs = inheritSubskillTree(subs, mainSkillsMeta);&lt;br /&gt;
      const items = (hydratedSubs || [])&lt;br /&gt;
        .filter((s) =&amp;gt; {&lt;br /&gt;
          // Filtra só se não tem nada útil&lt;br /&gt;
          const hasName = (s.name || s.n || &amp;quot;&amp;quot;).trim() !== &amp;quot;&amp;quot;;&lt;br /&gt;
          const hasIcon = (s.icon || &amp;quot;&amp;quot;).trim() !== &amp;quot;&amp;quot;;&lt;br /&gt;
          const hasRef = (s.refS || s.refM || &amp;quot;&amp;quot;).toString().trim() !== &amp;quot;&amp;quot;;&lt;br /&gt;
          return hasName || hasIcon || hasRef;&lt;br /&gt;
        })&lt;br /&gt;
        .map((s) =&amp;gt; {&lt;br /&gt;
          const name = (s.name || s.n || &amp;quot;&amp;quot;).trim();&lt;br /&gt;
          const desc = chooseDescFrom(s).replace(/'''(.*?)'''/g, &amp;quot;&amp;lt;b&amp;gt;$1&amp;lt;/b&amp;gt;&amp;quot;);&lt;br /&gt;
          const attrsHTML = renderSubAttributesFromObj(s, L);&lt;br /&gt;
          return {&lt;br /&gt;
            name,&lt;br /&gt;
            level: (s.level || &amp;quot;&amp;quot;).toString().trim(),&lt;br /&gt;
            desc,&lt;br /&gt;
            descPt: s.descPt || (s.desc_i18n &amp;amp;&amp;amp; s.desc_i18n.pt) || &amp;quot;&amp;quot;,&lt;br /&gt;
            descEn: s.descEn || (s.desc_i18n &amp;amp;&amp;amp; s.desc_i18n.en) || &amp;quot;&amp;quot;,&lt;br /&gt;
            descEs: s.descEs || (s.desc_i18n &amp;amp;&amp;amp; s.desc_i18n.es) || &amp;quot;&amp;quot;,&lt;br /&gt;
            descPl: s.descPl || (s.desc_i18n &amp;amp;&amp;amp; s.desc_i18n.pl) || &amp;quot;&amp;quot;,&lt;br /&gt;
            attrs: &amp;quot;&amp;quot;,&lt;br /&gt;
            icon: s.icon || &amp;quot;&amp;quot;,&lt;br /&gt;
            iconURL: s.icon ? filePathURL(s.icon) : &amp;quot;&amp;quot;,&lt;br /&gt;
            video: s.video ? filePathURL(s.video) : &amp;quot;&amp;quot;,&lt;br /&gt;
            subs: Array.isArray(s.subs) ? s.subs : null,&lt;br /&gt;
            subattrs: s,&lt;br /&gt;
            flags: Array.isArray(s.flags) ? s.flags : null,&lt;br /&gt;
            back:&lt;br /&gt;
              s.back === true ||&lt;br /&gt;
                s.back === &amp;quot;true&amp;quot; ||&lt;br /&gt;
                s.back === &amp;quot;yes&amp;quot; ||&lt;br /&gt;
                s.back === &amp;quot;1&amp;quot;&lt;br /&gt;
                ? &amp;quot;true&amp;quot;&lt;br /&gt;
                : null,&lt;br /&gt;
            weapon: s.weapon || null,&lt;br /&gt;
          };&lt;br /&gt;
        });&lt;br /&gt;
      const fragment = document.createDocumentFragment();&lt;br /&gt;
      items.forEach((it, iIdx) =&amp;gt; {&lt;br /&gt;
        const node = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
        node.className = &amp;quot;skill-icon&amp;quot;;&lt;br /&gt;
        node.dataset.nested = &amp;quot;1&amp;quot;;&lt;br /&gt;
        node.dataset.nome = it.name || &amp;quot;&amp;quot;;&lt;br /&gt;
        node.dataset.parentIndex = parentIndexSnapshot;&lt;br /&gt;
        // Constrói o caminho completo para sub-subskills&lt;br /&gt;
        // IMPORTANTE: O cache NÃO inclui o nome da skill principal no caminho&lt;br /&gt;
        // Formato do cache: &amp;quot;SubskillName&amp;quot; ou &amp;quot;SubskillName:SubSubskillName&amp;quot; (sem o nome da skill principal)&lt;br /&gt;
        let fullPath = it.name || &amp;quot;&amp;quot;;&lt;br /&gt;
        if (parentIconEl) {&lt;br /&gt;
          // Se o pai é uma subskill (tem nested), adiciona o nome do pai ao caminho&lt;br /&gt;
          if (parentIconEl.dataset.nested === &amp;quot;1&amp;quot;) {&lt;br /&gt;
            // Se o pai tem subName, usa ele (já está no formato correto, sem nome da skill principal)&lt;br /&gt;
            if (&lt;br /&gt;
              parentIconEl.dataset.subName &amp;amp;&amp;amp;&lt;br /&gt;
              parentIconEl.dataset.subName.trim() !== &amp;quot;&amp;quot;&lt;br /&gt;
            ) {&lt;br /&gt;
              fullPath = `${parentIconEl.dataset.subName}:${it.name || &amp;quot;&amp;quot;}`;&lt;br /&gt;
            } else {&lt;br /&gt;
              // Se o pai não tem subName, é a primeira subskill, então usa apenas o nome do pai&lt;br /&gt;
              const parentName = (&lt;br /&gt;
                parentIconEl.dataset.nome ||&lt;br /&gt;
                parentIconEl.dataset.name ||&lt;br /&gt;
                &amp;quot;&amp;quot;&lt;br /&gt;
              ).trim();&lt;br /&gt;
              fullPath = `${parentName}:${it.name || &amp;quot;&amp;quot;}`;&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
          // Se o pai é uma skill principal (não é nested), o caminho é apenas o nome da subskill atual&lt;br /&gt;
          // (já está definido como it.name acima)&lt;br /&gt;
        }&lt;br /&gt;
        node.dataset.subName = fullPath;&lt;br /&gt;
        const subSlug = slugify(it.name || &amp;quot;&amp;quot;);&lt;br /&gt;
        if (subSlug) node.dataset.slug = subSlug;&lt;br /&gt;
        if (it.level) node.dataset.level = it.level;&lt;br /&gt;
        if (it.desc) node.dataset.desc = it.desc;&lt;br /&gt;
        if (it.descPt) node.dataset.descPt = it.descPt;&lt;br /&gt;
        if (it.descEn) node.dataset.descEn = it.descEn;&lt;br /&gt;
        if (it.descEs) node.dataset.descEs = it.descEs;&lt;br /&gt;
        if (it.descPl) node.dataset.descPl = it.descPl;&lt;br /&gt;
        if (it.video) node.dataset.video = it.video;&lt;br /&gt;
        if (it.subs) node.dataset.subs = JSON.stringify(it.subs);&lt;br /&gt;
        if (it.subattrs) node.dataset.subattrs = JSON.stringify(it.subattrs);&lt;br /&gt;
        if (it.flags) node.dataset.flags = JSON.stringify(it.flags);&lt;br /&gt;
        if (it.back) node.dataset.back = it.back;&lt;br /&gt;
        if (&lt;br /&gt;
          it.weapon &amp;amp;&amp;amp;&lt;br /&gt;
          typeof it.weapon === &amp;quot;object&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
          Object.keys(it.weapon).length &amp;gt; 0&lt;br /&gt;
        ) {&lt;br /&gt;
          try {&lt;br /&gt;
            node.dataset.weapon = JSON.stringify(it.weapon);&lt;br /&gt;
          } catch (e) {&lt;br /&gt;
            console.error(&lt;br /&gt;
              &amp;quot;[Skills] Erro ao serializar weapon de subskill&amp;quot;,&lt;br /&gt;
              it.name,&lt;br /&gt;
              e&lt;br /&gt;
            );&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        const img = document.createElement(&amp;quot;img&amp;quot;);&lt;br /&gt;
        img.alt = &amp;quot;&amp;quot;;&lt;br /&gt;
        img.src = it.iconURL;&lt;br /&gt;
        img.decoding = &amp;quot;async&amp;quot;;&lt;br /&gt;
        img.loading = &amp;quot;lazy&amp;quot;;&lt;br /&gt;
        img.width = 50;&lt;br /&gt;
        img.height = 50;&lt;br /&gt;
        node.appendChild(img);&lt;br /&gt;
        fragment.appendChild(node);&lt;br /&gt;
      });&lt;br /&gt;
      const templateClone = fragment.cloneNode(true);&lt;br /&gt;
      iconsBar.innerHTML = &amp;quot;&amp;quot;;&lt;br /&gt;
      iconsBar.appendChild(fragment);&lt;br /&gt;
      animateIconsBarEntrance();&lt;br /&gt;
      wireClicksForCurrentBar();&lt;br /&gt;
      // Remove qualquer toggle antigo que possa aparecer&lt;br /&gt;
      const oldToggle3 = iconsBar.querySelector(&amp;quot;.weapon-bar-toggle&amp;quot;);&lt;br /&gt;
      if (oldToggle3) oldToggle3.remove();&lt;br /&gt;
      // Reaplica classes de weapon após renderizar subskills&lt;br /&gt;
      reapplyWeaponClassesToBar();&lt;br /&gt;
      const b2 = ensureBackButton();&lt;br /&gt;
      if (b2) b2.classList.add(&amp;quot;peek&amp;quot;);&lt;br /&gt;
      // Atualiza a posição do botão back após subskills serem renderizadas&lt;br /&gt;
      requestAnimationFrame(() =&amp;gt; {&lt;br /&gt;
        const backWrap = document.querySelector(&amp;quot;.skills-back-wrapper&amp;quot;);&lt;br /&gt;
        if (backWrap &amp;amp;&amp;amp; backWrap.style.display !== &amp;quot;none&amp;quot;) {&lt;br /&gt;
          const rail = iconsBar.closest(&amp;quot;.top-rail.skills&amp;quot;);&lt;br /&gt;
          const wrap = rail ? rail.parentElement : null;&lt;br /&gt;
          if (rail &amp;amp;&amp;amp; wrap &amp;amp;&amp;amp; wrap.classList.contains(&amp;quot;skills-rail-wrap&amp;quot;)) {&lt;br /&gt;
            const railRect = rail.getBoundingClientRect();&lt;br /&gt;
            const wrapRect = wrap.getBoundingClientRect();&lt;br /&gt;
            const railLeft = railRect.left - wrapRect.left;&lt;br /&gt;
            // Posiciona na borda esquerda do rail (botão fica atrás com translateX)&lt;br /&gt;
            backWrap.style.left = railLeft + &amp;quot;px&amp;quot;;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
      if (cacheKey) {&lt;br /&gt;
        subBarTemplateCache.set(cacheKey, {&lt;br /&gt;
          template: templateClone,&lt;br /&gt;
          lang: langKey,&lt;br /&gt;
        });&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    window.addEventListener(&amp;quot;gla:langChanged&amp;quot;, () =&amp;gt; {&lt;br /&gt;
      subBarTemplateCache.clear();&lt;br /&gt;
      const skillsRoot = document.getElementById(&amp;quot;skills&amp;quot;);&lt;br /&gt;
      const i18nMap = skillsRoot&lt;br /&gt;
        ? JSON.parse(skillsRoot.dataset.i18nAttrs || &amp;quot;{}&amp;quot;)&lt;br /&gt;
        : {};&lt;br /&gt;
      const lang = getLangKey();&lt;br /&gt;
      Array.from(iconsBar.querySelectorAll(&amp;quot;.skill-icon&amp;quot;)).forEach((icon) =&amp;gt; {&lt;br /&gt;
        const pack = {&lt;br /&gt;
          pt: icon.dataset.descPt || &amp;quot;&amp;quot;,&lt;br /&gt;
          en: icon.dataset.descEn || &amp;quot;&amp;quot;,&lt;br /&gt;
          es: icon.dataset.descEs || &amp;quot;&amp;quot;,&lt;br /&gt;
          pl: icon.dataset.descPl || &amp;quot;&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
        const chosen = (&lt;br /&gt;
          pack[lang] ||&lt;br /&gt;
          pack.pt ||&lt;br /&gt;
          pack.en ||&lt;br /&gt;
          pack.es ||&lt;br /&gt;
          pack.pl ||&lt;br /&gt;
          icon.dataset.desc ||&lt;br /&gt;
          &amp;quot;&amp;quot;&lt;br /&gt;
        ).trim();&lt;br /&gt;
        if (chosen) icon.dataset.desc = chosen;&lt;br /&gt;
      });&lt;br /&gt;
      barStack.forEach((frame) =&amp;gt; {&lt;br /&gt;
        (frame.items || []).forEach((it) =&amp;gt; {&lt;br /&gt;
          const pack = {&lt;br /&gt;
            pt: it.descPt,&lt;br /&gt;
            en: it.descEn,&lt;br /&gt;
            es: it.descEs,&lt;br /&gt;
            pl: it.descPl,&lt;br /&gt;
          };&lt;br /&gt;
          const chosen =&lt;br /&gt;
            pack[lang] ||&lt;br /&gt;
            pack.pt ||&lt;br /&gt;
            pack.en ||&lt;br /&gt;
            pack.es ||&lt;br /&gt;
            pack.pl ||&lt;br /&gt;
            it.desc ||&lt;br /&gt;
            &amp;quot;&amp;quot;;&lt;br /&gt;
          it.desc = chosen;&lt;br /&gt;
        });&lt;br /&gt;
      });&lt;br /&gt;
      if (descBox) {&lt;br /&gt;
        applyFlagTooltips(descBox);&lt;br /&gt;
      }&lt;br /&gt;
      const activeIcon = window.__lastActiveSkillIcon;&lt;br /&gt;
      if (activeIcon &amp;amp;&amp;amp; activeIcon.dataset.weapon) {&lt;br /&gt;
        activateSkill(activeIcon, {&lt;br /&gt;
          openSubs: false,&lt;br /&gt;
        });&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    wireClicksForCurrentBar();&lt;br /&gt;
&lt;br /&gt;
    // Inicializa o sistema de swap de personagens (genérico)&lt;br /&gt;
    // Aguarda um pouco para garantir que todos os ícones foram renderizados&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
      initializeActiveCharacter();&lt;br /&gt;
    }, 100);&lt;br /&gt;
&lt;br /&gt;
    const b0 = ensureBackButton();&lt;br /&gt;
    if (b0) {&lt;br /&gt;
      b0.classList.add(&amp;quot;peek&amp;quot;);&lt;br /&gt;
      b0.style.alignSelf = &amp;quot;stretch&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Move inicialização de tooltip para requestIdleCallback (não crítico)&lt;br /&gt;
    if (&amp;quot;requestIdleCallback&amp;quot; in window) {&lt;br /&gt;
      requestIdleCallback(&lt;br /&gt;
        () =&amp;gt; {&lt;br /&gt;
          (function initSkillTooltip() {&lt;br /&gt;
            if (document.querySelector(&amp;quot;.skill-tooltip&amp;quot;)) return;&lt;br /&gt;
            const tip = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
            tip.className = &amp;quot;skill-tooltip&amp;quot;;&lt;br /&gt;
            tip.setAttribute(&amp;quot;role&amp;quot;, &amp;quot;tooltip&amp;quot;);&lt;br /&gt;
            tip.setAttribute(&amp;quot;aria-hidden&amp;quot;, &amp;quot;true&amp;quot;);&lt;br /&gt;
            document.body.appendChild(tip);&lt;br /&gt;
            const lockUntilRef = {&lt;br /&gt;
              value: 0,&lt;br /&gt;
            };&lt;br /&gt;
            function measureAndPos(el) {&lt;br /&gt;
              if (!el || tip.getAttribute(&amp;quot;aria-hidden&amp;quot;) === &amp;quot;true&amp;quot;) return;&lt;br /&gt;
              tip.style.left = &amp;quot;0px&amp;quot;;&lt;br /&gt;
              tip.style.top = &amp;quot;0px&amp;quot;;&lt;br /&gt;
              const rect = el.getBoundingClientRect();&lt;br /&gt;
              const tr = tip.getBoundingClientRect();&lt;br /&gt;
              let left = Math.round(rect.left + (rect.width - tr.width) / 2);&lt;br /&gt;
              left = Math.max(&lt;br /&gt;
                8,&lt;br /&gt;
                Math.min(left, window.innerWidth - tr.width - 8)&lt;br /&gt;
              );&lt;br /&gt;
              const coarse =&lt;br /&gt;
                (window.matchMedia &amp;amp;&amp;amp;&lt;br /&gt;
                  matchMedia(&amp;quot;(pointer: coarse)&amp;quot;).matches) ||&lt;br /&gt;
                window.innerWidth &amp;lt;= 600;&lt;br /&gt;
              let top = coarse&lt;br /&gt;
                ? Math.round(rect.bottom + 10)&lt;br /&gt;
                : Math.round(rect.top - tr.height - 8);&lt;br /&gt;
              if (top &amp;lt; 8) top = Math.round(rect.bottom + 10);&lt;br /&gt;
              tip.style.left = left + &amp;quot;px&amp;quot;;&lt;br /&gt;
              tip.style.top = top + &amp;quot;px&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            function show(el, text) {&lt;br /&gt;
              tip.textContent = text || &amp;quot;&amp;quot;;&lt;br /&gt;
              tip.setAttribute(&amp;quot;aria-hidden&amp;quot;, &amp;quot;false&amp;quot;);&lt;br /&gt;
              measureAndPos(el);&lt;br /&gt;
              tip.style.opacity = &amp;quot;1&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            function hide() {&lt;br /&gt;
              tip.setAttribute(&amp;quot;aria-hidden&amp;quot;, &amp;quot;true&amp;quot;);&lt;br /&gt;
              tip.style.opacity = &amp;quot;0&amp;quot;;&lt;br /&gt;
              tip.style.left = &amp;quot;-9999px&amp;quot;;&lt;br /&gt;
              tip.style.top = &amp;quot;-9999px&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
            window.__globalSkillTooltip = {&lt;br /&gt;
              show,&lt;br /&gt;
              hide,&lt;br /&gt;
              measureAndPos,&lt;br /&gt;
              lockUntil: lockUntilRef,&lt;br /&gt;
            };&lt;br /&gt;
            Array.from(&lt;br /&gt;
              document.querySelectorAll(&amp;quot;.icon-bar .skill-icon&amp;quot;)&lt;br /&gt;
            ).forEach((icon) =&amp;gt; {&lt;br /&gt;
              if (&lt;br /&gt;
                icon.dataset.weaponToggle === &amp;quot;1&amp;quot; ||&lt;br /&gt;
                icon.classList.contains(&amp;quot;weapon-bar-toggle&amp;quot;)&lt;br /&gt;
              )&lt;br /&gt;
                return;&lt;br /&gt;
              if (icon.dataset.tipwired) return;&lt;br /&gt;
              icon.dataset.tipwired = &amp;quot;1&amp;quot;;&lt;br /&gt;
              const label =&lt;br /&gt;
                icon.dataset.nome || icon.dataset.name || icon.title || &amp;quot;&amp;quot;;&lt;br /&gt;
              if (label &amp;amp;&amp;amp; !icon.hasAttribute(&amp;quot;aria-label&amp;quot;))&lt;br /&gt;
                icon.setAttribute(&amp;quot;aria-label&amp;quot;, label);&lt;br /&gt;
              if (icon.hasAttribute(&amp;quot;title&amp;quot;)) icon.removeAttribute(&amp;quot;title&amp;quot;);&lt;br /&gt;
              const img = icon.querySelector(&amp;quot;img&amp;quot;);&lt;br /&gt;
              if (img) {&lt;br /&gt;
                const imgAlt = img.getAttribute(&amp;quot;alt&amp;quot;) || &amp;quot;&amp;quot;;&lt;br /&gt;
                const imgTitle = img.getAttribute(&amp;quot;title&amp;quot;) || &amp;quot;&amp;quot;;&lt;br /&gt;
                if (!label &amp;amp;&amp;amp; (imgAlt || imgTitle))&lt;br /&gt;
                  icon.setAttribute(&amp;quot;aria-label&amp;quot;, imgAlt || imgTitle);&lt;br /&gt;
                img.setAttribute(&amp;quot;alt&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
                if (img.hasAttribute(&amp;quot;title&amp;quot;)) img.removeAttribute(&amp;quot;title&amp;quot;);&lt;br /&gt;
              }&lt;br /&gt;
              icon.addEventListener(&amp;quot;mouseenter&amp;quot;, () =&amp;gt; show(icon, label));&lt;br /&gt;
              icon.addEventListener(&amp;quot;mousemove&amp;quot;, () =&amp;gt; {&lt;br /&gt;
                if (performance.now() &amp;gt;= lockUntilRef.value)&lt;br /&gt;
                  measureAndPos(icon);&lt;br /&gt;
              });&lt;br /&gt;
              icon.addEventListener(&amp;quot;click&amp;quot;, () =&amp;gt; {&lt;br /&gt;
                lockUntilRef.value = performance.now() + 240;&lt;br /&gt;
                measureAndPos(icon);&lt;br /&gt;
              });&lt;br /&gt;
              icon.addEventListener(&amp;quot;mouseleave&amp;quot;, hide);&lt;br /&gt;
            });&lt;br /&gt;
            Array.from(&lt;br /&gt;
              document.querySelectorAll(&amp;quot;.subskills-rail .subicon&amp;quot;)&lt;br /&gt;
            ).forEach((sub) =&amp;gt; {&lt;br /&gt;
              if (sub.dataset.tipwired) return;&lt;br /&gt;
              sub.dataset.tipwired = &amp;quot;1&amp;quot;;&lt;br /&gt;
              const label =&lt;br /&gt;
                sub.getAttribute(&amp;quot;title&amp;quot;) ||&lt;br /&gt;
                sub.getAttribute(&amp;quot;aria-label&amp;quot;) ||&lt;br /&gt;
                &amp;quot;&amp;quot;;&lt;br /&gt;
              if (label &amp;amp;&amp;amp; !sub.hasAttribute(&amp;quot;aria-label&amp;quot;))&lt;br /&gt;
                sub.setAttribute(&amp;quot;aria-label&amp;quot;, label);&lt;br /&gt;
              if (sub.hasAttribute(&amp;quot;title&amp;quot;)) sub.removeAttribute(&amp;quot;title&amp;quot;);&lt;br /&gt;
              sub.addEventListener(&amp;quot;mouseenter&amp;quot;, () =&amp;gt; show(sub, label));&lt;br /&gt;
              sub.addEventListener(&amp;quot;mousemove&amp;quot;, () =&amp;gt; {&lt;br /&gt;
                if (performance.now() &amp;gt;= lockUntilRef.value) measureAndPos(sub);&lt;br /&gt;
              });&lt;br /&gt;
              sub.addEventListener(&amp;quot;click&amp;quot;, () =&amp;gt; {&lt;br /&gt;
                lockUntilRef.value = performance.now() + 240;&lt;br /&gt;
                measureAndPos(sub);&lt;br /&gt;
              });&lt;br /&gt;
              sub.addEventListener(&amp;quot;mouseleave&amp;quot;, hide);&lt;br /&gt;
            });&lt;br /&gt;
            window.addEventListener(&lt;br /&gt;
              &amp;quot;scroll&amp;quot;,&lt;br /&gt;
              () =&amp;gt; {&lt;br /&gt;
                const visible = document.querySelector(&lt;br /&gt;
                  '.skill-tooltip[aria-hidden=&amp;quot;false&amp;quot;]'&lt;br /&gt;
                );&lt;br /&gt;
                if (!visible) return;&lt;br /&gt;
                const target =&lt;br /&gt;
                  document.querySelector(&amp;quot;.subskills-rail .subicon:hover&amp;quot;) ||&lt;br /&gt;
                  document.querySelector(&amp;quot;.subskills-rail .subicon.active&amp;quot;) ||&lt;br /&gt;
                  document.querySelector(&amp;quot;.icon-bar .skill-icon:hover&amp;quot;) ||&lt;br /&gt;
                  document.querySelector(&amp;quot;.icon-bar .skill-icon.active&amp;quot;);&lt;br /&gt;
                measureAndPos(target);&lt;br /&gt;
              },&lt;br /&gt;
              true&lt;br /&gt;
            );&lt;br /&gt;
            window.addEventListener(&amp;quot;resize&amp;quot;, () =&amp;gt; {&lt;br /&gt;
              const target =&lt;br /&gt;
                document.querySelector(&amp;quot;.subskills-rail .subicon:hover&amp;quot;) ||&lt;br /&gt;
                document.querySelector(&amp;quot;.subskills-rail .subicon.active&amp;quot;) ||&lt;br /&gt;
                document.querySelector(&amp;quot;.icon-bar .skill-icon:hover&amp;quot;) ||&lt;br /&gt;
                document.querySelector(&amp;quot;.icon-bar .skill-icon.active&amp;quot;);&lt;br /&gt;
              measureAndPos(target);&lt;br /&gt;
            });&lt;br /&gt;
          })();&lt;br /&gt;
        },&lt;br /&gt;
        { timeout: 2000 }&lt;br /&gt;
      );&lt;br /&gt;
    } else {&lt;br /&gt;
      // Fallback para navegadores sem requestIdleCallback&lt;br /&gt;
      setTimeout(() =&amp;gt; {&lt;br /&gt;
        (function initSkillTooltip() {&lt;br /&gt;
          if (document.querySelector(&amp;quot;.skill-tooltip&amp;quot;)) return;&lt;br /&gt;
          const tip = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
          tip.className = &amp;quot;skill-tooltip&amp;quot;;&lt;br /&gt;
          tip.setAttribute(&amp;quot;role&amp;quot;, &amp;quot;tooltip&amp;quot;);&lt;br /&gt;
          tip.setAttribute(&amp;quot;aria-hidden&amp;quot;, &amp;quot;true&amp;quot;);&lt;br /&gt;
          document.body.appendChild(tip);&lt;br /&gt;
          window.__globalSkillTooltip = {&lt;br /&gt;
            show: (el, text) =&amp;gt; {&lt;br /&gt;
              if (!el || !text) return;&lt;br /&gt;
              tip.textContent = text;&lt;br /&gt;
              tip.setAttribute(&amp;quot;aria-hidden&amp;quot;, &amp;quot;false&amp;quot;);&lt;br /&gt;
              measureAndPos(el);&lt;br /&gt;
            },&lt;br /&gt;
            hide: () =&amp;gt; {&lt;br /&gt;
              tip.setAttribute(&amp;quot;aria-hidden&amp;quot;, &amp;quot;true&amp;quot;);&lt;br /&gt;
              tip.style.left = &amp;quot;-9999px&amp;quot;;&lt;br /&gt;
              tip.style.top = &amp;quot;-9999px&amp;quot;;&lt;br /&gt;
            },&lt;br /&gt;
            measureAndPos: (el) =&amp;gt; {&lt;br /&gt;
              if (!el || tip.getAttribute(&amp;quot;aria-hidden&amp;quot;) === &amp;quot;true&amp;quot;) return;&lt;br /&gt;
              const rect = el.getBoundingClientRect();&lt;br /&gt;
              const tipRect = tip.getBoundingClientRect();&lt;br /&gt;
              let left = rect.left + rect.width / 2 - tipRect.width / 2;&lt;br /&gt;
              let top = rect.top - tipRect.height - 8;&lt;br /&gt;
              if (left &amp;lt; 8) left = 8;&lt;br /&gt;
              if (left + tipRect.width &amp;gt; window.innerWidth - 8)&lt;br /&gt;
                left = window.innerWidth - tipRect.width - 8;&lt;br /&gt;
              if (top &amp;lt; 8) top = rect.bottom + 8;&lt;br /&gt;
              tip.style.left = left + &amp;quot;px&amp;quot;;&lt;br /&gt;
              tip.style.top = top + &amp;quot;px&amp;quot;;&lt;br /&gt;
            },&lt;br /&gt;
            lockUntil: { value: 0 },&lt;br /&gt;
          };&lt;br /&gt;
          const { measureAndPos } = window.__globalSkillTooltip;&lt;br /&gt;
          window.addEventListener(&lt;br /&gt;
            &amp;quot;scroll&amp;quot;,&lt;br /&gt;
            () =&amp;gt; {&lt;br /&gt;
              const visible = document.querySelector(&lt;br /&gt;
                '.skill-tooltip[aria-hidden=&amp;quot;false&amp;quot;]'&lt;br /&gt;
              );&lt;br /&gt;
              if (!visible) return;&lt;br /&gt;
              const target =&lt;br /&gt;
                document.querySelector(&amp;quot;.subskills-rail .subicon:hover&amp;quot;) ||&lt;br /&gt;
                document.querySelector(&amp;quot;.subskills-rail .subicon.active&amp;quot;) ||&lt;br /&gt;
                document.querySelector(&amp;quot;.icon-bar .skill-icon:hover&amp;quot;) ||&lt;br /&gt;
                document.querySelector(&amp;quot;.icon-bar .skill-icon.active&amp;quot;);&lt;br /&gt;
              measureAndPos(target);&lt;br /&gt;
            },&lt;br /&gt;
            true&lt;br /&gt;
          );&lt;br /&gt;
          window.addEventListener(&amp;quot;resize&amp;quot;, () =&amp;gt; {&lt;br /&gt;
            const target =&lt;br /&gt;
              document.querySelector(&amp;quot;.subskills-rail .subicon:hover&amp;quot;) ||&lt;br /&gt;
              document.querySelector(&amp;quot;.subskills-rail .subicon.active&amp;quot;) ||&lt;br /&gt;
              document.querySelector(&amp;quot;.icon-bar .skill-icon:hover&amp;quot;) ||&lt;br /&gt;
              document.querySelector(&amp;quot;.icon-bar .skill-icon.active&amp;quot;);&lt;br /&gt;
            measureAndPos(target);&lt;br /&gt;
          });&lt;br /&gt;
        })();&lt;br /&gt;
      }, 100);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    (function initTabs() {&lt;br /&gt;
      const tabs = Array.from(document.querySelectorAll(&amp;quot;.tab-btn&amp;quot;));&lt;br /&gt;
      if (!tabs.length) return;&lt;br /&gt;
      const contents = Array.from(document.querySelectorAll(&amp;quot;.tab-content&amp;quot;));&lt;br /&gt;
      const characterBox = document.querySelector(&amp;quot;.character-box&amp;quot;);&lt;br /&gt;
      let wrapper = characterBox.querySelector(&amp;quot;.tabs-height-wrapper&amp;quot;);&lt;br /&gt;
      if (!wrapper) {&lt;br /&gt;
        wrapper = document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
        wrapper.className = &amp;quot;tabs-height-wrapper&amp;quot;;&lt;br /&gt;
        contents.forEach((c) =&amp;gt; {&lt;br /&gt;
          wrapper.appendChild(c);&lt;br /&gt;
        });&lt;br /&gt;
        const tabsElement = characterBox.querySelector(&amp;quot;.character-tabs&amp;quot;);&lt;br /&gt;
        if (tabsElement &amp;amp;&amp;amp; tabsElement.nextSibling) {&lt;br /&gt;
          characterBox.insertBefore(wrapper, tabsElement.nextSibling);&lt;br /&gt;
        } else {&lt;br /&gt;
          characterBox.appendChild(wrapper);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      async function smoothHeightTransition(fromTab, toTab) {&lt;br /&gt;
        if (!wrapper) return Promise.resolve();&lt;br /&gt;
        const scrollY = window.scrollY;&lt;br /&gt;
        const currentHeight = wrapper.getBoundingClientRect().height;&lt;br /&gt;
        await new Promise((resolve) =&amp;gt; {&lt;br /&gt;
          const videoContainers = toTab.querySelectorAll(&amp;quot;.video-container&amp;quot;);&lt;br /&gt;
          const contentCard = toTab.querySelector(&amp;quot;.content-card&amp;quot;);&lt;br /&gt;
          if (videoContainers.length === 0) {&lt;br /&gt;
            requestAnimationFrame(() =&amp;gt; {&lt;br /&gt;
              requestAnimationFrame(() =&amp;gt; {&lt;br /&gt;
                requestAnimationFrame(() =&amp;gt; resolve());&lt;br /&gt;
              });&lt;br /&gt;
            });&lt;br /&gt;
            return;&lt;br /&gt;
          }&lt;br /&gt;
          let lastHeight = 0;&lt;br /&gt;
          let stableCount = 0;&lt;br /&gt;
          const checksNeeded = 3;&lt;br /&gt;
          let totalChecks = 0;&lt;br /&gt;
          const maxChecks = 15;&lt;br /&gt;
          function checkStability() {&lt;br /&gt;
            totalChecks++;&lt;br /&gt;
            const currentTabHeight = toTab.scrollHeight;&lt;br /&gt;
            if (Math.abs(currentTabHeight - lastHeight) &amp;lt; 5) {&lt;br /&gt;
              stableCount++;&lt;br /&gt;
            } else {&lt;br /&gt;
              stableCount = 0;&lt;br /&gt;
            }&lt;br /&gt;
            lastHeight = currentTabHeight;&lt;br /&gt;
            if (stableCount &amp;gt;= checksNeeded || totalChecks &amp;gt;= maxChecks) {&lt;br /&gt;
              resolve();&lt;br /&gt;
            } else {&lt;br /&gt;
              setTimeout(checkStability, 50);&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
          setTimeout(checkStability, 50);&lt;br /&gt;
        });&lt;br /&gt;
        const nextHeight = toTab.getBoundingClientRect().height;&lt;br /&gt;
        const finalHeight = Math.max(nextHeight, 100);&lt;br /&gt;
        if (Math.abs(finalHeight - currentHeight) &amp;lt; 30) {&lt;br /&gt;
          wrapper.style.height = &amp;quot;&amp;quot;;&lt;br /&gt;
          return Promise.resolve();&lt;br /&gt;
        }&lt;br /&gt;
        wrapper.style.overflow = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
        wrapper.style.height = currentHeight + &amp;quot;px&amp;quot;;&lt;br /&gt;
        wrapper.offsetHeight;&lt;br /&gt;
        wrapper.style.transition = &amp;quot;height 0.3s cubic-bezier(0.4, 0, 0.2, 1)&amp;quot;;&lt;br /&gt;
        requestAnimationFrame(() =&amp;gt; {&lt;br /&gt;
          wrapper.style.height = finalHeight + &amp;quot;px&amp;quot;;&lt;br /&gt;
        });&lt;br /&gt;
        return new Promise((resolve) =&amp;gt; {&lt;br /&gt;
          setTimeout(() =&amp;gt; {&lt;br /&gt;
            wrapper.style.height = &amp;quot;&amp;quot;;&lt;br /&gt;
            wrapper.style.transition = &amp;quot;&amp;quot;;&lt;br /&gt;
            wrapper.style.overflow = &amp;quot;&amp;quot;;&lt;br /&gt;
            resolve();&lt;br /&gt;
          }, 320);&lt;br /&gt;
        });&lt;br /&gt;
      }&lt;br /&gt;
      tabs.forEach((btn) =&amp;gt; {&lt;br /&gt;
        if (btn.dataset.wiredTab) return;&lt;br /&gt;
        btn.dataset.wiredTab = &amp;quot;1&amp;quot;;&lt;br /&gt;
        btn.addEventListener(&amp;quot;click&amp;quot;, () =&amp;gt; {&lt;br /&gt;
          const target = btn.getAttribute(&amp;quot;data-tab&amp;quot;);&lt;br /&gt;
          const currentActive = contents.find((c) =&amp;gt;&lt;br /&gt;
            c.classList.contains(&amp;quot;active&amp;quot;)&lt;br /&gt;
          );&lt;br /&gt;
          const nextActive = contents.find((c) =&amp;gt; c.id === target);&lt;br /&gt;
          if (currentActive === nextActive) return;&lt;br /&gt;
          document.body.classList.add(&amp;quot;transitioning-tabs&amp;quot;);&lt;br /&gt;
          if (currentActive) {&lt;br /&gt;
            currentActive.style.opacity = &amp;quot;0&amp;quot;;&lt;br /&gt;
            currentActive.style.transform = &amp;quot;translateY(-8px)&amp;quot;;&lt;br /&gt;
          }&lt;br /&gt;
          setTimeout(async () =&amp;gt; {&lt;br /&gt;
            contents.forEach((c) =&amp;gt; {&lt;br /&gt;
              if (c !== nextActive) {&lt;br /&gt;
                c.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
                c.classList.remove(&amp;quot;active&amp;quot;);&lt;br /&gt;
              }&lt;br /&gt;
            });&lt;br /&gt;
            tabs.forEach((b) =&amp;gt; b.classList.toggle(&amp;quot;active&amp;quot;, b === btn));&lt;br /&gt;
            if (nextActive) {&lt;br /&gt;
              nextActive.classList.add(&amp;quot;active&amp;quot;);&lt;br /&gt;
              nextActive.style.display = &amp;quot;block&amp;quot;;&lt;br /&gt;
              nextActive.style.opacity = &amp;quot;0&amp;quot;;&lt;br /&gt;
              nextActive.style.visibility = &amp;quot;hidden&amp;quot;;&lt;br /&gt;
              nextActive.offsetHeight;&lt;br /&gt;
              try {&lt;br /&gt;
                if (target === &amp;quot;skills&amp;quot;) {&lt;br /&gt;
                  const tabEl = document.getElementById(target);&lt;br /&gt;
                  if (tabEl) {&lt;br /&gt;
                    const allIcons = tabEl.querySelectorAll(&lt;br /&gt;
                      &amp;quot;.icon-bar .skill-icon&amp;quot;&lt;br /&gt;
                    );&lt;br /&gt;
                    const activeIcon = tabEl.querySelector(&lt;br /&gt;
                      &amp;quot;.icon-bar .skill-icon.active&amp;quot;&lt;br /&gt;
                    );&lt;br /&gt;
                    const firstIcon = tabEl.querySelector(&lt;br /&gt;
                      &amp;quot;.icon-bar .skill-icon&amp;quot;&lt;br /&gt;
                    );&lt;br /&gt;
                    const isFormSwitch = (el) =&amp;gt;&lt;br /&gt;
                      el?.dataset?.formSwitch === &amp;quot;true&amp;quot; ||&lt;br /&gt;
                      el?.getAttribute?.(&amp;quot;data-form-switch&amp;quot;) === &amp;quot;true&amp;quot;;&lt;br /&gt;
                    let toClick = activeIcon &amp;amp;&amp;amp; !isFormSwitch(activeIcon)&lt;br /&gt;
                      ? activeIcon&lt;br /&gt;
                      : null;&lt;br /&gt;
                    if (!toClick)&lt;br /&gt;
                      for (const icon of allIcons || [])&lt;br /&gt;
                        if (!isFormSwitch(icon)) {&lt;br /&gt;
                          toClick = icon;&lt;br /&gt;
                          break;&lt;br /&gt;
                        }&lt;br /&gt;
                    if (!toClick) toClick = firstIcon;&lt;br /&gt;
                    if (toClick) {&lt;br /&gt;
                      const had = document.body.dataset.suppressSkillPlay;&lt;br /&gt;
                      document.body.dataset.suppressSkillPlay = &amp;quot;1&amp;quot;;&lt;br /&gt;
                      toClick.click();&lt;br /&gt;
                      if (had) document.body.dataset.suppressSkillPlay = had;&lt;br /&gt;
                    }&lt;br /&gt;
                  }&lt;br /&gt;
                }&lt;br /&gt;
              } catch (e) { }&lt;br /&gt;
            }&lt;br /&gt;
            if (currentActive &amp;amp;&amp;amp; nextActive) {&lt;br /&gt;
              await smoothHeightTransition(currentActive, nextActive);&lt;br /&gt;
            }&lt;br /&gt;
            if (nextActive) {&lt;br /&gt;
              nextActive.style.visibility = &amp;quot;&amp;quot;;&lt;br /&gt;
              nextActive.style.transform = &amp;quot;translateY(12px)&amp;quot;;&lt;br /&gt;
              requestAnimationFrame(() =&amp;gt; {&lt;br /&gt;
                nextActive.style.opacity = &amp;quot;1&amp;quot;;&lt;br /&gt;
                nextActive.style.transform = &amp;quot;translateY(0)&amp;quot;;&lt;br /&gt;
                setTimeout(() =&amp;gt; {&lt;br /&gt;
                  nextActive.style.opacity = &amp;quot;&amp;quot;;&lt;br /&gt;
                  nextActive.style.transform = &amp;quot;&amp;quot;;&lt;br /&gt;
                  document.body.classList.remove(&amp;quot;transitioning-tabs&amp;quot;);&lt;br /&gt;
                  try {&lt;br /&gt;
                    delete document.body.dataset.suppressSkillPlay;&lt;br /&gt;
                  } catch { }&lt;br /&gt;
                }, 300);&lt;br /&gt;
              });&lt;br /&gt;
            }&lt;br /&gt;
          }, 120);&lt;br /&gt;
          setTimeout(() =&amp;gt; {&lt;br /&gt;
            syncDescHeight();&lt;br /&gt;
            if (target === &amp;quot;skins&amp;quot;) {&lt;br /&gt;
              videosCache.forEach((v) =&amp;gt; {&lt;br /&gt;
                try {&lt;br /&gt;
                  v.pause();&lt;br /&gt;
                } catch (e) { }&lt;br /&gt;
                v.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
              });&lt;br /&gt;
              const vb = getVideoBox();&lt;br /&gt;
              if (vb) {&lt;br /&gt;
                vb.querySelectorAll(&amp;quot;video.skill-video&amp;quot;).forEach((v) =&amp;gt; {&lt;br /&gt;
                  try {&lt;br /&gt;
                    v.pause();&lt;br /&gt;
                  } catch (e) { }&lt;br /&gt;
                  v.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
                });&lt;br /&gt;
              }&lt;br /&gt;
              if (window.__subskills) window.__subskills.hideAll?.(getVideoBox());&lt;br /&gt;
              const placeholder = getVideoBox()?.querySelector(&amp;quot;.video-placeholder&amp;quot;);&lt;br /&gt;
              const vb2 = getVideoBox();&lt;br /&gt;
              if (vb2 &amp;amp;&amp;amp; placeholder) {&lt;br /&gt;
                placeholder.style.display = &amp;quot;none&amp;quot;;&lt;br /&gt;
                placeholder.classList.add(&amp;quot;fade-out&amp;quot;);&lt;br /&gt;
              }&lt;br /&gt;
            } else {&lt;br /&gt;
              const activeIcon = document.querySelector(&lt;br /&gt;
                &amp;quot;.icon-bar .skill-icon.active&amp;quot;&lt;br /&gt;
              );&lt;br /&gt;
              const isFormSwitch = (el) =&amp;gt;&lt;br /&gt;
                el?.dataset?.formSwitch === &amp;quot;true&amp;quot; ||&lt;br /&gt;
                el?.getAttribute?.(&amp;quot;data-form-switch&amp;quot;) === &amp;quot;true&amp;quot;;&lt;br /&gt;
              if (activeIcon &amp;amp;&amp;amp; !isFormSwitch(activeIcon)) activeIcon.click();&lt;br /&gt;
              else {&lt;br /&gt;
                const first = document.querySelector(&lt;br /&gt;
                  &amp;quot;.icon-bar .skill-icon:not([data-form-switch='true'])&amp;quot;&lt;br /&gt;
                );&lt;br /&gt;
                if (first) first.click();&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          }, 450);&lt;br /&gt;
        });&lt;br /&gt;
      });&lt;br /&gt;
    })();&lt;br /&gt;
    (function initSkinsArrows() {&lt;br /&gt;
      const carousel = $(&amp;quot;.skins-carousel&amp;quot;);&lt;br /&gt;
      const wrapper = $(&amp;quot;.skins-carousel-wrapper&amp;quot;);&lt;br /&gt;
      const left = $(&amp;quot;.skins-arrow.left&amp;quot;);&lt;br /&gt;
      const right = $(&amp;quot;.skins-arrow.right&amp;quot;);&lt;br /&gt;
      if (!carousel || !left || !right || !wrapper) return;&lt;br /&gt;
      if (wrapper.dataset.wired) return;&lt;br /&gt;
      wrapper.dataset.wired = &amp;quot;1&amp;quot;;&lt;br /&gt;
      const scrollAmt = () =&amp;gt; Math.round(carousel.clientWidth * 0.6);&lt;br /&gt;
      function setState() {&lt;br /&gt;
        const max = carousel.scrollWidth - carousel.clientWidth;&lt;br /&gt;
        const x = carousel.scrollLeft;&lt;br /&gt;
        const hasLeft = x &amp;gt; 5,&lt;br /&gt;
          hasRight = x &amp;lt; max - 5;&lt;br /&gt;
        left.style.display = hasLeft ? &amp;quot;inline-block&amp;quot; : &amp;quot;none&amp;quot;;&lt;br /&gt;
        right.style.display = hasRight ? &amp;quot;inline-block&amp;quot; : &amp;quot;none&amp;quot;;&lt;br /&gt;
        wrapper.classList.toggle(&amp;quot;has-left&amp;quot;, hasLeft);&lt;br /&gt;
        wrapper.classList.toggle(&amp;quot;has-right&amp;quot;, hasRight);&lt;br /&gt;
        carousel.style.justifyContent = !hasLeft &amp;amp;&amp;amp; !hasRight ? &amp;quot;center&amp;quot; : &amp;quot;&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
      function go(dir) {&lt;br /&gt;
        const max = carousel.scrollWidth - carousel.clientWidth;&lt;br /&gt;
        const next =&lt;br /&gt;
          dir &amp;lt; 0&lt;br /&gt;
            ? Math.max(0, carousel.scrollLeft - scrollAmt())&lt;br /&gt;
            : Math.min(max, carousel.scrollLeft + scrollAmt());&lt;br /&gt;
        carousel.scrollTo({&lt;br /&gt;
          left: next,&lt;br /&gt;
          behavior: &amp;quot;smooth&amp;quot;,&lt;br /&gt;
        });&lt;br /&gt;
      }&lt;br /&gt;
      left.addEventListener(&amp;quot;click&amp;quot;, () =&amp;gt; go(-1));&lt;br /&gt;
      right.addEventListener(&amp;quot;click&amp;quot;, () =&amp;gt; go(1));&lt;br /&gt;
      carousel.addEventListener(&amp;quot;scroll&amp;quot;, setState);&lt;br /&gt;
      new ResizeObserver(setState).observe(carousel);&lt;br /&gt;
      setState();&lt;br /&gt;
    })();&lt;br /&gt;
    function renderAttributes(str) {&lt;br /&gt;
      const skillsRoot = document.getElementById(&amp;quot;skills&amp;quot;);&lt;br /&gt;
      const i18nMap = skillsRoot&lt;br /&gt;
        ? JSON.parse(skillsRoot.dataset.i18nAttrs || &amp;quot;{}&amp;quot;)&lt;br /&gt;
        : {};&lt;br /&gt;
      const langRaw = (&lt;br /&gt;
        document.documentElement.lang ||&lt;br /&gt;
        skillsRoot?.dataset.i18nDefault ||&lt;br /&gt;
        &amp;quot;pt&amp;quot;&lt;br /&gt;
      ).toLowerCase();&lt;br /&gt;
      const langKey = i18nMap[langRaw]&lt;br /&gt;
        ? langRaw&lt;br /&gt;
        : i18nMap[langRaw.split(&amp;quot;-&amp;quot;)[0]]&lt;br /&gt;
          ? langRaw.split(&amp;quot;-&amp;quot;)[0]&lt;br /&gt;
          : &amp;quot;pt&amp;quot;;&lt;br /&gt;
      const L = i18nMap[langKey] ||&lt;br /&gt;
        i18nMap.pt || {&lt;br /&gt;
        cooldown: &amp;quot;Recarga&amp;quot;,&lt;br /&gt;
        energy_gain: &amp;quot;Ganho de energia&amp;quot;,&lt;br /&gt;
        energy_cost: &amp;quot;Custo de energia&amp;quot;,&lt;br /&gt;
        power: &amp;quot;Poder&amp;quot;,&lt;br /&gt;
        power_pvp: &amp;quot;Poder PvP&amp;quot;,&lt;br /&gt;
        level: &amp;quot;Nível&amp;quot;,&lt;br /&gt;
      };&lt;br /&gt;
      const vals = (str || &amp;quot;&amp;quot;).split(&amp;quot;,&amp;quot;).map((v) =&amp;gt; v.trim());&lt;br /&gt;
      // Processa valores, tratando strings vazias e &amp;quot;-&amp;quot; como NaN&lt;br /&gt;
      // IMPORTANTE: ordem fixa é [powerpve, powerpvp, energy, cooldown]&lt;br /&gt;
      const parseValue = (val) =&amp;gt; {&lt;br /&gt;
        if (!val || val === &amp;quot;&amp;quot; || val === &amp;quot;-&amp;quot;) return NaN;&lt;br /&gt;
        const parsed = parseFloat(val);&lt;br /&gt;
        return isNaN(parsed) ? NaN : parsed;&lt;br /&gt;
      };&lt;br /&gt;
      const pve = parseValue(vals[0]);&lt;br /&gt;
      const pvp = parseValue(vals[1]);&lt;br /&gt;
      const ene = parseValue(vals[2]);&lt;br /&gt;
      const cd = parseValue(vals[3]);&lt;br /&gt;
      // Debug: log se houver problema na ordem&lt;br /&gt;
      if (str &amp;amp;&amp;amp; str.includes(&amp;quot;,&amp;quot;) &amp;amp;&amp;amp; !isNaN(cd) &amp;amp;&amp;amp; !isNaN(pvp) &amp;amp;&amp;amp; cd === pvp) {&lt;br /&gt;
        console.warn(&lt;br /&gt;
          &amp;quot;[Skills] renderAttributes: possível problema na ordem dos atributos&amp;quot;,&lt;br /&gt;
          { str, vals, pve, pvp, ene, cd }&lt;br /&gt;
        );&lt;br /&gt;
      }&lt;br /&gt;
      const rows = [];&lt;br /&gt;
      // Ordem de exibição: cooldown, energy, power, power_pvp&lt;br /&gt;
      if (!isNaN(cd)) rows.push([L.cooldown, cd]);&lt;br /&gt;
      if (!isNaN(ene) &amp;amp;&amp;amp; ene !== 0) {&lt;br /&gt;
        const label = ene &amp;gt; 0 ? L.energy_gain : L.energy_cost;&lt;br /&gt;
        rows.push([label, Math.abs(ene)]);&lt;br /&gt;
      }&lt;br /&gt;
      if (!isNaN(pve)) rows.push([L.power, pve]);&lt;br /&gt;
      if (!isNaN(pvp)) rows.push([L.power_pvp, pvp]);&lt;br /&gt;
      // Debug: log se houver valores suspeitos (desabilitado para performance)&lt;br /&gt;
      // if (str &amp;amp;&amp;amp; str.includes(',')) {&lt;br /&gt;
      //     console.log('[Skills] renderAttributes processed', {&lt;br /&gt;
      //         str,&lt;br /&gt;
      //         vals: vals.slice(0, 4),&lt;br /&gt;
      //         parsed: { pve, pvp, ene, cd },&lt;br /&gt;
      //         rows: rows.map(r =&amp;gt; r[0])&lt;br /&gt;
      //     });&lt;br /&gt;
      // }&lt;br /&gt;
      if (!rows.length) return &amp;quot;&amp;quot;;&lt;br /&gt;
      const html = rows&lt;br /&gt;
        .map(&lt;br /&gt;
          ([rowLabel, rowValue]) =&amp;gt;&lt;br /&gt;
            `&amp;lt;div class=&amp;quot;attr-row&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;attr-label&amp;quot;&amp;gt;${rowLabel}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;attr-value&amp;quot;&amp;gt;${rowValue}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;`&lt;br /&gt;
        )&lt;br /&gt;
        .join(&amp;quot;&amp;quot;);&lt;br /&gt;
      return `&amp;lt;div class=&amp;quot;attr-list&amp;quot;&amp;gt;${html}&amp;lt;/div&amp;gt;`;&lt;br /&gt;
    }&lt;br /&gt;
    function syncDescHeight() { }&lt;br /&gt;
    window.addEventListener(&amp;quot;resize&amp;quot;, syncDescHeight);&lt;br /&gt;
    const vbInit = getVideoBox();&lt;br /&gt;
    if (vbInit) new ResizeObserver(syncDescHeight).observe(vbInit);&lt;br /&gt;
    iconItems.forEach((el) =&amp;gt; {&lt;br /&gt;
      const wired = !!el.dataset._sync_wired;&lt;br /&gt;
      if (wired) return;&lt;br /&gt;
      el.dataset._sync_wired = &amp;quot;1&amp;quot;;&lt;br /&gt;
      el.addEventListener(&amp;quot;click&amp;quot;, () =&amp;gt; {&lt;br /&gt;
        Promise.resolve().then(syncDescHeight);&lt;br /&gt;
      });&lt;br /&gt;
    });&lt;br /&gt;
    if (iconsBar) {&lt;br /&gt;
      const scrollWrapper =&lt;br /&gt;
        iconsBar.closest(&amp;quot;.icon-scroll-x&amp;quot;) || iconsBar.parentElement;&lt;br /&gt;
      const scrollContainer =&lt;br /&gt;
        scrollWrapper &amp;amp;&amp;amp; scrollWrapper.classList.contains(&amp;quot;icon-scroll-x&amp;quot;)&lt;br /&gt;
          ? scrollWrapper&lt;br /&gt;
          : iconsBar;&lt;br /&gt;
      addOnce(&lt;br /&gt;
        scrollContainer,&lt;br /&gt;
        &amp;quot;wheel&amp;quot;,&lt;br /&gt;
        (e) =&amp;gt; {&lt;br /&gt;
          if (e.deltaY) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            scrollContainer.scrollLeft += e.deltaY;&lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        { passive: false }&lt;br /&gt;
      ); // passive: false necessário porque usamos preventDefault()&lt;br /&gt;
    }&lt;br /&gt;
    (function maybeInjectFormSkillsOnLoad() {&lt;br /&gt;
      try {&lt;br /&gt;
        const skillsRoot = document.getElementById(&amp;quot;skills&amp;quot;);&lt;br /&gt;
        if (skillsRoot &amp;amp;&amp;amp; iconsBar &amp;amp;&amp;amp; iconItems.length &amp;gt; 0) {&lt;br /&gt;
          const formsJSON = skillsRoot.dataset.forms || &amp;quot;{}&amp;quot;;&lt;br /&gt;
          if (formsJSON &amp;amp;&amp;amp; formsJSON !== &amp;quot;{}&amp;quot;) {&lt;br /&gt;
            formsData = JSON.parse(formsJSON);&lt;br /&gt;
            const firstIcon = iconItems[0];&lt;br /&gt;
            const isFormSwitch =&lt;br /&gt;
              firstIcon?.dataset?.formSwitch === &amp;quot;true&amp;quot; ||&lt;br /&gt;
              firstIcon?.getAttribute?.(&amp;quot;data-form-switch&amp;quot;) === &amp;quot;true&amp;quot;;&lt;br /&gt;
            if (&lt;br /&gt;
              formsData &amp;amp;&amp;amp;&lt;br /&gt;
              Object.keys(formsData).length &amp;gt; 0 &amp;amp;&amp;amp;&lt;br /&gt;
              isFormSwitch&lt;br /&gt;
            ) {&lt;br /&gt;
              const firstFormName = Object.keys(formsData)[0];&lt;br /&gt;
              const firstFormData = formsData[firstFormName];&lt;br /&gt;
              if (firstFormData) {&lt;br /&gt;
                updateSkillsBarForForm(firstFormName, firstFormData, firstIcon);&lt;br /&gt;
                setTimeout(() =&amp;gt; {&lt;br /&gt;
                  wireClicksForCurrentBar();&lt;br /&gt;
                  const freshIcons = Array.from(&lt;br /&gt;
                    iconsBar.querySelectorAll(&amp;quot;.skill-icon&amp;quot;)&lt;br /&gt;
                  );&lt;br /&gt;
                  const isFS = (el) =&amp;gt;&lt;br /&gt;
                    el?.dataset?.formSwitch === &amp;quot;true&amp;quot; ||&lt;br /&gt;
                    el?.getAttribute?.(&amp;quot;data-form-switch&amp;quot;) === &amp;quot;true&amp;quot;;&lt;br /&gt;
                  const firstNonSwitch = freshIcons.find((el) =&amp;gt; !isFS(el));&lt;br /&gt;
                  if (firstNonSwitch)&lt;br /&gt;
                    activateSkill(firstNonSwitch, { openSubs: false });&lt;br /&gt;
                }, 200);&lt;br /&gt;
                return;&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      } catch (e) {&lt;br /&gt;
        console.error(&amp;quot;[Forms] init inject error&amp;quot;, e);&lt;br /&gt;
      }&lt;br /&gt;
      wireClicksForCurrentBar();&lt;br /&gt;
      if (iconItems.length) {&lt;br /&gt;
        const isFormSwitch = (el) =&amp;gt;&lt;br /&gt;
          el?.dataset?.formSwitch === &amp;quot;true&amp;quot; ||&lt;br /&gt;
          el?.getAttribute?.(&amp;quot;data-form-switch&amp;quot;) === &amp;quot;true&amp;quot;;&lt;br /&gt;
        let first = null;&lt;br /&gt;
        for (const el of iconItems) {&lt;br /&gt;
          if (!isFormSwitch(el)) {&lt;br /&gt;
            first = el;&lt;br /&gt;
            break;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        if (!first) first = iconItems[0];&lt;br /&gt;
        if (first) {&lt;br /&gt;
          activateSkill(first, {&lt;br /&gt;
            openSubs: false,&lt;br /&gt;
          });&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    })();&lt;br /&gt;
&lt;br /&gt;
    // Aplica lazy loading em imagens fora do viewport inicial&lt;br /&gt;
    (function applyLazyLoading() {&lt;br /&gt;
      if (&amp;quot;IntersectionObserver&amp;quot; in window) {&lt;br /&gt;
        const imageObserver = new IntersectionObserver((entries, observer) =&amp;gt; {&lt;br /&gt;
          entries.forEach((entry) =&amp;gt; {&lt;br /&gt;
            if (entry.isIntersecting) {&lt;br /&gt;
              const img = entry.target;&lt;br /&gt;
              if (img.tagName === &amp;quot;IMG&amp;quot; &amp;amp;&amp;amp; !img.hasAttribute(&amp;quot;loading&amp;quot;)) {&lt;br /&gt;
                img.loading = &amp;quot;lazy&amp;quot;;&lt;br /&gt;
              }&lt;br /&gt;
              observer.unobserve(img);&lt;br /&gt;
            }&lt;br /&gt;
          });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Observa imagens que não estão no viewport inicial&lt;br /&gt;
        document&lt;br /&gt;
          .querySelectorAll(&amp;quot;img:not(.topbar-icon):not([loading])&amp;quot;)&lt;br /&gt;
          .forEach((img) =&amp;gt; {&lt;br /&gt;
            const rect = img.getBoundingClientRect();&lt;br /&gt;
            if (rect.bottom &amp;gt; window.innerHeight || rect.top &amp;lt; 0) {&lt;br /&gt;
              imageObserver.observe(img);&lt;br /&gt;
            }&lt;br /&gt;
          });&lt;br /&gt;
      }&lt;br /&gt;
    })();&lt;br /&gt;
&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
      Array.from(document.querySelectorAll(&amp;quot;.skill-icon&amp;quot;)).forEach((el) =&amp;gt; { });&lt;br /&gt;
      videosCache.forEach((v, idx) =&amp;gt; {&lt;br /&gt;
        const src = v.querySelector(&amp;quot;source&amp;quot;)&lt;br /&gt;
          ? v.querySelector(&amp;quot;source&amp;quot;).src&lt;br /&gt;
          : v.src;&lt;br /&gt;
        v.addEventListener(&amp;quot;error&amp;quot;, (ev) =&amp;gt; { });&lt;br /&gt;
        v.addEventListener(&amp;quot;loadedmetadata&amp;quot;, () =&amp;gt; { });&lt;br /&gt;
      });&lt;br /&gt;
    }, 600);&lt;br /&gt;
  })();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=M%C3%B3dulo:I.Skills&amp;diff=46365</id>
		<title>Módulo:I.Skills</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=M%C3%B3dulo:I.Skills&amp;diff=46365"/>
		<updated>2026-04-20T22:33:14Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: chopper ts diabolico&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Módulo:I.Skills — skill(), skin() com suporte nativo a subskills recursivas&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local utils = require(&amp;quot;Módulo:I.Utils&amp;quot;)&lt;br /&gt;
local trim = utils.trim&lt;br /&gt;
local colorize = utils.colorize&lt;br /&gt;
&lt;br /&gt;
-- Fallback se colorize não existir&lt;br /&gt;
if not colorize or type(colorize) ~= &amp;quot;function&amp;quot; then&lt;br /&gt;
    colorize = function(txt)&lt;br /&gt;
        if not txt or txt == &amp;quot;&amp;quot; then&lt;br /&gt;
            return &amp;quot;&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        -- Versão simplificada sem colorização&lt;br /&gt;
        return tostring(txt)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local cUtils = require(&amp;quot;Módulo:C.Utils&amp;quot;)&lt;br /&gt;
local requireCharModule = cUtils.requireCharModule&lt;br /&gt;
&lt;br /&gt;
-- FASE 2: Normaliza descrição para formato i18n&lt;br /&gt;
-- Aceita desc (table com pt/en/es/pl) ou campos legados (descPt, descEn, etc)&lt;br /&gt;
-- Sempre retorna desc_i18n no formato { pt: &amp;quot;...&amp;quot;, en: &amp;quot;...&amp;quot;, ... }&lt;br /&gt;
local function normalizeDesc(desc, descPt, descEn, descEs, descPl)&lt;br /&gt;
    local desc_i18n = {}&lt;br /&gt;
&lt;br /&gt;
    -- Se desc é uma table, processa diretamente&lt;br /&gt;
    if desc and type(desc) == &amp;quot;table&amp;quot; then&lt;br /&gt;
        for code, text in pairs(desc) do&lt;br /&gt;
            if type(text) == &amp;quot;string&amp;quot; and text ~= &amp;quot;&amp;quot; then&lt;br /&gt;
                desc_i18n[code] = colorize(text)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    elseif type(desc) == &amp;quot;string&amp;quot; and desc ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        -- Se desc é string, assume português&lt;br /&gt;
        desc_i18n.pt = colorize(desc)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Processa campos legados (descPt, descEn, etc) se existirem&lt;br /&gt;
    if descPt and type(descPt) == &amp;quot;string&amp;quot; and descPt ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        desc_i18n.pt = colorize(descPt)&lt;br /&gt;
    end&lt;br /&gt;
    if descEn and type(descEn) == &amp;quot;string&amp;quot; and descEn ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        desc_i18n.en = colorize(descEn)&lt;br /&gt;
    end&lt;br /&gt;
    if descEs and type(descEs) == &amp;quot;string&amp;quot; and descEs ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        desc_i18n.es = colorize(descEs)&lt;br /&gt;
    end&lt;br /&gt;
    if descPl and type(descPl) == &amp;quot;string&amp;quot; and descPl ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        desc_i18n.pl = colorize(descPl)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return next(desc_i18n) and desc_i18n or nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Processa descrição (desc table → desc_i18n)&lt;br /&gt;
-- Mantido para compatibilidade, agora usa normalizeDesc internamente&lt;br /&gt;
local function processDesc(desc)&lt;br /&gt;
    if not desc then return nil end&lt;br /&gt;
    return normalizeDesc(desc)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Processa weapon (aplica colorize nas descrições)&lt;br /&gt;
local function processWeapon(weapon)&lt;br /&gt;
    if not weapon or type(weapon) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
        return weapon&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local processed = {}&lt;br /&gt;
    -- Copia todos os campos do weapon&lt;br /&gt;
    for k, v in pairs(weapon) do&lt;br /&gt;
        processed[k] = v&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- FASE 2: Processa descrição do weapon usando normalizeDesc (normaliza campos legados)&lt;br /&gt;
    if weapon.desc or weapon.descPt or weapon.descEn or weapon.descEs or weapon.descPl then&lt;br /&gt;
        processed.desc_i18n = normalizeDesc(weapon.desc, weapon.descPt, weapon.descEn, weapon.descEs, weapon.descPl)&lt;br /&gt;
        -- Remove campos legados se desc_i18n foi criado (para evitar duplicação)&lt;br /&gt;
        if processed.desc_i18n then&lt;br /&gt;
            processed.desc = nil&lt;br /&gt;
            processed.descPt = nil&lt;br /&gt;
            processed.descEn = nil&lt;br /&gt;
            processed.descEs = nil&lt;br /&gt;
            processed.descPl = nil&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Se o weapon processado estiver vazio (sem campos), retorna nil&lt;br /&gt;
    -- Isso evita que weapons vazios {} sejam considerados válidos&lt;br /&gt;
    if next(processed) == nil then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return processed&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Variações por personagem (swap): PvE/PvP/energia/CD/vídeo/desc por nome do líder&lt;br /&gt;
local function processCharacterSkills(cs)&lt;br /&gt;
    if not cs or type(cs) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
    local out = {}&lt;br /&gt;
    for charName, row in pairs(cs) do&lt;br /&gt;
        if type(charName) == &amp;quot;string&amp;quot; and charName ~= &amp;quot;&amp;quot; and type(row) == &amp;quot;table&amp;quot; then&lt;br /&gt;
            local piece = {}&lt;br /&gt;
            if row.energy ~= nil then&lt;br /&gt;
                piece.energy = row.energy&lt;br /&gt;
            end&lt;br /&gt;
            if row.powerpve ~= nil then&lt;br /&gt;
                piece.powerpve = row.powerpve&lt;br /&gt;
            end&lt;br /&gt;
            if row.powerpvp ~= nil then&lt;br /&gt;
                piece.powerpvp = row.powerpvp&lt;br /&gt;
            end&lt;br /&gt;
            if row.cooldown ~= nil then&lt;br /&gt;
                piece.cooldown = row.cooldown&lt;br /&gt;
            end&lt;br /&gt;
            if row.level ~= nil and row.level ~= &amp;quot;&amp;quot; then&lt;br /&gt;
                piece.level = row.level&lt;br /&gt;
            end&lt;br /&gt;
            if row.video and type(row.video) == &amp;quot;string&amp;quot; and row.video ~= &amp;quot;&amp;quot; then&lt;br /&gt;
                piece.video = row.video&lt;br /&gt;
            end&lt;br /&gt;
            local di = normalizeDesc(row.desc, row.descPt, row.descEn, row.descEs, row.descPl)&lt;br /&gt;
            if di then&lt;br /&gt;
                piece.desc_i18n = di&lt;br /&gt;
            end&lt;br /&gt;
            if next(piece) then&lt;br /&gt;
                out[charName] = piece&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return next(out) and out or nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Processa subskills recursivamente (suporte ilimitado a níveis)&lt;br /&gt;
-- parentSkillsById: mapa de skills principais por ID (moduleName.skillName)&lt;br /&gt;
-- parentSkillsByName: mapa de skills principais por nome (compatibilidade)&lt;br /&gt;
-- parentPath: caminho hierárquico para gerar IDs únicos (ex: &amp;quot;skill1.subskill2&amp;quot;)&lt;br /&gt;
-- moduleName: nome do módulo para gerar IDs únicos&lt;br /&gt;
local function processSubskills(subskills, suborder, parentSkillsById, parentSkillsByName, parentPath, moduleName)&lt;br /&gt;
    if not subskills or not suborder or type(subskills) ~= &amp;quot;table&amp;quot; or type(suborder) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local arr = {}&lt;br /&gt;
    for idx, subName in ipairs(suborder) do&lt;br /&gt;
        local sub = subskills[subName]&lt;br /&gt;
        if type(sub) == &amp;quot;table&amp;quot; then&lt;br /&gt;
            -- Gera ID único baseado no caminho hierárquico&lt;br /&gt;
            -- Se parentPath existe, usa &amp;quot;parentPath.subName&amp;quot;, senão usa apenas &amp;quot;subName&amp;quot;&lt;br /&gt;
            -- Adiciona índice para garantir unicidade mesmo com nomes duplicados&lt;br /&gt;
            local uniqueId = parentPath and (parentPath .. &amp;quot;.&amp;quot; .. subName .. &amp;quot;.&amp;quot; .. tostring(idx)) or&lt;br /&gt;
                (subName .. &amp;quot;.&amp;quot; .. tostring(idx))&lt;br /&gt;
            -- FASE 1: Herança explícita com suporte a ID&lt;br /&gt;
            -- inherit_from_id: ID da skill para herdar (prioridade)&lt;br /&gt;
            -- inherit_from: Nome da skill para herdar (fallback legado)&lt;br /&gt;
            -- inherit_fields: O QUE herdar (array de campos, obrigatório para herdar)&lt;br /&gt;
            -- Se não especificar ambos, não herda nada (mais seguro)&lt;br /&gt;
&lt;br /&gt;
            local inheritFromId = sub.inherit_from_id      -- ID da skill (prioridade)&lt;br /&gt;
            local inheritFrom = sub.inherit_from           -- Nome da skill (fallback legado)&lt;br /&gt;
            local inheritFields = sub.inherit_fields or {} -- O QUE herdar (array)&lt;br /&gt;
&lt;br /&gt;
            -- Converte inheritFields para set para busca rápida&lt;br /&gt;
            local inheritFieldsSet = {}&lt;br /&gt;
            if type(inheritFields) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                for _, field in ipairs(inheritFields) do&lt;br /&gt;
                    if type(field) == &amp;quot;string&amp;quot; then&lt;br /&gt;
                        inheritFieldsSet[field] = true&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            -- FASE 1: Busca skill principal por ID primeiro, depois por nome (fallback)&lt;br /&gt;
            local parentSkill = nil&lt;br /&gt;
            if inheritFromId and parentSkillsById and type(parentSkillsById) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                parentSkill = parentSkillsById[inheritFromId]&lt;br /&gt;
            end&lt;br /&gt;
            -- Fallback legado: busca por nome&lt;br /&gt;
            if not parentSkill and inheritFrom and parentSkillsByName and type(parentSkillsByName) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                parentSkill = parentSkillsByName[inheritFrom]&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            -- Função auxiliar: verifica se um campo DEVE ser herdado&lt;br /&gt;
            -- Só herda se inherit_from E inherit_fields estiverem definidos E o campo estiver na lista&lt;br /&gt;
            local function shouldInheritField(fieldName)&lt;br /&gt;
                if not inheritFrom or not parentSkill then&lt;br /&gt;
                    return false                           -- Sem inherit_from ou parentSkill, não herda&lt;br /&gt;
                end&lt;br /&gt;
                return inheritFieldsSet[fieldName] == true -- Só herda se estiver em inherit_fields&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            -- Valida flags: deve ser uma tabela com pelo menos um elemento, senão nil&lt;br /&gt;
            -- Flags herdam apenas se &amp;quot;flags&amp;quot; estiver em inherit_fields&lt;br /&gt;
            -- Fallback: se sub.flags é string &amp;quot;aggro,bridge&amp;quot; (formato corrompido), converte para table&lt;br /&gt;
            local subFlagsRaw = (sub.flags ~= nil) and sub.flags or&lt;br /&gt;
                (shouldInheritField(&amp;quot;flags&amp;quot;) and parentSkill and parentSkill.flags)&lt;br /&gt;
            local subFlags = subFlagsRaw&lt;br /&gt;
            if type(subFlagsRaw) == &amp;quot;string&amp;quot; and subFlagsRaw:match(&amp;quot;%S&amp;quot;) then&lt;br /&gt;
                local parts = {}&lt;br /&gt;
                for part in (subFlagsRaw .. &amp;quot;,&amp;quot;):gmatch(&amp;quot;([^,]*)&amp;quot;) do&lt;br /&gt;
                    part = trim(part)&lt;br /&gt;
                    if part ~= &amp;quot;&amp;quot; then table.insert(parts, part) end&lt;br /&gt;
                end&lt;br /&gt;
                if #parts &amp;gt; 0 then subFlags = parts end&lt;br /&gt;
            end&lt;br /&gt;
            local validSubFlags = (type(subFlags) == &amp;quot;table&amp;quot; and #subFlags &amp;gt; 0) and subFlags or nil&lt;br /&gt;
&lt;br /&gt;
            -- Cria o objeto da subskill, herdando apenas campos explicitamente listados em inherit_fields&lt;br /&gt;
            local subObj = {&lt;br /&gt;
                id = uniqueId,          -- ID único para evitar colisão de nomes&lt;br /&gt;
                display_name = subName, -- Nome para exibição (sem função lógica)&lt;br /&gt;
                name = subName,         -- Mantido para compatibilidade&lt;br /&gt;
                n = subName,            -- Mantido para compatibilidade&lt;br /&gt;
                -- Herda icon apenas se &amp;quot;icon&amp;quot; estiver em inherit_fields&lt;br /&gt;
                icon = sub.icon or (shouldInheritField(&amp;quot;icon&amp;quot;) and parentSkill and parentSkill.icon) or &amp;quot;&amp;quot;,&lt;br /&gt;
                -- Herda level apenas se &amp;quot;level&amp;quot; estiver em inherit_fields&lt;br /&gt;
                level = sub.level or (shouldInheritField(&amp;quot;level&amp;quot;) and parentSkill and parentSkill.level) or &amp;quot;&amp;quot;,&lt;br /&gt;
                -- Herda energy apenas se &amp;quot;energy&amp;quot; estiver em inherit_fields&lt;br /&gt;
                energy = (sub.energy ~= nil) and sub.energy or&lt;br /&gt;
                    (shouldInheritField(&amp;quot;energy&amp;quot;) and parentSkill and parentSkill.energy),&lt;br /&gt;
                -- Herda powerpve apenas se &amp;quot;powerpve&amp;quot; estiver em inherit_fields&lt;br /&gt;
                powerpve = (sub.powerpve ~= nil) and sub.powerpve or&lt;br /&gt;
                    (shouldInheritField(&amp;quot;powerpve&amp;quot;) and parentSkill and parentSkill.powerpve),&lt;br /&gt;
                -- Herda powerpvp apenas se &amp;quot;powerpvp&amp;quot; estiver em inherit_fields&lt;br /&gt;
                powerpvp = (sub.powerpvp ~= nil) and sub.powerpvp or&lt;br /&gt;
                    (shouldInheritField(&amp;quot;powerpvp&amp;quot;) and parentSkill and parentSkill.powerpvp),&lt;br /&gt;
                -- Herda cooldown apenas se &amp;quot;cooldown&amp;quot; estiver em inherit_fields&lt;br /&gt;
                cooldown = (sub.cooldown ~= nil) and sub.cooldown or&lt;br /&gt;
                    (shouldInheritField(&amp;quot;cooldown&amp;quot;) and parentSkill and parentSkill.cooldown),&lt;br /&gt;
                -- Video sempre vem da subskill (nunca herda)&lt;br /&gt;
                video = sub.video or &amp;quot;&amp;quot;,&lt;br /&gt;
                -- Descrição: sempre vem da subskill (nunca herda)&lt;br /&gt;
                desc_i18n = nil, -- Será definido depois&lt;br /&gt;
                -- Flags: herda apenas se &amp;quot;flags&amp;quot; estiver em inherit_fields&lt;br /&gt;
                flags = validSubFlags,&lt;br /&gt;
                -- Herda weapon apenas se &amp;quot;weapon&amp;quot; estiver em inherit_fields&lt;br /&gt;
                weapon = (sub.weapon and processWeapon(sub.weapon)) or&lt;br /&gt;
                    (shouldInheritField(&amp;quot;weapon&amp;quot;) and parentSkill and processWeapon(parentSkill.weapon)),&lt;br /&gt;
                -- Herda back apenas se &amp;quot;back&amp;quot; estiver em inherit_fields&lt;br /&gt;
                back = (sub.back ~= nil) and sub.back or&lt;br /&gt;
                    (shouldInheritField(&amp;quot;back&amp;quot;) and parentSkill and parentSkill.back),&lt;br /&gt;
                -- Inclui campos de herança para o frontend&lt;br /&gt;
                inherit_from_id = inheritFromId or inheritFrom, -- ID ou nome (compatibilidade)&lt;br /&gt;
                inherit_from = inheritFrom,                     -- Mantido para compatibilidade&lt;br /&gt;
                inherit_fields = inheritFields&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            -- Descrição: sempre vem da subskill, nunca herda&lt;br /&gt;
            -- PROTEÇÃO TOTAL: NUNCA copia descrição do parentSkill, mesmo que subskill não tenha&lt;br /&gt;
            if sub.desc ~= nil or sub.descPt ~= nil or sub.descEn ~= nil or sub.descEs ~= nil or sub.descPl ~= nil then&lt;br /&gt;
                subObj.desc_i18n = normalizeDesc(sub.desc, sub.descPt, sub.descEn, sub.descEs, sub.descPl)&lt;br /&gt;
            else&lt;br /&gt;
                subObj.desc_i18n = nil&lt;br /&gt;
            end&lt;br /&gt;
            -- GARANTIA: Remove qualquer campo legado de descrição que possa ter sido copiado acidentalmente&lt;br /&gt;
            subObj.desc = nil&lt;br /&gt;
            subObj.descPt = nil&lt;br /&gt;
            subObj.descEn = nil&lt;br /&gt;
            subObj.descEs = nil&lt;br /&gt;
            subObj.descPl = nil&lt;br /&gt;
&lt;br /&gt;
            -- RECURSÃO NATIVA: processa sub-subskills (e sub-sub-subskills, etc.)&lt;br /&gt;
            -- Passa parentSkillsById e parentSkillsByName para recursão (herança sempre vem das skills principais)&lt;br /&gt;
            -- Passa uniqueId como parentPath para manter unicidade na hierarquia&lt;br /&gt;
            if type(sub.subskills) == &amp;quot;table&amp;quot; and type(sub.suborder) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                subObj.subs = processSubskills(sub.subskills, sub.suborder, parentSkillsById, parentSkillsByName,&lt;br /&gt;
                    uniqueId, moduleName)&lt;br /&gt;
                subObj.suborder = sub.suborder&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            table.insert(arr, subObj)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return #arr &amp;gt; 0 and arr or nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Gera JSON de skills a partir do módulo&lt;br /&gt;
function p.skill(frame)&lt;br /&gt;
    local parent = frame:getParent() or frame&lt;br /&gt;
    local args = parent.args or {}&lt;br /&gt;
&lt;br /&gt;
    local moduleName = trim(args.module or &amp;quot;&amp;quot;)&lt;br /&gt;
    if moduleName == &amp;quot;&amp;quot; then&lt;br /&gt;
        return &amp;quot;[]&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local data = requireCharModule(moduleName) or {}&lt;br /&gt;
    if not data.order or not data.skills then&lt;br /&gt;
        return &amp;quot;[]&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local skillsArr = {}&lt;br /&gt;
&lt;br /&gt;
    -- Se houver forms, obtém a primeira forma (usa forms_order se existir, ex: Chopper TS inicia em Brain Point)&lt;br /&gt;
    local firstForm = nil&lt;br /&gt;
    local firstFormName = nil&lt;br /&gt;
    if type(data.forms) == &amp;quot;table&amp;quot; then&lt;br /&gt;
        if type(data.forms_order) == &amp;quot;table&amp;quot; and #data.forms_order &amp;gt; 0 then&lt;br /&gt;
            for _, formName in ipairs(data.forms_order) do&lt;br /&gt;
                local formData = data.forms[formName]&lt;br /&gt;
                if type(formData) == &amp;quot;table&amp;quot; and type(formData.skills) == &amp;quot;table&amp;quot; and type(formData.order) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                    firstForm = formData&lt;br /&gt;
                    firstFormName = formName&lt;br /&gt;
                    break&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if not firstForm then&lt;br /&gt;
            for formName, formData in pairs(data.forms) do&lt;br /&gt;
                if type(formData) == &amp;quot;table&amp;quot; and type(formData.skills) == &amp;quot;table&amp;quot; and type(formData.order) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                    firstForm = formData&lt;br /&gt;
                    firstFormName = formName&lt;br /&gt;
                    break&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Encontra a skill com form_switch = true (genérico)&lt;br /&gt;
    local formSwitchSkillName = nil&lt;br /&gt;
    local nextFixedSkillAfterFormSwitch = nil&lt;br /&gt;
    if type(data.skills) == &amp;quot;table&amp;quot; then&lt;br /&gt;
        for skillName, sk in pairs(data.skills) do&lt;br /&gt;
            if type(sk) == &amp;quot;table&amp;quot; and sk.form_switch == true then&lt;br /&gt;
                formSwitchSkillName = skillName&lt;br /&gt;
                break&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Encontra a próxima skill fixa depois do form_switch no order&lt;br /&gt;
        if formSwitchSkillName and type(data.order) == &amp;quot;table&amp;quot; then&lt;br /&gt;
            local foundFormSwitch = false&lt;br /&gt;
            for _, skillName in ipairs(data.order) do&lt;br /&gt;
                if foundFormSwitch then&lt;br /&gt;
                    -- Esta é a próxima skill fixa depois do form_switch&lt;br /&gt;
                    nextFixedSkillAfterFormSwitch = skillName&lt;br /&gt;
                    break&lt;br /&gt;
                end&lt;br /&gt;
                if skillName == formSwitchSkillName then&lt;br /&gt;
                    foundFormSwitch = true&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- FASE 1: Cria mapa de IDs das skills principais para lookup por ID&lt;br /&gt;
    -- Este mapa será usado por processSubskills para buscar skills por ID&lt;br /&gt;
    -- IMPORTANTE: Deve ser criado ANTES de processar forms para que possa ser usado em subskills de forms&lt;br /&gt;
    local mainSkillsById = {}&lt;br /&gt;
    local mainSkillsByName = {}&lt;br /&gt;
&lt;br /&gt;
    -- Pre-popula o mapa com todas as skills principais (necessário para forms também)&lt;br /&gt;
    for skillName, sk in pairs(data.skills) do&lt;br /&gt;
        if type(sk) == &amp;quot;table&amp;quot; then&lt;br /&gt;
            local skillId = moduleName .. &amp;quot;.&amp;quot; .. skillName&lt;br /&gt;
            mainSkillsById[skillId] = sk&lt;br /&gt;
            mainSkillsByName[skillName] = sk&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Se houver forms, insere a primeira skill da forma ANTES da skill com form_switch&lt;br /&gt;
    if firstForm and type(firstForm.skills) == &amp;quot;table&amp;quot; and type(firstForm.order) == &amp;quot;table&amp;quot; and #firstForm.order &amp;gt; 0 then&lt;br /&gt;
        local firstSkillName = firstForm.order[1]&lt;br /&gt;
        local formSk = firstForm.skills[firstSkillName]&lt;br /&gt;
        if type(formSk) == &amp;quot;table&amp;quot; then&lt;br /&gt;
            -- Valida flags: deve ser uma tabela com pelo menos um elemento, senão nil&lt;br /&gt;
            local formFlags = nil&lt;br /&gt;
            if type(formSk.flags) == &amp;quot;table&amp;quot; and #formSk.flags &amp;gt; 0 then&lt;br /&gt;
                formFlags = formSk.flags&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            local formSkillObj = {&lt;br /&gt;
                id = &amp;quot;form.&amp;quot; .. firstSkillName, -- ID único para skills de forma&lt;br /&gt;
                display_name = firstSkillName,  -- Nome para exibição&lt;br /&gt;
                name = firstSkillName,          -- Mantido para compatibilidade&lt;br /&gt;
                n = firstSkillName,             -- Mantido para compatibilidade&lt;br /&gt;
                icon = (formSk.icon and formSk.icon ~= &amp;quot;&amp;quot;) and formSk.icon or &amp;quot;&amp;quot;,&lt;br /&gt;
                level = formSk.level or &amp;quot;NIVEL&amp;quot;,&lt;br /&gt;
                energy = formSk.energy,&lt;br /&gt;
                powerpve = formSk.powerpve,&lt;br /&gt;
                powerpvp = formSk.powerpvp,&lt;br /&gt;
                cooldown = formSk.cooldown,&lt;br /&gt;
                video = formSk.video or &amp;quot;&amp;quot;,&lt;br /&gt;
                desc_i18n = normalizeDesc(formSk.desc, formSk.descPt, formSk.descEn, formSk.descEs, formSk.descPl),&lt;br /&gt;
                flags = formFlags,&lt;br /&gt;
                weapon = processWeapon(formSk.weapon),&lt;br /&gt;
                effect = formSk.effect&lt;br /&gt;
            }&lt;br /&gt;
            if type(formSk.subskills) == &amp;quot;table&amp;quot; and type(formSk.suborder) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                -- Para skills de forma, usa mainSkillsById e mainSkillsByName&lt;br /&gt;
                formSkillObj.subs = processSubskills(formSk.subskills, formSk.suborder, mainSkillsById, mainSkillsByName,&lt;br /&gt;
                    formSkillObj.id, &amp;quot;form&amp;quot;)&lt;br /&gt;
                formSkillObj.suborder = formSk.suborder&lt;br /&gt;
            end&lt;br /&gt;
            table.insert(skillsArr, formSkillObj)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Itera sobre order para manter ordem correta (skills fixas)&lt;br /&gt;
    local nextFixedSkillIndex = -1&lt;br /&gt;
    for idx, skillName in ipairs(data.order) do&lt;br /&gt;
        local sk = data.skills[skillName]&lt;br /&gt;
        if type(sk) == &amp;quot;table&amp;quot; then&lt;br /&gt;
            -- Valida flags: deve ser uma tabela com pelo menos um elemento, senão nil&lt;br /&gt;
            -- Fallback: se flags veio como string &amp;quot;aggro,bridge&amp;quot; (formato corrompido pelo editor antigo), converte para table&lt;br /&gt;
            local flagsToValidate = sk.flags&lt;br /&gt;
            if type(sk.flags) == &amp;quot;string&amp;quot; and sk.flags:match(&amp;quot;%S&amp;quot;) then&lt;br /&gt;
                local parts = {}&lt;br /&gt;
                for part in (sk.flags .. &amp;quot;,&amp;quot;):gmatch(&amp;quot;([^,]*)&amp;quot;) do&lt;br /&gt;
                    part = trim(part)&lt;br /&gt;
                    if part ~= &amp;quot;&amp;quot; then table.insert(parts, part) end&lt;br /&gt;
                end&lt;br /&gt;
                if #parts &amp;gt; 0 then flagsToValidate = parts end&lt;br /&gt;
            end&lt;br /&gt;
            local validFlags = nil&lt;br /&gt;
            if type(flagsToValidate) == &amp;quot;table&amp;quot; and #flagsToValidate &amp;gt; 0 then&lt;br /&gt;
                -- Verifica se todos os elementos são strings válidas&lt;br /&gt;
                local allValid = true&lt;br /&gt;
                for i, flag in ipairs(flagsToValidate) do&lt;br /&gt;
                    if type(flag) ~= &amp;quot;string&amp;quot; or flag == &amp;quot;&amp;quot; then&lt;br /&gt;
                        allValid = false&lt;br /&gt;
                        break&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                if allValid then&lt;br /&gt;
                    validFlags = flagsToValidate&lt;br /&gt;
                else&lt;br /&gt;
                    -- Se houver elementos inválidos, cria uma cópia limpa&lt;br /&gt;
                    local cleanFlags = {}&lt;br /&gt;
                    for i, flag in ipairs(flagsToValidate) do&lt;br /&gt;
                        if type(flag) == &amp;quot;string&amp;quot; and flag ~= &amp;quot;&amp;quot; then&lt;br /&gt;
                            table.insert(cleanFlags, flag)&lt;br /&gt;
                        end&lt;br /&gt;
                    end&lt;br /&gt;
                    if #cleanFlags &amp;gt; 0 then&lt;br /&gt;
                        validFlags = cleanFlags&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            -- FASE 1: ID único obrigatório para skills principais&lt;br /&gt;
            -- Usa moduleName como prefixo para garantir unicidade global&lt;br /&gt;
            local skillId = moduleName .. &amp;quot;.&amp;quot; .. skillName&lt;br /&gt;
&lt;br /&gt;
            local skillObj = {&lt;br /&gt;
                id = skillId,             -- ID único global (moduleName.skillName)&lt;br /&gt;
                display_name = skillName, -- Nome para exibição (sem função lógica)&lt;br /&gt;
                name = skillName,         -- Mantido para compatibilidade&lt;br /&gt;
                n = skillName,            -- Mantido para compatibilidade&lt;br /&gt;
                icon = (sk.icon and sk.icon ~= &amp;quot;&amp;quot;) and sk.icon or &amp;quot;&amp;quot;,&lt;br /&gt;
                level = sk.level or &amp;quot;NIVEL&amp;quot;,&lt;br /&gt;
                energy = sk.energy,&lt;br /&gt;
                powerpve = sk.powerpve,&lt;br /&gt;
                powerpvp = sk.powerpvp,&lt;br /&gt;
                cooldown = sk.cooldown,&lt;br /&gt;
                video = sk.video or &amp;quot;&amp;quot;,&lt;br /&gt;
                desc_i18n = normalizeDesc(sk.desc, sk.descPt, sk.descEn, sk.descEs, sk.descPl),&lt;br /&gt;
                flags = validFlags,&lt;br /&gt;
                weapon = processWeapon(sk.weapon),&lt;br /&gt;
                effect = sk.effect,&lt;br /&gt;
                weaponicon = data.weaponicon,&lt;br /&gt;
                form_switch = sk.form_switch,&lt;br /&gt;
                form_videos = sk.form_videos,&lt;br /&gt;
                -- Sistema genérico de swap de personagens (ex: Buchi &amp;amp; Sham, futuros personagens)&lt;br /&gt;
                swap = sk.swap,                           -- true = skill de troca entre personagens&lt;br /&gt;
                only_character = sk.only_character or &amp;quot;&amp;quot;, -- String: nome do personagem que pode usar (ex: &amp;quot;Buchi&amp;quot;, &amp;quot;Sham&amp;quot;)&lt;br /&gt;
                character_videos = sk.character_videos or&lt;br /&gt;
                    {}                                    -- Tabela: { &amp;quot;CharacterName&amp;quot;: &amp;quot;video.mp4&amp;quot; } - vídeos por personagem&lt;br /&gt;
            }&lt;br /&gt;
            local csProcessed = processCharacterSkills(sk.character_skills)&lt;br /&gt;
            if csProcessed then&lt;br /&gt;
                skillObj.character_skills = csProcessed&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            -- Processa subskills recursivamente (suporte nativo ilimitado)&lt;br /&gt;
            -- Passa mainSkillsById e mainSkillsByName para lookup por ID ou nome&lt;br /&gt;
            -- Passa skillObj.id como parentPath para gerar IDs únicos para subskills&lt;br /&gt;
            if type(sk.subskills) == &amp;quot;table&amp;quot; and type(sk.suborder) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                skillObj.subs = processSubskills(sk.subskills, sk.suborder, mainSkillsById, mainSkillsByName, skillObj&lt;br /&gt;
                    .id, moduleName)&lt;br /&gt;
                skillObj.suborder = sk.suborder&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            -- Valida flags antes de inserir no array (proteção extra)&lt;br /&gt;
            if skillObj.flags and (type(skillObj.flags) ~= &amp;quot;table&amp;quot; or #skillObj.flags == 0) then&lt;br /&gt;
                skillObj.flags = nil&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            table.insert(skillsArr, skillObj)&lt;br /&gt;
&lt;br /&gt;
            -- Se for a skill com form_switch e houver forms, adiciona a terceira skill da forma logo após&lt;br /&gt;
            if skillName == formSwitchSkillName and firstForm and type(firstForm.skills) == &amp;quot;table&amp;quot; and type(firstForm.order) == &amp;quot;table&amp;quot; and #firstForm.order &amp;gt;= 2 then&lt;br /&gt;
                local thirdSkillName = firstForm.order[2] -- Segunda na ordem = terceira skill (1, 2, 3)&lt;br /&gt;
                local formSk = firstForm.skills[thirdSkillName]&lt;br /&gt;
                if type(formSk) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                    -- Valida flags: deve ser uma tabela com pelo menos um elemento, senão nil&lt;br /&gt;
                    local formFlags3 = nil&lt;br /&gt;
                    if type(formSk.flags) == &amp;quot;table&amp;quot; and #formSk.flags &amp;gt; 0 then&lt;br /&gt;
                        formFlags3 = formSk.flags&lt;br /&gt;
                    end&lt;br /&gt;
&lt;br /&gt;
                    local formSkillObj = {&lt;br /&gt;
                        id = &amp;quot;form.&amp;quot; .. thirdSkillName, -- ID único para skills de forma&lt;br /&gt;
                        display_name = thirdSkillName,  -- Nome para exibição&lt;br /&gt;
                        name = thirdSkillName,          -- Mantido para compatibilidade&lt;br /&gt;
                        n = thirdSkillName,             -- Mantido para compatibilidade&lt;br /&gt;
                        icon = (formSk.icon and formSk.icon ~= &amp;quot;&amp;quot;) and formSk.icon or &amp;quot;&amp;quot;,&lt;br /&gt;
                        level = formSk.level or &amp;quot;NIVEL&amp;quot;,&lt;br /&gt;
                        energy = formSk.energy,&lt;br /&gt;
                        powerpve = formSk.powerpve,&lt;br /&gt;
                        powerpvp = formSk.powerpvp,&lt;br /&gt;
                        cooldown = formSk.cooldown,&lt;br /&gt;
                        video = formSk.video or &amp;quot;&amp;quot;,&lt;br /&gt;
                        desc_i18n = normalizeDesc(formSk.desc, formSk.descPt, formSk.descEn, formSk.descEs, formSk&lt;br /&gt;
                            .descPl),&lt;br /&gt;
                        flags = formFlags3,&lt;br /&gt;
                        weapon = processWeapon(formSk.weapon),&lt;br /&gt;
                        effect = formSk.effect&lt;br /&gt;
                    }&lt;br /&gt;
                    if type(formSk.subskills) == &amp;quot;table&amp;quot; and type(formSk.suborder) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                        formSkillObj.subs = processSubskills(formSk.subskills, formSk.suborder, mainSkillsById,&lt;br /&gt;
                            mainSkillsByName, formSkillObj.id, &amp;quot;form&amp;quot;)&lt;br /&gt;
                        formSkillObj.suborder = formSk.suborder&lt;br /&gt;
                    end&lt;br /&gt;
                    table.insert(skillsArr, formSkillObj)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            -- Guarda índice da próxima skill fixa depois do form_switch para inserir a quinta skill depois&lt;br /&gt;
            if skillName == nextFixedSkillAfterFormSwitch then&lt;br /&gt;
                nextFixedSkillIndex = #skillsArr&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            -- Se for a próxima skill fixa depois do form_switch e houver forms,&lt;br /&gt;
            -- adiciona TODAS as skills de forma a partir da 3ª posição (order[3..N])&lt;br /&gt;
            -- em sequência contígua. Para forms com 3 skills isto equivale ao&lt;br /&gt;
            -- comportamento antigo (inseria apenas order[3] = &amp;quot;quinta skill&amp;quot;).&lt;br /&gt;
            -- Para forms com 4+ skills, as extras ficam nos slots 6, 7, ...&lt;br /&gt;
            if skillName == nextFixedSkillAfterFormSwitch and firstForm and type(firstForm.skills) == &amp;quot;table&amp;quot; and type(firstForm.order) == &amp;quot;table&amp;quot; and #firstForm.order &amp;gt;= 3 then&lt;br /&gt;
                for extraIdx = 3, #firstForm.order do&lt;br /&gt;
                    local extraSkillName = firstForm.order[extraIdx]&lt;br /&gt;
                    local formSk = firstForm.skills[extraSkillName]&lt;br /&gt;
                    if type(formSk) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                        local formFlagsExtra = nil&lt;br /&gt;
                        if type(formSk.flags) == &amp;quot;table&amp;quot; and #formSk.flags &amp;gt; 0 then&lt;br /&gt;
                            formFlagsExtra = formSk.flags&lt;br /&gt;
                        end&lt;br /&gt;
&lt;br /&gt;
                        local formSkillObj = {&lt;br /&gt;
                            id = &amp;quot;form.&amp;quot; .. extraSkillName,&lt;br /&gt;
                            display_name = extraSkillName,&lt;br /&gt;
                            name = extraSkillName,&lt;br /&gt;
                            n = extraSkillName,&lt;br /&gt;
                            icon = (formSk.icon and formSk.icon ~= &amp;quot;&amp;quot;) and formSk.icon or &amp;quot;&amp;quot;,&lt;br /&gt;
                            level = formSk.level or &amp;quot;NIVEL&amp;quot;,&lt;br /&gt;
                            energy = formSk.energy,&lt;br /&gt;
                            powerpve = formSk.powerpve,&lt;br /&gt;
                            powerpvp = formSk.powerpvp,&lt;br /&gt;
                            cooldown = formSk.cooldown,&lt;br /&gt;
                            video = formSk.video or &amp;quot;&amp;quot;,&lt;br /&gt;
                            desc_i18n = normalizeDesc(formSk.desc, formSk.descPt, formSk.descEn, formSk.descEs,&lt;br /&gt;
                                formSk.descPl),&lt;br /&gt;
                            flags = formFlagsExtra,&lt;br /&gt;
                            weapon = processWeapon(formSk.weapon),&lt;br /&gt;
                            effect = formSk.effect&lt;br /&gt;
                        }&lt;br /&gt;
                        if type(formSk.subskills) == &amp;quot;table&amp;quot; and type(formSk.suborder) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                            formSkillObj.subs = processSubskills(formSk.subskills, formSk.suborder, mainSkillsById,&lt;br /&gt;
                                mainSkillsByName, formSkillObj.id, &amp;quot;form&amp;quot;)&lt;br /&gt;
                            formSkillObj.suborder = formSk.suborder&lt;br /&gt;
                        end&lt;br /&gt;
                        table.insert(skillsArr, formSkillObj)&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Adiciona emote no final (se existir no módulo)&lt;br /&gt;
    if type(data.emote) == &amp;quot;table&amp;quot; and data.emote.video and data.emote.video ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        local emoteObj = {&lt;br /&gt;
            id = moduleName .. &amp;quot;.Emote&amp;quot;,&lt;br /&gt;
            display_name = &amp;quot;Emote&amp;quot;,&lt;br /&gt;
            name = &amp;quot;Emote&amp;quot;,&lt;br /&gt;
            n = &amp;quot;Emote&amp;quot;,&lt;br /&gt;
            icon = &amp;quot;Emote.png&amp;quot;,&lt;br /&gt;
            level = &amp;quot;25&amp;quot;,&lt;br /&gt;
            video = data.emote.video or &amp;quot;&amp;quot;,&lt;br /&gt;
            desc = &amp;quot;&amp;quot;,&lt;br /&gt;
            desc_i18n = nil&lt;br /&gt;
        }&lt;br /&gt;
        table.insert(skillsArr, emoteObj)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Proteção contra erros no jsonEncode (especialmente para flags)&lt;br /&gt;
    -- Limpa flags problemáticas ANTES de tentar serializar&lt;br /&gt;
    -- NOTA: Não remove flags válidas, apenas valida e limpa flags inválidas&lt;br /&gt;
    for _, skill in ipairs(skillsArr) do&lt;br /&gt;
        if skill.flags then&lt;br /&gt;
            if type(skill.flags) ~= &amp;quot;table&amp;quot; or #skill.flags == 0 then&lt;br /&gt;
                skill.flags = nil&lt;br /&gt;
            else&lt;br /&gt;
                -- Limpa flags inválidas (não strings ou vazias)&lt;br /&gt;
                local cleanFlags = {}&lt;br /&gt;
                for i, flag in ipairs(skill.flags) do&lt;br /&gt;
                    if type(flag) == &amp;quot;string&amp;quot; and flag ~= &amp;quot;&amp;quot; then&lt;br /&gt;
                        table.insert(cleanFlags, flag)&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                if #cleanFlags &amp;gt; 0 then&lt;br /&gt;
                    skill.flags = cleanFlags&lt;br /&gt;
                else&lt;br /&gt;
                    skill.flags = nil&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        -- Limpa flags em subskills também&lt;br /&gt;
        if skill.subs and type(skill.subs) == &amp;quot;table&amp;quot; then&lt;br /&gt;
            for _, sub in ipairs(skill.subs) do&lt;br /&gt;
                if sub.flags then&lt;br /&gt;
                    if type(sub.flags) ~= &amp;quot;table&amp;quot; or #sub.flags == 0 then&lt;br /&gt;
                        sub.flags = nil&lt;br /&gt;
                    else&lt;br /&gt;
                        local cleanSubFlags = {}&lt;br /&gt;
                        for i, flag in ipairs(sub.flags) do&lt;br /&gt;
                            if type(flag) == &amp;quot;string&amp;quot; and flag ~= &amp;quot;&amp;quot; then&lt;br /&gt;
                                table.insert(cleanSubFlags, flag)&lt;br /&gt;
                            end&lt;br /&gt;
                        end&lt;br /&gt;
                        if #cleanSubFlags &amp;gt; 0 then&lt;br /&gt;
                            sub.flags = cleanSubFlags&lt;br /&gt;
                        else&lt;br /&gt;
                            sub.flags = nil&lt;br /&gt;
                        end&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local ok, jsonResult = pcall(function()&lt;br /&gt;
        return mw.text.jsonEncode(skillsArr)&lt;br /&gt;
    end)&lt;br /&gt;
    if ok and jsonResult then&lt;br /&gt;
        return jsonResult&lt;br /&gt;
    else&lt;br /&gt;
        -- Última tentativa: remove TODAS as flags&lt;br /&gt;
        for _, skill in ipairs(skillsArr) do&lt;br /&gt;
            skill.flags = nil&lt;br /&gt;
            if skill.subs and type(skill.subs) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                for _, sub in ipairs(skill.subs) do&lt;br /&gt;
                    sub.flags = nil&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        return mw.text.jsonEncode(skillsArr)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Gera JSON de forms a partir do módulo&lt;br /&gt;
function p.forms(frame)&lt;br /&gt;
    local parent = frame:getParent() or frame&lt;br /&gt;
    local args = parent.args or {}&lt;br /&gt;
&lt;br /&gt;
    local moduleName = trim(args.module or &amp;quot;&amp;quot;)&lt;br /&gt;
    if moduleName == &amp;quot;&amp;quot; then&lt;br /&gt;
        return &amp;quot;{}&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local data = requireCharModule(moduleName) or {}&lt;br /&gt;
    if not data.forms or type(data.forms) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
        return &amp;quot;{}&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local formsData = {}&lt;br /&gt;
    local function addForm(formName, formData)&lt;br /&gt;
        if type(formData) ~= &amp;quot;table&amp;quot; or type(formData.skills) ~= &amp;quot;table&amp;quot; or type(formData.order) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
            return&lt;br /&gt;
        end&lt;br /&gt;
        if formsData[formName] then return end -- já adicionado&lt;br /&gt;
        local formSkills = {}&lt;br /&gt;
        for _, skillName in ipairs(formData.order) do&lt;br /&gt;
            local sk = formData.skills[skillName]&lt;br /&gt;
            if type(sk) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                local formSkillFlags = nil&lt;br /&gt;
                if type(sk.flags) == &amp;quot;table&amp;quot; and #sk.flags &amp;gt; 0 then&lt;br /&gt;
                    formSkillFlags = sk.flags&lt;br /&gt;
                end&lt;br /&gt;
                local skillObj = {&lt;br /&gt;
                    name = skillName,&lt;br /&gt;
                    n = skillName,&lt;br /&gt;
                    icon = (sk.icon and sk.icon ~= &amp;quot;&amp;quot;) and sk.icon or &amp;quot;&amp;quot;,&lt;br /&gt;
                    level = sk.level or &amp;quot;NIVEL&amp;quot;,&lt;br /&gt;
                    energy = sk.energy,&lt;br /&gt;
                    powerpve = sk.powerpve,&lt;br /&gt;
                    powerpvp = sk.powerpvp,&lt;br /&gt;
                    cooldown = sk.cooldown,&lt;br /&gt;
                    video = sk.video or &amp;quot;&amp;quot;,&lt;br /&gt;
                    desc_i18n = normalizeDesc(sk.desc, sk.descPt, sk.descEn, sk.descEs, sk.descPl),&lt;br /&gt;
                    flags = formSkillFlags,&lt;br /&gt;
                    weapon = processWeapon(sk.weapon)&lt;br /&gt;
                }&lt;br /&gt;
                if type(sk.subskills) == &amp;quot;table&amp;quot; and type(sk.suborder) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                    skillObj.subs = processSubskills(sk.subskills, sk.suborder, data.skills)&lt;br /&gt;
                    skillObj.suborder = sk.suborder&lt;br /&gt;
                end&lt;br /&gt;
                table.insert(formSkills, skillObj)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        formsData[formName] = { order = formData.order, skills = formSkills }&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Usa forms_order se existir (ex: Chopper TS = Brain Point primeiro) para ordem consistente no JSON&lt;br /&gt;
    if type(data.forms_order) == &amp;quot;table&amp;quot; and #data.forms_order &amp;gt; 0 then&lt;br /&gt;
        for _, formName in ipairs(data.forms_order) do&lt;br /&gt;
            local formData = data.forms[formName]&lt;br /&gt;
            if formData then addForm(formName, formData) end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    for formName, formData in pairs(data.forms) do&lt;br /&gt;
        addForm(formName, formData)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return mw.text.jsonEncode(formsData)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Gera JSON de skins a partir do módulo&lt;br /&gt;
function p.skin(frame)&lt;br /&gt;
    local parent = frame:getParent() or frame&lt;br /&gt;
    local args = parent.args or {}&lt;br /&gt;
&lt;br /&gt;
    local moduleName = trim(args.module or &amp;quot;&amp;quot;)&lt;br /&gt;
    if moduleName == &amp;quot;&amp;quot; then&lt;br /&gt;
        return &amp;quot;[]&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local data = requireCharModule(moduleName) or {}&lt;br /&gt;
    if not data.skins or type(data.skins) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
        return &amp;quot;[]&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Processa skins do módulo&lt;br /&gt;
    local skinsArr = {}&lt;br /&gt;
    for _, skin in ipairs(data.skins) do&lt;br /&gt;
        if type(skin) == &amp;quot;table&amp;quot; then&lt;br /&gt;
            local skinObj = {&lt;br /&gt;
                name = skin.name or &amp;quot;&amp;quot;,&lt;br /&gt;
                sprite = skin.sprite or &amp;quot;&amp;quot;,&lt;br /&gt;
                tooltip = skin.tooltip or &amp;quot;&amp;quot;,&lt;br /&gt;
                offset_x = skin.offset_x,&lt;br /&gt;
                tile = skin.tile or &amp;quot;&amp;quot;,&lt;br /&gt;
                tile_x = skin.tile_x,&lt;br /&gt;
                tile_y = skin.tile_y,&lt;br /&gt;
                youtube = skin.youtube&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            -- Se tooltip é table, converte para JSON string&lt;br /&gt;
            if type(skin.tooltip) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                skinObj.tooltip = mw.text.jsonEncode(skin.tooltip)&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            table.insert(skinsArr, skinObj)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return mw.text.jsonEncode(skinsArr)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Melhoria_de_Navio_5&amp;diff=46234</id>
		<title>Melhoria de Navio 5</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Melhoria_de_Navio_5&amp;diff=46234"/>
		<updated>2026-04-20T11:23:35Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: /* O Sedativo mais Forte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Local Crocus.png|miniaturadaimagem|link=|Localização do '''Crocus''': ilha de Twin Cape.]]&lt;br /&gt;
{{Quest&lt;br /&gt;
 |localizacao = Grand Line, em Twin Cape&lt;br /&gt;
 |requisitos = Um personagem de nível 28, Navio nível 4&lt;br /&gt;
}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Sedativo para Laboon =&lt;br /&gt;
----&lt;br /&gt;
Crocus pediu para você coletar '''3 Flores Roxas Misteriosas''' e '''15 Frutas Amarelas Misteriosas'''. Elas podem ser encontradas em uma ilha a '''leste''' de Twin Cape.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex; flex-wrap:wrap; justify-content:center; gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;box-sizing:border-box;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Arquivo:LocalFloresShipLv5.png|link=|commoldura|Ilha onde é possível coletar os itens necessários para o sedativo]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;box-sizing:border-box;&amp;quot;&amp;gt;&lt;br /&gt;
    [[File:ItensMisteriosos1.png|link=|commoldura|Primeiro andar: 2 Flores Roxas Misteriosas e 1 Fruta Amarela Misteriosa]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;box-sizing:border-box;&amp;quot;&amp;gt;&lt;br /&gt;
    [[File:ItensMisteriosos2.png|link=|commoldura|Segundo andar: 2 Frutas Amarelas Misteriosas e 1 Flor Roxa Misteriosa]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Depois de coletar os itens, volte para Twin Cape e entregue para Crocus. Ele vai te recompensar com:&lt;br /&gt;
&lt;br /&gt;
{{Reward|itens=Cotton;38, oak_log;30, Berries.gif;2000}}&lt;br /&gt;
&lt;br /&gt;
= O Sedativo mais Forte =&lt;br /&gt;
----&lt;br /&gt;
Crocus precisa que você faça um '''sedativo''' para Laboon. Ele irá te entregar os seguintes itens:&lt;br /&gt;
&lt;br /&gt;
{{Reward|ignore=1|itens=Pétalas Misteriosas;20, Parte de Fruta Misteriosa;30}}&lt;br /&gt;
&lt;br /&gt;
Antes de começar a receita, compre os seguintes ingredientes:&lt;br /&gt;
&lt;br /&gt;
{{Reward|ignore=1|itens=Água;1, alecrim;1, mel;1, camomila;1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Agora siga a receita para preparar o sedativo:&lt;br /&gt;
&lt;br /&gt;
#Amasse os pedaços de Fruta Misteriosa no '''pilão''' para obter o item '''Suco Misterioso''' {{Icon|IconMysterious Juice.png|align=2px}}&lt;br /&gt;
#'''Ferva''' a '''Água''' com as '''Pétalas Misteriosas''' para criar '''Água Misteriosa''' {{Icon|IconMysterious Water.png|align=2px}}&lt;br /&gt;
#'''Misture''' o '''Suco Misterioso''' e a '''Água Misteriosa''' na '''tábua''' para formar a '''Mistura Misteriosa''' {{Icon|IconMix Mysterious.png|align=2px}}&lt;br /&gt;
#Coloque a Mistura Misteriosa, Camomila, Mel e Alecrim no '''Erlenmeyer''' para completar o Sedativo {{Icon|IconSedative.png|align=2px}}&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:MisturaCrocusFinal.png|centro|link=|commoldura|Última etapa da receita: combinando tudo no Erlenmeyer]]&lt;br /&gt;
&lt;br /&gt;
Entregue o '''Sedativo''' {{Icon|IconSedative.png|align=2px}} para Crocus. Ele vai te recompensar com:&lt;br /&gt;
&lt;br /&gt;
{{Reward|itens=berries.gif;10000, cola;1, iron ore;24, superior gun powder;5}}&lt;br /&gt;
&lt;br /&gt;
= Cuidando do Laboon =&lt;br /&gt;
----&lt;br /&gt;
Crocus pediu para você entrar no estômago de Laboon, derrotar os monstros e aplicar o medicamento nos ferimentos internos.&lt;br /&gt;
&lt;br /&gt;
Vá até o mar e entre na '''boca de Laboon'''. Uma missão especial será iniciada. Seu objetivo será:&lt;br /&gt;
&lt;br /&gt;
* Derrotar os '''Reis dos Mares''' dentro do corpo de Laboon  &lt;br /&gt;
* Aplicar o sedativo nos '''três ferimentos internos'''&lt;br /&gt;
&lt;br /&gt;
Você pode aplicar o sedativo nos ferimentos '''sem precisar derrotar os monstros próximos''', mas para concluir a missão é necessário eliminar todos os inimigos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex; flex-wrap:wrap; justify-content:center; gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;box-sizing:border-box;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Arquivo:LocalBocaLaboonShipLv5.png|link=|commoldura|Entrada da missão]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;box-sizing:border-box;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Arquivo:FerimentosLaboon.png|link=|commoldura|Localização dos '''3 ferimentos''' no corpo de Laboon e visual dos monstros que aparecem na missão]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;box-sizing:border-box;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Arquivo:LocalFerimentoLaboonShipLv5.png|link=|commoldura|Visual do '''ferimento'''. Basta interagir com ele para aplicar o sedativo]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Depois de curar os três ferimentos e eliminar os monstros, volte até '''Crocus''' para encerrar a missão. Ele vai te recompensar com:&lt;br /&gt;
&lt;br /&gt;
{{Reward|itens=Cotton;20, oak_log;30, Berries.gif;800}}&lt;br /&gt;
&lt;br /&gt;
= Procurando o Norio =&lt;br /&gt;
----&lt;br /&gt;
Crocus pediu para você encontrar '''Norio''' ao sudeste. Siga até o local demarcado no mapa.&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:LocalNorioShipLv5.png|centro|link=|commoldura|Localização de '''Norio''', ao sudeste de Twin Cape]]&lt;br /&gt;
&lt;br /&gt;
Fale com '''Norio''' para concluir esta etapa.&lt;br /&gt;
&lt;br /&gt;
== Escolta do Norio ==&lt;br /&gt;
----&lt;br /&gt;
Norio vai pedir sua ajuda para retornar com segurança até '''Twin Cape'''. Essa é uma missão especial onde '''morrer não gera penalidade'''.&lt;br /&gt;
&lt;br /&gt;
Durante o trajeto da missão, você enfrentará '''6 monstros'''.&lt;br /&gt;
&lt;br /&gt;
Ao concluir a escolta, você receberá:&lt;br /&gt;
&lt;br /&gt;
{{Reward|itens=oak log;20, Cotton;23, Berries.gif;808}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depois de chegar em Twin Cape, fale com '''Crocus'''. Ele vai te recompensar com:&lt;br /&gt;
&lt;br /&gt;
{{Reward|itens=Berries;2000, Pose;1|ilha=Twin Cape}}&lt;br /&gt;
&lt;br /&gt;
= A Carga Roubada =&lt;br /&gt;
----&lt;br /&gt;
Norio contou que seu navio foi danificado e talvez nunca mais volte a navegar. Crocus pede para você investigar os destroços e descobrir para onde foi levada a carga que ele aguardava.&lt;br /&gt;
&lt;br /&gt;
Os saqueadores seguiram rumo ao sudoeste. Interaja com os destroços para avançar.&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:LocalDestroçosShipLv5.png|centro|link=|commoldura|Interaja com os '''destroços''' ao sudoeste para iniciar a investigação.]]&lt;br /&gt;
&lt;br /&gt;
== A Carga Roubada – Rastreando as pistas (Partes 2, 3 e 4) ==&lt;br /&gt;
----&lt;br /&gt;
Continue a investigação seguindo os locais marcados com o ícone da lupa {{Icon|IconLupaquest.png|align=1px}}.&lt;br /&gt;
&lt;br /&gt;
Você não precisa realizar nenhuma ação além de chegar até cada ponto e interagir com o local. Ao chegar na última pista, a missão avançará automaticamente para a Parte 5.&lt;br /&gt;
&lt;br /&gt;
== A Carga Roubada – Parte 5 ==&lt;br /&gt;
----&lt;br /&gt;
Siga para o esconderijo dos ladrões localizado mais ao '''sudoeste''' e entre nele.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; justify-content: center; gap: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;box-sizing: border-box;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Arquivo:EsconderijoShipLv5.png|link=|commoldura|Entrada do esconderijo dos ladrões]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;box-sizing: border-box;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Arquivo:EscadasEsconderijoShipLv5.png|link=|commoldura|Você encontrará vários '''BW Millions'''. É recomendado estar pelo menos '''nível 70''']]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;box-sizing: border-box;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Arquivo:CaminhoEsconderijoShipLv5.png|link=|commoldura|No último andar, siga pelo corredor à direita até encontrar a '''Miss Wednesday''']]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Interaja com ela e '''ameace''' até que ela revele o paradeiro da carga.&lt;br /&gt;
&lt;br /&gt;
== A Carga Roubada – Parte 6 ==&lt;br /&gt;
----&lt;br /&gt;
Miss Wednesday contará que '''Mr. 9''' levou a carga para '''Whisky Peak'''. A carga está marcada com a letra '''C'''.&lt;br /&gt;
&lt;br /&gt;
Procure pelo navio da Baroque Works nos arredores.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex; flex-wrap:wrap; justify-content:center; gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;box-sizing:border-box;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Arquivo:NavioBaroqueWorksShipLv5.png|link=|commoldura|Derrote o navio. Quando ele piscar em vermelho, '''interaja/clique''' para entrar na missão instanciada.]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;box-sizing:border-box;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Arquivo:InstanciaNavioBWShipLv5.png|link=|commoldura|Dentro do navio, derrote os '''BW Millions''' e desça as escadas até encontrar a carga]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;box-sizing:border-box;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Arquivo:LocalCargaCrocusShipLv5.png|link=|commoldura|&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Vá até o local marcado para pegar a carga roubada. As celas podem ser destruídas para libertar piratas que vão ajudar a derrotar os BW Millions nesse andar.&lt;br /&gt;
    &amp;lt;/div&amp;gt;]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;Após recuperar a carga, suba as escadas e saia pela lateral direita do navio&lt;br /&gt;
&lt;br /&gt;
== A Carga Roubada – Final ==&lt;br /&gt;
----&lt;br /&gt;
Volte para Twin Cape e entregue o carregamento recuperado para Crocus. Ele irá te recompensar com:&lt;br /&gt;
&lt;br /&gt;
{{Reward|itens=Superior gun powder;5, iron ore;20, Cotton;25, Berries.gif;2000}}&lt;br /&gt;
&lt;br /&gt;
=Navegador Destemido=&lt;br /&gt;
----&lt;br /&gt;
Crocus pediu para você provar que sabe navegar na Grand Line, e para isso, precisará derrotar:&lt;br /&gt;
*7x Thunong&lt;br /&gt;
*7x Shaking&lt;br /&gt;
*7x Serpion&lt;br /&gt;
[[Arquivo:UpgradeShipQuestFinal.png|link=|centro|commoldura|Você pode encontrar '''Serpions''' ao norte de Whisky Peak, '''Thunongs''' podem ser facilmente encontrados em Boin Archipelago, e '''Shakings''' podem ser encontrados do lado Oeste próximos de Whisky Peak.]]&lt;br /&gt;
&lt;br /&gt;
Após derrotar todos os monstros volte para falar com Crocus.&lt;br /&gt;
{{Reward|itens=Berries.gif;5000, Cola;3, Superior gun powder;10, Cannon ball;4, Iron ore;60, Cotton;85, Oak log;70}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Achievement&lt;br /&gt;
|imagem    = Tecnologia_de_navio&lt;br /&gt;
|titulo    = Tecnologia de Navio V&lt;br /&gt;
|descricao = Desbloqueou o Arsenal nível 5!&lt;br /&gt;
|itens     = Chest key piece:1, Profile icon box:1&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Baby_5&amp;diff=46219</id>
		<title>Baby 5</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Baby_5&amp;diff=46219"/>
		<updated>2026-04-20T03:59:09Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Character&lt;br /&gt;
 |name=Baby 5&lt;br /&gt;
 |module=Bb5&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Baby_5&amp;diff=46217</id>
		<title>Baby 5</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Baby_5&amp;diff=46217"/>
		<updated>2026-04-20T03:57:22Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Character&lt;br /&gt;
 |name=Baby 5&lt;br /&gt;
 |module=Kuma&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio:Gurren1&amp;diff=46124</id>
		<title>Usuário:Gurren1</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio:Gurren1&amp;diff=46124"/>
		<updated>2026-04-14T17:26:05Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: inicio da página sobre o site do suporte gla&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Suporte GLA:&lt;br /&gt;
&lt;br /&gt;
= Donate =&lt;br /&gt;
&lt;br /&gt;
* alternativa para fazer doações por pix, boleto efí, pagbank e cielo fora do jogo&lt;br /&gt;
* histórico das ultimas doações&lt;br /&gt;
* saiba mais sobre doações aqui (ancora)&lt;br /&gt;
&lt;br /&gt;
= Tickets =&lt;br /&gt;
&lt;br /&gt;
* criação de tickets&lt;br /&gt;
* histórico recente de tickets, pode ser limpado periodicamente&lt;br /&gt;
* importante para verificar tickets respondidos, fazer tickets sobre bugs, denúncias, doações, recuperação de conta ou dúvidas objetivas sobre o jogo. exclusivamente para essas categorias, qualquer coisa fora desse escopo a equipe vai orientar o canal correto.&lt;br /&gt;
* saiba mais sobre os tickets (ancora)&lt;br /&gt;
&lt;br /&gt;
= Authorized Machines =&lt;br /&gt;
&lt;br /&gt;
* lista de máquinas autorizadas&lt;br /&gt;
* pode remover máquinas autorizadas caso desconfie de um dispositivo que foi comprometido e ainda faz parte dos acessos da conta&lt;br /&gt;
* saiba mais como autorizar seu dispositivo (PC/Mobile) aqui (ancora)&lt;br /&gt;
&lt;br /&gt;
= Account Settings =&lt;br /&gt;
&lt;br /&gt;
* detalhes da conta como e-mail, status da VIP, saldo de gemas da conta e status do e-mail.&lt;br /&gt;
* pode trocar o e-mail da conta através dessa página, se não tiver acesso a conta mas souber e-mail e senha pode acessar a página e realizar a troca manualmente pelo site.&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Criadores_de_Conte%C3%BAdo&amp;diff=46123</id>
		<title>Criadores de Conteúdo</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Criadores_de_Conte%C3%BAdo&amp;diff=46123"/>
		<updated>2026-04-14T17:11:40Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Há um programa de parceria voltado a criadores de conteúdo que produzem conteúdos sobre o jogo, com '''recompensas exclusivas''', formas de destaque dentro da comunidade e também recursos que ajudam a movimentar e divulgar esses conteúdos, como chaves para sorteio e possíveis convites para transmissões de eventos especiais do jogo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.8em; font-weight: normal; margin: 0 0 0.2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
Informações Importantes&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
*Todo canal é avaliado pela equipe. Atualmente, as recompensas da parceria são voltadas apenas para canais da '''Twitch''' e do '''YouTube'''.&lt;br /&gt;
*A solicitação da parceria deve ser realizada por meio de um [https://support.gla.com.br/tickets '''&amp;lt;big&amp;gt;Ticket&amp;lt;/big&amp;gt;''']. No pedido, envie o nome ou link do canal. No caso da Twitch, os VODs devem estar disponíveis para que a equipe consiga avaliar as transmissões anteriores.&lt;br /&gt;
*Não é obrigatório utilizar ambas as plataformas ('''Twitch''' e '''YouTube''') para ser elegível às recompensas.&lt;br /&gt;
*Canais que exibirem conteúdo incompatível com o perfil buscado pela equipe, especialmente quando houver violação das regras do jogo ou incentivo a esse tipo de conduta, não serão elegíveis às recompensas.&lt;br /&gt;
*'''Canais parceiros''' cujo responsável violar as regras do jogo, ou que transmitirem conteúdo relacionado à violação das regras e termos do jogo, poderão ter a parceria e as recompensas revogadas.&lt;br /&gt;
&lt;br /&gt;
=Recompensas e Requisitos=&lt;br /&gt;
----&lt;br /&gt;
Antes de conferir os requisitos de cada recompensa, é importante destacar que um dos principais critérios avaliados pela equipe é o '''bom histórico''' do criador de conteúdo dentro do jogo e também em nossa comunidade no Discord.&lt;br /&gt;
&lt;br /&gt;
As recompensas são enviadas por correio ao criador de conteúdo. Com exceção das chaves de baú da Twitch, todas as demais recompensas são '''itens exclusivos para a conta do jogador'''.&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
|-|Skin de Navio=&lt;br /&gt;
{{#widget:CreatorReward&lt;br /&gt;
 | sprite = The Streamer.png&lt;br /&gt;
 | title = Skin de navio&lt;br /&gt;
 | desc = Skins exclusivas para o criador de conteúdo, uma de cada plataforma.&lt;br /&gt;
 | yt_req = *500 inscritos *2 vídeos/mês&lt;br /&gt;
 | tw_req = *500 seguidores *3 transmissões/mês&lt;br /&gt;
 | gif = CreatorBoats.gif&lt;br /&gt;
}}&lt;br /&gt;
|-|Cargo Content Creator=&lt;br /&gt;
{{#widget:CreatorReward&lt;br /&gt;
 | sprite = Discord_Mini_Icon.png&lt;br /&gt;
 | title = Cargo &amp;quot;Content Creator&amp;quot;&lt;br /&gt;
 | desc = Cargo exclusivo no servidor oficial do Discord.&lt;br /&gt;
 | yt_req = *500 inscritos *2 vídeos/mês&lt;br /&gt;
 | tw_req = *250 seguidores *3 transmissões/mês&lt;br /&gt;
}}&lt;br /&gt;
|-|Chaves para Sorteio=&lt;br /&gt;
{{#widget:CreatorReward&lt;br /&gt;
 | sprite = Twitch_Chest_Key.png&lt;br /&gt;
 | title = Chave de Baú da Twitch&lt;br /&gt;
 | desc = Chaves exclusivas, enviadas para apoiar nos sorteios das transmissões. Esse item pode ser trocado entre jogadores ou vendido/comprado no Market.&lt;br /&gt;
 | yt_req = *800 inscritos&lt;br /&gt;
 | yt_note = Avaliação é feita com base na frequência de vídeos e média de views.&lt;br /&gt;
 | tw_req = *800 seguidores *8 transmissões/mês *média de 25 viewers&lt;br /&gt;
}}&lt;br /&gt;
|-|Ícone Exclusivo=&lt;br /&gt;
{{#widget:CreatorReward&lt;br /&gt;
 | sprite = Profile_Icon_Exclusive.png&lt;br /&gt;
 | title = Ícone de Perfil&lt;br /&gt;
 | desc = Recompensa exclusiva para criadores de conteúdo parceiros.&lt;br /&gt;
 | yt_req = *1.000 inscritos&lt;br /&gt;
 | yt_note = Avaliação é feita com base na frequência de vídeos e média de views.&lt;br /&gt;
 | tw_req = *1.000 seguidores *8+ transmissões/mês *média 25–30 viewers *transmitindo GLA há 2+ meses&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tabber&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio:Gurren1&amp;diff=46122</id>
		<title>Usuário:Gurren1</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio:Gurren1&amp;diff=46122"/>
		<updated>2026-04-14T17:11:21Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Há um programa de parceria voltado a criadores de conteúdo que produzem conteúdos sobre o jogo, com '''recompensas exclusivas''', formas de destaque dentro da comunidade e também recursos que ajudam a movimentar e divulgar esses conteúdos, como chaves para sorteio e possíveis convites para transmissões de eventos especiais do jogo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.8em; font-weight: normal; margin: 0 0 0.2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
Informações Importantes&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
*Todo canal é avaliado pela equipe. Atualmente, as recompensas da parceria são voltadas apenas para canais da '''Twitch''' e do '''YouTube'''.&lt;br /&gt;
*A solicitação da parceria deve ser realizada por meio de um [https://support.gla.com.br/tickets '''&amp;lt;big&amp;gt;Ticket&amp;lt;/big&amp;gt;''']. No pedido, envie o nome ou link do canal. No caso da Twitch, os VODs devem estar disponíveis para que a equipe consiga avaliar as transmissões anteriores.&lt;br /&gt;
*Não é obrigatório utilizar ambas as plataformas ('''Twitch''' e '''YouTube''') para ser elegível às recompensas.&lt;br /&gt;
*Canais que exibirem conteúdo incompatível com o perfil buscado pela equipe, especialmente quando houver violação das regras do jogo ou incentivo a esse tipo de conduta, não serão elegíveis às recompensas.&lt;br /&gt;
*'''Canais parceiros''' cujo responsável violar as regras do jogo, ou que transmitirem conteúdo relacionado à violação das regras e termos do jogo, poderão ter a parceria e as recompensas revogadas.&lt;br /&gt;
&lt;br /&gt;
=Recompensas e Requisitos=&lt;br /&gt;
----&lt;br /&gt;
Antes de conferir os requisitos de cada recompensa, é importante destacar que um dos principais critérios avaliados pela equipe é o '''bom histórico''' do criador de conteúdo dentro do jogo e também em nossa comunidade no Discord.&lt;br /&gt;
&lt;br /&gt;
As recompensas são enviadas por correio ao criador de conteúdo. Com exceção das chaves de baú da Twitch, todas as demais recompensas são '''itens exclusivos para a conta do jogador'''.&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
|-|Skin de Navio=&lt;br /&gt;
{{#widget:CreatorReward&lt;br /&gt;
 | sprite = The Streamer.png&lt;br /&gt;
 | title = Skin de navio&lt;br /&gt;
 | desc = Skins exclusivas para o criador de conteúdo, uma de cada plataforma.&lt;br /&gt;
 | yt_req = *500 inscritos *2 vídeos/mês&lt;br /&gt;
 | tw_req = *500 seguidores *3 transmissões/mês&lt;br /&gt;
 | gif = CreatorBoats.gif&lt;br /&gt;
}}&lt;br /&gt;
|-|Cargo Content Creator=&lt;br /&gt;
{{#widget:CreatorReward&lt;br /&gt;
 | sprite = Discord_Mini_Icon.png&lt;br /&gt;
 | title = Cargo &amp;quot;Content Creator&amp;quot;&lt;br /&gt;
 | desc = Cargo exclusivo no servidor oficial do Discord.&lt;br /&gt;
 | yt_req = *500 inscritos *2 vídeos/mês&lt;br /&gt;
 | tw_req = *250 seguidores *3 transmissões/mês&lt;br /&gt;
}}&lt;br /&gt;
|-|Chaves para Sorteio=&lt;br /&gt;
{{#widget:CreatorReward&lt;br /&gt;
 | sprite = Twitch_Chest_Key.png&lt;br /&gt;
 | title = Chave de Baú da Twitch&lt;br /&gt;
 | desc = Chaves exclusivas, enviadas para apoiar nos sorteios das transmissões. Esse item pode ser trocado entre jogadores ou vendido/comprado no Market.&lt;br /&gt;
 | yt_req = *800 inscritos&lt;br /&gt;
 | yt_note = Avaliação é feita com base na frequência de vídeos e média de views.&lt;br /&gt;
 | tw_req = *800 seguidores *8 transmissões/mês *média de 25 viewers&lt;br /&gt;
}}&lt;br /&gt;
|-|Ícone Exclusivo=&lt;br /&gt;
{{#widget:CreatorReward&lt;br /&gt;
 | sprite = Profile_Icon_Exclusive.png&lt;br /&gt;
 | title = Ícone de Perfil&lt;br /&gt;
 | desc = Recompensa exclusiva para criadores de conteúdo parceiros.&lt;br /&gt;
 | yt_req = *1.000 inscritos&lt;br /&gt;
 | yt_note = Avaliação é feita com base na frequência de vídeos e média de views.&lt;br /&gt;
 | tw_req = *1.000 seguidores *8+ transmissões/mês *média 25–30 viewers *transmitindo GLA há 2+ meses&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tabber&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio:Gurren1&amp;diff=46094</id>
		<title>Usuário:Gurren1</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio:Gurren1&amp;diff=46094"/>
		<updated>2026-04-13T23:13:05Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
Há um programa de parceria voltado a criadores de conteúdo que produzem conteúdos sobre o jogo, com '''recompensas exclusivas''', formas de destaque dentro da comunidade e também recursos que ajudam a movimentar e divulgar esses conteúdos, como chaves para sorteio e possíveis convites para transmissões de eventos especiais do jogo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.8em; font-weight: normal; margin: 0 0 0.2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
Informações Importantes&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
*Todo canal é avaliado pela equipe. Atualmente, as recompensas da parceria são voltadas apenas para canais da '''Twitch''' e do '''YouTube'''.&lt;br /&gt;
*A solicitação da parceria deve ser realizada por meio de um [https://support.gla.com.br/tickets '''&amp;lt;big&amp;gt;Ticket&amp;lt;/big&amp;gt;''']. No pedido, envie o nome ou link do canal. No caso da Twitch, os VODs devem estar disponíveis para que a equipe consiga avaliar as transmissões anteriores.&lt;br /&gt;
*Não é obrigatório utilizar ambas as plataformas ('''Twitch''' e '''YouTube''') para ser elegível às recompensas.&lt;br /&gt;
*Canais que exibirem conteúdo incompatível com o perfil buscado pela equipe, especialmente quando houver violação das regras do jogo ou incentivo a esse tipo de conduta, não serão elegíveis às recompensas.&lt;br /&gt;
*'''Canais parceiros''' cujo responsável violar as regras do jogo, ou que transmitirem conteúdo relacionado à violação das regras e termos do jogo, poderão ter a parceria e as recompensas revogadas.&lt;br /&gt;
&lt;br /&gt;
=Recompensas e Requisitos=&lt;br /&gt;
----&lt;br /&gt;
Antes de conferir os requisitos de cada recompensa, é importante destacar que um dos principais critérios avaliados pela equipe é o '''bom histórico''' do criador de conteúdo dentro do jogo e também em nossa comunidade no Discord.&lt;br /&gt;
&lt;br /&gt;
As recompensas são enviadas por correio ao criador de conteúdo. Com exceção das chaves de baú da Twitch, todas as demais recompensas são '''itens exclusivos para a conta do jogador'''.&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
|-|Skin de Navio=&lt;br /&gt;
{{#widget:CreatorReward&lt;br /&gt;
 | sprite = The Streamer.png&lt;br /&gt;
 | title = Skin de navio&lt;br /&gt;
 | desc = Skins exclusivas para o criador de conteúdo, uma de cada plataforma.&lt;br /&gt;
 | yt_req = *500 inscritos *2 vídeos/mês&lt;br /&gt;
 | tw_req = *500 seguidores *3 transmissões/mês&lt;br /&gt;
 | gif = CreatorBoats.gif&lt;br /&gt;
}}&lt;br /&gt;
|-|Cargo Content Creator=&lt;br /&gt;
{{#widget:CreatorReward&lt;br /&gt;
 | sprite = Discord_Mini_Icon.png&lt;br /&gt;
 | title = Cargo &amp;quot;Content Creator&amp;quot;&lt;br /&gt;
 | desc = Cargo exclusivo no servidor oficial do Discord.&lt;br /&gt;
 | yt_req = *500 inscritos *2 vídeos/mês&lt;br /&gt;
 | tw_req = *250 seguidores *3 transmissões/mês&lt;br /&gt;
}}&lt;br /&gt;
|-|Chaves para Sorteio=&lt;br /&gt;
{{#widget:CreatorReward&lt;br /&gt;
 | sprite = Twitch_Chest_Key.png&lt;br /&gt;
 | title = Chave de Baú da Twitch&lt;br /&gt;
 | desc = Chaves exclusivas, enviadas para apoiar nos sorteios das transmissões. Esse item pode ser trocado entre jogadores ou vendido/comprado no Market.&lt;br /&gt;
 | yt_req = *800 inscritos&lt;br /&gt;
 | yt_note = Avaliação é feita com base na frequência de vídeos e média de views.&lt;br /&gt;
 | tw_req = *800 seguidores *8 transmissões/mês *média de 25 viewers&lt;br /&gt;
}}&lt;br /&gt;
|-|Ícone Exclusivo=&lt;br /&gt;
{{#widget:CreatorReward&lt;br /&gt;
 | sprite = Profile_Icon_Exclusive.png&lt;br /&gt;
 | title = Ícone de Perfil&lt;br /&gt;
 | desc = Recompensa exclusiva para criadores de conteúdo parceiros.&lt;br /&gt;
 | yt_req = *1.000 inscritos&lt;br /&gt;
 | yt_note = Avaliação é feita com base na frequência de vídeos e média de views.&lt;br /&gt;
 | tw_req = *1.000 seguidores *8+ transmissões/mês *média 25–30 viewers *transmitindo GLA há 2+ meses&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tabber&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Criadores de Conteúdo =&lt;br /&gt;
----&lt;br /&gt;
A lista abaixo reúne os criadores de conteúdo parceiros que já receberam o ícone exclusivo de perfil, concedido a quem conquistou todas as recompensas possíveis em pelo menos uma das plataformas em que produz conteúdo.&lt;br /&gt;
&lt;br /&gt;
A lista é atualizada automaticamente com base na atividade recente dos canais.&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio:Gurren1&amp;diff=46092</id>
		<title>Usuário:Gurren1</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio:Gurren1&amp;diff=46092"/>
		<updated>2026-04-13T22:59:53Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{reward|itens=61700;0}}&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio:Gurren1&amp;diff=46091</id>
		<title>Usuário:Gurren1</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio:Gurren1&amp;diff=46091"/>
		<updated>2026-04-13T22:59:45Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{reward|itens=61700}}&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio:Gurren1&amp;diff=46090</id>
		<title>Usuário:Gurren1</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio:Gurren1&amp;diff=46090"/>
		<updated>2026-04-13T22:59:36Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{reward|itens=61700|}}&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio:Gurren1&amp;diff=46089</id>
		<title>Usuário:Gurren1</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio:Gurren1&amp;diff=46089"/>
		<updated>2026-04-13T22:57:41Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{reward|itens=61700;1}}&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio:Gurren1&amp;diff=46088</id>
		<title>Usuário:Gurren1</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio:Gurren1&amp;diff=46088"/>
		<updated>2026-04-13T22:45:02Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
[[file:Bug da linha vermelha em Foosha.png|alt=imagem que o gurren fez upload|centro|bug reportado|miniaturadaimagem|477x500px]]&lt;br /&gt;
&lt;br /&gt;
[[file:Bug da linha vermelha em Foosha.png|link=|center]]&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio:Gurren1&amp;diff=46087</id>
		<title>Usuário:Gurren1</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=Usu%C3%A1rio:Gurren1&amp;diff=46087"/>
		<updated>2026-04-13T22:44:50Z</updated>

		<summary type="html">&lt;p&gt;Gurren1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
[[file:Bug da linha vermelha em Foosha.png|alt=imagem que o gurren fez upload|centro|bug reportado|miniaturadaimagem|477x477px]]&lt;br /&gt;
&lt;br /&gt;
[[file:Bug da linha vermelha em Foosha.png|link=|center]]&lt;/div&gt;</summary>
		<author><name>Gurren1</name></author>
	</entry>
</feed>