Mudanças entre as edições de "Widget:Lari1"

De Wiki Gla
Ir para navegação Ir para pesquisar
 
(6 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
<style>
<style>
:root {
    /* ===== RESET ===== */
  --lk-bg: #ffffff;
    .ba-wrap, .ba-wrap * { box-sizing: border-box; margin: 0; padding: 0; }
  --lk-bg-subtle: #f8fafc;
    .ba-wrap {
  --lk-accent: #2563eb;
        font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  --lk-text: #0f172a;
        border-radius: 12px;
  --lk-muted: #64748b;
        overflow: hidden;
  --lk-border: #e2e8f0;
        transition: background .3s, color .3s;
  --lk-radius: 12px;
    }
  --lk-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.08);
  --lk-shadow-hover: 0 8px 24px -4px rgb(0 0 0 / 0.12);
  --lk-ease: 200ms cubic-bezier(0.4, 0, 0.2, 1);
}


.lk-grid {
    /* ===== TEMAS ===== */
  display: grid;
    .ba-wrap.dark { background: #14141f; color: #c8c8d8; }
  grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
    .ba-wrap.light { background: #f0f0f5; color: #2a2a3d; }
  gap: 1.5rem;
  padding: 1.5rem 0;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}


.lk-card {
    /* ===== HEADER ===== */
  background: var(--lk-bg);
    .ba-header {
  border: 1px solid var(--lk-border);
        display: flex; align-items: center; justify-content: space-between;
  border-radius: var(--lk-radius);
        padding: 16px 20px 0;
  box-shadow: var(--lk-shadow);
    }
  overflow: hidden;
    .ba-title { font-size: 20px; font-weight: 700; }
  display: flex;
    .ba-wrap.dark .ba-title { color: #fff; }
  flex-direction: column;
    .ba-wrap.light .ba-title { color: #1a1a2a; }
  transition: box-shadow var(--lk-ease), border-color var(--lk-ease);
}
.lk-card:hover {
  box-shadow: var(--lk-shadow-hover);
  border-color: #cbd5e1;
}


.lk-card-header {
    .ba-controls { display: flex; align-items: center; gap: 10px; }
  padding: 1rem 1rem 0.5rem;
  display: flex;
  align-items: center;
  gap: 0.75rem;
}
.lk-card-header img {
  width: 48px; height: 48px;
  border-radius: 8px;
  object-fit: cover;
  border: 1px solid var(--lk-border);
}
.lk-boss-name {
  font-size: 1.125rem;
  font-weight: 800;
  color: var(--lk-text);
  letter-spacing: -0.01em;
}
.lk-boss-island {
  font-size: 0.75rem;
  font-weight: 500;
  color: var(--lk-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}


.lk-tabs { display: flex; flex-direction: column; flex-grow: 1; }
    .ba-mode-toggle {
.lk-radio { display: none !important; }
        display: flex; gap: 4px; border-radius: 20px; padding: 3px;
        transition: background .3s;
    }
    .ba-wrap.dark .ba-mode-toggle { background: #1e1e30; }
    .ba-wrap.light .ba-mode-toggle { background: #dddde5; }


.lk-nav {
    .ba-mode-btn {
  display: flex; gap: 4px;
        padding: 5px 16px; border-radius: 16px; border: none;
  padding: 0.5rem 0.75rem;
        font-size: 12px; font-weight: 700; cursor: pointer;
  background: var(--lk-bg-subtle);
        background: transparent; transition: all .2s;
  border-bottom: 1px solid var(--lk-border);
        text-transform: uppercase; letter-spacing: .5px;
  overflow-x: auto;
    }
  scrollbar-width: none;
    .ba-wrap.dark .ba-mode-btn { color: #6a6a8a; }
}
    .ba-wrap.light .ba-mode-btn { color: #8888a0; }
.lk-nav::-webkit-scrollbar { display: none; }
    .ba-wrap.dark .ba-mode-btn.active { background: #2a2a44; color: #e8c84a; }
.lk-nav label {
    .ba-wrap.light .ba-mode-btn.active { background: #fff; color: #5a5a7a; box-shadow: 0 1px 3px rgba(0,0,0,.1); }
  padding: 6px 14px;
  font-size: 0.7rem; font-weight: 700;
  color: var(--lk-muted);
  background: transparent;
  border-radius: 6px;
  cursor: pointer;
  white-space: nowrap;
  transition: var(--lk-ease);
  border: 1px solid transparent;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.lk-nav label:hover { color: var(--lk-text); background: #f1f5f9; }


.lk-panel {
    .ba-theme-btn {
  display: none; padding: 1rem;
        display: flex; align-items: center; gap: 6px;
  flex-grow: 1;
        padding: 6px 14px; border-radius: 20px; border: none;
  animation: lkFade 0.3s ease;
        cursor: pointer; font-size: 13px; font-weight: 600;
}
        transition: all .2s; white-space: nowrap;
@keyframes lkFade {
    }
  from { opacity: 0; transform: translateY(4px); }
    .ba-wrap.dark .ba-theme-btn { background: #1e1e30; color: #c8c8d8; }
  to { opacity: 1; transform: translateY(0); }
    .ba-wrap.light .ba-theme-btn { background: #dddde5; color: #5a5a7a; }
}


.lk-video {
    /* ===== TABS BOSSES ===== */
  position: relative; padding-bottom: 56.25%; height: 0;
    .ba-tabs-bar {
  border-radius: 8px; overflow: hidden;
        padding: 16px 20px 0;
  background: #0f172a; margin-bottom: 0.75rem;
        overflow-x: auto;
}
    }
.lk-video iframe {
    .ba-tabs-bar::-webkit-scrollbar { height: 0; }
  position: absolute; top: 0; left: 0;
  width: 100%; height: 100%; border: 0;
}


.lk-skill-name {
    .ba-tabs {
  font-size: 1rem; font-weight: 700;
        display: flex; justify-content: center; gap: 0;
  color: var(--lk-text); margin-bottom: 0.25rem; display: block;
        border-bottom: 1px solid rgba(120,120,180,.15);
}
    }
.lk-skill-desc {
    .ba-wrap.light .ba-tabs { border-bottom-color: rgba(0,0,0,.08); }
  font-size: 0.875rem; line-height: 1.6;
  color: var(--lk-muted); margin: 0;
}


/* === ACTIVE TAB (b1–b7, s1–s5) === */
    .ba-tab {
#b1s1:checked~.lk-nav label[for="b1s1"],#b1s2:checked~.lk-nav label[for="b1s2"],#b1s3:checked~.lk-nav label[for="b1s3"],#b1s4:checked~.lk-nav label[for="b1s4"],#b1s5:checked~.lk-nav label[for="b1s5"],
        padding: 10px 20px; background: transparent; border: none; cursor: pointer;
#b2s1:checked~.lk-nav label[for="b2s1"],#b2s2:checked~.lk-nav label[for="b2s2"],#b2s3:checked~.lk-nav label[for="b2s3"],#b2s4:checked~.lk-nav label[for="b2s4"],#b2s5:checked~.lk-nav label[for="b2s5"],
        font-size: 13px; font-weight: 600; white-space: nowrap;
#b3s1:checked~.lk-nav label[for="b3s1"],#b3s2:checked~.lk-nav label[for="b3s2"],#b3s3:checked~.lk-nav label[for="b3s3"],#b3s4:checked~.lk-nav label[for="b3s4"],#b3s5:checked~.lk-nav label[for="b3s5"],
        transition: all .2s; position: relative;
#b4s1:checked~.lk-nav label[for="b4s1"],#b4s2:checked~.lk-nav label[for="b4s2"],#b4s3:checked~.lk-nav label[for="b4s3"],#b4s4:checked~.lk-nav label[for="b4s4"],#b4s5:checked~.lk-nav label[for="b4s5"],
    }
#b5s1:checked~.lk-nav label[for="b5s1"],#b5s2:checked~.lk-nav label[for="b5s2"],#b5s3:checked~.lk-nav label[for="b5s3"],#b5s4:checked~.lk-nav label[for="b5s4"],#b5s5:checked~.lk-nav label[for="b5s5"],
    .ba-wrap.dark .ba-tab { color: #6a6a8a; }
#b6s1:checked~.lk-nav label[for="b6s1"],#b6s2:checked~.lk-nav label[for="b6s2"],#b6s3:checked~.lk-nav label[for="b6s3"],#b6s4:checked~.lk-nav label[for="b6s4"],#b6s5:checked~.lk-nav label[for="b6s5"],
    .ba-wrap.light .ba-tab { color: #8888a0; }
#b7s1:checked~.lk-nav label[for="b7s1"],#b7s2:checked~.lk-nav label[for="b7s2"],#b7s3:checked~.lk-nav label[for="b7s3"],#b7s4:checked~.lk-nav label[for="b7s4"],#b7s5:checked~.lk-nav label[for="b7s5"] {
    .ba-wrap.dark .ba-tab.active { color: #e05555; }
  background: #fff; color: var(--lk-accent);
    .ba-wrap.light .ba-tab.active { color: #c04040; }
  border-color: var(--lk-border); box-shadow: var(--lk-shadow);
}


/* === ACTIVE PANELS === */
    .ba-tab.active::after {
#b1s1:checked~.p-b1s1,#b1s2:checked~.p-b1s2,#b1s3:checked~.p-b1s3,#b1s4:checked~.p-b1s4,#b1s5:checked~.p-b1s5,
        content: ''; position: absolute; bottom: -1px; left: 15%; right: 15%;
#b2s1:checked~.p-b2s1,#b2s2:checked~.p-b2s2,#b2s3:checked~.p-b2s3,#b2s4:checked~.p-b2s4,#b2s5:checked~.p-b2s5,
        height: 2px; border-radius: 2px;
#b3s1:checked~.p-b3s1,#b3s2:checked~.p-b3s2,#b3s3:checked~.p-b3s3,#b3s4:checked~.p-b3s4,#b3s5:checked~.p-b3s5,
    }
#b4s1:checked~.p-b4s1,#b4s2:checked~.p-b4s2,#b4s3:checked~.p-b4s3,#b4s4:checked~.p-b4s4,#b4s5:checked~.p-b4s5,
    .ba-wrap.dark .ba-tab.active::after { background: #6ab4ff; }
#b5s1:checked~.p-b5s1,#b5s2:checked~.p-b5s2,#b5s3:checked~.p-b5s3,#b5s4:checked~.p-b5s4,#b5s5:checked~.p-b5s5,
    .ba-wrap.light .ba-tab.active::after { background: #5a8ad0; }
#b6s1:checked~.p-b6s1,#b6s2:checked~.p-b6s2,#b6s3:checked~.p-b6s3,#b6s4:checked~.p-b6s4,#b6s5:checked~.p-b6s5,
#b7s1:checked~.p-b7s1,#b7s2:checked~.p-b7s2,#b7s3:checked~.p-b7s3,#b7s4:checked~.p-b7s4,#b7s5:checked~.p-b7s5 {
  display: block;
}


@media (max-width: 640px) {
    /* ===== BODY ===== */
  .lk-grid { grid-template-columns: 1fr; gap: 1rem; }
    .ba-body {
  .lk-card-header img { width: 40px; height: 40px; }
        padding: 20px; min-height: 320px; transition: background .3s;
  .lk-boss-name { font-size: 1rem; }
    }
}
    .ba-wrap.dark .ba-body { background: #1c1c2e; }
    .ba-wrap.light .ba-body { background: #fff; }
 
    .ba-section-label {
        font-size: 11px; font-weight: 700;
        letter-spacing: 1px; text-transform: uppercase; margin-bottom: 12px;
    }
    .ba-wrap.dark .ba-section-label { color: #7e7e9e; }
    .ba-wrap.light .ba-section-label { color: #9090a8; }
 
    /* ===== SKILLS ===== */
    .ba-skills-area { display: flex; gap: 16px; }
 
    .ba-skills-list {
        width: 200px; flex-shrink: 0; display: flex;
        flex-direction: column; gap: 4px;
    }
 
    .ba-skill-btn {
        display: flex; align-items: center; gap: 10px;
        padding: 9px 12px; border-radius: 8px; border: none;
        cursor: pointer; font-size: 13px; font-weight: 500;
        text-align: left; transition: all .15s; width: 100%;
        background: transparent;
    }
    .ba-wrap.dark .ba-skill-btn { color: #9090aa; }
    .ba-wrap.light .ba-skill-btn { color: #7a7a90; }
    .ba-wrap.dark .ba-skill-btn:hover { background: #24243a; color: #c8c8d8; }
    .ba-wrap.light .ba-skill-btn:hover { background: #f0f0f5; color: #2a2a3d; }
    .ba-wrap.dark .ba-skill-btn.active { background: #2a2a44; color: #fff; border-left: 3px solid #6ab4ff; }
    .ba-wrap.light .ba-skill-btn.active { background: #eef4ff; color: #1a1a2a; border-left: 3px solid #5a8ad0; }
 
    .ba-skill-num {
        width: 20px; height: 20px; border-radius: 50%;
        display: flex; align-items: center; justify-content: center;
        font-size: 10px; font-weight: 700; flex-shrink: 0;
    }
    .ba-wrap.dark .ba-skill-num { background: #2a2a44; color: #6ab4ff; }
    .ba-wrap.light .ba-skill-num { background: #dde8f8; color: #5a8ad0; }
    .ba-wrap.dark .ba-skill-btn.active .ba-skill-num { background: #6ab4ff; color: #14141f; }
    .ba-wrap.light .ba-skill-btn.active .ba-skill-num { background: #5a8ad0; color: #fff; }
 
    /* ===== VIDEO ===== */
    .ba-video-area {
        border-radius: 10px; overflow: hidden;
        aspect-ratio: 16/9; width: 480px; min-width: 360px;
        display: flex; align-items: center; justify-content: center;
        flex-shrink: 0;
    }
    .ba-wrap.dark .ba-video-area { background: #111; border: 1px solid rgba(100,100,160,.15); }
    .ba-wrap.light .ba-video-area { background: #e8e8f0; border: 1px solid rgba(0,0,0,.08); }
 
    .ba-video-placeholder { text-align: center; }
    .ba-wrap.dark .ba-video-placeholder { color: #555; }
    .ba-wrap.light .ba-video-placeholder { color: #aaa; }
    .ba-video-placeholder p { font-size: 12px; }
 
    .ba-skill-desc {
        font-size: 12px; line-height: 1.5;
        padding: 8px 12px; border-radius: 8px;
        flex: 1; min-width: 80px;
    }
    .ba-wrap.dark .ba-skill-desc { color: #8888a8; background: #1a1a2a; border-left: 2px solid #6ab4ff; }
    .ba-wrap.light .ba-skill-desc { color: #6a6a80; background: #f5f5fa; border-left: 2px solid #5a8ad0; }
 
    .ba-video-row {
        display: flex; gap: 14px; align-items: flex-start; flex: 1;
    }
 
    .ba-empty {
        text-align: center; padding: 60px 20px; opacity: .4; font-size: 14px;
    }
 
    /* ===== RESPONSIVO ===== */
    @media (max-width: 600px) {
        .ba-skills-area { flex-direction: column; }
        .ba-skills-list {
            width: 100%; flex-direction: row;
            overflow-x: auto; gap: 6px;
        }
        .ba-skill-btn { white-space: nowrap; }
        .ba-video-row { flex-direction: column; }
        .ba-video-area { min-width: unset; max-width: 100%; width: 100%; }
    }
 
    /* Fix MediaWiki <p> wrapping */
    .mw-parser-output > p:has(> style),
    .mw-parser-output > p:has(> script) {
        margin: 0 !important;
    }
</style>
</style>
<script>
(function () {
    function run() {
        var wrap = document.getElementById('ba-wrap');
        if (!wrap) return;
        var bosses;
        try {
            bosses = JSON.parse(wrap.getAttribute('data-bosses') || '[]');
        } catch (e) { return; }
        if (!bosses.length) return;
        var titulo = wrap.getAttribute('data-titulo') || '';
        var currentMode = 'elite';
        var currentBoss = 0;
        var currentSkill = 0;
        var isDark = wrap.classList.contains('dark');
        /* ---------- Extrai YouTube ID ---------- */
        function ytId(str) {
            if (!str) return '';
            var m = str.match(/(?:youtube\.com\/(?:watch\?v=|embed\/)|youtu\.be\/)([A-Za-z0-9_-]{11})/);
            if (m) return m[1];
            if (/^[A-Za-z0-9_-]{11}$/.test(str.trim())) return str.trim();
            return '';
        }
        /* ---------- Monta HTML interno ---------- */
        function buildShell() {
            wrap.innerHTML = '';
            /* Header */
            var header = document.createElement('div');
            header.className = 'ba-header';
            var titleEl = document.createElement('div');
            titleEl.className = 'ba-title';
            titleEl.textContent = titulo;
            header.appendChild(titleEl);
            var controls = document.createElement('div');
            controls.className = 'ba-controls';
            var modeToggle = document.createElement('div');
            modeToggle.className = 'ba-mode-toggle';
            var btnElite = document.createElement('button');
            btnElite.className = 'ba-mode-btn active';
            btnElite.textContent = 'ELITE';
            btnElite.addEventListener('click', function () { setMode('elite', this); });
            var btnHard = document.createElement('button');
            btnHard.className = 'ba-mode-btn';
            btnHard.textContent = 'HARD';
            btnHard.addEventListener('click', function () { setMode('hard', this); });
            modeToggle.appendChild(btnElite);
            modeToggle.appendChild(btnHard);
            controls.appendChild(modeToggle);
            var themeBtn = document.createElement('button');
            themeBtn.className = 'ba-theme-btn';
            themeBtn.id = 'ba-theme-btn';
            themeBtn.innerHTML = isDark ? '&#x2744;&#xFE0F; Light' : '&#x1F319; Dark';
            themeBtn.addEventListener('click', toggleTheme);
            controls.appendChild(themeBtn);
            header.appendChild(controls);
            wrap.appendChild(header);
            /* Tabs bar */
            var tabsBar = document.createElement('div');
            tabsBar.className = 'ba-tabs-bar';
            var tabsEl = document.createElement('div');
            tabsEl.className = 'ba-tabs';
            tabsEl.id = 'ba-tabs';
            tabsBar.appendChild(tabsEl);
            wrap.appendChild(tabsBar);
            /* Body */
            var body = document.createElement('div');
            body.className = 'ba-body';
            body.id = 'ba-body';
            wrap.appendChild(body);
        }
        /* ---------- Render tabs ---------- */
        function renderTabs() {
            var el = document.getElementById('ba-tabs');
            if (!el) return;
            el.innerHTML = '';
            bosses.forEach(function (b, i) {
                var btn = document.createElement('button');
                btn.className = 'ba-tab' + (i === currentBoss ? ' active' : '');
                btn.textContent = b.nome;
                btn.addEventListener('click', function () {
                    currentBoss = i;
                    currentSkill = 0;
                    render();
                });
                el.appendChild(btn);
            });
        }
        /* ---------- Render body ---------- */
        function renderBody() {
            var el = document.getElementById('ba-body');
            if (!el) return;
            var boss = bosses[currentBoss];
            if (!boss) { currentBoss = 0; boss = bosses[0]; }
            var skills = boss[currentMode] || [];
            if (!skills.length) {
                el.innerHTML = '<div class="ba-empty">Nenhuma skill cadastrada para este modo.</div>';
                return;
            }
            if (currentSkill >= skills.length) currentSkill = 0;
            var html = '<div class="ba-section-label">Skills</div>';
            html += '<div class="ba-skills-area">';
            /* Lista de skills */
            html += '<div class="ba-skills-list">';
            skills.forEach(function (s, i) {
                html += '<button class="ba-skill-btn' + (i === currentSkill ? ' active' : '') + '" data-si="' + i + '">';
                html += '<span class="ba-skill-num">' + (i + 1) + '</span> ' + s.nome + '</button>';
            });
            html += '</div>';
            /* Vídeo + descrição lado a lado */
            var skill = skills[currentSkill];
            html += '<div class="ba-video-row">';
            var vid = ytId(skill.video);
            if (vid) {
                html += '<div class="ba-video-area"><iframe width="100%" height="100%" src="https://www.youtube.com/embed/' + vid + '" frameborder="0" allowfullscreen style="border:0;"></iframe></div>';
            } else {
                html += '<div class="ba-video-area"><div class="ba-video-placeholder"><p>Sem vídeo disponível</p></div></div>';
            }
            if (skill.desc) {
                html += '<div class="ba-skill-desc">' + skill.desc + '</div>';
            }
            html += '</div></div>';
            el.innerHTML = html;
            /* Listeners skills */
            el.querySelectorAll('.ba-skill-btn').forEach(function (btn) {
                btn.addEventListener('click', function () {
                    currentSkill = parseInt(this.getAttribute('data-si'));
                    renderBody();
                });
            });
        }
        /* ---------- Render completo ---------- */
        function render() {
            renderTabs();
            renderBody();
        }
        /* ---------- Trocar modo ---------- */
        function setMode(mode, btn) {
            currentMode = mode;
            currentBoss = 0;
            currentSkill = 0;
            wrap.querySelectorAll('.ba-mode-btn').forEach(function (b) {
                b.classList.remove('active');
            });
            btn.classList.add('active');
            render();
        }
        /* ---------- Trocar tema ---------- */
        function toggleTheme() {
            isDark = !isDark;
            wrap.classList.toggle('dark', isDark);
            wrap.classList.toggle('light', !isDark);
            var tb = document.getElementById('ba-theme-btn');
            if (tb) tb.innerHTML = isDark ? '&#x2744;&#xFE0F; Light' : '&#x1F319; Dark';
        }
        buildShell();
        render();
    }
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', run);
    } else {
        run();
    }
})();
</script>

Edição atual tal como às 13h40min de 17 de março de 2026

<style>

   /* ===== RESET ===== */
   .ba-wrap, .ba-wrap * { box-sizing: border-box; margin: 0; padding: 0; }
   .ba-wrap {
       font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
       border-radius: 12px;
       overflow: hidden;
       transition: background .3s, color .3s;
   }
   /* ===== TEMAS ===== */
   .ba-wrap.dark { background: #14141f; color: #c8c8d8; }
   .ba-wrap.light { background: #f0f0f5; color: #2a2a3d; }
   /* ===== HEADER ===== */
   .ba-header {
       display: flex; align-items: center; justify-content: space-between;
       padding: 16px 20px 0;
   }
   .ba-title { font-size: 20px; font-weight: 700; }
   .ba-wrap.dark .ba-title { color: #fff; }
   .ba-wrap.light .ba-title { color: #1a1a2a; }
   .ba-controls { display: flex; align-items: center; gap: 10px; }
   .ba-mode-toggle {
       display: flex; gap: 4px; border-radius: 20px; padding: 3px;
       transition: background .3s;
   }
   .ba-wrap.dark .ba-mode-toggle { background: #1e1e30; }
   .ba-wrap.light .ba-mode-toggle { background: #dddde5; }
   .ba-mode-btn {
       padding: 5px 16px; border-radius: 16px; border: none;
       font-size: 12px; font-weight: 700; cursor: pointer;
       background: transparent; transition: all .2s;
       text-transform: uppercase; letter-spacing: .5px;
   }
   .ba-wrap.dark .ba-mode-btn { color: #6a6a8a; }
   .ba-wrap.light .ba-mode-btn { color: #8888a0; }
   .ba-wrap.dark .ba-mode-btn.active { background: #2a2a44; color: #e8c84a; }
   .ba-wrap.light .ba-mode-btn.active { background: #fff; color: #5a5a7a; box-shadow: 0 1px 3px rgba(0,0,0,.1); }
   .ba-theme-btn {
       display: flex; align-items: center; gap: 6px;
       padding: 6px 14px; border-radius: 20px; border: none;
       cursor: pointer; font-size: 13px; font-weight: 600;
       transition: all .2s; white-space: nowrap;
   }
   .ba-wrap.dark .ba-theme-btn { background: #1e1e30; color: #c8c8d8; }
   .ba-wrap.light .ba-theme-btn { background: #dddde5; color: #5a5a7a; }
   /* ===== TABS BOSSES ===== */
   .ba-tabs-bar {
       padding: 16px 20px 0;
       overflow-x: auto;
   }
   .ba-tabs-bar::-webkit-scrollbar { height: 0; }
   .ba-tabs {
       display: flex; justify-content: center; gap: 0;
       border-bottom: 1px solid rgba(120,120,180,.15);
   }
   .ba-wrap.light .ba-tabs { border-bottom-color: rgba(0,0,0,.08); }
   .ba-tab {
       padding: 10px 20px; background: transparent; border: none; cursor: pointer;
       font-size: 13px; font-weight: 600; white-space: nowrap;
       transition: all .2s; position: relative;
   }
   .ba-wrap.dark .ba-tab { color: #6a6a8a; }
   .ba-wrap.light .ba-tab { color: #8888a0; }
   .ba-wrap.dark .ba-tab.active { color: #e05555; }
   .ba-wrap.light .ba-tab.active { color: #c04040; }
   .ba-tab.active::after {
       content: ; position: absolute; bottom: -1px; left: 15%; right: 15%;
       height: 2px; border-radius: 2px;
   }
   .ba-wrap.dark .ba-tab.active::after { background: #6ab4ff; }
   .ba-wrap.light .ba-tab.active::after { background: #5a8ad0; }
   /* ===== BODY ===== */
   .ba-body {
       padding: 20px; min-height: 320px; transition: background .3s;
   }
   .ba-wrap.dark .ba-body { background: #1c1c2e; }
   .ba-wrap.light .ba-body { background: #fff; }
   .ba-section-label {
       font-size: 11px; font-weight: 700;
       letter-spacing: 1px; text-transform: uppercase; margin-bottom: 12px;
   }
   .ba-wrap.dark .ba-section-label { color: #7e7e9e; }
   .ba-wrap.light .ba-section-label { color: #9090a8; }
   /* ===== SKILLS ===== */
   .ba-skills-area { display: flex; gap: 16px; }
   .ba-skills-list {
       width: 200px; flex-shrink: 0; display: flex;
       flex-direction: column; gap: 4px;
   }
   .ba-skill-btn {
       display: flex; align-items: center; gap: 10px;
       padding: 9px 12px; border-radius: 8px; border: none;
       cursor: pointer; font-size: 13px; font-weight: 500;
       text-align: left; transition: all .15s; width: 100%;
       background: transparent;
   }
   .ba-wrap.dark .ba-skill-btn { color: #9090aa; }
   .ba-wrap.light .ba-skill-btn { color: #7a7a90; }
   .ba-wrap.dark .ba-skill-btn:hover { background: #24243a; color: #c8c8d8; }
   .ba-wrap.light .ba-skill-btn:hover { background: #f0f0f5; color: #2a2a3d; }
   .ba-wrap.dark .ba-skill-btn.active { background: #2a2a44; color: #fff; border-left: 3px solid #6ab4ff; }
   .ba-wrap.light .ba-skill-btn.active { background: #eef4ff; color: #1a1a2a; border-left: 3px solid #5a8ad0; }
   .ba-skill-num {
       width: 20px; height: 20px; border-radius: 50%;
       display: flex; align-items: center; justify-content: center;
       font-size: 10px; font-weight: 700; flex-shrink: 0;
   }
   .ba-wrap.dark .ba-skill-num { background: #2a2a44; color: #6ab4ff; }
   .ba-wrap.light .ba-skill-num { background: #dde8f8; color: #5a8ad0; }
   .ba-wrap.dark .ba-skill-btn.active .ba-skill-num { background: #6ab4ff; color: #14141f; }
   .ba-wrap.light .ba-skill-btn.active .ba-skill-num { background: #5a8ad0; color: #fff; }
   /* ===== VIDEO ===== */
   .ba-video-area {
       border-radius: 10px; overflow: hidden;
       aspect-ratio: 16/9; width: 480px; min-width: 360px;
       display: flex; align-items: center; justify-content: center;
       flex-shrink: 0;
   }
   .ba-wrap.dark .ba-video-area { background: #111; border: 1px solid rgba(100,100,160,.15); }
   .ba-wrap.light .ba-video-area { background: #e8e8f0; border: 1px solid rgba(0,0,0,.08); }
   .ba-video-placeholder { text-align: center; }
   .ba-wrap.dark .ba-video-placeholder { color: #555; }
   .ba-wrap.light .ba-video-placeholder { color: #aaa; }
   .ba-video-placeholder p { font-size: 12px; }
   .ba-skill-desc {
       font-size: 12px; line-height: 1.5;
       padding: 8px 12px; border-radius: 8px;
       flex: 1; min-width: 80px;
   }
   .ba-wrap.dark .ba-skill-desc { color: #8888a8; background: #1a1a2a; border-left: 2px solid #6ab4ff; }
   .ba-wrap.light .ba-skill-desc { color: #6a6a80; background: #f5f5fa; border-left: 2px solid #5a8ad0; }
   .ba-video-row {
       display: flex; gap: 14px; align-items: flex-start; flex: 1;
   }
   .ba-empty {
       text-align: center; padding: 60px 20px; opacity: .4; font-size: 14px;
   }
   /* ===== RESPONSIVO ===== */
   @media (max-width: 600px) {
       .ba-skills-area { flex-direction: column; }
       .ba-skills-list {
           width: 100%; flex-direction: row;
           overflow-x: auto; gap: 6px;
       }
       .ba-skill-btn { white-space: nowrap; }
       .ba-video-row { flex-direction: column; }
       .ba-video-area { min-width: unset; max-width: 100%; width: 100%; }
   }

/* Fix MediaWiki

wrapping */ .mw-parser-output > p:has(> style), .mw-parser-output > p:has(> script) { margin: 0 !important; } </style> <script> (function () { function run() { var wrap = document.getElementById('ba-wrap'); if (!wrap) return; var bosses; try { bosses = JSON.parse(wrap.getAttribute('data-bosses') || '[]'); } catch (e) { return; } if (!bosses.length) return; var titulo = wrap.getAttribute('data-titulo') || ; var currentMode = 'elite'; var currentBoss = 0; var currentSkill = 0; var isDark = wrap.classList.contains('dark'); /* ---------- Extrai YouTube ID ---------- */ function ytId(str) { if (!str) return ; var m = str.match(/(?:youtube\.com\/(?:watch\?v=|embed\/)|youtu\.be\/)([A-Za-z0-9_-]{11})/); if (m) return m[1]; if (/^[A-Za-z0-9_-]{11}$/.test(str.trim())) return str.trim(); return ; } /* ---------- Monta HTML interno ---------- */ function buildShell() { wrap.innerHTML = ; /* Header */ var header = document.createElement('div'); header.className = 'ba-header'; var titleEl = document.createElement('div'); titleEl.className = 'ba-title'; titleEl.textContent = titulo; header.appendChild(titleEl); var controls = document.createElement('div'); controls.className = 'ba-controls'; var modeToggle = document.createElement('div'); modeToggle.className = 'ba-mode-toggle'; var btnElite = document.createElement('button'); btnElite.className = 'ba-mode-btn active'; btnElite.textContent = 'ELITE'; btnElite.addEventListener('click', function () { setMode('elite', this); }); var btnHard = document.createElement('button'); btnHard.className = 'ba-mode-btn'; btnHard.textContent = 'HARD'; btnHard.addEventListener('click', function () { setMode('hard', this); }); modeToggle.appendChild(btnElite); modeToggle.appendChild(btnHard); controls.appendChild(modeToggle); var themeBtn = document.createElement('button'); themeBtn.className = 'ba-theme-btn'; themeBtn.id = 'ba-theme-btn'; themeBtn.innerHTML = isDark ? '❄️ Light' : '🌙 Dark'; themeBtn.addEventListener('click', toggleTheme); controls.appendChild(themeBtn); header.appendChild(controls); wrap.appendChild(header); /* Tabs bar */ var tabsBar = document.createElement('div'); tabsBar.className = 'ba-tabs-bar'; var tabsEl = document.createElement('div'); tabsEl.className = 'ba-tabs'; tabsEl.id = 'ba-tabs'; tabsBar.appendChild(tabsEl); wrap.appendChild(tabsBar); /* Body */ var body = document.createElement('div'); body.className = 'ba-body'; body.id = 'ba-body'; wrap.appendChild(body); } /* ---------- Render tabs ---------- */ function renderTabs() { var el = document.getElementById('ba-tabs'); if (!el) return; el.innerHTML = ; bosses.forEach(function (b, i) { var btn = document.createElement('button'); btn.className = 'ba-tab' + (i === currentBoss ? ' active' : ); btn.textContent = b.nome; btn.addEventListener('click', function () { currentBoss = i; currentSkill = 0; render(); }); el.appendChild(btn); }); } /* ---------- Render body ---------- */ function renderBody() { var el = document.getElementById('ba-body'); if (!el) return; var boss = bosses[currentBoss]; if (!boss) { currentBoss = 0; boss = bosses[0]; } var skills = boss[currentMode] || []; if (!skills.length) { el.innerHTML = '

Nenhuma skill cadastrada para este modo.

';

               return;
           }
           if (currentSkill >= skills.length) currentSkill = 0;

var html = '

'; html += '

';
           /* Lista de skills */
html += '
';
           skills.forEach(function (s, i) {
               html += '<button class="ba-skill-btn' + (i === currentSkill ? ' active' : ) + '" data-si="' + i + '">';
               html += '' + (i + 1) + ' ' + s.nome + '</button>';
           });
html += '
';
           /* Vídeo + descrição lado a lado */
           var skill = skills[currentSkill];
html += '
';
           var vid = ytId(skill.video);
           if (vid) {
html += '
<iframe width="100%" height="100%" src="https://www.youtube.com/embed/' + vid + '" frameborder="0" allowfullscreen style="border:0;"></iframe>
';
           } else {
html += '

Sem vídeo disponível

';
           }
           if (skill.desc) {
html += '
' + skill.desc + '
';
           }
html += '

';

           el.innerHTML = html;
           /* Listeners skills */
           el.querySelectorAll('.ba-skill-btn').forEach(function (btn) {
               btn.addEventListener('click', function () {
                   currentSkill = parseInt(this.getAttribute('data-si'));
                   renderBody();
               });
           });
       }
       /* ---------- Render completo ---------- */
       function render() {
           renderTabs();
           renderBody();
       }
       /* ---------- Trocar modo ---------- */
       function setMode(mode, btn) {
           currentMode = mode;
           currentBoss = 0;
           currentSkill = 0;
           wrap.querySelectorAll('.ba-mode-btn').forEach(function (b) {
               b.classList.remove('active');
           });
           btn.classList.add('active');
           render();
       }
       /* ---------- Trocar tema ---------- */
       function toggleTheme() {
           isDark = !isDark;
           wrap.classList.toggle('dark', isDark);
           wrap.classList.toggle('light', !isDark);
           var tb = document.getElementById('ba-theme-btn');
           if (tb) tb.innerHTML = isDark ? '❄️ Light' : '🌙 Dark';
       }
       buildShell();
       render();
   }
   if (document.readyState === 'loading') {
       document.addEventListener('DOMContentLoaded', run);
   } else {
       run();
   }

})(); </script>