Create a 16:9 widescreen UI scene showing the entire “Double Spin Loot Box” sequence for Nioplay. Only include the loot box spin carousel, the “LOOT BOX SPIN” label, the multiplier slider, the “MULTIPLIER” label, one SPIN button, and the final prize pop-up. No extra text.
Browse files=====================
LOOT BOX SPIN — ANIMATED STATE
=====================
At the top, show the loot box carousel in a dynamic animation state. Depict the boxes in mid-roll, showing the exact visual cues of a fast horizontal spin decelerating into a final snap-to-center.
Loot Box Carousel Structure:
- A long horizontal row of glowing rarity boxes.
- Each box is a square neon-outline frame with colors representing rarity: green, blue, purple, gold.
- Each box contains a small cube icon in the center.
- Use 10–14 boxes in view.
Animation Detail (Very Important):
- Boxes near the edges of the screen should appear stretched, with horizontal direction blur and subtle luminous streaks trailing behind them.
- Boxes closer to the center should appear progressively sharper.
- One box must be perfectly aligned inside a vertical selection window at the exact center:
- The selected box must appear crisp, with zero motion blur.
- It should be slightly enlarged (as if it just completed its final easing motion).
- The outline glow should intensify, radiating a smooth neon-orange bloom.
- Add a tiny forward-lean “settle snap” effect: the box visually tilts forward by a few degrees, suggesting the physical snap of landing.
- Boxes behind the selected one should be slightly offset or ghosted, indicating the tail end of the spin.
- The selection window:
- A thin neon-orange (#FF8C00) rectangular frame.
- Soft pulsing glow.
- Transparent center.
- Must visually lock the winning box in place.
Above the carousel, place the label “LOOT BOX SPIN”.
=====================
MULTIPLIER SLIDER — SECOND SPIN ANIMATION
=====================
Directly under the loot box track, show the multiplier slider in mid-spin animation. This is a horizontal meter-like strip with glowing multiplier pills.
Multiplier Pills:
- ×1, ×1.25, ×1.5, ×2, ×3, ×5 (repeat sequence twice for length).
- Each pill is a rounded rectangular glassmorphism capsule.
- Text is warm white or soft gold with faint glow.
- Pills float slightly above the track.
Animation Detail (Very Important):
- Pills not in the center should be shown with clear horizontal motion blur, slightly stretched, as if scrolling rapidly past the viewer.
- Pills should have streaking light trails extending horizontally, giving a high-speed rolling effect.
- The pills closer to the center should show less blur, transitioning into the final chosen multiplier.
- The selected multiplier pill must:
- Sit perfectly inside a smaller centered selection frame matching the neon-orange aesthetic.
- Be scaled up slightly (subtle enlargement).
- Glow much brighter than the others, with a halo that pulses outward.
- Appear perfectly sharp and in freeze-frame clarity.
- The slider track:
- Thin translucent LED bar with reflective highlights.
- Slight gold/orange underglow.
Above it, place the label “MULTIPLIER”.
=====================
SPIN BUTTON
=====================
Below both tracks:
- A single pill-shaped SPIN button.
- Gold-to-neon-orange gradient.
- Soft outer glow, subtle inner light.
- Label: “SPIN”.
- No additional UI text.
=====================
PRIZE POP-UP — FINAL RESULT MOMENT
=====================
Display a reward pop-up floating over the interface to show the end of the animation sequence.
Pop-up Details:
- A glassmorphism panel with neon-orange rim light and bloom.
- Inside, show the payout number ONLY (no text)—for example “×5” or a currency amount.
- Surround it with floating SC coins, light streaks, small particles, and a faint explosion of glow as if the pop-up just appeared.
- The pop-up must feel like it just animated in: rising slightly from below, glowing intensely for a moment, with subtle confetti sparks.
=====================
STYLE REQUIREMENTS
=====================
- Match Nioplay’s dark neon aesthetic: neon orange, gold highlights, black/charcoal base.
- Use soft volumetric lighting and subtle particle effects.
- No characters, no extra icons, no paragraphs of text.
- ONLY include:
- The loot box carousel
- “LOOT BOX SPIN”
- The multiplier slider
- “MULTIPLIER”
- SPIN button
- The prize pop-up
- Everything must be perfectly centered and aligned in a clean 16:9 frame.
|
@@ -1,10 +1,13 @@
|
|
| 1 |
---
|
| 2 |
-
title: Neon Loot Spinner Extravaganza
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
|
|
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
-
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
title: Neon Loot Spinner Extravaganza 🎰
|
| 3 |
+
colorFrom: gray
|
| 4 |
+
colorTo: green
|
| 5 |
+
emoji: 🐳
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
+
tags:
|
| 9 |
+
- deepsite-v3
|
| 10 |
---
|
| 11 |
|
| 12 |
+
# Welcome to your new DeepSite project!
|
| 13 |
+
This project was created with [DeepSite](https://huggingface.co/deepsite).
|
|
@@ -1,19 +1,66 @@
|
|
| 1 |
-
<!
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
</
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>Neon Loot Spinner</title>
|
| 7 |
+
<link rel="stylesheet" href="style.css">
|
| 8 |
+
<script src="https://cdn.tailwindcss.com"></script>
|
| 9 |
+
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
| 10 |
+
<script src="https://unpkg.com/feather-icons"></script>
|
| 11 |
+
<style>
|
| 12 |
+
@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;500;700&display=swap');
|
| 13 |
+
body {
|
| 14 |
+
font-family: 'Orbitron', sans-serif;
|
| 15 |
+
background: radial-gradient(ellipse at center, #0f0f15 0%, #000000 100%);
|
| 16 |
+
overflow: hidden;
|
| 17 |
+
}
|
| 18 |
+
</style>
|
| 19 |
+
</head>
|
| 20 |
+
<body class="h-screen w-full flex flex-col items-center justify-center overflow-hidden">
|
| 21 |
+
<div class="container mx-auto w-full max-w-4xl aspect-video relative">
|
| 22 |
+
<!-- Loot Box SPIN Section -->
|
| 23 |
+
<div class="relative h-1/2 w-full">
|
| 24 |
+
<h2 class="text-orange-300 text-xl text-center mb-4 text-shadow-orange">LOOT BOX SPIN</h2>
|
| 25 |
+
<div id="spinTrack" class="absolute h-32 w-full overflow-hidden">
|
| 26 |
+
<div id="lootBoxes" class="absolute h-full flex transition-transform duration-3000 ease-out">
|
| 27 |
+
<!-- Loot boxes will be generated by JS -->
|
| 28 |
+
</div>
|
| 29 |
+
<div class="selection-window absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"></div>
|
| 30 |
+
</div>
|
| 31 |
+
</div>
|
| 32 |
+
|
| 33 |
+
<!-- Multiplier Section -->
|
| 34 |
+
<div class="relative h-1/4 w-full pt-8">
|
| 35 |
+
<h2 class="text-orange-300 text-xl text-center mb-4 text-shadow-orange">MULTIPLIER</h2>
|
| 36 |
+
<div id="multiplierTrack" class="relative h-12 w-full overflow-hidden">
|
| 37 |
+
<div id="multipliers" class="absolute h-full flex items-center">
|
| 38 |
+
<!-- Multipliers will be generated by JS -->
|
| 39 |
+
</div>
|
| 40 |
+
<div class="selection-window absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 h-16"></div>
|
| 41 |
+
</div>
|
| 42 |
+
</div>
|
| 43 |
+
|
| 44 |
+
<!-- Spin Button -->
|
| 45 |
+
<div class="relative h-1/4 w-full flex items-center justify-center pt-8">
|
| 46 |
+
<button id="spinButton" class="spin-button relative px-12 py-4 rounded-full text-xl font-bold text-white">
|
| 47 |
+
SPIN
|
| 48 |
+
</button>
|
| 49 |
+
</div>
|
| 50 |
+
|
| 51 |
+
<!-- Prize Popup -->
|
| 52 |
+
<div id="prizePopup" class="prize-popup hidden absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2">
|
| 53 |
+
<div id="prizeValue" class="text-6xl font-bold text-yellow-300 text-shadow-gold"></div>
|
| 54 |
+
</div>
|
| 55 |
+
</div>
|
| 56 |
+
|
| 57 |
+
<script src="script.js"></script>
|
| 58 |
+
<script>
|
| 59 |
+
feather.replace();
|
| 60 |
+
// Initialize the animations
|
| 61 |
+
initLootBoxes();
|
| 62 |
+
initMultipliers();
|
| 63 |
+
</script>
|
| 64 |
+
<script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
|
| 65 |
+
</body>
|
| 66 |
+
</html>
|
|
@@ -0,0 +1,144 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Loot Box Generator
|
| 2 |
+
function initLootBoxes() {
|
| 3 |
+
const lootBoxes = document.getElementById('lootBoxes');
|
| 4 |
+
const rarities = ['common', 'rare', 'epic', 'legendary'];
|
| 5 |
+
const colors = {
|
| 6 |
+
'common': '#2ecc71',
|
| 7 |
+
'rare': '#3498db',
|
| 8 |
+
'epic': '#9b59b6',
|
| 9 |
+
'legendary': '#f1c40f'
|
| 10 |
+
};
|
| 11 |
+
|
| 12 |
+
// Create 24 loot boxes (12 visible, 12 for seamless looping)
|
| 13 |
+
for (let i = 0; i < 24; i++) {
|
| 14 |
+
const rarity = rarities[Math.floor(Math.random() * rarities.length)];
|
| 15 |
+
const box = document.createElement('div');
|
| 16 |
+
box.className = `loot-box ${rarity} flex-shrink-0`;
|
| 17 |
+
box.innerHTML = `<i data-feather="box" stroke="${colors[rarity]}"></i>`;
|
| 18 |
+
lootBoxes.appendChild(box);
|
| 19 |
+
}
|
| 20 |
+
|
| 21 |
+
// Animate the loot boxes
|
| 22 |
+
let position = 0;
|
| 23 |
+
let speed = 20;
|
| 24 |
+
let deceleration = 0.95;
|
| 25 |
+
let selectedBox = Math.floor(Math.random() * 12) + 6; // Random box between 6-18
|
| 26 |
+
|
| 27 |
+
const animate = () => {
|
| 28 |
+
position += speed;
|
| 29 |
+
speed *= deceleration;
|
| 30 |
+
|
| 31 |
+
// Stop when we reach the selected box
|
| 32 |
+
if (speed < 0.5 && Math.abs(position % 120) < 1) {
|
| 33 |
+
// Select the center box
|
| 34 |
+
lootBoxes.style.transform = `translateX(calc(-${selectedBox * 110}px + 50%))`;
|
| 35 |
+
|
| 36 |
+
// Highlight the selected box
|
| 37 |
+
const boxes = document.querySelectorAll('.loot-box');
|
| 38 |
+
boxes.forEach((box, index) => {
|
| 39 |
+
if (index === selectedBox) {
|
| 40 |
+
box.classList.add('selected');
|
| 41 |
+
|
| 42 |
+
// Show prize popup after slight delay
|
| 43 |
+
setTimeout(() => {
|
| 44 |
+
showPrize(selectedBox);
|
| 45 |
+
}, 800);
|
| 46 |
+
} else {
|
| 47 |
+
box.style.filter = index < selectedBox - 3 || index > selectedBox + 3 ?
|
| 48 |
+
'blur(3px) opacity(0.5)' : 'blur(1px) opacity(0.8)';
|
| 49 |
+
}
|
| 50 |
+
});
|
| 51 |
+
} else {
|
| 52 |
+
lootBoxes.style.transform = `translateX(calc(-${position % 2400}px + 50%))`;
|
| 53 |
+
requestAnimationFrame(animate);
|
| 54 |
+
}
|
| 55 |
+
};
|
| 56 |
+
|
| 57 |
+
animate();
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
// Multiplier Generator
|
| 61 |
+
function initMultipliers() {
|
| 62 |
+
const multipliers = document.getElementById('multipliers');
|
| 63 |
+
multiplierValues = ['×1', '×1.25', '×1.5', '×2', '×3', '×5', '×1', '×1.25', '×1.5', '×2', '×3', '×5'];
|
| 64 |
+
|
| 65 |
+
multiplierValues.forEach(value => {
|
| 66 |
+
const pill = document.createElement('div');
|
| 67 |
+
pill.className = 'multiplier-pill flex-shrink-0';
|
| 68 |
+
pill.textContent = value;
|
| 69 |
+
multipliers.appendChild(pill);
|
| 70 |
+
});
|
| 71 |
+
|
| 72 |
+
// Animate multipliers
|
| 73 |
+
let position = 0;
|
| 74 |
+
let speed = 15;
|
| 75 |
+
let deceleration = 0.93;
|
| 76 |
+
let selectedMultiplier = Math.floor(Math.random() * 6) + 3; // Random between 3-8
|
| 77 |
+
|
| 78 |
+
const animateMultipliers = () => {
|
| 79 |
+
position += speed;
|
| 80 |
+
speed *= deceleration;
|
| 81 |
+
|
| 82 |
+
if (speed < 0.5 && Math.abs(position % 480) < 1) {
|
| 83 |
+
// Select the center multiplier
|
| 84 |
+
multipliers.style.transform = `translateX(calc(-${selectedMultiplier * 100}px + 50%))`;
|
| 85 |
+
|
| 86 |
+
// Highlight the selected multiplier
|
| 87 |
+
const pills = document.querySelectorAll('.multiplier-pill');
|
| 88 |
+
pills.forEach((pill, index) => {
|
| 89 |
+
if (index === selectedMultiplier) {
|
| 90 |
+
pill.classList.add('selected');
|
| 91 |
+
} else {
|
| 92 |
+
pill.style.filter = index < selectedMultiplier - 2 || index > selectedMultiplier + 2 ?
|
| 93 |
+
'blur(3px) opacity(0.5)' : 'blur(1px) opacity(0.8)';
|
| 94 |
+
}
|
| 95 |
+
});
|
| 96 |
+
} else {
|
| 97 |
+
multipliers.style.transform = `translateX(calc(-${position % 1200}px + 50%))`;
|
| 98 |
+
requestAnimationFrame(animateMultipliers);
|
| 99 |
+
}
|
| 100 |
+
};
|
| 101 |
+
|
| 102 |
+
animateMultipliers();
|
| 103 |
+
}
|
| 104 |
+
|
| 105 |
+
// Show prize popup
|
| 106 |
+
function showPrize(boxIndex) {
|
| 107 |
+
const prizeValues = ['×1', '×1.5', '×2', '×3', '×5'];
|
| 108 |
+
const prizePopup = document.getElementById('prizePopup');
|
| 109 |
+
const prizeValue = document.getElementById('prizeValue');
|
| 110 |
+
|
| 111 |
+
// Determine prize based on box index (just for demo)
|
| 112 |
+
const prize = prizeValues[boxIndex % prizeValues.length];
|
| 113 |
+
prizeValue.textContent = prize;
|
| 114 |
+
|
| 115 |
+
prizePopup.classList.remove('hidden');
|
| 116 |
+
|
| 117 |
+
// Add confetti effect
|
| 118 |
+
setTimeout(() => {
|
| 119 |
+
prizePopup.style.animation = 'none';
|
| 120 |
+
void prizePopup.offsetWidth; // Trigger reflow
|
| 121 |
+
prizePopup.style.animation = 'rise-up 0.5s ease-out, glow-intense 1s ease-in-out';
|
| 122 |
+
}, 50);
|
| 123 |
+
}
|
| 124 |
+
|
| 125 |
+
// Spin button handler
|
| 126 |
+
document.getElementById('spinButton').addEventListener('click', () => {
|
| 127 |
+
// Reset animations
|
| 128 |
+
document.querySelectorAll('.loot-box, .multiplier-pill').forEach(el => {
|
| 129 |
+
el.classList.remove('selected');
|
| 130 |
+
el.style.filter = '';
|
| 131 |
+
});
|
| 132 |
+
|
| 133 |
+
// Hide prize popup
|
| 134 |
+
document.getElementById('prizePopup').classList.add('hidden');
|
| 135 |
+
|
| 136 |
+
// Restart animations
|
| 137 |
+
document.getElementById('lootBoxes').style.transform = 'translateX(0)';
|
| 138 |
+
document.getElementById('multipliers').style.transform = 'translateX(0)';
|
| 139 |
+
|
| 140 |
+
setTimeout(() => {
|
| 141 |
+
initLootBoxes();
|
| 142 |
+
initMultipliers();
|
| 143 |
+
}, 100);
|
| 144 |
+
});
|
|
@@ -1,28 +1,129 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
}
|
| 5 |
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
margin-top: 0;
|
| 9 |
}
|
| 10 |
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
}
|
| 17 |
|
| 18 |
-
.
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
padding: 16px;
|
| 22 |
-
border: 1px solid lightgray;
|
| 23 |
-
border-radius: 16px;
|
| 24 |
}
|
| 25 |
|
| 26 |
-
.
|
| 27 |
-
|
|
|
|
| 28 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/* Base styles */
|
| 2 |
+
.text-shadow-orange {
|
| 3 |
+
text-shadow: 0 0 8px rgba(255, 140, 0, 0.7);
|
| 4 |
}
|
| 5 |
|
| 6 |
+
.text-shadow-gold {
|
| 7 |
+
text-shadow: 0 0 12px rgba(255, 215, 0, 0.8);
|
|
|
|
| 8 |
}
|
| 9 |
|
| 10 |
+
/* Loot Box Styles */
|
| 11 |
+
.loot-box {
|
| 12 |
+
width: 80px;
|
| 13 |
+
height: 80px;
|
| 14 |
+
margin: 0 15px;
|
| 15 |
+
border-radius: 8px;
|
| 16 |
+
display: flex;
|
| 17 |
+
align-items: center;
|
| 18 |
+
justify-content: center;
|
| 19 |
+
position: relative;
|
| 20 |
+
transition: transform 0.3s ease, filter 0.3s ease;
|
| 21 |
}
|
| 22 |
|
| 23 |
+
.loot-box.common {
|
| 24 |
+
border: 2px solid #2ecc71;
|
| 25 |
+
box-shadow: 0 0 15px rgba(46, 204, 113, 0.5);
|
|
|
|
|
|
|
|
|
|
| 26 |
}
|
| 27 |
|
| 28 |
+
.loot-box.rare {
|
| 29 |
+
border: 2px solid #3498db;
|
| 30 |
+
box-shadow: 0 0 15px rgba(52, 152, 219, 0.5);
|
| 31 |
}
|
| 32 |
+
|
| 33 |
+
.loot-box.epic {
|
| 34 |
+
border: 2px solid #9b59b6;
|
| 35 |
+
box-shadow: 0 0 15px rgba(155, 89, 182, 0.5);
|
| 36 |
+
}
|
| 37 |
+
|
| 38 |
+
.loot-box.legendary {
|
| 39 |
+
border: 2px solid #f1c40f;
|
| 40 |
+
box-shadow: 0 0 20px rgba(241, 196, 15, 0.7);
|
| 41 |
+
}
|
| 42 |
+
|
| 43 |
+
.loot-box.selected {
|
| 44 |
+
transform: scale(1.2) perspective(500px) rotateX(5deg);
|
| 45 |
+
z-index: 10;
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
/* Selection Window */
|
| 49 |
+
.selection-window {
|
| 50 |
+
width: 100px;
|
| 51 |
+
height: 100px;
|
| 52 |
+
border: 2px solid #FF8C00;
|
| 53 |
+
border-radius: 12px;
|
| 54 |
+
box-shadow: 0 0 20px rgba(255, 140, 0, 0.7);
|
| 55 |
+
pointer-events: none;
|
| 56 |
+
opacity: 0.8;
|
| 57 |
+
animation: pulse-glow 2s infinite;
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
/* Multiplier Styles */
|
| 61 |
+
.multiplier-pill {
|
| 62 |
+
min-width: 80px;
|
| 63 |
+
padding: 8px 16px;
|
| 64 |
+
margin: 0 10px;
|
| 65 |
+
border-radius: 20px;
|
| 66 |
+
background: rgba(255, 255, 255, 0.1);
|
| 67 |
+
backdrop-filter: blur(5px);
|
| 68 |
+
border: 1px solid rgba(255, 215, 0, 0.3);
|
| 69 |
+
color: white;
|
| 70 |
+
font-weight: bold;
|
| 71 |
+
text-align: center;
|
| 72 |
+
transition: all 0.3s ease;
|
| 73 |
+
}
|
| 74 |
+
|
| 75 |
+
.multiplier-pill.selected {
|
| 76 |
+
background: linear-gradient(135deg, rgba(255, 140, 0, 0.8), rgba(255, 215, 0, 0.8));
|
| 77 |
+
transform: scale(1.3);
|
| 78 |
+
box-shadow: 0 0 25px rgba(255, 215, 0, 0.7);
|
| 79 |
+
}
|
| 80 |
+
|
| 81 |
+
/* Spin Button */
|
| 82 |
+
.spin-button {
|
| 83 |
+
background: linear-gradient(135deg, #f1c40f, #FF8C00);
|
| 84 |
+
box-shadow: 0 0 20px rgba(255, 140, 0, 0.5);
|
| 85 |
+
transition: all 0.3s ease;
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
.spin-button:hover {
|
| 89 |
+
transform: scale(1.05);
|
| 90 |
+
box-shadow: 0 0 30px rgba(255, 140, 0, 0.8);
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
+
.spin-button:active {
|
| 94 |
+
transform: scale(0.95);
|
| 95 |
+
}
|
| 96 |
+
|
| 97 |
+
/* Prize Popup */
|
| 98 |
+
.prize-popup {
|
| 99 |
+
width: 200px;
|
| 100 |
+
height: 200px;
|
| 101 |
+
background: rgba(0, 0, 0, 0.8);
|
| 102 |
+
backdrop-filter: blur(10px);
|
| 103 |
+
border-radius: 20px;
|
| 104 |
+
border: 2px solid #FF8C00;
|
| 105 |
+
box-shadow: 0 0 40px rgba(255, 140, 0, 0.8);
|
| 106 |
+
display: flex;
|
| 107 |
+
align-items: center;
|
| 108 |
+
justify-content: center;
|
| 109 |
+
z-index: 100;
|
| 110 |
+
animation: rise-up 0.5s ease-out, glow-intense 1s ease-in-out;
|
| 111 |
+
}
|
| 112 |
+
|
| 113 |
+
/* Animations */
|
| 114 |
+
@keyframes pulse-glow {
|
| 115 |
+
0% { box-shadow: 0 0 20px rgba(255, 140, 0, 0.7); }
|
| 116 |
+
50% { box-shadow: 0 0 30px rgba(255, 140, 0, 0.9); }
|
| 117 |
+
100% { box-shadow: 0 0 20px rgba(255, 140, 0, 0.7); }
|
| 118 |
+
}
|
| 119 |
+
|
| 120 |
+
@keyframes rise-up {
|
| 121 |
+
from { transform: translate(-50%, -30%); opacity: 0; }
|
| 122 |
+
to { transform: translate(-50%, -50%); opacity: 1; }
|
| 123 |
+
}
|
| 124 |
+
|
| 125 |
+
@keyframes glow-intense {
|
| 126 |
+
0% { box-shadow: 0 0 20px rgba(255, 140, 0, 0.7); }
|
| 127 |
+
50% { box-shadow: 0 0 60px rgba(255, 215, 0, 0.9); }
|
| 128 |
+
100% { box-shadow: 0 0 40px rgba(255, 140, 0, 0.8); }
|
| 129 |
+
}
|