* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: "Poppins", sans-serif;
}

body {
    background: #fdeef4;
    overflow-x: hidden;
}

/* INTRO SCREEN */
.intro {
    position: fixed;
    inset: 0;
    background: linear-gradient(180deg, #fdeef4, #ffeef5);
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    z-index: 2000;
    transition: opacity 1s ease;
}

.intro-cake {
    width: 330px;
    animation: candleFlicker 1s infinite alternate ease-in-out;
}

.blow-btn {
    margin-top: 20px;
    padding: 12px 26px;
    font-size: 18px;
    background: #ff7eb8;
    color: white;
    border: none;
    border-radius: 30px;
    cursor: pointer;
    box-shadow: 0px 8px 20px rgba(255, 100, 150, 0.3);
}

/* MAIN CARD STYLES */
.container-wrapper {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
}

.container {
    text-align: center;
    width: 90%;
    max-width: 500px;
    padding: 20px;
    background: rgba(255,255,255,0.55);
    backdrop-filter: blur(12px);
    border-radius: 20px;
    margin-top: 50px;
}

/* Title */
.title {
    font-size: 2rem;
    font-weight: 700;
    color: #ff5e90;
}

/* Message */
.message {
    margin-bottom: 20px;
    color: #555;
}

/* GALLERY */
.gallery {
    width: 100%;
    height: 420px;
    border-radius: 15px;
    overflow: hidden;
    background: white;
}

.gallery img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

/* Controls */
.controls button {
    padding: 10px;
    border: none;
    background: #eaeaea;
    border-radius: 8px;
    margin: 5px;
}

/* Music Button */
.musicBtn {
    margin-top: 15px;
    padding: 10px 16px;
    border-radius: 50px;
    border: none;
    background: #eee;
    font-size: 20px;
}

/* Balloons */
.balloon {
    position: absolute;
    width: 60px;
    height: 85px;
    background: radial-gradient(circle at 30% 30%, #ffe0eb, #ff9abb);
    border-radius: 50% 50% 45% 45%;
    animation: floatUp 14s linear infinite;
    opacity: 0.85;
}

/* Strings */
.balloon::after {
    content: "";
    position: absolute;
    width: 2px;
    height: 50px;
    background: #0003;
    bottom: -50px;
    left: 50%;
    transform: translateX(-50%);
}

/* Balloon positions */
.b1 { left: 10%; top: 60%; animation-duration: 14s; }
.b2 { left: 20%; top: 80%; animation-duration: 16s; }
.b3 { left: 80%; top: 70%; animation-duration: 14s; }
.b4 { left: 85%; top: 50%; animation-duration: 13s; }
.b5 { left: 30%; top: 85%; animation-duration: 18s; }
.b6 { right: 20%; top: 90%; animation-duration: 19s; }

/* Outer Balloons */
.b7 { left: 5%; top: 20%; animation-duration: 17s; }
.b8 { left: 10%; top: 40%; animation-duration: 14s; }
.b9 { left: 90%; top: 30%; animation-duration: 15s; }
.b10 { right: 8%; top: 75%; animation-duration: 18s; }
.b11 { right: 4%; top: 45%; animation-duration: 12s; }
.b12 { left: 50%; top: 95%; animation-duration: 16s; }

@keyframes floatUp {
    0% { transform: translateY(100px) scale(1); opacity: 0; }
    20% { opacity: 1; }
    100% { transform: translateY(-300px) scale(1.15); opacity: 0; }
}

/* Ribbons */
.ribbon {
    position: absolute;
    width: 6px;
    height: 140px;
    background: #ffbfd2;
    opacity: 0.4;
    animation: wave 5s infinite ease-in-out;
}

.r1 { left: 5%; top: 10%; }
.r2 { right: 5%; top: 20%; }
.r3 { left: 10%; bottom: 10%; }
.r4 { right: 8%; bottom: 15%; }

@keyframes wave {
    0% { transform: rotate(0); }
    50% { transform: rotate(10deg); }
    100% { transform: rotate(0); }
}

/* Glow Effects */
.glow {
    position: absolute;
    width: 260px;
    height: 260px;
    background: #ffb7ce55;
    border-radius: 50%;
    filter: blur(100px);
    z-index: -1;
}

.glow.left { top: -80px; left: -50px; }
.glow.right { bottom: -80px; right: -50px; }

/* Confetti Canvas */
#confettiCanvas {
    position: fixed;
    inset: 0;
    z-index: 3000;
    pointer-events: none;
}

/* Candle Flicker */
@keyframes candleFlicker {
    0% { filter: brightness(1); }
    100% { filter: brightness(1.3); }
}

/* INTRO PAGE RESTORED DESIGN */
.intro {
    position: fixed;
    inset: 0;
    background: #fdeef4;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    z-index: 2000;
    overflow: hidden;
    transition: opacity 1s ease;
}

/* Glow blobs */
.intro-glow {
    position: absolute;
    width: 350px;
    height: 350px;
    background: rgba(255, 160, 200, 0.35);
    border-radius: 50%;
    filter: blur(140px);
}

.glow1 { top: -40px; left: -80px; }
.glow2 { bottom: -60px; right: -50px; }


/* Intro cake */
.intro-cake {
    width: 360px;
    animation: candleFlicker 1s infinite alternate ease-in-out;
    z-index: 10;
}

/* Blow button */
.blow-btn {
    margin-top: 30px;
    padding: 14px 34px;
    font-size: 20px;
    border: none;
    background: linear-gradient(135deg, #ff7eb8, #ff57a6);
    color: white;
    border-radius: 35px;
    cursor: pointer;
    box-shadow: 0 8px 22px rgba(255, 80, 150, 0.3);
}

/* Sparkles */
.sparkles {
    position: absolute;
    width: 100%;
    height: 100%;
    background-image:
        radial-gradient(circle, rgba(255, 255, 255, 0.7) 20%, transparent 20%),
        radial-gradient(circle, rgba(255, 255, 255, 0.6) 20%, transparent 20%),
        radial-gradient(circle, rgba(255, 255, 255, 0.5) 20%, transparent 20%);
    background-size: 7px 7px, 5px 5px, 3px 3px;
    animation: sparkleMove 12s linear infinite;
    pointer-events: none;
    z-index: -1;
}

@keyframes sparkleMove {
    0% { background-position: 0 0, 40px 60px, 100px 20px; }
    100% { background-position: 80px 120px, 120px 200px, 180px 130px; }
}

/* Floating balloons */
.balloon {
    position: absolute;
    width: 70px;
    height: 95px;
    background: radial-gradient(circle at 30% 30%, #ffe0eb, #ff9abb);
    border-radius: 50%;
    animation: floatUp 16s linear infinite;
    opacity: 0.85;
}

.balloon::after {
    content: "";
    position: absolute;
    width: 2px;
    height: 55px;
    background: rgba(0, 0, 0, 0.25);
    left: 50%;
    bottom: -55px;
    transform: translateX(-50%);
}

/* Balloon positions */
.b1 { left: 10%; bottom: -100px; animation-duration: 17s; }
.b2 { left: 25%; bottom: -140px; animation-duration: 20s; }
.b3 { right: 20%; bottom: -120px; animation-duration: 19s; }
.b4 { right: 8%; top: 80%; animation-duration: 15s; }
.b5 { left: 80%; bottom: -120px; animation-duration: 18s; }

@keyframes floatUp {
    0%   { transform: translateY(100px) scale(1); opacity: 0; }
    20%  { opacity: 1; }
    100% { transform: translateY(-400px) scale(1.2); opacity: 0; }
}

/* Ribbons */
.ribbon {
    position: absolute;
    width: 6px;
    height: 140px;
    background: #ffc6d8;
    opacity: 0.4;
    animation: wave 6s ease-in-out infinite;
    border-radius: 20px;
}

.r1 { left: 10%; top: 20%; }
.r2 { right: 14%; top: 10%; }
.r3 { left: 5%; bottom: 20%; }

@keyframes wave {
    0% { transform: rotate(0deg); }
    50% { transform: rotate(12deg); }
    100% { transform: rotate(0deg); }
}

/* Party Room Bunting (top flags) */
.party-bunting {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 110px;
    z-index: 5;
    background-repeat: repeat-x;
    background-size: 140px 110px;
    opacity: 0.85;

    background-image:
        linear-gradient(140deg, #ffc7d9 50%, transparent 50%),
        linear-gradient(220deg, #ffe7a8 50%, transparent 50%);
    background-position:
        0 0,
        70px 0;
}
