*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--purple:#7c3aed;--purple2:#a78bfa;--gold:#f59e0b;--dark:#0f0520;--cream:#fdfaf5;--text:#2c2028;--shadow:0 8px 40px rgba(124,58,237,.2)}
html,body{height:100%;font-family:'Lato',sans-serif;background:var(--cream);color:var(--text);overflow:hidden}
.screen{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .5s ease,transform .5s cubic-bezier(.4,0,.2,1);z-index:1;overflow-y:auto;padding:60px 20px}
.screen.active{opacity:1;pointer-events:all;z-index:10}
.slide-from-right{transform:translateX(50px);opacity:0}.slide-from-left{transform:translateX(-50px);opacity:0}
.slide-to-left{transform:translateX(-50px);opacity:0}.slide-to-right{transform:translateX(50px);opacity:0}
.fade-in{animation:fadeIn .8s ease both}
@keyframes fadeIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
.hidden{display:none!important}

.start-screen{background:linear-gradient(160deg,#0f0520,#1a0835)}
.balloons{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.start-center{text-align:center;z-index:1;padding:20px}
.start-icon{font-size:5rem;display:block;margin-bottom:20px;animation:bounce 1s ease-in-out infinite}
@keyframes bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-16px)}}
.start-title{font-family:'Playfair Display',serif;font-size:2.2rem;color:#fff;margin-bottom:8px;line-height:1.2}
.start-sub{font-size:.9rem;color:rgba(255,255,255,.4);margin-bottom:36px}
.btn-start{background:linear-gradient(135deg,var(--purple),var(--purple2));color:#fff;border:none;border-radius:50px;padding:16px 52px;font-size:1.1rem;font-family:'Lato',sans-serif;cursor:pointer;box-shadow:0 6px 24px rgba(124,58,237,.5);transition:transform .2s}
.btn-start:hover{transform:translateY(-3px)}

.content-box{background:#fff;border-radius:20px;padding:44px 36px;max-width:680px;width:100%;box-shadow:var(--shadow);text-align:center;max-height:calc(100vh - 80px);overflow-y:auto;position:relative;z-index:1}
.section-icon{font-size:3rem;margin-bottom:14px;display:block}
.big-icon{font-size:4rem;display:block;margin-bottom:16px;animation:bounce 1.5s ease-in-out infinite}
h1{font-family:'Playfair Display',serif;font-size:2.2rem;color:var(--dark);margin-bottom:20px}
.section-title{font-family:'Playfair Display',serif;font-size:1.8rem;color:var(--dark);margin-bottom:24px}
.countdown-wrap{background:linear-gradient(135deg,#f5f0ff,#ede5ff);border-radius:14px;padding:20px;margin:20px 0}
.countdown-label{font-size:.8rem;color:var(--purple);letter-spacing:1.5px;text-transform:uppercase;margin-bottom:12px}
.countdown-grid{display:flex;gap:8px;justify-content:center;align-items:center}
.cd-block{background:#fff;border-radius:10px;padding:12px 14px;min-width:60px;text-align:center;box-shadow:0 2px 8px rgba(124,58,237,.15)}
.cd-block span:first-child{display:block;font-size:1.8rem;font-weight:700;color:var(--dark);font-family:'Playfair Display',serif}
.cd-label{font-size:.65rem;color:#aaa;text-transform:uppercase;letter-spacing:1px}
.cd-sep{font-size:1.5rem;color:var(--purple);font-weight:700}

.letter-box{text-align:left;background:#fdf8ff!important}
.letter-header{display:flex;align-items:center;gap:12px;margin-bottom:20px}
.letter-header span{font-size:2rem}
.letter-header h2{font-family:'Playfair Display',serif;font-size:1.5rem;color:var(--dark)}
.letter-text{font-size:1rem;line-height:2;color:#4a3f5f;white-space:pre-line;margin-bottom:20px;font-family:'Georgia',serif}
.signature{text-align:right;font-size:1.1rem;color:var(--purple);margin-bottom:28px;font-family:'Playfair Display',serif;font-style:italic}

.gift-box{background:linear-gradient(135deg,#f5f0ff,#ede5ff);border-radius:14px;padding:20px;margin:20px 0}
.gift-icon{font-size:3rem;margin-bottom:8px}
.final-balloons{font-size:2rem;letter-spacing:10px;margin-top:12px}

#confettiCanvas{position:absolute;inset:0;pointer-events:none;z-index:0}
.reveal-box{position:relative;z-index:1}
.reveal-title{font-family:'Playfair Display',serif;font-size:2rem;color:var(--dark);margin-bottom:12px}

.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-bottom:24px}
.gallery-grid img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;cursor:zoom-in;transition:transform .2s;opacity:0}
.gallery-grid img.photo-in{animation:photoIn .5s ease forwards}
@keyframes photoIn{from{opacity:0;transform:scale(.88)}to{opacity:1;transform:scale(1)}}

.btn-next,.btn-purple{background:linear-gradient(135deg,var(--purple),var(--purple2));color:#fff;border:none;border-radius:50px;padding:13px 36px;font-size:1rem;font-family:'Lato',sans-serif;cursor:pointer;transition:transform .15s;box-shadow:0 4px 18px rgba(124,58,237,.4)}
.btn-next:hover,.btn-purple:hover{transform:translateY(-2px)}
.nav-arrow{position:fixed;top:50%;transform:translateY(-50%);z-index:50;background:rgba(124,58,237,.15);border:2px solid rgba(124,58,237,.3);color:var(--purple);font-size:2.4rem;width:52px;height:52px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}
.nav-arrow:hover{background:rgba(124,58,237,.3)}.nav-arrow.disabled{opacity:.2;cursor:not-allowed;pointer-events:none}
.nav-left{left:18px}.nav-right{right:18px}.nav-arrow.hidden{display:none}
.music-player{position:fixed;top:20px;right:20px;z-index:100}.music-player.hidden{display:none}
.music-btn{width:46px;height:46px;border-radius:50%;background:rgba(124,58,237,.9);border:none;color:#fff;font-size:1.2rem;cursor:pointer;display:flex;align-items:center;justify-content:center}
#lightbox{display:none;position:fixed;inset:0;background:rgba(0,0,0,.9);z-index:999;align-items:center;justify-content:center}
#lightbox.open{display:flex}
#lightbox img{max-width:88vw;max-height:88vh;border-radius:10px}
.lb-nav{position:fixed;top:50%;transform:translateY(-50%);background:rgba(255,255,255,.15);border:none;color:#fff;font-size:3rem;padding:10px 18px;cursor:pointer;border-radius:8px;z-index:1000}
.lb-prev{left:12px}.lb-next{right:12px}
.lb-close{position:fixed;top:16px;right:16px;background:rgba(255,255,255,.15);border:none;color:#fff;font-size:1.4rem;width:40px;height:40px;border-radius:50%;cursor:pointer;z-index:1000}
@media(max-width:600px){.screen{padding:50px 12px 30px}.content-box{padding:24px 16px}.nav-arrow{display:none}}
