*{box-sizing:border-box;margin:0;padding:0}body{touch-action:none;background:#fde4e3;font-family:PingFang SC,Microsoft YaHei,sans-serif;overflow:hidden}.container{width:100%;height:100vh;position:relative;overflow:hidden}.slide{opacity:0;will-change:transform,opacity;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100vh;transition:transform .6s cubic-bezier(.4,0,.2,1),opacity .6s;display:flex;position:absolute;top:0;left:0;transform:translateY(100%)}.slide.active{opacity:1;z-index:10;transform:translateY(0)}.slide.prev{opacity:0;transform:translateY(-100%)}.loading-screen{z-index:200;background:linear-gradient(135deg,#da4153 0%,#ff6b7a 100%);justify-content:center;align-items:center;width:100%;height:100vh;display:flex;position:fixed;top:0;left:0}.loading-content{text-align:center;color:#fff;flex-direction:column;align-items:center;gap:1.5rem;display:flex}.loading-taffy{filter:drop-shadow(0 10px 30px #0000004d);width:clamp(150px,40vw,200px);height:auto;animation:1.5s ease-in-out infinite loadingBounce}@keyframes loadingBounce{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-20px)scale(1.05)}}.loading-spinner{border:4px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:50px;height:50px;animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-text{text-shadow:0 2px 10px #0000004d;font-size:clamp(1rem,4vw,1.3rem);font-weight:600}.loading-dots{gap:.5rem;display:flex}.loading-dots span{background:#fff;border-radius:50%;width:10px;height:10px;animation:1.4s ease-in-out infinite dotPulse}.loading-dots span:first-child{animation-delay:0s}.loading-dots span:nth-child(2){animation-delay:.2s}.loading-dots span:nth-child(3){animation-delay:.4s}@keyframes dotPulse{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1.2)}}.error-screen{z-index:200;background:linear-gradient(135deg,#fde4e3 0%,#ffb3ba 100%);justify-content:center;align-items:center;width:100%;height:100vh;display:flex;position:fixed;top:0;left:0}.error-content{text-align:center;max-width:500px;padding:2rem}.error-taffy{width:clamp(150px,40vw,200px);height:auto;margin-bottom:1.5rem;animation:.5s ease-in-out shake}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-10px)}75%{transform:translate(10px)}}.error-title{color:#da4153;margin-bottom:1rem;font-size:clamp(2rem,6vw,3rem);font-weight:900}.error-text{color:#666;margin-bottom:2rem;font-size:clamp(1rem,4vw,1.3rem);line-height:1.6}.retry-button{color:#fff;cursor:pointer;background:linear-gradient(135deg,#da4153,#ff6b7a);border:none;border-radius:50px;padding:1rem 2rem;font-size:clamp(1rem,4vw,1.2rem);font-weight:700;transition:all .3s;box-shadow:0 5px 20px #da41534d}.retry-button:hover{transform:translateY(-2px);box-shadow:0 8px 25px #da415366}.retry-button:active{transform:translateY(0)}.bg-decoration{z-index:0;width:100%;height:100%;position:absolute;overflow:hidden}.floating-emoji{opacity:.15;animation:3s ease-in-out infinite float;position:absolute}@keyframes float{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(-20px)rotate(5deg)}}.slide-1{background:linear-gradient(135deg,#da4153 0%,#ff6b7a 100%)}.slide-1 .main-title{color:#fff;text-align:center;text-shadow:0 4px 20px #0000004d;margin-bottom:1rem;font-size:clamp(1.5rem,6vw,3rem);font-weight:900;animation:.8s ease-out .3s both titlePop}@keyframes titlePop{0%{opacity:0;transform:scale(0)}50%{transform:scale(1.1)}to{opacity:1;transform:scale(1)}}.slide-1 .subtitle{color:#fff;margin-bottom:2rem;font-size:clamp(1rem,4vw,1.5rem);animation:.8s ease-out .6s both fadeInUp}.slide-1 .taffy-main{filter:drop-shadow(0 10px 30px #0000004d);width:clamp(150px,40vw,250px);height:auto;transform:scale(1.1)}.slide-1 .taffy-main-wrapper{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:radial-gradient(circle at 30% 20%,#fffc,#fff0),linear-gradient(145deg,#ffffff14,#ffffff05);border-radius:50%;justify-content:center;align-items:center;width:clamp(160px,42vw,270px);height:clamp(160px,42vw,270px);margin:0 auto 1.5rem;display:flex;position:relative;overflow:hidden;box-shadow:0 25px 35px #0003,inset 0 0 60px #fff3}.slide-1 .taffy-main-wrapper:after{content:"";opacity:.6;filter:blur(12px);background:radial-gradient(circle,#ffffff40,#da415359);border-radius:50%;position:absolute;inset:8%}@keyframes bounce{0%,to{transform:translateY(0)}25%{transform:translateY(-20px)}50%{transform:translateY(0)}75%{transform:translateY(-10px)}}@keyframes bounce2{0%{transform:scale(1.01)}25%{transform:scale(1.2)}50%{transform:scale(1.5)}75%{transform:scale(1.8)}to{transform:scale(1.8)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.swipe-hint{color:#fff;font-size:.9rem;animation:2s ease-in-out infinite pulse;position:absolute;bottom:2rem}@keyframes pulse{0%,to{opacity:.6;transform:translateY(0)}50%{opacity:1;transform:translateY(-5px)}}.slide-2{background:linear-gradient(135deg,#fde4e3 0%,#ffc7ce 100%)}.stat-card{background:#fff;border-radius:30px;width:90%;max-width:500px;padding:2.5rem 2rem;position:relative;overflow:hidden;box-shadow:0 20px 60px #da415333}.stat-card:before{content:"";background:radial-gradient(circle,#da41530d 0%,#0000 70%);width:200%;height:200%;animation:20s linear infinite rotate;position:absolute;top:-50%;right:-50%}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.stat-title{color:#da4153;z-index:1;margin-bottom:1.5rem;font-size:clamp(1.3rem,5vw,2rem);font-weight:700;position:relative}.stat-content{z-index:1;position:relative}.big-number{color:#da4153;text-shadow:2px 2px #fde4e3;margin:1rem 0;font-size:clamp(3rem,12vw,5rem);font-weight:900;line-height:1}.stat-text{color:#666;margin:.5rem 0;font-size:clamp(1rem,4vw,1.3rem);line-height:1.8}.highlight{color:#da4153;font-size:1.2em;font-weight:700}.taffy-decoration{width:clamp(80px,20vw,120px);height:auto;position:absolute}.taffy-top-right{top:-15px;right:-15px;transform:rotate(15deg)}.taffy-bottom-left{bottom:-15px;left:-15px;transform:rotate(-15deg)}.taffy-bottom-right{bottom:-5px;right:-5px;transform:rotate(-15deg)}.slide-3{background:linear-gradient(135deg,#da4153 0%,#c92a3d 100%)}.slide-3 .stat-card{background:#fffffff2}.badge{color:#fff;background:linear-gradient(135deg,#da4153,#ff6b7a);border-radius:50px;margin:1rem 0;padding:.5rem 1.5rem;font-size:clamp(.9rem,3vw,1.2rem);font-weight:700;display:inline-block;box-shadow:0 5px 15px #da415366}.slide-4{background:linear-gradient(135deg,#fde4e3 0%,#ffb3ba 100%)}.node-comparison{flex-wrap:wrap;justify-content:center;gap:1rem;margin-top:1.5rem;display:flex}.node-card{background:#fff;border-radius:20px;flex:1;min-width:140px;padding:1.5rem;position:relative;overflow:hidden;box-shadow:0 10px 30px #da415326}.node-card:after{content:"";background:linear-gradient(90deg,#da4153,#ff6b7a);width:100%;height:4px;position:absolute;bottom:0;left:0}.node-title{color:#666;margin-bottom:.5rem;font-size:clamp(.8rem,3vw,1rem)}.node-data{color:#da4153;font-size:clamp(1.5rem,6vw,2.5rem);font-weight:900}.slide-5{background:linear-gradient(135deg,#da4153 0%,#ff8fa3 100%)}.slide-5 .stat-card{background:#fff}.progress-ring{width:clamp(180px,60vw,300px);max-width:300px;height:clamp(180px,60vw,300px);max-height:300px;margin:2rem auto;position:relative}.progress-ring svg{aspect-ratio:1;width:100%;height:100%;transform:rotate(-90deg)}.progress-ring-bg{fill:none;stroke:#fde4e3;stroke-width:10px}.progress-ring-fill{fill:none;stroke:url(#gradient);stroke-width:10px;stroke-linecap:round;stroke-dasharray:880;stroke-dashoffset:880px;transition:stroke-dashoffset 2s ease-out .5s}.progress-text{text-align:center;position:absolute;top:55%;left:50%;transform:translate(-50%,-50%)}.progress-number{color:#da4153;font-size:clamp(2.5rem,10vw,4rem);font-weight:900;line-height:1}.progress-label{color:#666;margin-top:.5rem;font-size:clamp(.9rem,3vw,1.2rem)}.slide-6{background:linear-gradient(135deg,#fde4e3 0%,#ffc4cc 100%)}.expense-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem;width:100%;max-width:500px;margin-top:1.5rem;display:grid}.expense-item{text-align:center;background:#fff;border-radius:20px;padding:1.5rem 1rem;box-shadow:0 5px 20px #da415326}.expense-label{color:#666;margin-bottom:.5rem;font-size:clamp(.8rem,3vw,1rem)}.expense-value{color:#da4153;font-size:clamp(1.3rem,5vw,2rem);font-weight:900}.expense-unit{color:#999;font-size:clamp(.8rem,3vw,1rem)}.slide-7{background:linear-gradient(135deg,#da4153 0%,#ff4d6d 100%);padding:2rem 1rem}.not-send-shake{animation:1.5s ease-in-out infinite notSendShake;display:inline-block}@keyframes notSendShake{0%,to{transform:rotate(0)translateY(0)}25%{transform:rotate(-2deg)translateY(-2px)}50%{transform:rotate(2deg)translateY(1px)}75%{transform:rotate(-1deg)translateY(-1px)}}.wishes-content{text-align:center;color:#fff;z-index:1;flex-direction:column;align-items:center;gap:1rem;width:90%;max-width:600px;display:flex;position:relative}.wishes-taffy{filter:drop-shadow(0 8px 25px #00000040);width:clamp(120px,30vw,180px);height:auto;margin-bottom:.5rem;animation:3s ease-in-out infinite rotateFloat}@keyframes rotateFloat{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(-15px)rotate(5deg)}}.wishes-title{text-shadow:0 4px 20px #0000004d;letter-spacing:2px;margin-bottom:1rem;font-size:clamp(1.8rem,6vw,2.5rem);font-weight:900}.wishes-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff26;border:2px solid #fff3;border-radius:25px;width:100%;padding:1.8rem 1.5rem;box-shadow:0 10px 40px #0003}.wishes-text{text-shadow:0 2px 8px #0003;margin-bottom:1.2rem;font-size:clamp(1rem,3.5vw,1.3rem);line-height:1.8}.wishes-highlight{color:#fde4e3;text-shadow:0 0 20px #fde4e399;font-size:1.1em;font-weight:800}.wishes-decoration{color:#fde4e3;justify-content:center;align-items:center;gap:1rem;margin-top:1rem;font-size:clamp(.9rem,3.5vw,1.2rem);font-weight:700;display:flex}.wishes-decoration span:first-child,.wishes-decoration span:last-child{font-size:1.5em;animation:1.5s ease-in-out infinite sparkle}@keyframes sparkle{0%,to{opacity:1;transform:scale(1)rotate(0)}50%{opacity:.8;transform:scale(1.2)rotate(180deg)}}.slide-8{background:linear-gradient(135deg,#fde4e3 0%,#ffb3c1 100%);padding:2rem 1rem}.thank-you-content{z-index:1;justify-content:center;align-items:center;width:90%;max-width:550px;display:flex;position:relative}.thank-you-card{text-align:center;background:#fffffffa;border-radius:30px;flex-direction:column;gap:1rem;padding:2rem 1.5rem;display:flex;position:relative;overflow:hidden;box-shadow:0 20px 60px #da41534d}.thank-you-card:before{content:"";background:linear-gradient(90deg,#da4153,#ff6b7a,#da4153) 0 0/200% 100%;height:6px;animation:3s ease-in-out infinite gradientShift;position:absolute;top:0;left:0;right:0}@keyframes gradientShift{0%,to{background-position:0%}50%{background-position:100%}}.thank-you-taffy{filter:drop-shadow(0 8px 20px #da415333);width:clamp(100px,25vw,140px);height:auto;margin-bottom:.5rem;animation:2s ease-in-out infinite heartBeat}@keyframes heartBeat{0%,to{transform:scale(1)}10%,30%{transform:scale(1.05)}20%,40%{transform:scale(1)}}.thank-you-title{flex-direction:column;align-items:center;gap:.6rem;margin-bottom:1rem;display:flex}.title-line{color:#da4153;letter-spacing:1px;font-size:clamp(1.6rem,5.5vw,2.2rem);font-weight:900}.title-decoration{color:#ff6b7a;letter-spacing:3px;font-size:.9rem}.thank-you-message{background:linear-gradient(135deg,#fde4e3 0%,#ffccd5 100%);border-radius:20px;margin-bottom:1rem;padding:1.5rem 1.2rem}.message-text{color:#666;text-align:center;justify-content:center;align-items:center;gap:.6rem;margin-bottom:1rem;font-size:clamp(.9rem,3.2vw,1.1rem);line-height:1.6;display:flex}.message-text:last-of-type{margin-bottom:0}.message-icon{flex-shrink:0;font-size:1.3em}.wishes-box{background:#fff;border-radius:15px;margin-top:1rem;padding:1.2rem;box-shadow:0 4px 15px #da415326}.wishes-box-title{color:#da4153;margin-bottom:.8rem;font-size:clamp(.95rem,3.2vw,1.15rem);font-weight:700}.wishes-list{flex-wrap:wrap;justify-content:center;align-items:center;gap:.6rem;display:flex}.wish-item{color:#da4153;padding:.4rem .8rem;font-size:clamp(1.1rem,4vw,1.4rem);font-weight:800}.wish-divider{color:#da4153;opacity:.5;font-size:clamp(.9rem,3.5vw,1.2rem)}.thank-you-taffy-group{flex-wrap:wrap;justify-content:center;gap:.8rem;margin-top:1rem;display:flex}.thank-you-taffy-group img{width:clamp(60px,15vw,90px);height:auto;animation:.6s ease-out both popIn}.thank-you-taffy-group img:first-child{animation-delay:.1s}.thank-you-taffy-group img:nth-child(2){animation-delay:.2s}.thank-you-taffy-group img:nth-child(3){animation-delay:.3s}.thank-you-taffy-group img:nth-child(4){animation-delay:.4s}.taffy_bottom{width:15%;height:auto}.coupon-card{background:#fff;border-radius:30px;width:100%;max-width:500px;padding:2.5rem 2rem;position:relative;overflow:hidden;box-shadow:0 20px 60px #da415340}.coupon-card:before{content:"";background:radial-gradient(circle,#da41530d 0%,#0000 70%);width:200%;height:200%;animation:20s linear infinite rotate;position:absolute;top:-50%;right:-50%}.coupon-title{color:#da4153;text-align:center;z-index:1;margin-bottom:.5rem;font-size:clamp(1.5rem,6vw,2.2rem);font-weight:800;position:relative}.coupon-subtitle{color:#666;text-align:center;z-index:1;margin-bottom:2rem;font-size:clamp(.9rem,3.5vw,1.1rem);position:relative}.coupon-content{z-index:1;position:relative}.coupon-display{text-align:center;background:linear-gradient(135deg,#fde4e3 0%,#ffccd5 100%);border:3px dashed #da4153;border-radius:20px;margin-bottom:1.5rem;padding:1.5rem}.coupon-label{color:#999;text-transform:uppercase;letter-spacing:1px;margin-bottom:.8rem;font-size:clamp(.8rem,3vw,1rem)}.coupon-code{color:#da4153;letter-spacing:2px;background:#fff;border-radius:12px;margin:.5rem 0;padding:.8rem 1.5rem;font-family:Courier New,monospace;font-size:clamp(1.3rem,5vw,1.8rem);font-weight:900;display:inline-block;box-shadow:0 4px 15px #da415333}.coupon-desc{color:#da4153;margin-top:.8rem;font-size:clamp(.8rem,3vw,.95rem);font-weight:600}.copy-button{color:#fff;cursor:pointer;background:linear-gradient(135deg,#da4153,#ff6b7a);border:none;border-radius:50px;width:100%;margin-bottom:1.5rem;padding:1rem 2rem;font-size:clamp(1rem,4vw,1.2rem);font-weight:700;transition:all .3s;box-shadow:0 5px 20px #da41534d}.copy-button:hover{transform:translateY(-2px);box-shadow:0 8px 25px #da415366}.copy-button:active{transform:translateY(0)}.coupon-info{flex-wrap:wrap;justify-content:space-around;gap:1rem;margin-bottom:1rem;display:flex}.info-item{color:#666;flex-direction:column;align-items:center;gap:.3rem;font-size:clamp(.8rem,3vw,.95rem);display:flex}.info-icon{font-size:clamp(1.3rem,5vw,1.8rem)}.coupon-footer{color:#999;text-align:center;z-index:1;font-size:clamp(.85rem,3.5vw,1rem);line-height:1.6;position:relative}.progress-dots{z-index:100;flex-direction:column;gap:.8rem;display:none;position:fixed;top:50%;right:.5rem;transform:translateY(-50%)}#follow-taffy{justify-content:space-between;gap:5px;width:100%;display:flex;position:relative;bottom:-20px}@media screen and (min-width:600px){.progress-dots{display:flex;right:2rem}.node-card{min-width:140px;max-width:100%}}@media screen and (min-width:768px){#follow-taffy{bottom:-40px}}.dot{cursor:pointer;background:#fff6;border-radius:50%;width:10px;height:10px;transition:all .3s}.dot.active{background:#fff;transform:scale(1.5)}.scroll-hint{z-index:20;flex-direction:column;align-items:center;gap:.5rem;animation:1s ease-in-out infinite bounceHint;display:flex;position:absolute;bottom:2rem;left:50%;transform:translate(-50%)}.scroll-hint-arrow{font-size:1.5rem;animation:1.5s ease-in-out infinite arrowBounce}.scroll-hint-text{color:#ffffffe6;text-shadow:0 2px 4px #0003;white-space:nowrap;font-size:.9rem}.scroll-hint.emphasize{border-radius:50px;padding:1rem 1.5rem;animation:1s ease-in-out infinite pulseEmphasis}.scroll-hint.emphasize .scroll-hint-text{color:#fff;font-size:1rem;font-weight:700}.scroll-hint.emphasize .scroll-hint-arrow{font-size:1.8rem}@keyframes bounceHint{0%,to{transform:translate(-50%)translateY(0)}50%{transform:translate(-50%)translateY(-8px)}}@keyframes arrowBounce{0%,to{transform:translateY(0)}50%{transform:translateY(5px)}}@keyframes pulseEmphasis{0%,to{transform:translate(-50%)scale(1);box-shadow:0 4px 20px #da415366}50%{transform:translate(-50%)scale(1.05);box-shadow:0 8px 30px #da415399}}.heatmap-container{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffe6;border-radius:24px;width:100%;max-width:800px;margin:0 auto;padding:1.5rem;box-shadow:0 10px 30px #0000001a}.heatmap-grid{grid-template-rows:repeat(7,1fr);grid-template-columns:repeat(53,1fr);gap:3px;margin-top:1rem;display:grid}.heatmap-cell{aspect-ratio:1;border-radius:2px;width:100%;transition:transform .2s}.heatmap-cell:hover{z-index:10;transform:scale(1.5);box-shadow:0 0 5px #0003}.level-0{background-color:#ebedf0}.level-1{background-color:#9be9a8}.level-2{background-color:#40c463}.level-3{background-color:#30a14e}.level-4{background-color:#216e39}.heatmap-legend{color:#666;justify-content:flex-end;align-items:center;gap:8px;margin-top:1rem;font-size:.75rem;display:flex}.legend-cell{border-radius:2px;width:12px;height:12px}@media (max-width:768px){.heatmap-container{padding:1rem;overflow-x:auto}.heatmap-grid{gap:2px;min-width:600px}.heatmap-cell{border-radius:1px}}.heatmap-container-new{background:#fffc;border-radius:16px;width:100%;max-width:800px;margin:1rem auto;padding:1rem;box-shadow:0 4px 15px #0000000d}.react-calendar-heatmap .color-empty{fill:#ebedf0}.react-calendar-heatmap .color-github-1{fill:#9be9a8}.react-calendar-heatmap .color-github-2{fill:#40c463}.react-calendar-heatmap .color-github-3{fill:#30a14e}.react-calendar-heatmap .color-github-4{fill:#216e39}.react-calendar-heatmap text{fill:#666;font-size:10px}.react-calendar-heatmap rect:hover{stroke:#555;stroke-width:1px}@media (max-width:768px){.heatmap-container-new{padding:.5rem;overflow-x:auto}.react-calendar-heatmap{min-width:600px}}.heatmap-legend-new{color:#666;justify-content:flex-end;align-items:center;gap:4px;margin-top:8px;font-size:12px;display:flex}.legend-box{border-radius:2px;width:12px;height:12px}.legend-box.color-empty{background-color:#ebedf0}.legend-box.color-github-1{background-color:#9be9a8}.legend-box.color-github-2{background-color:#40c463}.legend-box.color-github-3{background-color:#30a14e}.legend-box.color-github-4{background-color:#216e39}
