Difference between revisions of "MediaWiki:Common.css"

From XilePK - Ragnarok Online Server
Jump to navigation Jump to search
Line 1: Line 1:
/* Auto-expand sections when clicking anchored links */
+
/* CSS placed here will be applied to all skins */
$(function() {
+
/* body.page-Main_Page h1.firstHeading { display:none; } */
  // Função principal para executar quando a página terminar de carregar
+
/* { font-family: courier new } */
  function initializeAnchorExpansion() {
 
    // Se existir um hash na URL quando a página carrega
 
    if (window.location.hash) {
 
      var hash = window.location.hash;
 
      console.log("Página carregada com hash: " + hash);
 
      expandSectionForAnchor(hash);
 
    }
 
   
 
    // Lidar com cliques em links âncora dentro da página
 
    $(document).on('click', 'a[href^="#"]', function(event) {
 
      var hash = $(this).attr('href');
 
      console.log("Clique em link interno: " + hash);
 
      expandSectionForAnchor(hash);
 
    });
 
  }
 
 
 
  // Função para expandir seções contendo uma âncora específica
 
  function expandSectionForAnchor(hash) {
 
    // Remover qualquer caractere # do início do hash se existir
 
    if (hash.startsWith('#')) {
 
      hash = hash.substring(1);
 
    }
 
   
 
    console.log("Procurando elemento com ID: " + hash);
 
   
 
    // Tentar encontrar o elemento com o ID especificado
 
    var targetElement = $('#' + hash);
 
    if (targetElement.length) {
 
      console.log("Elemento encontrado!");
 
     
 
      // Encontrar todas as seções colapsáveis que contêm o elemento
 
      var collapsibleSections = targetElement.parents('.mw-collapsible.mw-collapsed');
 
      console.log("Seções colapsáveis encontradas: " + collapsibleSections.length);
 
     
 
      // Se o elemento estiver dentro de seções colapsáveis
 
      if (collapsibleSections.length > 0) {
 
        // Expandir cada seção de fora para dentro
 
        collapsibleSections.each(function() {
 
          var $section = $(this);
 
          console.log("Expandindo seção");
 
          $section.removeClass('mw-collapsed');
 
         
 
          // Clicar no botão de expansão ou mudar diretamente a classe
 
          var $toggle = $section.find('.mw-collapsible-toggle').first();
 
          if ($toggle.length) {
 
            $toggle.click();
 
          } else {
 
            // Tentar forçar a expansão manipulando classes diretamente
 
            $section.find('.mw-collapsible-content').show();
 
          }
 
        });
 
       
 
        // Também verificar se o próprio elemento está em um colapsível
 
        var directCollapsible = targetElement.closest('.mw-collapsible.mw-collapsed');
 
        if (directCollapsible.length) {
 
          console.log("Expandindo o contêiner direto");
 
          directCollapsible.removeClass('mw-collapsed');
 
          var $toggle = directCollapsible.find('.mw-collapsible-toggle').first();
 
          if ($toggle.length) {
 
            $toggle.click();
 
          } else {
 
            directCollapsible.find('.mw-collapsible-content').show();
 
          }
 
        }
 
      }
 
     
 
      // Rolar até o elemento imediatamente
 
      console.log("Rolando até o elemento");
 
      $('html, body').animate({
 
        scrollTop: targetElement.offset().top - 100
 
      }, 200);
 
    } else {
 
      console.log("Elemento com ID '" + hash + "' não encontrado");
 
    }
 
  }
 
  
  // Inicializar na carga da página
+
/* Estilo para os elementos clicáveis */
  initializeAnchorExpansion();
+
.warp-copy {
 
+
    color: #0000FF; /* Cor original dos links */
  // Também adicionar um observador para o evento mw.hook que é disparado quando o conteúdo é atualizado
+
    cursor: pointer;
  if (typeof mw !== 'undefined' && mw.hook) {
+
    text-decoration: underline; /* Usa sublinhado normal como links padrão */
     mw.hook('wikipage.content').add(function() {
+
    position: relative;
      console.log("Conteúdo da Wiki atualizado, reinicializando manipuladores de âncora");
+
     display: inline-block;
      initializeAnchorExpansion();
+
    border-bottom: none;
     
+
    /* Removido o sublinhado pontilhado para manter aparência original */
      // Se houver um hash, tentar expandir após o conteúdo ter sido carregado
+
    font-family: inherit; /* Mantém a fonte igual à do texto ao redor */
      if (window.location.hash) {
+
     font-weight: inherit; /* Mantém o peso da fonte igual ao texto ao redor */
        expandSectionForAnchor(window.location.hash);
+
}
      }
 
     });
 
  }
 
});
 
  
/* JavaScript melhorado para funcionalidade de cópia */
+
/* Tooltip personalizado */
$(document).ready(function() {
+
.warp-copy::after {
     // Adicionar CSS personalizado inline para forçar os tooltips
+
     content: "Clique para Copiar";
     $('<style>')
+
    position: absolute;
        .text(`
+
    bottom: 100%;
            .warp-copy:hover::after,
+
     left: 50%;
            .warp-copy:hover::before {
+
    transform: translateX(-50%);
                opacity: 1 !important;
+
    margin-bottom: 5px;
                visibility: visible !important;
+
    background-color: #333;
                display: block !important;
+
    color: white;
            }
+
    padding: 3px 8px;
            .warp-copy.copied::after {
+
    border-radius: 3px;
                content: "Copiado!" !important;
+
    font-size: 12px;
                background-color: #4CAF50 !important;
+
    white-space: nowrap;
                display: block !important;
+
    opacity: 0;
            }
+
    visibility: hidden;
        `)
+
    transition: opacity 0.1s, visibility 0.1s; /* Transição ainda mais rápida */
        .appendTo('head');
+
    pointer-events: none;
});
+
    z-index: 1000;
 +
    font-family: Arial, sans-serif; /* Fonte padrão para o tooltip */
 +
    font-weight: normal;
 +
}
  
