| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Grand Opening Curtain Raiser</title> |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
| <style> |
| * { |
| margin: 0; |
| padding: 0; |
| box-sizing: border-box; |
| } |
| |
| body { |
| background-color: #000; |
| overflow: hidden; |
| font-family: 'Arial', sans-serif; |
| height: 100vh; |
| position: relative; |
| } |
| |
| |
| .curtains { |
| position: absolute; |
| top: 0; |
| left: 0; |
| width: 100%; |
| height: 100%; |
| z-index: 10; |
| display: flex; |
| transition: transform 2s ease-in-out; |
| } |
| |
| .curtain { |
| height: 100%; |
| width: 50%; |
| position: relative; |
| overflow: hidden; |
| box-shadow: 0 0 100px rgba(0, 0, 0, 0.8) inset; |
| } |
| |
| .curtain::before { |
| content: ''; |
| position: absolute; |
| top: 0; |
| width: 100%; |
| height: 100%; |
| background: linear-gradient( |
| to bottom, |
| rgba(122, 14, 18, 1) 0%, |
| rgba(158, 28, 35, 1) 50%, |
| rgba(122, 14, 18, 1) 100% |
| ); |
| box-shadow: 0 0 30px rgba(0, 0, 0, 0.7); |
| } |
| |
| .left-curtain { |
| transform-origin: left center; |
| animation: swayLeft 5s infinite ease-in-out; |
| } |
| |
| .right-curtain { |
| transform-origin: right center; |
| animation: swayRight 5s infinite ease-in-out; |
| } |
| |
| .curtain-fringe { |
| position: absolute; |
| bottom: 0; |
| width: 100%; |
| height: 150px; |
| background: repeating-linear-gradient( |
| 0deg, |
| #8a1b1b, |
| #8a1b1b 5px, |
| #5a0f0f 5px, |
| #5a0f0f 10px |
| ); |
| z-index: 2; |
| } |
| |
| @keyframes swayLeft { |
| 0%, 100% { transform: rotate(-1deg); } |
| 50% { transform: rotate(1deg); } |
| } |
| |
| @keyframes swayRight { |
| 0%, 100% { transform: rotate(1deg); } |
| 50% { transform: rotate(-1deg); } |
| } |
| |
| |
| .curtains.open { |
| transform: translateY(-100%); |
| } |
| |
| |
| .spotlight { |
| position: absolute; |
| width: 300px; |
| height: 300px; |
| border-radius: 50%; |
| background: rgba(255, 255, 255, 0.1); |
| box-shadow: 0 0 200px 150px rgba(255, 255, 255, 0.1); |
| z-index: 1; |
| opacity: 0.8; |
| } |
| |
| |
| .stage { |
| position: absolute; |
| top: 0; |
| left: 0; |
| width: 100%; |
| height: 100%; |
| display: flex; |
| flex-direction: column; |
| justify-content: center; |
| align-items: center; |
| z-index: 5; |
| opacity: 0; |
| transition: opacity 1.5s ease-in-out; |
| transition-delay: 1s; |
| } |
| |
| .stage.show { |
| opacity: 1; |
| } |
| |
| .logo { |
| max-width: 500px; |
| max-height: 300px; |
| object-fit: contain; |
| filter: drop-shadow(0 0 20px rgba(255, 215, 0, 0.8)); |
| transform: scale(0.8); |
| animation: pulse 2s infinite alternate; |
| z-index: 6; |
| } |
| |
| @keyframes pulse { |
| 0% { transform: scale(0.8); } |
| 100% { transform: scale(0.85); } |
| } |
| |
| |
| .confetti { |
| position: absolute; |
| width: 15px; |
| height: 15px; |
| background-color: #f00; |
| opacity: 0; |
| z-index: 8; |
| } |
| |
| .ribbon { |
| position: absolute; |
| height: 100px; |
| width: 20px; |
| background: linear-gradient(to bottom, #f00, #ff0, #0f0, #00f, #f0f); |
| transform-origin: top center; |
| z-index: 7; |
| opacity: 0; |
| } |
| |
| |
| .controls { |
| position: absolute; |
| bottom: 30px; |
| left: 50%; |
| transform: translateX(-50%); |
| z-index: 20; |
| } |
| |
| .open-btn { |
| background: linear-gradient(to bottom, #a83232, #6b1c1c); |
| color: white; |
| border: none; |
| padding: 15px 30px; |
| font-size: 18px; |
| border-radius: 50px; |
| cursor: pointer; |
| box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); |
| transition: all 0.3s ease; |
| font-weight: bold; |
| text-transform: uppercase; |
| letter-spacing: 1px; |
| } |
| |
| .open-btn:hover { |
| transform: translateY(-3px); |
| box-shadow: 0 8px 20px rgba(0, 0, 0, 0.4); |
| } |
| |
| .open-btn:active { |
| transform: translateY(1px); |
| } |
| |
| .open-btn i { |
| margin-right: 10px; |
| } |
| |
| |
| .settings { |
| position: absolute; |
| bottom: 30px; |
| right: 30px; |
| z-index: 20; |
| cursor: pointer; |
| color: #fff; |
| font-size: 24px; |
| opacity: 0.7; |
| transition: all 0.3s ease; |
| } |
| |
| .settings:hover { |
| opacity: 1; |
| transform: rotate(30deg); |
| } |
| |
| .settings-panel { |
| position: absolute; |
| bottom: 70px; |
| right: 30px; |
| background: rgba(0, 0, 0, 0.8); |
| padding: 20px; |
| border-radius: 10px; |
| z-index: 21; |
| display: none; |
| width: 300px; |
| box-shadow: 0 0 20px rgba(0, 0, 0, 0.5); |
| border: 1px solid #333; |
| color: #fff; |
| } |
| |
| .settings-panel h3 { |
| margin-bottom: 15px; |
| color: #fff; |
| text-align: center; |
| } |
| |
| .settings-panel label { |
| display: block; |
| margin-bottom: 8px; |
| } |
| |
| .settings-panel input { |
| width: 100%; |
| margin-bottom: 15px; |
| padding: 8px; |
| border-radius: 5px; |
| border: 1px solid #444; |
| background: #333; |
| color: #fff; |
| } |
| |
| .save-btn { |
| background: #4CAF50; |
| color: white; |
| border: none; |
| padding: 10px 15px; |
| border-radius: 5px; |
| cursor: pointer; |
| width: 100%; |
| } |
| |
| .save-btn:hover { |
| background: #45a049; |
| } |
| |
| |
| .sound-indicator { |
| position: absolute; |
| bottom: 70px; |
| left: 30px; |
| color: white; |
| font-size: 24px; |
| z-index: 20; |
| opacity: 0.7; |
| cursor: pointer; |
| } |
| |
| |
| .stage-lights { |
| position: absolute; |
| top: 0; |
| left: 0; |
| width: 100%; |
| height: 100px; |
| background: linear-gradient(to bottom, rgba(255, 255, 255, 0.2), transparent); |
| z-index: 4; |
| opacity: 0; |
| transition: opacity 1s ease; |
| } |
| |
| .stage-lights.show { |
| opacity: 0.3; |
| } |
| </style> |
| </head> |
| <body> |
| |
| <div class="spotlight" id="spotlight1"></div> |
| <div class="spotlight" id="spotlight2"></div> |
| <div class="spotlight" id="spotlight3"></div> |
|
|
| |
| <div class="stage-lights"></div> |
|
|
| |
| <div class="curtains"> |
| <div class="curtain left-curtain"> |
| <div class="curtain-fringe"></div> |
| </div> |
| <div class="curtain right-curtain"> |
| <div class="curtain-fringe"></div> |
| </div> |
| </div> |
|
|
| |
| <div class="stage"> |
| <img src="https://via.placeholder.com/500x300?text=Your+Logo" alt="Logo" class="logo" id="main-logo"> |
| </div> |
|
|
| |
| <div class="controls"> |
| <button class="open-btn" id="openBtn"><i class="fas fa-play"></i> Start Show</button> |
| </div> |
|
|
| |
| <div class="settings" id="settingsBtn"> |
| <i class="fas fa-cog"></i> |
| </div> |
|
|
| <div class="settings-panel" id="settingsPanel"> |
| <h3>Settings</h3> |
| <label for="logoUrl">Logo URL:</label> |
| <input type="text" id="logoUrl" placeholder="Enter new logo URL"> |
| <button class="save-btn" id="saveBtn">Save Changes</button> |
| </div> |
|
|
| |
| <div class="sound-indicator" id="soundBtn"> |
| <i class="fas fa-volume-up"></i> |
| </div> |
|
|
| <script> |
| document.addEventListener('DOMContentLoaded', function() { |
| const curtains = document.querySelector('.curtains'); |
| const stage = document.querySelector('.stage'); |
| const stageLights = document.querySelector('.stage-lights'); |
| const openBtn = document.getElementById('openBtn'); |
| const settingsBtn = document.getElementById('settingsBtn'); |
| const settingsPanel = document.getElementById('settingsPanel'); |
| const saveBtn = document.getElementById('saveBtn'); |
| const logoUrlInput = document.getElementById('logoUrl'); |
| const mainLogo = document.getElementById('main-logo'); |
| const soundBtn = document.getElementById('soundBtn'); |
| let soundEnabled = true; |
| |
| |
| function moveSpotlights() { |
| const spotlights = [ |
| document.getElementById('spotlight1'), |
| document.getElementById('spotlight2'), |
| document.getElementById('spotlight3') |
| ]; |
| |
| spotlights.forEach((spotlight, index) => { |
| function randomPosition() { |
| const x = Math.random() * window.innerWidth; |
| const y = Math.random() * window.innerHeight; |
| spotlight.style.left = `${x}px`; |
| spotlight.style.top = `${y}px`; |
| |
| |
| const hue = Math.random() * 360; |
| spotlight.style.background = `rgba(${Math.random() * 255}, ${Math.random() * 255}, ${Math.random() * 255}, 0.1)`; |
| spotlight.style.boxShadow = `0 0 200px 150px hsla(${hue}, 100%, 50%, 0.1)`; |
| } |
| |
| randomPosition(); |
| |
| setInterval(randomPosition, 2000 + (index * 1000)); |
| }); |
| } |
| |
| |
| function openCurtains() { |
| curtains.classList.add('open'); |
| stage.classList.add('show'); |
| stageLights.classList.add('show'); |
| |
| if (soundEnabled) { |
| |
| const audio = new Audio('https://assets.mixkit.co/active_storage/sfx/173/173-preview.mp3'); |
| audio.play(); |
| } |
| |
| |
| createConfetti(); |
| createRibbons(); |
| |
| |
| openBtn.disabled = true; |
| openBtn.innerHTML = '<i class="fas fa-check"></i> Show Started'; |
| openBtn.style.background = 'linear-gradient(to bottom, #32a852, #1c6b2c)'; |
| } |
| |
| |
| function createConfetti() { |
| const colors = ['#f44336', '#e91e63', '#9c27b0', '#673ab7', '#3f51b5', '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#4CAF50', '#8BC34A', '#CDDC39', '#FFEB3B', '#FFC107', '#FF9800', '#FF5722']; |
| |
| for (let i = 0; i < 200; i++) { |
| setTimeout(() => { |
| const confetti = document.createElement('div'); |
| confetti.className = 'confetti'; |
| confetti.style.backgroundColor = colors[Math.floor(Math.random() * colors.length)]; |
| confetti.style.left = `${Math.random() * window.innerWidth}px`; |
| confetti.style.top = `-10px`; |
| confetti.style.transform = `rotate(${Math.random() * 360}deg)`; |
| confetti.style.opacity = '1'; |
| |
| |
| if (Math.random() > 0.5) { |
| confetti.style.borderRadius = '50%'; |
| } |
| |
| document.body.appendChild(confetti); |
| |
| |
| const duration = Math.random() * 3000 + 2000; |
| confetti.style.transition = `all ${duration}ms ease-out`; |
| |
| setTimeout(() => { |
| confetti.style.top = `${window.innerHeight + 10}px`; |
| confetti.style.transform = `rotate(${Math.random() * 360}deg) translateX(${Math.random() * 200 - 100}px)`; |
| confetti.style.opacity = '0.5'; |
| |
| |
| setTimeout(() => { |
| confetti.remove(); |
| }, duration); |
| }, 10); |
| }, i * 20); |
| } |
| } |
| |
| |
| function createRibbons() { |
| for (let i = 0; i < 30; i++) { |
| setTimeout(() => { |
| const ribbon = document.createElement('div'); |
| ribbon.className = 'ribbon'; |
| ribbon.style.left = `${Math.random() * window.innerWidth}px`; |
| ribbon.style.top = `-100px`; |
| ribbon.style.opacity = '1'; |
| |
| document.body.appendChild(ribbon); |
| |
| |
| const duration = Math.random() * 2000 + 2000; |
| ribbon.style.transition = `all ${duration}ms ease-out`; |
| |
| setTimeout(() => { |
| ribbon.style.top = `${window.innerHeight + 100}px`; |
| ribbon.style.transform = `rotate(${Math.random() * 60 - 30}deg)`; |
| |
| |
| setTimeout(() => { |
| ribbon.remove(); |
| }, duration); |
| }, 10); |
| }, i * 100); |
| } |
| } |
| |
| |
| openBtn.addEventListener('click', openCurtains); |
| |
| |
| document.addEventListener('keydown', (e) => { |
| if (e.key === 'ArrowRight' && !curtains.classList.contains('open')) { |
| openCurtains(); |
| } |
| }); |
| |
| |
| settingsBtn.addEventListener('click', () => { |
| settingsPanel.style.display = settingsPanel.style.display === 'block' ? 'none' : 'block'; |
| }); |
| |
| saveBtn.addEventListener('click', () => { |
| const logoUrl = logoUrlInput.value.trim(); |
| if (logoUrl) { |
| mainLogo.src = logoUrl; |
| settingsPanel.style.display = 'none'; |
| } |
| }); |
| |
| |
| soundBtn.addEventListener('click', () => { |
| soundEnabled = !soundEnabled; |
| soundBtn.innerHTML = soundEnabled ? '<i class="fas fa-volume-up"></i>' : '<i class="fas fa-volume-mute"></i>'; |
| }); |
| |
| |
| moveSpotlights(); |
| }); |
| </script> |
| <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <a href="https://enzostvs-deepsite.hf.space" style="color: #fff;" target="_blank" >DeepSite</a> <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;"></p></body> |
| </html> |