:root{--twilight: #241826;--twilight-2: #2e1c30;--gold: #F2B45C;--coral: #F08E84;--cream: #FBF6EE}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100vw;height:100vh;height:100dvh;overflow:hidden;background:var(--twilight);font-family:Inter,sans-serif;color:var(--cream);-webkit-user-select:none;user-select:none}#root{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;height:100dvh;overflow:hidden;background:var(--twilight)}#stage{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;height:100dvh;overflow:hidden;transition:background-color 2.5s ease}#vignette{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:50;background:radial-gradient(ellipse at center,#0000 45%,#0000008c)}.screen{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;height:100dvh;display:flex;align-items:center;justify-content:center;overflow:hidden}#screen-loading{flex-direction:column;gap:2.2vh;background:radial-gradient(ellipse at 50% 30%,var(--twilight-2) 0%,var(--twilight) 70%);z-index:10}.start-title{font-family:Fraunces,serif;font-weight:600;font-style:italic;font-size:clamp(2.2rem,5vw,4rem);color:var(--cream);text-align:center;letter-spacing:.01em;text-shadow:0 0 40px rgba(242,180,92,.25)}.start-sub{font-size:clamp(.9rem,1.4vw,1.2rem);color:var(--gold);letter-spacing:.18em;text-transform:uppercase;opacity:.85}.loading-row{display:flex;align-items:center;gap:1vw;font-family:Inter,sans-serif;font-size:.85rem;color:var(--cream);opacity:.6;min-height:2.4em}.spinner{width:14px;height:14px;border-radius:50%;border:2px solid rgba(251,246,238,.25);border-top-color:var(--gold);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.party-orbs{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;overflow:hidden;pointer-events:none}.party-orb{position:absolute;border-radius:50%}#screen-title{z-index:30;flex-direction:column;gap:2vh;background:radial-gradient(ellipse at 50% 50%,var(--twilight-2) 0%,var(--twilight) 75%);overflow:hidden}.title-bg-sweep{position:absolute;top:-25%;right:-25%;bottom:-25%;left:-25%;background:conic-gradient(from 0deg,#f2b45c1f,#f08e8414,#f2b45c0d,#f08e841a,#f2b45c1f);pointer-events:none}.title-ripple{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);border-radius:50%;border:2px solid rgba(242,180,92,.55);pointer-events:none}.title-glow{position:absolute;width:60vw;height:60vw;max-width:900px;max-height:900px;border-radius:50%;background:radial-gradient(circle,#f2b45c59,#f2b45c00 70%);pointer-events:none}.title-wrap{position:relative;z-index:2;text-align:center;display:flex;flex-direction:column;align-items:center;gap:1.4vh}.title-line1{font-family:Fraunces,serif;font-weight:500;font-style:italic;font-size:clamp(1.3rem,2.6vw,2.1rem);color:var(--coral);letter-spacing:.06em;text-transform:uppercase}.title-line2{font-family:Fraunces,serif;font-weight:900;font-size:clamp(3.2rem,8vw,7rem);line-height:1.05;color:var(--cream);display:flex;flex-wrap:wrap;justify-content:center;row-gap:.1em;column-gap:.25em;text-shadow:0 0 60px rgba(242,180,92,.35)}.title-word{display:inline-block}.title-break{flex-basis:100%;width:100%;height:0}.title-word.is-name{color:var(--gold);font-family:"Baloo 2",cursive;font-weight:700;font-size:1.15em}.title-sparkline{margin-top:.6vh;font-family:Inter,sans-serif;font-weight:400;font-size:clamp(.85rem,1.3vw,1.15rem);letter-spacing:.1em;color:var(--cream);text-transform:uppercase}#screen-slideshow{z-index:20}.slide-bg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;filter:blur(36px) saturate(1.3) brightness(.4);transform:scale(1.2)}.slide-tint{position:absolute;top:0;right:0;bottom:0;left:0}.slide-inner{position:relative;z-index:2;width:100%;height:100%;display:flex;align-items:center;justify-content:center;gap:clamp(2vw,4vw,5vw);padding:0 6vw}.slide-photo-frame{position:relative;flex:0 0 auto;height:min(74vh,720px);width:min(59.2vh,576px);aspect-ratio:4/5;border-radius:20px;overflow:hidden;box-shadow:0 25px 70px #0009,0 0 0 1px #f2b45c66 inset,0 0 40px #f2b45c1f}.slide-photo-frame img{width:100%;height:100%;object-fit:cover;display:block}.slide-divider{flex:0 0 auto;width:1px;height:min(54vh,520px);background:linear-gradient(to bottom,transparent,rgba(242,180,92,.55),transparent)}.slide-text-panel{position:relative;flex:1 1 auto;max-width:34vw;display:flex;flex-direction:column;gap:1.4vh}.slide-month-watermark{position:absolute;top:-9vh;left:-1.5vw;font-family:Fraunces,serif;font-weight:900;font-size:16vw;line-height:1;color:#f2b45c14;z-index:-1;pointer-events:none}.slide-month-label{font-family:Inter,sans-serif;font-weight:600;font-size:clamp(.85rem,1.15vw,1.05rem);letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}.slide-caption{font-family:Fraunces,serif;font-weight:600;font-style:italic;font-size:clamp(1.5rem,2.7vw,2.4rem);line-height:1.3;color:var(--cream);text-shadow:0 4px 30px rgba(0,0,0,.5)}#garland{position:fixed;left:0;right:0;bottom:3vh;bottom:calc(3vh + env(safe-area-inset-bottom,0px));height:6vh;display:flex;align-items:flex-end;justify-content:center;gap:clamp(14px,2.6vw,34px);z-index:40;pointer-events:none}#garland svg{position:absolute;left:0;top:46%;width:100%;height:1px;overflow:visible}.bulb-wrap{position:relative;display:flex;flex-direction:column;align-items:center;width:clamp(10px,1.4vw,16px)}.bulb{width:clamp(10px,1.4vw,16px);height:clamp(10px,1.4vw,16px);border-radius:50%;background:#5a4a52;box-shadow:inset 0 0 4px #0006;transition:background .6s ease,box-shadow .6s ease,transform .6s ease}.bulb-wrap.lit .bulb{background:radial-gradient(circle at 35% 30%,#fff5da,var(--gold) 60%,#c97f2e 100%);box-shadow:0 0 6px 2px #f2b45ce6,0 0 22px 8px #f2b45c8c,0 0 46px 16px #f2b45c40;transform:scale(1.15);animation:bulb-twinkle 2.4s ease-in-out infinite}@keyframes bulb-twinkle{0%,to{filter:brightness(1)}50%{filter:brightness(1.25)}}.bulb-wrap.lit.just-lit .bulb{animation:bulb-pop .6s cubic-bezier(.3,1.6,.4,1),bulb-twinkle 2.4s ease-in-out infinite .6s}@keyframes bulb-pop{0%{transform:scale(.6)}55%{transform:scale(1.45)}to{transform:scale(1.15)}}#screen-finale{z-index:25}.finale-bg-sweep{position:absolute;top:-25%;right:-25%;bottom:-25%;left:-25%;background:conic-gradient(from 0deg,#f2b45c1a,#f08e8412,#f2b45c0a,#f08e8417,#f2b45c1a);pointer-events:none}.finale-tint{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 50% 40%,#40201e59,#140d15b8 75%)}.finale-content{position:relative;z-index:2;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(2vh,3.4vh,4vh);padding:2vh 6vw}.finale-fridge{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:clamp(2vw,3.4vw,4vw);margin-bottom:40px}.fridge-photo{position:relative;width:min(22vw,280px);background:var(--cream);padding:10px 10px 16px;border-radius:8px;box-shadow:0 18px 42px #00000080,0 0 0 1px #0000000f}.fridge-photo img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:2px;display:block}.fridge-magnet{position:absolute;top:-9px;left:50%;transform:translate(-50%);width:17px;height:17px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff5da,var(--gold) 60%,#c97f2e 100%);box-shadow:0 2px 6px #00000073}.fridge-caption{margin-top:8px;text-align:center;font-family:Fraunces,serif;font-weight:600;font-style:italic;font-size:clamp(.78rem,1.1vw,.95rem);color:#2b2520}.finale-heading{font-family:Inter,sans-serif;font-weight:600;font-size:clamp(.8rem,1.2vw,1rem);letter-spacing:.28em;text-transform:uppercase;color:var(--gold);text-shadow:0 0 24px rgba(242,180,92,.5)}.finale-line{text-align:center;white-space:pre-line;font-family:Fraunces,serif;font-weight:600;font-style:italic;font-size:clamp(1.7rem,1.6vw,1.4rem);line-height:1.4;color:var(--cream);text-shadow:0 4px 30px rgba(0,0,0,.6)}#confetti-canvas{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;z-index:45;pointer-events:none}@media(orientation:portrait),(max-width:580px){.screen{padding:0 3vw}.slide-inner{flex-direction:column;gap:2.2vh;padding:5vh 6vw}.slide-photo-frame{height:auto;width:min(68vw,38vh,420px)}.slide-divider{width:min(30vw,140px);height:1px;background:linear-gradient(to right,transparent,rgba(242,180,92,.55),transparent)}.slide-text-panel{max-width:88vw;align-items:center;text-align:center}.slide-month-watermark{display:none}.slide-caption{font-size:clamp(1.15rem,4.2vw,1.7rem)}.finale-content{padding:3vh 5vw;gap:2vh}.finale-fridge{gap:3vh 4vw;max-width:88vw}.fridge-photo{width:36vw}.finale-line{font-size:clamp(1.4rem,1.6vw,1.4rem)}}