mw.hook('wikipage.content').add(function ($content) {
+
/* Seta do tooltip */
    // Função para inicializar todos os elementos .warp-copy
+
.warp-copy::before {
     function initWarpCopy() {
+
    content: "";
        console.log("Inicializando elementos .warp-copy");
+
    position: absolute;
       
+
    bottom: 100%;
        // Remove manipuladores de eventos anteriores para evitar duplicações
+
    left: 50%;
        $content.find('.warp-copy').off('click');
+
     transform: translateX(-50%);
       
+
    border-width: 4px;
        // Adiciona o manipulador de clique
+
    border-style: solid;
        $content.find('.warp-copy').on('click', function (event) {
+
    border-color: transparent transparent #333 transparent;
            event.preventDefault();
+
    opacity: 0;
            event.stopPropagation();
+
    visibility: hidden;
           
+
    transition: opacity 0.1s, visibility 0.1s; /* Transição ainda mais rápida */
            var $this = $(this);
+
    pointer-events: none;
            var textToCopy = $this.attr('data-copy');
+
    z-index: 1000;
           
+
}
            if (!textToCopy) {
+
 
                console.warn("Elemento .warp-copy sem atributo data-copy encontrado");
+
/* Mostrar tooltip ao passar o mouse */
                return;
+
.warp-copy:hover::after,
            }
+
.warp-copy:hover::before {
           
+
    opacity: 1;
            console.log("Copiando texto: " + textToCopy);
+
    visibility: visible;
           
+
    display: block !important;
            // Usa a API Clipboard moderna quando disponível
+
}
            if (navigator.clipboard && navigator.clipboard.writeText) {
+
 
                navigator.clipboard.writeText(textToCopy)
+
/* Estilo adicional para feedback de cópia */
                    .then(function() {
+
.warp-copy.copied::after {
                        console.log('Texto copiado com sucesso usando Clipboard API');
+
    content: "Copiado!";
                        showCopiedFeedback($this);
+
    background-color: #4CAF50; /* Verde para indicar sucesso */
                    })
+
}
                    .catch(function(err) {
+
 
                        console.error('Falha ao copiar texto: ', err);
+
/* Opcional: um pequeno efeito visual quando clicado */
                        // Tenta o método de fallback
+
.warp-copy:active {
                        fallbackCopyText(textToCopy, $this);
+
    opacity: 0.7;
                    });
+
}
            } else {
+
 
                // Método de fallback para navegadores que não suportam a API Clipboard
+
/* Mantém o estilo padrão dos links */
                fallbackCopyText(textToCopy, $this);
+
a {
            }
+
    /* Não alteramos o estilo padrão dos links */
        });
+
    text-underline-offset: 0px;
     }
+
}
      
+
 
     // Função de fallback para copiar texto
+
.external {
     function fallbackCopyText(text, $element) {
+
    background: none !important;
        // Cria um elemento de texto temporário
+
    padding-right: 0 !important;
        var tempInput = document.createElement('textarea');
+
}
        tempInput.value = text;
+
 
        tempInput.style.position = 'fixed';
+
/* Tabelas */
        tempInput.style.opacity = '0';
+
.tile-row {
        document.body.appendChild(tempInput);
+
    display: flex;
       
+
    flex-flow: row wrap;
        // Seleciona e copia
+
    margin-bottom: 1em;
        tempInput.select();
+
}
        tempInput.setSelectionRange(0, 99999); // Para dispositivos móveis
+
 
       
+
.tile-halves {
        try {
+
    display: flex;
            var successful = document.execCommand('copy');
+
     flex-flow: row wrap;
            if (successful) {
+
     border: 1px solid #e4eaee;
                console.log('Texto copiado com sucesso usando execCommand');
+
     background: #ffffff;
                showCopiedFeedback($element);
+
     box-shadow: 0 0.25rem 0.35rem -0.25rem rgba(0, 0, 0, 0.1);
            } else {
+
}
                console.error('Falha ao copiar texto com execCommand');
+
 
            }
+
.tile-halves h2 {
        } catch (err) {
+
    font-size: 1.4em;
            console.error('Erro ao copiar texto: ', err);
+
    font-weight: bold;
        }
+
    border: none;
       
+
    margin: 0 0 0.4em;
        // Remove o elemento temporário
+
}
        document.body.removeChild(tempInput);
+
 
     }
+
.tile-halves .byline + h2 {
      
+
    margin-top: -0.5em;
     // Função para mostrar feedback visual de cópia
+
}
     function showCopiedFeedback($element) {
+
 
        // Adiciona classe para feedback visual
+
.tile-top {
        $element.addClass('copied');
+
    width: 100%;
       
+
    padding: 1.3rem 1.5rem 0.6rem;
        // Remove a classe após um breve período
+
}
        setTimeout(function() {
+
 
            $element.removeClass('copied');
+
.tile-top.tile-image {
        }, 1500);
+
    display: flex;
       
+
    align-items: center;
        // Opcional: mostrar um popup de notificação
+
    justify-content: center;
        $('<div class="copy-notification" style="position:fixed;bottom:20px;right:20px;background:#4CAF50;color:white;padding:10px;border-radius:5px;z-index:9999;">Copiado: ' + $element.attr('data-copy') + '</div>')
+
    background-color: #949eaa;
            .appendTo('body')
+
    overflow: visible;
            .delay(1500)
+
    padding: 0;
            .fadeOut(300, function() { $(this).remove(); });
+
    height: auto;
     }
+
    width: 100%;
      
+
    box-sizing: border-box;
     // Script para imagens dos NPCs
+
}
    function initNPCImageCopy() {
+
 
        $content.find('.contents-equipment .tile-top.tile-image a').each(function() {
+
.tile-top.tile-image a {
            var $link = $(this);
+
    width: 100%;
            var linkHref = $link.attr('href') || '';
+
     height: 100%;
           
+
     display: flex;
            // Extrai o ID do NPC do link
+
     justify-content: center;
            var npcId = linkHref.startsWith('#') ? linkHref.substring(1) : linkHref;
+
     align-items: center;
           
+
}
            if (npcId) {
+
 
                $link.off('mousedown').on('mousedown', function(e) {
+
.tile-top.tile-image img {
                    // Texto a ser copiado
+
    display: block;
                    var textToCopy = "@warp " + npcId;
+
    width: auto;
                   
+
    height: auto;
                    // Tenta usar a API Clipboard moderna
+
    margin: 0;
                    if (navigator.clipboard && navigator.clipboard.writeText) {
+
    transition: 0.4s ease-out;
                        navigator.clipboard.writeText(textToCopy)
+
}
                            .then(function() {
+
 
                                console.log('Comando @warp copiado com sucesso');
+
.tile-bottom {
                                showCopiedNotification(textToCopy);
+
    background: #ffffff;
                            })
+
    border-top: 1px solid #e4eaee;
                            .catch(function(err) {
+
    width: 100%;
                                console.error('Falha ao copiar comando @warp: ', err);
+
    padding: 1rem 1.5rem 0.6rem;
                                // Usa o método de fallback
+
}
                                fallbackCopyText(textToCopy, $link);
+
 
                            });
+
.tile-bottom.link-button {
                    } else {
+
    align-self: center;
                        // Método de fallback
+
    padding: 0;
                        fallbackCopyNPCCommand(textToCopy);
+
    width: auto;
                    }
+
    margin: 0 auto;
                   
+
    max-width: fit-content;
                    // Permite que o evento continue
+
}
                    return true;
+
 
                });
+
.tile-bottom.link-button a {
            }
+
    display: block;
        });
+
    text-align: center;
    }
+
    padding: 0.75em 0.6em 0.8em;
   
+
    text-decoration: none;
    // Função de fallback para copiar comando de NPC
+
}
    function fallbackCopyNPCCommand(text) {
+
 
        var tempInput = document.createElement('textarea');
+
.mainpage-contents .tile-halves {
        tempInput.value = text;
+
    display: inline-block;
        tempInput.style.position = 'fixed';
+
    flex: 0 0 auto;
        tempInput.style.opacity = '0';
+
     margin-right: 0.9rem;
        document.body.appendChild(tempInput);
+
     width: auto;
       
+
     max-width: max-content;
        tempInput.select();
+
}
        tempInput.setSelectionRange(0, 99999); // Para dispositivos móveis
+
 
       
+
.mainpage-contents .tile-halves:hover .tile-top img {
        try {
+
    transform: scale(1.04);
            document.execCommand('copy');
+
}
            showCopiedNotification(text);
+
 
        } catch (err) {
+
.mainpage-contents .tile-halves:last-child {
            console.error('Erro ao copiar comando @warp: ', err);
+
    margin-right: 0;
        }
+
}
       
+
 
        document.body.removeChild(tempInput);
+
.mainpage-contents .tile-top {
     }
+
    height: auto;
      
+
    min-height: auto;
     // Função para mostrar notificação de cópia
+
    position: relative;
     function showCopiedNotification(text) {
+
}
        $('<div class="copy-notification" style="position:fixed;bottom:20px;right:20px;background:#4CAF50;color:white;padding:10px;border-radius:5px;z-index:9999;">Copiado: ' + text + '</div>')
+
 
            .appendTo('body')
+
.mainpage-contents .tile-top h2 a {
            .delay(1500)
+
    display: block;
            .fadeOut(300, function() { $(this).remove(); });
+
    text-align: center;
     }
+
    text-decoration: none;
      
+
    line-height: 4.5rem;
     // Inicializa todas as funções
+
    padding-left: 0.45rem;
     initWarpCopy();
+
}
     initNPCImageCopy();
+
 
      
+
.mainpage-contents h2 {
    // Forçar a atualização dos tooltips (hack)
+
    margin: 0;
    setTimeout(function() {
+
    padding: 0;
        $content.find('.warp-copy').each(function() {
+
}
            var $this = $(this);
+
 
            $this.attr('title', 'Clique para Copiar');
+
.tile-bottom.link-button h2 {
        });
+
    width: max-content;
    }, 500);
+
    margin: 0 auto;
   
+
    padding: 0;
    // Observador para alterações no DOM
+
    white-space: nowrap;
     var observer = new MutationObserver(function(mutations) {
+
}
        var needsReinit = false;
+
 
       
+
/* Estilo para o subtítulo do NPC */
        mutations.forEach(function(mutation) {
+
.npc-subtitle {
            if (mutation.addedNodes && mutation.addedNodes.length > 0) {
+
    font-size: 0.8em;
                needsReinit = true;
+
    color: #666;
            }
+
    margin-top: -5px;
        });
+
    text-align: center;
       
+
    font-style: italic;
        if (needsReinit) {
+
    line-height: 1.2;
            initWarpCopy();
+
}
            initNPCImageCopy();
+
 
        }
+
/* Ajustes para garantir que os NPCs fiquem lado a lado corretamente */
     });
+
.mainpage-contents.tile-row {
      
+
    display: flex;
     // Configura o observador
+
    flex-flow: row wrap;
     observer.observe($content[0], { childList: true, subtree: true });
+
    gap: 15px;
});
+
    justify-content: flex-start;
 +
}
 +
 
 +
