:root{font-family:SourceHanSerif,Songti SC,"Noto Serif CJK SC",SimSun,serif;color:#171814;background:#e9e6de;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;font-size:16px;color-scheme:light}*{box-sizing:border-box}html,body,#app{margin:0;width:100%;height:100%;overflow:hidden}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #965506;outline-offset:3px}button,a{color:inherit}button,input{border-radius:2px}p,h1{margin:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.invitation-shell{width:100%;height:100%;height:100dvh;min-height:0;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);background:radial-gradient(ellipse at 50% 30%,#f8f6f0,#e4e1d9)}.viewport-space{width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden}.invitation-frame{position:relative;flex-shrink:0;overflow:hidden;isolation:isolate;background:#f7f4ec;box-shadow:0 8px 60px #25251a16;touch-action:pan-x}.invitation-canvas{width:375px;height:741px;position:relative;transform-origin:top left;background:var(--paper) center/100% 100%}.scene{position:absolute;inset:0;background:#f7f4ec var(--paper) center/100% 100%;overflow:hidden}.scene-element{position:absolute;transform:rotate(var(--rotation));white-space:pre-line}.scene-element>img{display:block;width:100%;height:100%;border-radius:inherit}.decorative{pointer-events:none}.scene-element p{white-space:pre-line}.animated-element{animation:var(--animation) var(--duration) ease var(--delay) both}.element-image{overflow:hidden}.image-fallback{height:100%;display:flex;gap:12px;align-items:center;justify-content:center;flex-direction:column;background:#e4e4d8;color:#70735f}.image-fallback span{font-size:36px}.image-fallback small{font-size:11px;letter-spacing:2px}.scene-footer{position:absolute;left:0;right:0;top:658px;text-align:center;z-index:5;pointer-events:none}.scene-footer p{font-family:NewYork,Georgia,serif;font-size:9px;letter-spacing:1.3px;line-height:2.4}.scene-footer span{font-size:10px;letter-spacing:2px;line-height:2.2}.petals{position:absolute;inset:0;pointer-events:none;z-index:3}.petal{position:absolute;background-repeat:no-repeat;background-size:600px 706.5px;animation:petalIn 2s ease var(--petal-delay) both,petalFloat 6s ease-in-out calc(2s + var(--petal-delay)) infinite;filter:drop-shadow(0 2px 2px #605e451a)}.global-controls{position:absolute;right:10px;top:10px;display:flex;gap:2px;z-index:20}.global-controls button{position:relative;border:0;width:44px;height:44px;display:grid;place-items:center;background:#e4d0a64a;border-radius:50%;color:#4f4b3e}.auto-toggle{font-family:Arial,sans-serif;font-size:15px;letter-spacing:-2px}.global-controls button:disabled{opacity:.45}.music-toggle span{display:block;font-family:Georgia,serif;font-size:26px}.music-toggle.playing span{animation:spin 5s linear infinite}.music-toggle i{position:absolute;width:24px;height:1px;background:currentColor;transform:rotate(-45deg)}.page-dots{position:absolute;right:0;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;z-index:15}.page-dots button{width:44px;height:44px;border:0;background:transparent;display:grid;place-items:center}.page-dots button span{width:4px;height:4px;border-radius:50%;background:#746b5170;box-shadow:0 0 0 2px #f7f4ec30;transition:transform .3s}.page-dots button span.active{background:#65533e;transform:scale(1.6)}.swipe-guide{position:absolute;bottom:8px;left:50%;transform:translate(-50%);border:0;background:transparent;font-size:10px;letter-spacing:3px;min-width:100px;min-height:44px;color:#6f6a5c;z-index:15}.swipe-guide span{display:block;font-family:Arial,sans-serif;font-size:25px;line-height:16px;animation:guide 1.8s ease-in-out infinite}.page-counter{position:absolute;bottom:12px;left:0;right:0;text-align:center;font-family:NewYork,Georgia,serif;font-size:11px;letter-spacing:2px;color:#6f6a5c;pointer-events:none}.page-counter span{opacity:.45}.audio-feedback{position:absolute;top:60px;right:12px;font-size:10px;z-index:20;background:#f7f4ec;padding:6px}.calendar{color:#965506;text-align:center;font-family:NewYork,Georgia,serif;padding:0 14px}.calendar-heading{display:flex;align-items:center;justify-content:center;gap:20px;font-size:47px;line-height:1.1;font-weight:400}.calendar-heading i{font-size:30px;font-style:normal;opacity:.6}.calendar-year{font-size:13px;letter-spacing:3px;margin:8px 0 16px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);row-gap:6px;font-size:13px}.calendar-grid>span{position:relative;height:24px;display:grid;place-items:center}.calendar-grid .weekday{font-family:SourceHanSerif,SimSun,serif;font-size:11px;color:#8b795f}.calendar-grid .wedding-day{color:#fff;z-index:1}.wedding-day:before{content:"";position:absolute;inset:-2px 5px;background:#965506;border-radius:50%;z-index:-1;animation:pulse 2s ease-in-out infinite}.wedding-day i{position:absolute;top:-13px;right:1px;font-size:15px;color:#965506}.countdown{font-family:SourceHanSerif,SimSun,serif;font-size:10px;letter-spacing:2px;margin-top:15px}.venue-map{position:relative}.venue-map>a{display:block;height:92px;background:#efeee7;border:4px solid #fff;box-shadow:0 3px 12px #3d3a2e16;text-decoration:none;overflow:hidden}.venue-map img{width:100%;height:100%;object-fit:cover;display:block}.map-caption{position:absolute;right:4px;top:69px;background:#ffffffed;font-size:9px;letter-spacing:1px;padding:3px 7px}.map-fallback{display:grid;place-items:center;height:100%;font-size:13px;color:#965506}.copy-address{display:block;position:relative;margin:0 auto;background:transparent;border:0;font-size:10px;color:#726b5d;min-width:88px;min-height:44px;z-index:1;text-decoration:underline;text-underline-offset:4px}.copy-feedback{position:absolute;top:134px;left:-48px;width:316px;text-align:center;background:#f7f4ec;font-size:10px;z-index:6}.rsvp input{display:block;width:100%;height:44px;margin-bottom:6px;border:1px solid #999;background:#f7f4ecbb;padding:0 12px;font-family:SourceHanSerif,SimSun,serif;font-size:16px;outline-offset:0;color:#171814}.rsvp input::placeholder{font-size:12px;color:#777}.rsvp button{width:100%;height:44px;margin-top:0;border:0;border-radius:4px;background:#171814;color:#fff;font-size:14px;letter-spacing:4px}.rsvp button:disabled{opacity:.6}.rsvp{touch-action:manipulation}.form-error{font-size:10px;line-height:1.4;color:#9b392a;margin-top:7px;letter-spacing:0}.local-notice{font-size:9px;color:#7c776b;line-height:1.5;letter-spacing:0;margin-top:8px;text-align:center}.rsvp-success{height:144px;border:1px solid #b2aa95;background:#f7f4ecdc;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:7px}.rsvp-success>span{font-family:Georgia,serif;font-size:31px;color:#965506}.rsvp-success p{font-size:14px}.rsvp-success small{font-size:11px;color:#777}.replay{width:100%;height:100%;background:transparent;border:1px solid #999185;font-size:12px;letter-spacing:2px}.replay span{padding-left:8px}.loading-screen{position:absolute;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;flex-direction:column;background:#f7f4ec var(--paper) center/cover;gap:22px}.loading-screen h1{font-size:21px;letter-spacing:5px;font-weight:400}.loading-screen h1 i{font-family:NewYork,Georgia,serif;font-size:26px;font-weight:400}.loading-screen p{font-size:11px;letter-spacing:3px;color:#7c776b}.loading-flower{font-size:46px;color:#c3b38c;animation:spin 12s linear infinite}.loading-line{width:130px;height:1px;background:#d8d1bf;margin-top:12px}.loading-line span{height:100%;display:block;background:#8f7956;transition:width .3s}.loading-screen small{font-family:NewYork,Georgia,serif;font-size:10px;color:#8f7956}.loading-leave-active{transition:opacity .5s}.loading-leave-to{opacity:0}.page-enter-active,.page-leave-active{transition:opacity .65s ease}.page-enter-active{z-index:2}.page-enter-from,.page-leave-to{opacity:0}.page-leave-active{pointer-events:none}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(25px) rotate(var(--rotation))}to{opacity:1;transform:translateY(0) rotate(var(--rotation))}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-25px) rotate(var(--rotation))}to{opacity:1;transform:translateY(0) rotate(var(--rotation))}}@keyframes fadeInLeft{0%{opacity:0;transform:translate(-25px) rotate(var(--rotation))}to{opacity:1;transform:translate(0) rotate(var(--rotation))}}@keyframes fadeInRight{0%{opacity:0;transform:translate(25px) rotate(var(--rotation))}to{opacity:1;transform:translate(0) rotate(var(--rotation))}}@keyframes zoomIn{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}@keyframes zoomInBig{0%{opacity:0;transform:scale(1.12)}to{opacity:1;transform:scale(1)}}@keyframes pulse{50%{transform:scale(1.08)}}@keyframes petalIn{0%{opacity:0;transform:translate(15px,-20px) rotate(60deg)}to{opacity:1;transform:translate(0) rotate(0)}}@keyframes petalFloat{50%{transform:translateY(-5px) rotate(8deg)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes guide{50%{transform:translateY(-5px);opacity:.5}}@media (min-width:600px){.invitation-frame{border-radius:4px}.invitation-shell{padding-top:24px;padding-bottom:24px}}.reduce-motion *,.reduce-motion *:before,.reduce-motion *:after{animation:none!important;transition:none!important}@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
