:root{--color-bg: #ffffff;--color-bg-alt: #faf8f4;--color-panel: #ffffff;--color-text: #6d675f;--color-ink: #45403a;--color-text-light: #7d7468;--color-accent: #85704d;--color-accent-soft: #b5a488;--color-line: rgba(80, 70, 62, .14);--font-serif-en: "Cormorant Garamond", "Noto Serif KR", serif;--shadow-soft: 0 14px 34px rgba(72, 64, 56, .1);--max-width: 480px;color:var(--color-text);background:#f3f2ee;font-family:"Noto Serif KR",serif;font-size:16px;line-height:1.8}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;margin:0 auto;background:#f3f2ee}body.is-locked{position:fixed;right:0;left:0;width:100%;overflow:hidden}button,input,textarea{font:inherit}button{color:inherit}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}#app{width:min(100%,var(--max-width));min-height:100dvh;margin:0 auto;overflow:hidden;background:var(--color-bg);box-shadow:0 0 34px #4840381a}.wedding-section{position:relative;padding:5.6rem 1.875rem;text-align:center}.wedding-section.alt{background:var(--color-bg-alt)}.section-heading{margin:0 auto 2.6rem}.section-heading h2{margin:0;color:var(--color-accent);font-size:1.22rem;font-weight:500;letter-spacing:.16em}.divider{width:4.5rem;height:1px;margin:1.4rem auto;background:linear-gradient(90deg,transparent,var(--color-accent),transparent)}.text-button,.icon-button,.pill-button,.solid-button{border:1px solid var(--color-line);background:#fff;cursor:pointer;transition:border-color .2s ease,background .2s ease,color .2s ease,transform .2s ease}.text-button:active,.icon-button:active,.pill-button:active,.solid-button:active{transform:translateY(1px)}.pill-button{display:inline-flex;min-height:2.8rem;align-items:center;justify-content:center;gap:.45rem;padding:0 1.25rem;border-radius:4px;color:var(--color-text);font-size:.92rem}.pill-button.primary{border-color:var(--color-accent-soft);background:var(--color-accent-soft);color:#fffefa}.solid-button{display:inline-flex;min-height:2.9rem;align-items:center;justify-content:center;padding:0 2.2rem;border-color:var(--color-accent-soft);border-radius:4px;background:var(--color-accent-soft);color:#fffefa;font-size:.94rem;letter-spacing:.04em}.solid-button.ghost{border-color:var(--color-line);background:#fff;color:var(--color-text)}.icon-button{display:inline-grid;width:2.75rem;height:2.75rem;place-items:center;border-radius:50%}.text-button{display:inline-flex;min-height:2.4rem;align-items:center;justify-content:center;padding:0 .8rem;border-radius:4px;font-size:.9rem}.text-button:hover,.icon-button:hover,.pill-button:hover{border-color:#a58e6cbf;background:#fffefa}.solid-button:hover{background:var(--color-accent);border-color:var(--color-accent)}.solid-button.ghost:hover{background:#fffefa;color:var(--color-ink)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#toast-root{position:fixed;z-index:90;right:max(1rem,calc((100vw - var(--max-width)) / 2 + 1rem));bottom:1.25rem;left:max(1rem,calc((100vw - var(--max-width)) / 2 + 1rem));pointer-events:none}.toast{width:fit-content;max-width:100%;margin:0 auto;padding:.75rem 1rem;border:1px solid rgba(47,52,48,.08);border-radius:8px;background:#2f3430eb;color:#fff;font-size:.92rem;box-shadow:var(--shadow-soft);animation:toast-in .22s ease}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.modal-layer{position:fixed;z-index:80;inset:0;display:grid;align-items:end;justify-items:center;padding:1rem max(1rem,calc((100vw - var(--max-width)) / 2 + 1rem));background:#2f34306b;opacity:0;pointer-events:none;transition:opacity .22s ease}.modal-layer.is-open{opacity:1;pointer-events:auto}.bottom-sheet{width:min(100%,var(--max-width));max-height:min(84dvh,720px);overflow:hidden;border-radius:18px 18px 0 0;background:var(--color-panel);box-shadow:var(--shadow-soft);transform:translateY(100%);transition:transform .28s ease}.modal-layer.is-open .bottom-sheet{transform:translateY(0)}.sheet-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.1rem 1.2rem .8rem;border-bottom:1px solid var(--color-line)}.sheet-header h3{margin:0;color:var(--color-ink);font-size:1.08rem}.sheet-body{max-height:calc(min(84dvh,720px) - 4rem);overflow:auto;padding:1.2rem}.form-grid{display:grid;gap:.9rem;text-align:left}.form-field{display:grid;gap:.35rem;color:var(--color-ink);font-size:.94rem}.form-field input,.form-field textarea{width:100%;min-height:2.75rem;padding:.7rem .8rem;border:1px solid var(--color-line);border-radius:6px;background:#fff;color:var(--color-ink)}.form-field textarea{min-height:7rem;resize:vertical}.radio-group,.checkbox-row{display:flex;flex-wrap:wrap;gap:.6rem}.radio-group label,.checkbox-row{align-items:center}.radio-group label{display:inline-flex;min-height:2.5rem;padding:0 .75rem;border:1px solid var(--color-line);border-radius:6px;background:#fff;gap:.35rem}.checkbox-row{display:flex;color:var(--color-text);font-size:.9rem}.submit-row{display:flex;justify-content:flex-end;margin-top:.4rem}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}.reveal{opacity:1!important;transform:none}.cover-image,.cover-overlay,.cover-script,.cover-content h1,.cover-date,.cover-place{opacity:1;transform:none}}.cover-section{position:relative;display:grid;min-height:100dvh;overflow:hidden;text-align:center;color:#fff}.cover-image,.cover-overlay{position:absolute;inset:0}.cover-image{width:100%;height:100%;object-fit:cover;transform-origin:50% 44%;animation:cover-image-drift 12s ease-out both}.cover-overlay{background:linear-gradient(180deg,#1e1b180f 0% 52%,#1e1b188f);opacity:0;animation:cover-overlay-in 1.8s ease .15s forwards}.cover-content{position:relative;z-index:1;display:grid;width:100%;min-height:100dvh;align-content:end;gap:.3rem;padding:4rem 2rem calc(5.4rem + env(safe-area-inset-bottom));text-shadow:0 1px 16px rgba(0,0,0,.32)}.cover-script{margin:0 0 .4rem;color:#fdfaf4;font-family:var(--font-serif-en);font-size:clamp(2.6rem,12vw,3.4rem);font-style:italic;font-weight:400;line-height:1.1;letter-spacing:.02em}.cover-script .letter{display:inline-block;white-space:pre;will-change:transform,opacity}.cover-date{margin:0;color:#fdfaf4eb;font-family:var(--font-serif-en);font-size:.98rem;letter-spacing:.14em}.cover-title{margin:1.5rem 0 0;color:#fffffff0;font-size:1.06rem;font-weight:400;letter-spacing:.12em}.cover-title span{color:#ffffff9e}.cover-place{margin:.15rem 0 0;color:#fffc;font-size:.84rem;line-height:1.7;letter-spacing:.02em}.petal{position:absolute;z-index:1;top:0;display:block;border-radius:100% 4px 100% 100%;background:linear-gradient(135deg,#fff8eee6,#e9d4babf);opacity:0;pointer-events:none;will-change:transform,opacity}.bgm-toggle{position:fixed;z-index:50;top:max(1rem,env(safe-area-inset-top));right:max(1rem,calc((100vw - var(--max-width)) / 2 + 1rem));width:2.15rem;height:2.15rem;border-color:transparent;background:#ffffffad;color:#5c5752;font-size:.86rem;box-shadow:0 10px 22px #2f343024}.scroll-hint{position:absolute;z-index:1;bottom:max(1.1rem,env(safe-area-inset-bottom));left:50%;display:grid;justify-items:center;color:#fffefad9;opacity:0;transform:translate(-50%);animation:hint-in .8s ease 2.6s forwards}.scroll-hint i{width:.62rem;height:.62rem;border-right:1px solid currentColor;border-bottom:1px solid currentColor;transform:rotate(45deg);animation:hint-arrow 1.4s ease-in-out infinite}@keyframes hint-in{to{opacity:1}}@keyframes hint-arrow{50%{transform:translateY(6px) rotate(45deg)}}@keyframes cover-image-drift{0%{filter:saturate(.94) brightness(1.06);transform:scale(1.07) translate3d(0,1rem,0)}to{filter:saturate(.97) brightness(1);transform:scale(1.01) translate3d(-.3rem,-.25rem,0)}}@keyframes cover-overlay-in{to{opacity:1}}.greeting-body{max-width:34rem;margin:0 auto}.greeting-message{margin:0;color:#6e675f;font-size:.98rem;line-height:2.3}.greeting-photo{width:100%;margin:3.4rem auto 0;overflow:hidden}.greeting-photo img{width:100%;aspect-ratio:3 / 4;object-fit:cover;filter:saturate(.92) brightness(1.03)}.quote-block{margin-top:3.4rem}.quote-block blockquote{margin:0;color:#837a6e;font-size:1.02rem;font-style:italic;line-height:2.2}.quote-block cite{display:block;margin-top:.9rem;color:var(--color-text-light);font-size:.84rem;font-style:normal}.contact-list{display:grid;gap:.7rem}.contact-card{display:grid;grid-template-columns:1fr auto;align-items:center;gap:.75rem;padding:.85rem;border:1px solid var(--color-line);border-radius:4px;background:#fff}.contact-card div,.contact-card nav{display:flex;align-items:center;gap:.5rem}.contact-card div{min-width:0;text-align:left}.contact-card span{color:var(--color-text-light);font-size:.78rem;white-space:nowrap}.contact-card strong{color:var(--color-ink);font-size:.98rem}.couple-section{background:var(--color-bg-alt)}.couple-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-bottom:2.6rem}.couple-card{min-width:0}.couple-photo-wrap{width:100%;aspect-ratio:3 / 4;margin:0 auto 1.1rem;overflow:hidden;border-radius:4px;background:#ece5dd}.couple-photo-wrap img{width:100%;height:100%;object-fit:cover}.couple-label,.couple-birth,.couple-family{margin:0}.couple-label{color:#857c70;font-size:.86rem}.couple-label strong{margin-left:.2rem;color:var(--color-ink);font-size:1rem;font-weight:500}.couple-birth{margin-top:.15rem;color:#9b9186;font-size:.82rem}.couple-card ul{display:grid;gap:.3rem;padding:0;margin:1.1rem 0 0;list-style:none;color:#6d675f;font-size:.88rem;line-height:1.7}.couple-family{margin-top:1.1rem;color:#8b8177;font-size:.84rem}.interview-body{display:grid;gap:1.6rem;justify-items:center}.interview-body p{margin:0;color:#6e675f;font-size:.96rem;line-height:2.1}.interview-list{display:grid;gap:1.4rem;text-align:left}.interview-item{display:grid;gap:.5rem}.interview-q{margin:0;color:var(--color-ink);font-size:.96rem;font-weight:500}.interview-q span{margin-right:.25rem;color:var(--color-accent)}.interview-a{margin:0;color:var(--color-text);font-size:.92rem;line-height:1.9}.wedding-info{display:grid;gap:.3rem;margin:0 0 2.2rem}.wedding-info strong{margin-bottom:.3rem;color:var(--color-ink);font-size:1.02rem;font-weight:500}.wedding-info span{color:#928982;font-size:.86rem}.calendar-photo{width:100%;aspect-ratio:1.18;margin:0 0 2.4rem;border-radius:4px;object-fit:cover;filter:saturate(.92) brightness(1.03)}.calendar-card{max-width:21rem;margin:0 auto;padding:1.8rem 1.2rem;border-top:1px solid var(--color-line);border-bottom:1px solid var(--color-line)}.calendar-month{margin-bottom:1.4rem;color:var(--color-accent);font-family:var(--font-serif-en);font-size:1.3rem}.calendar-weekdays,.calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.55rem .3rem}.calendar-weekdays{margin-bottom:.9rem;color:#a39a8f;font-size:.8rem}.calendar-days span{display:grid;aspect-ratio:1;place-items:center;border-radius:50%;color:#625b54;font-size:.86rem}.calendar-days .wedding-day{background:var(--color-accent-soft);color:#fff}.dday-photo{position:relative;width:calc(100% + 3.75rem);margin:3.4rem -1.875rem -5.6rem;overflow:hidden}.dday-photo img{width:100%;aspect-ratio:3 / 4;object-fit:cover;filter:saturate(.92) brightness(.9)}.dday-overlay{position:absolute;inset:0;display:grid;align-content:center;gap:.4rem;background:#1e1b182e;color:#fff;text-shadow:0 1px 14px rgba(0,0,0,.35)}.dday-overlay strong{font-family:var(--font-serif-en);font-size:3rem;font-weight:400;letter-spacing:.06em;line-height:1}.dday-overlay p{margin:0}.dday-date{font-family:var(--font-serif-en);font-size:.98rem;letter-spacing:.16em}#dday-message{margin-top:.8rem;color:#ffffffe0;font-size:.84rem}.gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.25rem}.gallery-thumb{position:relative;aspect-ratio:1;overflow:hidden;padding:0;border:0;border-radius:0;background:#e7dfd6;cursor:pointer}.gallery-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .25s ease}.gallery-thumb:active img,.gallery-thumb:hover img{transform:scale(1.04)}.lightbox{position:fixed;z-index:85;inset:0;display:grid;grid-template-columns:3.1rem 1fr 3.1rem;align-items:center;justify-items:center;padding:4.6rem max(.9rem,calc((100vw - var(--max-width)) / 2 + .9rem)) 3rem;background:#161817f0;visibility:hidden;opacity:0;pointer-events:none;transition:opacity .2s ease,visibility 0s linear .2s}.lightbox.is-open{visibility:visible;opacity:1;pointer-events:auto;transition:opacity .2s ease,visibility 0s}.lightbox-image{max-height:calc(100dvh - 8rem);border-radius:4px;object-fit:contain;box-shadow:0 16px 48px #00000059}.lightbox .icon-button{border-color:#fff3;background:#ffffff1f;color:#fff}.lightbox-close{position:absolute;top:max(1rem,env(safe-area-inset-top));right:max(1rem,calc((100vw - var(--max-width)) / 2 + 1rem))}.lightbox-count{position:absolute;bottom:max(1rem,env(safe-area-inset-bottom));left:0;right:0;margin:0;color:#ffffffd1;text-align:center}.timeline-section{background:var(--color-bg-alt)}.timeline-list{position:relative;display:grid;gap:2.4rem;text-align:left}.timeline-list:before{position:absolute;top:.5rem;bottom:.5rem;left:50%;width:1px;background:#a58e6c59;content:""}.timeline-item{position:relative;display:grid;grid-template-columns:1fr;gap:.8rem}.timeline-dot{position:absolute;left:50%;width:.55rem;height:.55rem;margin-top:.55rem;border-radius:50%;background:var(--color-accent);transform:translate(-50%)}.timeline-content{width:calc(50% - 1.25rem);text-align:center}.timeline-item:nth-child(2n) .timeline-content{margin-left:calc(50% + 1.25rem)}.timeline-content time{color:var(--color-accent);font-family:var(--font-serif-en);font-size:.86rem;letter-spacing:.06em}.timeline-content h3{margin:.15rem 0 .35rem;color:var(--color-ink);font-size:.98rem;font-weight:500}.timeline-content p{margin:0;font-size:.86rem;line-height:1.8}.timeline-content img{width:100%;margin-top:.8rem;border-radius:4px}.notice-grid{display:grid;gap:.75rem}.notice-card{padding:1.4rem 1rem;border:1px solid var(--color-line);border-radius:4px;background:var(--color-panel)}.notice-card span{display:grid;width:2.2rem;height:2.2rem;place-items:center;margin:0 auto .65rem;border-radius:50%;background:#a58e6c24;color:var(--color-accent);font-weight:700}.notice-card h3{margin:0 0 .35rem;color:var(--color-ink);font-size:.98rem;font-weight:500}.notice-card p{margin:0;font-size:.88rem}.location-section{background:var(--color-bg-alt)}.location-card{display:grid;gap:.35rem;justify-items:center;margin-bottom:1.6rem}.location-card h3,.location-card p{margin:0}.location-card h3{color:var(--color-ink);font-size:1.05rem;font-weight:500}.location-card p,.venue-tel{color:var(--color-text-light);font-size:.88rem}.map-box,.map-fallback{height:15rem;overflow:hidden;border:1px solid var(--color-line);border-radius:4px;background:var(--color-panel)}.map-fallback{display:grid;align-content:center;gap:.35rem;padding:1rem;background:linear-gradient(90deg,rgba(84,79,74,.08) 1px,transparent 1px),linear-gradient(rgba(84,79,74,.08) 1px,transparent 1px),#f5f4ee;background-size:2rem 2rem}.map-fallback strong{color:var(--color-ink)}.map-fallback span{color:var(--color-text-light);font-size:.9rem}.map-fallback small{color:var(--color-accent);font-size:.78rem}.nav-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;margin-top:.8rem}.nav-buttons .pill-button{min-height:2.65rem;padding:0 .45rem;font-size:.85rem}.transport-list{display:grid;gap:1.4rem;padding:1.8rem 0 0;margin:1.8rem 0 0;border-top:1px solid var(--color-line);list-style:none;text-align:left}.transport-list li{display:grid;gap:.3rem}.transport-list strong{color:var(--color-accent);font-size:.9rem;font-weight:500}.transport-list span{font-size:.9rem;line-height:1.9}.account-intro{margin:0 0 2.4rem;color:#6e675f;font-size:.94rem;line-height:2.1}.account-list{display:grid;gap:.75rem}.account-group{overflow:hidden;border:1px solid var(--color-line);border-radius:4px;background:#fff;text-align:left}.account-trigger{display:grid;width:100%;min-height:3.4rem;grid-template-columns:1fr auto;align-items:center;gap:.75rem;padding:.9rem 1.1rem;border:0;background:transparent;color:var(--color-ink);text-align:left;cursor:pointer}.account-trigger i{width:.5rem;height:.5rem;border-right:1px solid currentColor;border-bottom:1px solid currentColor;transform:rotate(45deg);transition:transform .2s ease}.account-trigger[aria-expanded=true] i{transform:rotate(225deg)}.account-panel{padding:0 1.1rem .9rem}.account-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:.55rem;padding:.8rem 0;border-top:1px solid var(--color-line)}.account-row div{min-width:0}.account-row strong,.account-row span{display:block;overflow-wrap:anywhere}.account-row strong{color:var(--color-ink);font-size:.9rem;font-weight:500}.account-row span{color:var(--color-text-light);font-size:.8rem}.pay-button{border-color:#f0cf4d;background:#ffe15b;color:#381f00}.rsvp-section{background:var(--color-bg-alt)}.rsvp-box{display:grid;gap:1.8rem;justify-items:center}.rsvp-box p{margin:0;color:#6e675f;font-size:.94rem;line-height:2.1}fieldset{padding:0;margin:0;border:0}legend{margin-bottom:.35rem;color:var(--color-ink)}.guestbook-list{display:grid;gap:.75rem;margin-bottom:1rem;text-align:left}.guestbook-card{display:grid;gap:.55rem;padding:1rem;border:1px solid var(--color-line);border-radius:4px;background:var(--color-panel)}.guestbook-card div{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.guestbook-card strong{color:var(--color-ink)}.guestbook-card time{flex:0 0 auto;color:var(--color-text-light);font-size:.78rem}.guestbook-card p,.guestbook-empty{margin:0;overflow-wrap:anywhere;white-space:pre-wrap}.guestbook-card .text-button{justify-self:end}.guestbook-more{margin-right:.4rem;margin-bottom:1rem}.footer-section{padding:5.6rem 0 0;background:var(--color-bg);text-align:center}.together-block{padding:0 1.875rem 3rem}.together-block h2{margin:0 0 1.2rem;color:var(--color-accent);font-size:1.12rem;font-weight:500;letter-spacing:.16em}.together-counter{margin:0;color:#6e675f;font-size:.96rem;letter-spacing:.02em}.footer-photo{width:100%;margin:0;overflow:hidden}.footer-photo img{width:100%;aspect-ratio:3 / 4;object-fit:cover;filter:saturate(.92) brightness(1.02)}.footer-bottom{padding:3rem 1.875rem max(2.6rem,env(safe-area-inset-bottom))}.footer-actions{display:grid;gap:.6rem;max-width:18rem;margin:0 auto 2.4rem}.footer-section .kakao-share{border-color:#f3d54e;background:#fee500;color:#2f2400}.footer-section .kakao-share:hover{background:#f7dc0a;border-color:#eecf10}.footer-logo{margin:0 0 .4rem;color:var(--color-accent);font-family:var(--font-serif-en);font-size:1.3rem;font-style:italic}.footer-copy{margin:0;color:var(--color-text-light);font-size:.72rem;letter-spacing:.04em}@media(max-width:374px){.wedding-section{padding-right:1.1rem;padding-left:1.1rem}.cover-script{font-size:2.2rem}.contact-card,.account-row{grid-template-columns:1fr}.contact-card nav{width:100%}.contact-card nav .text-button,.account-row .text-button{flex:1;width:100%}.nav-buttons{grid-template-columns:1fr}.dday-photo{width:calc(100% + 2.2rem);margin-right:-1.1rem;margin-left:-1.1rem}}
