#gates-analytics-block {
--bg: #0b1020;
--panel: #121a2f;
--panel-2: #0f1730;
--border: #24304f;
--text: #eef2ff;
--muted: #9aa6c7;
--gold: #fbc02d;
--purple: #7c4dff;
--crimson: #ef5350;
--teal: #26c6da;
--orange: #ff7043;
--shadow: 0 10px 30px rgba(0,0,0,.35);
color: var(--text);
background:
radial-gradient(circle at top right, rgba(124,77,255,.14), transparent 30%),
radial-gradient(circle at top left, rgba(251,192,45,.10), transparent 28%),
linear-gradient(180deg, #0a0f1d 0%, #0b1020 100%);
border: 1px solid var(--border);
border-radius: 18px;
padding: 22px;
box-shadow: var(--shadow);
font-family: Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
line-height: 1.55;
}#gates-analytics-block * { box-sizing: border-box; }#gates-analytics-block .ga-wrap {
max-width: 1200px;
margin: 0 auto;
}#gates-analytics-block .ga-header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 16px;
margin-bottom: 22px;
flex-wrap: wrap;
}#gates-analytics-block .ga-title {
margin: 0;
font-size: clamp(28px, 4vw, 44px);
line-height: 1.1;
font-weight: 800;
letter-spacing: -.02em;
background: linear-gradient(90deg, #fff, #fbc02d 45%, #fff2b8 100%);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}#gates-analytics-block .ga-subtitle {
margin: 10px 0 0;
color: var(--muted);
max-width: 760px;
font-size: 15px;
}#gates-analytics-block .ga-badge {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 10px 14px;
border-radius: 999px;
background: rgba(124,77,255,.12);
border: 1px solid rgba(124,77,255,.25);
color: #ddd7ff;
font-size: 13px;
white-space: nowrap;
}#gates-analytics-block .ga-grid {
display: grid;
grid-template-columns: repeat(12, minmax(0, 1fr));
gap: 16px;
}#gates-analytics-block .ga-card {
background: linear-gradient(180deg, rgba(18,26,47,.96), rgba(13,19,36,.96));
border: 1px solid var(--border);
border-radius: 16px;
padding: 18px;
box-shadow: var(--shadow);
min-width: 0;
}#gates-analytics-block .ga-card h2,
#gates-analytics-block .ga-card h3 {
margin: 0 0 6px;
font-size: 18px;
line-height: 1.2;
font-weight: 700;
color: #fff;
}#gates-analytics-block .ga-card p {
margin: 0;
color: var(--muted);
font-size: 14px;
}#gates-analytics-block .span-5 { grid-column: span 5; }
#gates-analytics-block .span-6 { grid-column: span 6; }
#gates-analytics-block .span-7 { grid-column: span 7; }
#gates-analytics-block .span-12 { grid-column: 1 / -1; }#gates-analytics-block .ga-chart-wrap {
margin-top: 14px;
height: 320px;
position: relative;
}#gates-analytics-block canvas {
display: block;
width: 100%;
height: 100%;
border-radius: 12px;
background:
linear-gradient(180deg, rgba(255,255,255,.01), rgba(255,255,255,0)),
linear-gradient(180deg, rgba(124,77,255,.03), rgba(124,77,255,0));
}#gates-analytics-block .ga-legend {
display: flex;
flex-wrap: wrap;
gap: 12px 16px;
margin-top: 14px;
font-size: 13px;
color: var(--muted);
}#gates-analytics-block .ga-legend span {
display: inline-flex;
align-items: center;
gap: 8px;
}#gates-analytics-block .dot {
width: 10px;
height: 10px;
border-radius: 999px;
display: inline-block;
flex: 0 0 10px;
}#gates-analytics-block .ga-flow {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 12px;
margin-top: 14px;
align-items: stretch;
}#gates-analytics-block .ga-step {
padding: 16px;
border-radius: 14px;
border: 1px solid var(--border);
background: linear-gradient(180deg, rgba(255,255,255,.03), rgba(255,255,255,.01));
position: relative;
}#gates-analytics-block .ga-step .num {
width: 32px;
height: 32px;
display: grid;
place-items: center;
border-radius: 999px;
background: rgba(124,77,255,.16);
border: 1px solid rgba(124,77,255,.28);
color: #fff;
font-weight: 700;
margin-bottom: 10px;
}#gates-analytics-block .ga-step h4 {
margin: 0 0 6px;
font-size: 15px;
color: #fff;
}#gates-analytics-block .ga-step p {
font-size: 13px;
color: var(--muted);
}#gates-analytics-block .ga-step:not(:last-child):after {
content: "→";
position: absolute;
right: -9px;
top: 50%;
transform: translateY(-50%);
width: 22px;
height: 22px;
display: grid;
place-items: center;
border-radius: 999px;
background: var(--bg);
color: var(--gold);
font-weight: 800;
border: 1px solid var(--border);
}#gates-analytics-block .ga-table {
width: 100%;
border-collapse: collapse;
margin-top: 14px;
overflow: hidden;
border-radius: 12px;
}#gates-analytics-block .ga-table th,
#gates-analytics-block .ga-table td {
text-align: left;
padding: 12px 14px;
border-bottom: 1px solid rgba(255,255,255,.06);
font-size: 14px;
}#gates-analytics-block .ga-table th {
color: #fff;
background: rgba(255,255,255,.03);
font-weight: 700;
}#gates-analytics-block .ga-table td {
color: var(--muted);
}#gates-analytics-block .ga-table tr:last-child td {
border-bottom: 0;
}#gates-analytics-block .ga-foot {
margin-top: 18px;
color: var(--muted);
font-size: 12px;
}#gates-analytics-block .ga-mix-block {
margin-top: 16px;
}#gates-analytics-block .ga-mix-bar {
display: flex;
width: 100%;
height: 56px;
overflow: hidden;
border-radius: 14px;
border: 1px solid var(--border);
background: rgba(255,255,255,.03);
box-shadow: inset 0 0 0 1px rgba(255,255,255,.02);
}#gates-analytics-block .ga-mix-seg {
display: flex;
align-items: center;
justify-content: center;
font-size: 13px;
font-weight: 800;
color: #fff;
letter-spacing: .02em;
min-width: 0;
white-space: nowrap;
}#gates-analytics-block .seg-common {
background: linear-gradient(90deg, rgba(38,198,218,.9), rgba(38,198,218,.78));
}#gates-analytics-block .seg-mid {
background: linear-gradient(90deg, rgba(124,77,255,.95), rgba(124,77,255,.8));
}#gates-analytics-block .seg-high {
background: linear-gradient(90deg, rgba(239,83,80,.95), rgba(239,83,80,.82));
}#gates-analytics-block .seg-extreme {
background: linear-gradient(90deg, rgba(251,192,45,.98), rgba(251,192,45,.85));
color: #161616;
}#gates-analytics-block .ga-mix-grid {
display: grid;
gap: 12px;
margin-top: 16px;
}#gates-analytics-block .ga-mix-item {
padding: 14px;
border-radius: 14px;
background: rgba(255,255,255,.025);
border: 1px solid rgba(255,255,255,.05);
}#gates-analytics-block .ga-mix-head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
margin-bottom: 6px;
}#gates-analytics-block .ga-mix-label {
display: inline-flex;
align-items: center;
gap: 8px;
color: #fff;
font-weight: 700;
font-size: 14px;
}#gates-analytics-block .ga-mix-head strong {
color: #fff;
font-size: 14px;
flex: 0 0 auto;
}#gates-analytics-block .ga-mix-desc {
color: var(--muted);
font-size: 13px;
line-height: 1.55;
}@media (max-width: 1024px) {
#gates-analytics-block .span-5,
#gates-analytics-block .span-6,
#gates-analytics-block .span-7 {
grid-column: span 12;
}
}@media (max-width: 760px) {
#gates-analytics-block {
padding: 16px;
border-radius: 14px;
}#gates-analytics-block .ga-flow {
grid-template-columns: 1fr;
}#gates-analytics-block .ga-step:not(:last-child):after {
content: "↓";
left: 50%;
top: auto;
bottom: -11px;
transform: translateX(-50%);
}#gates-analytics-block .ga-chart-wrap {
height: 260px;
}#gates-analytics-block .ga-mix-seg {
font-size: 11px;
}#gates-analytics-block .ga-mix-head {
align-items: flex-start;
}
}
Symbol Value Comparison
Higher-tier symbols matter, but big outcomes still lean heavily on tumbles and multipliers.
Crown
Hourglass
Ring
Goblet
Red Gem
Purple Gem
Multiplier Mix
Low-value orbs appear most often, while top-end drops stay rare and define the slot’s spike potential.
Common 2x–5x
58%
Most frequent orb range. Keeps sequences alive but rarely changes a session on its own.
Mid 10x–25x
24%
Solid support range. Helps bonus rounds build, especially when tumbles connect.
High 50x–100x
13%
Major swing zone. These are the drops that can flip a poor run into a meaningful hit.
Extreme 250x–500x
5%
Rare headline events. These create the huge screenshots, clips, and outlier payouts.
Super Scatter Flow
This mechanic is what changes the feel of the game from simple spin resolution to event-driven volatility.
1
Base Spin
Scatter pays on a 6x5 layout. Wins trigger tumbles, which can extend a single wager into multiple outcomes.
2
Scatter Trigger
Four or more scatters unlock free spins. Super Scatter combinations can also create instant, much larger payouts.
3
Multiplier Build
During the feature, winning multipliers stack into a running total, increasing the upside of later hits.
4
Retrigger Runway
Extra scatters add more spins, extending the window for a large multiplier sequence to connect.
Volatility Curve
A sample 100-spin style session curve. This shows how long drawdowns can suddenly reverse with one strong sequence.
Orb Value vs Relative Frequency
The higher the orb value, the less often it tends to appear. That imbalance is the core of the game’s risk profile.
Quick Technical Table
A compact summary block for review pages and comparison layouts.
| Metric | Value | Review Angle |
|---|
| Base RTP | 96.50% | Competitive, but variance dominates short sessions |
| Volatility Profile | Extreme | Not built for steady bankroll preservation |
| Feature Identity | Super Scatter + persistent multipliers | High event value, strong streamer appeal |
| Best Use Case | Demo testing and risk-aware bonus chasing | Ideal for analysis before real-money play |
(function () {
const root = document.getElementById('gates-analytics-block');
if (!root) return;const css = getComputedStyle(root);
const COLORS = {
text: css.getPropertyValue('--text').trim(),
muted: css.getPropertyValue('--muted').trim(),
border: css.getPropertyValue('--border').trim(),
gold: css.getPropertyValue('--gold').trim(),
purple: css.getPropertyValue('--purple').trim(),
crimson: css.getPropertyValue('--crimson').trim(),
teal: css.getPropertyValue('--teal').trim(),
orange: css.getPropertyValue('--orange').trim(),
bg: css.getPropertyValue('--bg').trim()
};function fitCanvas(canvas) {
const ratio = window.devicePixelRatio || 1;
const rect = canvas.getBoundingClientRect();
canvas.width = Math.round(rect.width * ratio);
canvas.height = Math.round(rect.height * ratio);
const ctx = canvas.getContext('2d');
ctx.setTransform(ratio, 0, 0, ratio, 0, 0);
return { ctx, width: rect.width, height: rect.height };
}function roundRect(ctx, x, y, w, h, r, fillStyle) {
ctx.beginPath();
ctx.moveTo(x + r, y);
ctx.arcTo(x + w, y, x + w, y + h, r);
ctx.arcTo(x + w, y + h, x, y + h, r);
ctx.arcTo(x, y + h, x, y, r);
ctx.arcTo(x, y, x + w, y, r);
ctx.closePath();
ctx.fillStyle = fillStyle;
ctx.fill();
}function drawAxes(ctx, w, h, pad, yTicks, yMax) {
ctx.strokeStyle = COLORS.border;
ctx.lineWidth = 1;for (let i = 0; i <= yTicks; i++) {
const y = pad.t + ((h - pad.t - pad.b) / yTicks) * i;
ctx.beginPath();
ctx.moveTo(pad.l, y);
ctx.lineTo(w - pad.r, y);
ctx.stroke();
}ctx.beginPath();
ctx.moveTo(pad.l, pad.t);
ctx.lineTo(pad.l, h - pad.b);
ctx.lineTo(w - pad.r, h - pad.b);
ctx.stroke();ctx.fillStyle = COLORS.muted;
ctx.font = '12px system-ui, sans-serif';
ctx.textAlign = 'right';
ctx.textBaseline = 'middle';for (let i = 0; i {
const y = pad.t + slotH * i + (slotH - barH) / 2;
const x = pad.l;
const w = (val / max) * innerW;roundRect(ctx, x, y, innerW, barH, 12, 'rgba(255,255,255,.035)');
roundRect(ctx, x, y, w, barH, 12, colors[i]);ctx.textAlign = 'right';
ctx.fillStyle = COLORS.text;
ctx.font = '13px system-ui, sans-serif';
ctx.fillText(labels[i], pad.l - 14, y + barH / 2);ctx.textAlign = 'left';
ctx.fillStyle = '#fff';
ctx.font = '12px system-ui, sans-serif';
ctx.fillText(val + 'x', Math.min(x + w + 8, width - 45), y + barH / 2);
});
}function drawLineChart(canvas, labels, values) {
const { ctx, width, height } = fitCanvas(canvas);
const pad = { t: 18, r: 16, b: 42, l: 46 };
const max = Math.max.apply(null, values) * 1.12;
const min = Math.min.apply(null, values) * 0.92;
const innerW = width - pad.l - pad.r;
const innerH = height - pad.t - pad.b;ctx.strokeStyle = COLORS.border;
ctx.lineWidth = 1;for (let i = 0; i {
const x = mapX(i);
const y = mapY(v);
if (i === 0) ctx.moveTo(x, y);
else ctx.lineTo(x, y);
});
ctx.lineTo(mapX(values.length - 1), height - pad.b);
ctx.lineTo(mapX(0), height - pad.b);
ctx.closePath();
ctx.fillStyle = gradient;
ctx.fill();ctx.beginPath();
values.forEach((v, i) => {
const x = mapX(i);
const y = mapY(v);
if (i === 0) ctx.moveTo(x, y);
else ctx.lineTo(x, y);
});
ctx.strokeStyle = COLORS.gold;
ctx.lineWidth = 2.5;
ctx.stroke();values.forEach((v, i) => {
const x = mapX(i);
const y = mapY(v);
ctx.beginPath();
ctx.arc(x, y, 3.5, 0, Math.PI * 2);
ctx.fillStyle = i === 15 ? COLORS.crimson : '#fff';
ctx.fill();
ctx.strokeStyle = COLORS.gold;
ctx.lineWidth = 1.5;
ctx.stroke();
});ctx.fillStyle = COLORS.muted;
ctx.font = '12px system-ui, sans-serif';
ctx.textAlign = 'center';
ctx.textBaseline = 'top';const tickIndexes = [0, 4, 8, 12, 16, 19];
tickIndexes.forEach((i) => {
ctx.fillText(labels[i], mapX(i), height - pad.b + 10);
});
}function drawScatterChart(canvas, xs, ys, labels) {
const { ctx, width, height } = fitCanvas(canvas);
const pad = { t: 18, r: 16, b: 42, l: 52 };
const innerW = width - pad.l - pad.r;
const innerH = height - pad.t - pad.b;const xMin = Math.min.apply(null, xs);
const xMax = Math.max.apply(null, xs);
const yMin = 0;
const yMax = Math.max.apply(null, ys) * 1.12;ctx.strokeStyle = COLORS.border;
ctx.lineWidth = 1;for (let i = 0; i {
const x = mapX(xVal);
const y = mapY(ys[i]);
const r = 7 + i * 1.4;ctx.beginPath();
ctx.arc(x, y, r, 0, Math.PI * 2);
ctx.fillStyle = pointColors[i];
ctx.globalAlpha = 0.85;
ctx.fill();
ctx.globalAlpha = 1;
ctx.strokeStyle = 'rgba(255,255,255,.9)';
ctx.lineWidth = 1;
ctx.stroke();ctx.fillStyle = COLORS.text;
ctx.font = '12px system-ui, sans-serif';
ctx.textAlign = 'center';
ctx.textBaseline = 'bottom';
ctx.fillText(labels[i], x, y - r - 6);
});ctx.fillStyle = COLORS.muted;
ctx.font = '12px system-ui, sans-serif';
ctx.textAlign = 'center';
ctx.textBaseline = 'top';xs.forEach((xVal) => {
ctx.fillText(xVal + 'x', mapX(xVal), height - pad.b + 10);
});ctx.textAlign = 'right';
ctx.textBaseline = 'middle';
for (let i = 0; i <= 5; i++) {
const val = Math.round(yMax - (yMax / 5) * i);
const y = pad.t + (innerH / 5) * i;
ctx.fillText(val + '%', pad.l - 8, y);
}
}const symbolLabels = ['Crown', 'Hourglass', 'Ring', 'Goblet', 'Red Gem', 'Purple Gem'];
const symbolValues = [50, 25, 15, 12, 10, 8];
const symbolColors = ['#fbc02d', '#26c6da', '#ef5350', '#7c4dff', '#ff7043', '#ab47bc'];const volatilityLabels = [
'0', '5', '10', '15', '20', '25', '30', '35', '40', '45',
'50', '55', '60', '65', '70', '75', '80', '85', '90', '95'
];
const volatilityValues = [100, 95, 90, 86, 82, 76, 70, 66, 61, 57, 52, 47, 42, 39, 35, 120, 110, 104, 98, 94];const orbX = [2, 5, 10, 25, 50, 100, 250, 500];
const orbY = [39, 31, 18, 10, 5, 3, 1.2, 0.4];
const orbLabels = ['2x', '5x', '10x', '25x', '50x', '100x', '250x', '500x'];function renderAll() {
drawBarChart(root.querySelector('#gaSymbolChart'), symbolLabels, symbolValues, symbolColors);
drawLineChart(root.querySelector('#gaVolatilityChart'), volatilityLabels, volatilityValues);
drawScatterChart(root.querySelector('#gaScatterChart'), orbX, orbY, orbLabels);
}renderAll();let resizeTimer;
window.addEventListener('resize', function () {
clearTimeout(resizeTimer);
resizeTimer = setTimeout(renderAll, 120);
});
})();