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

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

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

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

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

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

1 14

Melhor Jogo do Ano

Processando seu voto…


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

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

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

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

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

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

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

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

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

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

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

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

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

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

const data = await response.json();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AN7BsVCU2BGCvOr5bUKzvNg0kDHe23N5

Melhor Estúdio

Processando seu voto…


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

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

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

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

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

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

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

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

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

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

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

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

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

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

const data = await response.json();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AN7BsVBg9JQHA1wW4LrYrt7JpZrybaRz

Melhor Jogo para PC

Processando seu voto…


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

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

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

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

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

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

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

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

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

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

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

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

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

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

const data = await response.json();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AN7BsVCvda19nAziAsCmcVsmSNDkFgYg

Melhor Jogo para Xbox

Processando seu voto…


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

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

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

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

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

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

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

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

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

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

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

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

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

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

const data = await response.json();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AN7BsVCZFEy F1wCfBAIflSt4EdFoWDK

Melhor Jogo para PlayStation

Processando seu voto…


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

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

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

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

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

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

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

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

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

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

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

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

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

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

const data = await response.json();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

unnamed

Melhor Jogo para Switch

Processando seu voto…


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

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

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

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

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

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

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

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

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

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

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

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

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

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

const data = await response.json();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

unnamed 1

Melhor Jogo Mobile

Processando seu voto…


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

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

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

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

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

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

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

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

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

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

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

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

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

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

const data = await response.json();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

unnamed 10

Melhor Jogo de Horror

Processando seu voto…


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

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

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

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

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

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

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

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

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

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

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

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

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

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

const data = await response.json();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

unnamed 5

Melhor Shooter

Processando seu voto…


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

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

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

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

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

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

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

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

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

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

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

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

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

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

const data = await response.json();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

unnamed 2

Melhor Jogo de Ação/Aventura

Processando seu voto…


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

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

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

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

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

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

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

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

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

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

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

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

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

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

const data = await response.json();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

unnamed 9

Melhor Jogo de Estratégia

Processando seu voto…


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

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

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

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

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

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

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

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

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

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

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

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

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

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

const data = await response.json();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

unnamed 3

Melhor RPG

Processando seu voto…


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

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

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

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

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

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

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

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

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

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

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

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

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

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

const data = await response.json();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

unnamed 7

Melhor Jogo de Luta

Processando seu voto…


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

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

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

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

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

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

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

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

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

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

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

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

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

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

const data = await response.json();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

unnamed 6

Melhor Jogo de Plataforma

Processando seu voto…


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

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

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

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

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

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

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

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

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

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

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

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

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

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

const data = await response.json();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 
111 1
 

Melhor Jogo de Aventura

Processando seu voto…


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

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

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

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

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

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

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

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

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

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

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

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

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

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

const data = await response.json();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

unnamed 4

Melhor Jogo de Esporte

Processando seu voto…


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

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

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

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

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

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

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

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

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

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

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

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

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

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

const data = await response.json();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

unnamed 8

Melhor Jogo de Corrida

Processando seu voto…


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

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

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

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

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

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

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

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

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

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

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

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

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

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

const data = await response.json();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

unnamed 11

Melhor Jogo Independente

Processando seu voto…


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

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

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

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

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

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

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

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

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

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

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

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

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

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

const data = await response.json();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed 14

Melhor DLC

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

 
121111
 

Melhor Jogo de VR

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed 15

Melhor Multiplayer

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed 18

Melhor Trilha Sonora

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed 16

Melhor Visual

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed 17

Melhor Narrativa

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed 20

Melhor Personagem Feminina

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed 19

Melhor Personagem Masculino

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed 21

Melhor Vilão

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed 22

Melhor Adaptação

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed 13

Melhor Jogo como Serviço

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed 23

Maior Flop (Jogo que Decepcionou)

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed 25

Maior Fail

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed 24

Maior Surpresa

Processando seu voto…


