*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;width:100%;overflow:hidden}html,body,#root{height:100dvh}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;padding-top:env(safe-area-inset-top);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}@media(hover:hover){::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#9ca3af4d;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#9ca3af80}}@media(hover:none){::-webkit-scrollbar{display:none}*{scrollbar-width:none}}@media(hover:none)and (pointer:coarse){button,[role=option]{min-height:44px}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.animate-shimmer{background:linear-gradient(90deg,transparent 25%,rgba(255,255,255,.08) 50%,transparent 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.animate-fadeIn{animation:fadeIn .3s ease-out}@keyframes pulseDot{0%,to{opacity:.4}50%{opacity:1}}.animate-pulseDot{animation:pulseDot 1.2s ease-in-out infinite}.safe-bottom{padding-bottom:env(safe-area-inset-bottom)}@keyframes drawBanana{0%{stroke-dashoffset:200;opacity:.3}15%{opacity:1}50%{stroke-dashoffset:0;opacity:1}70%{stroke-dashoffset:0;opacity:.6}to{stroke-dashoffset:-200;opacity:.3}}.animate-drawBanana{stroke-dasharray:200;stroke-dashoffset:200;animation:drawBanana 2.4s ease-in-out infinite}@keyframes rotateGlow{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-rotateGlow{animation:rotateGlow 3s linear infinite;transform-origin:center}@keyframes sparkle{0%,to{opacity:0;transform:scale(.5)}50%{opacity:1;transform:scale(1.2)}}.animate-sparkle{animation:sparkle 1.6s ease-in-out infinite}@keyframes breathe{0%,to{opacity:.15}50%{opacity:.3}}.animate-breathe{animation:breathe 2s ease-in-out infinite}@keyframes modalIn{0%{opacity:0;transform:scale(.92) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.animate-modalIn{animation:modalIn .2s ease-out}@keyframes dropPulse{0%,to{border-color:#f59e0b80}50%{border-color:#f59e0b}}.animate-dropPulse{animation:dropPulse 1.2s ease-in-out infinite}@keyframes successPop{0%{opacity:0;transform:scale(.3)}50%{transform:scale(1.15)}70%{transform:scale(.95)}to{opacity:1;transform:scale(1)}}.animate-successPop{animation:successPop .5s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes drawCheck{0%{stroke-dashoffset:20;opacity:0}30%{opacity:1}to{stroke-dashoffset:0;opacity:1}}.animate-drawCheck{stroke-dasharray:20;stroke-dashoffset:20;animation:drawCheck .4s .25s ease-out forwards}@keyframes sparkleOut{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}40%{opacity:1;transform:translate(-50%,-50%) scale(1.2) translateY(-6px)}to{opacity:0;transform:translate(-50%,-50%) scale(.5) translateY(-12px)}}.animate-sparkleOut{animation:sparkleOut .6s .15s ease-out forwards;opacity:0}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}.line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.line-clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
