@import"https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600&family=Noto+Serif+SC:wght@400;500;600&display=swap";:root{font-family:"Noto Serif SC",serif;color:#f2e3e4;background:#0d080c;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--ink: #f2e3e4;--muted: #bba8ad;--soft: #d7bdc2;--line: rgba(239, 212, 216, .16);--rose: #b95a6b}*{box-sizing:border-box}html,body,#app{min-width:320px;min-height:100%;margin:0}body{min-height:100dvh;overflow-x:hidden;background:#0d080c}button{font:inherit}button:focus-visible{outline:1px solid rgba(245,213,218,.85);outline-offset:4px}.app-shell{position:relative;min-height:100dvh;overflow:hidden;background:radial-gradient(circle at 38% 40%,rgba(111,27,47,.29),transparent 25rem),radial-gradient(circle at 66% 32%,rgba(195,96,100,.08),transparent 22rem),linear-gradient(135deg,#0b070a,#160b12 47%,#090609)}.app-shell:before{position:absolute;inset:0;z-index:0;pointer-events:none;content:"";opacity:.18;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.92' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.18'/%3E%3C/svg%3E");mix-blend-mode:soft-light}.ambient{position:absolute;z-index:0;border-radius:999px;pointer-events:none;filter:blur(60px)}.ambient--top{top:16%;left:45%;width:18rem;height:18rem;background:#b43e511a}.ambient--bottom{right:12%;bottom:-10rem;width:25rem;height:16rem;background:#772c3d1a}.topbar,.hero-layout,.footer-line{position:relative;z-index:1}.topbar{display:flex;align-items:center;justify-content:space-between;width:min(1320px,calc(100% - 80px));margin:0 auto;padding:34px 0 0;color:var(--muted);font-size:11px;letter-spacing:.14em;text-transform:uppercase}.brand-lockup,.topbar-meta{display:flex;align-items:center;gap:12px}.brand-mark{color:#d6949e;font-family:Cormorant Garamond,serif;font-size:18px}.topbar-meta{gap:28px}.icon-button{position:relative;display:inline-grid;place-items:center;width:38px;height:38px;padding:0;color:#ead5d8;cursor:pointer;border:1px solid rgba(238,207,211,.3);border-radius:50%;background:#2c151d5c;transition:border-color .24s ease,background .24s ease,transform .24s ease}.icon-button:hover{border-color:#eecfd3a6;background:#5d263473;transform:translateY(-1px)}.music-button__glyph{position:relative;z-index:1;font-family:Cormorant Garamond,serif;font-size:18px;line-height:1}.music-button__ring{position:absolute;inset:-5px;border:1px solid transparent;border-radius:50%;opacity:0}.music-button__ring.is-playing{border-color:#d16c7b7a;animation:music-pulse 2.4s ease-in-out infinite}.hero-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(340px,.85fr);align-items:center;width:min(1320px,calc(100% - 80px));min-height:calc(100dvh - 130px);margin:0 auto;padding:20px 0 70px}.scene-column{position:relative;min-width:0;height:min(76dvh,760px)}.scene-frame,.scene-canvas{width:100%;height:100%}.scene-frame{position:relative}.scene-canvas{display:block;cursor:grab;touch-action:pan-y}.scene-canvas:active{cursor:grabbing}.scene-caption{position:absolute;bottom:10%;left:15%;display:flex;align-items:center;gap:9px;color:#e2c5c97a;font-size:10px;letter-spacing:.13em;text-transform:uppercase}.scene-caption__dot{width:4px;height:4px;background:#c77886;border-radius:50%;box-shadow:0 0 14px #c77886}.message-column{max-width:510px;padding:30px 5% 0 8%}.eyebrow{margin:0;color:#c7828e;font-size:11px;letter-spacing:.26em;line-height:1.4;text-transform:uppercase}.message-column .eyebrow{margin-bottom:28px}h1{max-width:470px;margin:0;color:var(--ink);font-size:clamp(35px,4vw,60px);font-weight:400;letter-spacing:.03em;line-height:1.22}.english-line{max-width:390px;margin:23px 0 0;color:#c9afb5;font-family:Cormorant Garamond,serif;font-size:23px;letter-spacing:.03em;line-height:1.25}.message-rule{display:flex;align-items:center;gap:12px;width:230px;margin:36px 0 27px;color:#c87885}.message-rule span{display:block;width:82px;height:1px;background:var(--line)}.message-rule i{font-family:Cormorant Garamond,serif;font-size:15px;font-style:normal}.subtitle{margin:0;color:var(--soft);font-size:15px;letter-spacing:.13em;line-height:2.1}.card-trigger{display:inline-flex;align-items:center;gap:12px;margin-top:38px;padding:0 0 10px;color:#f1dfe1;font-size:12px;letter-spacing:.16em;cursor:pointer;border:0;border-bottom:1px solid rgba(215,164,171,.48);background:transparent;transition:color .22s ease,border-color .22s ease,gap .22s ease}.card-trigger:hover{gap:17px;color:#ffedf0;border-color:#d6949e}.card-trigger__icon{display:inline-grid;place-items:center;width:20px;height:20px;color:#d6949e;font-size:17px}.signature{margin:78px 0 0;color:#d7c2c685;font-family:Cormorant Garamond,serif;font-size:18px;letter-spacing:.04em}.signature em{color:#d7aab0;font-style:normal}.reveal-item{opacity:0;transform:translateY(18px);transition:opacity .9s ease,transform .9s cubic-bezier(.22,1,.36,1)}.reveal-item--title{transition-delay:.1s}.is-visible .reveal-item:nth-child(3){transition-delay:.22s}.is-visible .reveal-item:nth-child(4){transition-delay:.32s}.is-visible .reveal-item:nth-child(5){transition-delay:.42s}.is-visible .reveal-item:nth-child(6){transition-delay:.52s}.is-visible .reveal-item:nth-child(7){transition-delay:.62s}.is-visible .reveal-item{opacity:1;transform:translateY(0)}.footer-line{position:absolute;right:40px;bottom:30px;left:40px;display:flex;align-items:center;gap:13px;color:#cfb4b96b;font-size:10px;letter-spacing:.18em;text-transform:uppercase}.footer-line__track{width:60px;height:1px;background:var(--line)}.footer-line>:last-child{margin-left:auto}.loading-screen{position:fixed;inset:0;z-index:10;display:grid;place-items:center;align-content:center;gap:18px;background:#0c070b}.loading-mark{position:relative;width:42px;height:48px;margin-bottom:8px}.loading-mark__petal{position:absolute;width:18px;height:25px;border:1px solid rgba(218,131,143,.78);border-radius:100% 0;transform-origin:100% 100%}.loading-mark__petal--one{top:4px;left:9px;transform:rotate(-31deg)}.loading-mark__petal--two{top:4px;left:14px;transform:rotate(29deg) scale(.86)}.loading-mark__petal--three{top:12px;left:6px;transform:rotate(-71deg) scale(.66)}.loading-mark__stem{position:absolute;bottom:2px;left:21px;width:1px;height:26px;background:#82a381b8;transform:rotate(9deg)}.loading-kicker{margin:0;color:#e0bfc6c2;font-family:Cormorant Garamond,serif;font-size:17px;letter-spacing:.05em}.loading-track{width:148px;height:1px;overflow:hidden;background:#e7c7cc29}.loading-track span{display:block;height:100%;background:#be6f7e;transition:width .38s ease}.loading-percent{color:#dbbcc17a;font-size:9px;letter-spacing:.16em}.loading-enter-active,.loading-leave-active{transition:opacity .9s ease}.loading-leave-to{opacity:0}.card-backdrop{position:fixed;inset:0;z-index:8;display:grid;place-items:center;padding:24px;background:#080407a3;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.gift-card{position:relative;width:min(420px,100%);padding:60px 52px 48px;color:#4a2c34;text-align:center;background:linear-gradient(140deg,#fff8f4fa,#ebd1cdf5),#f3e1dd;box-shadow:0 25px 100px #00000061,inset 0 0 0 1px #7a48511f}.gift-card:before,.gift-card:after{position:absolute;width:18px;height:18px;content:"";border-color:#914b5957;border-style:solid}.gift-card:before{top:20px;left:20px;border-width:1px 0 0 1px}.gift-card:after{right:20px;bottom:20px;border-width:0 1px 1px 0}.card-close{position:absolute;top:19px;right:19px;width:28px;height:28px;padding:0;cursor:pointer;border:0;background:transparent}.card-close span{position:absolute;top:13px;left:5px;width:18px;height:1px;background:#8b5a63}.card-close span:first-child{transform:rotate(45deg)}.card-close span:last-child{transform:rotate(-45deg)}.gift-card__ornament{margin-bottom:15px;color:#a45868;font-size:18px}.gift-card .eyebrow{color:#9a6670;font-size:10px}.gift-card h2{margin:11px 0 18px;font-family:Cormorant Garamond,serif;font-size:40px;font-weight:500;letter-spacing:.04em}.gift-card__rule{width:52px;height:1px;margin:0 auto 27px;background:#8e475466}.gift-card__body{margin:0 auto 10px;font-size:14px;line-height:2}.gift-card__signature{margin:28px 0 0;font-family:Cormorant Garamond,serif;font-size:24px;color:#8d5260}.gift-card__date{margin:18px 0 0;color:#5a353d8f;font-size:10px;letter-spacing:.16em;text-transform:uppercase}.card-enter-active,.card-leave-active{transition:opacity .42s ease}.card-enter-active .gift-card,.card-leave-active .gift-card{transition:transform .52s cubic-bezier(.22,1,.36,1),opacity .42s ease}.card-enter-from,.card-leave-to{opacity:0}.card-enter-from .gift-card,.card-leave-to .gift-card{opacity:0;transform:translateY(22px) scale(.97)}@keyframes music-pulse{0%,to{transform:scale(.96);opacity:.35}50%{transform:scale(1.16);opacity:.95}}@media(max-width:900px){.topbar,.hero-layout{width:min(100% - 44px,680px)}.hero-layout{grid-template-columns:1fr;min-height:auto;padding-top:8px}.scene-column{height:min(58dvh,560px)}.message-column{max-width:590px;margin:-12px auto 0;padding:0 8px 82px;text-align:center}.message-column .eyebrow{margin-bottom:18px}h1,.english-line{max-width:none}.message-rule{justify-content:center;margin-right:auto;margin-left:auto}.signature{margin-top:48px}.scene-caption{bottom:4%;left:50%;white-space:nowrap;transform:translate(-50%)}.footer-line{right:22px;bottom:20px;left:22px}}@media(max-width:500px){.topbar{padding-top:22px;font-size:9px;letter-spacing:.1em}.topbar-meta{gap:12px}.icon-button{width:34px;height:34px}.hero-layout{width:calc(100% - 28px);padding-top:2px}.scene-column{height:46dvh;min-height:330px}.message-column{padding-bottom:62px}.message-column .eyebrow{margin-bottom:13px}.scene-caption{bottom:2%;font-size:8px}h1{font-size:35px}.english-line{margin-top:16px;font-size:20px}.message-rule{margin-top:27px;margin-bottom:20px}.subtitle{font-size:13px;letter-spacing:.08em}.card-trigger{margin-top:29px}.gift-card{padding:51px 29px 38px}.gift-card h2{font-size:35px}.footer-line>:last-child{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
