Notícias
console, dlc, game, jogo, jogos, lançamento, nintendo, patch, pc, playstation, steam, xbox
0 Comentários
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.

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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;
}
}

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



Publicar comentário