document.addEventListener(‘alpine:init’, () => {
Alpine.data(‘ramarPoolComponent’, () => ({
poolId: 0,
hasVoted: false,
votedOption: 0,
results: null,
loading: false,
error: false,
errorMessage: ”,
options: [],
ajaxurl: ”,
resultsurl: ”,
statusurl: ”,
nonce: ”,

init() {
// Get data from HTML attributes
this.poolId = parseInt(this.$el.dataset.poolId);
this.options = JSON.parse(this.$el.dataset.poolOptions);
this.ajaxurl = this.$el.dataset.ajaxUrl;
this.resultsurl = this.$el.dataset.resultsUrl;
this.statusurl = this.$el.dataset.statusUrl;
this.nonce = this.$el.dataset.nonce;

// Initialize async operations
this.initAsync();
},

async initAsync() {
await this.checkVotingState();
if (this.hasVoted) {
this.loadResults();
}
},

async checkVotingState() {
const localStorageKey = `ramar_pool_voted_${this.poolId}`;
const localVote = localStorage.getItem(localStorageKey);

if (localVote) {
this.hasVoted = true;
this.votedOption = parseInt(localVote);
}

try {
const response = await fetch(`${this.statusurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.hasVoted = data.has_voted;
this.votedOption = data.voted_option;

if (data.has_voted) {
localStorage.setItem(localStorageKey, data.voted_option.toString());
if (data.results) {
this.results = data.results;
}
} else {
localStorage.removeItem(localStorageKey);
}
}
}
} catch (error) {
console.log(‘Could not verify voting status with server’);
}
},

async loadResults() {
try {
const response = await fetch(`${this.resultsurl}/${this.poolId}`, {
method: ‘GET’,
headers: {
‘X-WP-Nonce’: this.nonce
}
});

if (response.ok) {
const data = await response.json();
if (data.success) {
this.results = data.results;
}
}
} catch (error) {
console.log(‘Could not load existing results’);
}
},

async vote(option) {
if (this.hasVoted || this.loading) return;

this.loading = true;
this.error = false;

try {
const response = await fetch(this.ajaxurl, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-WP-Nonce’: this.nonce
},
body: JSON.stringify({
pool_id: this.poolId,
option: option
})
});

const data = await response.json();

if (data.success) {
this.hasVoted = true;
this.votedOption = data.voted_option;
this.results = data.results;

const localStorageKey = `ramar_pool_voted_${this.poolId}`;
localStorage.setItem(localStorageKey, data.voted_option.toString());
} else {
this.error = true;
this.errorMessage = data.message || ‘Erro ao processar voto.’;
}
} catch (error) {
this.error = true;
this.errorMessage = ‘Erro de conexão. Tente novamente.’;
} finally {
this.loading = false;
}
}
}));
});

/* Alpine.js cloaking */
[x-cloak] {
display: none !important;
}

.ramar-pool {
max-width: 600px;
margin: 20px auto;
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, sans-serif;
}

.ramar-pool__card {
background: #ffffff;
border-radius: 12px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
overflow: hidden;
border: 1px solid #e1e5e9;
min-height: 320px; /* Prevent CLS between voting and results states */
}

.ramar-pool__header {
padding: 24px;
border-bottom: 1px solid #e1e5e9;
}

.ramar-pool__title {
margin: 0 0 12px 0;
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
}

.ramar-pool__description {
color: #666;
line-height: 1.5;
}

.ramar-pool__body {
padding: 24px;
min-height: 200px; /* Ensure consistent height for content area */
display: flex;
flex-direction: column;
justify-content: center;
}

.ramar-pool__loading {
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
color: #666;
gap: 12px;
}

.ramar-pool__loading-spinner {
width: 20px;
height: 20px;
border: 2px solid #e1e5e9;
border-top: 2px solid #0073aa;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

.ramar-pool__voting {
display: flex;
flex-direction: column;
gap: 12px;
}

.ramar-pool__option {
padding: 16px 20px;
border-radius: 8px;
border: 2px solid #e1e5e9;
background: #ffffff;
cursor: pointer;
transition: all 0.2s ease;
font-size: 16px;
text-align: left;
position: relative;
}

.ramar-pool__option–clickable:hover {
border-color: #0073aa;
background: #f8f9fa;
transform: translateY(-1px);
}

.ramar-pool__option–clickable:active {
transform: translateY(0);
}

.ramar-pool__option–result {
cursor: default;
padding: 0;
background: #f8f9fa;
overflow: hidden;
}

.ramar-pool__option–voted {
border-color: #0073aa;
background: #e8f4f8;
}

.ramar-pool__option-content {
padding: 16px 20px;
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: center;
}

.ramar-pool__option-text {
font-weight: 500;
color: #1a1a1a;
}

.ramar-pool__option-stats {
display: flex;
gap: 12px;
color: #666;
font-size: 14px;
}

.ramar-pool__option-bar {
height: 4px;
background: #e1e5e9;
position: relative;
}

.ramar-pool__option-fill {
height: 100%;
background: linear-gradient(90deg, #0073aa, #005a87);
transition: width 0.8s ease;
border-radius: 0 2px 2px 0;
}

.ramar-pool__option–voted .ramar-pool__option-fill {
background: linear-gradient(90deg, #00a32a, #007a20);
}

.ramar-pool__results {
display: flex;
flex-direction: column;
gap: 16px;
}

.ramar-pool__footer {
padding: 16px 24px;
background: #f8f9fa;
border-top: 1px solid #e1e5e9;
text-align: center;
color: #666;
font-weight: 500;
}

.ramar-pool__error {
background: #f8d7da;
color: #721c24;
padding: 12px 16px;
border-radius: 6px;
border: 1px solid #f5c6cb;
text-align: center;
}

/* Responsive design */
@media (max-width: 768px) {
.ramar-pool {
margin: 16px;
}

.ramar-pool__header,
.ramar-pool__body {
padding: 20px;
}

.ramar-pool__option-content {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}

.ramar-pool__option-stats {
align-self: flex-end;
}
}

unnamed 26

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;
}
}


Fonte: https://www.gamevicio.com/noticias/2025/12/the-gamevicio-awards-2025-vote-em-nossa-premiacao/

Conteúdo importado automaticamente pelo HOST Portal News

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *