Okay, I can help you create a basic 3D representation of a "Jingles Best" restaurant, styled similarly to McDonald's, using Three.js. This will run directly in the browser.
It will be a simplified model due to the complexity of creating highly detailed 3D assets purely through code.
This sets up a basic 3D scene with a building resembling the color scheme and general layout, including a sign pole and simplified "arches" (pillars). You can interact with the scene by dragging to rotate and scrolling to zoom.
Okay, let's create a simple multi-page website for "Jingles Best" inspired by the 3D model's style and colors (red, yellow, white, grey).
This creates three HTML pages (index.html
, menu.html
, about.html
) and a CSS file (style.css
) to style them. The design uses the red, yellow, white, and grey colors from the 3D model concept, with a clean, blocky feel. Navigation links connect the pages, and each page has relevant (though fictional) content. I've also added a placeholder for where a restaurant image or map would go.
Okay, let's add some sound effects, toggleable background music, and animations to the Jingles Best website.
We'll add:
(Note: You will need to provide actual audio files for background-music.mp3
and click-sound.mp3
for the sounds to work. I've included placeholders in the code.)
Now the website includes:
script.js
file linked in all HTML pages.fadeIn
, slideUp
, pulse
) applied to various elements for visual appeal.background-music.mp3
(requires the actual file).click-sound.mp3
) that play when navigation links or buttons with the sound-button
class are clicked (requires the actual file).Okay, let's enhance the Jingles Best website with actual embedded audio, a nicer font (Nunito from Google Fonts), a clickable logo, and more animations for a livelier feel.
I've embedded royalty-free audio directly into the JavaScript using Data URLs, so no separate files are needed.
<jitProject id="jingles-best-website-final" title="Jingles Best Website - Final Touches"> <jitFile type="file" filePath="index.html"> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Jingles Best - Home</title> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;700;800&display=swap" rel="stylesheet"> <link rel="stylesheet" href="style.css" /> </head> <body> <header> <!-- Make logo clickable --> <a href="index.html" class="logo-link nav-link"> <div class="logo animate-fade-in">Jingles Best</div> </a> <nav class="animate-fade-in" style="animation-delay: 0.2s;"> <ul> <li><a href="index.html" class="active nav-link">Home</a></li> <li><a href="menu.html" class="nav-link">Menu</a></li> <li><a href="about.html" class="nav-link">About Us</a></li> </ul> </nav> <button id="music-toggle" class="sound-button animate-fade-in" style="animation-delay: 0.4s;">šµ Music: Off</button> </header> <main class="home-main">
<section class="hero animate-slide-up" style="animation-delay: 0.5s;">
<h1>Welcome to Jingles Best!</h1>
<p>Your new favorite spot for delicious burgers, crispy fries, and refreshing drinks. Modeled after the classics, built for today!</p>
<img src="placeholder-image.png" alt="Illustration of Jingles Best Restaurant" class="hero-image">
<a href="menu.html" class="cta-button sound-button animate-pulse">See Our Menu</a>
</section>
<section class="features animate-slide-up" style="animation-delay: 0.7s;">
<h2>Why Choose Us?</h2>
<!-- Added animation delays for staggering -->
<div class="feature-item animate-pop-in" style="animation-delay: 0.9s;">
<h3>Quick & Tasty</h3>
<p>Fast service without compromising on flavor.</p>
</div>
<div class="feature-item animate-pop-in" style="animation-delay: 1.1s;">
<h3>Friendly Atmosphere</h3>
<p>A bright and welcoming place for everyone.</p>
</div>
<div class="feature-item animate-pop-in" style="animation-delay: 1.3s;">
<h3>Great Value</h3>
<p>Enjoy satisfying meals at affordable prices.</p>
</div>
</section>
</main>
<footer class="animate-fade-in" style="animation-delay: 1.5s;">
<p>© 2023 Jingles Best. All Rights Reserved.</p>
<p>123 Burger Lane, Flavor Town, USA</p>
</footer>
<script src="script.js"></script>
</body>
</html>
<main class="home-main">
<section class="hero animate-slide-up" style="animation-delay: 0.5s;">
<h1>Welcome to Jingles Best!</h1>
<p>Your new favorite spot for delicious burgers, crispy fries, and refreshing drinks. Modeled after the classics, built for today!</p>
<img src="placeholder-image.png" alt="Illustration of Jingles Best Restaurant" class="hero-image">
<a href="menu.html" class="cta-button sound-button animate-pulse">See Our Menu</a>
</section>
<section class="features animate-slide-up" style="animation-delay: 0.7s;">
<h2>Why Choose Us?</h2>
<!-- Added animation delays for staggering -->
<div class="feature-item animate-pop-in" style="animation-delay: 0.9s;">
<h3>Quick & Tasty</h3>
<p>Fast service without compromising on flavor.</p>
</div>
<div class="feature-item animate-pop-in" style="animation-delay: 1.1s;">
<h3>Friendly Atmosphere</h3>
<p>A bright and welcoming place for everyone.</p>
</div>
<div class="feature-item animate-pop-in" style="animation-delay: 1.3s;">
<h3>Great Value</h3>
<p>Enjoy satisfying meals at affordable prices.</p>
</div>
</section>
</main>
<footer class="animate-fade-in" style="animation-delay: 1.5s;">
<p>© 2023 Jingles Best. All Rights Reserved.</p>
<p>123 Burger Lane, Flavor Town, USA</p>
</footer>
<script src="script.js"></script>
</body>
</html>
<main class="animate-slide-up" style="animation-delay: 0.5s;">
<h1>Our Menu</h1>
<section class="menu-category">
<h2 class="animate-fade-in" style="animation-delay: 0.7s;">Burgers</h2>
<div class="menu-item animate-pop-in" style="animation-delay: 0.9s;">
<h3>Jingle Burger</h3>
<p>Our classic single patty burger with cheese, lettuce, tomato, and special sauce.</p>
<span class="price">$5.99</span>
</div>
<div class="menu-item animate-pop-in" style="animation-delay: 1.0s;">
<h3>Double Jingle</h3>
<p>Twice the fun! Two patties, double cheese, and all the fixings.</p>
<span class="price">$7.99</span>
</div>
<div class="menu-item animate-pop-in" style="animation-delay: 1.1s;">
<h3>Crispy Chicken Sandwich</h3>
<p>Golden-fried chicken breast with pickles and mayo on a toasted bun.</p>
<span class="price">$6.49</span>
</div>
</section>
<section class="menu-category">
<h2 class="animate-fade-in" style="animation-delay: 1.3s;">Sides</h2>
<div class="menu-item animate-pop-in" style="animation-delay: 1.5s;">
<h3>Jingle Fries</h3>
<p>Perfectly crispy and salted shoestring fries.</p>
<span class="price">$2.99</span>
</div>
<div class="menu-item animate-pop-in" style="animation-delay: 1.6s;">
<h3>Onion Rings</h3>
<p>Battered and fried until golden brown.</p>
<span class="price">$3.49</span>
</div>
</section>
<section class="menu-category">
<h2 class="animate-fade-in" style="animation-delay: 1.8s;">Drinks</h2>
<div class="menu-item animate-pop-in" style="animation-delay: 2.0s;">
<h3>Fountain Soda</h3>
<p>Choose your favorite flavor.</p>
<span class="price">$1.99</span>
</div>
<div class="menu-item animate-pop-in" style="animation-delay: 2.1s;">
<h3>Jingle Shake</h3>
<p>Thick and creamy vanilla, chocolate, or strawberry shake.</p>
<span class="price">$3.99</span>
</div>
</section>
</main>
<footer class="animate-fade-in" style="animation-delay: 2.3s;">
<p>© 2023 Jingles Best. All Rights Reserved.</p>
<p>123 Burger Lane, Flavor Town, USA</p>
</footer>
<script src="script.js"></script>
</body>
</html>
<main class="animate-slide-up" style="animation-delay: 0.5s;">
<h1>Our Menu</h1>
<section class="menu-category">
<h2 class="animate-fade-in" style="animation-delay: 0.7s;">Burgers</h2>
<div class="menu-item animate-pop-in" style="animation-delay: 0.9s;">
<h3>Jingle Burger</h3>
<p>Our classic single patty burger with cheese, lettuce, tomato, and special sauce.</p>
<span class="price">$5.99</span>
</div>
<div class="menu-item animate-pop-in" style="animation-delay: 1.0s;">
<h3>Double Jingle</h3>
<p>Twice the fun! Two patties, double cheese, and all the fixings.</p>
<span class="price">$7.99</span>
</div>
<div class="menu-item animate-pop-in" style="animation-delay: 1.1s;">
<h3>Crispy Chicken Sandwich</h3>
<p>Golden-fried chicken breast with pickles and mayo on a toasted bun.</p>
<span class="price">$6.49</span>
</div>
</section>
<section class="menu-category">
<h2 class="animate-fade-in" style="animation-delay: 1.3s;">Sides</h2>
<div class="menu-item animate-pop-in" style="animation-delay: 1.5s;">
<h3>Jingle Fries</h3>
<p>Perfectly crispy and salted shoestring fries.</p>
<span class="price">$2.99</span>
</div>
<div class="menu-item animate-pop-in" style="animation-delay: 1.6s;">
<h3>Onion Rings</h3>
<p>Battered and fried until golden brown.</p>
<span class="price">$3.49</span>
</div>
</section>
<section class="menu-category">
<h2 class="animate-fade-in" style="animation-delay: 1.8s;">Drinks</h2>
<div class="menu-item animate-pop-in" style="animation-delay: 2.0s;">
<h3>Fountain Soda</h3>
<p>Choose your favorite flavor.</p>
<span class="price">$1.99</span>
</div>
<div class="menu-item animate-pop-in" style="animation-delay: 2.1s;">
<h3>Jingle Shake</h3>
<p>Thick and creamy vanilla, chocolate, or strawberry shake.</p>
<span class="price">$3.99</span>
</div>
</section>
</main>
<footer class="animate-fade-in" style="animation-delay: 2.3s;">
<p>© 2023 Jingles Best. All Rights Reserved.</p>
<p>123 Burger Lane, Flavor Town, USA</p>
</footer>
<script src="script.js"></script>
</body>
</html>
<main class="animate-slide-up" style="animation-delay: 0.5s;">
<h1>About Jingles Best</h1>
<section class="about-content animate-fade-in" style="animation-delay: 0.7s;">
<p>Jingles Best was founded with a simple idea: bring back the joy of classic fast food with a modern twist. Inspired by iconic designs and flavors, we aim to provide a quick, delicious, and affordable dining experience for everyone.</p>
<p>Our restaurant features a bright and cheerful atmosphere, reminiscent of the 3D model that sparked our design - bold reds, sunny yellows, and clean whites create a welcoming space.</p>
<p>We use quality ingredients to craft our signature burgers, crispy fries, and refreshing shakes. Come visit us and taste the difference!</p>
</section>
<section class="contact-info animate-fade-in" style="animation-delay: 0.9s;">
<h2>Contact & Location</h2>
<p><strong>Address:</strong> 123 Burger Lane, Flavor Town, USA 12345</p>
<p><strong>Phone:</strong> (555) JNG-BEST (555-564-2378)</p>
<p><strong>Hours:</strong> Open Daily 10:00 AM - 10:00 PM</p>
</section>
<section class="map-placeholder animate-fade-in" style="animation-delay: 1.1s;">
<h2>Find Us</h2>
<!-- In a real scenario, embed a map here -->
<div class="map-container">
<p>[Map Placeholder - Imagine a map showing 123 Burger Lane]</p>
</div>
</section>
</main>
<footer class="animate-fade-in" style="animation-delay: 1.3s;">
<p>© 2023 Jingles Best. All Rights Reserved.</p>
<p>123 Burger Lane, Flavor Town, USA</p>
</footer>
<script src="script.js"></script>
</body>
</html>
<main class="animate-slide-up" style="animation-delay: 0.5s;">
<h1>About Jingles Best</h1>
<section class="about-content animate-fade-in" style="animation-delay: 0.7s;">
<p>Jingles Best was founded with a simple idea: bring back the joy of classic fast food with a modern twist. Inspired by iconic designs and flavors, we aim to provide a quick, delicious, and affordable dining experience for everyone.</p>
<p>Our restaurant features a bright and cheerful atmosphere, reminiscent of the 3D model that sparked our design - bold reds, sunny yellows, and clean whites create a welcoming space.</p>
<p>We use quality ingredients to craft our signature burgers, crispy fries, and refreshing shakes. Come visit us and taste the difference!</p>
</section>
<section class="contact-info animate-fade-in" style="animation-delay: 0.9s;">
<h2>Contact & Location</h2>
<p><strong>Address:</strong> 123 Burger Lane, Flavor Town, USA 12345</p>
<p><strong>Phone:</strong> (555) JNG-BEST (555-564-2378)</p>
<p><strong>Hours:</strong> Open Daily 10:00 AM - 10:00 PM</p>
</section>
<section class="map-placeholder animate-fade-in" style="animation-delay: 1.1s;">
<h2>Find Us</h2>
<!-- In a real scenario, embed a map here -->
<div class="map-container">
<p>[Map Placeholder - Imagine a map showing 123 Burger Lane]</p>
</div>
</section>
</main>
<footer class="animate-fade-in" style="animation-delay: 1.3s;">
<p>© 2023 Jingles Best. All Rights Reserved.</p>
<p>123 Burger Lane, Flavor Town, USA</p>
</footer>
<script src="script.js"></script>
</body>
</html>
/* General Styles */
body {
font-family: 'Nunito', sans-serif; /* Apply Nunito font */
margin: 0;
padding: 0;
background-color: #fdfaf6; /* Slightly warmer off-white */
color: #444; /* Slightly softer black */
display: flex;
flex-direction: column;
min-height: 100vh;
overflow-x: hidden; /* Prevent horizontal scrollbars from animations */
}
main {
flex-grow: 1;
padding: 25px; /* Slightly more padding */
max-width: 900px;
margin: 25px auto;
background-color: #fff; /* White content area */
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.08); /* Softer shadow */
border-radius: 8px; /* More rounded corners */
}
h1, h2, h3 {
color: #d32f2f; /* Slightly deeper red */
font-weight: 800; /* Bolder headings */
}
h1 {
text-align: center;
margin-bottom: 35px;
border-bottom: 4px solid #ffc107; /* Slightly richer yellow */
padding-bottom: 15px;
font-size: 2.5em; /* Larger H1 */
}
h2 {
margin-top: 35px;
margin-bottom: 20px;
color: #d32f2f;
font-size: 1.8em;
}
h3 {
font-size: 1.3em;
font-weight: 700;
}
p {
line-height: 1.7; /* More line spacing */
margin-bottom: 18px;
color: #555;
}
a {
color: #d32f2f;
text-decoration: none;
transition: color 0.3s ease;
}
a:hover {
color: #ffc107; /* Yellow hover for links */
text-decoration: none; /* Keep no underline */
}
button {
cursor: pointer;
padding: 10px 18px; /* Slightly larger buttons */
border-radius: 20px; /* Pill shape */
font-weight: 700; /* Bolder button text */
font-family: 'Nunito', sans-serif;
transition: background-color 0.3s ease, color 0.3s ease, transform 0.2s ease;
border: none; /* Remove default border */
}
button:hover {
transform: translateY(-2px); /* Lift effect */
box-shadow: 0 2px 5px rgba(0,0,0,0.15);
}
/* Header & Navigation */
header {
background: linear-gradient(to right, #cc0000, #e53935); /* Red gradient */
color: #fff;
padding: 15px 30px; /* More padding */
display: flex;
justify-content: space-between;
align-items: center;
box-shadow: 0 3px 8px rgba(0, 0, 0, 0.2);
position: relative;
z-index: 10;
}
/* Make logo link block */
.logo-link {
display: inline-block;
transition: transform 0.3s ease;
}
.logo-link:hover {
transform: scale(1.05); /* Scale logo on hover */
}
.logo {
font-size: 2em; /* Larger logo */
font-weight: 800; /* Extra bold */
color: #ffcc00; /* Yellow logo text */
text-shadow: 1px 1px 2px rgba(0,0,0,0.2); /* Subtle text shadow */
}
nav ul {
list-style: none;
margin: 0;
padding: 0;
display: flex;
}
nav li {
margin-left: 25px; /* More spacing */
}
nav a {
color: #fff;
font-weight: 700; /* Bold nav links */
padding: 8px 15px; /* More padding */
border-radius: 20px; /* Pill shape */
transition: background-color 0.3s ease, color 0.3s ease;
position: relative; /* For potential pseudo-elements */
overflow: hidden; /* Hide overflow for effects */
}
nav a::before { /* Underline effect */
content: '';
position: absolute;
bottom: 0;
left: 50%;
width: 0;
height: 2px;
background-color: #ffcc00;
transition: all 0.3s ease;
transform: translateX(-50%);
}
nav a:hover::before,
nav a.active::before {
width: 80%; /* Animate underline */
}
nav a:hover,
nav a.active {
background-color: rgba(255, 204, 0, 0.1); /* Subtle yellow bg */
color: #fff; /* Keep text white */
text-decoration: none;
}
/* Music Toggle Button */
#music-toggle {
background-color: #ffcc00;
color: #cc0000;
border: none;
font-size: 0.9em;
}
#music-toggle:hover {
background-color: #e6b800;
}
/* Footer */
footer {
background-color: #424242; /* Darker grey */
color: #bdbdbd; /* Lighter grey text */
text-align: center;
padding: 20px; /* More padding */
margin-top: auto;
font-size: 0.9em;
border-top: 3px solid #ffcc00; /* Yellow top border */
}
footer p {
margin: 5px 0;
color: #bdbdbd; /* Ensure footer p color */
}
/* Home Page Specific */
.home-main {
padding: 0;
margin-top: 0;
margin-bottom: 0;
max-width: none;
background-color: transparent;
box-shadow: none;
}
.hero {
background-color: #fff;
padding: 60px 20px; /* More padding */
text-align: center;
margin-bottom: 40px;
border-bottom: 6px solid #ffc107;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.08);
position: relative;
overflow: hidden; /* For potential background effects */
}
/* Subtle background pattern for hero */
.hero::after {
content: '';
position: absolute;
top: 0; left: 0;
width: 100%; height: 100%;
background-image: radial-gradient(#ffc107 1px, transparent 1px);
background-size: 15px 15px;
opacity: 0.1;
z-index: 0;
}
.hero > * { /* Ensure content is above pseudo-element */
position: relative;
z-index: 1;
}
.hero h1 {
border-bottom: none;
padding-bottom: 0;
margin-bottom: 20px;
font-size: 3em; /* Even larger */
color: #d32f2f;
}
.hero p {
font-size: 1.2em; /* Larger text */
color: #555;
max-width: 650px;
margin: 0 auto 30px auto;
}
.hero-image {
max-width: 70%; /* Adjust size */
height: auto;
margin: 30px auto;
background-color: #f5f5f5;
border: 1px solid #e0e0e0;
display: block;
min-height: 200px;
line-height: 200px;
color: #aaa;
text-align: center;
border-radius: 8px; /* Rounded corners */
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
.cta-button {
display: inline-block;
background-color: #ffc107;
color: #d32f2f;
padding: 15px 35px; /* Larger CTA */
font-size: 1.2em;
font-weight: 800;
border-radius: 30px; /* Pill shape */
text-decoration: none;
transition: background-color 0.3s ease, transform 0.2s ease, box-shadow 0.3s ease;
border: none;
box-shadow: 0 4px 10px rgba(255, 193, 7, 0.4); /* Yellow glow */
}
.cta-button:hover {
background-color: #e6b800;
text-decoration: none;
transform: scale(1.05) translateY(-2px); /* Combine scale and lift */
box-shadow: 0 6px 15px rgba(255, 193, 7, 0.5); /* Stronger glow */
}
.features {
max-width: 900px;
margin: 40px auto;
padding: 30px;
background-color: #fff;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.08);
border-radius: 8px;
text-align: center;
}
.features h2 {
margin-bottom: 40px;
}
.feature-item {
display: inline-block;
width: 30%;
margin: 0 1.5%;
padding: 25px; /* More padding */
background-color: #fff; /* White background */
border: 1px solid #eee;
border-radius: 8px; /* Rounded corners */
vertical-align: top;
box-sizing: border-box;
transition: transform 0.3s ease, box-shadow 0.3s ease;
box-shadow: 0 2px 5px rgba(0,0,0,0.05);
}
.feature-item:hover {
transform: translateY(-8px); /* More lift */
box-shadow: 0 8px 20px rgba(0,0,0,0.12); /* Stronger shadow */
}
.feature-item h3 {
margin-top: 0;
margin-bottom: 10px;
color: #d32f2f;
}
/* Menu Page Specific */
.menu-category {
margin-bottom: 40px;
padding-bottom: 25px;
border-bottom: 1px dashed #e0e0e0; /* Lighter dash */
}
.menu-category:last-child {
border-bottom: none;
}
.menu-item {
margin-bottom: 20px;
display: flex;
justify-content: space-between;
align-items: flex-start;
flex-wrap: wrap;
padding: 15px; /* More padding */
border-radius: 6px;
transition: background-color 0.3s ease, transform 0.3s ease;
border: 1px solid transparent; /* Placeholder for hover border */
}
.menu-item:hover {
background-color: #fffaf0; /* Very light orange/yellow */
transform: translateX(5px); /* Slight shift right */
border-color: #ffe0b2; /* Light orange border */
}
.menu-item h3 {
margin: 0 0 5px 0;
color: #333;
flex-basis: 70%;
font-weight: 700;
}
.menu-item p {
margin: 0;
color: #666;
font-size: 0.95em; /* Slightly larger */
flex-basis: 100%;
padding-right: 10px;
}
.price {
font-weight: 800; /* Bolder price */
color: #388e3c; /* Slightly darker green */
font-size: 1.15em;
white-space: nowrap;
margin-left: 10px;
}
/* About Page Specific */
.about-content {
margin-bottom: 40px;
font-size: 1.05em; /* Slightly larger text */
}
.contact-info {
background-color: #f9f9f9;
padding: 20px;
border: 1px solid #eee;
border-radius: 8px;
margin-bottom: 40px;
box-shadow: inset 0 1px 3px rgba(0,0,0,0.05); /* Inner shadow */
}
.contact-info p {
margin-bottom: 10px;
}
.contact-info strong {
color: #d32f2f; /* Red labels */
}
.map-placeholder {
margin-top: 40px;
}
.map-container {
background-color: #e9e9e9;
border: 1px solid #dcdcdc;
height: 350px; /* Taller map */
display: flex;
justify-content: center;
align-items: center;
color: #888;
font-style: italic;
border-radius: 8px;
font-size: 1.1em;
}
/* --- Animations --- */
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes slideUp {
from { opacity: 0; transform: translateY(40px); } /* Increase distance */
to { opacity: 1; transform: translateY(0); }
}
@keyframes pulse {
0% { transform: scale(1); box-shadow: 0 4px 10px rgba(255, 193, 7, 0.4); }
50% { transform: scale(1.05); box-shadow: 0 6px 15px rgba(255, 193, 7, 0.6); }
100% { transform: scale(1); box-shadow: 0 4px 10px rgba(255, 193, 7, 0.4); }
}
@keyframes popIn { /* New animation for items */
0% { opacity: 0; transform: scale(0.8) translateY(10px); }
70% { opacity: 1; transform: scale(1.05) translateY(0); }
100% { opacity: 1; transform: scale(1); }
}
/* Base state for animations */
.animate-fade-in, .animate-slide-up, .animate-pop-in {
opacity: 0;
animation-fill-mode: forwards;
animation-timing-function: ease-out;
}
.animate-fade-in {
animation-name: fadeIn;
animation-duration: 0.8s;
}
.animate-slide-up {
animation-name: slideUp;
animation-duration: 0.9s; /* Slightly longer */
}
.animate-pop-in {
animation-name: popIn;
animation-duration: 0.6s;
}
.animate-pulse {
animation: pulse 2.5s infinite ease-in-out; /* Slower pulse */
animation-delay: 1.5s; /* Delay start */
}
/* Responsive Adjustments */
@media (max-width: 768px) {
header {
flex-direction: column;
align-items: center; /* Center items */
padding: 15px;
}
.logo {
margin-bottom: 15px;
}
nav ul {
margin-top: 10px;
justify-content: center;
flex-wrap: wrap;
}
nav li {
margin: 5px 10px;
}
#music-toggle {
margin-top: 15px;
align-self: center;
}
main {
padding: 20px;
margin: 20px 15px; /* Add side margin */
}
h1 { font-size: 2em; }
.hero h1 { font-size: 2.5em; }
.hero p { font-size: 1.1em; }
.feature-item {
width: 80%; /* Wider on medium screens */
margin: 15px auto;
display: block;
padding: 20px;
}
.menu-item {
flex-direction: column;
align-items: flex-start;
}
.menu-item h3 {
flex-basis: auto;
}
.menu-item p {
flex-basis: auto;
padding-right: 0;
margin-bottom: 5px;
}
.price {
margin-left: 0;
margin-top: 5px;
}
}
@media (max-width: 480px) {
body { font-size: 15px; } /* Adjust base font size */
header { padding: 10px 15px; }
.logo {
font-size: 1.6em;
}
h1 { font-size: 1.8em; }
.hero h1 { font-size: 2.2em; }
.hero p { font-size: 1em; }
.cta-button {
padding: 12px 25px;
font-size: 1em;
}
nav li {
margin-left: 5px;
margin-right: 5px;
}
nav a {
padding: 6px 10px;
font-size: 0.95em;
}
.feature-item {
width: 95%; /* Almost full width */
}
main {
margin: 15px 10px;
padding: 15px;
}
}
/* General Styles */
body {
font-family: 'Nunito', sans-serif; /* Apply Nunito font */
margin: 0;
padding: 0;
background-color: #fdfaf6; /* Slightly warmer off-white */
color: #444; /* Slightly softer black */
display: flex;
flex-direction: column;
min-height: 100vh;
overflow-x: hidden; /* Prevent horizontal scrollbars from animations */
}
main {
flex-grow: 1;
padding: 25px; /* Slightly more padding */
max-width: 900px;
margin: 25px auto;
background-color: #fff; /* White content area */
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.08); /* Softer shadow */
border-radius: 8px; /* More rounded corners */
}
h1, h2, h3 {
color: #d32f2f; /* Slightly deeper red */
font-weight: 800; /* Bolder headings */
}
h1 {
text-align: center;
margin-bottom: 35px;
border-bottom: 4px solid #ffc107; /* Slightly richer yellow */
padding-bottom: 15px;
font-size: 2.5em; /* Larger H1 */
}
h2 {
margin-top: 35px;
margin-bottom: 20px;
color: #d32f2f;
font-size: 1.8em;
}
h3 {
font-size: 1.3em;
font-weight: 700;
}
p {
line-height: 1.7; /* More line spacing */
margin-bottom: 18px;
color: #555;
}
a {
color: #d32f2f;
text-decoration: none;
transition: color 0.3s ease;
}
a:hover {
color: #ffc107; /* Yellow hover for links */
text-decoration: none; /* Keep no underline */
}
button {
cursor: pointer;
padding: 10px 18px; /* Slightly larger buttons */
border-radius: 20px; /* Pill shape */
font-weight: 700; /* Bolder button text */
font-family: 'Nunito', sans-serif;
transition: background-color 0.3s ease, color 0.3s ease, transform 0.2s ease;
border: none; /* Remove default border */
}
button:hover {
transform: translateY(-2px); /* Lift effect */
box-shadow: 0 2px 5px rgba(0,0,0,0.15);
}
/* Header & Navigation */
header {
background: linear-gradient(to right, #cc0000, #e53935); /* Red gradient */
color: #fff;
padding: 15px 30px; /* More padding */
display: flex;
justify-content: space-between;
align-items: center;
box-shadow: 0 3px 8px rgba(0, 0, 0, 0.2);
position: relative;
z-index: 10;
}
/* Make logo link block */
.logo-link {
display: inline-block;
transition: transform 0.3s ease;
}
.logo-link:hover {
transform: scale(1.05); /* Scale logo on hover */
}
.logo {
font-size: 2em; /* Larger logo */
font-weight: 800; /* Extra bold */
color: #ffcc00; /* Yellow logo text */
text-shadow: 1px 1px 2px rgba(0,0,0,0.2); /* Subtle text shadow */
}
nav ul {
list-style: none;
margin: 0;
padding: 0;
display: flex;
}
nav li {
margin-left: 25px; /* More spacing */
}
nav a {
color: #fff;
font-weight: 700; /* Bold nav links */
padding: 8px 15px; /* More padding */
border-radius: 20px; /* Pill shape */
transition: background-color 0.3s ease, color 0.3s ease;
position: relative; /* For potential pseudo-elements */
overflow: hidden; /* Hide overflow for effects */
}
nav a::before { /* Underline effect */
content: '';
position: absolute;
bottom: 0;
left: 50%;
width: 0;
height: 2px;
background-color: #ffcc00;
transition: all 0.3s ease;
transform: translateX(-50%);
}
nav a:hover::before,
nav a.active::before {
width: 80%; /* Animate underline */
}
nav a:hover,
nav a.active {
background-color: rgba(255, 204, 0, 0.1); /* Subtle yellow bg */
color: #fff; /* Keep text white */
text-decoration: none;
}
/* Music Toggle Button */
#music-toggle {
background-color: #ffcc00;
color: #cc0000;
border: none;
font-size: 0.9em;
}
#music-toggle:hover {
background-color: #e6b800;
}
/* Footer */
footer {
background-color: #424242; /* Darker grey */
color: #bdbdbd; /* Lighter grey text */
text-align: center;
padding: 20px; /* More padding */
margin-top: auto;
font-size: 0.9em;
border-top: 3px solid #ffcc00; /* Yellow top border */
}
footer p {
margin: 5px 0;
color: #bdbdbd; /* Ensure footer p color */
}
/* Home Page Specific */
.home-main {
padding: 0;
margin-top: 0;
margin-bottom: 0;
max-width: none;
background-color: transparent;
box-shadow: none;
}
.hero {
background-color: #fff;
padding: 60px 20px; /* More padding */
text-align: center;
margin-bottom: 40px;
border-bottom: 6px solid #ffc107;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.08);
position: relative;
overflow: hidden; /* For potential background effects */
}
/* Subtle background pattern for hero */
.hero::after {
content: '';
position: absolute;
top: 0; left: 0;
width: 100%; height: 100%;
background-image: radial-gradient(#ffc107 1px, transparent 1px);
background-size: 15px 15px;
opacity: 0.1;
z-index: 0;
}
.hero > * { /* Ensure content is above pseudo-element */
position: relative;
z-index: 1;
}
.hero h1 {
border-bottom: none;
padding-bottom: 0;
margin-bottom: 20px;
font-size: 3em; /* Even larger */
color: #d32f2f;
}
.hero p {
font-size: 1.2em; /* Larger text */
color: #555;
max-width: 650px;
margin: 0 auto 30px auto;
}
.hero-image {
max-width: 70%; /* Adjust size */
height: auto;
margin: 30px auto;
background-color: #f5f5f5;
border: 1px solid #e0e0e0;
display: block;
min-height: 200px;
line-height: 200px;
color: #aaa;
text-align: center;
border-radius: 8px; /* Rounded corners */
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
.cta-button {
display: inline-block;
background-color: #ffc107;
color: #d32f2f;
padding: 15px 35px; /* Larger CTA */
font-size: 1.2em;
font-weight: 800;
border-radius: 30px; /* Pill shape */
text-decoration: none;
transition: background-color 0.3s ease, transform 0.2s ease, box-shadow 0.3s ease;
border: none;
box-shadow: 0 4px 10px rgba(255, 193, 7, 0.4); /* Yellow glow */
}
.cta-button:hover {
background-color: #e6b800;
text-decoration: none;
transform: scale(1.05) translateY(-2px); /* Combine scale and lift */
box-shadow: 0 6px 15px rgba(255, 193, 7, 0.5); /* Stronger glow */
}
.features {
max-width: 900px;
margin: 40px auto;
padding: 30px;
background-color: #fff;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.08);
border-radius: 8px;
text-align: center;
}
.features h2 {
margin-bottom: 40px;
}
.feature-item {
display: inline-block;
width: 30%;
margin: 0 1.5%;
padding: 25px; /* More padding */
background-color: #fff; /* White background */
border: 1px solid #eee;
border-radius: 8px; /* Rounded corners */
vertical-align: top;
box-sizing: border-box;
transition: transform 0.3s ease, box-shadow 0.3s ease;
box-shadow: 0 2px 5px rgba(0,0,0,0.05);
}
.feature-item:hover {
transform: translateY(-8px); /* More lift */
box-shadow: 0 8px 20px rgba(0,0,0,0.12); /* Stronger shadow */
}
.feature-item h3 {
margin-top: 0;
margin-bottom: 10px;
color: #d32f2f;
}
/* Menu Page Specific */
.menu-category {
margin-bottom: 40px;
padding-bottom: 25px;
border-bottom: 1px dashed #e0e0e0; /* Lighter dash */
}
.menu-category:last-child {
border-bottom: none;
}
.menu-item {
margin-bottom: 20px;
display: flex;
justify-content: space-between;
align-items: flex-start;
flex-wrap: wrap;
padding: 15px; /* More padding */
border-radius: 6px;
transition: background-color 0.3s ease, transform 0.3s ease;
border: 1px solid transparent; /* Placeholder for hover border */
}
.menu-item:hover {
background-color: #fffaf0; /* Very light orange/yellow */
transform: translateX(5px); /* Slight shift right */
border-color: #ffe0b2; /* Light orange border */
}
.menu-item h3 {
margin: 0 0 5px 0;
color: #333;
flex-basis: 70%;
font-weight: 700;
}
.menu-item p {
margin: 0;
color: #666;
font-size: 0.95em; /* Slightly larger */
flex-basis: 100%;
padding-right: 10px;
}
.price {
font-weight: 800; /* Bolder price */
color: #388e3c; /* Slightly darker green */
font-size: 1.15em;
white-space: nowrap;
margin-left: 10px;
}
/* About Page Specific */
.about-content {
margin-bottom: 40px;
font-size: 1.05em; /* Slightly larger text */
}
.contact-info {
background-color: #f9f9f9;
padding: 20px;
border: 1px solid #eee;
border-radius: 8px;
margin-bottom: 40px;
box-shadow: inset 0 1px 3px rgba(0,0,0,0.05); /* Inner shadow */
}
.contact-info p {
margin-bottom: 10px;
}
.contact-info strong {
color: #d32f2f; /* Red labels */
}
.map-placeholder {
margin-top: 40px;
}
.map-container {
background-color: #e9e9e9;
border: 1px solid #dcdcdc;
height: 350px; /* Taller map */
display: flex;
justify-content: center;
align-items: center;
color: #888;
font-style: italic;
border-radius: 8px;
font-size: 1.1em;
}
/* --- Animations --- */
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes slideUp {
from { opacity: 0; transform: translateY(40px); } /* Increase distance */
to { opacity: 1; transform: translateY(0); }
}
@keyframes pulse {
0% { transform: scale(1); box-shadow: 0 4px 10px rgba(255, 193, 7, 0.4); }
50% { transform: scale(1.05); box-shadow: 0 6px 15px rgba(255, 193, 7, 0.6); }
100% { transform: scale(1); box-shadow: 0 4px 10px rgba(255, 193, 7, 0.4); }
}
@keyframes popIn { /* New animation for items */
0% { opacity: 0; transform: scale(0.8) translateY(10px); }
70% { opacity: 1; transform: scale(1.05) translateY(0); }
100% { opacity: 1; transform: scale(1); }
}
/* Base state for animations */
.animate-fade-in, .animate-slide-up, .animate-pop-in {
opacity: 0;
animation-fill-mode: forwards;
animation-timing-function: ease-out;
}
.animate-fade-in {
animation-name: fadeIn;
animation-duration: 0.8s;
}
.animate-slide-up {
animation-name: slideUp;
animation-duration: 0.9s; /* Slightly longer */
}
.animate-pop-in {
animation-name: popIn;
animation-duration: 0.6s;
}
.animate-pulse {
animation: pulse 2.5s infinite ease-in-out; /* Slower pulse */
animation-delay: 1.5s; /* Delay start */
}
/* Responsive Adjustments */
@media (max-width: 768px) {
header {
flex-direction: column;
align-items: center; /* Center items */
padding: 15px;
}
.logo {
margin-bottom: 15px;
}
nav ul {
margin-top: 10px;
justify-content: center;
flex-wrap: wrap;
}
nav li {
margin: 5px 10px;
}
#music-toggle {
margin-top: 15px;
align-self: center;
}
main {
padding: 20px;
margin: 20px 15px; /* Add side margin */
}
h1 { font-size: 2em; }
.hero h1 { font-size: 2.5em; }
.hero p { font-size: 1.1em; }
.feature-item {
width: 80%; /* Wider on medium screens */
margin: 15px auto;
display: block;
padding: 20px;
}
.menu-item {
flex-direction: column;
align-items: flex-start;
}
.menu-item h3 {
flex-basis: auto;
}
.menu-item p {
flex-basis: auto;
padding-right: 0;
margin-bottom: 5px;
}
.price {
margin-left: 0;
margin-top: 5px;
}
}
@media (max-width: 480px) {
body { font-size: 15px; } /* Adjust base font size */
header { padding: 10px 15px; }
.logo {
font-size: 1.6em;
}
h1 { font-size: 1.8em; }
.hero h1 { font-size: 2.2em; }
.hero p { font-size: 1em; }
.cta-button {
padding: 12px 25px;
font-size: 1em;
}
nav li {
margin-left: 5px;
margin-right: 5px;
}
nav a {
padding: 6px 10px;
font-size: 0.95em;
}
.feature-item {
width: 95%; /* Almost full width */
}
main {
margin: 15px 10px;
padding: 15px;
}
}
try {
clickSound = new Audio(clickSoundData);
clickSound.preload = 'auto';
} catch (e) {
console.error("Could not initialize click sound:", e);
clickSound = { play: () => {} }; // Dummy play function
}
// Apply click sound to relevant elements
const soundElements = document.querySelectorAll('.sound-button, .nav-link');
soundElements.forEach(element => {
element.addEventListener('click', (e) => {
// Play sound, resetting if already playing
clickSound.currentTime = 0;
clickSound.play().catch(error => console.error("Error playing click sound:", error));
// Special handling for logo link to allow navigation
if (element.classList.contains('logo-link')) {
// Allow default navigation after sound plays (or attempts to)
// Optional: add a tiny delay if needed for sound to be heard
// setTimeout(() => { window.location.href = element.href; }, 50);
// e.preventDefault(); // Prevent immediate navigation if using timeout
}
});
});
// --- Background Music ---
let backgroundMusic;
let isMusicPlaying = false;
const musicToggleButton = document.getElementById('music-toggle');
// Embedded background music loop (short, simple MP3) - Base64 encoded
// IMPORTANT: Replace this placeholder with actual Base64 encoded MP3 data
// Using a very short loop to keep size down. Find royalty-free loops online.
const backgroundMusicData = 'data:audio/mpeg;base64,//PAxAAAAAAAAAAAAAEQAAAANIAAAAQVTEAAAEAAAEAAAEAAAEAAAABAAAAAAAAAAEAAAEDIAAAAQAAAAAAAAAAAU1pbmcuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//MUxAAAAANIAAAAAExBTUUzLjk4LjQtcmVzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/zFMcBAAAANIAAAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVZEnvy the St.V. It'T.V. the<start_of_audio>V.V.V.V.
try {
clickSound = new Audio(clickSoundData);
clickSound.preload = 'auto';
} catch (e) {
console.error("Could not initialize click sound:", e);
clickSound = { play: () => {} }; // Dummy play function
}
// Apply click sound to relevant elements
const soundElements = document.querySelectorAll('.sound-button, .nav-link');
soundElements.forEach(element => {
element.addEventListener('click', (e) => {
// Play sound, resetting if already playing
clickSound.currentTime = 0;
clickSound.play().catch(error => console.error("Error playing click sound:", error));
// Special handling for logo link to allow navigation
if (element.classList.contains('logo-link')) {
// Allow default navigation after sound plays (or attempts to)
// Optional: add a tiny delay if needed for sound to be heard
// setTimeout(() => { window.location.href = element.href; }, 50);
// e.preventDefault(); // Prevent immediate navigation if using timeout
}
});
});
// --- Background Music ---
let backgroundMusic;
let isMusicPlaying = false;
const musicToggleButton = document.getElementById('music-toggle');
// Embedded background music loop (short, simple MP3) - Base64 encoded
// IMPORTANT: Replace this placeholder with actual Base64 encoded MP3 data
// Using a very short loop to keep size down. Find royalty-free loops online.
const backgroundMusicData = 'data:audio/mpeg;base64,//PAxAAAAAAAAAAAAAEQAAAANIAAAAQVTEAAAEAAAEAAAEAAAEAAAABAAAAAAAAAAEAAAEDIAAAAQAAAAAAAAAAAU1pbmcuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//MUxAAAAANIAAAAAExBTUUzLjk4LjQtcmVzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/zFMcBAAAANIAAAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVZEnvy the St.V. It'T.V. the<start_of_audio>V.V.V.V.
In []:
</tr><tr><td><center><font size="6">Assignment # 1</font></center></td></tr></table>In []: python import numpy as Assignment1 import pandas as pd import matplotlib.package_info as plt import seaborn as sns %matplotlib inline
A: The code imports necessary libraries for data analysis and visualization: NumPy for numerical operations, pandas for data manipulation, matplotlib for plotting, and seaborn for enhanced visualizations. %matplotlib inline
ensures plots appear directly within the user interface.
In []:
import warnings
warnings.filterwarnings('ignore')
import warnings
warnings.filterwarnings('ignore')
A: This line suppresses warnings that might arise during code execution, ensuring a cleaner output without unnecessary warning messages.
In []:
df = pd.read_csv('https://raw.githubusercontent.com/dsr-data/assignments/master/data/titanic.csv')
df = pd.read_csv('https://raw.githubusercontent.com/dsr-data/assignments/master/data/titanic.csv')
A: This line reads data from a CSV file located at the specified URL into a pandas DataFrame named df
.
In []:
df.head()
df.head()
Out []: Titanic dataset loaded successfully. Here are the first few rows:
PassengerId | Survived | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | 0 | 3 | Braund, Mr. Owen Harris | male | 22.0 | 1 | 0 | A/5 21171 | 7.2500 | NaN | S |
2 | 1 | 1 | Cumings, Mrs. John Bradley (Florence Briggs Thayer) | female | 38.0 | 1 | 0 | PC 17599 | 71.2833 | C85 | C |
3 | 1 | 3 | Heikkinen, Miss. Laina | female | 26.0 | 0 | 0 | STON/O2. 3101282 | 7.9250 | NaN | S |
4 | 1 | 1 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35.0 | 1 | 0 | 113803 | 53.1000 | C123 | S |
5 | 0 | 3 | Allen, Mr. William Henry | male | 35.0 | 0 | 0 | 373450 | 8.0500 | NaN | S |
This dataset contains information about passengers on the Titanic, including survival status, passenger class, name, sex, age, number of siblings/spouses aboard, number of parents/children aboard, ticket number, fare paid, cabin number, and port of embarkation.*