body, html { margin: 0; padding: 0; width: 100%; height: 100%; color: #ffffff; font-family: Arial, sans-serif; font-style: normal; overflow: hidden; display: block; } .container { width: 100%; height: 100%; user-select: none; } /* Container principal do menu */ .context-menu-container { display: flex; flex-direction: column; z-index: 10; align-items: flex-start; position: absolute; top: 15%; right: 23%; width: 320px; box-sizing: border-box; border-radius: 12px; background: transparent; /* Fundo padrão transparente */ /* Remover a borda de neon por padrão */ box-shadow: none; } /* Estilo para quando o fundo estiver ativado */ .context-menu-container.background-enabled { background: linear-gradient(145deg, #1d4e3f, #163d31); /* Gradiente verde mais harmônico */ /* Adiciona o box-shadow com a borda de neon apenas quando o fundo estiver ativo */ box-shadow: 0px 8px 20px rgba(0, 255, 128, 0.15); /* Sombra com tom de verde */ } /* Cabeçalho com título */ .context-menu-container .header { display: flex; align-items: center; justify-content: space-between; /* Mantém espaçamento entre elementos */ position: relative; width: 100%; height: 60px; /* Define a altura do container */ padding: 0 15px; /* Espaçamento lateral */ box-sizing: border-box; background: #094e3e; /* Fundo verde escuro */ color: #ffffff; font-size: 1.3rem; font-weight: bold; text-transform: uppercase; border-radius: 12px 12px 8px 8px; /* Bordas arredondadas inferiores */ box-shadow: 0px 4px 6px rgba(0, 255, 128, 0.15); /* Sombra verde translúcida */ } /* Título fixo sempre no centro */ .context-menu-container .header .title { position: absolute; top: 50%; /* Centraliza verticalmente */ left: 50%; /* Centraliza horizontalmente */ transform: translate(-50%, -50%); /* Ajusta o alinhamento */ font-size: 1.3rem; font-weight: bold; text-transform: uppercase; color: #ffffff; /* Texto branco */ text-align: center; /* Texto centralizado */ } /* Botão "X" fixo no canto direito */ .context-menu-container .header .x { position: absolute; top: 50%; /* Centraliza verticalmente */ right: 10px; /* Espaçamento do lado direito */ transform: translateY(-50%); /* Ajusta a centralização vertical */ width: 40px; height: 40px; background: transparent; /* Fundo transparente */ color: #ffffff; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.3s ease; /* Animação suave */ } /* Animação ao passar o mouse no "X" */ .context-menu-container .header .x:hover { color: #e33c3c; /* Cor vermelha ao passar o mouse */ box-shadow: 0px 0px 8px rgba(227, 60, 60, 0.6); /* Sombra suave ao passar o mouse */ } /* Efeito de clique no "X" */ .context-menu-container .header .x:active { color: #b33a3a; /* Cor vermelha mais escura ao clicar */ transform: scale(1.1); /* Leve aumento ao clicar */ } /* Botão "Voltar" fixo no canto esquerdo */ .context-menu-container .header .back { position: absolute; top: 50%; /* Centraliza verticalmente */ left: 10px; /* Espaçamento do lado esquerdo */ transform: translateY(-50%); /* Ajusta a centralização vertical */ width: 40px; height: 40px; background: transparent; /* Fundo transparente */ color: #ffffff; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.3s ease; /* Transição suave */ } /* Animação ao passar o mouse no botão "Voltar" */ .context-menu-container .header .back:hover { color: #00ff80; /* Verde brilhante ao passar o mouse */ box-shadow: 0px 0px 8px rgba(0, 255, 128, 0.6); /* Sombra suave ao passar o mouse */ } /* Efeito de clique no botão "Voltar" */ .context-menu-container .header .back:active { color: #b33a3a; /* Cor vermelha ao clicar */ transform: scale(1.1); /* Leve aumento ao clicar */ } /* Conteúdo do menu com espaçamento */ .context-menu-container .menu-contents { display: flex; flex-direction: column; gap: 10px; padding: 15px; margin-top: 10px; /* Espaçamento acima do conteúdo do menu */ max-height: 300px; overflow-y: auto; scrollbar-width: thin; scrollbar-color: #00ff80 transparent; /* Verde brilhante no scrollbar */ } .context-menu-container .menu-contents::-webkit-scrollbar { width: 6px; } .context-menu-container .menu-contents::-webkit-scrollbar-thumb { background: #00ff80; /* Verde brilhante no scrollbar */ border-radius: 10px; } .context-menu-container .menu-contents::-webkit-scrollbar-track { background: transparent; } /* Itens do menu */ .context-menu-container .menu-item { display: flex; align-items: center; padding: 15px; background: linear-gradient(145deg, #102a24, #0b1f1c); /* Gradiente verde escuro */ border-radius: 10px; cursor: pointer; transition: all 0.3s ease; box-shadow: 0px 4px 6px rgba(0, 255, 128, 0.15); /* Sombra verde translúcida */ border: 1px solid transparent; position: relative; } .context-menu-container .menu-item:hover { background: linear-gradient(145deg, #094e3e, #073e32); /* Gradiente mais claro ao passar o mouse */ transform: translateY(-2px); border: 1px solid #00ff80; /* Borda verde brilhante */ } /* Ícones */ .context-menu-container .menu-item .icon { font-size: 1.5rem; color: #00ff80; /* Verde brilhante para os ícones */ margin-right: 15px; transition: color 0.3s ease; } .context-menu-container .menu-item:hover .icon { color: #ffffff; /* Branco ao passar o mouse */ } /* Texto */ .context-menu-container .menu-item .text-content { display: flex; flex-direction: column; } .context-menu-container .menu-item .header-text { font-size: 1rem; font-weight: bold; color: #ffffff; /* Branco */ } .context-menu-container .menu-item .description { font-size: 0.85rem; color: #b0b0b0; /* Cinza claro */ margin-top: 4px; } /* Notificações */ #notification-container { position: fixed; top: 50px; /* Ajuste de altura */ right: 20px; z-index: 9999; display: flex; flex-direction: column; align-items: flex-end; gap: 0; /* Remove qualquer espaçamento interno entre os elementos */ } .notification { display: flex; align-items: center; padding: 15px 20px; border-radius: 12px; background: linear-gradient(90deg, #333333, #000000); /* Gradiente horizontal */ color: #fff; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); position: absolute; /* Controlado pelo JavaScript */ right: 0; width: 350px; /* Define um tamanho fixo para todas as notificações */ overflow: hidden; /* Impede o conteúdo de transbordar */ border-left: 5px solid; /* Cor específica por tipo */ animation: slideInFromRight 0.5s ease; /* Animação de entrada */ } .notification:last-child { margin-bottom: 0; /* Remove o espaço abaixo da última notificação */ } .notification.success { border-left-color: #4CAF50; } .notification.error { border-left-color: #F44336; } .notification.info { border-left-color: #2196F3; } .notification.warning { border-left-color: #FFC107; } .notification.mining { border-left-color: #9C27B0; } .notification-icon-container { position: relative; width: 55px; /* Ajuste aqui para aumentar */ height: 55px; /* Ajuste aqui para aumentar */ display: flex; align-items: center; justify-content: center; margin-right: 15px; } .notification-icon-background { position: absolute; width: 100%; /* Mantém 100% do contêiner */ height: 100%; /* Mantém 100% do contêiner */ clip-path: polygon(50% 0%, 90% 25%, 90% 75%, 50% 100%, 10% 75%, 10% 25%); /* Forma hexagonal */ background: linear-gradient(90deg, #333333, #000000); /* Gradiente horizontal */ border: none; } .notification-icon { font-size: 26px; /* Aumentado de 20px para 26px */ color: currentColor; /* Adapta a cor ao tipo de notificação */ z-index: 1; } /* Ajusta as cores de cada tipo */ .notification.success .notification-icon { color: #4CAF50; /* Verde para sucesso */ } .notification.error .notification-icon { color: #F44336; /* Vermelho para erro */ } .notification.info .notification-icon { color: #2196F3; /* Azul para informações */ } .notification.warning .notification-icon { color: #FFC107; /* Amarelo para avisos */ } .notification.mining .notification-icon { color: #9C27B0; /* Roxo para mineração */ } .notification-title { font-weight: bold; font-size: 16px; white-space: nowrap; /* Mantém o texto em uma linha */ overflow: hidden; /* Esconde o excesso de texto */ text-overflow: ellipsis; /* Adiciona "..." ao final do texto longo */ color: currentColor; /* Adapta a cor ao tipo de notificação */ } /* Define as cores para cada tipo */ .notification.success .notification-title { color: #4CAF50; /* Verde para sucesso */ } .notification.error .notification-title { color: #F44336; /* Vermelho para erro */ } .notification.info .notification-title { color: #2196F3; /* Azul para informações */ } .notification.warning .notification-title { color: #FFC107; /* Amarelo para avisos */ } .notification.mining .notification-title { color: #9C27B0; /* Roxo para mineração */ } .notification-content { flex: 1; display: flex; flex-direction: column; gap: 5px; overflow: hidden; /* Impede transbordamento */ } .notification-title { font-weight: bold; font-size: 16px; color: currentColor; /* Adapta a cor ao tipo de notificação */ white-space: normal; /* Permite quebras de linha */ overflow-wrap: break-word; /* Divide palavras longas, se necessário */ overflow: hidden; /* Esconde o excesso de texto além do contêiner */ } .notification-message { font-size: 14px; color: #d3d3d3; white-space: normal; /* Permite quebras de linha */ overflow-wrap: break-word; /* Divide palavras longas, se necessário */ overflow: hidden; /* Esconde o excesso de texto além do contêiner */ } .notification-timer { position: absolute; top: 10px; right: 10px; width: 20px; height: 20px; } .notification-timer svg { width: 100%; height: 100%; transform: rotate(-90deg); /* Roda o círculo para começar do topo */ } .notification-timer circle { fill: none; stroke-width: 2; stroke-dasharray: 126; /* Circunferência do círculo */ stroke-dashoffset: 0; /* Começa preenchido */ animation: circle-progress linear forwards; /* Controla o tempo da animação */ } @keyframes circle-progress { from { stroke-dashoffset: 0; /* Começa cheio */ } to { stroke-dashoffset: 126; /* Fica vazio ao final */ } } .notification.success .notification-timer circle { stroke: #4CAF50; /* Verde para sucesso */ } .notification.error .notification-timer circle { stroke: #F44336; /* Vermelho para erro */ } .notification.info .notification-timer circle { stroke: #2196F3; /* Azul para informações */ } .notification.warning .notification-timer circle { stroke: #FFC107; /* Amarelo para avisos */ } .notification.mining .notification-timer circle { stroke: #9C27B0; /* Roxo para mineração */ } @keyframes slideInFromRight { from { opacity: 0; transform: translateX(100%); } to { opacity: 1; transform: translateX(0); } } @keyframes slideOutToRight { from { opacity: 1; transform: translateX(0); } to { opacity: 0; transform: translateX(100%); } } .notification.fade-out { animation: slideOutToRight 0.5s ease forwards; /* Animação de saída para a direita */ }