:root{--purple-50:#faf5ff;--purple-100:#f3e8ff;--purple-200:#e9d5ff;--purple-300:#d8b4fe;--purple-400:#c084fc;--purple-500:#a855f7;--purple-600:#9333ea;--purple-700:#7e22ce;--purple-800:#6b21a8;--purple-900:#581c87;--purple-950:#3b0764;--lilac-100:#ede9fe;--lilac-200:#ddd6fe;--lilac-300:#c4b5fd;--lilac-400:#a78bfa;--lilac-500:#8b5cf6;--bg-primary:#0d0015;--bg-secondary:#150022;--bg-card:#8b5cf614;--bg-glass:#8b5cf61a;--text-primary:#f3e8ff;--text-secondary:#c4b5fd;--text-muted:#8b7aad;--glow-purple:0 0 40px #8b5cf64d;--glow-strong:0 0 60px #a855f766;--glass-border:1px solid #8b5cf633;--glass-bg:#0f001e99;--font-display:"Playfair Display", Georgia, serif;--font-body:"Inter", -apple-system, sans-serif;--font-script:"Great Vibes", cursive;--section-padding:clamp(4rem, 10vw, 8rem) clamp(1rem, 5vw, 3rem);--ease-out-expo:cubic-bezier(.16, 1, .3, 1);--ease-out-back:cubic-bezier(.34, 1.56, .64, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;overflow-x:hidden}body{font-family:var(--font-body);background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}.hidden{display:none!important}.script-font{font-family:var(--font-script)}img,video{max-width:100%;display:block}button{cursor:pointer;color:inherit;background:0 0;border:none;font-family:inherit}#entrance-overlay{z-index:1000;background:radial-gradient(ellipse at center, var(--bg-secondary) 0%, var(--bg-primary) 70%);width:100%;height:100%;transition:opacity 1s var(--ease-out-expo), transform 1s var(--ease-out-expo);justify-content:center;align-items:center;display:flex;position:fixed;top:0;left:0}#entrance-overlay.fade-out{opacity:0;pointer-events:none;transform:scale(1.1)}.entrance-content{text-align:center;z-index:2;padding:2rem}.entrance-hearts{justify-content:center;gap:1rem;margin-bottom:2rem;font-size:2rem;display:flex}.entrance-hearts span{animation:1.5s ease-in-out infinite heartPulse}.entrance-hearts span:nth-child(2){animation-delay:.3s}.entrance-hearts span:nth-child(3){animation-delay:.6s}.entrance-title{font-family:var(--font-script);color:var(--purple-300);text-shadow:0 0 40px #a855f780;margin-bottom:1rem;font-size:clamp(2.5rem,8vw,5rem)}.entrance-subtitle{color:var(--text-secondary);margin-bottom:3rem;font-size:clamp(1rem,3vw,1.3rem);font-weight:300}.entrance-btn{color:#fff;background:linear-gradient(135deg, var(--purple-600), var(--purple-500));transition:all .4s var(--ease-out-expo);box-shadow:var(--glow-purple);border-radius:100px;padding:1rem 3rem;font-size:1.2rem;font-weight:500;position:relative;overflow:hidden}.entrance-btn:hover{box-shadow:var(--glow-strong);transform:translateY(-3px)scale(1.05)}.entrance-btn:before{content:"";background:linear-gradient(90deg,#0000,#fff3,#0000);width:100%;height:100%;transition:left .6s;position:absolute;top:0;left:-100%}.entrance-btn:hover:before{left:100%}.entrance-hint{color:var(--text-muted);margin-top:1.5rem;font-size:.85rem}.floating-hearts{pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden}.floating-heart{opacity:0;font-size:1.5rem;animation:8s ease-in-out infinite floatHeart;position:absolute}.music-player{z-index:900;position:fixed;top:1.5rem;right:1.5rem}.music-btn{background:var(--glass-bg);-webkit-backdrop-filter:blur(20px);border:var(--glass-border);width:50px;height:50px;transition:all .3s var(--ease-out-expo);box-shadow:var(--glow-purple);border-radius:50%;justify-content:center;align-items:center;display:flex}.music-btn:hover{box-shadow:var(--glow-strong);transform:scale(1.1)}.music-icon{align-items:flex-end;gap:3px;height:18px;display:flex}.bar{background:var(--purple-400);border-radius:2px;width:3px;transition:height .3s}.music-btn.playing .bar{animation:.8s ease-in-out infinite soundBars}.music-btn.playing .bar1{animation-delay:0s}.music-btn.playing .bar2{animation-delay:.2s}.music-btn.playing .bar3{animation-delay:.4s}.music-btn.playing .bar4{animation-delay:.1s}.bar1{height:8px}.bar2{height:14px}.bar3{height:10px}.bar4{height:16px}.music-btn:not(.playing) .bar{animation:none;height:4px!important}.hero-section{justify-content:center;align-items:center;min-height:100vh;display:flex;position:relative;overflow:hidden}.hero-bg-effects{width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden}.gradient-orb{filter:blur(80px);opacity:.4;border-radius:50%;position:absolute}.orb-1{background:radial-gradient(circle, var(--purple-600), transparent);width:500px;height:500px;animation:15s ease-in-out infinite orbFloat;top:-10%;left:-10%}.orb-2{background:radial-gradient(circle, var(--lilac-500), transparent);width:400px;height:400px;animation:18s ease-in-out infinite reverse orbFloat;bottom:-10%;right:-10%}.orb-3{background:radial-gradient(circle, var(--purple-400), transparent);width:300px;height:300px;animation:12s ease-in-out 3s infinite orbFloat;top:50%;left:50%;transform:translate(-50%,-50%)}.hero-content{text-align:center;z-index:2;padding:2rem;position:relative}.hero-date{color:var(--text-muted);letter-spacing:.3em;text-transform:uppercase;margin-bottom:1.5rem;font-size:clamp(.8rem,2vw,1rem);font-weight:300}.hero-title{margin-bottom:2rem}.hero-title .script-font{background:linear-gradient(135deg, var(--purple-200), var(--lilac-400), var(--purple-300));-webkit-text-fill-color:transparent;text-shadow:none;filter:drop-shadow(0 0 30px #a855f74d);-webkit-background-clip:text;background-clip:text;font-size:clamp(3.5rem,12vw,8rem);line-height:1.2;display:block}.hero-subtitle-text{font-family:var(--font-display);color:var(--text-secondary);margin-top:.5rem;font-size:clamp(1.2rem,3vw,2rem);font-style:italic;font-weight:400;display:block}.hero-tagline{color:var(--text-secondary);max-width:600px;margin:0 auto 3rem;font-size:clamp(1rem,2.5vw,1.4rem);font-weight:300;line-height:1.6}.scroll-indicator{color:var(--text-muted);flex-direction:column;align-items:center;gap:.8rem;font-size:.85rem;display:flex}.scroll-mouse{border:2px solid var(--purple-400);opacity:.6;border-radius:14px;justify-content:center;width:26px;height:42px;padding-top:8px;display:flex}.scroll-dot{background:var(--purple-400);border-radius:4px;width:4px;height:8px;animation:2s ease-in-out infinite scrollDot}.hero-particles{pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;top:0;left:0}.particle{background:var(--purple-400);opacity:0;border-radius:50%;width:4px;height:4px;animation:6s ease-in-out infinite particleFloat;position:absolute}.section-container{max-width:1200px;padding:var(--section-padding);margin:0 auto}.section-title{font-family:var(--font-script);text-align:center;color:var(--purple-300);text-shadow:0 0 30px #a855f74d;margin-bottom:1rem;font-size:clamp(2rem,6vw,3.5rem)}.section-description{text-align:center;color:var(--text-muted);margin-bottom:3rem;font-size:clamp(.95rem,2vw,1.15rem);font-weight:300}.counter-section{background:linear-gradient(180deg, var(--bg-primary) 0%, var(--bg-secondary) 50%, var(--bg-primary) 100%);position:relative}.counter-grid{grid-template-columns:repeat(4,1fr);gap:1.5rem;margin-bottom:2rem;display:grid}@media (width<=600px){.counter-grid{grid-template-columns:repeat(2,1fr)}}.counter-card{background:var(--glass-bg);-webkit-backdrop-filter:blur(20px);border:var(--glass-border);text-align:center;transition:transform .4s var(--ease-out-expo), box-shadow .4s;border-radius:24px;padding:2rem 1rem}.counter-card:hover{box-shadow:var(--glow-purple);transform:translateY(-8px)}.counter-number{font-family:var(--font-display);background:linear-gradient(135deg, var(--purple-300), var(--lilac-400));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:.5rem;font-size:clamp(2.5rem,6vw,3.5rem);font-weight:700;line-height:1}.counter-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.15em;font-size:.9rem;font-weight:500}.counter-subtitle{text-align:center;font-family:var(--font-script);color:var(--text-secondary);font-size:clamp(1.3rem,3vw,1.8rem)}.gallery-section{position:relative}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem;display:grid}@media (width<=600px){.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.8rem}}.gallery-item{cursor:pointer;aspect-ratio:1;border:var(--glass-border);transition:transform .5s var(--ease-out-expo), box-shadow .5s;border-radius:16px;position:relative;overflow:hidden}.gallery-item:nth-child(3n+1){aspect-ratio:4/5}.gallery-item:nth-child(3n+2){aspect-ratio:1}.gallery-item:nth-child(3n){aspect-ratio:3/4}.gallery-item:hover{box-shadow:var(--glow-strong);z-index:2;transform:scale(1.03)}.gallery-item img{object-fit:cover;width:100%;height:100%;transition:transform .6s var(--ease-out-expo)}.gallery-item:hover img{transform:scale(1.1)}.gallery-item:after{content:"";opacity:0;background:linear-gradient(#0000 50%,#3b076499 100%);transition:opacity .3s;position:absolute;inset:0}.gallery-item:hover:after{opacity:1}.gallery-placeholder,.video-placeholder{background:var(--bg-card);border:2px dashed var(--purple-800);text-align:center;border-radius:24px;flex-direction:column;grid-column:1/-1;justify-content:center;align-items:center;gap:1rem;padding:4rem 2rem;display:flex}.placeholder-icon{font-size:3rem}.gallery-placeholder p,.video-placeholder p{color:var(--text-secondary);font-size:1.1rem}.placeholder-hint{color:var(--text-muted);background:#8b5cf61a;border-radius:6px;padding:.3rem .8rem;font-family:monospace;font-size:.8rem}.videos-section{background:linear-gradient(180deg, var(--bg-primary) 0%, var(--bg-secondary) 50%, var(--bg-primary) 100%)}.videos-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem;display:grid}@media (width<=600px){.videos-grid{grid-template-columns:1fr}}.video-item{border:var(--glass-border);background:var(--glass-bg);transition:transform .4s var(--ease-out-expo), box-shadow .4s;border-radius:16px;position:relative;overflow:hidden}.video-item:hover{box-shadow:var(--glow-purple);transform:translateY(-4px)}.video-item video{border-radius:16px;width:100%;display:block}.letter-section{justify-content:center;align-items:center;min-height:80vh;display:flex;position:relative}.letter-card{background:var(--glass-bg);-webkit-backdrop-filter:blur(30px);border:var(--glass-border);max-width:650px;box-shadow:var(--glow-purple);border-radius:32px;margin:0 auto;padding:clamp(2rem,6vw,4rem);position:relative}.letter-card:before{content:"";background:linear-gradient(135deg, var(--purple-600), transparent, var(--lilac-500));z-index:-1;opacity:.3;border-radius:33px;position:absolute;inset:-1px}.letter-seal{background:linear-gradient(135deg, var(--purple-600), var(--purple-500));width:50px;height:50px;box-shadow:var(--glow-purple);border-radius:50%;justify-content:center;align-items:center;font-size:1.5rem;display:flex;position:absolute;top:-20px;left:50%;transform:translate(-50%)}.letter-greeting{font-family:var(--font-script);color:var(--purple-300);text-align:center;margin-bottom:2rem;font-size:clamp(1.8rem,5vw,2.5rem)}.letter-body{color:var(--text-secondary);font-size:clamp(.95rem,2vw,1.1rem);font-weight:300;line-height:1.8}.letter-body p{margin-bottom:1.5rem}.letter-signature{text-align:right;color:var(--purple-300);margin-top:2rem;font-style:italic}.letter-signature .script-font{font-size:1.5rem;font-style:normal}.invitation-section{background:radial-gradient(ellipse at center, #8b5cf614 0%, var(--bg-primary) 70%);justify-content:center;align-items:center;min-height:90vh;display:flex;position:relative;overflow:hidden}.invitation-card{background:var(--glass-bg);-webkit-backdrop-filter:blur(30px);border:var(--glass-border);text-align:center;border-radius:32px;max-width:600px;margin:0 auto;padding:clamp(2.5rem,6vw,4rem);position:relative;box-shadow:0 0 80px #8b5cf626}.invitation-card:before{content:"";background:linear-gradient(135deg, var(--purple-500), transparent 40%, transparent 60%, var(--lilac-400));z-index:-1;opacity:.4;border-radius:33px;animation:4s ease-in-out infinite alternate borderGlow;position:absolute;inset:-1px}@keyframes borderGlow{0%{opacity:.2}to{opacity:.5}}.invitation-icon{margin-bottom:1.5rem;font-size:3.5rem;animation:3s ease-in-out infinite moonGlow}@keyframes moonGlow{0%,to{filter:drop-shadow(0 0 10px #a855f74d);transform:scale(1)}50%{filter:drop-shadow(0 0 25px #a855f799);transform:scale(1.1)}}.invitation-title{font-family:var(--font-script);color:var(--purple-300);text-shadow:0 0 30px #a855f74d;margin-bottom:2rem;font-size:clamp(2rem,6vw,3rem)}.invitation-details{flex-direction:column;gap:1rem;margin-bottom:2rem;display:flex}.invitation-detail-item{color:var(--text-secondary);justify-content:center;align-items:center;gap:.8rem;font-size:clamp(1rem,2.5vw,1.2rem);font-weight:300;display:flex}.invitation-emoji{font-size:1.5rem}.invitation-message{color:var(--text-muted);margin-bottom:2.5rem;font-size:clamp(.95rem,2vw,1.1rem);font-weight:300;line-height:1.8}.invitation-buttons{flex-wrap:wrap;justify-content:center;gap:1rem;display:flex}.invitation-btn{transition:all .4s var(--ease-out-expo);border-radius:100px;padding:1rem 2.5rem;font-size:1.1rem;font-weight:500;position:relative;overflow:hidden}.accept-btn{color:#fff;background:linear-gradient(135deg, var(--purple-600), var(--purple-500));box-shadow:var(--glow-purple)}.accept-btn:hover{box-shadow:var(--glow-strong);transform:translateY(-3px)scale(1.05)}.accept-btn:before{content:"";background:linear-gradient(90deg,#0000,#fff3,#0000);width:100%;height:100%;transition:left .6s;position:absolute;top:0;left:-100%}.accept-btn:hover:before{left:100%}.reject-btn{color:var(--text-muted);background:#8b5cf61a;border:1px solid #8b5cf633;transition:all .15s}.reject-btn:hover{transform:scale(.95)}.invitation-accepted{text-align:center;animation:acceptReveal .8s var(--ease-out-expo)}.accepted-hearts{margin-bottom:1rem;font-size:2rem;animation:1.5s ease-in-out infinite heartPulse}.accepted-message{font-family:var(--font-script);color:var(--purple-300);margin-bottom:.5rem;font-size:clamp(1.8rem,5vw,2.5rem)}.accepted-submessage{color:var(--text-secondary);font-size:clamp(.95rem,2vw,1.1rem);font-weight:300}@keyframes acceptReveal{0%{opacity:0;transform:scale(.8)translateY(20px)}to{opacity:1;transform:scale(1)translateY(0)}}.confetti-container{pointer-events:none;z-index:1500;width:100%;height:100%;position:fixed;top:0;left:0}.confetti-piece{opacity:0;animation:3s ease-in-out forwards confettiFall;position:absolute;top:-20px}@keyframes confettiFall{0%{opacity:1;transform:translateY(0)rotate(0)scale(1)}to{opacity:0;transform:translateY(100vh)rotate(720deg)scale(.5)}}.footer-section{text-align:center;border-top:1px solid #8b5cf61a;padding:4rem 2rem}.footer-text{color:var(--purple-300);margin-bottom:.5rem;font-size:clamp(1.5rem,4vw,2.5rem)}.footer-date{color:var(--text-muted);margin-bottom:1.5rem;font-size:.9rem;font-weight:300}.footer-hearts{justify-content:center;gap:.5rem;font-size:1.2rem;display:flex}.footer-hearts span{animation:2s ease-in-out infinite heartPulse}.footer-hearts span:nth-child(2){animation-delay:.4s}.footer-hearts span:nth-child(3){animation-delay:.8s}.lightbox{z-index:2000;opacity:0;background:#000000f2;justify-content:center;align-items:center;width:100%;height:100%;transition:opacity .4s;display:flex;position:fixed;top:0;left:0}.lightbox.active{opacity:1}.lightbox-close{color:#fff;z-index:10;background:#ffffff1a;border-radius:50%;justify-content:center;align-items:center;width:50px;height:50px;font-size:2.5rem;transition:background .3s;display:flex;position:absolute;top:1.5rem;right:1.5rem}.lightbox-close:hover{background:#fff3}.lightbox-nav{color:#fff;z-index:10;opacity:.7;padding:1rem;font-size:3rem;transition:opacity .3s;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-nav:hover{opacity:1}.lightbox-prev{left:1rem}.lightbox-next{right:1rem}.lightbox-content{justify-content:center;align-items:center;max-width:90vw;max-height:90vh;display:flex}.lightbox-content img{object-fit:contain;border-radius:8px;max-width:100%;max-height:90vh;box-shadow:0 20px 60px #00000080}.reveal-text{opacity:0;animation:revealUp 1s var(--ease-out-expo) forwards;transform:translateY(30px)}.reveal-text:first-child{animation-delay:.1s}.reveal-text:nth-child(2){animation-delay:.3s}.reveal-text:nth-child(3){animation-delay:.5s}.reveal-text:nth-child(4){animation-delay:.7s}.reveal-on-scroll{opacity:0;transition:opacity .8s var(--ease-out-expo), transform .8s var(--ease-out-expo);transform:translateY(40px)}.reveal-on-scroll.visible{opacity:1;transform:translateY(0)}@keyframes heartPulse{0%,to{transform:scale(1)}50%{transform:scale(1.3)}}@keyframes floatHeart{0%{opacity:0;transform:translateY(100vh)rotate(0)}10%{opacity:.6}90%{opacity:.6}to{opacity:0;transform:translateY(-10vh)rotate(360deg)}}@keyframes orbFloat{0%,to{transform:translate(0)scale(1)}33%{transform:translate(30px,-40px)scale(1.1)}66%{transform:translate(-20px,20px)scale(.9)}}@keyframes scrollDot{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(14px)}}@keyframes soundBars{0%,to{height:4px}50%{height:18px}}@keyframes revealUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes particleFloat{0%{opacity:0;transform:translateY(0)scale(0)}20%{opacity:.8;transform:translateY(-20px)scale(1)}to{opacity:0;transform:translateY(-200px)scale(0)}}@keyframes shimmer{0%{background-position:-200%}to{background-position:200%}}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:var(--purple-800);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--purple-700)}::selection{background:var(--purple-600);color:#fff}
