@keyframes fade-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:fade-in .6s ease-out}.line-clamp-2{-webkit-line-clamp:2}.line-clamp-2,.line-clamp-3{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3}.line-clamp-5{display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}.backdrop-blur-lg{backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.custom-scrollbar::-webkit-scrollbar{width:6px}.custom-scrollbar::-webkit-scrollbar-track{background:transparent}.custom-scrollbar::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:#94a3b8}.dark .custom-scrollbar::-webkit-scrollbar-thumb{background:#475569}.dark .custom-scrollbar::-webkit-scrollbar-thumb:hover{background:#64748b}.prose{color:inherit;max-width:none}.prose p{margin-bottom:1em;line-height:1.7}.prose-invert{color:inherit}.search-result-card{transition:all .3s cubic-bezier(.4,0,.2,1)}.search-result-card:hover{transform:translateY(-2px);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}@keyframes gradient-shift{0%,to{background-position:0 50%}50%{background-position:100% 50%}}.gradient-animate{background-size:200% 200%;animation:gradient-shift 3s ease infinite}.loading-shimmer{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 37%,#f0f0f0 63%);background-size:400% 100%;animation:shimmer 1.5s ease-in-out infinite}.dark .loading-shimmer{background:linear-gradient(90deg,#374151 25%,#4b5563 37%,#374151 63%);background-size:400% 100%}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.focus-ring:focus{outline:2px solid #3b82f6;outline-offset:2px}.btn-primary{background:linear-gradient(135deg,#3b82f6,#1d4ed8);box-shadow:0 4px 14px 0 rgba(59,130,246,.3);transition:all .2s ease}.btn-primary:hover{background:linear-gradient(135deg,#1d4ed8,#1e40af);box-shadow:0 6px 20px 0 rgba(59,130,246,.4);transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}@media (max-width:768px){.search-result-card:hover{transform:none}.animate-fade-in{animation-duration:.4s}}