@import"https://fonts.googleapis.com/css2?family=Gowun+Batang:wght@400;500;600;700&display=swap";:root{font-family:Gowun Batang,serif;line-height:1.5;font-weight:400;color-scheme:light;color:#333;background-color:#f5f5f5;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;padding:0;min-height:100vh;background-color:#f0f0f0}#root{width:100%;height:100%}button{border:none;background:none;padding:0;cursor:pointer}:root{--color-primary: #625f5f;--color-secondary: #6b6b6b;--color-accent: #a89a8c;--color-accent-light: #c9b8a8;--color-bg: #faf9f7;--color-bg-alt: #f3f1ee;--color-bg-warm: #f8f6f3;--color-border: #e8e6e3;--color-text: #2c2c2c;--color-text-light: #888888;--color-white: #ffffff;--initial-vh: 800px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Gowun Batang,serif;background-color:var(--color-bg);color:var(--color-text);line-height:1.7;overflow-x:hidden;-webkit-font-smoothing:antialiased}.app{width:100%;max-width:430px;margin:0 auto;background-color:var(--color-white);min-height:100vh;position:relative;box-shadow:0 0 60px #0000000f;overflow:hidden}h1,h2,h3,.entrance-title,.couple-names,.section-title{font-family:inherit;font-weight:400}.entrance-screen{position:fixed;top:0;left:0;width:100%;height:100vh;background:linear-gradient(180deg,var(--color-white) 0%,var(--color-bg-warm) 100%);display:flex;align-items:center;justify-content:center;z-index:2000;cursor:pointer}.entrance-content{position:relative;z-index:2;text-align:center;padding:2rem;color:var(--color-primary)}.entrance-heart{font-size:1.5rem;margin-bottom:2rem;color:var(--color-accent);opacity:0;animation:fadeInUp .8s ease-out .3s forwards;letter-spacing:.5em}.entrance-title{font-size:2rem;color:var(--color-primary);margin-bottom:2.5rem;letter-spacing:.2em;font-weight:300;opacity:0;animation:fadeInUp .8s ease-out .6s forwards}.entrance-names{display:flex;align-items:center;justify-content:center;gap:1.5rem;margin-bottom:2rem;font-size:1.3rem;font-family:Cormorant Garamond,serif;opacity:0;animation:fadeInUp .8s ease-out .9s forwards}.entrance-names .groom,.entrance-names .bride{color:var(--color-primary);font-weight:400;letter-spacing:.1em}.entrance-names .heart-divider{color:var(--color-accent);font-size:.8rem;opacity:.6}.entrance-date{font-size:.9rem;color:var(--color-secondary);margin-bottom:1rem;letter-spacing:.3em;opacity:0;animation:fadeInUp .8s ease-out 1.2s forwards;font-weight:300}.entrance-message{font-size:.85rem;color:var(--color-text-light);margin-bottom:3rem;letter-spacing:.08em;font-weight:300;opacity:0;animation:fadeInUp .8s ease-out 1.5s forwards}.entrance-button{margin-top:2rem;padding:16px 48px;background:var(--color-primary);border:none;color:var(--color-white);font-size:.8rem;letter-spacing:.2em;transition:all .4s cubic-bezier(.25,.46,.45,.94);border-radius:0;display:inline-flex;align-items:center;gap:.8rem;font-weight:400;opacity:0;animation:fadeInUp .8s ease-out 1.8s forwards;text-transform:uppercase}.entrance-button:hover{background:var(--color-accent);transform:translateY(-2px)}.entrance-button .button-arrow{font-size:1rem;transition:transform .3s ease}.entrance-button:hover .button-arrow{transform:translate(5px)}.mute-toggle{position:absolute;top:16px;right:16px;width:24px;height:24px;background:#ffffffe6;border:1px solid var(--color-border);border-radius:50%;padding:0;z-index:1000;display:flex;align-items:center;justify-content:center;transition:all .3s ease;cursor:pointer;color:var(--color-secondary);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.mute-toggle:hover{color:var(--color-primary);border-color:var(--color-accent)}.mute-toggle svg{width:18px;height:18px;display:block}.hero-section{position:relative;width:100%;height:var(--initial-vh, 100svh);overflow:hidden}.hero-images{position:absolute;top:0;left:0;width:100%;height:var(--initial-vh, 100svh);background:var(--color-bg-alt)}.hero-image{position:absolute;top:0;left:0;width:100%;height:var(--initial-vh, 100svh);object-fit:cover;object-position:center;opacity:0;filter:grayscale(100%) brightness(.7)}.hero-image.active{opacity:1}.hero-overlay{position:absolute;inset:0;width:100%;display:flex;flex-direction:column;justify-content:space-between;align-items:center;pointer-events:none;z-index:10;padding:60px 0 90px}.hero-info{width:100%;margin-top:0;font-weight:400;color:#fff;text-shadow:0 1px 3px rgba(255,255,255,.5)}.hero-title{font-size:2rem;letter-spacing:.1em;margin-bottom:0;font-weight:600;color:#fff;text-shadow:0 1px 3px rgba(255,255,255,.5);margin-top:20px}.hero-info-wrap{width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}.hero-venue{font-size:1em;letter-spacing:.15em;margin-bottom:.8rem;font-weight:500}.hero-date{display:flex;align-items:center;justify-content:center;gap:.8rem;font-size:.825rem;letter-spacing:.1em;font-weight:500}.hero-date .divider{opacity:.5}.scroll-indicator{position:absolute;bottom:30px;left:50%;transform:translate(-50%);color:#fff;font-size:1.5rem;opacity:.7;animation:bounce 2s infinite;z-index:10}@keyframes bounce{0%,to{transform:translate(-50%) translateY(0)}50%{transform:translate(-50%) translateY(10px)}}section{padding:5rem 2rem;text-align:center;background-color:var(--color-white)}.section-title{font-size:1.1rem;color:var(--color-primary);margin-bottom:3rem;letter-spacing:.25em;position:relative;display:inline-block;text-transform:uppercase;font-weight:400}.section-title:after{content:"";display:block;width:30px;height:1px;background:var(--color-accent);margin:15px auto 0}.section-subtitle{font-family:Cormorant Garamond,serif;color:var(--color-accent);font-size:.85rem;letter-spacing:.2em;text-transform:uppercase;display:block;margin-bottom:1rem;font-weight:500}.greeting-section{padding:5rem 2rem;background:var(--color-bg-warm)}.greeting-text p{margin:.3rem 0;color:var(--color-secondary);font-size:.9rem;line-height:2;font-weight:300}.greeting-text strong{font-weight:700;color:var(--color-primary)}.parents-info{margin-top:3rem;padding:1.5rem 0;display:grid;grid-template-columns:1fr auto 1fr;row-gap:.8rem;column-gap:.8rem;align-items:center;max-width:400px;margin-left:auto;margin-right:auto;border-top:1px solid var(--color-border)}.parent-name{text-align:right;color:var(--color-primary);font-size:.95rem}.relation-text{text-align:center;color:#999;font-size:.8rem;white-space:nowrap}.child-name{text-align:left;font-weight:500;color:var(--color-primary);font-size:1.05rem}.countdown-section{background:var(--color-white);padding:5rem 2rem}.wedding-info-text{text-align:center;margin-bottom:3rem;color:var(--color-secondary)}.wedding-venue{font-size:1.2rem;color:var(--color-primary);font-weight:500;margin-bottom:.5rem}.wedding-hall{font-size:.95rem;margin-bottom:2rem}.wedding-datetime{font-size:1rem;line-height:1.8;font-family:Cormorant Garamond,serif;font-weight:500;color:var(--color-primary)}.calendar-container{margin:0 0 3rem;max-width:390px;padding:1rem;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.calendar-header{display:flex;justify-content:space-between;margin-bottom:1rem;font-family:Cormorant Garamond,serif;font-size:1.1rem;font-weight:500;color:var(--color-primary)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;text-align:center}.calendar-day-label{font-size:.75rem;color:var(--color-secondary);margin-bottom:.5rem}.calendar-day-label.sun{color:#d67d7d}.calendar-day{font-size:.85rem;color:var(--color-secondary);padding:6px;position:relative;z-index:1}.calendar-day.empty{pointer-events:none}.calendar-day.sun{color:#d67d7d}.calendar-day.active{color:#fff;font-weight:500}.calendar-day.active:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:28px;height:28px;background-color:var(--color-accent);border-radius:50%;z-index:-1}.countdown-title{text-align:center;margin-top:2rem;font-size:.95rem;color:var(--color-primary);line-height:1.6}.countdown-title strong{font-size:1.2rem;color:var(--color-primary);font-weight:600;margin:0 4px}.countdown{display:flex;justify-content:center;gap:1.5rem}.countdown-item{display:flex;flex-direction:column;align-items:center}.countdown-number{font-family:Cormorant Garamond,serif;font-size:2rem;color:var(--color-primary);margin-bottom:.5rem;font-weight:300}.countdown-label{font-size:.65rem;color:var(--color-text-light);letter-spacing:.15em;text-transform:uppercase}.gallery-section{background:var(--color-white);padding:5rem 0}.gallery-section .section-title{padding:0 2rem}.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;padding:0 1rem}.gallery-image-wrapper{position:relative;aspect-ratio:1;overflow:hidden;background:var(--color-bg-alt)}.gallery-skeleton{position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,var(--color-bg-alt) 0%,var(--color-bg) 50%,var(--color-bg-alt) 100%);background-size:200% 100%;animation:skeleton-loading 1.5s infinite}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.gallery-image{width:100%;height:100%;object-fit:cover;transition:all .4s ease;cursor:pointer;opacity:0}.gallery-image.loaded{opacity:1}.gallery-image.loaded:hover{opacity:.85}.gallery-load-more{margin-top:2.5rem;padding:12px 40px;background:var(--color-primary);color:var(--color-white);border:none;font-size:.85rem;letter-spacing:.1em;cursor:pointer;transition:all .3s ease;font-weight:400}.gallery-load-more:hover{background:var(--color-accent);transform:translateY(-2px)}.location-section{background:var(--color-bg-warm)}.location-info{margin-bottom:2rem}.location-name{font-family:Cormorant Garamond,serif;font-size:1.3rem;color:var(--color-primary);margin-bottom:.8rem;letter-spacing:.1em}.location-address{color:var(--color-secondary);font-size:.85rem;margin-bottom:.3rem}.location-address-btn{display:inline-flex;height:60px;align-items:center;gap:.5rem;background:#fff;border:1px solid var(--color-border);padding:.8rem 1rem;font-size:.9rem;color:var(--color-secondary);cursor:pointer;font-family:inherit;transition:all .2s ease}.location-address-btn:hover{background-color:var(--color-bg-alt);border-color:var(--color-accent)}.location-address-btn svg{flex-shrink:0;opacity:.6}.location-detail{color:var(--color-text-light);font-size:.8rem}.location-tel{color:var(--color-text-light);font-size:.8rem;margin-top:.5rem}.map-container{margin:2.5rem 0;border:1px solid var(--color-border);overflow:hidden;position:relative}.map-lock-btn{position:absolute;top:10px;right:10px;z-index:10;height:32px;padding:0 10px;gap:6px;border-radius:4px;border:none;background:#fff;box-shadow:0 2px 6px #00000026;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-text);transition:background-color .2s}.map-lock-btn:hover{background-color:#f5f5f5}.map-lock-label{font-size:.75rem;line-height:1}.map-placeholder{height:280px;background-color:var(--color-bg-alt);display:flex;flex-direction:column;justify-content:center;align-items:center;color:var(--color-text-light);font-size:.85rem}.map-note{font-size:.75rem;margin-top:.5rem;opacity:.6}.transportation{margin-top:2.5rem}.transport-item{margin-bottom:2rem;text-align:left;padding:0}.transport-item h4{font-family:Cormorant Garamond,serif;font-size:.9rem;color:var(--color-primary);margin-bottom:.8rem;letter-spacing:.15em;font-weight:500}.transport-item p{font-size:.8rem;color:var(--color-secondary);line-height:1.8}.information-section{background:var(--color-bg-warm)}.info-heading{font-size:.95rem;color:var(--color-primary);font-weight:500;margin-bottom:1.2rem}.info-greeting{font-size:.85rem;color:var(--color-secondary);line-height:1.9;margin-bottom:2rem}.info-card{width:100%;padding:1rem 1.5rem;background:var(--color-white);border:1px solid var(--color-border)}.info-row{display:flex;align-items:baseline;gap:.8rem;margin-bottom:.6rem}.info-row:last-child{margin-bottom:0}.info-label{flex-shrink:0;font-size:.85rem;color:var(--color-primary);font-weight:500}.info-value{font-size:.85rem;color:var(--color-secondary);line-height:1.8;text-align:left}.account-section{background-color:var(--color-bg-alt)}.account-description{text-align:center;margin-bottom:5rem;color:var(--color-secondary);font-size:.95rem;line-height:1.8}.account-collapse-container{display:flex;flex-direction:column;gap:12px}.account-collapse{width:100%;background-color:var(--color-white);border:1px solid var(--color-border);overflow:hidden}.account-collapse-summary{list-style:none;padding:18px 24px;text-align:center;color:var(--color-primary);font-size:.85rem;cursor:pointer;position:relative;-webkit-user-select:none;user-select:none;transition:background-color .3s ease;letter-spacing:.05em}.account-collapse-summary::-webkit-details-marker{display:none}.account-collapse-summary:hover{background-color:var(--color-bg)}.collapse-icon{position:absolute;right:24px;top:50%;transform:translateY(-50%);font-size:8px;color:var(--color-text-light);transition:transform .3s ease}.account-collapse[open] .collapse-icon{transform:translateY(-50%) rotate(180deg)}.account-collapse-content{padding:0 20px 20px;font-size:.85rem}.account-row{display:flex;justify-content:space-between;align-items:center;padding-top:14px;border-bottom:1px solid var(--color-border);color:var(--color-primary)}.account-row:last-child{border-bottom:none;padding-bottom:0}.account-name{font-size:.85rem;color:var(--color-primary);font-weight:500}.account-copy-btn{display:flex;align-items:center;gap:6px;background:none;border:none;color:var(--color-secondary);font-size:.8rem;cursor:pointer;padding:6px 0;transition:color .3s ease}.account-copy-btn:hover{color:var(--color-primary)}.account-copy-btn svg{display:inline-block;vertical-align:-1px;margin-left:2px;width:14px;height:14px}.guestbook-section{padding:4rem 1.5rem;background:var(--color-white)}.guestbook-description{text-align:center;margin-bottom:1.5rem;color:var(--color-secondary);font-size:.9rem;line-height:1.8}.guestbook-write-btn{display:block;width:100%;padding:14px;margin-bottom:1.5rem;background:var(--color-primary);color:var(--color-white);border:none;font-size:.9rem;font-family:inherit;cursor:pointer;transition:background-color .2s}.guestbook-write-btn:hover{background:var(--color-secondary)}.form-modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:9999;animation:fadeIn .3s ease;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.guestbook-modal{background:var(--color-white);padding:24px 20px;border-radius:8px;width:90%;max-width:360px;position:relative;box-shadow:0 10px 40px #00000026}.guestbook-modal .modal-close-btn{position:absolute;top:12px;right:12px;background:none;border:none;font-size:1.5rem;color:var(--color-text-light);cursor:pointer;line-height:1;padding:4px}.guestbook-modal .modal-close-btn:hover{color:var(--color-text)}.guestbook-modal h3{text-align:center;margin-bottom:20px;font-size:1.1rem;font-weight:500}.guestbook-modal form{display:flex;flex-direction:column;gap:12px}.guestbook-modal input{width:100%;padding:12px 14px;border:1px solid var(--color-border);font-size:.9rem;font-family:inherit;outline:none;box-sizing:border-box;transition:border-color .2s}.guestbook-modal input:focus{border-color:var(--color-accent)}.guestbook-modal textarea{width:100%;padding:12px 14px;border:1px solid var(--color-border);font-size:.9rem;font-family:inherit;outline:none;resize:none;min-height:120px;box-sizing:border-box;transition:border-color .2s}.guestbook-modal textarea:focus{border-color:var(--color-accent)}.guestbook-submit-btn{width:100%;padding:14px;background:var(--color-primary);color:var(--color-white);border:none;font-size:.9rem;font-family:inherit;cursor:pointer;transition:background-color .2s}.guestbook-submit-btn:hover{background:var(--color-secondary)}.guestbook-list{display:flex;flex-direction:column;gap:12px}.guestbook-empty{text-align:center;padding:2rem 1rem;color:var(--color-text-light);font-size:.9rem;line-height:1.8;background:var(--color-bg-alt);border:1px solid var(--color-border)}.guestbook-card{background:var(--color-bg-alt);padding:14px;border:1px solid var(--color-border)}.guestbook-card-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:10px;border-bottom:1px solid var(--color-border);margin-bottom:10px}.guestbook-card-name{font-size:.85rem;color:var(--color-text);font-weight:500}.guestbook-delete-btn{background:none;border:none;font-size:1.1rem;color:var(--color-text-light);cursor:pointer;padding:4px 8px;line-height:1;transition:color .2s}.guestbook-delete-btn:hover{color:var(--color-text)}.guestbook-card-content{font-size:.85rem;line-height:1.7;color:var(--color-text);margin-bottom:10px;white-space:pre-wrap;word-break:break-word}.guestbook-card-date{font-size:.7rem;color:var(--color-text-light);text-align:right}.guestbook-load-more{display:block;width:100%;margin-top:1rem;padding:12px;background:transparent;color:var(--color-secondary);border:1px solid var(--color-border);font-size:.85rem;font-family:inherit;cursor:pointer;transition:all .3s ease}.guestbook-load-more:hover{background:var(--color-bg-alt)}.delete-modal{background:var(--color-white);padding:24px 20px;border-radius:8px;width:90%;max-width:320px;text-align:center;box-shadow:0 10px 40px #00000026}.delete-modal h3{margin-bottom:8px;font-size:1rem;font-weight:500}.delete-modal p{margin-bottom:16px;font-size:.85rem;color:var(--color-secondary)}.delete-modal input{width:100%;padding:12px 14px;border:1px solid var(--color-border);font-size:.9rem;font-family:inherit;outline:none;margin-bottom:16px;box-sizing:border-box}.delete-modal input:focus{border-color:var(--color-accent)}.delete-modal-buttons{display:flex;gap:10px}.delete-modal-buttons button{flex:1;padding:12px;font-size:.85rem;font-family:inherit;border:none;cursor:pointer;transition:background-color .2s}.delete-modal-buttons .cancel-btn{background:var(--color-bg-alt);color:var(--color-text)}.delete-modal-buttons .cancel-btn:hover{background:var(--color-border)}.delete-modal-buttons .confirm-btn{background:#e74c3c;color:#fff}.delete-modal-buttons .confirm-btn:hover{background:#c0392b}.share-section{padding:3rem 2rem;background:var(--color-white)}.share-buttons{display:flex;justify-content:center;gap:5rem}.share-button{display:flex;flex-direction:column;align-items:center;gap:.5rem;background:transparent;border:none;cursor:pointer;transition:all .3s ease}.share-button img,.share-button .share-icon{width:40px;height:40px;border-radius:8px}.share-button .share-icon{display:flex;align-items:center;justify-content:center;background:var(--color-white);border:1px solid var(--color-border);font-size:1.2rem}.share-button .share-label{font-size:.75rem;color:var(--color-text)}.share-button:hover{transform:translateY(-3px)}.footer{background:var(--color-bg-alt);padding:4rem 2rem;color:var(--color-text-light);font-size:.8rem;letter-spacing:.1em}.footer-names{margin-top:.8rem;font-family:Cormorant Garamond,serif;color:var(--color-accent);font-size:1rem;letter-spacing:.15em}.toast{position:fixed;bottom:80px;left:50%;transform:translate(-50%);background:#000c;color:#fff;padding:12px 24px;border-radius:8px;font-size:.9rem;z-index:1000;animation:toastFadeIn .3s ease,toastFadeOut .3s ease 1.7s forwards}@keyframes toastFadeIn{0%{opacity:0;transform:translate(-50%) translateY(20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes toastFadeOut{0%{opacity:1;transform:translate(-50%) translateY(0)}to{opacity:0;transform:translate(-50%) translateY(20px)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes subtleZoom{0%{transform:scale(1)}to{transform:scale(1.03)}}@keyframes heartBeat{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#fffffff2;display:flex;justify-content:center;align-items:center;z-index:9999;animation:fadeIn .3s ease;touch-action:none;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.modal-content{position:relative;width:100%;height:100%;display:flex;justify-content:center;align-items:center}.modal-slider{position:relative;width:100%;height:100%;display:flex;justify-content:center;align-items:center;overflow:hidden}.modal-slide{position:absolute;width:100%;height:100%;display:flex;justify-content:center;align-items:center}.modal-slide-current{z-index:1}.modal-slide-prev{transform:translate(-100%);z-index:2}.modal-slide-next{transform:translate(100%);z-index:2}.modal-image{max-width:90%;max-height:90%;object-fit:contain;pointer-events:none;user-select:none;-webkit-user-select:none;touch-action:manipulation}.modal-slider.sliding-left .modal-slide-current{animation:slideOutToLeft .3s ease-out forwards}.modal-slider.sliding-left .modal-slide-next{animation:slideInFromRight .3s ease-out forwards}.modal-slider.sliding-right .modal-slide-current{animation:slideOutToRight .3s ease-out forwards}.modal-slider.sliding-right .modal-slide-prev{animation:slideInFromLeft .3s ease-out forwards}@keyframes slideOutToLeft{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes slideInFromRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slideOutToRight{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes slideInFromLeft{0%{transform:translate(-100%)}to{transform:translate(0)}}.modal-close-button{position:absolute;top:20px;right:20px;background:none;border:none;color:var(--color-primary);font-size:2rem;cursor:pointer;padding:10px;line-height:1;z-index:10000;opacity:.7;transition:opacity .3s;font-weight:300}.modal-close-button:hover{opacity:1}.modal-counter{position:absolute;bottom:30px;left:50%;transform:translate(-50%);background:#00000080;color:#fff;padding:8px 16px;border-radius:20px;font-size:.85rem;z-index:10000;font-family:Cormorant Garamond,serif}.modal-nav-button{position:absolute;top:50%;transform:translateY(-50%);background:#0000004d;border:none;color:#fff;font-size:3rem;cursor:pointer;padding:20px 15px;line-height:1;z-index:10000;opacity:.7;transition:all .3s;font-weight:300;-webkit-user-select:none;user-select:none}.modal-nav-button:hover{opacity:1;background:#00000080}.modal-prev{left:10px}.modal-next{right:10px}@keyframes revealUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}.reveal{opacity:0;animation:revealUp .8s ease-out forwards}@media(max-width:380px){.countdown{gap:1.5rem}.countdown-number{font-size:2rem}.entrance-title{font-size:1.7rem}}
