.notification-container{position:fixed;top:20px;right:20px;z-index:10000;display:flex;flex-direction:column;gap:12px;max-width:350px}.notification{position:relative;padding:12px 20px;border-radius:8px;color:#fff;font-size:14px;font-weight:500;box-shadow:0 4px 12px #00000026;transform:translate(100%);opacity:0;transition:transform .3s ease,opacity .3s ease;display:flex;align-items:center;gap:10px;max-width:350px}.notification-visible{transform:translate(0);opacity:1}.notification-success{background-color:#52c41a}.notification-error{background-color:#ff4d4f}.notification-warning{background-color:#faad14}.notification-info{background-color:#1890ff}.notification-content{flex:1;word-break:break-word}.notification-close{background:none;border:none;color:#fff;font-size:20px;cursor:pointer;padding:0;margin:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;opacity:.8;transition:opacity .2s ease}.notification-close:hover{opacity:1}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:50%;background-color:var(--gray-200);color:var(--gray-700);cursor:pointer;transition:all .3s ease;box-shadow:0 2px 5px #0000001a;margin:0 3px;vertical-align:middle}.icon-button-small{width:24px;height:24px}.icon-button-medium{width:32px;height:32px}.icon-button-large{width:36px;height:36px}.icon{display:inline-block;width:16px;height:16px;background-size:contain;background-repeat:no-repeat;background-position:center}.icon.small{width:14px;height:14px}.icon.medium{width:16px;height:16px}.icon.large{width:20px;height:20px}.icon.play{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%234e73df'%3E%3Cpath d='M8 5v14l11-7z'/%3E%3C/svg%3E")}.icon-button:hover .icon.play{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%232e59d9'%3E%3Cpath d='M8 5v14l11-7z'/%3E%3C/svg%3E")}.icon.heart{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f6c23e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'%3E%3C/path%3E%3C/svg%3E")}.icon-button:hover .icon.heart{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f4b619' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'%3E%3C/path%3E%3C/svg%3E")}.icon.heart-filled{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23e74a3b' stroke='%23e74a3b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'%3E%3C/path%3E%3C/svg%3E")}.icon.trash{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e74a3b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3 6 5 6 21 6'%3E%3C/polyline%3E%3Cpath d='M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'%3E%3C/path%3E%3C/svg%3E")}.icon-button:hover .icon.trash{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e02d1d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3 6 5 6 21 6'%3E%3C/polyline%3E%3Cpath d='M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'%3E%3C/path%3E%3C/svg%3E")}.icon.heart-cancel{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e74a3b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'%3E%3C/path%3E%3Cline x1='7' y1='7' x2='17' y2='17'%3E%3C/line%3E%3Cline x1='17' y1='7' x2='7' y2='17'%3E%3C/line%3E%3C/svg%3E")}.icon-button:hover .icon.heart-cancel{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e02d1d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'%3E%3C/path%3E%3Cline x1='7' y1='7' x2='17' y2='17'%3E%3C/line%3E%3Cline x1='17' y1='7' x2='7' y2='17'%3E%3C/line%3E%3C/svg%3E")}.icon.settings{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234e73df' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'%3E%3C/circle%3E%3Cpath d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z'%3E%3C/path%3E%3C/svg%3E")}.icon-button:hover .icon.settings{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232e59d9' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'%3E%3C/circle%3E%3Cpath d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z'%3E%3C/path%3E%3C/svg%3E")}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;border-radius:var(--border-radius-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:all .3s ease;text-decoration:none;white-space:nowrap;box-shadow:0 2px 5px #0000001a}.btn-small{padding:8px 16px;font-size:.875rem;height:32px;min-width:64px}.btn-medium{padding:10px 20px;font-size:1rem;height:40px;min-width:80px}.btn-large{padding:12px 24px;font-size:1.125rem;height:48px;min-width:100px}@media (max-width: 768px){.btn{min-width:auto;padding:8px 12px;font-size:.875rem;gap:4px;height:auto;line-height:1.2}.btn-small{padding:6px 10px;font-size:.8rem;min-width:48px;height:28px}.btn-medium{padding:8px 12px;font-size:.85rem;min-width:60px;height:32px}.btn-large{padding:10px 14px;font-size:.9rem;min-width:72px;height:36px}.btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 2px 6px #0003}.btn.icon-only{padding:6px;min-width:32px;width:32px;height:32px}.btn.icon-only .btn-text{display:none}.btn.icon-only:before{content:attr(data-icon);font-size:1rem}}.navigation-bar{background:linear-gradient(135deg,var(--secondary-color) 0%,var(--accent-color) 100%);color:#fff;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;border-radius:var(--border-radius-lg);box-shadow:0 4px 12px #0000001a;gap:20px;min-height:60px}.nav-user-info{display:flex;align-items:center;gap:15px;font-weight:var(--font-weight-semibold);font-size:1.1rem;white-space:nowrap}.nav-header-actions{display:flex;gap:12px;align-items:center}@media (max-width: 768px){.navigation-bar{flex-direction:column;gap:10px;text-align:center;padding:1rem}.nav-user-info{gap:8px;padding:.5rem}.nav-header-actions{flex-wrap:wrap;justify-content:center;gap:6px;width:100%}.nav-header-actions .btn{flex:1;min-width:60px;max-width:140px;margin:1px}.nav-user-info span{font-size:12px}}@media (max-width: 480px){.navigation-bar{padding:.8rem;gap:3px}.nav-user-info{gap:5px;padding:.3rem .6rem}.nav-user-info span{font-size:11px}.nav-header-actions{gap:4px}.nav-header-actions .btn{min-width:60px;max-width:100px;font-size:.8rem;padding:6px 8px}}.virtual-song-list-container{width:100%;border:1px solid #e0e0e0;border-radius:8px;overflow:hidden;background-color:#fff;box-shadow:0 2px 4px #0000001a}.song-list-scrollable{overflow-y:auto;overflow-x:hidden;scroll-behavior:smooth}.song-list-scrollable::-webkit-scrollbar{width:6px}.song-list-scrollable::-webkit-scrollbar-track{background:#f1f1f1}.song-list-scrollable::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.song-list-scrollable::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.virtual-song-item{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #f0f0f0;transition:background-color .2s ease}.virtual-song-item:hover{background-color:#f8f9fa}.virtual-song-item:last-child{border-bottom:none}.song-info{flex:1;display:flex;flex-direction:column;min-width:0}.song-name{font-weight:500;font-size:16px;color:#333;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:wrap;margin-bottom:4px}.uploader-info{font-size:13px;color:#999}.upload-date{font-size:12px;color:#999}.song-actions{display:flex;gap:8px}.loading-indicator{text-align:center;padding:16px;color:#666;font-size:14px;display:flex;justify-content:center;align-items:center;gap:8px}.spinner{width:16px;height:16px;border:2px solid #f3f3f3;border-top:2px solid #666;border-radius:50%;animation:spin 1s linear infinite}.no-songs-message{text-align:center;padding:32px;color:#999;font-size:16px}.home-container{max-width:1200px;margin:0 auto;padding:10px;background-color:var(--light)}.home-header{background:linear-gradient(135deg,var(--secondary-color) 0%,var(--accent-color) 100%);color:#fff;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;border-radius:var(--border-radius-lg);box-shadow:0 4px 12px #0000001a}.home-header h1{margin:0;font-size:1.8rem;font-weight:var(--font-weight-semibold)}.user-info{display:flex;gap:20px;background:rgba(255,255,255,.2);padding:.5rem 1rem;border-radius:20px}.user-info span{font-weight:var(--font-weight-medium);display:flex;align-items:center}.user-info span:before{content:"•";margin-right:8px;color:#ffd43b}.song-list-container{background:white;border-radius:var(--border-radius-lg);box-shadow:0 2px 10px #0000001a;padding:10px;margin-bottom:20px}.song-list-section h2,.song-list-section h3{margin-top:0;margin-bottom:8px;color:var(--gray-900);border-bottom:2px solid var(--gray-200);padding-bottom:6px;font-size:1.1rem;font-weight:var(--font-weight-semibold);text-align:left}.song-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;margin-top:5px}.song-list-header h2{margin:0;border-bottom:none;padding-bottom:0}.search-container{position:relative;width:300px}.search-input{width:100%;padding:8px 12px;border:1px solid var(--gray-300);border-radius:var(--border-radius-base);font-size:.9rem;transition:all .3s ease}.search-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 2px #3498db33}.search-input::placeholder{color:var(--gray-500)}.songs-table-container{background:white;border-radius:var(--border-radius-lg);box-shadow:0 2px 10px #0000001a;padding:0;margin-bottom:0;overflow-x:auto}.songs-table{width:100%;border-collapse:collapse;font-size:.9rem;margin-top:-2px}.songs-table th,.songs-table td{padding:12px 15px;text-align:left;border-bottom:1px solid var(--grayright-200)}.songs-table td:last-child{text-align:left;vertical-align:middle;width:15%}.action-button{padding:6px 12px;border:none;border-radius:var(--border-radius-base);cursor:pointer;font-size:.85rem;font-weight:var(--font-weight-medium);transition:all .3s ease;margin-right:5px}.play-button{background-color:var(--primary-color);color:#fff}.play-button:hover{background-color:var(--primary-dark)}.favorite-button{background-color:var(--warning-color);color:#fff}.favorite-button:hover{background-color:var(--warning-dark)}.unfavorite-button{background-color:var(--danger-color);color:#fff}.unfavorite-button:hover{background-color:var(--danger-dark)}.source-tag{padding:4px 8px;border-radius:var(--border-radius-base);font-size:.75rem;font-weight:var(--font-weight-semibold)}.user-song{background-color:var(--success-color);color:#fff}.no-songs{text-align:center;color:var(--gray-500);font-style:italic;padding:20px 10px}@media (max-width: 768px){.home-header{flex-direction:column;gap:15px;text-align:center;padding:1rem}.home-header h1{font-size:1.5rem}.user-info{flex-direction:column;gap:8px;padding:.5rem}.header-actions{flex-wrap:wrap;justify-content:center;gap:6px;width:100%}.header-actions .btn{flex:1;min-width:120px;max-width:140px;margin:2px}.user-info span{font-size:12px}.songs-table-container{padding:0}.songs-table th,.songs-table td{padding:8px 10px;font-size:.8rem}.songs-table td:last-child{text-align:left;vertical-align:middle}.songs-table td:first-child .uploader-info{font-size:.7rem;margin-top:3px}.action-button{padding:4px 8px;font-size:.8rem;margin-bottom:3px}.song-list-header{flex-direction:row;align-items:center;gap:10px;margin-bottom:8px;margin-top:3px}.search-container{width:auto;flex:1}.search-input{width:100%;padding:6px 10px;font-size:.85rem}.search-container{width:100%}}@media (max-width: 480px){.songs-table-container{padding:0}.songs-table{margin-top:-4px}}.songs-table th:nth-child(1){width:50%}.songs-table th:nth-child(2){width:20%}.songs-table th:nth-child(3){width:15%}.songs-table th:nth-child(4){width:15%;min-width:100px}.library-container{max-width:1200px;margin:0 auto;padding:10px;background-color:var(--light)}.library-header{background:linear-gradient(135deg,var(--secondary-color) 0%,var(--accent-color) 100%);color:#fff;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;border-radius:var(--border-radius-lg);box-shadow:0 4px 12px #0000001a}.header-actions{display:flex;gap:12px}.mobile-only{display:none}.library-header h2{margin:0;font-size:1.8rem;font-weight:var(--font-weight-semibold)}.library-content{background:white;border-radius:var(--border-radius-lg);box-shadow:0 2px 10px #0000001a;padding:3px;margin-bottom:0;overflow-x:auto}.songs-table{width:100%;border-collapse:collapse;font-size:.9rem}.songs-table th,.songs-table td{padding:12px 15px;text-align:left;border-bottom:1px solid var(--gray-200)}.songs-table td:last-child{text-align:left;vertical-align:middle;width:15%;white-space:nowrap}.songs-table td:first-child .uploader-info{font-size:.8rem;color:var(--gray-600);margin-top:4px}.songs-table th{background-color:var(--gray-100);font-weight:var(--font-weight-semibold);color:var(--gray-700);text-transform:uppercase;font-size:.85rem;letter-spacing:.5px}.songs-table tbody tr:hover{background-color:var(--gray-50)}.songs-table tbody tr:last-child td{border-bottom:none}.library-content h2{margin-top:0;color:var(--gray-900);border-bottom:2px solid var(--gray-200);padding-bottom:15px;font-size:1.5rem;font-weight:var(--font-weight-semibold)}.songs-table{width:100%;border-collapse:collapse;margin-top:20px}.songs-table th,.songs-table td{padding:12px 15px;text-align:left;border-bottom:1px solid #eee}.songs-table th{background-color:var(--light);font-weight:var(--font-weight-semibold);color:var(--gray-900)}.songs-table tbody tr:hover{background-color:var(--light)}.icon.play{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%234e73df'%3E%3Cpath d='M8 5v14l11-7z'/%3E%3C/svg%3E")}.icon-button:hover .icon.play{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%232e59d9'%3E%3Cpath d='M8 5v14l11-7z'/%3E%3C/svg%3E")}.icon.music{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2336b9cc' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18V5l12-2v13'%3E%3C/path%3E%3Ccircle cx='6' cy='18' r='3'%3E%3C/circle%3E%3Ccircle cx='18' cy='16' r='3'%3E%3C/circle%3E%3C/svg%3E")}.icon-button:hover .icon.music{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232c97a8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18V5l12-2v13'%3E%3C/path%3E%3Ccircle cx='6' cy='18' r='3'%3E%3C/circle%3E%3Ccircle cx='18' cy='16' r='3'%3E%3C/circle%3E%3C/svg%3E")}.icon.heart{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231cc88a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'%3E%3C/path%3E%3C/svg%3E")}.icon-button:hover .icon.heart{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2317a673' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'%3E%3C/path%3E%3C/svg%3E")}.icon.trash{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e74a3b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3 6 5 6 21 6'%3E%3C/polyline%3E%3Cpath d='M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'%3E%3C/path%3E%3C/svg%3E")}.icon-button:hover .icon.trash{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e02d1d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3 6 5 6 21 6'%3E%3C/polyline%3E%3Cpath d='M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'%3E%3C/path%3E%3C/svg%3E")}.icon.settings{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234e73df' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'%3E%3C/circle%3E%3Cpath d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z'%3E%3C/path%3E%3C/svg%3E")}.icon-button:hover .icon.settings{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232e59d9' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'%3E%3C/circle%3E%3Cpath d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z'%3E%3C/path%3E%3C/svg%3E")}.icon.heart-cancel{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e74a3b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'%3E%3C/path%3E%3Cline x1='8' y1='16' x2='16' y2='8'%3E%3C/line%3E%3Cline x1='16' y1='16' x2='8' y2='8'%3E%3C/line%3E%3C/svg%3E")}.icon-button:hover .icon.heart-cancel{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e02d1d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'%3E%3C/path%3E%3Cline x1='8' y1='16' x2='16' y2='8'%3E%3C/line%3E%3Cline x1='16' y1='16' x2='8' y2='8'%3E%3C/line%3E%3C/svg%3E")}@media (max-width: 768px){.library-header{flex-direction:column;gap:15px;text-align:center;padding:1rem}.library-header h2{font-size:1.5rem}.header-actions{flex-wrap:wrap;justify-content:center;gap:6px;width:100%}.header-actions .btn{flex:1;min-width:120px;max-width:140px;margin:2px}.songs-table{font-size:14px}.songs-table th,.songs-table td{padding:8px 10px}.icon-button{width:30px;height:30px;margin-right:3px}.icon{width:18px;height:18px}.library-content{padding:3px}}@media (max-width: 480px){.mobile-only{display:inline-block;width:100%;margin:0;padding:10px 15px;font-size:14px;justify-content:center}.library-header{padding:.8rem;gap:10px}.library-header h2{font-size:1.3rem}.header-actions{gap:4px}.header-actions .btn{min-width:100px;max-width:110px;font-size:.8rem;padding:6px 8px}.actions-section button{width:auto;padding:5px 10px;font-size:11px;border:none;border-radius:var(--border-radius-base);cursor:pointer;font-weight:var(--font-weight-medium);transition:all .3s ease;height:28px;min-width:80px;background-color:var(--success-color);color:#fff;box-shadow:0 2px 5px #1cc88a4d;white-space:nowrap}.actions-section button:hover{background-color:var(--success-dark);transform:translateY(-2px);box-shadow:0 4px 8px #1cc88a66}.library-content{padding:3px}.library-content h2{font-size:1.2rem;padding-bottom:10px}.songs-table th,.songs-table td{padding:6px 8px;font-size:12px}.icon-button{width:26px;height:26px;margin-right:2px}.icon{width:16px;height:16px}}.song-actions{display:flex;align-items:center;justify-content:flex-start;gap:5px}.library-song-list-container{width:100%;border:1px solid #e0e0e0;border-radius:8px;overflow:hidden;background-color:#fff;box-shadow:0 2px 4px #0000001a}.library-song-list-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#f8f9fa;border-bottom:1px solid #e0e0e0;font-weight:600;color:#333;font-size:14px}.header-song-name{flex:2;min-width:0}.header-upload-time{flex:1;text-align:center;min-width:100px}.header-actions{flex:1;text-align:center;min-width:120px}.library-song-list-scrollable{overflow-y:auto;overflow-x:hidden;scroll-behavior:smooth}.library-song-list-scrollable::-webkit-scrollbar{width:6px}.library-song-list-scrollable::-webkit-scrollbar-track{background:#f1f1f1}.library-song-list-scrollable::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.library-song-list-scrollable::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.library-song-item{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #f0f0f0;transition:background-color .2s ease}.library-song-item:hover{background-color:#f8f9fa}.library-song-item:last-child{border-bottom:none}.library-song-item .song-info{flex:2;display:flex;flex-direction:column;min-width:0}.library-song-item .song-name{font-weight:500;font-size:16px;color:#333;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:wrap;margin-bottom:4px}.song-meta{display:flex;gap:16px}.library-song-item .uploader-info{font-size:13px;color:#999}.library-song-item .upload-date{font-size:12px;color:#999}.library-song-item .upload-time{flex:1;text-align:center;font-size:14px;color:#666;min-width:100px}.library-song-item .song-actions{display:flex;gap:8px}.library-loading-indicator{text-align:center;padding:16px;color:#666;font-size:14px;display:flex;justify-content:center;align-items:center;gap:8px}.library-spinner{width:16px;height:16px;border:2px solid #f3f3f3;border-top:2px solid #666;border-radius:50%;animation:spin 1s linear infinite}.library-no-more{text-align:center;padding:16px;color:#999;font-size:14px;font-style:italic}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.library-song-list-header{padding:10px 12px;font-size:12px}.library-song-item{padding:10px 12px;display:flex;justify-content:space-between;align-items:center}.library-song-item .song-info{flex:1;min-width:0}.library-song-item .upload-time{display:none}.library-song-item .song-actions{flex:none;justify-content:flex-end;min-width:auto}.header-song-name,.header-upload-time,.header-actions{min-width:auto}}.song-upload-container{max-width:600px;margin:20px auto;padding:30px;background:white;border-radius:var(--border-radius-lg);box-shadow:var(--shadow-md)}.song-upload-container h2{text-align:center;color:var(--gray-900);margin-bottom:25px;font-size:1.5rem;font-weight:var(--font-weight-semibold);border-bottom:2px solid var(--gray-200);padding-bottom:15px}.song-upload-form{display:flex;flex-direction:column}.form-group{margin-bottom:var(--spacing-5)}.form-group label{display:block;margin-bottom:var(--spacing-2);font-weight:var(--font-weight-medium);color:var(--gray-700);font-size:14px}.form-group input[type=text]{width:100%;padding:var(--spacing-3) var(--spacing-4);border:1px solid var(--gray-400);border-radius:var(--border-radius-base);font-size:16px;box-sizing:border-box;transition:var(--transition-base)}.form-group input[type=text]:focus{outline:none;border-color:var(--info-color);box-shadow:0 0 0 3px #4e73df1a}.form-group input[type=file]{width:100%;padding:var(--spacing-3) var(--spacing-4);border:1px solid var(--gray-400);border-radius:var(--border-radius-base);font-size:16px;box-sizing:border-box;background-color:#fff}.form-group input[type=file]:focus{outline:none;border-color:var(--info-color);box-shadow:0 0 0 3px #4e73df1a}.file-info{margin-top:var(--spacing-2);font-size:14px;color:var(--gray-600);display:flex;align-items:center;gap:5px}.error-message{color:var(--danger-dark);background-color:var(--danger-color);padding:var(--spacing-3) var(--spacing-4);border-radius:var(--border-radius-base);margin-bottom:var(--spacing-5);border-left:4px solid var(--danger-color);font-size:14px}.success-message{color:var(--success-dark);background-color:var(--success-color);padding:var(--spacing-3) var(--spacing-4);border-radius:var(--border-radius-base);margin-bottom:var(--spacing-5);border-left:4px solid var(--success-color);font-size:14px}.upload-button{background:linear-gradient(135deg,var(--secondary-color) 0%,var(--accent-color) 100%);color:#fff;padding:var(--spacing-3) var(--spacing-5);border:none;border-radius:var(--border-radius-base);font-size:16px;font-weight:var(--font-weight-medium);cursor:pointer;transition:var(--transition-base);box-shadow:0 2px 5px #667eea4d;margin-top:var(--spacing-3)}.upload-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 8px #667eea66}.upload-button:disabled{background:var(--gray-600);cursor:not-allowed;transform:none;box-shadow:none}@media (max-width: 768px){.song-upload-container{padding:var(--spacing-5);margin:var(--spacing-3)}.form-group input[type=text],.form-group input[type=file]{padding:var(--spacing-3) var(--spacing-3);font-size:14px}.upload-button{padding:var(--spacing-3) var(--spacing-4);font-size:14px}}.upload-page-container{max-width:800px;margin:0 auto;padding:10px;min-height:calc(95vh - 70px);background-color:var(--light)}.upload-page-header{background:linear-gradient(135deg,var(--secondary-color) 0%,var(--accent-color) 100%);color:#fff;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;border-radius:var(--border-radius-lg);box-shadow:0 4px 12px #0000001a;gap:20px;min-height:60px}.upload-page-header h1{margin:0;font-size:1.8rem;font-weight:var(--font-weight-semibold);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-page-header .btn{flex-shrink:0;min-width:120px;max-width:140px}.upload-content{background:white;border-radius:var(--border-radius-lg);box-shadow:0 2px 10px #0000001a;padding:30px;margin-bottom:30px}@media (max-width: 768px){.upload-page-container{padding:15px}.upload-page-header{flex-direction:row;justify-content:space-between;align-items:center;text-align:left;padding:1rem;min-height:auto}.upload-page-header h1{font-size:1.5rem;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-content{padding:20px}.upload-page-header .btn{min-width:100px;max-width:120px;margin:0;font-size:.9rem;padding:8px 12px}}@media (max-width: 480px){.upload-page-container{padding:10px}.upload-page-header{flex-direction:column;text-align:center;padding:.8rem;gap:10px}.upload-page-header h1{font-size:1.3rem;flex:none;white-space:normal;margin-bottom:10px}.upload-content{padding:15px}.upload-page-header .btn{min-width:90px;max-width:100px;font-size:.8rem;padding:6px 8px;align-self:center}}.login-container{display:flex;justify-content:center;align-items:center;min-height:calc(100vh - 65px);background-color:var(--gray-100)}.login-form{background:white;padding:2rem;border-radius:var(--border-radius-lg);box-shadow:var(--shadow-md);width:100%;max-width:400px;margin:0 auto}.login-form h2{text-align:center;margin-bottom:1.5rem;color:var(--gray-900)}button{width:100%;padding:var(--spacing-3);background-color:var(--gray-900);color:#fff;border:none;border-radius:var(--border-radius-sm);font-size:var(--font-size-base);cursor:pointer;transition:var(--transition-base)}button:hover{background-color:var(--gray-700)}.error-message{color:var(--danger-color);background-color:#ffe6e6;padding:var(--spacing-3);border-radius:var(--border-radius-sm);margin-bottom:var(--spacing-4);text-align:center;opacity:0;transform:translateY(-10px);transition:opacity .3s ease-out,transform .3s ease-out}.error-message.show{opacity:1;transform:translateY(0)}.error-message.fade-out{opacity:0;transform:translateY(-10px);transition:opacity .5s ease-in,transform .5s ease-in}.register-link{text-align:center;margin-top:var(--spacing-4);color:var(--gray-600)}.register-link a{color:var(--primary-color);text-decoration:none}.register-link a:hover{text-decoration:underline}.register-container{display:flex;justify-content:center;align-items:center;min-height:calc(100vh - 60px);background-color:var(--gray-100)}.register-form{background:white;padding:2rem;border-radius:var(--border-radius-lg);box-shadow:var(--shadow-md);width:100%;max-width:400px}.register-form h2{text-align:center;margin-bottom:1.5rem;color:var(--gray-900)}.form-group label{display:block;margin-bottom:var(--spacing-2);color:var(--gray-600)}.form-group input{width:100%;padding:var(--spacing-3);border:1px solid var(--gray-400);border-radius:var(--border-radius-sm);font-size:var(--font-size-base);box-sizing:border-box;transition:var(--transition-base)}.form-group input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #646cff1a}button{width:100%;padding:var(--spacing-3);background-color:var(--primary-color);color:#fff;border:none;border-radius:var(--border-radius-sm);font-size:var(--font-size-base);cursor:pointer;transition:var(--transition-base);margin-top:var(--spacing-4)}button:hover{background-color:var(--primary-dark)}button:disabled{background-color:var(--gray-400);cursor:not-allowed}.error-message{color:var(--danger-color);background-color:#ffe6e6;padding:var(--spacing-3);border-radius:var(--border-radius-sm);margin-bottom:var(--spacing-4);text-align:center}.success-message{color:var(--success-color);background-color:#e6ffe6;padding:var(--spacing-3);border-radius:var(--border-radius-sm);margin-bottom:var(--spacing-4);text-align:center}.login-link{text-align:center;margin-top:var(--spacing-4);color:var(--gray-600)}.login-link a{color:var(--primary-color);text-decoration:none}.login-link a:hover{text-decoration:underline}.admin-container{max-width:1200px;margin:0 auto;padding:20px;min-height:calc(100vh - 60px);background-color:var(--light)}.admin-header{background:linear-gradient(135deg,var(--secondary-color) 0%,var(--accent-color) 100%);color:#fff;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;border-radius:var(--border-radius-lg);box-shadow:0 4px 12px #0000001a;gap:20px;min-height:60px}.admin-header h1{margin:0;font-size:1.8rem;font-weight:var(--font-weight-semibold);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-header .btn{flex-shrink:0;min-width:120px;max-width:140px}.admin-content{background:white;border-radius:var(--border-radius-lg);box-shadow:0 2px 10px #0000001a;padding:30px;margin-bottom:30px}.admin-content h2{margin-top:0;color:var(--gray-900);border-bottom:2px solid var(--gray-200);padding-bottom:15px;font-size:1.5rem;font-weight:var(--font-weight-semibold)}.users-table{width:100%;border-collapse:collapse;margin-top:20px}.users-table th,.users-table td{padding:12px 15px;text-align:left;border-bottom:1px solid #eee}.users-table th{background-color:var(--light);font-weight:var(--font-weight-semibold);color:var(--gray-900)}.users-table tbody tr:hover{background-color:var(--light)}.users-table input,.users-table select{width:100%;padding:var(--spacing-2);border:1px solid var(--gray-400);border-radius:var(--border-radius-sm);box-sizing:border-box}.admin-level{color:var(--danger-color);font-weight:700}.user-level{color:var(--success-color)}.password-form{display:flex;gap:var(--spacing-2);margin-top:var(--spacing-2);flex-wrap:wrap;align-items:center}.password-form input{flex:1;min-width:150px;padding:var(--spacing-2);border:1px solid var(--gray-400);border-radius:var(--border-radius-sm);font-size:var(--font-size-base);transition:var(--transition-base)}.password-form input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #646cff1a}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:none;border-radius:50%;background-color:var(--gray-200);color:var(--gray-700);cursor:pointer;transition:all .3s ease;box-shadow:0 2px 5px #0000001a;margin-right:5px}.icon{display:inline-block;width:20px;height:20px;background-size:contain;background-repeat:no-repeat;background-position:center}.icon.small{width:16px;height:16px}.icon.large{width:24px;height:24px}.icon.edit{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'%3E%3C/path%3E%3Cpath d='M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z'%3E%3C/path%3E%3C/svg%3E")}.icon-button:hover .icon.edit{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23495057' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'%3E%3C/path%3E%3Cpath d='M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z'%3E%3C/path%3E%3C/svg%3E")}.icon.save{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z'%3E%3C/path%3E%3Cpolyline points='17 21 17 13 7 13 7 21'%3E%3C/polyline%3E%3Cpolyline points='7 3 7 8 15 8'%3E%3C/polyline%3E%3C/svg%3E")}.icon-button:hover .icon.save{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23495057' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z'%3E%3C/path%3E%3Cpolyline points='17 21 17 13 7 13 7 21'%3E%3C/polyline%3E%3Cpolyline points='7 3 7 8 15 8'%3E%3C/polyline%3E%3C/svg%3E")}.icon.cancel{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='15' y1='9' x2='9' y2='15'%3E%3C/line%3E%3Cline x1='9' y1='9' x2='15' y2='15'%3E%3C/line%3E%3C/svg%3E")}.icon-button:hover .icon.cancel{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23495057' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='15' y1='9' x2='9' y2='15'%3E%3C/line%3E%3Cline x1='9' y1='9' x2='15' y2='15'%3E%3C/line%3E%3C/svg%3E")}.icon.trash{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3 6 5 6 21 6'%3E%3C/polyline%3E%3Cpath d='M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'%3E%3C/path%3E%3C/svg%3E")}.icon-button:hover .icon.trash{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23495057' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3 6 5 6 21 6'%3E%3C/polyline%3E%3Cpath d='M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'%3E%3C/path%3E%3C/svg%3E")}.icon.password{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2' ry='2'%3E%3C/rect%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'%3E%3C/path%3E%3C/svg%3E")}.icon-button:hover .icon.password{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23495057' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2' ry='2'%3E%3C/rect%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'%3E%3C/path%3E%3C/svg%3E")}.icon.confirm{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E")}.icon-button:hover .icon.confirm{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23495057' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E")}.icon.save{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231cc88a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z'%3E%3C/path%3E%3Cpolyline points='17 21 17 13 7 13 7 21'%3E%3C/polyline%3E%3Cpolyline points='7 3 7 8 15 8'%3E%3C/polyline%3E%3C/svg%3E")}.icon-button:hover .icon.save{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2317a673' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z'%3E%3C/path%3E%3Cpolyline points='17 21 17 13 7 13 7 21'%3E%3C/polyline%3E%3Cpolyline points='7 3 7 8 15 8'%3E%3C/polyline%3E%3C/svg%3E")}.icon.cancel{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e74a3b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='15' y1='9' x2='9' y2='15'%3E%3C/line%3E%3Cline x1='9' y1='9' x2='15' y2='15'%3E%3C/line%3E%3C/svg%3E")}.icon-button:hover .icon.cancel{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e02d1d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='15' y1='9' x2='9' y2='15'%3E%3C/line%3E%3Cline x1='9' y1='9' x2='15' y2='15'%3E%3C/line%3E%3C/svg%3E")}.icon.edit{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2336b9cc' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'%3E%3C/path%3E%3Cpath d='M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z'%3E%3C/path%3E%3C/svg%3E")}.icon-button:hover .icon.edit{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232c97a8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'%3E%3C/path%3E%3Cpath d='M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z'%3E%3C/path%3E%3C/svg%3E")}@media (max-width: 768px){.admin-header{flex-direction:row;justify-content:space-between;align-items:center;gap:15px;text-align:left;padding:1rem;min-height:auto}.admin-header h1{font-size:1.5rem;flex:1;min-width:0;white-space:normal;text-overflow:unset;overflow:visible}.admin-header .btn{min-width:100px;max-width:120px;margin:0;font-size:.9rem;padding:8px 12px}.users-table{font-size:14px}.users-table th,.users-table td{padding:8px 10px}.icon-button{width:30px;height:30px;margin-right:3px}.icon{width:18px;height:18px}.password-form{flex-direction:column;align-items:stretch}.password-form input{min-width:auto}}@media (max-width: 480px){.admin-container{padding:10px}.admin-header{padding:.8rem;gap:10px;flex-direction:column;text-align:center}.admin-header h1{font-size:1.3rem;flex:none;white-space:normal;margin-bottom:10px}.admin-header .btn{min-width:90px;max-width:100px;font-size:.8rem;padding:6px 8px;align-self:center}.admin-content{padding:15px}.users-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.users-table thead{display:none}.users-table tbody{display:block}.users-table tr{display:block;margin-bottom:15px;border:1px solid var(--gray-300);border-radius:var(--border-radius-md);padding:15px;background:white;box-shadow:0 2px 8px #0000001a}.users-table td{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border:none;border-bottom:1px solid var(--gray-200);font-size:14px}.users-table td:last-child{border-bottom:none;padding-bottom:0}.users-table td:before{content:attr(data-label);font-weight:var(--font-weight-semibold);color:var(--gray-700);min-width:80px;text-align:left}.users-table td:first-child:before{content:"用户名:"}.users-table td:nth-child(2):before{content:"手机号:"}.users-table td:nth-child(3):before{content:"等级:"}.users-table td:nth-child(4):before{content:"操作:"}.users-table input,.users-table select{font-size:14px;padding:6px 8px}.adm-checkbox{margin-top:8px}.adm-checkbox label{font-size:12px;display:flex;align-items:center;gap:6px}.password-form{flex-direction:column;gap:8px;margin-top:10px}.password-form input{font-size:14px;padding:6px 8px}.icon-button{width:28px;height:28px;margin-right:4px}.icon{width:16px;height:16px}}@media (max-width: 768px) and (min-width: 481px){.users-table{font-size:13px}.users-table th,.users-table td{padding:8px 10px}.users-table th:nth-child(1),.users-table td:nth-child(1){min-width:100px;max-width:120px}.users-table th:nth-child(2),.users-table td:nth-child(2){min-width:120px;max-width:150px}.users-table th:nth-child(3),.users-table td:nth-child(3){min-width:100px;max-width:120px}.users-table th:nth-child(4),.users-table td:nth-child(4){min-width:140px;max-width:160px}.icon-button{width:30px;height:30px;margin-right:3px}.icon{width:18px;height:18px}.password-form{flex-direction:column;align-items:stretch;gap:8px}.password-form input{min-width:auto;font-size:13px}}.footer{background-color:#f8f9fa;border-top:1px solid #e9ecef;padding:20px 0;margin-top:auto;width:100%}.footer-content{max-width:1200px;margin:0 auto;text-align:center;padding:0 20px}.footer-text{margin:5px 0;font-size:14px;color:#6c757d}.footer-text a{color:#007bff;text-decoration:none}.footer-text a:hover{text-decoration:underline}@media (max-width: 768px){.footer{padding:15px 0}.footer-content{padding:0 15px}.footer-text{font-size:12px}}#root{width:100%;margin:0 auto;padding:var(--spacing-1);text-align:center}.App{display:flex;flex-direction:column;min-height:100vh}.logo{height:6em;padding:var(--spacing-4);will-change:filter;transition:var(--transition-base)}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafba)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:var(--spacing-5)}.read-the-docs{color:var(--gray-600)}.loading-container{display:flex;justify-content:center;align-items:center;min-height:100vh;font-size:1.2rem;color:#333}.icon.play{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%236c757d'%3E%3Cpath d='M8 5v14l11-7z'/%3E%3C/svg%3E")}.icon-button:hover .icon.play{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23495057'%3E%3Cpath d='M8 5v14l11-7z'/%3E%3C/svg%3E")}.icon.heart{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'%3E%3C/path%3E%3C/svg%3E")}.icon-button:hover .icon.heart{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23495057' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'%3E%3C/path%3E%3C/svg%3E")}.icon.heart-filled{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23e74a3b' stroke='%23e74a3b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'%3E%3C/path%3E%3C/svg%3E")}.icon.music{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18V5l12-2v13'%3E%3C/path%3E%3Ccircle cx='6' cy='18' r='3'%3E%3C/circle%3E%3Ccircle cx='18' cy='16' r='3'%3E%3C/circle%3E%3C/svg%3E")}.icon-button:hover .icon.music{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23495057' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18V5l12-2v13'%3E%3C/path%3E%3Ccircle cx='6' cy='18' r='3'%3E%3C/circle%3E%3Ccircle cx='18' cy='16' r='3'%3E%3C/circle%3E%3C/svg%3E")}.icon.trash{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3 6 5 6 21 6'%3E%3C/polyline%3E%3Cpath d='M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'%3E%3C/path%3E%3C/svg%3E")}.icon-button:hover .icon.trash{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23495057' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3 6 5 6 21 6'%3E%3C/polyline%3E%3Cpath d='M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'%3E%3C/path%3E%3C/svg%3E")}:root{--primary-color: #646cff;--primary-dark: #535bf2;--secondary-color: #667eea;--accent-color: #764ba2;--success-color: #1cc88a;--success-dark: #169b6b;--warning-color: #f6c23e;--warning-dark: #f4b619;--danger-color: #e74a3b;--danger-dark: #d52a1a;--info-color: #4e73df;--info-dark: #2e59d9;--white: #ffffff;--light: #f8f9fa;--gray-100: #f1f3f5;--gray-200: #e9ecef;--gray-300: #dee2e6;--gray-400: #ced4da;--gray-500: #adb5bd;--gray-600: #6c757d;--gray-700: #495057;--gray-800: #343a40;--gray-900: #212529;--black: #000000;--font-family-sans: "Inter", system-ui, Avenir, Helvetica, Arial, sans-serif;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--font-size-4xl: 2.25rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--spacing-1: .25rem;--spacing-2: .5rem;--spacing-3: .75rem;--spacing-4: 1rem;--spacing-5: 1.25rem;--spacing-6: 1.5rem;--spacing-8: 2rem;--spacing-10: 2.5rem;--spacing-12: 3rem;--border-radius-sm: 4px;--border-radius-base: 6px;--border-radius-lg: 8px;--border-radius-xl: 12px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .1);--shadow-md: 0 2px 10px rgba(0, 0, 0, .1);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .1);--transition-base: all .3s ease;--transition-fast: all .2s ease;--transition-slow: all .4s ease;--icon-size-sm: 16px;--icon-size-base: 20px;--icon-size-lg: 24px}*{box-sizing:border-box}body{font-family:var(--font-family-sans);font-size:var(--font-size-base);line-height:1.5;color:var(--gray-900);background-color:var(--light);margin:0;padding:0}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:var(--spacing-4);font-weight:var(--font-weight-semibold);line-height:1.2}h1{font-size:var(--font-size-4xl)}h2{font-size:var(--font-size-3xl)}h3{font-size:var(--font-size-2xl)}h4{font-size:var(--font-size-xl)}h5{font-size:var(--font-size-lg)}h6{font-size:var(--font-size-base)}p{margin-top:0;margin-bottom:var(--spacing-4)}a{color:var(--primary-color);text-decoration:none;transition:var(--transition-base)}a:hover{color:var(--primary-dark);text-decoration:underline}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-2);padding:var(--spacing-3) var(--spacing-5);border:none;border-radius:var(--border-radius-base);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:var(--transition-base);text-decoration:none;box-shadow:var(--shadow-sm)}.btn:focus{outline:2px solid var(--primary-color);outline-offset:2px}.btn:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:none}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:none;border-radius:50%;background-color:var(--gray-200);color:var(--gray-700);cursor:pointer;transition:var(--transition-base);box-shadow:var(--shadow-sm)}.icon-button:hover:not(:disabled){background-color:var(--gray-300);transform:scale(1.1)}.icon-button:disabled{opacity:.6;cursor:not-allowed;transform:none}.icon-button.small{width:28px;height:28px}.icon-button.large{width:44px;height:44px}.icon{display:inline-block;width:var(--icon-size-base);height:var(--icon-size-base);background-size:contain;background-repeat:no-repeat;background-position:center}.icon.small{width:var(--icon-size-sm);height:var(--icon-size-sm)}.icon.large{width:var(--icon-size-lg);height:var(--icon-size-lg)}.icon.play{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%236c757d'%3E%3Cpath d='M8 5v14l11-7z'/%3E%3C/svg%3E")}.icon-button:hover .icon.play{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23495057'%3E%3Cpath d='M8 5v14l11-7z'/%3E%3C/svg%3E")}.icon.heart{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'%3E%3C/path%3E%3C/svg%3E")}.icon-button:hover .icon.heart{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23495057' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'%3E%3C/path%3E%3C/svg%3E")}.icon.heart-filled{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23e74a3b' stroke='%23e74a3b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z'%3E%3C/path%3E%3C/svg%3E")}.icon.music{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18V5l12-2v13'%3E%3C/path%3E%3Ccircle cx='6' cy='18' r='3'%3E%3C/circle%3E%3Ccircle cx='18' cy='16' r='3'%3E%3C/circle%3E%3C/svg%3E")}.icon-button:hover .icon.music{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23495057' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18V5l12-2v13'%3E%3C/path%3E%3Ccircle cx='6' cy='18' r='3'%3E%3C/circle%3E%3Ccircle cx='18' cy='16' r='3'%3E%3C/circle%3E%3C/svg%3E")}.icon.trash{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3 6 5 6 21 6'%3E%3C/polyline%3E%3Cpath d='M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'%3E%3C/path%3E%3C/svg%3E")}.icon-button:hover .icon.trash{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23495057' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3 6 5 6 21 6'%3E%3C/polyline%3E%3Cpath d='M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'%3E%3C/path%3E%3C/svg%3E")}.btn-primary{background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-dark) 100%);color:var(--white);box-shadow:0 2px 5px #646cff4d}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,var(--primary-dark) 0%,var(--primary-color) 100%);transform:translateY(-2px);box-shadow:0 4px 8px #646cff66}.btn-success{background:linear-gradient(135deg,var(--success-color) 0%,var(--success-dark) 100%);color:var(--white);box-shadow:0 2px 5px #1cc88a4d}.btn-success:hover:not(:disabled){background:linear-gradient(135deg,var(--success-dark) 0%,var(--success-color) 100%);transform:translateY(-2px);box-shadow:0 4px 8px #1cc88a66}.btn-warning{background:linear-gradient(135deg,var(--warning-color) 0%,var(--warning-dark) 100%);color:var(--gray-900);box-shadow:0 2px 5px #f6c23e4d}.btn-warning:hover:not(:disabled){background:linear-gradient(135deg,var(--warning-dark) 0%,var(--warning-color) 100%);transform:translateY(-2px);box-shadow:0 4px 8px #f6c23e66}.btn-danger{background:linear-gradient(135deg,var(--danger-color) 0%,var(--danger-dark) 100%);color:var(--white);box-shadow:0 2px 5px #e74a3b4d}.btn-danger:hover:not(:disabled){background:linear-gradient(135deg,var(--danger-dark) 0%,var(--danger-color) 100%);transform:translateY(-2px);box-shadow:0 4px 8px #e74a3b66}.btn-info{background:linear-gradient(135deg,var(--info-color) 0%,var(--info-dark) 100%);color:var(--white);box-shadow:0 2px 5px #4e73df4d}.btn-info:hover:not(:disabled){background:linear-gradient(135deg,var(--info-dark) 0%,var(--info-color) 100%);transform:translateY(-2px);box-shadow:0 4px 8px #4e73df66}.btn-secondary{background-color:var(--gray-200);color:var(--gray-700);box-shadow:0 2px 5px #0000001a}.btn-secondary:hover:not(:disabled){background-color:var(--gray-300);transform:translateY(-2px);box-shadow:0 4px 8px #00000026}.form-group{margin-bottom:var(--spacing-4)}.form-label{display:block;margin-bottom:var(--spacing-2);font-weight:var(--font-weight-medium);color:var(--gray-700)}.form-control{display:block;width:100%;padding:var(--spacing-3);font-size:var(--font-size-base);line-height:1.5;color:var(--gray-700);background-color:var(--white);background-clip:padding-box;border:1px solid var(--gray-400);border-radius:var(--border-radius-base);transition:var(--transition-base)}.form-control:focus{color:var(--gray-700);background-color:var(--white);border-color:var(--primary-color);outline:0;box-shadow:0 0 0 3px #646cff1a}.container{width:100%;max-width:1200px;margin-right:auto;margin-left:auto;padding-right:var(--spacing-4);padding-left:var(--spacing-4)}.container-fluid{width:100%;padding-right:var(--spacing-4);padding-left:var(--spacing-4)}.card{background-color:var(--white);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-md);padding:var(--spacing-6);margin-bottom:var(--spacing-6)}.card-header{padding-bottom:var(--spacing-4);margin-bottom:var(--spacing-4);border-bottom:2px solid var(--gray-200)}.card-title{margin-bottom:0;font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);color:var(--gray-900)}.table{width:100%;border-collapse:collapse;background-color:var(--white);border-radius:var(--border-radius-base);overflow:hidden;box-shadow:var(--shadow-sm)}.table th,.table td{padding:var(--spacing-3) var(--spacing-4);text-align:left;border-bottom:1px solid var(--gray-200)}.table th{font-weight:var(--font-weight-semibold);color:var(--gray-700);background-color:var(--gray-100);text-transform:uppercase;font-size:var(--font-size-sm);letter-spacing:.5px}.table tbody tr:hover{background-color:var(--gray-100)}.alert{padding:var(--spacing-4);border-radius:var(--border-radius-base);margin-bottom:var(--spacing-4);opacity:0;transform:translateY(-10px);transition:opacity .3s ease,transform .3s ease}.alert.show{opacity:1;transform:translateY(0)}.alert.fade-out{opacity:0;transform:translateY(-10px);transition:opacity .5s ease,transform .5s ease}.alert-success{color:#155724;background-color:#d4edda;border-left:4px solid var(--success-color)}.alert-danger{color:#721c24;background-color:#f8d7da;border-left:4px solid var(--danger-color)}.alert-warning{color:#856404;background-color:#fff3cd;border-left:4px solid var(--warning-color)}.alert-info{color:#0c5460;background-color:#d1ecf1;border-left:4px solid var(--info-color)}.back-button{padding:8px 16px;width:100px;background-color:var(--info-color);color:#fff;border:none;border-radius:var(--border-radius-base);cursor:pointer;font-size:14px;font-weight:var(--font-weight-medium);transition:all .3s ease;box-shadow:0 2px 5px #4e73df4d;display:inline-block;text-align:center}.back-button:hover{background-color:var(--info-dark);transform:translateY(-2px);box-shadow:0 4px 8px #4e73df66}@media (max-width: 768px){.container{padding-right:var(--spacing-3);padding-left:var(--spacing-3)}.card{padding:var(--spacing-4);margin-bottom:var(--spacing-4)}h1{font-size:var(--font-size-3xl)}h2{font-size:var(--font-size-2xl)}h3{font-size:var(--font-size-xl)}.btn{padding:var(--spacing-2) var(--spacing-4);font-size:var(--font-size-sm)}.back-button{padding:6px 12px;min-width:80px;width:auto;font-size:12px}.header-actions{gap:8px}.table{font-size:var(--font-size-sm)}.table th,.table td{padding:var(--spacing-2) var(--spacing-3)}}@media (max-width: 480px){.container{padding-right:var(--spacing-2);padding-left:var(--spacing-2)}.card{padding:var(--spacing-3);margin-bottom:var(--spacing-3)}h1{font-size:var(--font-size-2xl)}h2{font-size:var(--font-size-xl)}h3{font-size:var(--font-size-lg)}.btn{padding:var(--spacing-1) var(--spacing-3);font-size:var(--font-size-xs)}.back-button{padding:5px 10px;font-size:11px}.header-actions{gap:6px}.table th,.table td{padding:var(--spacing-1) var(--spacing-2);font-size:var(--font-size-xs)}.icon-button{width:30px;height:30px}.icon-button.small{width:24px;height:24px}.icon{width:16px;height:16px}}:root{font-family:var(--font-family-sans);line-height:1.5;font-weight:var(--font-weight-normal);color-scheme:light dark;color:#ffffffde;background-color:var(--gray-900);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh;background-color:var(--light);color:var(--gray-900)}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}}
