.tf{color:#1a1816;font-family:Poppins,Noto Sans TC,system-ui,sans-serif}.tf button{font-family:inherit}.tf a{color:inherit}.tf-floor{flex-direction:column;gap:16px;padding:16px 16px 40px;display:flex}@media (width>=768px){.tf-floor{padding:24px 0 40px}}.tf-floor.tf-shop{padding:12px 20px 40px}.tf-play{z-index:60;justify-content:center;transition:background .4s;display:flex;position:fixed;inset:0;overflow:hidden}.tf-play-col{flex-direction:column;width:100%;max-width:560px;min-height:100%;display:flex;position:relative}.tf-card{background:#fff;border-radius:16px;flex-direction:column;gap:14px;padding:20px;display:flex}.tf-tile{color:#1a1816;text-align:left;background:#fff;border:.5px solid #eae3db;border-radius:16px;flex-direction:column;justify-content:space-between;gap:10px;min-height:120px;padding:16px;text-decoration:none;display:flex}.tf-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.tf-muted{color:#6e6862}.tf-btn{color:#fff;cursor:pointer;background:#715b83;border:none;border-radius:999px;justify-content:center;align-items:center;gap:8px;min-height:52px;padding:0 20px;font-size:16px;font-weight:700;text-decoration:none;display:flex}.tf-btn:disabled{opacity:.6;cursor:default}.tf-btn-ghost{color:#5a4468;background:#fff;border:1.5px solid #d6c9e0;font-weight:600}.tf a.tf-btn,.tf a.tf-btn:hover{color:#fff}.tf a.tf-btn-ghost,.tf a.tf-btn-ghost:hover{color:#5a4468}.tf-round{cursor:pointer;background:#fff;border:none;border-radius:999px;flex:none;justify-content:center;align-items:center;width:44px;height:44px;padding:0;display:flex}.tf-chip{white-space:nowrap;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:700}.tf-press{transition:transform .15s cubic-bezier(.34,1.56,.64,1),filter .15s}.tf-press:hover{filter:brightness(1.06)}.tf-press:active{transform:scale(.95)}.tf-in{animation:.5s cubic-bezier(.2,.9,.3,1.25) both tfIn}@keyframes tfIn{0%{opacity:0;transform:translateY(18px)scale(.97)}to{opacity:1;transform:none}}.tf-bar-grow{transform-origin:0;animation:1s cubic-bezier(.34,1.56,.64,1) .3s both tfBar}@keyframes tfBar{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.tf-ic *{transform-box:fill-box;transform-origin:50%}.tf-ic-flip{animation:3.4s ease-in-out infinite tfIcFlip}@keyframes tfIcFlip{0%,68%{transform:scaleX(1)}76%{transform:scaleX(0)}84%,to{transform:scaleX(1)}}.tf-ic-bob{animation:2.8s cubic-bezier(.34,1.56,.64,1) infinite tfIcBob}@keyframes tfIcBob{0%,60%,to{transform:none}70%{transform:translateY(-4px)rotate(-10deg)}82%{transform:translateY(1px)rotate(6deg)}}.tf-ic-page{animation:3.6s ease-in-out infinite tfIcPage;transform-origin:0!important}@keyframes tfIcPage{0%,62%{transform:scaleX(1)}80%{transform:scaleX(-1)}92%,to{transform:scaleX(1)}}.tf-ic-zap{animation:2.2s ease-in-out infinite tfIcZap}.tf-ic-match{animation:3s cubic-bezier(.34,1.56,.64,1) infinite tfIcMatch}@keyframes tfIcMatch{0%,60%,to{transform:none}70%,82%{transform:translate(-5px)rotate(-6deg)}}@keyframes tfIcZap{0%,70%,to{opacity:1;transform:scale(1)}76%{transform:scale(1.25)rotate(-8deg)}82%{opacity:.5}88%{opacity:1;transform:scale(1)}}.tf-ring{animation:2.2s ease-out infinite tfRing}@keyframes tfRing{0%,60%{opacity:0;transform:scale(1)}70%{opacity:.55}to{opacity:0;transform:scale(1.7)}}.tf-wave1{animation:1.8s ease-in-out infinite tfWave}.tf-wave2{animation:1.8s ease-in-out .25s infinite tfWave}@keyframes tfWave{0%,to{opacity:.25}40%{opacity:1}}.tf-climb{animation:3s linear infinite tfClimb}@property --tf-dot{syntax:"<length>";inherits:false;initial-value:1.8px}.tf-dots-pulse,body.tf-dots-pulse{background:radial-gradient(circle, #d6c9e0 var(--tf-dot), transparent calc(var(--tf-dot) + .3px)) 0 0 / 22px 22px, #f1e9f7;animation:3.6s ease-in-out infinite tfDotPulse}@keyframes tfDotPulse{0%,to{--tf-dot:1.3px}50%{--tf-dot:2.8px}}@keyframes tfClimb{to{background-position:0 -16px}}.tf-bar-fill{transition:width .55s cubic-bezier(.34,1.56,.64,1)}.tf-dot{border-radius:999px;transition:width .35s cubic-bezier(.34,1.56,.64,1),height .35s cubic-bezier(.34,1.56,.64,1),background .2s}.tf-pop-a{animation:.45s cubic-bezier(.34,1.56,.64,1) tfPopA}.tf-pop-b{animation:.45s cubic-bezier(.34,1.56,.64,1) tfPopB}@keyframes tfPopA{0%{transform:scale(1)}40%{transform:scale(1.5,.7)}70%{transform:scale(.85,1.2)}to{transform:scale(1)}}@keyframes tfPopB{0%{transform:scale(1)}40%{transform:scale(1.5,.7)}70%{transform:scale(.85,1.2)}to{transform:scale(1)}}.tf-wob-a{animation:.5s ease-in-out tfWobA}.tf-wob-b{animation:.5s ease-in-out tfWobB}@keyframes tfWobA{25%{transform:rotate(-14deg)scale(.9)}50%{transform:rotate(10deg)}75%{transform:rotate(-5deg)}}@keyframes tfWobB{25%{transform:rotate(-14deg)scale(.9)}50%{transform:rotate(10deg)}75%{transform:rotate(-5deg)}}.tf-run-in{animation:.35s cubic-bezier(.34,1.56,.64,1) both tfRunIn}@keyframes tfRunIn{0%{opacity:0;transform:translate(-8px)scale(.8)}to{opacity:1;transform:none}}.tf-flash-a{animation:.55s ease-out tfFlashA}.tf-flash-b{animation:.55s ease-out tfFlashB}@keyframes tfFlashA{0%{opacity:0}20%{opacity:.28}to{opacity:0}}@keyframes tfFlashB{0%{opacity:0}20%{opacity:.28}to{opacity:0}}.tf-scene{perspective:1100px}.tf-flip{width:100%;height:100%;transform-style:preserve-3d;cursor:pointer;color:inherit;background:0 0;border:none;padding:0;transition:transform .5s cubic-bezier(.3,1.4,.5,1);display:block;position:relative}.tf-flip.on{transform:rotateY(180deg)}.tf-face{backface-visibility:hidden;box-sizing:border-box;border-radius:20px;position:absolute;inset:0}.tf-face.back{transform:rotateY(180deg)}.tf-deal{animation:.45s cubic-bezier(.2,.9,.3,1.25) both tfDeal}@keyframes tfDeal{0%{opacity:0;transform:translateY(60px)scale(.9)rotate(-3deg)}to{opacity:1;transform:none}}.tf-fly-right{animation:.34s cubic-bezier(.5,0,.9,.4) forwards tfFlyR}.tf-fly-left{animation:.34s cubic-bezier(.5,0,.9,.4) forwards tfFlyL}@keyframes tfFlyR{to{opacity:0;transform:translate(140%)rotate(22deg)}}@keyframes tfFlyL{to{opacity:0;transform:translate(-140%)rotate(-22deg)}}.tf-rise{animation:.5s cubic-bezier(.2,.9,.3,1.2) both tfRise}@keyframes tfRise{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}.tf-oops{animation:.5s ease-in-out tfOops}@keyframes tfOops{15%{transform:translate(-10px)rotate(-2deg)}35%{transform:translate(9px)rotate(2deg)}55%{transform:translate(-6px)}75%{transform:translate(3px)}}.tf-good{animation:.45s cubic-bezier(.34,1.56,.64,1) tfGood}@keyframes tfGood{40%{transform:scale(1.08)}}.tf-word-in{animation:.4s cubic-bezier(.2,.9,.3,1.25) .15s both tfWordIn}@keyframes tfWordIn{0%{opacity:0;transform:translate(110%)rotate(8deg)}to{opacity:1;transform:none}}.tf-burst{animation:.7s ease-out forwards tfBurstRing}@keyframes tfBurstRing{0%{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(2.6)}}.tf-sheet{animation:.38s cubic-bezier(.2,.9,.3,1.15) both tfSheet}@keyframes tfSheet{0%{transform:translateY(110%)}to{transform:none}}.tf-cel-in{animation:.6s cubic-bezier(.2,.9,.3,1.3) both tfCelIn}@keyframes tfCelIn{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}.tf-big-dot{animation:1.2s cubic-bezier(.34,1.56,.64,1) both tfBigDot}@keyframes tfBigDot{0%{transform:scale(0)}50%{transform:scale(1.25)}70%{transform:scale(.92)}to{transform:scale(1)}}.tf-confetti{border-radius:999px;animation:1.6s cubic-bezier(.15,.8,.3,1) both tfBurst;position:absolute;top:150px;left:50%}@keyframes tfBurst{0%{opacity:1;transform:translate(-50%)scale(0)}55%{transform:translate(calc(-50% + var(--dx)), var(--dy)) scale(1);opacity:1}to{transform:translate(calc(-50% + var(--dx)), calc(var(--dy) + 220px)) scale(.7);opacity:0}}.tf-tick path{stroke-dasharray:24;stroke-dashoffset:24px;animation:.35s ease-out .12s forwards tfDraw}@keyframes tfDraw{to{stroke-dashoffset:0}}@media (prefers-reduced-motion:reduce){.tf-in,.tf-bar-grow,.tf-ic-flip,.tf-ic-bob,.tf-ic-page,.tf-ic-zap,.tf-ic-match,.tf-ring,.tf-wave1,.tf-wave2,.tf-word-in,.tf-burst,.tf-pop-a,.tf-pop-b,.tf-wob-a,.tf-wob-b,.tf-run-in,.tf-flash-a,.tf-flash-b,.tf-deal,.tf-fly-right,.tf-fly-left,.tf-rise,.tf-sheet,.tf-cel-in,.tf-big-dot,.tf-oops,.tf-good{animation:.2s ease-out both tfFade}@keyframes tfFade{0%{opacity:0}to{opacity:1}}.tf-fly-right,.tf-fly-left{animation:.2s ease-out forwards tfFadeOut}@keyframes tfFadeOut{to{opacity:0}}.tf-confetti{display:none}.tf-climb,.tf-dots-pulse{animation:none}.tf-flip,.tf-bar-fill,.tf-dot,.tf-press,.tf-floor,.tf-play{transition:none}.tf-tick path{stroke-dashoffset:0;animation:none}}
