.attendance-dialog-overlay{background-color:rgba(0,0,0,.5);position:fixed;inset:0;z-index:999;animation:overlayShow .15s cubic-bezier(.16,1,.3,1)}.attendance-dialog-content{background-color:white;border-radius:.5rem;box-shadow:0 10px 25px rgba(0,0,0,.2);position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:90vw;max-width:28rem;max-height:85vh;padding:2rem;z-index:1000;animation:contentShow .15s cubic-bezier(.16,1,.3,1)}.attendance-form-field{display:grid;margin-bottom:1rem}.attendance-form-label{font-size:.875rem;color:#374151;margin-bottom:.5rem}.attendance-form-input{padding:.5rem .75rem;border:1px solid #d1d5db;border-radius:.375rem;width:100%;outline:none;transition:border-color .2s}.attendance-form-input:focus{border-color:#2563eb}.attendance-form-message{font-size:.875rem;color:#ef4444;margin-top:.25rem}.attendance-form-submit{background-color:#2563eb;color:white;padding:.5rem 1rem;border-radius:.375rem;border:none;cursor:pointer;transition:background-color .2s}.attendance-form-submit:hover{background-color:#1d4ed8}.attendance-form-submit:disabled{opacity:.5;cursor:not-allowed}.attendance-form-cancel{background-color:#f5f5f5;color:#333;padding:.5rem 1rem;border-radius:.375rem;border:1px solid #ccc;cursor:pointer;margin-right:.5rem}.attendance-form-cancel:hover{background-color:#e5e5e5}.attendance-success-message{text-align:center;color:#16a34a;margin-bottom:1rem}@keyframes overlayShow{0%{opacity:0}to{opacity:1}}@keyframes contentShow{0%{opacity:0;transform:translate(-50%,-48%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.contact-section{background-color:#f9fafb}.container{padding-left:1rem;padding-right:1rem;max-width:1200px}.container,.content-wrapper{margin-left:auto;margin-right:auto}.content-wrapper{max-width:42rem}.button-container{text-align:center;margin-top:1rem}.attendance-button{padding:.75rem 1.5rem;background-color:#ec4899;color:white;border-radius:.375rem;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);border:none;cursor:pointer;transition:background-color .3s}.attendance-button:hover{background-color:#db2777}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Arial,Microsoft YaHei,SimSun,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}.wedding-container{overflow:hidden}.petals-container{position:absolute;top:0;left:0;width:100%;height:100%;z-index:0;overflow:hidden}.petal{position:absolute;top:-50px;user-select:none;z-index:1;opacity:.7;pointer-events:none}.wedding-container{min-height:100vh;display:flex;justify-content:center;align-items:center;padding:20px}.invitation-card,.wedding-container{background-color:#fff1f2;position:relative}.invitation-card{max-width:600px;width:100%;border:8px double #f9a8d4;box-shadow:0 4px 12px rgba(0,0,0,.1);z-index:5}.border-decoration{position:absolute;top:16px;left:16px;right:16px;bottom:16px;border:1px solid #f9a8d4;pointer-events:none}.corner{position:absolute;width:40px;height:40px}.corner-top-left{left:32px;border-left:2px solid #f9a8d4}.corner-top-left,.corner-top-right{top:32px;border-top:2px solid #f9a8d4}.corner-top-right{right:32px;border-right:2px solid #f9a8d4}.corner-bottom-left{left:32px;border-left:2px solid #f9a8d4}.corner-bottom-left,.corner-bottom-right{bottom:32px;border-bottom:2px solid #f9a8d4}.corner-bottom-right{right:32px;border-right:2px solid #f9a8d4}.content-wrapper{position:relative;z-index:1}.header{text-align:center;padding-bottom:20px}.title{font-size:32px;white-space:nowrap;overflow:hidden;margin:0;padding:0}.couple-names,.title{color:#e11d48;text-shadow:1px 1px 2px rgba(0,0,0,.1)}.couple-names{font-size:28px;font-weight:700;margin:16px 0}.announcement{font-size:24px;color:#e11d48;margin:16px 0}.divider{width:60%;height:1px;margin:24px auto;background-color:#f9a8d4;border-top:1px solid #f9a8d4}.divider.small{width:40%;margin:16px auto}.main-content{text-align:center;color:#4b5563}.poem{font-size:20px;color:#e11d48;margin:24px 0;line-height:1.6}.invitation-text{margin-bottom:8px;font-size:16px}.info-box{width:80%;margin:24px auto;padding:20px;background-color:#ffffff;border:1px solid #f9a8d4;border-radius:6px;opacity:.9}.info-title{font-size:20px;color:#e11d48;font-weight:700;margin-bottom:16px}.info-item{margin:8px 0;font-size:16px}.info-label{font-weight:700;color:#e11d48}.phone-link{color:#3b82f6;text-decoration:none;position:relative}.phone-link:hover{color:#1d4ed8;text-decoration:underline}.phone-link:after{content:"📞";font-size:14px;margin-left:4px;vertical-align:middle}.map-link{margin:8px 0;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#3b82f6}.map-link:hover{color:#1d4ed8}.map-icon{width:20px;height:20px;margin-left:8px}.hearts{font-size:24px;color:#e11d48;margin:24px 0;animation:pulsate 2s ease-in-out infinite}@keyframes pulsate{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.closing{font-style:italic;margin:24px 0;color:#6b7280}.flower{position:absolute;font-size:48px;opacity:.2;color:#f472b6;animation:rotate 20s linear infinite}.flower-top-left{top:24px;left:24px}.flower-top-right{top:24px;right:24px}.flower-bottom-left{bottom:24px;left:24px}.flower-bottom-right{bottom:24px;right:24px}@keyframes rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.music-button{position:fixed;bottom:20px;right:20px;z-index:50;background-color:#ffffff;border-radius:50%;width:48px;height:48px;display:flex;justify-content:center;align-items:center;box-shadow:0 2px 8px rgba(0,0,0,.1);border:1px solid #f9a8d4;opacity:.9;cursor:pointer}.music-button:hover{transform:scale(1.1)}.music-icon{font-size:24px;color:#e11d48}@keyframes falling{0%{transform:translateY(-10vh) rotate(0deg);opacity:.7}to{transform:translateY(100vh) rotate(1turn);opacity:.4}}@keyframes fluttering{0%,to{transform:translateX(0) rotate(0deg)}25%{transform:translateX(20px) rotate(20deg)}50%{transform:translateX(-15px) rotate(-15deg)}75%{transform:translateX(10px) rotate(10deg)}}.light-string{width:2px;background-color:#f9a8d4;top:-10px;opacity:.6;z-index:2}.light-bulb,.light-string{position:absolute;pointer-events:none}.light-bulb{width:10px;height:10px;border-radius:50%;left:-4px;animation:glow 2s infinite alternate}@keyframes glow{0%{box-shadow:0 0 5px 2px rgba(255,255,255,.5);opacity:.5}to{box-shadow:0 0 10px 5px rgba(255,255,255,.8);opacity:.9}}.map-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:100}.map-dialog{background-color:#ffffff;border-radius:8px;padding:24px;max-width:400px;width:100%;margin:0 16px}.map-dialog-title{font-size:20px;font-weight:700;text-align:center;margin-bottom:16px}.map-buttons{display:flex;flex-direction:column;gap:12px}.map-option{width:100%;padding:12px;background-color:#3b82f6;color:#ffffff;border:none;border-radius:6px;cursor:pointer;font-size:16px}.map-option:hover{background-color:#2563eb}.cancel-button{width:100%;margin-top:16px;padding:8px;border:1px solid #d1d5db;color:#4b5563;background-color:transparent;border-radius:6px;cursor:pointer;font-size:16px}.cancel-button:hover{background-color:#f3f4f6}@media (max-width:768px){.title{font-size:28px}.couple-names{font-size:24px}.announcement{font-size:20px}.poem{font-size:18px}.info-box{width:90%;padding:16px}.corner{width:30px;height:30px}.flower{font-size:40px}}@media (max-width:480px){.content-wrapper{padding:24px 16px}.title{font-size:24px}.couple-names{font-size:20px}.announcement{font-size:18px}.poem{font-size:16px}.info-box{width:100%;padding:12px}.info-title{font-size:18px}.info-item,.invitation-text{font-size:14px}.corner{width:20px;height:20px}.flower{font-size:32px;opacity:.15}.hearts{font-size:20px}.music-button{width:40px;height:40px}.music-icon{font-size:20px}}.music-prompt-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.7);display:flex;justify-content:center;align-items:center;z-index:1000}.music-prompt{background-color:white;padding:20px;border-radius:12px;box-shadow:0 4px 20px rgba(0,0,0,.2);text-align:center;max-width:300px;animation:fadeIn .5s ease-out}.music-prompt p{margin-bottom:15px;font-size:16px;color:#333}.music-prompt-buttons{display:flex;justify-content:center;gap:15px}.music-prompt-buttons button{padding:8px 20px;border:none;border-radius:20px;font-size:14px;cursor:pointer;transition:all .3s}.music-prompt-buttons button:first-child{background-color:#e91e63;color:white}.music-prompt-buttons button:last-child{background-color:#f5f5f5;color:#333}.music-prompt-buttons button:hover{transform:scale(1.05)}.music-button.playing .music-icon{animation:musicPlaying 1s infinite alternate}@keyframes musicPlaying{0%{transform:scale(1)}to{transform:scale(1.2)}}.wedding-container{opacity:0;transition:opacity .5s ease-in-out}.wedding-container.page-loaded{opacity:1}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(50px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideInLeft{0%{transform:translateX(-50px);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes slideInRight{0%{transform:translateX(50px);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes scaleIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}@keyframes grow{0%{width:0;opacity:0}to{width:100%;opacity:1}}@keyframes pop{0%{transform:scale(.5);opacity:0}70%{transform:scale(1.1)}to{transform:scale(1);opacity:1}}@keyframes float{0%{transform:translateY(0)}50%{transform:translateY(-10px)}to{transform:translateY(0)}}@keyframes heartbeat{0%{transform:scale(1)}25%{transform:scale(1.1)}50%{transform:scale(1)}75%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes rotateIn{0%{transform:rotate(-180deg) scale(0);opacity:0}to{transform:rotate(0) scale(1);opacity:1}}@keyframes borderGrow{0%{border-width:0;opacity:0}25%{border-width:2px 0 0;opacity:1}50%{border-width:2px 2px 0 0}75%{border-width:2px 2px 2px 0}to{border-width:2px}}@keyframes cornerReveal{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes sparkle{0%{text-shadow:0 0 0 transparent}50%{text-shadow:0 0 10px gold,0 0 20px gold}to{text-shadow:0 0 0 transparent}}@keyframes photoReveal{0%{clip-path:inset(50% 50% 50% 50%);transform:scale(.8);opacity:0}to{clip-path:inset(0 0 0 0);transform:scale(1);opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.animate-fade-in{animation:fadeIn 1s ease-out forwards}.animate-fade-in-delay{animation:fadeIn 1s ease-out .3s forwards;opacity:0}.animate-fade-in-delay-2{animation:fadeIn 1s ease-out .6s forwards;opacity:0}.animate-fade-in-delay-3{animation:fadeIn 1s ease-out .9s forwards;opacity:0}.animate-fade-in-delay-4{animation:fadeIn 1s ease-out 1.2s forwards;opacity:0}.animate-fade-in-delay-5{animation:fadeIn 1s ease-out 1.5s forwards;opacity:0}.animate-fade-in-delay-6{animation:fadeIn 1s ease-out 1.8s forwards;opacity:0}.animate-slide-up{animation:slideUp 1.2s ease-out forwards}.animate-slide-in-left{animation:slideInLeft 1s ease-out .5s forwards;opacity:0}.animate-slide-in-right{animation:slideInRight 1s ease-out .5s forwards;opacity:0}.animate-slide-in-right-delay{animation:slideInRight 1s ease-out .8s forwards;opacity:0}.animate-scale-in{animation:scaleIn .8s ease-out forwards}.animate-scale-in-delay{animation:scaleIn .8s ease-out .5s forwards;opacity:0}.animate-grow{animation:grow 1s ease-out .3s forwards;width:0;opacity:0}.animate-grow-delay{animation:grow 1s ease-out 1s forwards;width:0;opacity:0}.animate-pop{animation:pop .8s ease-out .7s forwards;opacity:0}.animate-pop-delay{animation:pop .8s ease-out 1.2s forwards;opacity:0}.animate-float{animation:float 3s ease-in-out infinite}.animate-float-delay{animation:float 3s ease-in-out .5s infinite}.animate-float-delay-2{animation:float 3s ease-in-out 1s infinite}.animate-float-delay-3{animation:float 3s ease-in-out 1.5s infinite}.animate-heartbeat{animation:heartbeat 2s ease-in-out 1.5s infinite;opacity:0;animation-fill-mode:forwards}.animate-rotate-in{animation:rotateIn 1s ease-out 1.5s forwards;opacity:0}.animate-border{animation:borderGrow 2s ease-out .3s forwards;border:0 solid #f9a8d4}.animate-corner{animation:cornerReveal .8s ease-out 1.2s forwards;opacity:0}.animate-sparkle{animation:fadeIn 1s ease-out .3s forwards,sparkle 3s ease-in-out 1.5s infinite;opacity:0}.animate-photo-reveal{animation:photoReveal 1.5s ease-out .8s forwards;opacity:0}.animate-fade-in-up{animation:fadeInUp 1s ease-out .8s forwards;opacity:0}.animate-fade-in-up-delay{animation:fadeInUp 1s ease-out 1.5s forwards;opacity:0}.animate-pulse{animation:fadeIn 1s ease-out 1s forwards,pulse 2s ease-in-out 2s infinite;opacity:0}.content-sequence>*{opacity:0}.content-sequence>:first-child{animation:fadeInUp .8s ease-out .2s forwards}.content-sequence>:nth-child(2){animation:fadeInUp .8s ease-out .4s forwards}.content-sequence>:nth-child(3){animation:fadeInUp .8s ease-out .6s forwards}.content-sequence>:nth-child(4){animation:fadeInUp .8s ease-out .8s forwards}.content-sequence>:nth-child(5){animation:fadeInUp .8s ease-out 1s forwards}.content-sequence>:nth-child(6){animation:fadeInUp .8s ease-out 1.2s forwards}.content-sequence>:nth-child(7){animation:fadeInUp .8s ease-out 1.4s forwards}.content-sequence>:nth-child(8){animation:fadeInUp .8s ease-out 1.6s forwards}.map-overlay{animation:fadeIn .3s ease-out forwards}.map-dialog{animation:scaleIn .5s ease-out forwards}.animate-border,.animate-corner,.animate-fade-in,.animate-fade-in-delay,.animate-fade-in-delay-2,.animate-fade-in-delay-3,.animate-fade-in-delay-4,.animate-fade-in-delay-5,.animate-fade-in-delay-6,.animate-fade-in-up,.animate-fade-in-up-delay,.animate-grow,.animate-grow-delay,.animate-heartbeat,.animate-photo-reveal,.animate-pop,.animate-pop-delay,.animate-pulse,.animate-rotate-in,.animate-scale-in,.animate-scale-in-delay,.animate-slide-in-left,.animate-slide-in-right,.animate-slide-in-right-delay,.animate-slide-up,.animate-sparkle{will-change:transform,opacity}.invitation-card{transform-style:preserve-3d;perspective:1000px;transition:transform .5s ease}.invitation-card:hover{transform:translateY(-5px) rotateX(2deg) rotateY(2deg);box-shadow:0 8px 20px rgba(0,0,0,.15)}@keyframes shine{0%{background-position:-100% 0}to{background-position:200% 0}}.shine-effect{position:relative;overflow:hidden}.shine-effect:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);background-size:200% 100%;animation:shine 3s linear infinite;pointer-events:none}@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}