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

De Wiki Gla
Ir para navegação Ir para pesquisar
m
m
 
(145 revisões intermediárias por 3 usuários não estão sendo mostradas)
Linha 1: Linha 1:
<script>
<style>
     (function () {
     .island-grid {
        const buttons = document.querySelectorAll('.tab-btn');
         display: flex;
         const contents = document.querySelectorAll('.tab-content');
         flex-wrap: wrap;
         const cuadrosContainer = document.querySelector('.cuadros-container');
         justify-content: center;
         const descripcionContainer = document.querySelector('.descripcion-container');
         gap: 10px;
         const videoContainer = document.querySelector('.video-container');
         padding: 12px 0;
         const cuadros = [...cuadrosContainer.querySelectorAll('.cuadro')];
    }
        const mwBody = document.querySelector('.personaje-box');
        let totalVideos = 0;
        let loadedVideos = 0;
        const videosCache = {};
        let autoplayEnabled = false;


         activarFlechasCarrusel();
    .island-banner {
         position: relative;
        width: 380px;
        height: 90px;
        overflow: hidden;
        border-radius: 8px;
        box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 10px;
        cursor: pointer;
        transition: transform 0.15s, box-shadow 0.15s;
        display: block;
        box-sizing: border-box;
    }


         const placeholder = document.createElement('div');
    .island-banner::before {
         placeholder.className = 'video-placeholder';
        content: "";
         placeholder.innerHTML = `<img src="/images/d/d5/Icon_gla.png" alt="Cargando...">`;
        position: absolute;
         videoContainer.appendChild(placeholder);
         top: 0;
        left: 0;
        right: 0;
         bottom: 0;
         background: linear-gradient(105deg, rgba(0, 0, 0, 0.65) 0%, rgba(0, 0, 0, 0.35) 40%, rgba(0, 0, 0, 0.1) 70%, transparent 100%);
        pointer-events: none;
         z-index: 1;
    }


        function removePlaceholderSmooth() {
    .island-banner:hover {
            placeholder.classList.add('fade-out');
        transform: translateY(-2px);
            placeholder.addEventListener('transitionend', () => placeholder.remove(), { once: true });
        box-shadow: rgba(0, 0, 0, 0.35) 0px 4px 12px;
        }
    }


         function checkAllVideosLoaded() {
    .island-banner .island-chests {
            if (loadedVideos === totalVideos && totalVideos > 0) {
        position: absolute;
                autoplayEnabled = true;
         top: 8px;
            }
        left: 8px;
         }
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
        z-index: 2;
         pointer-events: none;
    }


        // Pré-carregar todos os vídeos
    .island-banner .island-chest-group {
        cuadros.forEach(div => {
        position: relative;
            const videoSrc = div.dataset.video;
        display: inline-block;
            const index = div.dataset.index;
    }


            if (videoSrc && videoSrc.trim() !== '' && !videosCache[index]) {
    .island-banner .island-chest-group img {
                totalVideos++;
        display: block;
        width: auto;
        height: auto;
    }


                const videoEl = document.createElement('video');
    .island-banner .island-chest-count {
                videoEl.setAttribute('width', '100%');
    position: absolute;
                videoEl.setAttribute('controls', '');
    left: 0;          /* era right: 0 */
                videoEl.setAttribute('preload', 'auto');
    bottom: 0;
                videoEl.setAttribute('playsinline', '');
    font-size: 12.5px;  /* era 11px */
                videoEl.dataset.index = index;
    font-weight: bold;
                videoEl.style.display = 'none';
    color: #fff;
    background: rgba(0, 0, 0, 0.75);
    padding: 1px 3px;
    border-radius: 3px;
    line-height: 1;
    white-space: nowrap;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
    z-index: 10;
}


                const source = document.createElement('source');
    .island-banner .island-title {
                source.src = videoSrc;
        position: absolute;
                source.type = 'video/webm';
        bottom: 10px;
                videoEl.appendChild(source);
        left: 8px;
        font-size: 1.35em;
        font-weight: bold;
        color: #fff;
        text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8), 0 2px 4px rgba(0, 0, 0, 0.5);
        line-height: 1.2;
        z-index: 2;
        pointer-events: none;
        text-transform: uppercase;
    }


                // Quando o vídeo já estiver pronto, remover placeholder
    @media (max-width: 768px) {
                videoEl.addEventListener('canplay', () => {
        .island-grid {
                    loadedVideos++;
            flex-direction: column;
                    if (loadedVideos === 1) {
            align-items: stretch;
                        videoEl.pause();
        }
                        videoEl.currentTime = 0;
                    }
                    const activeCuadro = document.querySelector('.cuadro.activo');
                    if (activeCuadro && activeCuadro.dataset.index === videoEl.dataset.index) {
                        setTimeout(removePlaceholderSmooth, 200);
                    }
                    checkAllVideosLoaded();
                });


 
        .island-banner {
 
             width: 100%;
                videoEl.addEventListener('error', () => {
             max-width: none;
                    loadedVideos++;
                    removePlaceholderSmooth();
                    checkAllVideosLoaded();
                });
 
                videoContainer.appendChild(videoEl);
                videosCache[index] = videoEl;
             }
        });
 
        // Se não houver vídeos, ocultar imediatamente
        if (totalVideos === 0) {
             placeholder.remove();
         }
         }
 
    }
        buttons.forEach(btn => btn.addEventListener('click', () => {
</style>
            buttons.forEach(b => b.classList.remove('active'));
<script>
            contents.forEach(c => c.classList.remove('active'));
    (function () {
            btn.classList.add('active');
        function applyBackgrounds() {
             document.getElementById(btn.dataset.tab).classList.add('active');
             document.querySelectorAll('.island-banner[data-bgimg]').forEach(function (el) {
        }));
                var filename = el.getAttribute('data-bgimg');
 
                 if (!filename) return;
        cuadros.forEach(div => {
                 var url;
            const nome = div.dataset.nome;
                 if (typeof mw !== 'undefined' && mw.util && mw.util.getUrl) {
            const desc = div.dataset.desc.replace(/'''(.*?)'''/g, '<b>$1</b>');
                    url = mw.util.getUrl('Especial:FilePath/' + filename);
            const atr = div.dataset.atr;
            const index = div.dataset.index;
            const hasVideo = div.dataset.video && div.dataset.video.trim() !== '';
 
            div.title = nome;
 
            div.addEventListener('click', () => {
                 if (!autoplayEnabled && loadedVideos > 0) {
                    autoplayEnabled = true;
                 }
                descripcionContainer.innerHTML = `
                <div class="titulo-habilidad">
                    <h3>${nome}</h3>
                </div>
                ${generarHTMLAtributos(atr)}
                <div class="desc">${desc}</div>
            `;
 
                Object.values(videosCache).forEach(v => {
                    v.pause();
                    v.style.display = 'none';
                });
 
                // Gerenciar habilidades com/sem vídeo
                 if (hasVideo) {
                    const videoEl = videosCache[index];
                    if (videoEl) {
                        videoContainer.style.display = 'block';
                        videoEl.style.display = 'block';
                        videoEl.currentTime = 0;
                        if (autoplayEnabled) {
                            videoEl.play().catch(e => console.log('Autoplay bloqueado:', e));
                        }
                    }
 
                 } else {
                 } else {
                     videoContainer.style.display = 'none';
                     url = '/index.php?title=Especial:FilePath/' + encodeURIComponent(filename);
                 }
                 }
 
                el.style.backgroundImage = 'url(' + url + ')';
                 cuadros.forEach(c => c.classList.remove('activo'));
                 el.style.backgroundSize = 'cover';
                 div.classList.add('activo');
                el.style.backgroundPosition = 'center';
                 el.style.backgroundRepeat = 'no-repeat';
             });
             });
            ['data-nome', 'data-desc', 'data-atr', 'data-video'].forEach(attr => div.removeAttribute(attr));
        });
        if (Object.keys(videosCache).length === 0) {
            videoContainer.style.display = 'none';
         }
         }
 
         function initClickable() {
        if (cuadros.length) cuadros[0].click();
             document.querySelectorAll('.island-banner[data-href]').forEach(function (el) {
 
                if (el._icClick) return;
        cuadrosContainer.addEventListener('wheel', e => {
                el._icClick = true;
            if (e.deltaY) {
                 el.setAttribute('role', 'link');
                e.preventDefault();
                el.setAttribute('tabindex', '0');
                cuadrosContainer.scrollLeft += e.deltaY;
                el.addEventListener('click', function () {
            }
                     var href = el.getAttribute('data-href');
        });
                     if (href) window.location.href = href;
 
                 });
         function activarFlechasCarrusel() {
                 el.addEventListener('keydown', function (e) {
             const carousel = document.querySelector('.skins-carousel');
                    if (e.key === 'Enter' || e.key === ' ') {
            const wrapper = document.querySelector('.skins-carousel-wrapper');
                        e.preventDefault();
            const [leftBtn, rightBtn] = ['.skins-arrow.left', '.skins-arrow.right'].map(sel => document.querySelector(sel));
                        var href = el.getAttribute('data-href');
            let isPredictingScroll = false, isAutoScrolling = false;
                        if (href) window.location.href = href;
 
            const getScrollAmount = () => carousel.clientWidth * 0.6;
 
            const hideArrow = btn => {
                 if (!btn.classList.contains('desapareciendo') && btn.style.display !== 'none') {
                    btn.classList.add('desapareciendo');
                    setTimeout(() => {
                        btn.style.display = 'none';
                        btn.classList.remove('desapareciendo');
                    }, 300);
                }
            };
 
            const showArrow = btn => {
                if (btn.style.display === 'none') {
                     btn.style.display = 'inline-block';
                     void btn.offsetWidth;
                }
                btn.classList.remove('desapareciendo');
            };
 
            const setArrowsState = scrollLeft => {
                const maxScroll = carousel.scrollWidth - carousel.clientWidth;
                const hasLeft = scrollLeft > 5, hasRight = scrollLeft < maxScroll - 5;
                 hasLeft ? showArrow(leftBtn) : hideArrow(leftBtn);
                hasRight ? showArrow(rightBtn) : hideArrow(rightBtn);
                 wrapper.classList.toggle('has-left', hasLeft);
                wrapper.classList.toggle('has-right', hasRight);
                if (!hasLeft && !hasRight) { carousel.style.justifyContent = 'center'; } else { carousel.style.justifyContent = ''; }
            };
 
            const handleArrowClick = dir => {
                isPredictingScroll = true;
                const scrollLeft = carousel.scrollLeft, maxScroll = carousel.scrollWidth - carousel.clientWidth;
                const nextScroll = dir === 'left' ? Math.max(0, scrollLeft - getScrollAmount()) : Math.min(maxScroll, scrollLeft + getScrollAmount());
 
                setArrowsState(nextScroll);
                carousel.scrollTo({ left: nextScroll, behavior: 'smooth' });
 
                let last = -1, still = 0;
                const wait = setInterval(() => {
                    const current = Math.round(carousel.scrollLeft);
                    if (current === last) {
                        if (++still >= 2) {
                            clearInterval(wait);
                            isPredictingScroll = false;
                            setArrowsState(current);
                        }
                    } else {
                        last = current;
                        still = 0;
                     }
                     }
                 }, 50);
                 });
            };
 
            carousel.addEventListener('scroll', () => {
                if (!isPredictingScroll) setArrowsState(carousel.scrollLeft);
             });
             });
            new ResizeObserver(() => {
                if (!isPredictingScroll) setArrowsState(carousel.scrollLeft);
            }).observe(carousel);
            leftBtn.addEventListener('click', () => handleArrowClick('left'));
            rightBtn.addEventListener('click', () => handleArrowClick('right'));
            setArrowsState(carousel.scrollLeft);
         }
         }
        // Resolve o arquivo de forma confiável (cai no /images/... certo)
         function run() {
         function resolveFile(name) {
             applyBackgrounds();
             if (window.mw && mw.util && typeof mw.util.getUrl === 'function') {
             initClickable();
                return mw.util.getUrl('Special:FilePath/' + encodeURIComponent(name));
             }
            return '/index.php/Special:FilePath/' + encodeURIComponent(name);
         }
         }
 
         if (document.readyState === 'loading') {
 
            document.addEventListener('DOMContentLoaded', run);
         function generarHTMLAtributos(str) {
        } else {
            var vals = (str || '').split(','); // pode ter menos de 4
             run();
            for (var k = 0; k < vals.length; k++) vals[k] = vals[k].trim();
 
            var title = ['Poder PVE', 'Poder PVP', 'Energia', 'Recarga'];
            var icons = ['Attr_PVE.png', 'Attr_PVP.png', 'Attr_Energia.png', 'Attr_Recarga.png'];
 
            function firstInt(raw) {
                if (!raw) return '-';
                raw = raw.trim();
                if (raw === '-') return '-';
                var m = /^-?\d+/.exec(raw);
                return m ? parseInt(m[0], 10) : '-';
            }
 
             var html = '<div class="attribute--cardsContainer">';
            for (var i = 0; i < 4; i++) {
                var raw = (typeof vals[i] !== 'undefined' && vals[i] !== null) ? vals[i] : '-';
                var f = firstInt(raw);
 
                if (i === 2 && f !== '-') { // Energia com sinal
                    f = (f > 0 ? '+' : '') + f;
                }
                var units = (i === 3 && f !== '-') ? ' seg' : '';
 
                html += ''
                    + '<div class="cardAttribute">'
                    + '<div class="cardAttribute--row">'
                    + '<img class="cardAttribute--icon" src="' + resolveFile(icons[i]) + '"'
                    + ' alt="' + title[i] + '" width="32" height="32" loading="lazy" decoding="async">'
                    + '<span class="cardAttribute--title">' + title[i] + '</span>'
                    + '</div>'
                    + '<h2 class="cardAttribute--value">' + f + units + '</h2>'
                    + '</div>';
            }
            html += '</div>';
            return html;
         }
         }
     })();
     })();