/* Cada NPC - ajuste a largura conforme necessário */
 +
.mainpage-contents .contents-equipment.tile-halves {
 +
    margin-right: 0;
 +
    flex: 0 0 auto;
 +
    min-width: 150px;
 +
    max-width: 200px;
 +
}
 +
 
 +
/* Estilo específico para os títulos dos NPCs */
 +
.tile-bottom.link-button h2 .warp-copy {
 +
    position: relative !important;
 +
    display: inline-block !important;
 +
    cursor: pointer !important;
 +
    color: #0000FF !important; /* Cor azul padrão dos links da MediaWiki */
 +
    text-decoration: none !important;
 +
    border-bottom: none !important;
 +
    font-family: inherit !important; /* Mantém a fonte padrão */
 +
    font-weight: bold !important; /* Mantém em negrito como no h2 original */
 +
}
 +
 
 +
/* Efeito hover para links nos títulos dos NPCs */
 +
.tile-bottom.link-button h2 .warp-copy:hover {
 +
    color: #000080 !important; /* Azul escuro ao passar o mouse */
 +
    text-decoration: underline !important; /* Sublinha ao passar o mouse */
 +
}
 +
 
 +
/* Override específico para o tooltip nos títulos dos NPCs */
 +
.tile-bottom.link-button h2 .warp-copy::after {
 +
    content: "Clique para Copiar" !important;
 +
     position: absolute !important;
 +
     bottom: 100% !important;
 +
     left: 50% !important;
 +
     transform: translateX(-50%) !important;
 +
    margin-bottom: 5px !important;
 +
    background-color: #333 !important;
 +
    color: white !important;
 +
    padding: 3px 8px !important;
 +
    border-radius: 3px !important;
 +
    font-size: 12px !important;
 +
    font-weight: normal !important;
 +
    white-space: nowrap !important;
 +
     opacity: 0 !important;
 +
     visibility: hidden !important;
 +
     transition: opacity 0.1s, visibility 0.1s !important; /* Transição ainda mais rápida */
 +
     pointer-events: none !important;
 +
     z-index: 1000 !important;
 +
     display: block !important;
 +
}
 +
 
 +
