:root{--paper:#f6f3ec;--paper-2:#efeae0;--bg:#e7e1d4;--ink:#1c1a17;--text:#3d3a34;--muted:#6e6759;--faint:#9a9384;--line:#1c1a171a;--accent:#8fb0a8;--accent-deep:#4f6e64;--sun:#a8756b;--shadow:#1e1b1814;--song:"Song Myung", "Maru Buri", serif;--serif:"Maru Buri", serif;--fig:"Cormorant Garamond", serif;--sans:"Pretendard Variable", "Pretendard", -apple-system, BlinkMacSystemFont, sans-serif;--sp-1:4px;--sp-2:8px;--sp-3:16px;--sp-4:24px;--sp-6:48px;--sp-8:64px;--sp-12:96px;--gutter:24px;--frame-w:500px;--ease:cubic-bezier(.16, 1, .3, 1);--grade:saturate(.92) contrast(1.01);--hanji:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23p)'/%3E%3C/svg%3E")}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--sans);letter-spacing:0;-webkit-font-smoothing:antialiased;word-break:keep-all;font-size:17px;line-height:1.6}img{max-width:100%;display:block}button{font-family:inherit}.num,.folio__n,.calendar__year,.calendar__md,.cd__n,.cal-cell,.account-row__num,.gb-item__date,.lightbox__count{font-variant-numeric:lining-nums tabular-nums;font-feature-settings:"lnum" 1, "tnum" 1}.app{justify-content:center;min-height:100vh;display:flex}.frame{width:100%;max-width:var(--frame-w);background:var(--paper);position:relative;overflow:hidden;box-shadow:0 6px 50px #3c322217}.frame:before{content:"";z-index:3;pointer-events:none;opacity:.05;mix-blend-mode:multiply;background-image:var(--hanji);background-size:180px 180px;position:absolute;inset:0}.section{padding:var(--sp-8) var(--gutter);text-align:left;position:relative}.section--open{padding-top:var(--sp-12);padding-bottom:var(--sp-12)}.folio{align-items:center;gap:var(--sp-2);margin:0 0 var(--sp-4);font-family:var(--sans);letter-spacing:.18em;color:var(--muted);font-size:11.5px;line-height:1.4;display:flex}.folio__n{font-family:var(--fig);letter-spacing:.18em;font-size:13px}.folio__sep{color:var(--faint)}.folio:after{content:"";background:var(--line);flex:1;height:1px}.section__title{font-family:var(--song);letter-spacing:-.01em;color:var(--ink);margin:0 0 var(--sp-4);font-size:clamp(24px,7vw,29px);font-weight:400;line-height:1.2}.section__sub{margin:calc(-1 * var(--sp-3)) 0 var(--sp-4);letter-spacing:.02em;color:var(--muted);font-size:13px}.reveal{opacity:0;transition:opacity .4s var(--ease), transform .4s var(--ease);transform:translateY(8px)}.reveal--in{opacity:1;transform:none}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.collapse__head{text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;width:100%;padding:0;display:block}.collapse__bar{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.collapse__title{font-family:var(--song);letter-spacing:-.01em;color:var(--ink);font-size:clamp(22px,6.4vw,27px);font-weight:400;line-height:1.2;transition:color .15s}.collapse--open .collapse__title{color:var(--accent-deep)}.collapse__toggle{flex:none;width:16px;height:16px;position:relative}.collapse__toggle:before,.collapse__toggle:after{content:"";background:var(--accent-deep);height:1.5px;transition:transform .2s;position:absolute;top:50%;left:0;right:0}.collapse__toggle:after{transform:rotate(90deg)}.collapse--open .collapse__toggle:after{transform:rotate(0)}.collapse__body{transition:grid-template-rows .28s var(--ease);grid-template-rows:0fr;display:grid}.collapse--open .collapse__body{grid-template-rows:1fr}.collapse__inner{overflow:hidden}.collapse--open .collapse__inner{padding-top:var(--sp-4)}.guestbook .reveal+.reveal{margin-top:var(--sp-6)}.intro{z-index:500;background:#efe7d8;justify-content:center;transition:opacity 1.2s;display:flex;position:fixed;inset:0}.intro--out{opacity:0;pointer-events:none}.intro__card{width:100%;max-width:var(--frame-w);background:#efe7d8;height:100dvh;position:relative;overflow:hidden}.intro__photo{background-position:50%;background-size:cover;animation:1.2s both fadeIn;position:absolute;inset:0}.intro__chevron{border-bottom:1px solid #322a228c;border-right:1px solid #322a228c;width:10px;height:10px;animation:2.4s ease-in-out infinite chev;position:absolute;bottom:40px;left:50%;transform:translate(-50%)rotate(45deg)}@keyframes chev{0%,to{opacity:.2;transform:translate(-50%,-3px)rotate(45deg)}50%{opacity:.7;transform:translate(-50%,3px)rotate(45deg)}}.cover{height:100dvh;min-height:620px;position:relative;overflow:hidden}.cover__photo{background-position:50%;background-size:cover;animation:1.2s both fadeIn;position:absolute;inset:0}.cover__scroll{z-index:2;position:absolute;bottom:26px;left:50%;transform:translate(-50%)}.cover__scroll span{transform-origin:top;background:#322a2266;width:1px;height:44px;animation:2s ease-in-out infinite scrollLine;display:block}@keyframes scrollLine{0%{opacity:0;transform-origin:top;transform:scaleY(0)}45%{opacity:1;transform-origin:top;transform:scaleY(1)}55%{opacity:1;transform-origin:bottom;transform:scaleY(1)}to{opacity:0;transform-origin:bottom;transform:scaleY(0)}}.greeting{padding-top:var(--sp-12);padding-bottom:var(--sp-12)}.greeting__lead{font-family:var(--song);white-space:pre-line;letter-spacing:-.01em;color:var(--ink);margin:0 0 var(--sp-6);font-size:clamp(23px,6.4vw,29px);font-weight:400;line-height:1.6}.greeting__figure{width:64%;margin:0 0 var(--sp-6)}.greeting__figure img{aspect-ratio:4/5;object-fit:cover;width:100%;filter:var(--grade)}.greeting__figure figcaption{margin-top:var(--sp-2);font-family:var(--sans);letter-spacing:.14em;color:var(--muted);font-size:11.5px}.greeting__text{font-family:var(--serif);white-space:pre-line;color:var(--text);margin:0 0 var(--sp-6);word-break:keep-all;text-wrap:pretty;max-width:34ch;font-size:17px;line-height:1.8}.greeting__parents p{margin:var(--sp-2) 0;font-size:15px}.greeting__rel,.greeting__of{color:var(--muted)}.greeting__of{margin:0 6px;font-size:14px}.greeting__parents b{color:var(--ink);font-weight:600}.greeting__contact{gap:var(--sp-2);margin-top:var(--sp-4);flex-wrap:wrap;justify-content:flex-start;display:flex}.contact-btn,.btn-line,.nav-btn,.copy-btn,.kakaopay-btn{border:1px solid var(--line);min-height:44px;font-family:var(--sans);color:var(--text);-webkit-tap-highlight-color:transparent;background:0 0;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:0 18px;font-size:13px;text-decoration:none;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.contact-btn:hover,.btn-line:hover,.nav-btn:hover,.copy-btn:hover{border-color:var(--accent-deep);color:var(--accent-deep)}.pullquote{padding:var(--sp-12) var(--gutter)}.pullquote__text{font-family:var(--song);letter-spacing:-.01em;color:var(--ink);white-space:pre-line;word-break:keep-all;border-left:1px solid var(--accent-deep);margin:0;padding-left:20px;font-size:clamp(22px,6.4vw,28px);font-weight:400;line-height:1.55}.photoband{background-position:50%;background-size:cover;justify-content:flex-start;align-items:flex-end;min-height:92vh;display:flex;position:relative}.photoband__overlay{background:linear-gradient(#1c1a1705 45%,#1c1a178c);position:absolute;inset:0}.photoband__quote{z-index:1;font-family:var(--song);white-space:pre-line;color:#f6f3ec;letter-spacing:-.01em;width:82%;padding:0 var(--gutter) var(--sp-12);text-shadow:0 2px 24px #0006;font-size:clamp(22px,6.4vw,30px);font-weight:400;line-height:1.5;position:relative}.countdown{background-position:50%;background-size:cover;justify-content:flex-start;align-items:flex-end;min-height:58vh;display:flex;position:relative}.countdown__overlay{background:linear-gradient(#1c1a1714 30%,#1c1a1799);position:absolute;inset:0}.countdown__inner{z-index:1;color:#f6f3ec;padding:0 var(--gutter) var(--sp-8);position:relative}.countdown__caption{font-family:var(--sans);letter-spacing:.28em;margin:0 0 var(--sp-4);color:#f6f3ecd9;font-size:11.5px}.cd{justify-content:flex-start;align-items:flex-start;gap:22px;display:flex}.cd__u{flex-direction:column;align-items:flex-start;display:flex}.cd__n{font-family:var(--fig);color:#f6f3ec;font-size:clamp(40px,12vw,56px);font-weight:500;line-height:1;transition:opacity .4s}.cd__l{margin-top:var(--sp-2);font-family:var(--sans);letter-spacing:.18em;color:#f6f3ecb3;font-size:11px}.calendar__year{font-family:var(--sans);letter-spacing:.18em;color:var(--muted);margin:0 0 var(--sp-1);font-size:13px}.calendar__md{font-family:var(--fig);letter-spacing:.01em;color:var(--ink);margin:0 0 var(--sp-2);font-size:clamp(56px,18vw,84px);font-weight:500;line-height:.95}.calendar__sub{letter-spacing:.02em;color:var(--muted);margin:0 0 var(--sp-6);font-size:14px}.calendar__grid{gap:var(--sp-2) 0;max-width:300px;margin:0 0 var(--sp-4);grid-template-columns:repeat(7,1fr);display:grid}.cal-cell{aspect-ratio:1;font-family:var(--fig);color:var(--text);justify-content:center;align-items:center;font-size:15px;display:flex}.cal-cell--head{font-family:var(--sans);letter-spacing:.04em;color:var(--muted);font-size:11px}.cal-cell--sun{color:var(--sun)}.cal-cell--target{color:var(--paper);font-weight:600;position:relative}.cal-cell--target:before{content:"";background:var(--accent-deep);z-index:-1;border-radius:50%;width:34px;height:34px;position:absolute}.dday__text{color:var(--text);margin:var(--sp-1) 0 0;font-size:14.5px}.dday__text b{font-family:var(--song);color:var(--ink);font-weight:400}.dday__done{color:var(--accent-deep);font-size:16px}.gallery__grid{gap:var(--sp-2);grid-template-columns:repeat(3,1fr);display:grid}.gallery__item{background:var(--paper-2);aspect-ratio:1;cursor:pointer;border:none;border-radius:4px;padding:0;overflow:hidden}.gallery__item img{object-fit:cover;width:100%;height:100%;filter:var(--grade);transition:transform .4s var(--ease)}.gallery__item:hover img{transform:scale(1.03)}.lightbox{z-index:600;overscroll-behavior:contain;background:#14120ef5;justify-content:center;align-items:center;animation:.24s both fadeIn;display:flex;position:fixed;inset:0}.lightbox__img{object-fit:contain;max-width:92vw;max-height:82vh}.lightbox__close,.lightbox__nav{color:#f6f3ec;background:#f6f3ec1f;border:none;border-radius:50%;justify-content:center;align-items:center;width:46px;height:46px;font-size:22px;display:flex;position:absolute}.lightbox__close{font-size:18px;top:20px;right:20px}.lightbox__nav--prev{top:50%;left:12px;transform:translateY(-50%)}.lightbox__nav--next{top:50%;right:12px;transform:translateY(-50%)}.lightbox__count{color:#f6f3ec;font-family:var(--fig);letter-spacing:.12em;font-size:15px;position:absolute;bottom:26px;left:50%;transform:translate(-50%)}.location__venue{margin-bottom:var(--sp-4)}.location__name{font-family:var(--song);color:var(--ink);margin:0 0 var(--sp-1);font-size:clamp(19px,5vw,23px)}.location__name span{font-family:var(--sans);color:var(--muted);font-size:14px}.location__addr{margin:0 0 var(--sp-3);color:var(--muted);font-size:14px}.location__actions{gap:var(--sp-2);justify-content:flex-start;display:flex}.map{border:1px solid var(--line);margin:var(--sp-4) 0;background:var(--paper-2);border-radius:12px;overflow:hidden}.map iframe{filter:grayscale(.15)contrast(.99);border:0;width:100%;height:240px;display:block}.nav-buttons{gap:var(--sp-2);margin-bottom:var(--sp-4);display:flex}.nav-btn{border-radius:8px;flex:1}.nav-btn--primary{border-color:var(--accent-deep);color:var(--accent-deep)}.nav-btn--primary:hover{background:var(--accent-deep);color:var(--paper)}.transport{margin:0;padding:0;list-style:none}.transport li{align-items:baseline;gap:var(--sp-3);padding:var(--sp-3) 0;border-top:1px solid var(--line);grid-template-columns:60px 1fr;font-size:14px;display:grid}.transport__icon{display:none}.transport__title{font-family:var(--sans);letter-spacing:.1em;color:var(--accent-deep);font-size:12px}.transport__desc{color:var(--text)}.account__desc{color:var(--muted);margin:0 0 var(--sp-4);font-size:14px;line-height:1.8}.account__groups{gap:var(--sp-3);flex-direction:column;display:flex}.accordion{border:1px solid var(--line);background:var(--paper-2);border-radius:12px;overflow:hidden}.accordion__head{width:100%;padding:var(--sp-4);font-family:var(--song);color:var(--ink);cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;font-size:16px;transition:color .15s;display:flex}.accordion__head:hover{color:var(--accent-deep)}.accordion__arrow{color:var(--accent-deep);font-size:18px}.accordion__body{padding:0 var(--sp-4) var(--sp-2)}.account-row{justify-content:space-between;align-items:center;gap:var(--sp-2);padding:var(--sp-3) 0;border-top:1px solid var(--line);display:flex}.account-row__top{margin:0 0 var(--sp-1);font-size:12px}.account-row__bank{color:var(--accent-deep)}.account-row__rel{color:var(--muted);margin-left:6px}.account-row__num{font-family:var(--sans);color:var(--ink);margin:0;font-size:16px}.account-row__holder{margin:var(--sp-1) 0 0;color:var(--muted);font-size:12px}.account-row__actions{flex-direction:column;gap:6px;display:flex}.copy-btn{min-height:40px;color:var(--accent-deep);padding:0 14px;font-size:12px}.kakaopay-btn{color:#3b1e1e;background:#fee500;border-color:#fee500;min-height:40px;padding:0 14px;font-size:12px}.rsvp-form,.gb-form{gap:var(--sp-3);flex-direction:column;display:flex}.field-row{gap:var(--sp-3);display:flex}.field-row label,.field-full{gap:var(--sp-2);font-family:var(--sans);letter-spacing:.14em;color:var(--muted);flex-direction:column;flex:1;font-size:11.5px;display:flex}.rsvp-form input,.rsvp-form select,.gb-form input,.gb-form textarea{font-family:var(--sans);color:var(--text);border:none;border-bottom:1px solid var(--line);padding:var(--sp-2) 2px;background:0 0;border-radius:0;width:100%;font-size:16px;line-height:1.5;transition:border-color .15s}.rsvp-form input:focus,.rsvp-form select:focus,.gb-form input:focus,.gb-form textarea:focus{border-bottom-color:var(--accent-deep);outline:none}.rsvp-form textarea,.gb-form textarea{resize:vertical;min-height:96px}.submit-btn{border:1px solid var(--accent-deep);min-height:48px;color:var(--accent-deep);font-family:var(--sans);margin-top:var(--sp-2);background:0 0;border-radius:8px;padding:0 24px;font-size:15px;transition:background-color .15s,color .15s}.submit-btn:hover:not(:disabled){background:var(--accent-deep);color:var(--paper)}.submit-btn:disabled{opacity:.5}.rsvp__thanks{font-family:var(--serif);color:var(--accent-deep);font-size:16px;line-height:1.9}.gb-list{margin:var(--sp-4) 0 0;gap:var(--sp-4);flex-direction:column;padding:0;list-style:none;display:flex}.gb-empty{color:var(--muted);padding:var(--sp-4) 0;font-size:14px}.gb-item{padding:0 0 var(--sp-4);border-bottom:1px solid var(--line)}.gb-item__head{align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2);display:flex}.gb-item__head b{font-family:var(--song);color:var(--ink);font-size:15px}.gb-item__date{font-family:var(--sans);color:var(--muted);margin-left:auto;font-size:12px}.gb-item__del{color:var(--faint);cursor:pointer;background:0 0;border:none;font-size:12px}.gb-item__msg{font-family:var(--serif);color:var(--text);white-space:pre-line;margin:0;font-size:15px;line-height:1.8}.gb-note{margin-top:var(--sp-6);color:var(--muted);font-size:11.5px;line-height:1.7}.gb-note code{background:var(--paper-2);padding:1px 5px;font-size:11px}.bgm-toggle{z-index:400;width:40px;height:40px;color:var(--text);-webkit-backdrop-filter:blur(8px);background:#f6f3ec8c;border:none;border-radius:50%;font-size:16px;position:fixed;top:16px;right:16px}.bgm-toggle--on .bgm-toggle__icon{animation:4s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.footer{text-align:left;padding:var(--sp-12) var(--gutter) var(--sp-8)}.footer__names{font-family:var(--song);color:var(--ink);margin:0 0 var(--sp-2);font-size:clamp(24px,7vw,32px);line-height:1}.footer__date{font-family:var(--fig);font-variant-numeric:lining-nums tabular-nums;color:var(--muted);margin:0 0 var(--sp-4);letter-spacing:.08em;font-size:15px}.footer__thanks{font-family:var(--sans);letter-spacing:.28em;color:var(--muted);margin:0;font-size:11.5px}.dev-toggle{z-index:700;background:#1c1814eb;border-radius:999px;align-items:center;gap:6px;padding:6px 8px;display:flex;position:fixed;bottom:14px;left:50%;transform:translate(-50%)}.dev-toggle__label{color:#cbb9a3;padding:0 4px;font-size:11px}.dev-toggle button{color:#e9e2d6;cursor:pointer;background:0 0;border:none;border-radius:999px;padding:6px 12px;font-size:12px}.dev-toggle button.active{background:var(--accent-deep);color:var(--paper)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.reveal{opacity:1;transform:none}}
