.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);backdrop-filter:blur(4px);z-index:9999;display:none;align-items:center;justify-content:center}.modal-overlay.active,.modal-overlay.show{display:flex}.modal-content{background:var(--bg-card);border-radius:var(--radius-lg);max-width:500px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.5);animation:modalSlideIn .3s ease}@keyframes modalSlideIn{from{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid var(--border-color)}.modal-title{font-size:18px;font-weight:700;color:var(--text-primary);margin:0}.modal-close{width:32px;height:32px;border:none;background:0 0;color:var(--text-muted);font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background-color .2s,color .2s}.modal-close:hover{background:var(--bg-secondary);color:var(--text-primary)}.toast{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--bg-card);border:1px solid var(--border-color);color:var(--text-primary);padding:12px 24px;border-radius:var(--radius-md);box-shadow:var(--shadow-xl);z-index:10000;display:none;font-size:14px}.toast.show{display:block;animation:fadeIn .3s ease}@keyframes fadeIn{from{opacity:0;transform:translate(-50%,-50%) scale(.9)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.loading-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(15,23,42,.9);display:none;align-items:center;justify-content:center;z-index:9999}.loading-overlay.active{display:flex}.spinner{width:40px;height:40px;border:3px solid var(--border-color);border-top-color:var(--primary-color);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--bg-secondary) 25%,var(--bg-hover) 50%,var(--bg-secondary) 75%);background-size:200% 100%;animation:loading 1.5s infinite;border-radius:4px}@keyframes loading{0%{background-position:200% 0}100%{background-position:-200% 0}}.empty-state{text-align:center;padding:60px 20px}.empty-icon{font-size:64px;margin-bottom:15px}