@font-face{font-family:FZSS;src:url(../assets/fonts/FangZhengShuSong.ttf) format("truetype");font-weight:400;font-display:swap}@font-face{font-family:FZLTH;src:url(../assets/fonts/fzlthjw.ttf) format("truetype");font-weight:400;font-display:swap}@font-face{font-family:CultureRegular;src:url(../assets/fonts/CultureRegular.otf) format("opentype");font-weight:400;font-display:swap}@font-face{font-family:ClassicoBold;src:url(../assets/fonts/ClassicoBold.otf) format("opentype");font-weight:400;font-display:swap}@font-face{font-family:PingFangSC;src:url(../assets/fonts/PingFangSC-Regular.ttf) format("truetype");font-weight:400;font-display:swap}@font-face{font-family:DINAlternate;src:url(../assets/fonts/ClassicoBold.otf) format("opentype");font-weight:700;font-display:swap}:root{--primary: #ff405f;--primary-deep: #f83244;--primary-soft: #fff4f6;--text-main: #333333;--text-sub: #999999;--font-body: "PingFangSC", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-title: "FZLTH", "PingFang SC", "Microsoft YaHei", sans-serif;--font-song: "FZSS", "SimSun", serif;--font-en: "ClassicoBold", "DINAlternate", "Arial", sans-serif;--font-culture: "CultureRegular", "ClassicoBold", "Arial", sans-serif}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{width:100%;background:#fff4f6;font-family:var(--font-body);color:var(--text-main);-webkit-font-smoothing:antialiased;overscroll-behavior-y:contain}#root{width:100%;min-height:100vh}button{font-family:inherit;border:none;outline:none;background:none;cursor:pointer}input{font-family:inherit;outline:none}img{display:block;max-width:100%}a{text-decoration:none;color:inherit}.page-viewport{width:100%;min-height:100vh;background:#fff4f6;position:relative;overflow-x:hidden}.canvas-spacer{position:relative;width:100%}.canvas-stage{position:absolute;top:0;left:0;transform-origin:top left;will-change:transform}.canvas-element{position:absolute;transform-origin:center center;pointer-events:auto}.canvas-element.clickable{cursor:pointer}.qt-tran{opacity:0}.qt-tran.qt-animated{opacity:1}.qt-fadeInUp{animation:qtFadeInUp 1s ease both}.qt-fadeIn{animation:qtFadeIn 1.2s ease both}.qt-fadeInRight{animation:qtFadeInRight 1s ease both}.qt-fadeInLeft{animation:qtFadeInLeft 1s ease both}.qt-fadeInDown{animation:qtFadeInDown 1s ease both}.qt-zoomIn{animation:qtZoomIn 1s ease both}.qt-bounceIn{animation:qtBounceIn 1s ease both}.qt-flash{animation:qtFlash 1.6s ease infinite}.qt-pulse{animation:qtPulse 2s ease infinite}.qt-rotate{animation:qtRotate 3s linear infinite}.qt-rollIn{animation:qtRollIn 1.2s ease both}.qt-flipInX{animation:qtFlipInX 1.2s ease both}.qt-flipInY{animation:qtFlipInY 1.2s ease both}.qt-slideInUp{animation:qtSlideInUp .9s ease both}.qt-slideInDown{animation:qtSlideInDown .9s ease both}@keyframes qtFadeInUp{0%{opacity:0;transform:translate3d(0,60px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes qtFadeIn{0%{opacity:0}to{opacity:1}}@keyframes qtFadeInRight{0%{opacity:0;transform:translate3d(60px,0,0)}to{opacity:1;transform:translateZ(0)}}@keyframes qtFadeInLeft{0%{opacity:0;transform:translate3d(-60px,0,0)}to{opacity:1;transform:translateZ(0)}}@keyframes qtFadeInDown{0%{opacity:0;transform:translate3d(0,-60px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes qtZoomIn{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}@keyframes qtBounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes qtFlash{0%,to{opacity:1}50%{opacity:.2}}@keyframes qtPulse{0%{transform:scale(1)}50%{transform:scale(1.08)}to{transform:scale(1)}}@keyframes qtRotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes qtRollIn{0%{opacity:0;transform:translate(-100%) rotate(-120deg)}to{opacity:1;transform:translate(0) rotate(0)}}@keyframes qtFlipInX{0%{transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px);opacity:1}}@keyframes qtFlipInY{0%{transform:perspective(400px) rotateY(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateY(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateY(10deg);opacity:1}80%{transform:perspective(400px) rotateY(-5deg)}to{transform:perspective(400px);opacity:1}}@keyframes qtSlideInUp{0%{transform:translate3d(0,100%,0);visibility:visible}to{transform:translateZ(0)}}@keyframes qtSlideInDown{0%{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translateZ(0)}}.qt-txt-flash{display:inline-block}.qt-txt-flash .t-flash{display:inline-block;animation:qtFlash 1.4s ease infinite}.qt-txt-flash .t-flash:nth-child(2n){animation-delay:.15s}.qt-txt-flash .t-flash:nth-child(3n){animation-delay:.3s}.qt-txt-flash .t-flash:nth-child(5n){animation-delay:.45s}.bottom-toolbar{position:fixed;left:0;right:0;bottom:0;z-index:900;display:flex;align-items:center;justify-content:space-between;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:#fffffff7;box-shadow:0 -2px 12px #0000000f;font-family:var(--font-body)}.toolbar-btn{flex:1;margin:0 6px;height:42px;border-radius:21px;display:flex;align-items:center;justify-content:center;gap:6px;font-size:15px;font-weight:600;color:#fff;background:linear-gradient(135deg,#ff405f,#ff617b);box-shadow:0 4px 12px #ff405f59}.toolbar-btn.secondary{background:#fff;color:#ff405f;border:1px solid #ffc4cf;box-shadow:none}.toolbar-btn svg{width:18px;height:18px}.music-btn{position:fixed;right:14px;top:44px;z-index:950;width:46px;height:46px;border-radius:50%;background:#f5f5f58c;box-shadow:0 1px 6px #0000001f;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.6)}.music-btn svg{width:22px;height:22px;fill:#ff405f}.music-btn.playing svg{animation:qtRotate 3s linear infinite}.video-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:#000000eb;display:flex;align-items:center;justify-content:center}.video-overlay video{width:100%;height:100%;object-fit:contain}.video-close{position:absolute;top:calc(16px + env(safe-area-inset-top));right:16px;width:36px;height:36px;border-radius:50%;background:#fff3;color:#fff;font-size:20px;display:flex;align-items:center;justify-content:center;z-index:10}.gift-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:980;background:#00000080;animation:qtFadeIn .3s ease both}.gift-panel{position:fixed;left:0;right:0;bottom:0;z-index:981;max-height:78vh;background:#fff;border-radius:16px 16px 0 0;overflow:hidden;display:flex;flex-direction:column;animation:qtSlideInUp .35s ease both}.gift-panel-head{padding:16px 16px 8px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #f2f2f2}.gift-panel-title{font-size:16px;font-weight:700;color:#ff405f}.gift-panel-tabs{display:flex;gap:4px}.gift-panel-tab{padding:4px 12px;border-radius:12px;font-size:12px;color:#666;background:#f6f6f6}.gift-panel-tab.active{color:#fff;background:#ff405f}.gift-panel-close{font-size:20px;color:#999;width:30px;height:30px}.gift-panel-sub{padding:10px 16px;font-size:12px;color:#999;border-bottom:1px solid #f7f7f7}.gift-grid{flex:1;overflow-y:auto;padding:12px;display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.gift-item{border:1px solid #f0f0f0;border-radius:10px;padding:10px 4px;display:flex;flex-direction:column;align-items:center;gap:4px}.gift-item.active{border-color:#ff405f;background:#fff4f6}.gift-item-icon{font-size:26px}.gift-item-name{font-size:11px;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.gift-item-price{font-size:11px;color:#ff405f}.gift-form{padding:12px 16px;border-top:1px solid #f2f2f2;display:flex;flex-direction:column;gap:10px}.gift-name-input{height:40px;border:1px solid #eee;border-radius:8px;padding:0 12px;font-size:14px;width:100%}.gift-anon{display:flex;align-items:center;justify-content:space-between;font-size:13px;color:#666}.gift-anon-switch{width:44px;height:24px;border-radius:12px;background:#ddd;position:relative;transition:background .2s}.gift-anon-switch.on{background:#ff405f}.gift-anon-switch:after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .2s}.gift-anon-switch.on:after{transform:translate(20px)}.gift-send-btn{height:44px;border-radius:22px;background:linear-gradient(135deg,#ff405f,#ff617b);color:#fff;font-size:15px;font-weight:600;box-shadow:0 4px 12px #ff405f4d}.gift-send-btn:disabled{opacity:.6}.gift-safe-note{text-align:center;font-size:11px;color:#bbb;padding-bottom:8px}.guest-form{display:flex;flex-direction:column;gap:14px;width:100%}.guest-input-row{position:relative}.guest-input{width:100%;height:44px;border:1px solid #f0c4cd;border-radius:10px;padding:0 14px 0 24px;font-size:15px;color:#333;background:#fff}.guest-input::placeholder{color:#bbb}.guest-input.required-mark:before{content:"*";color:#ff405f;position:absolute;left:-14px;top:50%;transform:translateY(-50%)}.guest-submit-btn{width:100%;height:46px;border-radius:23px;background:linear-gradient(135deg,#ff405f,#ff587e);color:#fff;font-size:16px;font-weight:600;box-shadow:0 6px 16px #ff405f59}.guest-submit-btn:disabled{opacity:.6}.guest-success{text-align:center;color:#ff405f;font-size:15px;padding:8px 0}.calendar-wrap{display:inline-block;background:#fff;border-radius:12px;padding:12px 10px;box-shadow:0 4px 16px #b2364a1f;border:1px solid #ffe3e8}.calendar-title{text-align:center;font-size:14px;font-weight:700;color:#b2364a;margin-bottom:8px}.calendar-grid{display:grid;grid-template-columns:repeat(7,32px);gap:2px;justify-content:center}.calendar-week{text-align:center;font-size:11px;color:#999;padding:2px 0}.calendar-day{text-align:center;font-size:12px;color:#333;padding:4px 0;border-radius:50%;width:28px;height:28px;line-height:20px;margin:auto}.calendar-day.weekend{color:#e06a7e}.calendar-day.today{background:#b2364a;color:#fff;font-weight:700}.calendar-day.event{background:#ff405f;color:#fff;font-weight:700}.countdown-wrap{display:flex;align-items:center;justify-content:center;gap:6px;font-family:var(--font-en)}.countdown-cell{background:#b2364a;color:#fff;border-radius:8px;min-width:44px;height:48px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4px 6px}.countdown-num{font-size:20px;font-weight:700;line-height:1}.countdown-label{font-size:9px;margin-top:2px;opacity:.9}.countdown-sep{color:#b2364a;font-size:20px;font-weight:700}.text-element{white-space:pre-wrap;word-break:break-word}
