:root{--paper:#f8f6ee;--ink:#394735;--muted:#858878;--line:#dfdfd1;--sage:#e9ecdf;--serif:'Cormorant Garamond',Georgia,serif;--ko:'Gowun Batang',serif;--sans:'Noto Sans KR',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:65px}body{margin:0;background:#eaece3;color:var(--ink);font-family:var(--ko);font-size:14px;line-height:1.9}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{font:inherit;color:inherit;cursor:pointer}button{border:0;background:none}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid #7a865b;outline-offset:4px}img{display:block;width:100%}h1,h2,h3,p{margin:0}h2{font-weight:400;font-size:25px;letter-spacing:-1px;line-height:1.6}h3{font-size:19px;font-weight:400}small{font-size:11px}.eyebrow{font:10px var(--sans);letter-spacing:2.6px;color:#7d856d}.serif{font-family:var(--serif)}.italic{font-style:italic}.desktop-note{position:fixed;left:max(5%,calc(50% - 540px));top:48px;bottom:48px;display:flex;flex-direction:column;justify-content:space-between;width:340px}.wordmark{font-size:28px;letter-spacing:-2px}.wordmark span{display:block;font:9px var(--sans);letter-spacing:4px;margin-top:-3px}.desktop-note h2{font-size:30px;line-height:1.8;margin:22px 0}.desktop-note p{color:#7f8777;font-size:14px}.desktop-note small{font:9px var(--sans);letter-spacing:2px}.desktop-flower{display:block;font-size:70px;font-weight:400;color:#a9b095;margin-top:40px}main{width:480px;margin-left:calc(50% + 20px);background:var(--paper);box-shadow:0 12px 90px #5260470e;overflow:hidden}.topbar{height:62px;display:flex;align-items:center;justify-content:space-between;padding:0 26px;border-bottom:1px solid #dedfd24d}.small-logo{font-size:20px;font-weight:700;letter-spacing:-1px}.small-logo span{font:italic 15px var(--serif);letter-spacing:0;margin-left:10px;color:#929783}.topbar button{border:1px solid var(--line);border-radius:30px;padding:5px 11px;font-family:var(--sans);font-size:13px}.topbar button span{font-size:9px;margin-left:5px}.hero{padding-top:38px;text-align:center}.hero-heading{position:relative;z-index:1}.hero h1{font:400 73px/.88 var(--serif);letter-spacing:-3px;margin:26px 0 24px}.hero h1 i{font-weight:400}.hero-names{display:flex;align-items:center;justify-content:center;gap:18px;font-size:17px;letter-spacing:3px}.hero-names em{font:italic 22px var(--serif);color:#9a9d85}.hero-art{position:relative;margin:28px 23px 0;height:470px;border-radius:220px 220px 5px 5px;overflow:hidden}.hero-art img{height:100%;object-fit:cover;object-position:center 63%}.hero-art:after{content:'';position:absolute;inset:0;box-shadow:inset 0 0 45px #735d2522;pointer-events:none}.art-stamp{position:absolute;right:18px;bottom:22px;background:#f7f4e5e8;width:83px;height:83px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column;transform:rotate(-12deg);font:15px/1.1 var(--serif);box-shadow:0 0 0 4px #f7f4e533}.art-stamp i{font-size:23px}.hero-date{margin:24px 0}.hero-date p:first-child{font:23px var(--serif);letter-spacing:2px}.hero-date p:first-child span{font:9px var(--sans);letter-spacing:1px;margin-left:8px}.hero-date p+p{font-size:12px;margin-top:8px}.scroll-cue{display:block;font:8px var(--sans);letter-spacing:2px;padding:10px 0 23px;color:#8b907e}.scroll-cue span{display:block;font-size:16px;margin-top:8px}.section-nav{display:flex;justify-content:space-evenly;border-block:1px solid var(--line);padding:18px 6px;background:#f3f3e9;font:11px var(--sans)}.section{padding:72px 32px;text-align:center}.section h2{margin:12px 0 25px}.botanical{font-size:44px;display:block;margin:22px 0;color:#8a9673}.letter #greeting{line-height:2.5;color:#6d7562}.names-line{display:flex;justify-content:center;align-items:center;gap:21px;margin-top:36px}.names-line small{color:#89907e;margin-right:6px}.names-line b{font-size:17px;font-weight:400}.tiny-heart{color:#a3aa90}.text-button{font-size:11px;border-bottom:1px solid #b9bfaa;padding:9px 0;margin-top:13px}.text-button span{margin-left:18px}.story-image{position:relative}.story-image img{aspect-ratio:1.1;object-fit:cover}.story-image:after{content:'';position:absolute;inset:35% 0 0;background:linear-gradient(transparent,#263527b0)}.story-image>div{position:absolute;bottom:35px;left:32px;z-index:1;color:#fff8e8}.story-image .eyebrow{color:#e0e2cc;font-size:8px}.story-image p{margin-top:13px;font-size:21px;line-height:1.8}.date-long{font-size:12px;color:#7c836e}.calendar{max-width:310px;margin:30px auto 26px}.calendar-title{display:flex;align-items:baseline;justify-content:center;gap:10px;font:20px var(--serif);letter-spacing:2px;margin-bottom:22px}.calendar-title b{font-weight:400;color:#89927b;font-size:15px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:7px 0;font:14px var(--serif)}.calendar-grid>span{display:flex;align-items:center;justify-content:center;height:34px}.calendar-grid .day-name{font:9px var(--sans);color:#8f9585}.calendar-grid .sunday{color:#b17d71}.calendar-grid .wedding-day{border-radius:50%;background:var(--ink);color:var(--paper);position:relative;width:34px;justify-self:center}.wedding-day:after{content:'♥';position:absolute;bottom:-12px;color:#7c8b62;font-size:10px}.countdown{display:flex;justify-content:center;gap:22px;margin-top:35px}.countdown>div{min-width:42px}.countdown b{display:block;font:29px var(--serif);font-weight:400}.countdown span{font:8px var(--sans);color:#999e8c;letter-spacing:1px}.countdown-copy{font-size:11px;margin:17px 0 24px}.outline-button,.primary-button{width:100%;padding:15px 20px;border:1px solid #c9cebb;border-radius:3px;font:12px var(--sans);line-height:1.8;min-height:49px}.outline-button:hover{background:#eceddf}.primary-button{background:var(--ink);color:#fffdf2;border-color:var(--ink)}.primary-button span{float:right}.date-section>.outline-button{width:auto;padding:11px 25px}.gallery-section{background:#f0f0e6}.section-heading{display:flex;align-items:center;justify-content:space-between;text-align:left;gap:12px}.section-heading h2{font-size:23px}.section-heading>.serif{font-size:25px;line-height:1;color:#a0a68d}.gallery{display:grid;grid-template-columns:1fr 1fr;gap:13px}.gallery button{padding:0;text-align:left;overflow:hidden}.gallery .gallery-large{grid-column:span 2}.gallery img{aspect-ratio:1.1;object-fit:cover;transition:transform .6s}.gallery-large img{aspect-ratio:1.27;object-position:center 67%}.gallery button:hover img{transform:scale(1.025)}.gallery span{font:8px var(--sans);letter-spacing:1.2px;display:block;margin:9px 0 4px}.gallery-section .subtle{text-align:right;margin-top:19px;font-size:10px;color:#909781}.quote{padding:52px 25px 58px;text-align:center;background:#e7eadb}.quote>span{font:60px/.8 var(--serif);color:#a2ac8f}.quote p{font-size:19px;line-height:1.9}.quote small{display:block;font:8px var(--sans);letter-spacing:2px;margin-top:25px;color:#8e987d}.location-section h3{margin-top:30px}.location-section h3~p{font-size:12px;color:#858b79}.map-card{display:block;margin:25px -4px 16px;height:230px;background:#e9ecdf;position:relative;overflow:hidden;border:1px solid #dce1d0}.map-lines{position:absolute;inset:-60px;background:repeating-linear-gradient(95deg,transparent 0 65px,#fcfcf2 66px 78px,transparent 79px 145px),repeating-linear-gradient(5deg,transparent 0 60px,#fcfcf2 61px 71px,transparent 72px 130px);transform:rotate(-14deg)}.map-lines:after{content:'';position:absolute;left:0;right:0;top:52%;height:27px;background:#fefdf2;border-block:1px solid #d9ddcc;transform:rotate(-17deg)}.map-road{position:absolute;font:10px var(--sans);color:#969d88;letter-spacing:4px}.road-one{left:45px;top:148px;transform:rotate(-25deg)}.road-two{right:55px;top:22px;transform:rotate(65deg)}.map-park{position:absolute;right:8px;top:75px;padding:20px 8px;border-radius:50%;font:8px var(--sans);background:#d4ddc0;color:#8f9d7b}.map-pin{position:absolute;left:49%;top:50%;transform:translate(-50%,-50%);width:33px;height:33px;border-radius:50% 50% 50% 0;background:var(--ink);color:white;line-height:33px;box-shadow:0 5px 10px #3a4b3422}.map-pin b{position:absolute;width:135px;top:40px;left:-47px;padding:5px;background:var(--paper);font:11px var(--sans);color:var(--ink);box-shadow:0 3px 10px #52604711}.map-caption{position:absolute;bottom:0;left:0;right:0;background:#f8f6eecc;font:8px var(--sans);padding:6px}.map-buttons{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:3px}.map-buttons a{font:10px var(--sans);padding:14px 2px}.map-buttons a+a{border-left:1px solid var(--line)}.map-buttons b{font-size:10px;margin-right:4px}.naver{color:#449566}.kakao{color:#a48728}.travel-info{margin-top:28px;text-align:left}details{border-bottom:1px solid var(--line)}summary{cursor:pointer;list-style:none;padding:17px 0;font-size:13px}summary::-webkit-details-marker{display:none}summary span{float:right;color:#90997c}details[open] summary span{transform:rotate(45deg)}details p{font:12px/1.9 var(--sans);color:#909580;padding-bottom:20px}.rsvp-section{background:#e7eadc}.rsvp-section p,.gift-section>p:not(.eyebrow){font-size:13px;color:#7b856c;line-height:2.2;margin-bottom:27px}.rsvp-section h2{font-size:24px}.rsvp-section small{display:block;font:10px var(--sans);color:#909980;margin-top:15px}.gift-section{padding-bottom:35px}.empty-account{padding:17px;border-block:1px solid var(--line);font-size:12px;color:#909582}.account-row{padding:13px;border-bottom:1px solid var(--line)}.account-row p{font-size:12px}.guestbook-section{padding-top:40px}.message{border-top:1px solid var(--line);padding:20px 0;text-align:left}.message-header{display:flex;justify-content:space-between;font:11px var(--sans)}.message-header time{font-size:9px;color:#9b9f90}.message p{white-space:pre-wrap;word-break:break-word;font-size:13px;line-height:1.9;padding-top:11px}.message button{font-size:9px;float:right;color:#929b82;padding:4px}.guestbook-section>.outline-button{margin-top:15px}.empty-messages{font-size:13px;color:#8b947f;padding:24px 5px 33px}.ending{position:relative;text-align:center}.ending img{aspect-ratio:.9;object-fit:cover;filter:brightness(.62)}.ending>div{position:absolute;inset:0;display:flex;flex-wrap:wrap;align-content:center;justify-content:center;color:#fffbea;padding:20px}.ending .serif{font-size:67px;line-height:.9;flex-basis:100%}.ending p+p{flex-basis:100%;font-size:12px;margin:32px 0 25px}.ending em{margin:0 16px;font-family:var(--serif)}footer{text-align:center;padding:35px 30px 110px}footer button{border-bottom:1px solid var(--line);padding:7px 20px;font-size:12px}.footer-logo{display:block;font-size:24px;letter-spacing:-2px;margin-top:32px}footer small{display:block;font-size:9px;color:#939b85}footer>p{font:7px var(--sans);letter-spacing:1.4px;color:#a0a68f;margin-top:18px}.bottom-dock{position:fixed;bottom:0;left:calc(50% + 20px);width:480px;padding:10px 20px calc(10px + env(safe-area-inset-bottom));z-index:10;background:#f8f6eef2;border-top:1px solid var(--line);display:flex;align-items:center;gap:15px;backdrop-filter:blur(12px)}.bottom-dock a{font-size:16px;width:110px;text-align:center;line-height:1.3}.bottom-dock a span{display:block;font:9px var(--sans);margin-top:4px}.bottom-dock button{background:var(--ink);color:var(--paper);flex:1;border-radius:3px;padding:13px;font:11px var(--sans)}.bottom-dock button span{float:right}dialog{border:0;background:var(--paper);color:var(--ink);border-radius:9px;width:min(420px,calc(100% - 32px));padding:35px 28px;max-height:88dvh;box-shadow:0 30px 100px #17261133}dialog::backdrop{background:#202b25a6;backdrop-filter:blur(4px)}.modal-close{position:absolute;right:10px;top:7px;font:27px var(--sans);z-index:3;width:40px;height:40px}dialog h2{font-size:24px;margin:10px 0 20px}dialog p{font-size:12px;margin:12px 0 20px}label{display:block;text-align:left;font:11px var(--sans);margin:15px 0}input,textarea,select{display:block;width:100%;margin-top:7px;padding:12px;border:1px solid #d2d7c4;background:#fdfcf6;border-radius:3px;color:var(--ink);font:13px var(--sans)}textarea{resize:vertical;min-height:95px}.form-row{display:flex;gap:15px}.form-row>*{flex:1}.consent{display:flex;gap:8px;line-height:1.8;color:#7c856d}.consent input{width:16px;margin-top:2px;flex-shrink:0}.form-help{font:10px/1.8 var(--sans);color:#8b947c}form>.primary-button{margin-top:17px}.honeypot{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}#lightbox{background:#202a21;padding:45px 12px 13px;width:min(650px,calc(100% - 18px));color:white}#lightbox-image{max-height:73dvh;object-fit:contain}.lightbox-controls{display:flex;align-items:center;justify-content:space-between;padding:10px 20px 0;font:12px var(--sans)}.lightbox-controls button{font-size:23px}#toast{position:fixed;left:50%;bottom:100px;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:#34432eef;color:#fffbea;border-radius:30px;padding:12px 23px;font:12px var(--sans);z-index:99;transition:.25s;max-width:90vw;width:max-content}#toast.show{opacity:1;transform:translate(-50%,0)}@media(min-width:1400px){main,.bottom-dock{margin-left:0;left:auto}main{margin-left:calc(50% - 30px)}.bottom-dock{left:calc(50% - 30px)}}@media(max-width:1000px){.desktop-note{display:none}main{margin:0 auto;width:480px}.bottom-dock{left:50%;transform:translateX(-50%);width:480px}}@media(max-width:500px){main{width:100%}.bottom-dock{width:100%}.topbar{height:56px;padding:0 22px}.hero{padding-top:31px}.hero h1{font-size:66px}.hero-art{height:420px;margin-inline:22px}.section{padding-inline:27px}.hero-names{font-size:16px}.hero .eyebrow{font-size:9px}}@media(max-width:365px){.hero h1{font-size:59px}.hero-art{height:370px}.section{padding-inline:22px}.section-heading h2{font-size:21px}.hero-date p:first-child{font-size:21px}.hero-date p:first-child span{font-size:8px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}@media print{body{background:white}.desktop-note,.bottom-dock,dialog,.topbar button{display:none}main{margin:0 auto;box-shadow:none}.section{break-inside:avoid}}
/* Recorded soundtrack controls */
.topbar #music{display:flex;align-items:center;gap:7px;padding:7px 12px;min-height:34px;background:#eeeee2;border-color:#d8ddc9;white-space:nowrap}.topbar #music span{font:9px var(--sans);margin:0;letter-spacing:0}.topbar #music.playing{background:#e2e8d6;border-color:#bcc8a7}.sound-bars{display:flex;gap:2px;align-items:center;height:13px}.sound-bars i{display:block;width:2px;height:5px;background:#72805b;transform-origin:center;border-radius:2px}.sound-bars i:nth-child(2){height:12px}.sound-bars i:nth-child(3){height:8px}.sound-bars i:nth-child(4){height:10px}.playing .sound-bars i{animation:equalizer 1s ease-in-out infinite alternate}.playing .sound-bars i:nth-child(2){animation-delay:-.3s}.playing .sound-bars i:nth-child(3){animation-delay:-.7s}.playing .sound-bars i:nth-child(4){animation-delay:-.5s}.music-panel{position:relative;display:flex;align-items:center;gap:12px;padding:17px 25px;background:#eef0e4;border-bottom:1px solid var(--line);text-align:left}.music-panel[hidden]{display:none}.record{width:40px;height:40px;border-radius:50%;background:repeating-radial-gradient(circle,#394735 0 1px,#475441 2px 3px);display:flex;align-items:center;justify-content:center;flex-shrink:0}.record span{height:17px;width:17px;line-height:17px;border-radius:50%;text-align:center;background:#d4dbbd;font-size:10px}.record.spinning{animation:record-spin 9s linear infinite}.music-info{flex:1;min-width:0}.music-info .eyebrow{font-size:6px;letter-spacing:1.2px;display:block}.music-info b{font:19px var(--serif);display:block;line-height:1.5}.music-info b i{font-size:11px;color:#899178;font-style:normal}.music-info>span:last-child{font:8px var(--sans);color:#919a80;display:block}.volume-control{width:52px;margin:0 3px 0 0;font-size:8px;color:#879174;text-align:center}.volume-control input{padding:0;border:0;margin:5px 0;height:10px;accent-color:#697b51}.music-panel>button{position:absolute;right:5px;top:1px;font-size:16px;color:#969f86;line-height:25px;padding:0 7px}.music-credit{border-top:1px solid var(--line);margin-top:30px;padding-top:22px}.music-credit>span{display:block;font:7px var(--sans);letter-spacing:1.3px;color:#a0a68f}.music-credit>a{display:block;font:16px var(--serif);margin:7px 0;color:#6f7b60}.music-credit small{font:8px/1.8 var(--sans);letter-spacing:0}.music-credit small a{text-decoration:underline;text-underline-offset:2px}@keyframes equalizer{from{transform:scaleY(.4)}to{transform:scaleY(1)}}@keyframes record-spin{to{transform:rotate(360deg)}}@media(max-width:365px){.music-panel{padding-inline:18px;gap:8px}.music-info b i{font-size:10px}.music-info>span:last-child{font-size:7px}}@media(prefers-reduced-motion:reduce){.playing .sound-bars i,.record.spinning{animation:none}}
