:root{--bg-primary:transparent;--bg-secondary:transparent;--bg-card:#ffffffa6;--accent-primary:#f4a0b5;--accent-dark:#e8728a;--accent-rose-gold:#b76e79;--text-primary:#4a3040;--text-secondary:#8c6b7d;--text-light:#c9a2b0;--border-light:#f4a0b540;--shadow-soft:0 4px 24px #b86e791a;--shadow-card:0 8px 32px #b86e791f;--overlay-dark:#4a304073;--overlay-light:#fff0f3d9;--gradient-pink:linear-gradient(135deg, #fff0f3 0%, #ffd6e0 50%, #fff0f3 100%);--gradient-accent:linear-gradient(135deg, #f4a0b5 0%, #e8728a 100%);--gradient-hero:linear-gradient(180deg, #fff0f300 0%, #fff0f399 60%, #fff0f3 100%);--font-script:"Playfair Display", Georgia, serif;--font-serif:"Playfair Display", Georgia, serif;--font-sans:"Playfair Display", Georgia, serif;--section-padding:60px 24px;--container-max:480px;--transition-smooth:all .4s cubic-bezier(.25, .46, .45, .94);--transition-bounce:all .5s cubic-bezier(.68, -.55, .265, 1.55)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#0000;background-image:radial-gradient(at 20%,#fff5fa4d 0%,#0000 50%),radial-gradient(at 80% 20%,#fffafc33 0%,#0000 50%),radial-gradient(at 50% 80%,#fff8fb40 0%,#0000 50%),radial-gradient(at 70% 60%,#ffffff80 0%,#0000 40%),linear-gradient(135deg,#fff 0%,#fff9fb 25%,#fff 50%,#fff5f8 75%,#fff 100%);background-position:0 0,0 0,0 0,0 0,0 0;background-repeat:repeat,repeat,repeat,repeat,repeat;background-size:auto,auto,auto,auto,auto;background-attachment:fixed;background-origin:padding-box,padding-box,padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box,border-box,border-box;line-height:1.6;overflow-x:hidden}img{max-width:100%;height:auto;display:block}button{cursor:pointer;font-family:var(--font-sans);background:0 0;border:none}input,select,textarea{font-family:var(--font-sans);font-size:16px}a{color:inherit;text-decoration:none}.section-container{max-width:var(--container-max);padding:var(--section-padding);width:100%;margin:0 auto}.section-title{font-family:var(--font-serif);color:var(--accent-rose-gold);text-align:center;letter-spacing:.05em;margin-bottom:8px;font-size:1.5rem;font-weight:600}.section-subtitle{font-family:var(--font-script);color:var(--accent-dark);text-align:center;margin-bottom:32px;font-size:2rem}.divider{color:var(--accent-primary);justify-content:center;align-items:center;gap:12px;margin:16px auto;font-size:1.2rem;display:flex}.divider:before,.divider:after{content:"";background:var(--accent-primary);opacity:.5;width:40px;height:1px}.floral-divider{text-align:center;color:var(--accent-primary);letter-spacing:8px;opacity:.6;padding:24px 0;font-size:1.4rem}.fade-in,.fade-in-left,.fade-in-right,.float-up,.scale-in{will-change:opacity, transform}.float-up{opacity:0;transition:opacity .55s cubic-bezier(.22,1,.36,1),transform .55s cubic-bezier(.22,1,.36,1);transform:translateY(40px)scale(.98)}.float-up.visible{opacity:1;transform:translateY(0)scale(1)}.fade-in{opacity:0;transition:opacity .5s cubic-bezier(.22,1,.36,1),transform .5s cubic-bezier(.22,1,.36,1);transform:translateY(28px)}.fade-in.visible{opacity:1;transform:translateY(0)}.fade-in-left{opacity:0;transition:opacity .5s cubic-bezier(.22,1,.36,1),transform .5s cubic-bezier(.22,1,.36,1);transform:translate(-36px)}.fade-in-left.visible{opacity:1;transform:translate(0)}.fade-in-right{opacity:0;transition:opacity .5s cubic-bezier(.22,1,.36,1),transform .5s cubic-bezier(.22,1,.36,1);transform:translate(36px)}.fade-in-right.visible{opacity:1;transform:translate(0)}.scale-in{opacity:0;transition:opacity .5s cubic-bezier(.22,1,.36,1),transform .5s cubic-bezier(.22,1,.36,1);transform:scale(.88)}.scale-in.visible{opacity:1;transform:scale(1)}.btn-primary{background:var(--gradient-accent);color:#fff;letter-spacing:.03em;transition:var(--transition-smooth);border-radius:50px;justify-content:center;align-items:center;gap:8px;padding:14px 32px;font-size:.95rem;font-weight:500;display:inline-flex;box-shadow:0 4px 16px #e8728a4d}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 6px 24px #e8728a66}.btn-primary:active{transform:translateY(0)}.btn-outline{border:2px solid var(--accent-primary);color:var(--accent-dark);letter-spacing:.03em;transition:var(--transition-smooth);border-radius:50px;justify-content:center;align-items:center;gap:8px;padding:12px 28px;font-size:.9rem;font-weight:500;display:inline-flex}.btn-outline:hover{background:var(--accent-primary);color:#fff}.card{background:var(--bg-card);-webkit-backdrop-filter:blur(12px);box-shadow:var(--shadow-card);border:1px solid var(--border-light);border-radius:16px;padding:24px}.floating-heart{pointer-events:none;z-index:9999;font-size:1.4rem;animation:2.5s ease-out forwards floatUp;position:fixed}@keyframes floatUp{0%{opacity:1;transform:translateY(0)scale(1)rotate(0)}50%{opacity:.8;transform:translateY(-200px)scale(1.2)rotate(-15deg)}to{opacity:0;transform:translateY(-450px)scale(.6)rotate(15deg)}}@media (width>=768px){:root{--section-padding:80px 40px;--container-max:640px}.section-title{font-size:1.8rem}.section-subtitle{font-size:2.4rem}}@media (width>=1024px){:root{--container-max:720px}}.envelope-screen{z-index:1000;background:#fdfaf9;justify-content:center;align-items:center;transition:opacity .8s .6s,transform .8s .6s;display:flex;position:fixed;inset:0;overflow:hidden}.envelope-screen.opening{opacity:0;pointer-events:none;transform:scale(1.05)}.envelope-bg-decor{pointer-events:none;position:absolute;inset:0;overflow:hidden}.petal{opacity:.15;font-size:2rem;animation:8s ease-in-out infinite floatPetal;position:absolute}.petal-1{font-size:2.4rem;animation-delay:0s;top:8%;left:10%}.petal-2{font-size:1.8rem;animation-delay:1.5s;top:14%;right:11%}.petal-3{font-size:2.1rem;animation-delay:3s;top:62%;left:5%}.petal-4{font-size:1.5rem;animation-delay:4.5s;top:74%;right:7%}.petal-5{font-size:1.9rem;animation-delay:2s;top:42%;left:84%}.petal-6{font-size:1.4rem;animation-delay:5s;bottom:14%;left:44%}@keyframes floatPetal{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(-14px)rotate(8deg)}}.book-container{z-index:2;perspective:1400px;flex-direction:column;align-items:center;width:100%;max-width:420px;padding:0 20px;display:flex;position:relative}.book-wrapper{aspect-ratio:3/4;cursor:pointer;width:100%;transform-style:preserve-3d;transition:transform .4s;position:relative;transform:rotateY(-2deg)rotateX(2deg)}.book-wrapper:hover{transform:rotateY(0)rotateX(0)scale(1.02)}.book-inside{background:#f0e8e5;border:1px solid #8c5a591a;border-radius:4px 12px 12px 4px;position:absolute;inset:0;overflow:hidden;box-shadow:6px 8px 24px #0000001f}.book-inside-photo{object-fit:cover;object-position:top center;filter:sepia(.1)brightness(1.05);width:100%;height:100%}.book-cover{transform-style:preserve-3d;transform-origin:0;z-index:5;transition:transform 1.4s cubic-bezier(.645,.045,.355,1);position:absolute;inset:0}.envelope-screen.opening .book-cover{transform:rotateY(-180deg)}.book-front,.book-back{backface-visibility:hidden;position:absolute;inset:0}.book-front{background:#fffbfa linear-gradient(90deg,#00000014 0%,#0000 8% 100%);border:1px solid #8c5a591a;border-radius:4px 12px 12px 4px;flex-direction:column;justify-content:center;align-items:center;display:flex;box-shadow:5px 5px 20px #00000026}.book-back{background:#f4eae7;border-radius:12px 4px 4px 12px;transform:rotateY(180deg);box-shadow:inset 4px 0 10px #0000000d}.book-front-content{text-align:center;margin-bottom:30px;padding:20px}.envelope-label{font-family:var(--font-sans);color:#8c5a59;letter-spacing:.42em;text-transform:uppercase;margin-bottom:6px;font-size:.7rem;font-weight:500}.envelope-vn-label{font-family:var(--font-sans);color:#843a37;letter-spacing:.12em;text-transform:uppercase;margin:0 0 16px;font-size:clamp(1.2rem,4.5vw,1.6rem);font-weight:600}.envelope-couple{flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex}.couple-name{font-family:var(--font-script);color:#5c2d2b;font-size:clamp(1.8rem,7vw,2.4rem);line-height:1}.couple-amp{font-family:var(--font-script);color:#b07070;margin:4px 0;font-size:clamp(1.4rem,5vw,1.8rem);line-height:1}.open-btn{background:var(--gradient-accent);color:#fff;font-family:var(--font-sans);letter-spacing:.03em;transition:var(--transition-smooth);cursor:pointer;white-space:nowrap;border-radius:50px;align-items:center;gap:8px;padding:13px 34px;font-size:.92rem;font-weight:500;animation:2.5s infinite gentleBounce;display:inline-flex;position:absolute;bottom:40px;left:50%;transform:translate(-50%);box-shadow:0 4px 20px #e8728a59}.open-btn:active{transform:translate(-50%)scale(.95)}@keyframes gentleBounce{0%,to{transform:translate(-50%)translateY(0)}50%{transform:translate(-50%)translateY(-5px)}}.scroll-hint{opacity:.4;margin-top:16px}.scroll-arrow{border-right:2px solid var(--accent-rose-gold);border-bottom:2px solid var(--accent-rose-gold);width:18px;height:18px;animation:1.6s infinite scrollBounce;transform:rotate(45deg)}@keyframes scrollBounce{0%,to{opacity:.4;transform:rotate(45deg)translateY(0)}50%{opacity:1;transform:rotate(45deg)translateY(5px)}}.hearts-container{pointer-events:none;z-index:10;width:100%;height:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.flying-heart{opacity:0;font-size:1.6rem;animation:2s ease-out forwards flyHeart;position:absolute;bottom:25%;left:50%}.heart-0{--tx:-60px;--ty:-200px;--r:-20deg;animation-delay:.1s;left:40%}.heart-1{--tx:70px;--ty:-250px;--r:30deg;animation-delay:.2s;left:60%}.heart-2{--tx:10px;--ty:-300px;--r:10deg;animation-delay:50ms;left:50%}.heart-3{--tx:-90px;--ty:-180px;--r:-40deg;animation-delay:.3s;left:45%}.heart-4{--tx:100px;--ty:-220px;--r:45deg;animation-delay:.15s;left:55%}.heart-5{--tx:-40px;--ty:-280px;--r:-10deg;animation-delay:.4s;left:42%}.heart-6{--tx:50px;--ty:-260px;--r:25deg;animation-delay:.25s;left:58%}.heart-7{--tx:-70px;--ty:-210px;--r:-30deg;animation-delay:.35s;left:48%}.heart-8{--tx:80px;--ty:-290px;--r:35deg;animation-delay:.1s;left:52%}.heart-9{--tx:-110px;--ty:-150px;--r:-50deg;animation-delay:.45s;left:35%}.heart-10{--tx:120px;--ty:-170px;--r:55deg;animation-delay:.2s;left:65%}.heart-11{--tx:0px;--ty:-320px;--r:5deg;animation-delay:.3s;left:50%}@keyframes flyHeart{0%{opacity:0;transform:translate(0)scale(.5)rotate(0)}20%{opacity:1;transform:translate(calc(var(--tx) * .2), calc(var(--ty) * .2)) scale(1.2) rotate(var(--r))}to{opacity:0;transform:translate(var(--tx), var(--ty)) scale(1) rotate(calc(var(--r) * 2))}}.event-section{background:var(--bg-secondary);padding:40px 0;position:relative;overflow:hidden}.event-section:before{content:"";background:var(--gradient-accent);opacity:.3;width:100%;height:4px;position:absolute;top:0;left:50%;transform:translate(-50%)}.elegant-event-block{text-align:center;margin-bottom:70px;padding:0 16px}.elegant-event-block:last-child{margin-bottom:40px}.elegant-title{font-family:var(--font-serif);color:var(--text-primary);letter-spacing:.08em;margin-bottom:8px;font-size:clamp(1.2rem,5vw,1.5rem);font-weight:500}.elegant-time{font-family:var(--font-sans);color:var(--text-primary);letter-spacing:.05em;margin-bottom:24px;font-size:clamp(.9rem,3vw,1.1rem)}.elegant-date-block{justify-content:center;align-items:center;gap:16px;margin:24px 0 16px;display:flex}.date-side{border-top:1px solid var(--text-primary);border-bottom:1px solid var(--text-primary);font-family:var(--font-serif);color:var(--text-primary);letter-spacing:.05em;min-width:80px;padding:10px 0;font-size:clamp(1rem,4vw,1.4rem)}.date-center{font-family:var(--font-serif);color:var(--accent-rose-gold);padding:0 8px;font-size:clamp(4rem,15vw,6rem);font-weight:500;line-height:1}.elegant-lunar{font-family:var(--font-serif);color:var(--text-secondary);margin-bottom:30px;font-size:1rem;font-style:italic}.elegant-venue-section{flex-direction:column;align-items:center;gap:6px;display:flex}.venue-label{font-family:var(--font-serif);color:var(--text-secondary);letter-spacing:.05em;text-transform:uppercase;font-size:1.1rem}.venue-name{font-family:var(--font-serif);color:var(--text-primary);letter-spacing:.03em;margin-top:4px;font-size:clamp(1rem,3.5vw,1.3rem);font-weight:600}.venue-address{font-family:var(--font-serif);color:var(--text-secondary);max-width:320px;margin:0 auto;font-size:.95rem}.elegant-map-section{text-align:center;margin-top:24px;padding:0 16px}.event-map-container{width:100%;max-width:500px;box-shadow:var(--shadow-soft);border:1px solid var(--border-light);border-radius:12px;margin:0 auto 12px;overflow:hidden}.event-map-iframe{border:none;width:100%;height:250px;display:block}.elegant-map-btn{border:1px solid var(--accent-rose-gold);color:var(--accent-rose-gold);font-family:var(--font-sans);letter-spacing:.03em;transition:var(--transition-smooth);background:0 0;border-radius:4px;justify-content:center;align-items:center;gap:8px;padding:10px 24px;font-size:.9rem;font-weight:500;display:inline-flex}.elegant-map-btn:hover{background:var(--accent-rose-gold);color:#fff;box-shadow:var(--shadow-soft);transform:translateY(-2px)}.calendar-section{background:var(--bg-primary)}.calendar-card{padding:28px 20px}.calendar-header{text-align:center;justify-content:center;align-items:center;gap:10px;margin-bottom:20px;display:flex}.calendar-month{font-family:var(--font-serif);color:var(--accent-dark);font-size:1.3rem;font-weight:600}.calendar-year{font-family:var(--font-serif);color:var(--text-secondary);font-size:1.3rem;font-weight:400}.calendar-grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.calendar-day-header{text-align:center;color:var(--accent-rose-gold);text-transform:uppercase;letter-spacing:.05em;padding:8px 0;font-size:.75rem;font-weight:600}.calendar-cell{text-align:center;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;min-height:40px;padding:8px 0;transition:background .3s;display:flex;position:relative}.calendar-cell.empty{pointer-events:none}.cell-number{color:var(--text-primary);font-size:.85rem;font-weight:400}.calendar-cell.wedding-day{background:var(--gradient-accent);border-radius:50%;width:44px;height:44px;margin:0 auto;animation:2s infinite pulseDay;box-shadow:0 4px 16px #e8728a59}.calendar-cell.wedding-day .cell-number{color:#fff;font-size:.9rem;font-weight:700}.heart-mark{font-size:.6rem;position:absolute;bottom:-6px}@keyframes pulseDay{0%,to{box-shadow:0 4px 16px #e8728a59}50%{box-shadow:0 4px 24px #e8728a8c}}.timeline-section{background:var(--bg-secondary);position:relative}.timeline-wrapper{flex-direction:column;gap:0;display:flex}.timeline-item{grid-template-columns:60px 40px 1fr;align-items:start;gap:8px;min-height:80px;display:grid}.timeline-time{font-family:var(--font-serif);color:var(--accent-dark);text-align:right;padding-top:4px;font-size:.95rem;font-weight:600}.timeline-dot-line{flex-direction:column;align-items:center;display:flex;position:relative}.timeline-dot{background:var(--bg-card);border:2px solid var(--accent-primary);z-index:2;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:1rem;display:flex;box-shadow:0 2px 8px #f4a0b533}.timeline-line{background:linear-gradient(180deg, var(--accent-primary) 0%, transparent 100%);opacity:.4;flex:1;width:2px;min-height:40px}.timeline-content{padding:4px 0 24px}.timeline-title{font-family:var(--font-serif);color:var(--text-primary);margin-bottom:4px;font-size:1rem;font-weight:600}.timeline-desc{color:var(--text-secondary);font-size:.85rem;line-height:1.5}.couple-section{background:var(--bg-primary)}.couple-card{text-align:center;background:var(--bg-card);box-shadow:var(--shadow-card);border:1px solid var(--border-light);border-radius:20px;flex-direction:column;align-items:center;padding:24px;display:flex}.couple-avatar-wrap{margin-bottom:16px;position:relative}.couple-avatar{z-index:2;border-radius:50%;justify-content:center;align-items:center;width:110px;height:110px;display:flex;position:relative;overflow:hidden}.groom-avatar{background:linear-gradient(135deg,#e8f4fd 0%,#d6eaf8 100%)}.bride-avatar{background:linear-gradient(135deg,#fdeef4 0%,#f8d7e7 100%)}.avatar-emoji{font-size:3.5rem}.avatar-ring{border:2px solid var(--accent-primary);opacity:.5;border-radius:50%;position:absolute;inset:-4px}.couple-info{width:100%}.couple-label{font-family:var(--font-serif);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.15em;margin-bottom:4px;font-size:.8rem}.couple-name{font-family:var(--font-script);color:var(--accent-dark);margin-bottom:12px;font-size:1.8rem}.couple-detail{color:var(--text-secondary);margin-bottom:4px;font-size:.85rem}.couple-family{border-top:1px dashed var(--border-light);margin-top:16px;padding-top:16px}.family-label{font-family:var(--font-serif);color:var(--accent-rose-gold);text-transform:uppercase;letter-spacing:.15em;margin-bottom:6px;font-size:.75rem;font-weight:600}.couple-family p{color:var(--text-secondary);font-size:.85rem;line-height:1.6}.family-address{margin-top:6px;color:var(--text-light)!important;font-size:.8rem!important}.couple-heart-divider{text-align:center;padding:20px 0;font-size:1.4rem}.gallery-section{background:var(--bg-secondary)}.gallery-carousel{scroll-snap-type:x mandatory;scrollbar-width:none;gap:16px;padding:0 16px 24px;display:flex;overflow-x:auto}.gallery-carousel::-webkit-scrollbar{display:none}.gallery-item{cursor:pointer;scroll-snap-align:center;border-radius:12px;flex:0 0 85%;height:420px;transition:transform .3s;overflow:hidden}.gallery-item:active{transform:scale(.97)}.gallery-photo{border-radius:12px;width:100%;height:100%;position:relative}.gallery-img{object-fit:cover;width:100%;height:100%;display:block}.lightbox{z-index:2000;background:#000000e6;justify-content:center;align-items:center;animation:.3s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.lightbox-close{color:#fff;z-index:3;opacity:.7;padding:8px 12px;font-size:1.5rem;transition:opacity .3s;position:absolute;top:20px;right:20px}.lightbox-close:hover{opacity:1}.lightbox-content{justify-content:center;align-items:center;width:90vw;max-width:800px;height:80vh;display:flex}.lightbox-img{object-fit:contain;border-radius:8px;max-width:100%;max-height:100%;box-shadow:0 4px 30px #00000080}.lightbox-nav{color:#fff;opacity:.6;z-index:3;padding:16px;font-size:2.5rem;transition:opacity .3s;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-nav:hover{opacity:1}.lightbox-prev{left:8px}.lightbox-next{right:8px}@media (width>=768px){.gallery-carousel{justify-content:center;padding:0 40px 24px}.gallery-item{flex:0 0 350px;height:500px}}@media (width>=1024px){.gallery-item{flex:0 0 400px;height:550px}}.rsvp-section{background:var(--bg-primary)}.rsvp-form{flex-direction:column;gap:20px;padding:32px 24px;display:flex}.form-group{flex-direction:column;gap:8px;display:flex}.form-label{font-family:var(--font-serif);color:var(--text-primary);font-size:.9rem;font-weight:500}.form-input{border:2px solid var(--border-light);color:var(--text-primary);background:var(--bg-secondary);-webkit-appearance:none;border-radius:12px;outline:none;padding:14px 16px;font-size:.95rem;transition:border-color .3s,box-shadow .3s}.form-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px #f4a0b526}.form-input::placeholder{color:var(--text-light)}.form-select{cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238C6B7D' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-position:right 16px center;background-repeat:no-repeat;padding-right:40px}.radio-group{gap:12px;display:flex}.radio-option{border:2px solid var(--border-light);cursor:pointer;transition:var(--transition-smooth);color:var(--text-secondary);border-radius:12px;flex:1;align-items:center;gap:8px;padding:14px 16px;font-size:.9rem;display:flex}.radio-option input{display:none}.radio-option.active{border-color:var(--accent-primary);color:var(--accent-dark);background:#f4a0b514}.radio-icon{font-size:1.2rem}.rsvp-submit{width:100%;margin-top:8px}.rsvp-success{text-align:center;padding:40px 24px}.success-icon{margin-bottom:16px;font-size:3rem;animation:.6s bounceIn}@keyframes bounceIn{0%{opacity:0;transform:scale(0)}60%{transform:scale(1.2)}to{opacity:1;transform:scale(1)}}.success-title{font-family:var(--font-script);color:var(--accent-dark);margin-bottom:12px;font-size:2rem}.success-message{color:var(--text-secondary);font-size:.95rem;line-height:1.6}.rsvp-toast{background:var(--gradient-accent);color:#fff;border-radius:16px;align-items:center;gap:12px;margin-top:16px;padding:16px 20px;animation:.5s cubic-bezier(.18,.89,.32,1.28) toastIn;display:flex;box-shadow:0 8px 24px #e8728a4d}.toast-icon{font-size:1.8rem}.toast-text{text-align:left}.toast-title{margin-bottom:2px;font-size:1rem;font-weight:600}.toast-msg{opacity:.9;font-size:.85rem;line-height:1.4}@keyframes toastIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.gift-section{background:var(--bg-secondary);padding:40px 0}.gift-main-title{font-family:var(--font-sans);color:#df9899;text-align:center;letter-spacing:.1em;margin-bottom:40px;font-size:1.5rem;font-weight:500}.gift-rows{flex-direction:column;gap:32px;padding:0 16px;display:flex}.gift-row{align-items:center;gap:16px;width:100%;display:flex}.gift-row.reverse{flex-direction:row-reverse}.gift-avatar-frame{border:3px dashed #dca5a6;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:110px;height:110px;padding:4px;display:flex}.gift-avatar-img{object-fit:cover;border-radius:50%;width:100%;height:100%}.gift-info-card{cursor:pointer;background:#ede6e2;border-radius:28px;flex-direction:column;flex:1;align-items:center;padding:18px;transition:transform .2s;display:flex;position:relative;box-shadow:0 4px 12px #0000000d}.gift-info-card:active{transform:scale(.98)}.gift-holder{font-family:var(--font-sans);color:#333;text-transform:uppercase;letter-spacing:1px;text-align:center;border-bottom:1px solid #0000000f;width:100%;margin-bottom:12px;padding-bottom:8px;font-size:.9rem;font-weight:600}.gift-card-content{justify-content:flex-end;align-items:center;gap:16px;width:100%;display:flex}.gift-text-info{text-align:right;flex-direction:column;flex:1;gap:2px;display:flex}.gift-bank{font-family:var(--font-sans);color:#333;font-size:.9rem;font-weight:600}.gift-account{font-family:var(--font-sans);color:#333;letter-spacing:.5px;font-size:1rem;font-weight:500}.gift-qr-box{background:var(--bg-primary);border-radius:12px;flex-shrink:0;width:90px;height:90px;padding:8px;box-shadow:0 4px 16px #df989966}.qr-image{object-fit:contain;mix-blend-mode:multiply;border-radius:4px;width:100%;height:100%;display:block}.copy-toast{color:#fff;background:#6bcb77;border-radius:20px;padding:4px 12px;font-size:.75rem;animation:.3s toastFadeIn;position:absolute;top:-10px;left:50%;transform:translate(-50%)}@keyframes toastFadeIn{0%{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%)}}@media (width>=768px){.gift-row{justify-content:center;max-width:600px;margin:0 auto}}.wishes-section{background:var(--bg-primary)}.wishes-list{flex-direction:column;gap:16px;margin-bottom:24px;display:flex}.wish-bubble{background:var(--bg-card);box-shadow:var(--shadow-soft);border:1px solid var(--border-light);border-radius:16px;padding:16px 20px;position:relative}.wish-bubble:after{content:"";background:var(--bg-card);border-right:1px solid var(--border-light);border-bottom:1px solid var(--border-light);width:12px;height:12px;position:absolute;bottom:-6px;left:24px;transform:rotate(45deg)}.wish-header{align-items:center;gap:8px;margin-bottom:8px;display:flex}.wish-emoji{font-size:1.2rem}.wish-name{font-family:var(--font-serif);color:var(--accent-dark);font-size:.9rem;font-weight:600}.wish-message{color:var(--text-secondary);font-size:.9rem;line-height:1.6}.wishes-more-btn{margin:0 auto 16px;display:block}.wishes-send-btn{width:100%;margin:0 auto;display:block}.floating-toolbar{-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--border-light);z-index:900;max-width:var(--container-max);background:#ffffffd9;justify-content:space-around;align-items:center;margin:0 auto;padding:10px 16px 14px;display:flex;position:fixed;bottom:0;left:0;right:0}@supports not ((-webkit-backdrop-filter:blur(16px)) or (backdrop-filter:blur(16px))){.floating-toolbar{background:#fff5f7f7}}.toolbar-btn{transition:var(--transition-smooth);border-radius:12px;flex-direction:column;align-items:center;gap:2px;padding:6px 16px;display:flex;position:relative}.toolbar-btn:active{background:#f4a0b51a;transform:scale(.9)}.toolbar-icon{font-size:1.4rem;line-height:1}.toolbar-label{color:var(--text-secondary);letter-spacing:.02em;font-size:.65rem;font-weight:500}.heart-btn .toolbar-icon{transition:transform .2s}.heart-btn:active .toolbar-icon{transform:scale(1.3)}.heart-counter{background:var(--accent-dark);color:#fff;border-radius:9px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 4px;font-size:.6rem;font-weight:700;line-height:1;display:flex;position:absolute;top:-2px;right:4px}body{padding-bottom:80px}.modal-overlay{-webkit-backdrop-filter:blur(4px);z-index:1500;background:#4a304080;justify-content:center;align-items:flex-end;padding:0;animation:.3s fadeIn;display:flex;position:fixed;inset:0}.modal-content{width:100%;max-width:var(--container-max);border-radius:20px 20px 0 0;max-height:85vh;padding:28px 24px 36px;animation:.4s cubic-bezier(.25,.46,.45,.94) slideUp;position:relative;overflow-y:auto}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-close{color:var(--text-secondary);padding:4px 8px;font-size:1.2rem;transition:color .3s;position:absolute;top:16px;right:16px}.modal-close:hover{color:var(--text-primary)}.modal-title{font-family:var(--font-script);color:var(--accent-dark);text-align:center;margin-bottom:8px;font-size:1.8rem}.modal-desc{text-align:center;color:var(--text-secondary);margin-bottom:24px;font-size:.85rem}.modal-form{flex-direction:column;gap:16px;display:flex}.form-textarea{resize:vertical;min-height:100px;line-height:1.6}.modal-submit{width:100%;margin-top:8px}.footer-section{background:var(--gradient-pink);padding-bottom:100px}.footer-content{text-align:center;padding:20px 0}.footer-thanks{font-family:var(--font-script);color:var(--accent-dark);margin-bottom:16px;font-size:2.2rem}.footer-names{font-family:var(--font-script);color:var(--accent-rose-gold);justify-content:center;align-items:center;gap:12px;margin-bottom:8px;font-size:1.4rem;display:flex}.footer-heart{color:var(--accent-dark);font-size:1rem;animation:1.5s infinite pulse-heart}@keyframes pulse-heart{0%,to{transform:scale(1)}50%{transform:scale(1.2)}}.footer-date{color:var(--text-secondary);letter-spacing:.05em;margin-bottom:16px;font-size:.9rem}.footer-ornament{color:var(--accent-primary);letter-spacing:8px;opacity:.5;margin-bottom:16px;font-size:1rem}.footer-credit{color:var(--text-light);font-size:.75rem}.music-player{-webkit-backdrop-filter:blur(8px);cursor:pointer;z-index:950;border:1px solid var(--border-light);background:#ffffffd9;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;transition:transform .3s;display:flex;position:fixed;top:24px;right:24px;box-shadow:0 4px 16px #b76e7940}.music-player:active{transform:scale(.9)}.music-icon{justify-content:center;align-items:center;display:flex}.vinyl-svg{border-radius:50%;display:block;box-shadow:0 2px 4px #0000001a}.music-player.playing .music-icon{animation:4s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.hero-countdown{justify-content:center;gap:12px;margin:32px 0;display:flex}.countdown-box{color:#fff;background:#a1403c;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;width:60px;height:68px;display:flex;box-shadow:0 4px 12px #a1403c4d}.countdown-number{font-family:var(--font-sans);font-size:1.2rem;font-weight:500;line-height:1.2}.countdown-label{font-family:var(--font-sans);opacity:.9;font-size:.8rem;font-weight:400}.invitation-section{background:var(--bg-primary);text-align:center;padding:40px 24px 60px}.invitation-title{font-family:var(--font-sans);color:#702927;letter-spacing:.4em;text-transform:uppercase;margin-bottom:24px;font-size:1.8rem}.invitation-paragraph{font-family:var(--font-sans);color:#702927;max-width:600px;margin:0 auto;font-size:.95rem;line-height:2.2}@media (width>=768px){.invitation-title{font-size:2.4rem}}.wedding-app{background:var(--bg-primary);min-height:100dvh}.hero-intro{background:url(/assets/hero-B3HDKJrp.jpg) 50% 20%/cover no-repeat;justify-content:center;align-items:center;min-height:100dvh;display:flex;position:relative;overflow:hidden}.hero-intro:before{content:"";pointer-events:none;background:#fff0f366;position:absolute;inset:0}.hero-overlay{pointer-events:none;background:var(--gradient-hero);position:absolute;inset:0}.hero-content{z-index:2;text-align:center;flex-direction:column;justify-content:flex-end;width:100%;min-height:100dvh;padding:40px 24px 100px;animation:1.2s heroFadeIn;display:flex;position:relative}@keyframes heroFadeIn{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.hero-label-top{font-family:var(--font-sans);color:#702927;letter-spacing:.15em;text-transform:uppercase;text-shadow:0 2px 4px #fffc;margin-bottom:12px;font-size:.85rem;font-weight:500}.hero-names-inline{text-shadow:0 2px 8px #fff9;justify-content:center;align-items:center;gap:16px;margin-bottom:24px;display:flex}.hero-groom,.hero-bride{font-family:var(--font-script);color:#702927;font-size:2.5rem;line-height:1.2}.hero-amp{font-family:var(--font-serif);color:#702927;opacity:.8;font-size:1.4rem;line-height:1.4}.hero-scroll-hint{opacity:.6;cursor:pointer;flex-direction:column;align-items:center;animation:2s ease-in-out infinite bounce;display:flex;position:absolute;bottom:30px;left:50%;transform:translate(-50%)}.scroll-arrow{border-bottom:2px solid #a1403c;border-right:2px solid #a1403c;width:16px;height:16px;transform:rotate(45deg)}@keyframes bounce{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,10px)}}.wedding-main{animation:.8s mainReveal}@keyframes mainReveal{0%{opacity:0}to{opacity:1}}.fade-in-slow{animation:2.5s ease-out forwards fadeInSlow}@keyframes fadeInSlow{0%{opacity:0;transform:translateY(15px)}30%{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}@media (width>=768px){.hero-groom,.hero-bride{font-size:3.5rem}.hero-amp{font-size:1.8rem}.hero-label-top{font-size:1rem}}
