.floral-corner{position:absolute;width:80px;height:80px;display:none}.floral-corner--top-left{top:0;left:0}.floral-corner--top-right{top:0;right:0;transform:scaleX(-1)}.floral-corner--bottom-left{bottom:0;left:0;transform:scaleY(-1)}.floral-corner--bottom-right{bottom:0;right:0;transform:scale(-1)}@media(min-width:1024px){.floral-corner{display:block}}.section{position:relative;scroll-margin-top:0;padding:3rem 1.5rem;opacity:0;transform:translateY(24px);transition:opacity .7s cubic-bezier(.22,.61,.36,1),transform .7s cubic-bezier(.22,.61,.36,1)}.section.is-visible{opacity:1;transform:translateY(0)}.section-inner{max-width:720px;margin:0 auto}@media(min-width:640px){.section{padding:5rem 2rem}}@media(min-width:1024px){.section{padding:6rem 2rem}}@media(prefers-reduced-motion:reduce){.section{opacity:1;transform:none;transition:none}}.divider{display:flex;align-items:center;justify-content:center;gap:.75rem;max-width:280px;margin:0 auto;padding:0 1.5rem}.divider-line{flex:1;height:1px;background:linear-gradient(to right,transparent,var(--gold),transparent)}.divider-icon{font-size:1.25rem;flex-shrink:0;color:var(--gold)}.petals{position:fixed;inset:0;pointer-events:none;z-index:1;overflow:hidden}.petal{position:absolute;top:-10%;opacity:0;will-change:transform;animation:petal-fall linear infinite}@keyframes petal-fall{0%{transform:translateY(0) rotate(0) translate(0);opacity:0}10%{opacity:.7}90%{opacity:.5}to{transform:translateY(110vh) rotate(360deg) translate(30px);opacity:0}}@media(prefers-reduced-motion:reduce){.petals{display:none}}.nav-dots{position:fixed;right:1.5rem;top:50%;transform:translateY(-50%);display:none;flex-direction:column;gap:.75rem;z-index:10}.nav-dot{display:flex;align-items:center;gap:.5rem;text-decoration:none;color:inherit;cursor:pointer;padding:.25rem}.nav-dot-pip{width:10px;height:10px;border-radius:50%;border:1.5px solid var(--gold);background:transparent;transition:background .3s,transform .3s;flex-shrink:0}.nav-dot--active .nav-dot-pip{background:var(--gold);transform:scale(1.3)}.nav-dot-label{font-size:.75rem;color:var(--text-soft-light);opacity:0;transform:translate(-4px);transition:opacity .3s,transform .3s;white-space:nowrap}.nav-dot:hover .nav-dot-label,.nav-dot--active .nav-dot-label{opacity:1;transform:translate(0)}@media(min-width:1024px){.nav-dots{display:flex}}.music-toggle{position:fixed;top:1rem;right:1rem;width:48px;height:48px;border-radius:50%;border:2px solid var(--gold);background:#6e1420bf;color:var(--gold);font-size:1.8rem;cursor:pointer;z-index:150;display:flex;align-items:center;justify-content:center;animation:music-pulse 2s ease-in-out infinite;transition:background .3s}.music-toggle:hover{background:#a01f30e6}.music-toggle--playing{animation:music-spin 4s linear infinite}.music-icon{line-height:1}@keyframes music-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}@keyframes music-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.music-toggle,.music-toggle--playing{animation:none}}:root{--red-deep: #6e1420;--red: #a01f30;--rose: #c5304a;--blush: #f0b4c0;--petal: #ffe9ec;--ivory: #fff7ef;--cream: #f7efe3;--gold: #e6c069;--ink: #7a2a33;--text-soft: #b8838d;--text-light: #fff3ec;--text-soft-light: #f3cdd3;--font-display: "Cormorant Garamond", "Georgia", serif;--font-body: "Noto Serif SC", "Songti SC", "STSong", "SimSun", serif;--font-names: "Songti SC", "STSong", "SimSun", "Noto Serif SC", serif;--max-content: 720px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:var(--font-body);color:var(--text-light);background:linear-gradient(180deg,var(--red-deep) 0%,var(--red) 45%,var(--red-deep) 100%);background-attachment:fixed;min-height:100vh;line-height:1.7;-webkit-font-smoothing:antialiased}img{max-width:100%;height:auto;display:block}a{color:var(--rose);text-decoration:none}:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:4px}h1,h2,h3{font-weight:600;line-height:1.3}.section-title{text-align:center;margin-bottom:2.5rem}.section-title-main{font-size:clamp(1.6rem,6vw,2rem);color:var(--text-light);display:block}.section-title-sub{display:block;font-family:var(--font-display);font-style:italic;font-weight:400;font-size:1.1rem;color:var(--gold);letter-spacing:.08em;margin-top:.25rem}@media(min-width:640px){.section-title-sub{font-size:1.25rem}}.app{position:relative}.hero-section{min-height:100vh;display:flex;align-items:center;justify-content:center;text-align:center;padding:1.5rem 1.5rem 4rem;position:relative}.hero-content{max-width:var(--max-content)}.hero-photo-frame{width:min(72vw,360px);margin:0 auto 2rem}.hero-photo-frame img{width:100%;height:auto;display:block;filter:drop-shadow(0 14px 36px rgba(0,0,0,.4));transform:translate(-3.5%)}.hero-eyebrow{font-family:var(--font-display);font-style:italic;font-size:1.1rem;color:var(--gold);letter-spacing:.1em;margin-bottom:1rem}.hero-names{font-family:var(--font-names);font-size:clamp(2rem,7.5vw,4rem);font-weight:600;color:var(--text-light);line-height:1.35}.hero-names .amp{font-family:Cormorant Garamond,Georgia,serif;font-style:normal;font-weight:500;color:var(--gold);font-size:clamp(1.7rem,5.5vw,2.75rem);vertical-align:middle;margin:0 .25rem}.hero-date{margin-top:.75rem;font-size:clamp(1.1rem,4.2vw,1.5rem);font-weight:700;color:var(--text-soft-light);font-variant-numeric:tabular-nums;letter-spacing:.08em}.hero-scroll-hint{display:flex;flex-direction:column;align-items:center;gap:.25rem;color:var(--text-soft-light);font-size:.8rem;margin-top:2.5rem;animation:hero-bounce 2s ease-in-out infinite}@keyframes hero-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(8px)}}.hero-scroll-arrow{font-size:1.25rem}@media(min-width:640px){.hero-eyebrow{font-size:1.25rem}}@media(prefers-reduced-motion:reduce){.hero-scroll-hint{animation:none}}@media(max-height:640px){.hero-photo-frame{width:min(42vw,240px);margin-bottom:1.25rem}.hero-scroll-hint{margin-top:1.25rem}}.countdown-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;max-width:500px;margin:0 auto}.countdown-tile{text-align:center;background:#ffffff14;border:1px solid rgba(230,192,105,.25);border-radius:12px;padding:1rem .5rem;box-shadow:0 2px 12px #00000026}.countdown-number{font-size:clamp(1.75rem,7vw,2.75rem);font-weight:700;color:var(--text-light);line-height:1.1;font-variant-numeric:tabular-nums}.countdown-label{font-size:.75rem;color:var(--text-soft-light);margin-top:.25rem;font-family:var(--font-display);letter-spacing:.05em}@media(min-width:640px){.countdown-grid{gap:1rem}.countdown-tile{padding:1.5rem 1rem}.countdown-number{font-size:2.75rem}.countdown-label{font-size:.85rem}}.gallery-strip{display:flex;gap:.75rem;overflow-x:auto;scroll-snap-type:x proximity;padding-bottom:.5rem;-webkit-overflow-scrolling:touch;scrollbar-width:none}.gallery-strip::-webkit-scrollbar{display:none}.gallery-strip:focus-visible{outline:2px solid var(--gold);outline-offset:4px;border-radius:8px}.gallery-item{flex-shrink:0;scroll-snap-align:start;width:72vw;max-width:280px;border:none;padding:0;margin:0;border-radius:8px;overflow:hidden;aspect-ratio:3 / 4;background:var(--cream);cursor:pointer;font:inherit}.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease;display:block}.gallery-item:hover img{transform:scale(1.05)}.gallery-hint{text-align:center;font-size:.8rem;color:var(--text-soft-light);margin-top:.6rem;letter-spacing:.05em}@media(min-width:640px){.gallery-item{width:260px}}.lightbox-overlay{position:fixed;inset:0;background:#140c0eeb;display:flex;align-items:center;justify-content:center;z-index:200;padding:1rem;animation:modal-fade-in .25s ease}.lightbox-img{max-width:100%;max-height:92vh;object-fit:contain;border-radius:6px;box-shadow:0 8px 48px #00000080;animation:modal-slide-up .3s cubic-bezier(.22,.61,.36,1)}.lightbox-close{position:absolute;top:1rem;right:1rem;width:44px;height:44px;border-radius:50%;border:none;background:#ffffff1f;color:#fff;font-size:1.1rem;cursor:pointer;z-index:201;display:flex;align-items:center;justify-content:center;transition:background .25s,transform .25s}.lightbox-close:hover{background:#ffffff40;transform:scale(1.08)}.detail-card{text-align:center;background:#ffffff14;border-radius:12px;padding:2rem 1.5rem;box-shadow:0 2px 12px #00000026;border:1px solid rgba(230,192,105,.3);max-width:420px;margin:0 auto}.detail-row{padding:.5rem 0}.detail-divider{width:60px;height:1px;background:#e6c06966;margin:.75rem auto}.detail-icon{font-size:1.5rem;margin-bottom:.25rem}.detail-label{font-family:var(--font-display);font-style:italic;font-size:.85rem;color:var(--gold);letter-spacing:.06em;margin-bottom:.25rem}.detail-value{font-size:1.125rem;font-weight:600;color:var(--text-light);line-height:1.5}.schedule-timeline{position:relative;max-width:500px;margin:0 auto;padding-left:2rem}.schedule-timeline:before{content:"";position:absolute;left:0;top:0;bottom:0;width:1px;background:linear-gradient(to bottom,var(--gold),rgba(230,192,105,.35),var(--gold))}.schedule-item{position:relative;padding-bottom:1.75rem}.schedule-item:last-child{padding-bottom:0}.schedule-item:before{content:"";position:absolute;left:-2rem;top:.5rem;width:10px;height:10px;border-radius:50%;background:var(--gold);border:2px solid var(--red);box-shadow:0 0 0 2px #e6c06999}.schedule-time{font-family:var(--font-display);font-size:.9rem;color:var(--gold);letter-spacing:.04em;margin-bottom:.15rem}.schedule-label{font-size:1.05rem;font-weight:600;color:var(--text-light)}.schedule-en{font-family:var(--font-display);font-style:italic;font-size:.85rem;color:var(--text-soft-light);margin-top:.1rem}@media(min-width:640px){.schedule-timeline{padding-left:3rem}.schedule-item:before{left:-3rem}}.rsvp-form-wrapper{max-width:500px;margin:0 auto}.rsvp-form{background:var(--ivory);border-radius:16px;padding:2rem 1.5rem;box-shadow:0 4px 24px #00000040;border:1px solid rgba(230,192,105,.4)}.rsvp-field{margin-bottom:1.25rem}.rsvp-field label{display:block;font-size:.9rem;font-weight:600;margin-bottom:.4rem;color:var(--ink)}.rsvp-field label .required{color:var(--rose);margin-left:2px}.rsvp-field input,.rsvp-field select,.rsvp-field textarea{width:100%;min-width:0;padding:.65rem .75rem;border:1px solid rgba(160,31,48,.25);border-radius:8px;font-family:var(--font-body);font-size:.95rem;color:var(--ink);background:#fffdfa;transition:border-color .3s,box-shadow .3s}.rsvp-field input:focus,.rsvp-field select:focus,.rsvp-field textarea:focus{outline:none;border-color:var(--rose);box-shadow:0 0 0 3px #c5304a2e}.rsvp-field input[type=date],.rsvp-field input[type=time]{-webkit-appearance:none;appearance:none;min-width:0;max-width:100%;min-height:2.75rem}.rsvp-field textarea{min-height:80px;resize:vertical}.rsvp-error{font-size:.8rem;color:var(--rose);margin-top:.25rem}.rsvp-radio-group{display:flex;gap:.75rem;flex-wrap:wrap}.rsvp-radio{flex:1;min-width:80px}.rsvp-radio input{display:none}.rsvp-radio label{display:block;text-align:center;padding:.6rem .5rem;border:1px solid rgba(160,31,48,.25);border-radius:8px;cursor:pointer;font-size:.9rem;font-weight:400;background:#fffdfa;transition:all .3s}.rsvp-radio input:checked+label{background:var(--rose);color:#fff;border-color:var(--rose)}.rsvp-fieldset{border:none;padding:0;margin-bottom:1.5rem}.rsvp-hint{font-size:.8rem;color:var(--text-soft);background:var(--petal);border:1px solid rgba(230,192,105,.35);border-radius:8px;padding:.45rem .75rem;margin-bottom:1rem;line-height:1.5}.rsvp-legend{font-size:.95rem;font-weight:700;color:var(--red);margin-bottom:.75rem;display:block;width:100%;padding-bottom:.4rem;border-bottom:1px solid rgba(160,31,48,.15)}.rsvp-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.rsvp-field--half{min-width:0}.rsvp-checkbox-label{display:flex!important;align-items:center;gap:.5rem;font-weight:400!important;cursor:pointer}.rsvp-checkbox-label input[type=checkbox]{width:18px;height:18px;accent-color:var(--rose);flex-shrink:0}.rsvp-submit{display:block;width:100%;padding:.85rem;background:var(--rose);color:#fff;border:none;border-radius:8px;font-family:var(--font-body);font-size:1rem;font-weight:600;cursor:pointer;transition:background .3s,transform .2s,box-shadow .3s;margin-top:1.5rem}.rsvp-submit:hover{background:var(--red);transform:translateY(-1px);box-shadow:0 4px 12px #a01f3066}.rsvp-submit:active{transform:translateY(0)}.rsvp-success{text-align:center;padding:2rem 1rem}.rsvp-success-icon{font-size:3rem;margin-bottom:1rem}.rsvp-success-title{font-size:1.25rem;font-weight:600;margin-bottom:.5rem;color:var(--text-light)}.rsvp-success-message{color:var(--text-soft-light);margin-bottom:1.5rem;line-height:1.6}.rsvp-success-resend{background:none;border:1px solid var(--gold);color:var(--gold);padding:.5rem 1.5rem;border-radius:8px;font-family:var(--font-body);font-size:.9rem;cursor:pointer;transition:background .3s,color .3s}.rsvp-success-resend:hover{background:var(--gold);color:var(--red-deep)}.rsvp-modal-overlay{position:fixed;inset:0;background:#280a10a6;display:flex;align-items:center;justify-content:center;z-index:100;padding:1.5rem;animation:modal-fade-in .25s ease}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}.rsvp-modal{background:var(--ivory);border-radius:16px;padding:1.75rem 1.5rem;max-width:420px;width:100%;max-height:80vh;overflow-y:auto;box-shadow:0 12px 40px #6b4a4f40;border:1px solid rgba(201,168,106,.25);animation:modal-slide-up .3s cubic-bezier(.22,.61,.36,1)}@keyframes modal-slide-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.rsvp-modal-title{text-align:center;font-size:1.1rem;font-weight:700;color:var(--ink);margin-bottom:1.25rem;padding-bottom:.75rem;border-bottom:1px solid rgba(201,168,106,.25)}.rsvp-modal-summary{margin-bottom:1.5rem}.rsvp-modal-row{display:flex;gap:.75rem;padding:.45rem 0;font-size:.95rem;line-height:1.5}.rsvp-modal-row dt{flex-shrink:0;width:4.5rem;color:var(--text-soft);font-weight:600}.rsvp-modal-row dd{color:var(--ink);margin:0;word-break:break-word}.rsvp-modal-sub{color:var(--text-soft)}.rsvp-modal-actions{display:flex;gap:.75rem}.rsvp-modal-cancel,.rsvp-modal-confirm{flex:1;padding:.7rem;border-radius:8px;font-family:var(--font-body);font-size:.95rem;font-weight:600;cursor:pointer;transition:all .25s}.rsvp-modal-cancel{background:transparent;border:1px solid var(--text-soft);color:var(--text-soft)}.rsvp-modal-cancel:hover{border-color:var(--ink);color:var(--ink)}.rsvp-modal-confirm{background:var(--rose);border:1px solid var(--rose);color:#fff}.rsvp-modal-confirm:hover{background:var(--red);box-shadow:0 4px 12px #a01f3066}@media(prefers-reduced-motion:reduce){.rsvp-modal-overlay,.rsvp-modal,.lightbox-overlay,.lightbox-img{animation:none}}.ff-section{margin-bottom:2rem}.ff-section:last-child{margin-bottom:0}.ff-heading{font-size:1.05rem;font-weight:600;color:var(--text-light);margin-bottom:1rem;text-align:center}.ff-grid{display:grid;grid-template-columns:1fr;gap:.6rem;max-width:420px;margin:0 auto}.ff-item{display:flex;align-items:flex-start;gap:.75rem;padding:.65rem .85rem;background:#ffffff14;border-radius:10px;border:1px solid rgba(230,192,105,.2)}.ff-icon{font-size:1.35rem;flex-shrink:0;margin-top:1px}.ff-name{font-size:.95rem;font-weight:600;color:var(--text-light)}.ff-desc{font-size:.8rem;color:var(--text-soft-light);margin-top:2px;line-height:1.4}@media(min-width:640px){.ff-grid{grid-template-columns:repeat(2,1fr);max-width:560px}}.footer-section{text-align:center;padding:3rem 1.5rem 4rem}.footer-names{font-family:var(--font-names);font-size:1.5rem;font-weight:600;color:var(--text-light)}.footer-amp{font-family:var(--font-display);font-style:italic;font-weight:400;color:var(--gold)}.footer-thanks{font-size:1rem;color:var(--text-soft-light);margin-top:.5rem}.footer-date{font-family:var(--font-display);font-style:italic;font-size:.95rem;color:var(--gold);letter-spacing:.06em;margin-top:.75rem}@media(max-width:480px){.rsvp-field input,.rsvp-field select{padding:.55rem .5rem;font-size:.9rem}.rsvp-row{gap:.5rem}}@media(max-width:360px){.hero-photo-frame{width:68vw}.countdown-grid{gap:.4rem}.countdown-tile{padding:.75rem .25rem}.section{padding:2.5rem 1rem}}@media(min-width:1280px){.section-inner{max-width:800px}.countdown-grid{max-width:560px}.gallery-item{width:300px}.detail-card{max-width:460px}.rsvp-form-wrapper{max-width:560px}.ff-grid{max-width:640px}}
