#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;-webkit-transform:rotate(3deg) translate(0px,-4px);-ms-transform:rotate(3deg) translate(0px,-4px);transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:solid 2px transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .spinner,.nprogress-custom-parent #nprogress .bar{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}@keyframes nprogress-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#app{min-height:100vh}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;touch-action:manipulation;-webkit-tap-highlight-color:transparent}body{font-family:var(--font-family);color:var(--color-text-primary);background-color:var(--color-bg-page);line-height:1.6;overflow-x:hidden;max-width:100vw;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-primary-hover)}img{max-width:100%;height:auto}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}.text-center{text-align:center}.text-right{text-align:right}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}button:not(.back-to-top-btn):not(.hamburger-btn):not(.mobile-close-btn){transition:transform .15s ease,box-shadow .15s ease}button:not(.back-to-top-btn):not(.hamburger-btn):not(.mobile-close-btn):active{transform:scale(.96)}.t-button{transition:transform .15s ease,box-shadow .15s ease,background-color .2s ease,border-color .2s ease}.t-button:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 2px 8px #00000014}.t-button:not(:disabled):active{transform:scale(.96) translateY(0);box-shadow:none}.like-btn-animate{position:relative;transition:color .2s ease}.like-btn-animate .like-icon{transition:transform .3s cubic-bezier(.34,1.56,.64,1)}.like-btn-animate.liked .like-icon{animation:heartBounce .4s cubic-bezier(.34,1.56,.64,1)}@keyframes heartBounce{0%{transform:scale(1)}30%{transform:scale(1.35)}50%{transform:scale(.9)}70%{transform:scale(1.15)}to{transform:scale(1)}}.like-count-bump{display:inline-block;animation:countBump .3s ease-out}@keyframes countBump{0%{transform:translateY(0);opacity:1}40%{transform:translateY(-4px);opacity:.8}to{transform:translateY(0);opacity:1}}.bookmark-animate{transition:color .2s ease}.bookmark-animate .bookmark-icon{transition:transform .4s cubic-bezier(.34,1.56,.64,1),color .2s ease}.bookmark-animate.bookmarked .bookmark-icon{animation:starPop .5s cubic-bezier(.34,1.56,.64,1)}@keyframes starPop{0%{transform:scale(1) rotate(0)}25%{transform:scale(.6) rotate(-15deg)}50%{transform:scale(1.3) rotate(10deg)}75%{transform:scale(.95) rotate(-5deg)}to{transform:scale(1) rotate(0)}}.price-shimmer{position:relative;overflow:hidden}.price-shimmer:after{content:"";position:absolute;top:0;left:-100%;width:60%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent);animation:priceShimmerSlide 2.5s infinite}@keyframes priceShimmerSlide{0%{left:-100%}to{left:200%}}.price-original-fadein{animation:originalPriceFadeIn .5s ease-out .2s both}@keyframes originalPriceFadeIn{0%{opacity:0;transform:translate(-4px)}to{opacity:1;transform:translate(0)}}.tab-slider-indicator{position:absolute;bottom:0;height:2px;background:var(--color-primary);border-radius:1px;transition:left .3s cubic-bezier(.4,0,.2,1),width .3s cubic-bezier(.4,0,.2,1)}.fun-loading-text{animation:loadingTextPulse 1.5s ease-in-out infinite}@keyframes loadingTextPulse{0%,to{opacity:.6}50%{opacity:1}}.state-transition-enter-active,.state-transition-leave-active{transition:opacity .3s ease,transform .3s ease}.state-transition-enter-from{opacity:0;transform:translateY(8px)}.state-transition-leave-to{opacity:0;transform:translateY(-8px)}.points-fly{position:absolute;font-size:14px;font-weight:700;color:var(--color-warning);pointer-events:none;animation:pointsFlyUp 1s ease-out forwards;z-index:10}@keyframes pointsFlyUp{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-40px) scale(1.2)}}.rank-up-badge{display:inline-flex;align-items:center;gap:2px;font-size:12px;font-weight:600;color:var(--color-success);animation:rankUpPulse .6s ease-out}@keyframes rankUpPulse{0%{transform:scale(.5);opacity:0}60%{transform:scale(1.2)}to{transform:scale(1);opacity:1}}.follow-btn-animate{transition:all .3s cubic-bezier(.4,0,.2,1)}.follow-btn-animate:active{transform:scale(.92)}.follow-btn-animate.following{animation:followPop .4s cubic-bezier(.34,1.56,.64,1)}@keyframes followPop{0%{transform:scale(1)}40%{transform:scale(1.1)}to{transform:scale(1)}}.purchase-success-confetti{position:fixed;top:50%;left:50%;pointer-events:none;z-index:9999}.confetti-piece{position:absolute;width:8px;height:8px;border-radius:2px;animation:confettiFall 1.5s ease-out forwards}@keyframes confettiFall{0%{opacity:1;transform:translate(0) rotate(0) scale(1)}to{opacity:0;transform:translate(var(--tx),var(--ty)) rotate(var(--tr)) scale(.3)}}.progress-complete-anim{position:relative}.progress-complete-anim:after{content:"✔";position:absolute;right:-24px;top:50%;transform:translateY(-50%);font-size:16px;color:var(--color-success);animation:checkMarkPop .5s cubic-bezier(.34,1.56,.64,1) .3s both}@keyframes checkMarkPop{0%{transform:translateY(-50%) scale(0);opacity:0}60%{transform:translateY(-50%) scale(1.3)}to{transform:translateY(-50%) scale(1);opacity:1}}img[loading=lazy]{background:var(--color-bg-secondarycontainer, #f0f2f5)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media(hover:none)and (pointer:coarse){.card-hover:hover{transform:none!important;box-shadow:var(--shadow-md)!important}.t-button--small{min-height:44px;min-width:44px}}:focus-visible{outline:2px solid var(--color-brand-500)!important;outline-offset:2px!important;border-radius:4px}:focus:not(:focus-visible){outline:none}.skip-to-content{position:absolute;top:-100%;left:16px;z-index:10000;padding:12px 20px;background:var(--color-brand-500);color:#fff;border-radius:var(--radius-md);font-weight:600;text-decoration:none;transition:top .2s ease}.skip-to-content:focus{top:16px}@media(prefers-contrast:high){:root{--color-text-primary: #000000;--color-text-secondary: #333333;--color-text-tertiary: #555555;--color-border: #000000;--color-bg-page: #ffffff;--color-bg-container: #ffffff}[data-theme=dark]{--color-text-primary: #ffffff;--color-text-secondary: #cccccc;--color-text-tertiary: #aaaaaa;--color-border: #ffffff;--color-bg-page: #000000;--color-bg-container: #111111}}.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}[data-theme]{transition:background-color .3s ease,color .3s ease,border-color .3s ease}.safe-top{padding-top:env(safe-area-inset-top)}.safe-bottom{padding-bottom:env(safe-area-inset-bottom)}.safe-left{padding-left:env(safe-area-inset-left)}.safe-right{padding-right:env(safe-area-inset-right)}.anim-gpu{will-change:transform,opacity}.scroll-touch{-webkit-overflow-scrolling:touch;overflow-y:auto}.h-scroll-touch{-webkit-overflow-scrolling:touch;overflow-x:auto;scroll-snap-type:x mandatory}.h-scroll-touch>*{scroll-snap-align:start}.no-select{-webkit-user-select:none;user-select:none}[data-theme=dark]{--color-bg-page: #0d1117;--color-bg-container: #161b22;--color-bg-secondarycontainer: #21262d;--color-bg-elevated: #1c2128;--color-text-primary: #e6edf3;--color-text-secondary: #8b949e;--color-text-placeholder: #484f58;--color-border: #30363d;--color-border-light: #21262d;--color-shadow: rgba(0, 0, 0, .3);--color-primary: #7c8cf8;--color-primary-hover: #9ba8ff;--color-primary-active: #5b6de0;--color-primary-light: rgba(124, 140, 248, .15);scrollbar-color:#30363d transparent}[data-theme=dark] ::-webkit-scrollbar-thumb{background:#30363d}[data-theme=dark] ::-webkit-scrollbar-track{background:transparent}@media(max-width:767px){.hide-mobile{display:none!important}}@media(min-width:768px){.show-mobile-only{display:none!important}}.mobile-safe-bottom{padding-bottom:calc(env(safe-area-inset-bottom,0px) + 16px)}.mobile-full-width{width:100vw;margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%)}:root{--color-brand-50: #eef2ff;--color-brand-100: #e0e7ff;--color-brand-200: #c7d2fe;--color-brand-300: #a5b4fc;--color-brand-400: #818cf8;--color-brand-500: #6366f1;--color-brand-600: #4f46e5;--color-brand-700: #4338ca;--color-brand-800: #3730a3;--color-brand-900: #312e81;--color-brand-950: #1e1b4b;--color-accent-400: #22d3ee;--color-accent-500: #06b6d4;--color-accent-600: #0891b2;--color-energy-400: #fb923c;--color-energy-500: #f97316;--color-energy-600: #ea580c;--color-success-500: #10b981;--color-warning-500: #f59e0b;--color-error-500: #ef4444;--color-primary: var(--color-brand-500);--color-primary-hover: var(--color-brand-400);--color-primary-active: var(--color-brand-600);--color-primary-light: var(--color-brand-50);--color-info: var(--color-brand-500);--bg-base: #f8fafc;--bg-surface: #ffffff;--bg-elevated: #ffffff;--bg-overlay: rgba(15, 23, 42, .6);--bg-hero-gradient: linear-gradient(135deg, #1e1b4b 0%, #1e3a5f 40%, #1a2744 100%);--bg-glass: rgba(255, 255, 255, .08);--bg-glass-border: rgba(255, 255, 255, .15);--color-bg-page: var(--bg-base);--color-bg-container: var(--bg-surface);--color-bg-secondarycontainer: #f0f2f5;--text-primary: #0f172a;--text-secondary: #475569;--text-tertiary: #94a3b8;--text-inverse: #f8fafc;--text-brand: #4f46e5;--text-link: #2563eb;--color-text-primary: var(--text-primary);--color-text-secondary: var(--text-secondary);--color-text-placeholder: var(--text-tertiary);--color-text-disabled: #DCDCDC;--border-subtle: #e2e8f0;--border-default: #cbd5e1;--border-strong: #94a3b8;--color-border: var(--border-default);--color-border-hover: var(--border-strong);--color-border-light: var(--border-subtle);--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--shadow-glow: 0 0 20px rgba(99, 102, 241, .3);--shadow-glow-accent: 0 0 30px rgba(6, 182, 212, .25);--radius-xs: 4px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--radius-round: 9999px;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-xxl: 48px;--font-cn: "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-en: "Inter", "SF Pro Display", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "SF Mono", monospace;--font-family: var(--font-cn);--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--text-4xl: 2.25rem;--text-5xl: 3rem;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 20px;--font-size-xl: 24px;--font-size-xxl: 32px;--leading-tight: 1.25;--leading-normal: 1.5;--leading-relaxed: 1.75;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .2s cubic-bezier(.4, 0, .2, 1);--transition-slow: .3s cubic-bezier(.4, 0, .2, 1);--transition-spring: .4s cubic-bezier(.34, 1.56, .64, 1);--transition-normal: var(--transition-base);--screen-xs: 375px;--screen-sm: 640px;--screen-md: 768px;--screen-lg: 1024px;--screen-xl: 1280px;--screen-2xl: 1536px;--cols-xs: 1;--cols-sm: 2;--cols-md: 2;--cols-lg: 3;--cols-xl: 4}[data-theme=dark]{--bg-base-dark: #0f172a;--bg-surface-dark: #1e293b;--bg-elevated-dark: #334155;--text-primary-dark: #f1f5f9;--text-secondary-dark: #cbd5e1;--bg-base: var(--bg-base-dark);--bg-surface: var(--bg-surface-dark);--bg-elevated: var(--bg-elevated-dark);--text-primary: var(--text-primary-dark);--text-secondary: var(--text-secondary-dark);--border-subtle: #334155;--border-default: #475569;--border-strong: #64748b;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .2);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .3), 0 2px 4px -1px rgba(0, 0, 0, .2);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4), 0 4px 6px -2px rgba(0, 0, 0, .3);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .5), 0 10px 10px -5px rgba(0, 0, 0, .4);--shadow-glow: 0 0 20px rgba(99, 102, 241, .5);--shadow-glow-accent: 0 0 30px rgba(6, 182, 212, .4);--color-primary: #4E83FF;--color-primary-hover: #6B9AFF;--color-primary-active: #3A6FD9;--color-primary-light: rgba(78, 131, 255, .12);--color-text-primary: var(--text-primary-dark);--color-text-secondary: var(--text-secondary-dark);--color-text-placeholder: #666666;--color-text-disabled: #555555;--color-bg-page: var(--bg-base-dark);--color-bg-container: var(--bg-surface-dark);--color-bg-secondarycontainer: #242424;--color-border: var(--border-default);--color-border-hover: var(--border-strong);--color-border-light: var(--border-subtle)}@keyframes neural-pulse{0%,to{opacity:.3;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}@keyframes data-flow{0%{background-position:0% 50%}to{background-position:200% 50%}}@keyframes node-connect{0%{stroke-dashoffset:100%;opacity:0}50%{opacity:1}to{stroke-dashoffset:0%;opacity:1}}@keyframes scan-line{0%{top:0;opacity:0}10%{opacity:1}90%{opacity:1}to{top:100%;opacity:0}}@keyframes badge-unlock{0%{transform:scale(0) rotate(-20deg);opacity:0}60%{transform:scale(1.2) rotate(5deg);opacity:1}to{transform:scale(1) rotate(0);opacity:1}}.page-enter-active{animation:page-enter .3s ease-out}.page-leave-active{animation:page-leave .15s ease-in}@keyframes page-enter{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes page-leave{0%{opacity:1}to{opacity:0}}.card-hover{transition:transform var(--transition-base),box-shadow var(--transition-base)}.card-hover:hover{transform:scale(1.02);box-shadow:var(--shadow-xl)}.btn-press{transition:transform .1s ease-out}.btn-press:active{transform:scale(.97)}.progress-complete{animation:progressCelebrate .8s ease-out;position:relative}@keyframes progressCelebrate{0%{transform:scaleX(1)}40%{transform:scaleX(1.03)}to{transform:scaleX(1)}}.progress-complete:after{content:"";position:absolute;inset:0;border-radius:inherit;animation:progressGlow 1.2s ease-out forwards;pointer-events:none}@keyframes progressGlow{0%{box-shadow:0 0 #10b98199}50%{box-shadow:0 0 20px 4px #10b98166}to{box-shadow:0 0 #10b98100}}.unlock-reveal{animation:unlockReveal .6s cubic-bezier(.34,1.56,.64,1)}@keyframes unlockReveal{0%{transform:perspective(600px) rotateY(90deg);opacity:0}to{transform:perspective(600px) rotateY(0);opacity:1}}.cert-unlock{animation:certUnlock 1s cubic-bezier(.34,1.56,.64,1)}@keyframes certUnlock{0%{transform:scale(.5) translateY(30px);opacity:0}50%{transform:scale(1.05)}to{transform:scale(1) translateY(0);opacity:1}}.cert-unlock:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:conic-gradient(from 0deg,transparent 0%,rgba(255,215,0,.3) 10%,transparent 20%);animation:certShine 2s linear forwards;pointer-events:none}@keyframes certShine{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.streak-flame{display:inline-flex;align-items:center;gap:4px}.streak-flame .flame-icon{font-size:20px;transition:transform .3s ease}.streak-flame .flame-count{font-weight:700;color:#e37318;font-size:16px}.streak-flame.active .flame-icon{animation:flameFlicker .8s ease-in-out infinite alternate}.streak-flame.inactive .flame-icon{opacity:.3;filter:grayscale(1)}@keyframes flameFlicker{0%{transform:scale(1) rotate(-2deg)}to{transform:scale(1.15) rotate(2deg)}}.sign-in-btn{transition:all .3s ease}.sign-in-btn:active{transform:scale(.92)}.sign-in-btn.signed{animation:signedPulse .5s ease-out}@keyframes signedPulse{0%{transform:scale(1)}30%{transform:scale(1.1)}to{transform:scale(1)}}.combo-badge{display:inline-flex;align-items:center;gap:2px;padding:2px 10px;background:linear-gradient(135deg,#ff6b6b,#ff8e53);color:#fff;border-radius:12px;font-size:12px;font-weight:700;animation:comboShake .5s ease-in-out}@keyframes comboShake{0%,to{transform:rotate(0)}20%{transform:rotate(-3deg)}40%{transform:rotate(3deg)}60%{transform:rotate(-2deg)}80%{transform:rotate(2deg)}}.achievement-toast{animation:toastSlideIn .5s cubic-bezier(.34,1.56,.64,1)}@keyframes toastSlideIn{0%{transform:translate(100%) scale(.8);opacity:0}to{transform:translate(0) scale(1);opacity:1}}.count-up{transition:all .6s ease-out}.heartbeat{animation:heartbeat 1.5s ease-in-out infinite}@keyframes heartbeat{0%,to{transform:scale(1)}15%{transform:scale(1.08)}30%{transform:scale(1)}45%{transform:scale(1.05)}}.shimmer{position:relative;overflow:hidden}.shimmer:after{content:"";position:absolute;top:0;left:-100%;width:50%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:shimmerSlide 2s infinite}@keyframes shimmerSlide{0%{left:-100%}to{left:200%}}.sign-in-points-fly{position:absolute;pointer-events:none;z-index:10;font-size:14px;font-weight:700;color:#e37318;animation:signInPointsFly 1.2s ease-out forwards}@keyframes signInPointsFly{0%{opacity:1;transform:translateY(0) scale(1)}50%{opacity:.8;transform:translateY(-20px) scale(1.15)}to{opacity:0;transform:translateY(-50px) scale(.9)}}.calendar-cell-unlock{animation:calendarCellGlow .6s ease-out}@keyframes calendarCellGlow{0%{transform:scale(.8);box-shadow:0 0 #00a87080}50%{transform:scale(1.05);box-shadow:0 0 12px 4px #00a8704d}to{transform:scale(1);box-shadow:0 0 #00a87000}}.qrcode-scan-pulse{position:relative}.qrcode-scan-pulse:before{content:"";position:absolute;inset:-8px;border:2px solid var(--color-primary);border-radius:12px;animation:qrcodePulse 2s ease-in-out infinite}@keyframes qrcodePulse{0%,to{opacity:0;transform:scale(.95)}50%{opacity:.6;transform:scale(1.05)}}.price-count-up{display:inline-block;transition:all .6s ease-out}.purchase-success-flash{animation:purchaseFlash .8s ease-out}@keyframes purchaseFlash{0%{background-color:#00a87026}to{background-color:transparent}}.cert-award{animation:certAward 1.2s cubic-bezier(.34,1.56,.64,1);position:relative}@keyframes certAward{0%{transform:scale(.3) rotate(-10deg);opacity:0}60%{transform:scale(1.08) rotate(2deg)}to{transform:scale(1) rotate(0);opacity:1}}.cert-award:after{content:"";position:absolute;inset:-4px;border-radius:inherit;background:conic-gradient(from 0deg,transparent 0%,rgba(255,215,0,.4) 15%,transparent 30%);animation:certAwardSpin 2s linear forwards;pointer-events:none;z-index:-1}@keyframes certAwardSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
