:root{--font-serif: "Songti SC", "STSong", "SimSun", "Noto Serif CJK SC", "Source Han Serif SC", serif}html,body{margin:0;height:100%;overflow:hidden;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}#loader{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;background:radial-gradient(circle at 50% 42%,#5c8a55,#2f4a2b 78%);transition:opacity .55s ease}#loader.done{opacity:0;pointer-events:none}.loader-text{margin:0;font-family:var(--font-serif);font-size:17px;letter-spacing:5px;text-indent:5px;color:#f2e8ca;text-shadow:0 2px 8px rgba(10,30,14,.5)}.loader-text span{display:inline-block;animation:load-bounce 1.15s ease-in-out infinite}.loader-text span:nth-child(2){animation-delay:.12s}.loader-text span:nth-child(3){animation-delay:.24s}.loader-text span:nth-child(4){animation-delay:.36s}.loader-bar{width:min(58vw,220px);height:5px;border-radius:3px;overflow:hidden;background:#ffffff2e;box-shadow:inset 0 1px 2px #0a1e0e59}.loader-fill{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#d8a75c,#f7e3a8);box-shadow:0 0 12px #ffe08cbf;transform:scaleX(0);transform-origin:left center;animation:load-boot 2.5s ease-out forwards}@keyframes load-boot{0%{transform:scaleX(0)}to{transform:scaleX(.12)}}@keyframes load-bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-7px)}}body{position:fixed;inset:0;background-color:#4a6e4c;background-image:var(--bg-url);background-position:center;background-size:cover;background-repeat:no-repeat}#app{position:fixed;inset:0}#stage{position:absolute;inset:0;width:100%;height:100%;display:block}#fg{position:fixed;inset:0;background-image:var(--fg-url);background-position:center;background-size:cover;background-repeat:no-repeat;pointer-events:none;z-index:10}.fly-tag{position:fixed;display:flex;flex-direction:column;align-items:center;transform:translate(-50%);will-change:transform;pointer-events:none;z-index:15;filter:drop-shadow(0 3px 6px rgba(20,40,15,.35))}.fly-bead{border-radius:50%;background:radial-gradient(circle at 35% 35%,#f7dd8f,#d9ab4e)}.fly-skirt{clip-path:polygon(37% 0,63% 0,100% 100%,0 100%);background:linear-gradient(#d0281e,#a81b12)}.fly-card{writing-mode:vertical-rl;display:flex;align-items:center;justify-content:center;box-sizing:border-box;white-space:nowrap;overflow:hidden;font-family:var(--font-serif);font-weight:600;line-height:1;letter-spacing:.12em;background:linear-gradient(180deg,#f2d69f,#d8a75c);color:#63430f;border:1px solid rgba(150,100,35,.85);border-radius:4px}.wish-flash{position:fixed;pointer-events:none;z-index:15}.wish-flash i{position:absolute;display:block}.flash-star{left:-44px;top:-44px;width:88px;height:88px;background:radial-gradient(circle,#fffce4,rgba(255,240,165,.5) 52%,transparent 72%);clip-path:polygon(50% 0%,57% 43%,100% 50%,57% 57%,50% 100%,43% 57%,0% 50%,43% 43%);filter:drop-shadow(0 0 16px rgba(255,242,175,1));animation:flash-star .9s ease-out both}.flash-ring{left:-28px;top:-28px;width:56px;height:56px;border-radius:50%;border:2.5px solid rgba(255,240,180,.95);box-shadow:0 0 26px #ffeba0d9,inset 0 0 14px #fff0b480;animation:flash-ping 1.05s ease-out both}@keyframes flash-star{0%{transform:scale(.15) rotate(-30deg);opacity:0}18%{opacity:1}45%{transform:scale(1.25) rotate(8deg);opacity:1}to{transform:scale(1.9) rotate(28deg);opacity:0}}@keyframes flash-ping{0%{transform:scale(.3);opacity:.95}to{transform:scale(2.8);opacity:0}}#veil{position:fixed;left:0;right:0;bottom:0;height:220px;background:linear-gradient(transparent,#0a1e0e8c);pointer-events:none;z-index:18}#dock{position:fixed;left:50%;bottom:calc(40px + var(--kb, 0px));transform:translate(-50%);width:156px;height:54px;border-radius:27px;overflow:hidden;cursor:pointer;z-index:20;font-family:var(--font-serif);background:linear-gradient(175deg,#fdf6e4,#f3e3bd);border:1px solid rgba(150,105,45,.55);box-shadow:0 10px 30px #0f281266,inset 0 1px #ffffffb3;transition:width .5s cubic-bezier(.3,.8,.25,1),height .5s cubic-bezier(.3,.8,.25,1),border-radius .5s cubic-bezier(.3,.8,.25,1),bottom .25s ease}#dock.open{width:min(86vw,340px);height:212px;border-radius:20px;cursor:default}#dock.shake{animation:shake .4s ease}#dock .btn-skin{position:absolute;inset:0;background:linear-gradient(180deg,#eec97e,#cf9a4b);opacity:1;transition:opacity .35s ease;pointer-events:none}#dock .btn-glow{position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 24px 4px #ffe08c8c inset;animation:breathe 2.8s ease-in-out infinite;transition:opacity .35s ease;pointer-events:none}#dock .btn-label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#5c3d14;font-size:19px;font-weight:700;letter-spacing:6px;text-indent:6px;opacity:1;transition:opacity .3s ease;pointer-events:none}#dock.open .btn-skin,#dock.open .btn-glow,#dock.open .btn-label{opacity:0;animation:none}#dock .wish-form{position:absolute;inset:0;display:flex;flex-direction:column;padding:16px 18px 14px;box-sizing:border-box;opacity:0;transition:opacity .35s ease .12s;pointer-events:none}#dock.open .wish-form{opacity:1;pointer-events:auto}.wish-form-head{display:flex;align-items:baseline;justify-content:space-between}.wish-form-title{font-size:14px;font-weight:700;color:#7a5a22;letter-spacing:3px}#wish-count{font-size:11px;color:#a58a55}#wish-input{flex:1;font-family:var(--font-serif);font-size:16px;line-height:1.7;padding:0;color:#4a3410;margin:8px 0 0;background:transparent;border:none;outline:none;resize:none;-webkit-user-select:text;user-select:text}#wish-input::placeholder{color:#b09a68}.wish-form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:8px}#wish-close{border:1px solid rgba(150,105,45,.5);background:transparent;color:#8a6a30;border-radius:18px;padding:8px 16px;font-family:inherit;font-size:13px;letter-spacing:2px;cursor:pointer}#wish-submit{border:none;background:linear-gradient(180deg,#e8b45f,#c98f3e);color:#4a3008;border-radius:18px;padding:8px 20px;font-family:inherit;font-size:13px;font-weight:700;letter-spacing:2px;cursor:pointer;box-shadow:0 4px 10px #5a3c0f59}#wish-submit:hover{filter:brightness(1.06)}#wish-submit:active{transform:translateY(1px)}@keyframes breathe{0%,to{opacity:.45}50%{opacity:.95}}@keyframes shake{0%,to{transform:translate(-50%)}20%{transform:translate(calc(-50% - 8px))}60%{transform:translate(calc(-50% + 8px))}}
