:root{--animation-duration-fast: .15s;--animation-duration-normal: .3s;--animation-duration-slow: .5s;--animation-easing-ease: cubic-bezier(.4, 0, .2, 1);--animation-easing-bounce: cubic-bezier(.68, -.55, .265, 1.55);--animation-easing-elastic: cubic-bezier(.175, .885, .32, 1.275)}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes bounce{0%,20%,53%,80%,to{transform:translateY(0)}40%,43%{transform:translateY(-10px)}70%{transform:translateY(-5px)}90%{transform:translateY(-2px)}}@keyframes shimmer{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes wiggle{0%,7%{transform:rotate(0)}15%{transform:rotate(-15deg)}20%{transform:rotate(10deg)}25%{transform:rotate(-10deg)}30%{transform:rotate(6deg)}35%{transform:rotate(-4deg)}40%,to{transform:rotate(0)}}.loading-spinner{width:40px;height:40px;border:4px solid var(--border-color);border-top:4px solid var(--primary-color);border-radius:50%;animation:spin 1s linear infinite}.loading-spinner-small{width:20px;height:20px;border:2px solid var(--border-color);border-top:2px solid var(--primary-color);border-radius:50%;animation:spin 1s linear infinite}.loading-dots{display:inline-block}.loading-dots:after{content:"";animation:dots 1.5s steps(4,end) infinite}@keyframes dots{0%,20%{content:""}40%{content:"."}60%{content:".."}80%,to{content:"..."}}.skeleton{background:linear-gradient(90deg,var(--bg-light) 25%,var(--border-color) 50%,var(--bg-light) 75%);background-size:200px 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius)}.skeleton-text{height:1rem;margin-bottom:.5rem}.skeleton-text:last-child{width:60%}.skeleton-card{height:200px;border-radius:var(--radius)}.page-enter{animation:fadeInUp var(--animation-duration-normal) var(--animation-easing-ease)}.page-exit{animation:fadeInDown var(--animation-duration-fast) var(--animation-easing-ease) reverse}.card{transition:all var(--animation-duration-normal) var(--animation-easing-ease);animation:fadeIn var(--animation-duration-normal) var(--animation-easing-ease)}.card:hover{transform:translateY(-4px);box-shadow:var(--shadow-hover)}.card:active{transform:translateY(-2px);transition:transform var(--animation-duration-fast) var(--animation-easing-ease)}.btn{transition:all var(--animation-duration-normal) var(--animation-easing-ease);position:relative;overflow:hidden}.btn:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:rgba(255,255,255,.2);border-radius:50%;transform:translate(-50%,-50%);transition:width var(--animation-duration-normal) var(--animation-easing-ease),height var(--animation-duration-normal) var(--animation-easing-ease)}.btn:hover:before{width:300px;height:300px}.btn:active{transform:scale(.98)}.btn-primary:hover{background-color:var(--primary-dark);transform:translateY(-2px);box-shadow:0 4px 12px #7ebc6f4d}.btn-secondary:hover{background-color:var(--secondary-color);transform:translateY(-2px);box-shadow:0 4px 12px #4a90e24d}.form-input{transition:all var(--animation-duration-normal) var(--animation-easing-ease)}.form-input:focus{transform:scale(1.02);box-shadow:0 0 0 3px #7ebc6f33}.form-input:invalid{animation:wiggle var(--animation-duration-slow) var(--animation-easing-ease)}.nav-link{transition:all var(--animation-duration-normal) var(--animation-easing-ease);position:relative}.nav-link:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:2px;background:var(--primary-color);transition:width var(--animation-duration-normal) var(--animation-easing-ease)}.nav-link:hover:after,.nav-link.active:after{width:100%}.nav-link:hover{transform:translateY(-1px)}.search-input{transition:all var(--animation-duration-normal) var(--animation-easing-ease)}.search-input:focus{transform:scale(1.02);box-shadow:0 0 0 3px #7ebc6f33}.search-results{animation:fadeInDown var(--animation-duration-normal) var(--animation-easing-ease)}.search-result-item{transition:all var(--animation-duration-normal) var(--animation-easing-ease);animation:slideInLeft var(--animation-duration-normal) var(--animation-easing-ease)}.search-result-item:hover{transform:translate(8px);background-color:var(--bg-light)}.chart-container{animation:fadeIn var(--animation-duration-slow) var(--animation-easing-ease)}.chart-bar{transition:all var(--animation-duration-normal) var(--animation-easing-ease)}.chart-bar:hover{transform:scaleY(1.05);filter:brightness(1.1)}.heatmap-cell{transition:all var(--animation-duration-normal) var(--animation-easing-ease)}.heatmap-cell:hover{transform:scale(1.1);z-index:10}.modal{animation:scaleIn var(--animation-duration-normal) var(--animation-easing-bounce)}.modal-backdrop{animation:fadeIn var(--animation-duration-normal) var(--animation-easing-ease)}.toast{animation:slideInRight var(--animation-duration-normal) var(--animation-easing-ease)}.toast.exit{animation:slideInRight var(--animation-duration-normal) var(--animation-easing-ease) reverse}.stagger-item{opacity:0;transform:translateY(20px);animation:fadeInUp var(--animation-duration-normal) var(--animation-easing-ease) forwards}.stagger-item:nth-child(1){animation-delay:.1s}.stagger-item:nth-child(2){animation-delay:.2s}.stagger-item:nth-child(3){animation-delay:.3s}.stagger-item:nth-child(4){animation-delay:.4s}.stagger-item:nth-child(5){animation-delay:.5s}.stagger-item:nth-child(6){animation-delay:.6s}.stagger-item:nth-child(7){animation-delay:.7s}.stagger-item:nth-child(8){animation-delay:.8s}.stagger-item:nth-child(9){animation-delay:.9s}.stagger-item:nth-child(10){animation-delay:1s}.clickable{cursor:pointer;transition:all var(--animation-duration-fast) var(--animation-easing-ease)}.clickable:hover{transform:scale(1.05)}.clickable:active{transform:scale(.95)}.success-message{animation:fadeInUp var(--animation-duration-normal) var(--animation-easing-ease)}.error-message{animation:wiggle var(--animation-duration-slow) var(--animation-easing-ease)}.theme-transition{transition:background-color var(--animation-duration-normal) var(--animation-easing-ease),color var(--animation-duration-normal) var(--animation-easing-ease),border-color var(--animation-duration-normal) var(--animation-easing-ease)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.gpu-accelerated{transform:translateZ(0);will-change:transform}.keyboard-shortcuts-help{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.75);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:10000;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease;padding:20px}.keyboard-shortcuts-help.show{opacity:1}.keyboard-shortcuts-help>div{background:var(--bg-color);border-radius:var(--radius);box-shadow:0 20px 60px #0000004d;max-width:600px;max-height:80vh;overflow-y:auto;animation:scaleIn .3s var(--animation-easing-bounce)}.shortcuts-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid var(--border-color)}.shortcuts-header h2{margin:0;font-size:1.5rem;color:var(--text-color)}.close-btn{background:none;border:none;font-size:2rem;color:var(--text-light);cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s ease}.close-btn:hover{background:var(--bg-light);color:var(--text-color)}.shortcuts-content{padding:1.5rem}.shortcuts-category{margin-bottom:2rem}.shortcuts-category:last-child{margin-bottom:0}.shortcuts-category h3{margin:0 0 1rem;font-size:1.1rem;color:var(--primary-color);text-transform:uppercase;letter-spacing:.5px}.shortcuts-list{display:flex;flex-direction:column;gap:.75rem}.shortcut-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem;background:var(--bg-light);border-radius:4px;transition:all .2s ease}.shortcut-item:hover{background:var(--primary-color);color:#fff}.shortcut-item:hover .shortcut-description{color:#fff}.shortcut-keys{display:flex;gap:.25rem;align-items:center}.shortcut-keys kbd{background:var(--bg-color);border:1px solid var(--border-color);border-radius:4px;padding:.25rem .5rem;font-family:monospace;font-size:.875rem;font-weight:600;color:var(--text-color);box-shadow:0 2px 4px #0000001a}.shortcut-item:hover .shortcut-keys kbd{background:rgba(255,255,255,.2);border-color:#ffffff4d;color:#fff}.shortcut-description{color:var(--text-color);font-size:.9rem}.shortcuts-footer{padding:1rem 1.5rem;border-top:1px solid var(--border-color);text-align:center;background:var(--bg-light)}.shortcuts-footer p{margin:0;color:var(--text-light);font-size:.875rem}.shortcuts-footer kbd{background:var(--bg-color);border:1px solid var(--border-color);border-radius:4px;padding:.125rem .375rem;font-family:monospace;font-size:.75rem}[data-theme=dark] .keyboard-shortcuts-help{background:rgba(0,0,0,.85)}[data-theme=dark] .shortcut-keys kbd{background:var(--bg-light);border-color:var(--border-color)}@media (max-width: 768px){.keyboard-shortcuts-help>div{max-width:100%;max-height:90vh}.shortcut-item{flex-direction:column;align-items:flex-start;gap:.5rem}.shortcut-description{font-size:.85rem}}.animate-fade-in{animation:fadeIn var(--animation-duration-normal) var(--animation-easing-ease)}.animate-fade-in-up{animation:fadeInUp var(--animation-duration-normal) var(--animation-easing-ease)}.animate-fade-in-down{animation:fadeInDown var(--animation-duration-normal) var(--animation-easing-ease)}.animate-slide-in-left{animation:slideInLeft var(--animation-duration-normal) var(--animation-easing-ease)}.animate-slide-in-right{animation:slideInRight var(--animation-duration-normal) var(--animation-easing-ease)}.animate-scale-in{animation:scaleIn var(--animation-duration-normal) var(--animation-easing-bounce)}.animate-pulse{animation:pulse 2s infinite}.animate-bounce{animation:bounce 1s infinite}.animate-wiggle{animation:wiggle var(--animation-duration-slow) var(--animation-easing-ease)}.hover-lift:hover{transform:translateY(-4px);box-shadow:var(--shadow-hover)}.hover-scale:hover{transform:scale(1.05)}.hover-glow:hover{box-shadow:0 0 20px #7ebc6f4d}.hover-rotate:hover{transform:rotate(5deg)}.focus-ring:focus{outline:none;box-shadow:0 0 0 3px #7ebc6f4d}.loading{position:relative;pointer-events:none}.loading:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(255,255,255,.8);display:flex;align-items:center;justify-content:center}.loading:before{content:"";position:absolute;top:50%;left:50%;width:20px;height:20px;border:2px solid var(--border-color);border-top:2px solid var(--primary-color);border-radius:50%;animation:spin 1s linear infinite;transform:translate(-50%,-50%);z-index:1}