/* Mostrar tooltip ao passar o mouse - com alta especificidade */
 +
.tile-bottom.link-button h2 .warp-copy:hover::after,
 +
.tile-bottom.link-button h2 .warp-copy:hover::before {
 +
    opacity: 1 !important;
 +
    visibility: visible !important;
 +
    display: block !important;
 +
}
 +
 
 +
/* Estilo para quando copiado */
 +
.tile-bottom.link-button h2 .warp-copy.copied::after {
 +
    content: "Copiado!" !important;
 +
     background-color: #4CAF50 !important;
 +
    display: block !important;
 +
}
 +
 
 +
/* Seta do tooltip com alta especificidade */
 +
.tile-bottom.link-button h2 .warp-copy::before {
 +
    content: "" !important;
 +
    position: absolute !important;
 +
    bottom: 100% !important;
 +
    left: 50% !important;
 +
    transform: translateX(-50%) !important;
 +
    border-width: 4px !important;
 +
    border-style: solid !important;
 +
    border-color: transparent transparent #333 transparent !important;
 +
     opacity: 0 !important;
 +
     visibility: hidden !important;
 +
     transition: opacity 0.1s, visibility 0.1s !important; /* Transição ainda mais rápida */
 +
     pointer-events: none !important;
 +
    z-index: 1000 !important;
 +
    display: block !important;
 +
}