</script>
</script>
<style>
  /* --------- Resetzinhos úteis ---------- */
  img { pointer-events:none; user-select:none; }
  video { max-height:33.25em; object-fit:fill; }
  .mw-body { padding:unset !important; }
  .mw-body-content { line-height:1.5 !important; }
  .mw-body-content p { display:none; }
  /* --------- Banner de fundo do topo ---------- */
  .banner{
    position:absolute; z-index:-9; width:100%; height:100%;
    background-image:url(https://i.imgur.com/OVGhLvl.png);
    background-size:cover;
  }
  .banner-personaje{ width:100%; height:auto; }
  .banner::before{
    content:""; position:absolute; inset:0;
    background:linear-gradient(to right, rgba(0,0,0,.6), rgba(0,0,0,.2));
  }
  /* --------- Caixa geral ---------- */
  .personaje-box{
    padding:unset !important; color:#000;
    font-family:'Noto Sans',sans-serif !important;
    width:100%; margin:auto; position:relative; user-select:none;
  }
  .personaje-box p{ display:unset; }
  /* --------- Topbar ---------- */
  .personaje-topbar{
    display:flex; flex-direction:column; align-items:flex-start;
    padding:8px 20px; padding-top:4px;
  }
  .personaje-nome-box{ display:flex; align-items:center; gap:14px; }
  .topbar-icon{ margin-top:8px; width:100px; height:100px; object-fit:none; }
  .nome{
    text-shadow:0 0 6px #000,0 0 9px #000; color:#fff;
    font-size:56px; font-family:'Orbitron',sans-serif; font-weight:900;
  }
  .topbar-description{
    display:none !important; font-size:16px; margin-top:6px;
    width:fit-content; padding-inline:16px; border-radius:0 10px 10px 0;
    box-shadow:0 0 2px rgb(0 0 0 / 70%);
  }
  .personaje-header{
    position:relative; overflow:hidden;
    display:flex; gap:10px; flex-direction:column;
  }
  /* Arte do personagem – fica dentro do header e por trás do conteúdo */
  .art-personaje{
    width:34.3vw; height:auto; position:absolute; right:3.5rem; top:-3.1rem;
    z-index:1; pointer-events:none;
  }
  .classes{ display:flex; gap:9px; flex-wrap:wrap; margin-left:.28rem; }
  .classe{
    background:#353420; color:#fff; outline:2px solid #000;
    padding:1px 6px; border-radius:4px; font-size:.9em; font-weight:bold;
    box-shadow:0 0 2px rgb(0 0 0 / 70%);
  }
  .personaje-info{ user-select:none; }
  .personaje-info .tier,.personaje-info .classe{ font-size:18px; color:#bbb; }
  /* --------- Abas ---------- */
  .personaje-tabs{
    margin:4px 0 4px 8px; display:flex; gap:12px; justify-content:flex-start;
  }
  .tab-btn{
    padding:5px 20px; background:#333; color:#fff;
    border:2px solid transparent; border-radius:8px;
    font-size:20px; cursor:pointer; font-weight:600; line-height:1;
    transition:background .15s ease, border-color .15s ease;
  }
  .tab-btn.active{ background:#156bc7; border-color:#156bc7; }
  .tab-content{
    display:none; background:#26211cd6; padding:0 8px 8px;
    position:relative; z-index:3;
  }
  .tab-content.active{ display:block; }
  /* --------- Habilidades ---------- */
  .habilidades-container{ display:flex; gap:20px; }
  .habilidades-details{
    flex:1; display:flex; flex-direction:column; gap:10px;
    width:50%; justify-content:center;
  }
  /* Barra dos ícones – ocupa toda a largura e fica acima da arte */
  .cuadros-container{
    display:flex; flex-wrap:nowrap; gap:10px; width:100%;
    overflow-x:auto; overflow-y:hidden; padding:10px 0 3px 1px;
    position:relative; z-index:4; margin-bottom:6px;
    scrollbar-width:thin; scrollbar-color:#ababab transparent;
    scroll-behavior:smooth; justify-content:flex-start;
  }
  .cuadros-container::-webkit-scrollbar{ height:6px; }
  .cuadros-container::-webkit-scrollbar-track{ background:transparent; }
  .cuadros-container::-webkit-scrollbar-thumb{ background-color:#151515; border-radius:3px; }
  .cuadros-container .cuadro{
    flex:0 0 auto; width:50px; height:50px; border-radius:5px; cursor:pointer;
    transition:transform .2s, box-shadow .2s;
  }
  .cuadros-container .cuadro.activo{ box-shadow:0 0 0 1.5px #FFD700; }
  .cuadro img{ width:100%; height:100%; object-fit:cover; }
  /* Título e tooltip */
  .titulo-habilidad{
    position:relative; display:flex; justify-content:center; align-items:center;
    margin-bottom:8px; padding-right:32px;
  }
  .titulo-habilidad h3{ font-size:1.6em; color:#fff; text-align:center; margin:0; width:100%; }
  .tooltip-container{ position:absolute; right:0; top:50%; transform:translateY(-50%); }
  .info-btn{
    border:none; color:#D3DBDC; background:#787878; font-weight:bold;
    border-radius:50%; width:44px; height:44px; font-family:'Noto Sans';
    cursor:pointer; transition:.2s; box-shadow:0 0 3px #000;
    font-size:40px; padding:0; line-height:24px; text-align:center;
  }
  .tooltip-text{
    visibility:hidden; width:220px; background:#222; color:#fff; text-align:left;
    padding:8px 10px; border-radius:8px; position:absolute; z-index:10;
    bottom:130%; left:50%; transform:translate(-85%,110%);
    opacity:0; transition:opacity .3s; font-size:12px;
    box-shadow:0 2px 10px rgba(0,0,0,.5); pointer-events:none;
  }
  .tooltip-container:hover .tooltip-text{ visibility:visible; opacity:1; }
  /* Descrição da habilidade */
  .descripcion-container{
    min-height:27.5rem; height:100%; padding:4px 16px !important;
    background:#26211C; border-radius:8px; position:relative;
    box-shadow:0 6px 18px rgba(0,0,0,.28);
    color:#fff; backdrop-filter:blur(2px); transition:all .3s ease;
    text-shadow:-1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
    padding-top:0 !important; z-index:99;
  }
  .descripcion-container h3{ font-size:2.7em; margin:0; text-align:center; padding-top:0; }
  .descripcion-container p, .desc{ font-size:1.2em; margin:0; }
  .desc{ overflow-y:auto !important; max-height:inherit; margin-top:10px; }
  .desc *{ font-size:inherit !important; line-height:inherit; }
  .descripcion-container .descLevel{ margin-top:5px; font-weight:bold; }
  .descripcion-container .desc::-webkit-scrollbar, .tabSkill--container::-webkit-scrollbar{ width:7px; height:7px; }
  .descripcion-container .desc::-webkit-scrollbar-thumb, .tabSkill--container::-webkit-scrollbar-thumb{ background-color:rgb(71 153 255); border-radius:10px; }
  .descripcion-container .desc::-webkit-scrollbar-track, .tabSkill--container::-webkit-scrollbar-track{ background-color:#151515a8; border-radius:10px; }
  /* Tiers */
  .tier-bronze .topbar-icon, .tier-bronze .tier{ outline:2px solid #7b4e2f !important; }
  .tier-silver .topbar-icon, .tier-silver .tier{ outline:2px solid #d6d2d2 !important; }
  .tier-gold .topbar-icon, .tier-gold .tier{ outline:2px solid #fcd300 !important; }
  .tier-diamond .topbar-icon, .tier-diamond .tier{ outline:2px solid #60dae2 !important; }
  /* Vídeo da habilidade */
  video::-webkit-media-controls{ opacity:0; transition:opacity .3s; }
  video:hover::-webkit-media-controls{ opacity:1; }
  .video-container{
    position:relative; width:43%; background:#000;
    display:flex; align-items:center; justify-content:center;
    border-radius:2%; box-shadow:0 8px 24px rgba(0,0,0,.35);
    overflow:hidden; z-index:999;
  }
  .video-placeholder{
    position:absolute; inset:0; background:#000; display:flex; align-items:center; justify-content:center;
    z-index:2; opacity:1; transition:opacity .9s ease;
  }
  .video-placeholder img{ width:120px; height:auto; animation:breathe 2.5s ease-in-out infinite; filter:drop-shadow(0 0 6px rgba(255,255,255,.3)); }
  .video-placeholder.fade-out{ opacity:0; }
  @keyframes breathe{ 0%,100%{ transform:scale(1); opacity:1; } 50%{ transform:scale(1.07); opacity:.85; } }
  /* --------- Atributos (chips simples) ---------- */
  .attr-chips{
    display:flex; flex-wrap:wrap; gap:12px; justify-content:center;
    margin:6px 0 10px;
  }
  .attr-chip{
    display:inline-flex; align-items:center; gap:8px;
    padding:8px 12px; border-radius:10px;
    background:#3b312f; color:#fff; border:1px solid rgba(0,0,0,.25);
    box-shadow:0 1px 4px rgba(0,0,0,.25); line-height:1.1;
  }
  .attr-label{ font-weight:700; letter-spacing:.2px; font-size:1rem; }
  .attr-value{ font-weight:800; font-size:1rem; }
  /* --------- Skins ---------- */
  .attribute-title, .card-skins-title{
    font-size:1.4em; text-align:center; letter-spacing:1px;
    font-family:'Noto Sans',sans-serif !important;
    border-bottom:2px solid #9d9c9c; color:#fff !important;
    padding-bottom:8px; margin-bottom:16px; width:75%;
  }
  .card-skins{ padding-block:12px; border-radius:12px; user-select:none; }
  .skins-carousel-wrapper{
    min-height:21.1rem; max-height:60%;
    padding:0 16px 1px !important;
    background:#26211C; border-radius:8px; position:relative;
    box-shadow:0 8px 24px rgba(0,0,0,.35);
    color:#fff; backdrop-filter:blur(2px); transition:all .3s ease;
    text-shadow:-1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
    flex:1; display:flex; flex-direction:row; gap:10px; justify-content:center; align-items:center;
    overflow:visible; z-index:99;
  }
  /* Gradientes laterais quando houver rolagem */
  .skins-carousel-wrapper::before, .skins-carousel-wrapper::after{
    content:''; position:absolute; top:0; width:60px; height:100%;
    pointer-events:none; opacity:0; transition:opacity .4s ease; z-index:3;
  }
  .skins-carousel-wrapper::before{ left:0;  background:linear-gradient(to right, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 100%); }
  .skins-carousel-wrapper::after { right:0; background:linear-gradient(to left,  rgba(0,0,0,0) 0%, rgba(0,0,0,1) 100%); }
  .skins-carousel-wrapper.has-left::before, .skins-carousel-wrapper.has-right::after{ opacity:1; }
  .has-left{ padding-left:60px; }
  .has-left .skins-carousel{ mask-image:linear-gradient(to right, transparent 0px, black 40px, black 100%); }
  .has-right{ padding-right:60px; }
  .has-right .skins-carousel{ mask-image:linear-gradient(to right, black 0px, black calc(100% - 40px), transparent 100%); }
  .card-skins-title{
    display:block; border-bottom:unset; font-size:40px; font-weight:bold;
    padding-bottom:unset; margin-bottom:10px; width:47%;
  }
  .skins-carousel{
    display:flex; gap:1vw; overflow-x:auto; scroll-behavior:smooth;
    padding:10px 0; flex-grow:1;
  }
  .skins-carousel.both-mask{  mask-image:linear-gradient(to right, transparent 0px, black 40px, black calc(100% - 40px), transparent 100%); }
  .skins-carousel.left-mask{  mask-image:linear-gradient(to right, transparent 0px, black 40px, black 100%); }
  .skins-carousel.right-mask{ mask-image:linear-gradient(to right, black 0px, black calc(100% - 40px), transparent 100%); }
  .skins-carousel.no-mask{    mask-image:none; }
  .skins-carousel::-webkit-scrollbar{ display:none; }
  .skins-arrow{
    background:none; border:none; color:#fff; font-size:36px; cursor:pointer; padding:8px; z-index:5;
    transition:opacity .3s ease, transform .3s ease;
  }
  .skins-arrow.left{ margin-right:8px; }
  .skins-arrow.right{ margin-left:8px; }
  .skins-arrow.hidden{ opacity:0; transform:scale(.8); pointer-events:none; visibility:hidden; }
  .skin-card{
    position:relative; width:12vw; height:39vh; flex:0 0 auto;
    border:2px solid #697EC9 !important; border-radius:8px; overflow:hidden;
    box-shadow:0 2px 10px rgba(0,0,0,.25); background:#111;
  }
  .skin-card::before{
    content:''; position:absolute; inset:0; pointer-events:none; border-radius:inherit; z-index:2;
    box-shadow:inset 0 0 8px rgba(180,180,180,.18);
  }
  .skins--imageBanner{ width:100%; height:109%; }
  .skins--imageBanner img{ width:100%; height:100%; object-fit:cover; filter:brightness(.5); scale:1.1; }
  .skins--imageSkin img{
    position:absolute; bottom:10px; left:50%; transform:translateX(-50%);
    height:140px; width:auto; z-index:2; transition:transform .2s;
  }
  /* --------- Responsivo (tela “alta”/mobile) ---------- */
  @media (max-aspect-ratio: 3/4){
    .desc{ font-size:26px; line-height:1.5; overflow-y:auto !important; max-height:inherit; margin:0; width:100%; margin-top:8px; }
    .desc *{ font-size:inherit !important; line-height:inherit; }
    .habilidades-container{ display:flex; gap:20px; flex-direction:column-reverse; }
    .habilidades-details{ flex:1; display:flex; flex-direction:column; width:96%; align-self:center; }
    .video-container{ width:80%; border-radius:3%; margin-top:2%; align-self:center; }
    .art-personaje{
      display:none; width:370px; height:290px; position:absolute;
      right:.5rem; top:1.1rem; z-index:1; pointer-events:none;
    }
    .topbar-description{ font-size:22px; }
    .personaje-info .tier,.personaje-info .classe{ font-size:30px; }
    .cuadros-container{ width:98%; place-self:center; padding:10px 0 16px 1px; }
    .cuadros-container .cuadro{ width:80px; height:80px; }
    .descripcion-container h3{ font-size:3.6em; margin-top:-14px; }
    .descripcion-container p{ font-size:2.3em; margin-bottom:5px; }
    .descripcion-container{ padding:22px !important; }
    .tab-btn{ padding:10px 20px; font-size:26px; }
    .tab-content{ position:relative; z-index:1; padding:0 8px 20px; }
    .classe{ padding:0 5px; font-size:1.4em; }
    /* chips maiores no mobile */
    .attr-chips{ gap:14px; }
    .attr-chip{ padding:10px 14px; border-radius:12px; }
    .attr-label,.attr-value{ font-size:1.3rem; }
    .skins-carousel{ gap:20px; }
    .skin-card{ width:236px; height:400px; }
    .skins--imageSkin img{ height:170px; }
    .tooltipster-content{ font-size:26px; }
    .attribute-title,.card-skins-title{ width:100% !important; }
    .skins-arrow{ display:none !important; }
    .skins-carousel-wrapper::after, .skins-carousel-wrapper::before{ background:unset; }
    video::-webkit-media-controls{ opacity:unset; transition:unset; }
    video:hover::-webkit-media-controls{ opacity:unset; }
  }
</style>

Edição atual tal como às 00h06min de 13 de março de 2026

<style>

   .island-grid {
       display: flex;
       flex-wrap: wrap;
       justify-content: center;
       gap: 10px;
       padding: 12px 0;
   }
   .island-banner {
       position: relative;
       width: 380px;
       height: 90px;
       overflow: hidden;
       border-radius: 8px;
       box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 10px;
       cursor: pointer;
       transition: transform 0.15s, box-shadow 0.15s;
       display: block;
       box-sizing: border-box;
   }
   .island-banner::before {
       content: "";
       position: absolute;
       top: 0;
       left: 0;
       right: 0;
       bottom: 0;
       background: linear-gradient(105deg, rgba(0, 0, 0, 0.65) 0%, rgba(0, 0, 0, 0.35) 40%, rgba(0, 0, 0, 0.1) 70%, transparent 100%);
       pointer-events: none;
       z-index: 1;
   }
   .island-banner:hover {
       transform: translateY(-2px);
       box-shadow: rgba(0, 0, 0, 0.35) 0px 4px 12px;
   }
   .island-banner .island-chests {
       position: absolute;
       top: 8px;
       left: 8px;
       display: flex;
       flex-wrap: wrap;
       gap: 6px;
       z-index: 2;
       pointer-events: none;
   }
   .island-banner .island-chest-group {
       position: relative;
       display: inline-block;
   }
   .island-banner .island-chest-group img {
       display: block;
       width: auto;
       height: auto;
   }
   .island-banner .island-chest-count {
   position: absolute;
   left: 0;          /* era right: 0 */
   bottom: 0;
   font-size: 12.5px;  /* era 11px */
   font-weight: bold;
   color: #fff;
   background: rgba(0, 0, 0, 0.75);
   padding: 1px 3px;
   border-radius: 3px;
   line-height: 1;
   white-space: nowrap;
   box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
   z-index: 10;

}

   .island-banner .island-title {
       position: absolute;
       bottom: 10px;
       left: 8px;
       font-size: 1.35em;
       font-weight: bold;
       color: #fff;
       text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8), 0 2px 4px rgba(0, 0, 0, 0.5);
       line-height: 1.2;
       z-index: 2;
       pointer-events: none;
       text-transform: uppercase;
   }
   @media (max-width: 768px) {
       .island-grid {
           flex-direction: column;
           align-items: stretch;
       }
       .island-banner {
           width: 100%;
           max-width: none;
       }
   }

</style> <script>

   (function () {
       function applyBackgrounds() {
           document.querySelectorAll('.island-banner[data-bgimg]').forEach(function (el) {
               var filename = el.getAttribute('data-bgimg');
               if (!filename) return;
               var url;
               if (typeof mw !== 'undefined' && mw.util && mw.util.getUrl) {
                   url = mw.util.getUrl('Especial:FilePath/' + filename);
               } else {
                   url = '/index.php?title=Especial:FilePath/' + encodeURIComponent(filename);
               }
               el.style.backgroundImage = 'url(' + url + ')';
               el.style.backgroundSize = 'cover';
               el.style.backgroundPosition = 'center';
               el.style.backgroundRepeat = 'no-repeat';
           });
       }
       function initClickable() {
           document.querySelectorAll('.island-banner[data-href]').forEach(function (el) {
               if (el._icClick) return;
               el._icClick = true;
               el.setAttribute('role', 'link');
               el.setAttribute('tabindex', '0');
               el.addEventListener('click', function () {
                   var href = el.getAttribute('data-href');
                   if (href) window.location.href = href;
               });
               el.addEventListener('keydown', function (e) {
                   if (e.key === 'Enter' || e.key === ' ') {
                       e.preventDefault();
                       var href = el.getAttribute('data-href');
                       if (href) window.location.href = href;
                   }
               });
           });
       }
       function run() {
           applyBackgrounds();
           initClickable();
       }
       if (document.readyState === 'loading') {
           document.addEventListener('DOMContentLoaded', run);
       } else {
           run();
       }
   })();

</script>