Carregando agora

The GameVicio Awards 2025: Vote em nossa premiação!

2025 foi mais um ano que passamos bons momentos juntos na GameVicio, mas conforme o ano se aproxima do fim, trazemos o nosso habitual evento The GameVicio Awards, uma votação onde vocês é quem decidem quais foram os melhores jogos nas mais diversas categorias.

Esse foi sem dúvidas um ano com muitas novidades para todos os gostos, trazendo muitos lançamentos grandes que foram extremamente bem recebidos pela crítica e jogadores, o que deixa a votação deste ano ainda mais acirrada.

Sem mais delongas, abaixo você pode conhecer os indicados de todas as categorias e deixar seu voto naquele que acredita ser o mais merecedor. Lembrando que você não é obrigado a votar em todas as categorias, podendo pular nas quais desejar deixar em branco.

A votação será encerrada em 20 de dezembro, com os ganhadores sendo revelados em 23 de dezembro.

1-14 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Jogo do Ano

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

AN7BsVCU2BGCvOr5bUKzvNg0kDHe23N5 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Estúdio

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

AN7BsVBg9JQHA1wW4LrYrt7JpZrybaRz The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Jogo para PC

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

AN7BsVCvda19nAziAsCmcVsmSNDkFgYg The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Jogo para Xbox

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

AN7BsVCZFEy_F1wCfBAIflSt4EdFoWDK The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Jogo para PlayStation

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Jogo para Switch

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-1 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Jogo Mobile

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-10 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Jogo de Horror

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-5 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Shooter

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-2 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Jogo de Ação/Aventura

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-9 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Jogo de Estratégia

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-3 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor RPG

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-7 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Jogo de Luta

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-6 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Jogo de Plataforma

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

 
111-1 The GameVicio Awards 2025: Vote em nossa premiação!
 

Melhor Jogo de Aventura

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-4 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Jogo de Esporte

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-8 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Jogo de Corrida

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-11 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Jogo Independente

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-14 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor DLC

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

 
121111 The GameVicio Awards 2025: Vote em nossa premiação!
 

Melhor Jogo de VR

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-15 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Multiplayer

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-18 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Trilha Sonora

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-16 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Visual

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-17 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Narrativa

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-20 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Personagem Feminina

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-19 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Personagem Masculino

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-21 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Vilão

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-22 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Adaptação

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-13 The GameVicio Awards 2025: Vote em nossa premiação!

Melhor Jogo como Serviço

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-23 The GameVicio Awards 2025: Vote em nossa premiação!

Maior Flop (Jogo que Decepcionou)

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-25 The GameVicio Awards 2025: Vote em nossa premiação!

Maior Fail

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-24 The GameVicio Awards 2025: Vote em nossa premiação!

Maior Surpresa

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed-26 The GameVicio Awards 2025: Vote em nossa premiação!

Jogo Mais Aguardado

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}


📰 Notícia originalmente publicada em GameVicio

🎮 Importado automaticamente para SushiGames.com.br

COMPARTILHE:

Publicar comentário