Revision as of 16:02, 29 April 2025

/* CSS placed here will be applied to all skins */
/* body.page-Main_Page h1.firstHeading { display:none; } */
/* { font-family: courier new } */

/* Estilo para os elementos clicáveis */
.warp-copy {
    color: #0000FF; /* Cor original dos links */
    cursor: pointer;
    text-decoration: underline; /* Usa sublinhado normal como links padrão */
    position: relative;
    display: inline-block;
    border-bottom: none;
    /* Removido o sublinhado pontilhado para manter aparência original */
    font-family: inherit; /* Mantém a fonte igual à do texto ao redor */
    font-weight: inherit; /* Mantém o peso da fonte igual ao texto ao redor */
}

/* Tooltip personalizado */
.warp-copy::after {
    content: "Clique para Copiar";
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    margin-bottom: 5px;
    background-color: #333;
    color: white;
    padding: 3px 8px;
    border-radius: 3px;
    font-size: 12px;
    white-space: nowrap;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.1s, visibility 0.1s; /* Transição ainda mais rápida */
    pointer-events: none;
    z-index: 1000;
    font-family: Arial, sans-serif; /* Fonte padrão para o tooltip */
    font-weight: normal;
}

/* Seta do tooltip */
.warp-copy::before {
    content: "";
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    border-width: 4px;
    border-style: solid;
    border-color: transparent transparent #333 transparent;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.1s, visibility 0.1s; /* Transição ainda mais rápida */
    pointer-events: none;
    z-index: 1000;
}

