:root{--bg:#f6ece7;--white:#fffdfb;--accent:#c98e7c;--accent-dark:#a9776a;--text:#5a4038;--text-light:#a08476;--line:#ead9d2;--shadow:0 20px 60px #6b463c26}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%}body{color:var(--text);-webkit-font-smoothing:antialiased;background:#e7d9d1;font-family:Noto Sans KR,sans-serif}.serif{font-family:Noto Serif KR,serif}.en-serif{font-family:Cormorant Garamond,serif}.coming-soon{background:radial-gradient(circle at 50% 35%, #fffdfbeb 0, #f6ece7d1 38%, transparent 68%), var(--bg);text-align:center;justify-content:center;align-items:center;width:100%;min-height:100%;padding:24px;display:flex;position:relative;overflow:hidden}.coming-soon__glow{filter:blur(4px);pointer-events:none;background:#c98e7c21;border-radius:50%;width:220px;height:220px;animation:9s ease-in-out infinite alternate comingSoonDrift;position:absolute}.coming-soon__glow--one{top:-70px;right:-90px}.coming-soon__glow--two{background:#fffdfbb3;width:260px;height:260px;animation-duration:11s;animation-delay:-4s;bottom:-100px;left:-80px}.coming-soon__card{z-index:1;-webkit-backdrop-filter:blur(8px);background:#fffdfba8;border:1px solid #c98e7c4d;border-radius:24px;width:min(100%,420px);padding:64px 28px;animation:1.1s cubic-bezier(.22,1,.36,1) both comingSoonFade;position:relative;overflow:hidden;box-shadow:0 20px 60px #6b463c1a}.coming-soon__card:after{content:"";background:linear-gradient(90deg,#0000,#ffffff80,#0000);width:32%;animation:5.5s ease-in-out 1.2s infinite comingSoonShimmer;position:absolute;inset:-60% auto -60% -45%;transform:rotate(18deg)}.coming-soon__heart{color:var(--accent);opacity:0;margin-bottom:20px;font-size:16px;animation:.7s .35s forwards comingSoonReveal,2.8s ease-in-out 1.4s infinite comingSoonHeartbeat;display:block}.coming-soon__names{color:var(--accent-dark);letter-spacing:4px;opacity:0;font-size:14px;font-weight:600;animation:.8s .5s forwards comingSoonReveal}.coming-soon__title{color:var(--text);word-break:keep-all;opacity:0;margin-top:24px;font-size:23px;font-weight:500;line-height:1.75;animation:.8s .68s forwards comingSoonReveal}.coming-soon__divider{background:var(--accent);width:32px;height:1px;margin:24px auto;animation:.7s .9s forwards comingSoonLine;transform:scaleX(0)}.coming-soon__message{color:var(--text-light);letter-spacing:.2px;opacity:0;font-size:14px;animation:.8s 1s forwards comingSoonReveal}@keyframes comingSoonFade{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes comingSoonReveal{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes comingSoonHeartbeat{0%,to{transform:scale(1)}8%{transform:scale(1.22)}16%{transform:scale(1)}24%{transform:scale(1.14)}34%{transform:scale(1)}}@keyframes comingSoonLine{to{transform:scaleX(1)}}@keyframes comingSoonDrift{0%{transform:translate(0,0)scale(1)}to{transform:translate(18px,24px)scale(1.12)}}@keyframes comingSoonShimmer{0%,42%{left:-45%}70%,to{left:125%}}@media (width<=380px){.coming-soon{padding:16px}.coming-soon__card{padding:52px 20px}.coming-soon__title{font-size:21px}}@media (prefers-reduced-motion:reduce){.coming-soon__card,.coming-soon__card:after,.coming-soon__glow,.coming-soon__heart,.coming-soon__names,.coming-soon__title,.coming-soon__divider,.coming-soon__message{animation:none}.coming-soon__heart,.coming-soon__names,.coming-soon__title,.coming-soon__message{opacity:1}.coming-soon__divider{transform:scaleX(1)}}.phone-frame{background:var(--bg);max-width:480px;min-height:100vh;margin:0 auto;position:relative;overflow:hidden}@media (width>=560px){body{padding:32px 0}.phone-frame{box-shadow:var(--shadow);border-radius:28px;min-height:auto}}section{padding:88px 32px;position:relative}.divider{background:var(--accent);width:36px;height:1px;margin:0 auto 20px}.label{letter-spacing:4px;color:var(--accent-dark);text-align:center;font-size:12px;font-weight:500}.heading{text-align:center;letter-spacing:1px;margin:10px 0 28px;font-size:24px;font-weight:600}.reveal{opacity:0;transition:opacity .9s,transform .9s;transform:translateY(28px)}.reveal.in-view{opacity:1;transform:translateY(0)}#intro{color:#fff;text-align:center;background-position:50%;background-repeat:no-repeat;background-size:cover;flex-direction:column;justify-content:flex-end;align-items:center;height:100vh;min-height:640px;padding:0 0 64px;display:flex}#intro .eyebrow{letter-spacing:5px;opacity:0;font-size:12px;animation:1.2s .3s forwards fadeIn}#intro .names{letter-spacing:1px;opacity:0;margin:18px 0 10px;font-size:38px;animation:1.2s .7s forwards fadeUp}#intro .names .amp{color:var(--accent);margin:0 10px;font-size:28px}#intro .date{letter-spacing:2px;opacity:0;font-size:14px;animation:1.2s 1.1s forwards fadeIn}#intro .scroll-cue{letter-spacing:2px;opacity:0;margin-top:34px;font-size:11px;animation:1.2s 1.6s forwards fadeIn,2s 1.6s infinite bounce}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(6px)}}#greeting{background:var(--white);text-align:center}#greeting .greet-text{color:var(--text);white-space:pre-line;min-height:170px;font-size:15px;line-height:2}.parents{color:var(--text-light);margin-top:36px;font-size:14px;line-height:1.9}.parents b{color:var(--text);font-weight:500}#info{text-align:center}#info .venue{margin-bottom:4px;font-size:17px;font-weight:600}#info .venue-sub{color:var(--text-light);margin-bottom:36px;font-size:13px}#info .date-big{letter-spacing:1px;margin-bottom:36px;font-size:26px}.countdown{justify-content:center;gap:14px;margin-bottom:40px;display:flex}.countdown .box{background:var(--white);border:1px solid var(--line);border-radius:10px;width:64px;padding:14px 0}.countdown .box .num{color:var(--accent-dark);font-size:22px;font-weight:600}.countdown .box .lbl{color:var(--text-light);letter-spacing:1px;margin-top:4px;font-size:10px}.cal-buttons{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.btn{border:1px solid var(--line);background:var(--white);color:var(--text);cursor:pointer;letter-spacing:.3px;border-radius:24px;align-items:center;gap:6px;padding:11px 18px;font-family:inherit;font-size:12.5px;text-decoration:none;transition:background .2s,border-color .2s;display:inline-flex}.btn:hover{border-color:var(--accent);background:#fbf8f3}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.primary:hover{background:var(--accent-dark)}#location{background:var(--white);text-align:center}.map-box{background:linear-gradient(var(--bg) 1px, transparent 1px) 0 0/24px 24px, linear-gradient(90deg, var(--bg) 1px, transparent 1px) 0 0/24px 24px, #f1e2dc;border:1px solid var(--line);height:200px;color:var(--text-light);border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:6px;margin-bottom:20px;font-size:12px;display:flex;position:relative;overflow:hidden}.map-box .pin{font-size:26px}.map-box .map-canvas{width:100%;height:100%}.address{margin-bottom:14px;font-size:14px}.map-buttons{flex-wrap:wrap;justify-content:center;gap:8px;margin-bottom:34px;display:flex}.info-card{text-align:left;background:var(--bg);color:var(--text-light);border-radius:12px;margin-bottom:10px;padding:16px 18px;font-size:13px;line-height:1.8}.info-card b{color:var(--text);margin-bottom:4px;font-size:13px;display:block}#gallery{background:var(--bg)}.filmstrip{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:10px;padding-bottom:10px;display:flex;overflow-x:auto}.filmstrip::-webkit-scrollbar{height:4px}.filmstrip::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px}.filmstrip img{object-fit:cover;scroll-snap-align:start;cursor:pointer;filter:grayscale(15%);border-radius:8px;flex-shrink:0;width:120px;height:160px;transition:filter .2s,transform .2s}.filmstrip img:active{transform:scale(.97)}.gallery-hint{text-align:center;color:var(--text-light);letter-spacing:.5px;margin-top:10px;font-size:11px}#lightbox{z-index:999;background:#0a0907f0;flex-direction:column;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#lightbox img{object-fit:contain;border-radius:6px;max-width:90%;max-height:75vh}#lightbox .counter{color:#fff;letter-spacing:2px;opacity:.7;margin-top:16px;font-size:12px}#lightbox .lb-close{color:#fff;cursor:pointer;background:0 0;border:none;font-size:26px;position:absolute;top:20px;right:24px}#lightbox .lb-nav{color:#fff;cursor:pointer;background:#ffffff1a;border:none;border-radius:50%;width:40px;height:40px;font-size:18px;position:absolute;top:50%;transform:translateY(-50%)}#lightbox .lb-prev{left:14px}#lightbox .lb-next{right:14px}#gift{background:var(--white);text-align:center}.gift-side{border:1px solid var(--line);border-radius:12px;margin-bottom:14px;overflow:hidden}.gift-toggle{width:100%;color:var(--text);cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;padding:16px;font-family:inherit;font-size:14px;font-weight:500;display:flex}.gift-toggle .arrow{color:var(--accent);transition:transform .25s}.gift-toggle.open .arrow{transform:rotate(180deg)}.gift-panel{text-align:left;max-height:0;transition:max-height .3s;overflow:hidden}.gift-row{border-top:1px solid var(--line);justify-content:space-between;align-items:center;padding:12px 16px;font-size:13px;display:flex}.gift-row .who{color:var(--text-light);margin-bottom:2px;font-size:11px;display:block}.gift-row .copy-btn{border:1px solid var(--line);background:var(--white);cursor:pointer;color:var(--text-light);border-radius:16px;padding:5px 10px;font-size:11px}#share{background:var(--bg);text-align:center}.share-buttons{flex-wrap:wrap;justify-content:center;gap:10px;margin-bottom:26px;display:flex}#qrWrap{flex-direction:column;align-items:center;gap:10px;display:flex}#qrWrap img{border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px}footer{text-align:center;color:var(--text-light);letter-spacing:1px;padding:48px 32px;font-size:12px}footer .amp{color:var(--accent)}.toast{color:#fff;opacity:0;pointer-events:none;z-index:1000;letter-spacing:.3px;background:#1e1c18e6;border-radius:20px;padding:10px 18px;font-size:12.5px;transition:opacity .25s,transform .25s;position:fixed;bottom:28px;left:50%;transform:translate(-50%)translateY(20px)}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}
