:root{--paper:#faf7f1;--paper-deep:#f1ece2;--card:#ffffff;--line:#e7e0d2;--line-soft:#efe9dc;--ink:#433e35;--ink-bright:#2b2720;--soft:#8a8172;--faint:#a89f8e;--rose:#bd5d7c;--rose-soft:#e7c3cf;--leaf:#5a7a5e;--gold:#b08d4f;--serif:'Gowun Batang',serif;--sans:'IBM Plex Sans KR',sans-serif}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--paper-deep);color:var(--ink);font-family:var(--sans);font-weight:400;line-height:1.8;-webkit-font-smoothing:antialiased}body::before{content:'';position:fixed;inset:0;z-index:50;pointer-events:none;opacity:.5;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E")}.paper{position:relative;max-width:430px;min-height:100dvh;margin:0 auto;overflow-x:hidden;background:var(--paper);border-left:1px solid var(--line-soft);border-right:1px solid var(--line-soft)}section{padding:68px 26px}.rv{opacity:0;transform:translateY(22px);transition:opacity .9s ease,transform .9s cubic-bezier(.22, 1, .36, 1)}.rv.in{opacity:1;transform:none}.rv.d1{transition-delay:0.12s}.rv.d2{transition-delay:0.24s}.rv.d3{transition-delay:0.36s}.cover{padding:72px 26px 56px;text-align:center}.cover .small-cap{font-size:13px;letter-spacing:.45em;text-indent:.45em;color:var(--gold)}.cover h1{margin-top:26px;font-family:var(--serif);font-weight:400;font-size:36px;letter-spacing:.14em;color:var(--ink-bright);line-height:1.6}.cover h1 .and{display:block;margin:2px 0;font-size:17px;color:var(--rose)}.cover .cover-date{margin-top:24px;font-family:var(--serif);font-size:17.5px;color:var(--ink)}.cover .cover-venue{margin-top:6px;font-size:15.5px;color:var(--soft)}.arch-photo{width:min(100%,400px);aspect-ratio:4/5;margin:44px auto 0;overflow:hidden;border-radius:999px 999px 18px 18px;border:1px solid var(--line);box-shadow:0 24px 50px -28px rgba(95,75,55,.45);background:var(--card)}.arch-photo img{display:block;width:100%;height:100%;object-fit:cover}.bless-photo{display:block;width:100%;height:auto;margin:0}.label{margin-bottom:14px;text-align:center;font-size:13.5px;letter-spacing:.4em;text-indent:.4em;color:var(--gold)}.label-title{margin-bottom:34px;text-align:center;font-family:var(--serif);font-size:24px;letter-spacing:.1em;color:var(--ink-bright)}.divider{display:flex;align-items:center;justify-content:center;gap:14px;padding:0 26px;color:var(--rose-soft);font-size:15px}.divider::after,.divider::before{content:'';flex:0 0 84px;height:1px;background:linear-gradient(90deg,transparent,var(--line))}.divider::after{background:linear-gradient(90deg,var(--line),transparent)}.greeting{font-family:var(--serif);font-size:16.5px;line-height:2.15;text-align:center;word-break:keep-all;color:var(--ink)}.greeting p+p{margin-top:30px}.greeting .soft{font-size:15.5px;color:var(--soft)}.family{margin-top:46px;text-align:center;font-family:var(--serif);font-size:18px;line-height:2.5;color:var(--ink)}.family .parents{color:var(--soft)}.family .rel{margin:0 6px;font-size:14.5px;color:var(--faint)}.family b{font-weight:700;font-size:19px;color:var(--ink-bright)}.family .role{display:block;margin-top:-8px;font-family:var(--sans);font-size:13px;letter-spacing:.06em;color:var(--faint)}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.g-item{position:relative;aspect-ratio:1/1;overflow:hidden;border:1px solid var(--line);border-radius:4px;background:var(--card);cursor:pointer;box-shadow:0 8px 18px -14px rgba(95,75,55,.3)}.g-item img{display:block;width:100%;height:100%;object-fit:cover}.gallery-hint{margin-top:16px;text-align:center;font-size:13.5px;letter-spacing:.16em;color:var(--faint)}.gallery-pager{display:flex;justify-content:center;flex-wrap:wrap;gap:6px;margin-top:18px}.gallery-pager .pg-btn{min-width:32px;height:32px;padding:0 8px;-webkit-appearance:none;appearance:none;background:var(--card);border:1px solid var(--line);border-radius:8px;font-family:var(--sans);font-size:13px;color:var(--soft);cursor:pointer;transition:border-color .25s,color .25s,background .25s}@media (hover:hover){.gallery-pager .pg-btn:hover:not(:disabled){border-color:var(--rose);color:var(--rose)}}.gallery-pager .pg-btn.active{background:var(--rose);border-color:var(--rose);color:#fff;-webkit-text-fill-color:#fff}.gallery-pager .pg-btn:disabled{opacity:.4;cursor:default}.ph-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:100%;height:100%;background:linear-gradient(150deg,#f7eee9,#f3e7ea);border-radius:inherit;text-align:center}.ph-placeholder .ico{font-size:26px;opacity:.6}.ph-placeholder .fn{font-size:12px;color:var(--soft)}.ph-placeholder .hint{font-size:11px;color:var(--faint)}.lightbox{position:fixed;inset:0;z-index:100;display:none;align-items:center;justify-content:center;background:rgba(38,30,24,.92);backdrop-filter:blur(8px)}.lightbox.open{display:flex}.lightbox img{max-width:92vw;max-height:78vh;border-radius:12px;box-shadow:0 30px 80px rgba(0,0,0,.55)}.lightbox .lb-cap{position:absolute;bottom:32px;left:50%;transform:translateX(-50%);font-size:13px;color:#d8cfc2}.lightbox button{position:absolute;display:grid;place-items:center;width:46px;height:46px;background:rgba(0,0,0,.55);border:1.5px solid rgba(255,255,255,.7);border-radius:50%;color:#fff;font-size:20px;cursor:pointer;box-shadow:0 2px 14px rgba(0,0,0,.55);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);transition:background .2s,transform .15s}.lightbox button:hover{background:rgba(0,0,0,.78)}.lightbox button:active{transform:scale(.93)}.lightbox .lb-close{top:14px;right:14px;width:34px;height:34px;font-size:16px}.lightbox .lb-next,.lightbox .lb-prev{top:50%;bottom:auto;transform:translateY(-50%);opacity:.55}.lightbox .lb-prev{left:10px}.lightbox .lb-next{right:10px}.lightbox .lb-next:active,.lightbox .lb-prev:active{transform:translateY(-50%) scale(.93)}@media (max-height:600px){.lightbox img{max-height:62vh}}.when-date{text-align:center;font-family:var(--serif);font-size:22px;letter-spacing:.08em;color:var(--ink-bright)}.when-time{margin-top:8px;text-align:center;font-size:15px;color:var(--soft)}.dday{display:flex;justify-content:center;gap:12px;margin-top:32px}.dd-cell{min-width:74px;padding:15px 8px 11px;background:var(--card);border:1px solid var(--line);border-radius:14px;text-align:center}.dd-cell b{display:block;font-family:var(--serif);font-weight:700;font-size:27px;color:var(--rose);font-variant-numeric:tabular-nums}.dd-cell span{font-size:12px;letter-spacing:.18em;color:var(--faint)}.dday-note{margin-top:22px;text-align:center;font-family:var(--serif);font-size:16.5px;color:var(--soft)}.dday-note b{color:var(--rose);font-weight:700}.cal{margin-top:36px;padding:26px 18px;background:var(--card);border:1px solid var(--line);border-radius:16px}.cal-title{margin-bottom:18px;text-align:center;font-family:var(--serif);font-size:16px;letter-spacing:.3em;text-indent:.3em;color:var(--ink)}.cal table{width:100%;border-collapse:collapse}.cal th{padding:6px 0;font-size:12px;font-weight:400;letter-spacing:.1em;color:var(--faint)}.cal td:first-child .d,.cal th:first-child{color:#c96a6a}.cal td{padding:4px 0;text-align:center}.cal .d{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:50%;font-size:15px;color:var(--soft)}.cal .d.wedding-day{background:var(--rose);color:#fff;font-weight:700;animation:pulse 2.4s ease infinite}@keyframes pulse{0%,100%{box-shadow:0 0 0 4px rgba(189,93,124,.14)}50%{box-shadow:0 0 0 8px rgba(189,93,124,.08)}}.venue-card{padding:28px 22px;text-align:center;background:var(--card);border:1px solid var(--line);border-radius:16px}.venue-card .vc-name{font-family:var(--serif);font-size:24px;color:var(--ink-bright)}.venue-card .vc-name small{font-size:16px;color:var(--soft)}.venue-card .vc-addr{margin-top:10px;font-size:17px;font-weight:400;color:var(--ink)}.venue-card .vc-sub{margin-top:6px;font-size:14.5px;color:var(--soft)}.btn-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.parking-note{margin-top:16px;padding:16px 18px;background:var(--card);border:1px solid var(--line);border-radius:14px;font-size:15.5px;line-height:1.85;color:var(--soft);text-align:center;word-break:keep-all}.parking-note .pn-title{font-family:var(--serif);font-size:15px;color:var(--ink);margin-bottom:8px}.parking-note b{font-weight:500;color:var(--ink)}.parking-note .pn-tip{display:inline-block;margin-top:6px;font-size:13px;color:var(--rose)}.btn{flex:1;min-width:110px;padding:14px 10px;background:var(--card);border:1px solid var(--line);border-radius:12px;font-family:var(--sans);font-size:15px;text-align:center;text-decoration:none;color:var(--ink);cursor:pointer;transition:border-color .25s,color .25s,transform .15s}.btn:active{transform:scale(.97)}.btn:hover{border-color:var(--rose);color:var(--rose)}.map-embed{height:260px;margin-top:18px;width:auto;margin-left:-26px;margin-right:-26px;overflow:hidden;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--card)}.map-embed .map-note{display:none}.map-embed.is-fallback{display:flex;align-items:center;justify-content:center;height:auto;padding:22px 18px;text-align:center}.map-embed.is-fallback .map-note{display:block;font-size:14.5px;color:var(--soft)}.gift-note{margin-bottom:22px;text-align:center;font-size:16px;line-height:2;color:var(--soft)}details.gift{overflow:hidden;background:var(--card);border:1px solid var(--line);border-radius:14px}details.gift+details.gift{margin-top:12px}details.gift summary{display:flex;align-items:center;gap:10px;padding:17px 18px;list-style:none;cursor:pointer;font-size:15.5px;font-weight:400;color:var(--ink)}details.gift summary::-webkit-details-marker{display:none}details.gift summary .arrow{margin-left:auto;color:var(--faint);transition:transform .3s}details.gift[open] summary .arrow{transform:rotate(90deg)}details.gift .acc-list{border-top:1px solid var(--line-soft)}.acc{display:flex;align-items:center;gap:8px;padding:15px 18px;font-size:15px}.acc+.acc{border-top:1px dashed var(--line-soft)}.acc .nm{flex:none;width:48px;font-weight:400;color:var(--ink)}.acc .no{font-size:14px;color:var(--soft)}.acc button{flex:none;margin-left:auto;padding:7px 12px;background:var(--paper);border:1px solid var(--line);border-radius:8px;font-size:13px;color:var(--soft);cursor:pointer;transition:all .25s}.acc button:hover{color:var(--rose);border-color:var(--rose)}.acc button.copied{color:var(--leaf);border-color:var(--leaf)}.reveal-btn{display:inline-block}.acc-note{padding:14px 18px;font-size:14px;color:var(--soft);text-align:center}#bless{text-align:center}.bless-input{display:block;width:100%;max-width:340px;margin:0 auto 6px;padding:13px 16px;background:#fff;border:1px solid var(--line);border-radius:12px;font-family:inherit;font-size:16px;color:var(--ink);text-align:center}.bless-input::placeholder{color:var(--soft)}.bless-input:focus{outline:0;border-color:var(--rose)}.input-hint{margin:0 0 14px;font-size:12.5px;color:var(--soft);text-align:center}.bless-count{margin:0 0 8px;font-size:12.5px;letter-spacing:.02em;color:var(--soft);text-align:center}.bless-count.over{color:#c0392b;font-weight:700}.bless-input.over-limit{border-color:#c0392b}.bless-btn{margin-top:8px;padding:17px 38px;background:linear-gradient(135deg,#fdf3f6,#fbf6ec);border:1px solid var(--rose-soft);border-radius:99px;font-family:var(--serif);font-size:17px;color:var(--rose);cursor:pointer;box-shadow:0 12px 28px -16px rgba(189,93,124,.4);transition:all .3s}.bless-btn:hover{border-color:var(--rose)}.bless-btn:active{transform:scale(.96)}.bless-btn.blessed{border-color:var(--leaf);color:var(--leaf);pointer-events:none}.bless-msg{min-height:24px;margin-top:16px;font-size:15px;color:var(--leaf);opacity:0;transition:opacity .6s}.bless-msg.show{opacity:1}.bless-log{margin-top:28px;padding:20px 20px 16px;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:14px;font-size:15px;line-height:2.2}.bless-log .bl-lines{max-height:168px;overflow-y:auto;padding-right:8px;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--rose-soft) transparent}.bless-log .bl-lines::-webkit-scrollbar{width:4px}.bless-log .bl-lines::-webkit-scrollbar-track{background:0 0}.bless-log .bl-lines::-webkit-scrollbar-thumb{background:var(--rose-soft);border-radius:99px}.bless-log .bl-line{color:var(--soft);line-height:1.65;word-break:keep-all;overflow-wrap:anywhere}.bless-log .bl-line+.bl-line{margin-top:7px}.bless-log .bl-line .ts{color:var(--rose)}.bless-log .bl-more{display:block;width:100%;margin-top:12px;padding:9px 12px;background:0 0;border:1px dashed var(--rose-soft);border-radius:10px;font-family:inherit;font-size:13.5px;color:var(--rose);cursor:pointer;transition:background .25s,border-color .25s}@media (hover:hover){.bless-log .bl-more:hover{background:#fdf3f6;border-color:var(--rose)}}.bless-log .bl-more:disabled{color:var(--faint);border-color:var(--line);cursor:default}.bless-log .bl-total{margin-top:10px;padding-top:12px;border-top:1px dashed var(--line-soft);font-family:var(--serif);font-size:15.5px;color:var(--ink)}.bless-log .bl-total b{color:var(--rose);font-weight:700}.confetti{position:fixed;z-index:110;pointer-events:none;font-size:16px;animation:fall linear forwards}@keyframes fall{to{transform:translateY(110vh) rotate(420deg);opacity:.15}}.release-banner{display:none;margin:26px auto 0;padding:16px;max-width:330px;text-align:center;text-decoration:none;background:#f3f7f1;border:1px solid #cbdcc8;border-radius:14px;font-family:var(--serif);font-size:15px;color:var(--leaf)}.release-banner.show{display:block}footer{padding:40px 26px 60px;border-top:1px solid var(--line);text-align:center;font-size:14px;line-height:2.4;color:var(--faint)}footer .thanks-line{font-family:var(--serif);font-size:16px;color:var(--soft)}footer .version-note{margin:24px auto 0;max-width:330px;font-size:13.5px;line-height:1.85;color:var(--faint);word-break:keep-all}footer .version-links{display:flex;gap:8px;margin-top:16px}footer .version-link{flex:1;padding:9px 8px;text-decoration:none;background:var(--card);border:1px solid var(--line);border-radius:9px;font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--soft);white-space:nowrap;transition:border-color .25s,color .25s}footer .version-link:hover{border-color:var(--leaf);color:var(--leaf)}footer .share-btn{display:block;width:100%;margin:18px 0 0;padding:13px 12px;background:var(--card);color:var(--rose);border:1px solid var(--rose-soft);border-radius:12px;font-family:var(--sans);font-size:15px;cursor:pointer;transition:background .25s,border-color .25s,color .25s,transform .15s}footer .share-btn:hover{background:var(--rose);border-color:var(--rose);color:#fff}footer .share-btn:active{transform:scale(.97)}@media (max-width:380px){.dd-cell{min-width:62px}.cover h1{font-size:36px}}@media (prefers-reduced-motion:reduce){*,::after,::before{animation:none!important;transition:none!important}.rv{opacity:1;transform:none}}:root{--paper:#fffdfb;--paper-deep:#f3ede6;--card:#ffffff;--line:#ece5dd;--line-soft:#f4efe9;--ink:#35302a;--ink-bright:#1c1813;--soft:#6f665a;--faint:#7d7466;--rose:#c2566a;--rose-soft:#f0d3d8;--leaf:#7e977f;--gold:#bd9670;--sans:'Gowun Dodum','Apple SD Gothic Neo',sans-serif;--serif:'Gowun Batang',serif;--display:'Gowun Batang',serif}body::before{display:none}.paper{border-left:1px solid var(--line-soft);border-right:1px solid var(--line-soft)}.cover{padding:52px 26px 56px}.cover .small-cap{font-size:12px;letter-spacing:.5em;text-indent:.5em;color:var(--gold)}.cover h1{margin-top:26px;font-family:var(--display);font-size:40px;font-weight:400;letter-spacing:.18em;text-indent:.18em}.cover h1 .and{display:block;margin:8px 0;font-size:24px;color:var(--rose);text-indent:0}.cover .cover-date{margin-top:26px;font-family:var(--display);letter-spacing:.02em}.arch-photo{margin-top:28px;border-color:var(--line);box-shadow:0 26px 54px -30px rgba(120,70,60,.32)}.label{letter-spacing:.42em;text-indent:.42em;color:var(--gold)}.label-title{margin-bottom:30px;font-family:var(--display);font-size:23px;letter-spacing:.12em;text-indent:.12em}.divider{color:var(--rose);font-size:12px;opacity:.7}.divider::after,.divider::before{flex-basis:70px}.greeting{font-size:18.5px;line-height:2.15}.family b{color:var(--ink-bright)}.profile{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}.pf-card{display:flex;flex-direction:column;align-items:center;padding:0;background:0 0;border:0;box-shadow:none;text-align:center}.pf-photo{width:100%;aspect-ratio:4/5;overflow:hidden;border-radius:16px;background:#f3e6ea}.pf-photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 20%}.pf-photo.is-empty{display:grid;place-items:center;background:linear-gradient(150deg,#f8ebe9,#f3e6ea);font-family:var(--display);font-size:44px;color:var(--rose)}.pf-card figcaption{width:100%;margin-top:12px}.pf-role{display:inline;font-size:14px;font-weight:400;letter-spacing:.02em;color:var(--soft)}.pf-name{display:inline;margin-left:7px;font-family:var(--display);font-size:25px;font-weight:700;letter-spacing:.04em;color:var(--ink-bright)}.pf-line{margin-top:6px;font-family:var(--serif);font-size:15px;line-height:1.7;color:var(--soft);word-break:keep-all}.pf-meta{display:flex;flex-direction:column;align-items:center;gap:5px;margin-top:12px}.pf-row{display:flex;align-items:baseline;justify-content:center;gap:6px;font-size:16.5px;line-height:1.6}.pf-k{flex:none;font-size:14.5px;font-weight:400;letter-spacing:.04em;color:var(--soft)}.pf-v{color:var(--ink);word-break:keep-all}.pf-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.pf-tag{padding:4px 11px;border-radius:99px;background:#fbeef0;font-size:12.5px;color:var(--rose)}.pf-amp{display:none}@media (max-width:360px){.profile{gap:10px}.pf-name{font-size:23px}.pf-photo.is-empty{font-size:36px}}.venue-card .vc-name{font-family:var(--display)}.when-time{margin-top:10px;font-family:var(--display);font-size:27px;font-weight:700;letter-spacing:.04em;color:var(--rose)}@keyframes pulse{0%,100%{box-shadow:0 0 0 4px rgba(194,86,106,.14)}50%{box-shadow:0 0 0 8px rgba(194,86,106,.07)}}.g-item{box-shadow:0 14px 30px -22px rgba(120,70,60,.24)}.gallery-hint{color:var(--soft)}.bless-btn{padding:13px 30px;font-size:16px;background:#fff;border-color:var(--rose-soft);color:var(--rose);font-family:var(--display);box-shadow:0 14px 28px -18px rgba(194,86,106,.3)}.bless-btn:hover{border-color:var(--rose)}.lightbox{background:rgba(28,20,18,.93)}.release-banner{background:#f6f8f6;border-color:#e1e9e1}section{padding:48px 26px}.venue-card{padding:6px 0 0;background:0 0;border:none;border-radius:0}.parking-note{margin-top:24px;padding:2px 8px 0;background:0 0;border:none;border-radius:0}