/* Mostrar tooltip ao passar o mouse */
.warp-copy:hover::after,
.warp-copy:hover::before {
    opacity: 1;
    visibility: visible;
    display: block !important;
}

/* Estilo adicional para feedback de cópia */
.warp-copy.copied::after {
    content: "Copiado!";
    background-color: #4CAF50; /* Verde para indicar sucesso */
}

/* Opcional: um pequeno efeito visual quando clicado */
.warp-copy:active {
    opacity: 0.7;
}

/* Mantém o estilo padrão dos links */
a {
    /* Não alteramos o estilo padrão dos links */
    text-underline-offset: 0px;
}

.external {
    background: none !important;
    padding-right: 0 !important;
}

/* Tabelas */
.tile-row {
    display: flex;
    flex-flow: row wrap;
    margin-bottom: 1em;
}

.tile-halves {
    display: flex;
    flex-flow: row wrap;
    border: 1px solid #e4eaee;
    background: #ffffff;
    box-shadow: 0 0.25rem 0.35rem -0.25rem rgba(0, 0, 0, 0.1);
}

.tile-halves h2 {
    font-size: 1.4em;
    font-weight: bold;
    border: none;
    margin: 0 0 0.4em;
}

.tile-halves .byline + h2 {
    margin-top: -0.5em;
}

.tile-top {
    width: 100%;
    padding: 1.3rem 1.5rem 0.6rem;
}

.tile-top.tile-image {
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: #949eaa;
    overflow: visible;
    padding: 0;
    height: auto;
    width: 100%;
    box-sizing: border-box;
}

.tile-top.tile-image a {
    width: 100%;
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
}

.tile-top.tile-image img {
    display: block;
    width: auto;
    height: auto;
    margin: 0;
    transition: 0.4s ease-out;
}

.tile-bottom {
    background: #ffffff;
    border-top: 1px solid #e4eaee;
    width: 100%;
    padding: 1rem 1.5rem 0.6rem;
}

.tile-bottom.link-button {
    align-self: center;
    padding: 0;
    width: auto;
    margin: 0 auto;
    max-width: fit-content;
}

.tile-bottom.link-button a {
    display: block;
    text-align: center;
    padding: 0.75em 0.6em 0.8em;
    text-decoration: none;
}

