:root{--olive:#b5c49a;--dusty-pink:#e8c0c5;--pale-pink:#f4e2e4;--ivory:#f6f7ec;--bg:var(--ivory);--bg-tint:var(--pale-pink);--bg-block:var(--dusty-pink);--ink:#4a4640;--ink-soft:#93897f;--accent:#c98d97;--accent-2:#8fa06e;--line:#e6dcd2;--max-w:430px;--serif-en:"Old Standard TT",serif;--script-en:"Great Vibes",cursive;--hand-ko:"Nanum Pen Script",cursive;--sans-ko:"Gowun Dodum","Pretendard","Apple SD Gothic Neo",sans-serif}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--sans-ko);color:var(--ink);line-height:1.8;-webkit-font-smoothing:antialiased;word-break:keep-all;background-color:var(--olive);background-image:radial-gradient(115% 55% at 12% 8%,rgba(232,192,197,.55),transparent 60%),radial-gradient(90% 50% at 88% 20%,rgba(244,226,228,.5),transparent 58%),radial-gradient(100% 65% at 25% 78%,rgba(244,226,228,.55),transparent 60%),radial-gradient(120% 60% at 92% 92%,rgba(143,160,110,.55),transparent 62%),radial-gradient(70% 40% at 55% 45%,rgba(181,196,154,.35),transparent 65%);background-attachment:fixed;background-repeat:no-repeat}button{font-family:inherit;cursor:pointer}#wrap{max-width:var(--max-w);margin:0 auto;background:var(--olive);padding:28px 14px;min-height:100vh}.paper{background:var(--bg);border-radius:6px;overflow:hidden;box-shadow:0 16px 44px rgba(43,48,30,.28)}.serif-en{font-family:var(--serif-en)}.script-en{font-family:var(--script-en)}.hand-ko{font-family:var(--hand-ko)}.section{padding:88px 24px;text-align:center}.section-tinted{background:var(--bg-tint)}.section-label{font-family:var(--serif-en);font-size:.78rem;letter-spacing:.45em;text-transform:uppercase;color:var(--accent);margin-bottom:44px}.divider{width:1px;height:44px;background:var(--accent);margin:36px auto;opacity:.5}.btn-oval{display:inline-block;font-family:var(--serif-en);font-size:.82rem;letter-spacing:.28em;color:var(--accent);border:1.5px solid var(--accent);border-radius:50%;padding:14px 34px;background:none;text-decoration:none}.polaroid{background:#fff;padding:12px 12px 40px;box-shadow:0 8px 26px rgba(74,70,64,.16)}.polaroid.tilt-l{transform:rotate(-2.5deg)}.polaroid.tilt-r{transform:rotate(2.2deg)}.tape{position:absolute;top:-12px;left:50%;transform:translateX(-50%) rotate(-3deg);width:84px;height:26px;background:var(--olive);opacity:.65;border-radius:2px;z-index:2}#sec-hero{padding:64px 30px 72px;text-align:center}.poster{position:relative;aspect-ratio:3/4.4;overflow:hidden;border-radius:4px;background:linear-gradient(160deg,var(--pale-pink),var(--dusty-pink) 55%,var(--olive));background-size:cover;background-position:50%;box-shadow:0 14px 40px rgba(74,70,64,.22)}.poster:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.02) 45%,rgba(0,0,0,.32))}.poster-names{position:absolute;top:22px;left:0;right:0;display:flex;justify-content:space-between;padding:0 20px;z-index:1;color:#fff;text-shadow:0 1px 10px rgba(0,0,0,.35);font-size:.85rem;line-height:1.5;text-align:left}.poster-names small{display:block;font-size:.66rem;opacity:.85}.poster-names span{font-family:var(--serif-en);font-size:.8rem;letter-spacing:.06em}.poster-names span:last-child{text-align:right}.poster-text{position:absolute;left:0;right:0;bottom:26px;z-index:1;color:#fff;text-shadow:0 2px 14px rgba(0,0,0,.35)}.poster-invited{font-family:var(--serif-en);font-size:.72rem;letter-spacing:.4em}.poster-script{font-family:var(--script-en);font-size:3rem;font-weight:400;line-height:1.25;color:var(--pale-pink);margin:2px 0 8px}.poster-date{font-size:.95rem;letter-spacing:.18em}.poster-date,.poster-venue{font-family:var(--serif-en)}.poster-venue{font-size:.72rem;letter-spacing:.22em;opacity:.9;margin-top:2px;text-transform:uppercase}.hero-below{margin-top:44px}.hero-below .btn-oval{margin-bottom:28px}.hero-info{font-size:.92rem;line-height:2}.poem-body{font-family:var(--hand-ko);white-space:pre-line;font-size:1.5rem;line-height:1.9;color:var(--ink)}.poem-author{margin-top:14px;font-size:.78rem;color:var(--ink-soft)}.greeting-body{font-family:var(--hand-ko);white-space:pre-line;font-size:1.55rem;line-height:1.95}.greeting-parents{margin-top:34px;font-size:.9rem;color:var(--ink-soft);white-space:pre-line}#sec-couple{background:var(--bg-block)}#sec-couple .section-label{color:#fff}.couple-cards{display:flex;gap:20px;justify-content:center;align-items:flex-start;padding-top:8px}.couple-card{flex:1 1;max-width:172px;position:relative}.couple-photo{aspect-ratio:3/3.6;background:linear-gradient(160deg,var(--pale-pink),var(--olive));background-size:cover!important;background-position:50%}.couple-caption{font-family:var(--hand-ko);font-size:1.25rem;line-height:1.4;margin-top:10px;color:var(--ink)}.couple-role{font-family:var(--serif-en);font-size:.66rem;letter-spacing:.3em;color:var(--accent)}.couple-desc{font-size:.82rem;color:var(--ink-soft)}.bubble{display:inline-block;font-family:var(--hand-ko);font-size:1.3rem;line-height:1.5;background:#fff;padding:6px 16px;border-radius:4px;box-shadow:0 3px 12px rgba(74,70,64,.12);margin-top:28px;transform:rotate(-1.2deg)}.cal-date{font-family:var(--serif-en);font-size:1rem;letter-spacing:.12em;margin-bottom:32px}.calendar{max-width:320px;margin:0 auto 40px}.cal-grid,.cal-head{display:grid;grid-template-columns:repeat(7,1fr)}.cal-head span{font-size:.75rem;color:var(--ink-soft);padding-bottom:12px}.cal-head .sun{color:#c96a5d}.cal-head .sat{color:#6a8fc9}.cal-grid span{padding:9px 0;font-size:.9rem;position:relative;z-index:0}.cal-grid span.wedding-day{color:#fff}.cal-grid span.wedding-day:before{content:"";position:absolute;top:4px;bottom:4px;left:50%;transform:translateX(-50%);width:34px;background:var(--accent);border-radius:50%;z-index:-1}.countdown{display:flex;gap:10px;justify-content:center}.cd-box{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 0;width:68px}.cd-box em{font-style:normal;font-size:1.3rem;font-family:var(--serif-en);display:block}.cd-box span{font-size:.6rem;letter-spacing:.15em}.cd-box span,.cd-msg{color:var(--ink-soft)}.cd-msg{margin-top:28px;font-size:.9rem}.cd-msg strong{color:var(--accent);font-weight:400}#sec-gallery{padding-left:0;padding-right:0}.gc-track{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;padding:8px 15%;scrollbar-width:none;-webkit-overflow-scrolling:touch}.gc-track::-webkit-scrollbar{display:none}.gc-item{flex:0 0 70%;aspect-ratio:3/4;scroll-snap-align:center;overflow:hidden;border-radius:4px;background:linear-gradient(160deg,var(--pale-pink),var(--olive));box-shadow:0 8px 22px rgba(74,70,64,.14);cursor:pointer}.gc-item img{width:100%;height:100%;object-fit:cover;display:block}.gc-counter{font-family:var(--serif-en);font-size:.95rem;letter-spacing:.18em;margin-top:22px;color:var(--ink)}.gc-counter span{color:var(--ink-soft);font-size:.8rem}.timeline{text-align:left;position:relative;padding-left:24px}.timeline:before{content:"";position:absolute;left:4px;top:8px;bottom:8px;width:1px;background:var(--line)}.tl-item{position:relative;padding-bottom:48px}.tl-item:last-child{padding-bottom:0}.tl-item:before{content:"";position:absolute;left:-24px;top:8px;width:9px;height:9px;border-radius:50%;background:var(--accent)}.tl-date{font-family:var(--serif-en);font-size:.8rem;color:var(--accent);letter-spacing:.1em}.tl-title{font-family:var(--hand-ko);font-size:1.5rem;margin:2px 0}.tl-body{font-size:.9rem;color:var(--ink-soft)}.tl-img{margin-top:14px;aspect-ratio:16/10;background:linear-gradient(160deg,var(--pale-pink),var(--dusty-pink));background-size:cover!important;background-position:50%}.map-venue{font-size:1.1rem}.map-addr{font-size:.9rem;color:var(--ink-soft);margin:6px 0 16px}.btn-copy{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 22px;font-size:.8rem;color:var(--ink)}.map-box{height:240px;border-radius:4px;margin:28px 0 14px;background:#fff;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;color:var(--ink-soft);font-size:.85rem;overflow:hidden}.nav-buttons{display:flex;gap:8px}.nav-btn{flex:1 1;padding:12px 0;border-radius:999px;background:#fff;border:1px solid var(--line);font-size:.85rem;color:var(--ink);text-decoration:none;text-align:center}.transport{text-align:left;margin-top:36px}.tr-item{padding:18px 0;border-bottom:1px solid var(--line)}.tr-item:last-child{border-bottom:none}.tr-title{font-size:.95rem;margin-bottom:4px}.tr-body{font-size:.85rem;color:var(--ink-soft);white-space:pre-line}.photos-desc{font-family:var(--hand-ko);font-size:1.45rem;line-height:1.8;margin-bottom:14px}.photos-note{font-size:.78rem;color:var(--ink-soft);line-height:1.7;margin-bottom:30px}.btn-upload{font-family:var(--serif-en);font-size:.82rem;letter-spacing:.24em;color:var(--accent-2);border:1.5px solid var(--accent-2);border-radius:50%;padding:14px 32px;background:none}.upload-status{margin-top:16px;font-size:.8rem;color:var(--ink-soft);min-height:1.5em}.account-desc{font-size:.95rem;margin-bottom:36px}.acc-group{margin-bottom:14px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}.acc-toggle{width:100%;padding:16px;background:none;border:none;font-size:.95rem;color:var(--ink);display:flex;justify-content:space-between;align-items:center}.acc-toggle .arrow{transition:transform .3s;color:var(--ink-soft)}.acc-group.open .arrow{transform:rotate(180deg)}.acc-list{max-height:0;overflow:hidden;transition:max-height .4s ease}.acc-group.open .acc-list{max-height:400px}.acc-row{display:flex;justify-content:space-between;align-items:center;padding:13px 16px;border-top:1px solid var(--line);font-size:.85rem;text-align:left}.acc-info span{display:block;color:var(--ink-soft);font-size:.75rem}.acc-row .btn-copy{padding:6px 14px;font-size:.72rem;flex-shrink:0}#sec-footer{position:relative;padding:110px 28px;text-align:center;color:#fff;overflow:hidden}.footer-bg{position:absolute;inset:0;background:linear-gradient(160deg,var(--olive),#7c8a5f);background-size:cover!important;background-position:50%}.footer-bg:after{content:"";position:absolute;inset:0;background:rgba(0,0,0,.3)}.footer-content{position:relative;z-index:1}.footer-together{font-family:var(--script-en);font-size:2.4rem}.footer-counter{margin-top:24px;font-size:.9rem;opacity:.95}.footer-msg{font-family:var(--hand-ko);margin-top:10px;font-size:1.4rem}.admin-wrap{max-width:var(--max-w);margin:0 auto;min-height:100vh;background:var(--bg);padding:80px 24px;text-align:center}.admin-title{font-family:var(--serif-en);font-size:1.1rem;letter-spacing:.06em;margin-bottom:12px}.admin-sub{font-size:.88rem;color:var(--ink-soft);margin-bottom:32px;line-height:1.7}.admin-login-form{display:flex;flex-direction:column;gap:12px}.admin-login-form input{border:1px solid var(--line);border-radius:10px;padding:14px 16px;font-size:.95rem;text-align:center}.admin-login-form button{border:none;border-radius:10px;padding:14px 0;background:var(--accent-2);color:#fff;font-size:.9rem;letter-spacing:.05em}.admin-error{margin-top:14px;font-size:.82rem;color:#c96a5d}.admin-empty,.admin-loading{color:var(--ink-soft);font-size:.9rem;margin-top:20px}.admin-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:6px;gap:6px;margin-top:24px}.admin-photo{display:block;aspect-ratio:1;overflow:hidden;border-radius:4px;background:var(--bg-tint)}.admin-photo img{width:100%;height:100%;object-fit:cover;display:block}.lightbox{position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:100;display:flex;align-items:center;justify-content:center}.lightbox img{max-width:92vw;max-height:84vh;border-radius:4px}.lightbox-close{position:absolute;top:16px;right:20px;background:none;border:none;color:#fff;font-size:2.2rem}