:root{--color-primary: #8b7355;--color-background: #fff9f0;--color-surface: #ffffff;--color-text: #2c1810;--color-text-muted: #6b5d54;--color-accent: #c89b7b;--color-border: #e8ddd0;--color-hero-overlay: rgba(44, 24, 16, .35);--font-heading: "Nanum Myeongjo", "Noto Serif KR", serif;--font-body: "Pretendard", "Apple SD Gothic Neo", sans-serif;--font-script: "Cormorant Garamond", "Nanum Myeongjo", serif;--font-size-base: 16px;--font-heading-scale: 1.8;--size-hero-height: 100vh;--size-section-gap: 120px;--size-section-padding: 80px 24px;--size-body-width: 440px;--size-border-radius: 2px;--effect-shadow: 0 4px 20px rgba(44, 24, 16, .08);--effect-transition: .8s cubic-bezier(.16, 1, .3, 1);--effect-reveal-distance: 40px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;font-size:var(--font-size-base);font-family:var(--font-body);color:var(--color-text);background:#d5d5d5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img{max-width:100%;display:block}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}.app{max-width:640px;margin:0 auto;background:var(--color-background);overflow-x:hidden;box-shadow:var(--effect-shadow)}.section{padding:var(--size-section-padding);position:relative}#greeting{background:#f8f8f8}#profile{background:#f2f2f2}#timeline{background:#f8f8f8}#calendar{background:#f2f2f2}#countdown{background:#f2f2f2;padding-top:0}#info{background:#ebebeb}#information{background:#ebebeb;padding-top:0}#gallery{background:#f2f2f2}#rsvp{background:#f8f8f8}#guest-upload{background:#f2f2f2}#account{background:#f8f8f8}#share{background:#f2f2f2}#info .info__card,#info .info__map,#info .info__nav-btn,#info .info__transport-item,#information .information__card{box-shadow:0 2px 20px #00000014}.section__inner{max-width:var(--size-body-width);margin:0 auto}.section__label{font-family:var(--font-script);font-size:1rem;letter-spacing:.24em;color:var(--color-accent);text-transform:uppercase;text-align:center;margin:0 0 8px}.section__title{font-family:var(--font-heading);font-size:1.5rem;font-weight:500;color:var(--color-text);text-align:center;margin:0 0 48px;letter-spacing:.02em}.section__subtitle{font-family:var(--font-body);font-size:.9rem;color:var(--color-text-muted);text-align:center;margin:-36px 0 48px}.reveal{opacity:0;transform:translateY(var(--effect-reveal-distance));transition:opacity var(--effect-transition),transform var(--effect-transition);will-change:opacity,transform}.reveal.is-visible{opacity:1;transform:translateY(0)}.reveal.delay-1{transition-delay:.1s}.reveal.delay-2{transition-delay:.2s}.reveal.delay-3{transition-delay:.3s}.hero{height:var(--size-hero-height);min-height:560px;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;color:#fff;padding:0;margin-bottom:var(--size-section-gap)}.hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:var(--hero-image);background-size:cover;background-position:center;z-index:0}.hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--color-hero-overlay);z-index:1}.hero__inner{position:relative;z-index:2;text-align:center;padding:24px}.hero__label{position:absolute;top:48px;left:0;right:0;z-index:2;font-family:var(--font-script);font-size:clamp(1rem,5vw,2rem);letter-spacing:.2em;margin:0;padding:0 16px;opacity:.9;text-align:center}.hero__title{font-family:var(--font-heading);font-size:1.8rem;font-weight:500;margin:0 0 20px;letter-spacing:.04em}.hero__names{font-family:var(--font-script);font-size:2.4rem;font-weight:300;letter-spacing:.08em;margin:16px 0}.hero__date{position:absolute;bottom:72px;left:0;right:0;z-index:2;font-family:var(--font-script);font-size:clamp(1rem,5vw,2rem);letter-spacing:.2em;margin:0;padding:0 16px;opacity:.9;text-align:center}.hero__scroll{position:absolute;bottom:32px;left:50%;transform:translate(-50%);font-family:var(--font-script);font-size:.75rem;letter-spacing:.3em;opacity:.7;animation:bounce 2s ease-in-out infinite}@keyframes bounce{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,8px)}}.hero__particles{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2;overflow:hidden}.hero__particle{position:absolute;bottom:-10%;color:#fff;opacity:0;animation:float-up linear infinite;will-change:transform,opacity;text-shadow:0 0 12px rgba(255,255,255,.4)}.hero__particles--hearts .hero__particle{color:#ffb3b3}.hero__particles--petals .hero__particle{color:#ffd1dc}.hero__particles--sparkles .hero__particle{color:transparent;background:#ffffffb3;border-radius:1px;animation-name:sparkle-fall!important}@keyframes sparkle-fall{0%{transform:translateY(0) translate(0) rotate(0);opacity:0}8%{opacity:1}50%{opacity:.3}70%{opacity:.9}to{transform:translateY(-110vh) translate(20px) rotate(720deg);opacity:0}}@keyframes float-up{0%{transform:translateY(0) translate(0) rotate(0);opacity:0}10%{opacity:.85}90%{opacity:.7}to{transform:translateY(-120vh) translate(30px) rotate(40deg);opacity:0}}.greeting__body{font-family:var(--font-body);font-size:.95rem;line-height:2;text-align:center;color:var(--color-text);white-space:pre-line;margin-bottom:40px}.greeting__body p{margin:0 0 1.5em}.greeting__body p:last-child{margin-bottom:0}.greeting__parents{display:flex;justify-content:center;gap:36px;font-size:.85rem;color:var(--color-text-muted);margin-top:32px;padding-top:32px;border-top:none}.greeting__parents span{display:block;text-align:center;line-height:1.8}.greeting__parents strong{font-weight:500;color:var(--color-text)}.profile__cards{display:flex;flex-direction:column;gap:24px}.profile__card{display:flex;flex-direction:row;align-items:center;text-align:left;gap:20px;background:var(--color-surface);border:none;border-radius:12px;padding:20px;box-shadow:0 2px 16px #0000000f}.profile__image-wrap{width:120px;min-width:120px;height:150px;border-radius:var(--size-border-radius);overflow:hidden;background:var(--color-border)}.profile__image{width:100%;height:100%;object-fit:cover}.profile__details{display:flex;flex-direction:column;align-items:flex-start;gap:5px;flex:1;min-width:0}.profile__role{font-family:var(--font-script);font-size:.72rem;letter-spacing:.2em;color:var(--color-accent);text-transform:uppercase;margin:0}.profile__name{font-family:var(--font-heading);font-size:1.2rem;font-weight:500;color:var(--color-text);margin:0 0 2px}.profile__parent-label,.profile__birth{font-size:.8rem;color:var(--color-text-muted);margin:0}.profile__mbti{display:inline-block;font-size:.75rem;letter-spacing:.1em;color:var(--color-primary);background:var(--color-background);border:none;border-radius:14px;padding:4px 14px;margin:4px 0 0;box-shadow:0 1px 4px #0000000f}.profile__hobbies{font-size:.8rem;color:var(--color-accent);margin:4px 0 0;letter-spacing:.02em}.greeting__contact-btn{display:block;margin:28px auto 0;padding:12px 32px;font-size:.85rem;letter-spacing:.1em;color:var(--color-text);background:var(--color-surface);border:none;border-radius:var(--size-border-radius);box-shadow:0 2px 16px #0000000f;transition:background .2s,border-color .2s}.greeting__contact-btn:hover{border-color:var(--color-primary);background:var(--color-background)}.contact-modal__overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:20px;z-index:100;animation:rsvp-fade-in .22s ease-out}.contact-modal{position:relative;width:100%;max-width:420px;max-height:calc(100vh - 40px);overflow-y:auto;background:var(--color-background);border-radius:calc(var(--size-border-radius) + 4px);padding:36px 24px 28px;box-shadow:0 20px 60px #00000040;animation:rsvp-slide-up .28s ease-out}.contact-modal__close{position:absolute;top:12px;right:14px;width:32px;height:32px;background:transparent;color:var(--color-text-muted);font-size:1rem;border-radius:50%;transition:background .15s,color .15s}.contact-modal__close:hover{background:var(--color-surface);color:var(--color-text)}.contact-modal__title{font-family:var(--font-body);font-size:1.2rem;text-align:center;margin:0 0 6px;color:var(--color-text);letter-spacing:.05em}.contact-modal__subtitle{font-size:.82rem;text-align:center;color:var(--color-text-muted);margin:0 0 20px}.contact-modal__tabs{display:flex;margin-bottom:16px;border-bottom:1px solid var(--color-border)}.contact-modal__tab{flex:1;padding:12px 0;font-size:.9rem;font-weight:400;color:var(--color-text-muted);background:none;border:none;border-bottom:2px solid transparent;transition:color .2s,border-color .2s;cursor:pointer;font-family:inherit}.contact-modal__tab.is-active{color:var(--color-text);font-weight:600;border-bottom-color:var(--color-text)}.contact-modal__list{display:flex;flex-direction:column;gap:10px}.contact-modal__list--hidden{display:none}.contact-modal__row{padding:18px 20px;background:var(--color-surface);border:none;border-radius:var(--size-border-radius);box-shadow:0 2px 12px #0000000f}.contact-modal__info{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.contact-modal__name{font-size:.95rem;font-weight:600;color:var(--color-text)}.contact-modal__label{font-size:.78rem;color:var(--color-text-muted)}.contact-modal__actions{display:flex;gap:8px}.contact-modal__action-btn{flex:1;display:flex;align-items:center;justify-content:center;padding:10px 0;border-radius:8px;font-size:.82rem;font-weight:500;text-decoration:none;transition:opacity .15s;font-family:inherit}.contact-modal__action-btn--sms{background:var(--color-border);color:var(--color-text)}.contact-modal__action-btn--call{background:var(--color-primary);color:#fff}.contact-modal__action-btn:hover{opacity:.85}.timeline__toggle{display:block;margin:0 auto 20px;padding:12px 32px;font-size:.85rem;letter-spacing:.1em;color:var(--color-text);background:var(--color-surface);border:none;border-radius:var(--size-border-radius);box-shadow:0 2px 16px #0000000f;transition:background .2s,border-color .2s}.timeline__toggle:hover{border-color:var(--color-primary);background:var(--color-background)}.tl__list{display:none;flex-direction:column;gap:48px;list-style:none;padding:0;margin:0;position:relative}.tl__list.is-visible{display:flex}.tl__line{position:absolute;top:0;left:50%;transform:translate(-50%);width:1px;height:0%;background:var(--color-accent);opacity:.5;transition:height 1.2s ease;pointer-events:none}.tl__item{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:20px}.tl__dot{position:absolute;top:28px;left:50%;transform:translate(-50%);width:10px;height:10px;border-radius:50%;background:var(--color-accent);border:2px solid var(--color-surface);box-shadow:0 0 0 2px #0000000a;z-index:1}.tl__photo{padding:8px;display:flex;align-items:center}.tl__photo img{width:100%;aspect-ratio:3 / 2;object-fit:cover;border-radius:calc(var(--size-border-radius) + 2px);box-shadow:0 2px 8px #00000014;background:var(--color-border)}.tl__photo--empty{min-height:80px}.tl__text{padding:16px 8px;display:flex;flex-direction:column;justify-content:center;gap:8px}.tl__text--right{text-align:left;padding-right:0}.tl__text--left{text-align:left;padding-left:0}.tl__badge{display:inline-block;font-size:.7rem;font-weight:600;letter-spacing:.03em;color:#fff;background:var(--color-accent);border-radius:20px;padding:4px 12px;width:fit-content}.tl__text--left .tl__badge{margin-left:0}.tl__title{font-family:var(--font-heading);font-size:.95rem;font-weight:500;color:var(--color-text);margin:0;line-height:1.5}.tl__body{font-size:.82rem;line-height:1.75;color:var(--color-text-muted);margin:0;white-space:pre-line}.countdown{display:flex;justify-content:center;gap:12px;margin-bottom:20px}.countdown__cell{flex:1;max-width:80px;padding:18px 8px;background:var(--color-surface);border:none;border-radius:var(--size-border-radius);text-align:center;box-shadow:0 2px 16px #0000000f}.countdown__num{display:block;font-family:var(--font-body);font-size:1.8rem;color:var(--color-text);font-weight:600;line-height:1}.countdown__label{display:block;font-size:.65rem;letter-spacing:.15em;color:var(--color-text-muted);margin-top:8px;text-transform:uppercase}.countdown__message{text-align:center;font-size:.88rem;color:var(--color-text-muted);margin:12px 0 0}.info__card{background:var(--color-surface);border:none;border-radius:var(--size-border-radius);padding:28px 24px;text-align:center;margin-bottom:24px;box-shadow:0 2px 16px #0000000f}.info__date{font-family:var(--font-heading);font-size:1.3rem;margin:0;letter-spacing:.05em}.info__time{font-family:var(--font-script);font-size:1rem;letter-spacing:.2em;color:var(--color-text-muted);margin:8px 0 20px}.info__venue{font-size:1rem;font-weight:500;margin:0 0 6px}.info__address{font-size:.85rem;color:var(--color-text-muted);margin:0}.info__map{width:100%;aspect-ratio:4 / 3;border:none;border-radius:var(--size-border-radius);overflow:hidden;margin-bottom:16px;background:var(--color-surface);box-shadow:0 2px 16px #0000000f}.info__map iframe{width:100%;height:100%;border:0}.info__nav{display:flex;gap:8px;margin-bottom:24px}.info__nav-btn{flex:1;padding:12px 0;text-align:center;font-size:.8rem;letter-spacing:.05em;color:var(--color-text);background:var(--color-surface);border:none;border-radius:var(--size-border-radius);text-decoration:none;transition:background .2s,color .2s;box-shadow:0 2px 16px #0000000f}.info__nav-btn:hover,.info__nav-btn:active{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.info__transport{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}.info__transport-item{display:flex;align-items:flex-start;gap:16px;padding:18px 16px;background:var(--color-surface);border:none;border-radius:var(--size-border-radius);box-shadow:0 2px 16px #0000000f}.info__transport-icon{flex-shrink:0;width:36px;height:36px;display:flex;align-items:center;justify-content:center;color:var(--color-accent);border:none;border-radius:50%;background:var(--color-background)}.info__transport-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.info__transport-label{font-size:.75rem;letter-spacing:.15em;color:var(--color-accent);text-transform:uppercase;font-family:var(--font-script)}.info__transport-desc{font-size:.85rem;line-height:1.7;color:var(--color-text)}.calendar__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:0;padding:20px 8px;background:transparent;border:none;border-radius:0;box-shadow:none}.calendar__head{font-family:var(--font-body);font-size:.78rem;font-weight:500;letter-spacing:.08em;color:var(--color-text-muted);text-align:center;padding:0 0 16px;border-bottom:none;margin-bottom:0}.calendar__head--sun{color:var(--color-accent)}.calendar__cell{font-family:var(--font-body);font-size:.92rem;color:var(--color-text);text-align:center;aspect-ratio:1;display:flex;align-items:center;justify-content:center;position:relative}.calendar__cell--empty{visibility:hidden}.calendar__cell--sun{color:var(--color-accent);opacity:.85}.calendar__cell--wedding{color:#fff;font-weight:600}.calendar__cell--wedding:before{content:"";position:absolute;width:36px;height:36px;background:var(--color-primary);border-radius:50%;z-index:-1}.calendar__cell--wedding{z-index:0;isolation:isolate}.interview__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:40px}.interview__item{display:flex;flex-direction:column;gap:16px}.interview__q{font-family:var(--font-heading);font-size:1.05rem;line-height:1.6;color:var(--color-text);text-align:center;margin:0 0 8px;padding:0 12px}.interview__q-num{font-family:var(--font-script);color:var(--color-accent);margin-right:6px;letter-spacing:.05em}.interview__a{background:var(--color-surface);border:none;border-radius:var(--size-border-radius);box-shadow:0 2px 16px #0000000f;padding:16px 18px;position:relative}.interview__a--groom{border-left:3px solid var(--color-primary)}.interview__a--bride{border-left:3px solid var(--color-accent)}.interview__name{display:block;font-family:var(--font-script);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:8px}.interview__body{margin:0;font-size:.9rem;line-height:1.75;color:var(--color-text)}.information__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:16px}.information__card{background:var(--color-surface);border:none;border-radius:var(--size-border-radius);padding:24px 22px;text-align:center;box-shadow:0 2px 16px #0000000f}.information__icon{width:48px;height:48px;margin:0 auto 14px;display:flex;align-items:center;justify-content:center;color:var(--color-accent);border:1px solid var(--color-border);border-radius:50%}.information__title{font-family:var(--font-heading);font-size:1.05rem;font-weight:500;color:var(--color-text);margin:0 0 10px}.information__body{font-size:.85rem;line-height:1.8;color:var(--color-text-muted);margin:0;white-space:pre-line}.middle-photo{position:relative;width:100%;min-height:70vh;margin:var(--size-section-gap) 0;padding:120px 24px;overflow:hidden;display:flex;align-items:center;justify-content:center;color:#fff;isolation:isolate}.middle-photo__bg{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center;z-index:-2}.middle-photo__overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1}.middle-photo--fog .middle-photo__overlay{background:linear-gradient(180deg,#ffffff26,#ffffff8c,#00000059);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.middle-photo--fog{color:var(--color-text)}.middle-photo--vignette .middle-photo__overlay{background:radial-gradient(ellipse at center,#0000001a,#0000008c)}.middle-photo--wave .middle-photo__wave{position:absolute;top:0;left:0;width:100%;height:60px;z-index:-1}.middle-photo__content{max-width:var(--size-body-width);text-align:center;position:relative;z-index:1}.middle-photo__quote{font-family:var(--font-heading);font-size:1.1rem;line-height:2;margin:0;white-space:pre-line;letter-spacing:.02em}.middle-photo__caption{margin:20px 0 0;font-family:var(--font-script);font-size:.8rem;letter-spacing:.25em;text-transform:uppercase;opacity:.8}.ending{position:relative;width:100%;min-height:80vh;padding:140px 24px 100px;margin-top:var(--size-section-gap);overflow:hidden;color:#fff;isolation:isolate;display:flex;align-items:center;justify-content:center}.ending__bg{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center;z-index:-3}.ending__overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#0003,#0000008c);z-index:-2}.ending__wave{position:absolute;top:-1px;left:0;width:100%;height:90px;z-index:0;pointer-events:none;color:#f2f2f2;transform:scaleY(-1);transform-origin:center}.ending__wave-layer{animation:ending-wave-move linear infinite}.ending__wave-layer--0{opacity:.35;animation-duration:9s}.ending__wave-layer--1{opacity:.55;animation-duration:13s;animation-direction:reverse}.ending__wave-layer--2{opacity:.75;animation-duration:17s}.ending__wave-layer--3{opacity:1;animation-duration:22s;animation-direction:reverse}@keyframes ending-wave-move{0%{transform:translate3d(-90px,0,0)}to{transform:translate3d(85px,0,0)}}.ending__content{max-width:var(--size-body-width);text-align:center;position:relative;z-index:1}.ending__message{font-family:var(--font-heading);font-size:1.2rem;line-height:1.9;margin:0 0 32px;white-space:pre-line;letter-spacing:.02em}.ending__signature{font-family:var(--font-script);font-size:.95rem;letter-spacing:.15em;line-height:1.9;margin:0;white-space:pre-line;opacity:.9}.gallery__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.gallery__grid img{width:100%;aspect-ratio:1;object-fit:cover;cursor:zoom-in;background:var(--color-border)}.gallery__grid--extra{display:none;margin-top:4px}.gallery__grid--extra.is-visible{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.gallery__more{display:block;margin:20px auto 0;padding:10px 28px;font-size:.85rem;color:var(--color-text-muted);background:var(--color-surface);border:none;border-radius:var(--size-border-radius);box-shadow:0 2px 16px #0000000f;transition:background .2s,color .2s}.gallery__more:hover{background:var(--color-border);color:var(--color-text)}.gallery__lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:9999;padding:24px}.gallery__lightbox img{max-width:100%;max-height:90vh;object-fit:contain}.gallery__lightbox-close{position:absolute;top:16px;right:20px;font-size:1.6rem;color:#fff;cursor:pointer}.account__message{text-align:center;font-size:.9rem;line-height:1.9;color:var(--color-text-muted);margin:0 0 28px}.account__dropdown{margin-bottom:12px}.account__dropdown-header{width:100%;display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:var(--color-surface);border:none;border-radius:var(--size-border-radius);box-shadow:0 2px 16px #0000000f;font-size:.9rem;font-weight:500;color:var(--color-text);cursor:pointer;transition:background .2s,border-color .2s}.account__dropdown-header:hover{border-color:var(--color-primary)}.account__dropdown-header.is-open{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:transparent}.account__dropdown-arrow{font-size:.65rem;color:var(--color-text-muted);transition:transform .2s}.account__dropdown-content{display:none;border:none;border-radius:0 0 var(--size-border-radius) var(--size-border-radius);padding:8px;background:var(--color-surface);box-shadow:0 4px 16px #0000000f}.account__dropdown-content.is-open{display:block}.account__row{display:flex;align-items:center;justify-content:space-between;background:var(--color-surface);border:none;border-radius:var(--size-border-radius);padding:14px 16px;margin-bottom:8px;gap:12px;box-shadow:0 2px 16px #0000000f}.account__row-info{flex:1;min-width:0}.account__row-name{font-size:.85rem;color:var(--color-text-muted)}.account__row-account{font-size:.9rem;font-weight:500;color:var(--color-text);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account__copy{font-size:.75rem;letter-spacing:.1em;color:var(--color-accent);border:none;padding:6px 12px;border-radius:var(--size-border-radius);transition:background .2s,color .2s;flex-shrink:0;box-shadow:0 2px 8px #0000000f}.account__copy:hover,.account__copy.is-copied{background:var(--color-accent);color:#fff}.rsvp{text-align:center}.rsvp__message{font-size:.9rem;line-height:1.9;color:var(--color-text-muted);margin-bottom:24px}.rsvp__button{display:inline-block;padding:14px 32px;background:var(--color-surface);color:var(--color-text);font-size:.9rem;letter-spacing:.15em;border-radius:var(--size-border-radius);text-decoration:none;border:none;cursor:pointer;font-family:inherit;transition:background .2s,box-shadow .2s;box-shadow:0 2px 16px #0000000f}.rsvp__button:hover{box-shadow:0 4px 20px #0000001a}.rsvp-modal__overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:20px;z-index:100;animation:rsvp-fade-in .22s ease-out}@keyframes rsvp-fade-in{0%{opacity:0}to{opacity:1}}.rsvp-modal{position:relative;width:100%;max-width:420px;max-height:calc(100vh - 40px);overflow-y:auto;background:var(--color-background);border-radius:calc(var(--size-border-radius) + 4px);padding:32px 24px 28px;box-shadow:0 20px 60px #00000040;animation:rsvp-slide-up .28s ease-out}@keyframes rsvp-slide-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.rsvp-modal__close{position:absolute;top:10px;right:12px;width:32px;height:32px;border:none;background:transparent;color:var(--color-text-muted);font-size:1rem;cursor:pointer;border-radius:50%;transition:background .15s,color .15s}.rsvp-modal__close:hover{background:var(--color-surface);color:var(--color-text)}.rsvp-modal__title{font-family:var(--font-body);font-size:1.25rem;text-align:center;margin:0 0 24px;color:var(--color-text);letter-spacing:.05em}.rsvp-modal__form{display:flex;flex-direction:column;gap:22px}.rsvp-modal__field{border:none;padding:0;margin:0}.rsvp-modal__field[aria-disabled=true]{opacity:.4}.rsvp-modal__legend{font-size:.9rem;color:var(--color-text);margin-bottom:10px;padding:0;font-weight:500}.rsvp-modal__choices{display:flex;gap:10px}.rsvp-modal__choice{flex:1;padding:12px 10px;background:var(--color-surface);border:none;border-radius:var(--size-border-radius);box-shadow:0 2px 12px #0000000f;color:var(--color-text);font-size:.9rem;font-family:inherit;cursor:pointer;transition:background .18s,border-color .18s,color .18s}.rsvp-modal__choice:hover:not(:disabled){border-color:var(--color-primary)}.rsvp-modal__choice.is-active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.rsvp-modal__choice:disabled{cursor:not-allowed;opacity:.5}.rsvp-modal__input{width:100%;padding:12px 14px;background:var(--color-surface);border:none;border-radius:var(--size-border-radius);box-shadow:0 2px 12px #0000000f;font-size:.95rem;font-family:inherit;color:var(--color-text);transition:border-color .18s;box-sizing:border-box}.rsvp-modal__input:focus{outline:none;border-color:var(--color-primary)}.rsvp-modal__consent{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;background:var(--color-surface);border:none;border-radius:var(--size-border-radius);box-shadow:0 2px 12px #0000000f;cursor:pointer;-webkit-user-select:none;user-select:none}.rsvp-modal__consent-checkbox{flex-shrink:0;margin:2px 0 0;width:16px;height:16px;accent-color:var(--color-primary);cursor:pointer}.rsvp-modal__consent-text{font-size:.82rem;line-height:1.6;color:var(--color-text)}.rsvp-modal__consent-detail{display:block;margin-top:4px;font-size:.72rem;color:var(--color-text-muted)}.rsvp-modal__submit{margin-top:8px;padding:14px;background:var(--color-primary);color:#fff;border:none;border-radius:var(--size-border-radius);font-size:.95rem;letter-spacing:.08em;font-family:inherit;cursor:pointer;transition:background .2s,opacity .2s}.rsvp-modal__submit:hover:not(:disabled){background:var(--color-accent)}.rsvp-modal__submit:disabled{opacity:.5;cursor:not-allowed}.rsvp-modal__thanks{display:flex;flex-direction:column;align-items:center;gap:14px;padding:20px 0 8px;text-align:center}.rsvp-modal__thanks-icon{font-size:2.4rem}.rsvp-modal__thanks-title{font-family:var(--font-heading);font-size:1.05rem;color:var(--color-text);margin:0}.rsvp-modal__thanks-message{font-size:.88rem;line-height:1.7;color:var(--color-text-muted);white-space:pre-line;margin:0 0 8px}.rsvp-modal__thanks .rsvp-modal__submit{min-width:140px}.share__buttons{display:flex;justify-content:center;gap:12px}.share__btn{padding:12px 20px;background:var(--color-surface);border:none;border-radius:var(--size-border-radius);box-shadow:0 2px 16px #0000000f;font-size:.85rem;color:var(--color-text);transition:background .2s}.share__btn:hover{background:var(--color-border)}.footer{text-align:center;padding:48px 24px 64px;font-family:var(--font-script);font-size:.75rem;letter-spacing:.3em;color:var(--color-text-muted);text-transform:uppercase}.error{padding:40px;text-align:center;color:#a00}.error pre{background:#faf0f0;padding:12px;text-align:left;overflow:auto;font-size:.8rem}.guest-upload{text-align:center}.guest-upload__message{color:var(--color-text-muted);line-height:1.8;margin:12px 0 28px;white-space:pre-line}.guest-upload__button{display:inline-flex;align-items:center;gap:10px;padding:14px 32px;border-radius:var(--size-border-radius);background:var(--color-surface);color:var(--color-text);font-family:var(--font-body);font-size:.95rem;font-weight:500;letter-spacing:.02em;text-decoration:none;border:none;box-shadow:0 2px 16px #0000000f;transition:transform .2s ease,box-shadow .2s ease}.guest-upload__button:hover{transform:translateY(-2px);box-shadow:0 4px 20px #0000001a}.guest-upload__button:active{transform:translateY(0)}.guest-upload__icon{display:inline-flex;align-items:center;justify-content:center;color:var(--color-text)}.guest-upload__notice{background:var(--color-surface);border:none;border-radius:var(--size-border-radius);padding:16px 20px;margin-bottom:20px;font-size:.78rem;line-height:1.8;color:var(--color-text-muted);text-align:center;box-shadow:0 2px 16px #0000000f}.guest-upload__button--disabled{opacity:.5;cursor:not-allowed}.guest-upload__hint{margin-top:14px;font-size:.78rem;color:var(--color-text-muted);opacity:.8}.music-player{position:fixed;top:14px;right:max(14px,calc((100vw - 640px)/2 + 14px));z-index:50;pointer-events:none}.music-player__button{pointer-events:auto;width:42px;height:42px;border-radius:50%;border:none;background:var(--color-primary);color:#fff;box-shadow:var(--shadow-medium);display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.music-player__button:hover{transform:scale(1.05)}.music-player__button:active{transform:scale(.95)}.music-player__icon{display:inline-flex;align-items:center;justify-content:center;line-height:0}.music-player__wave{position:absolute;top:0;right:0;bottom:0;left:0;display:none;align-items:flex-end;justify-content:center;gap:2px;padding-bottom:11px;pointer-events:none}.music-player__button.is-playing .music-player__wave{display:flex}.music-player__wave-bar{width:2px;background:#ffffffe6;border-radius:2px;animation:music-wave-bounce 1s ease-in-out infinite}.music-player__wave-bar:nth-child(1){animation-delay:0s}.music-player__wave-bar:nth-child(2){animation-delay:.15s}.music-player__wave-bar:nth-child(3){animation-delay:.3s}@keyframes music-wave-bounce{0%,to{height:3px}50%{height:11px}}.music-player__button.is-playing .music-player__icon svg{opacity:0}.particles--global{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:40;overflow:hidden}@media (max-width: 480px){:root{--size-section-padding: 60px 20px;--size-section-gap: 80px}.hero__names{font-size:2rem}.countdown__cell{min-width:56px}.gallery__grid{grid-template-columns:repeat(3,1fr);gap:3px}.music-player{top:10px;right:max(10px,calc((100vw - 640px)/2 + 10px))}.music-player__button{width:38px;height:38px}.guest-upload__button{padding:13px 26px;font-size:.9rem}.rsvp-modal{padding:28px 20px 24px}.rsvp-modal__title{font-size:1.15rem;margin-bottom:20px}}