.mainpage-contents .tile-halves {
    display: inline-block;
    flex: 0 0 auto;
    margin-right: 0.9rem;
    width: auto;
    max-width: max-content;
}

.mainpage-contents .tile-halves:hover .tile-top img {
    transform: scale(1.04);
}

.mainpage-contents .tile-halves:last-child {
    margin-right: 0;
}

.mainpage-contents .tile-top {
    height: auto;
    min-height: auto;
    position: relative;
}

.mainpage-contents .tile-top h2 a {
    display: block;
    text-align: center;
    text-decoration: none;
    line-height: 4.5rem;
    padding-left: 0.45rem;
}

.mainpage-contents h2 {
    margin: 0;
    padding: 0;
}

.tile-bottom.link-button h2 {
    width: max-content;
    margin: 0 auto;
    padding: 0;
    white-space: nowrap;
}

/* Estilo para o subtítulo do NPC */
.npc-subtitle {
    font-size: 0.8em;
    color: #666;
    margin-top: -5px;
    text-align: center;
    font-style: italic;
    line-height: 1.2;
}

/* Ajustes para garantir que os NPCs fiquem lado a lado corretamente */
.mainpage-contents.tile-row {
    display: flex;
    flex-flow: row wrap;
    gap: 15px;
    justify-content: flex-start;
}

/* Cada NPC - ajuste a largura conforme necessário */
.mainpage-contents .contents-equipment.tile-halves {
    margin-right: 0;
    flex: 0 0 auto;
    min-width: 150px;
    max-width: 200px;
}

/* Estilo específico para os títulos dos NPCs */
.tile-bottom.link-button h2 .warp-copy {
    position: relative !important;
    display: inline-block !important;
    cursor: pointer !important;
    color: #0000FF !important; /* Cor azul padrão dos links da MediaWiki */
    text-decoration: none !important;
    border-bottom: none !important;
    font-family: inherit !important; /* Mantém a fonte padrão */
    font-weight: bold !important; /* Mantém em negrito como no h2 original */
}

/* Efeito hover para links nos títulos dos NPCs */
.tile-bottom.link-button h2 .warp-copy:hover {
    color: #000080 !important; /* Azul escuro ao passar o mouse */
    text-decoration: underline !important; /* Sublinha ao passar o mouse */
}

/* Override específico para o tooltip nos títulos dos NPCs */
.tile-bottom.link-button h2 .warp-copy::after {
    content: "Clique para Copiar" !important;
    position: absolute !important;
    bottom: 100% !important;
    left: 50% !important;
    transform: translateX(-50%) !important;
    margin-bottom: 5px !important;
    background-color: #333 !important;
    color: white !important;
    padding: 3px 8px !important;
    border-radius: 3px !important;
    font-size: 12px !important;
    font-weight: normal !important;
    white-space: nowrap !important;
    opacity: 0 !important;
    visibility: hidden !important;
    transition: opacity 0.1s, visibility 0.1s !important; /* Transição ainda mais rápida */
    pointer-events: none !important;
    z-index: 1000 !important;
    display: block !important;
}

/* Mostrar tooltip ao passar o mouse - com alta especificidade */
.tile-bottom.link-button h2 .warp-copy:hover::after,
.tile-bottom.link-button h2 .warp-copy:hover::before {
    opacity: 1 !important;
    visibility: visible !important;
    display: block !important;
}

/* Estilo para quando copiado */
.tile-bottom.link-button h2 .warp-copy.copied::after {
    content: "Copiado!" !important;
    background-color: #4CAF50 !important;
    display: block !important;
}

/* Seta do tooltip com alta especificidade */
.tile-bottom.link-button h2 .warp-copy::before {
    content: "" !important;
    position: absolute !important;
    bottom: 100% !important;
    left: 50% !important;
    transform: translateX(-50%) !important;
    border-width: 4px !important;
    border-style: solid !important;
    border-color: transparent transparent #333 transparent !important;
    opacity: 0 !important;
    visibility: hidden !important;
    transition: opacity 0.1s, visibility 0.1s !important; /* Transição ainda mais rápida */
    pointer-events: none !important;
    z-index: 1000 !important;
    display: block !important;
}