@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.loading-tip-fade{animation:fadeIn .35s ease-out both}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes bounce{0%,to{transform:translateY(0);opacity:.4}50%{transform:translateY(-6px);opacity:1}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes spin-pulse-width{0%,to{border-width:var(--spinner-stroke-min)}50%{border-width:var(--spinner-stroke-max)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.stream-cursor{background-image:linear-gradient(90deg,color-mix(in srgb,var(--accent) 40%,transparent) 25%,var(--accent) 50%,color-mix(in srgb,var(--accent) 40%,transparent) 75%);background-repeat:no-repeat;background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 1.1s linear infinite}@keyframes slideIn{0%{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:translateX(0)}}@keyframes promoShimmer{0%{transform:translate3d(-14%,0,0) rotate(8deg)}to{transform:translate3d(14%,0,0) rotate(8deg)}}@keyframes newChunk{0%{opacity:.3}to{opacity:1}}@keyframes fadeInChar{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}@keyframes charFadeIn{0%{opacity:0}to{opacity:1}}@keyframes cursorBlink{0%,to{opacity:1}50%{opacity:0}}@keyframes luday-blink{0%,to{opacity:1}50%{opacity:0}}@keyframes originalShimmer{0%,25%{transform:translateX(-180%)}75%,to{transform:translateX(260%)}}.original-badge{position:relative;display:inline-flex;align-items:center;background:linear-gradient(135deg,#ff5b4d,#e0201a 55%,#a8120d);overflow:hidden;color:#fff!important;font-weight:600;letter-spacing:.06em}.original-badge:after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 20%,rgba(255,255,255,.4) 50%,transparent 80%);transform:translateX(-180%);animation:originalShimmer 5.5s ease-in-out infinite;pointer-events:none}.original-ribbon{padding:4px 10px 4px 8px;font-size:10px;box-shadow:0 2px 6px rgba(0,0,0,.35);clip-path:polygon(0 0,calc(100% - 8px) 0,100% 50%,calc(100% - 8px) 100%,0 100%)}@keyframes feedItemEnter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.feed-item-enter{animation:feedItemEnter .22s cubic-bezier(.25,.46,.45,.94)}@keyframes commentPopIn{0%{transform:scale(.9) translateY(6px);opacity:0}60%{transform:scale(1.015) translateY(0);opacity:1}to{transform:scale(1) translateY(0);opacity:1}}.comment-pop-in{animation:commentPopIn .22s cubic-bezier(.25,.8,.4,1) both}@keyframes heartPop{0%{transform:scale(1)}15%{transform:scale(1.5)}30%{transform:scale(.85)}45%{transform:scale(1.25)}60%{transform:scale(.95)}80%{transform:scale(1.1)}to{transform:scale(1)}}.heart-pop{animation:heartPop .55s cubic-bezier(.36,.07,.19,.97) forwards}@keyframes bottomSheetSlideUp{0%{transform:translateX(-50%) translateY(40px);opacity:0}to{transform:translateX(-50%) translateY(0);opacity:1}}.bottom-sheet-anim{animation:bottomSheetSlideUp .26s cubic-bezier(.32,.72,0,1)}@keyframes bottomSheetSlideUpSimple{0%{transform:translateY(40px);opacity:0}to{transform:translateY(0);opacity:1}}.bottom-sheet-anim-simple{animation:bottomSheetSlideUpSimple .26s cubic-bezier(.32,.72,0,1)}@keyframes acquireBackdropIn{0%{opacity:0}to{opacity:1}}@keyframes acquireBackdropOut{0%{opacity:1}to{opacity:0}}.acquire-backdrop-in{animation:acquireBackdropIn .18s ease-out both}.acquire-backdrop-out{animation:acquireBackdropOut .22s ease-in both}@keyframes acquireCardIn{0%{transform:scale(.4);opacity:0}55%{transform:scale(1.08);opacity:1}75%{transform:scale(.96)}to{transform:scale(1);opacity:1}}@keyframes acquireCardOut{0%{transform:scale(1);opacity:1}to{transform:scale(.85);opacity:0}}.acquire-card-in{animation:acquireCardIn .42s cubic-bezier(.34,1.56,.64,1) both}.acquire-card-out{animation:acquireCardOut .22s ease-in both}@keyframes acquireRingBurst{0%{transform:scale(.3);opacity:.9}to{transform:scale(2.2);opacity:0}}.acquire-ring{animation:acquireRingBurst .9s cubic-bezier(.16,1,.3,1) both}@keyframes acquireSparkleFly{0%{transform:translate(0) scale(.4);opacity:0}25%{opacity:1}to{transform:var(--sparkle-end,translate(40px,-40px)) scale(1);opacity:0}}.acquire-sparkle{animation:acquireSparkleFly .8s ease-out both}@keyframes bubbleInMine{0%{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes bubbleInTheirs{0%{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.bubble-in-mine{animation:bubbleInMine .32s var(--ease-bounce) backwards;transform-origin:100% 100%}.bubble-in-theirs{animation:bubbleInTheirs .26s var(--ease-emphasized) backwards;transform-origin:0 100%}@keyframes contentIn{0%{opacity:0}to{opacity:1}}.content-in{animation:contentIn .18s var(--ease-standard) both}@keyframes likeBurst{0%{opacity:.55;transform:scale(.6)}to{opacity:0;transform:scale(2.1)}}.like-burst{position:absolute;inset:0;border-radius:var(--radius-full);border:2px solid var(--color-like);animation:likeBurst .45s var(--ease-emphasized) forwards;pointer-events:none}@keyframes floatBtnIn{0%{opacity:0;transform:translateY(10px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}.float-btn-in{animation:floatBtnIn .22s var(--ease-bounce) backwards}@keyframes floatBtnInCenter{0%{opacity:0;transform:translateX(-50%) translateY(10px) scale(.9)}to{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}.float-btn-in-center{animation:floatBtnInCenter .22s var(--ease-bounce) backwards}@keyframes ludiFlashDown{0%{color:var(--color-danger)}70%{color:var(--color-danger)}to{color:inherit}}.ludi-flash-down{animation:ludiFlashDown .7s var(--ease-standard) both}@keyframes searchHitFlash{0%{background:color-mix(in srgb,var(--accent) 22%,transparent)}to{background:transparent}}.search-hit-flash{animation:searchHitFlash 1.1s var(--ease-standard) forwards;border-radius:var(--radius-md)}@keyframes passTwinkle{0%,to{opacity:0;transform:scale(.5)}50%{opacity:1;transform:scale(1)}}.pass-twinkle{animation:passTwinkle 2.6s ease-in-out infinite}@keyframes motionRise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.motion-rise{animation:motionRise .26s var(--ease-standard) both}.motion-stagger>*{animation:motionRise .28s var(--ease-standard) both}.motion-stagger>:first-child{animation-delay:0s}.motion-stagger>:nth-child(2){animation-delay:40ms}.motion-stagger>:nth-child(3){animation-delay:80ms}.motion-stagger>:nth-child(4){animation-delay:.12s}.motion-stagger>:nth-child(5){animation-delay:.16s}.motion-stagger>:nth-child(n+6){animation-delay:.19s}@keyframes motionCount{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.motion-count{animation:motionCount .22s var(--ease-standard) both}@keyframes emptyDrift{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.empty-drift{animation:emptyDrift 4.5s ease-in-out infinite}.press-scale{transition:transform var(--duration-fast) var(--ease-standard)}.press-scale:active{transform:scale(.985)}@keyframes shake{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(2px)}30%,50%,70%{transform:translateX(-4px)}40%,60%{transform:translateX(4px)}}.shake{animation:shake .4s cubic-bezier(.36,.07,.19,.97) both}@keyframes badgePop{0%{transform:scale(.5);opacity:0}60%{transform:scale(1.15);opacity:1}to{transform:scale(1)}}.badge-pop{animation:badgePop .3s cubic-bezier(.34,1.56,.64,1) both}.boost-launch-overlay{position:fixed;inset:0;z-index:calc(var(--z-modal) + 5);flex-direction:column;gap:20px;pointer-events:none}.boost-launch-overlay,.boost-launch-stage{display:flex;align-items:center;justify-content:center}.boost-launch-stage{position:relative;width:200px;height:200px;animation:boostShake .32s ease-in-out}.boost-launch-glow{position:absolute;width:130px;height:130px;border-radius:var(--radius-full);background:radial-gradient(circle,color-mix(in srgb,var(--color-warning) 55%,transparent) 0,transparent 70%);opacity:0;animation:boostGlowPulse .9s ease-out .3s forwards}@keyframes boostGlowPulse{0%{transform:scale(.4);opacity:0}35%{transform:scale(1.15);opacity:1}to{transform:scale(1.7);opacity:0}}.boost-energy-ring{position:absolute;width:16px;height:16px;border-radius:var(--radius-full);background:var(--color-warning);box-shadow:0 0 12px color-mix(in srgb,var(--color-warning) 70%,transparent);opacity:0;animation:boostEnergyGather .45s ease-out .05s forwards}.boost-energy-ring--1{--dx:-68px;--dy:-44px}.boost-energy-ring--2{--dx:68px;--dy:-44px;animation-delay:.1s}.boost-energy-ring--3{--dx:-68px;--dy:44px;animation-delay:.15s}.boost-energy-ring--4{--dx:68px;--dy:44px;animation-delay:.2s}@keyframes boostEnergyGather{0%{transform:translate(var(--dx),var(--dy)) scale(1);opacity:.95}to{transform:translate(0) scale(.2);opacity:0}}.boost-rocket-icon{position:relative;z-index:1;width:72px;height:72px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;background:var(--color-warning);box-shadow:0 0 0 6px color-mix(in srgb,var(--color-warning) 22%,transparent),0 8px 28px rgba(0,0,0,.4);opacity:0;animation:boostRocketPop 1.05s cubic-bezier(.22,1,.36,1) .35s forwards}@keyframes boostRocketPop{0%{transform:translateY(20px) scale(.5);opacity:0}25%{transform:translateY(0) scale(1.15);opacity:1}42%{transform:translateY(0) scale(1);opacity:1}to{transform:translateY(-190px) scale(.85);opacity:0}}.boost-rocket-trail{position:absolute;bottom:50%;left:50%;width:5px;height:0;transform:translateX(-50%);background:linear-gradient(180deg,var(--color-warning),transparent);border-radius:var(--radius-full);opacity:0;animation:boostTrail .9s ease-out .42s forwards}@keyframes boostTrail{0%{height:0;opacity:0;transform:translate(-50%)}30%{opacity:.9}to{height:180px;opacity:0;transform:translate(-50%,-70px)}}.boost-launch-label{display:flex;align-items:center;gap:7px;font-size:var(--fs-lg);font-weight:700;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.5);white-space:nowrap;opacity:0;animation:fadeIn .32s ease-out .55s forwards}.boost-launch-label svg{color:var(--color-warning)}@keyframes boostShake{0%,to{transform:translate(0)}20%{transform:translate(-3px,-2px)}40%{transform:translate(3px,2px)}60%{transform:translate(-2px,2px)}80%{transform:translate(2px,-1px)}}@keyframes btnPop{0%{transform:scale(1)}40%{transform:scale(1.12)}to{transform:scale(1)}}.btn-pop{animation:btnPop .28s var(--ease-bounce)}@keyframes eggPulse{0%,to{transform:scale(1)}50%{transform:scale(1.35)}}@keyframes eggCelebrate{0%{transform:scale(1) rotate(0deg)}25%{transform:scale(1.3) rotate(-12deg)}50%{transform:scale(1.05) rotate(8deg)}75%{transform:scale(1.3) rotate(-6deg)}to{transform:scale(1) rotate(0deg)}}@keyframes formErrorShake{0%,to{transform:translateX(0)}20%{transform:translateX(-4px)}40%{transform:translateX(4px)}60%{transform:translateX(-3px)}80%{transform:translateX(3px)}}.form-error-in{animation:formErrorShake .36s var(--ease-standard),contentIn .2s var(--ease-standard) both}@keyframes uploadScaleIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.upload-scale-in{animation:uploadScaleIn .24s var(--ease-bounce) both}@keyframes listItemExit{0%{opacity:1;transform:scale(1);max-height:240px}to{opacity:0;transform:scale(.96);max-height:0;margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0}}.list-item-exit{animation:listItemExit .22s var(--ease-standard) forwards;overflow:hidden}@keyframes modalCardIn{0%{transform:scale(.92);opacity:0}to{transform:scale(1);opacity:1}}.modal-backdrop-in{animation:acquireBackdropIn .16s ease-out both}.modal-card-in{animation:modalCardIn .2s var(--ease-bounce) both}@keyframes modalCardInCentered{0%{transform:translate(-50%,-50%) scale(.92);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}.modal-card-in-centered{animation:modalCardInCentered .2s var(--ease-bounce) both}.check-pop-in{animation:commentPopIn .22s var(--ease-bounce) both}.tab-underline-indicator{position:absolute;bottom:0;left:0;height:2px;background:var(--accent);transition:transform var(--duration-base) var(--ease-standard);will-change:transform;pointer-events:none}@keyframes confettiFall{0%{transform:translateY(-20px) rotate(0deg);opacity:1}to{transform:var(--confetti-end,translate(0,200px) rotate(1turn));opacity:0}}.confetti-piece{position:absolute;top:0;width:7px;height:11px;animation:confettiFall 1.4s cubic-bezier(.25,.46,.45,.94) forwards;pointer-events:none}@keyframes spellScanSweep{0%{transform:translateX(-120%)}to{transform:translateX(220%)}}.spellcheck-scan-sweep:after{content:"";position:absolute;inset:0;width:45%;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--accent) 45%,transparent),transparent);animation:spellScanSweep 1.15s ease-in-out infinite;pointer-events:none}@keyframes spellScanIconBlink{0%,to{opacity:1}50%{opacity:.45}}.spellcheck-scan-icon{animation:spellScanIconBlink 1.15s ease-in-out infinite}@keyframes likeParticleFly{0%{transform:translate(0) scale(1);opacity:1}to{transform:var(--particle-end,translate(20px,-20px)) scale(0);opacity:0}}.like-particle{position:absolute;top:50%;left:50%;width:5px;height:5px;margin:-2.5px 0 0 -2.5px;border-radius:50%;background:var(--color-like);animation:likeParticleFly .5s var(--ease-emphasized) forwards;pointer-events:none}.skeleton{background:linear-gradient(90deg,var(--bg-secondary) 25%,var(--bg-tertiary) 50%,var(--bg-secondary) 75%);background-size:200% 100%;animation:shimmer 1.6s infinite;border-radius:var(--radius-xs);will-change:background-position}@keyframes promo-shimmer-sweep{0%{transform:translateX(-140%) rotate(10deg)}40%,to{transform:translateX(240%) rotate(10deg)}}.promo-shimmer:after{content:"";position:absolute;top:-40%;bottom:-40%;left:0;width:30%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.14),transparent);animation:promo-shimmer-sweep 9s ease-in-out infinite;pointer-events:none}.toast{background:var(--accent);color:var(--user-text);padding:10px 20px;border-radius:var(--radius-full);font-size:13px;font-family:var(--font);font-weight:500;animation:fadeInUp .2s ease;white-space:nowrap;box-shadow:0 4px 20px rgba(0,0,0,.2);pointer-events:none}.no-transition,.skeleton{transition:none!important}@media (min-width:720px){.ad-scroll-wide{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}}