.post-download-rating{background:linear-gradient(135deg,#7c3aed14 0%,#a78bfa0d 100%);border:1px solid #7c3aed33;border-top:none;border-radius:0 0 8px 8px;flex-direction:column;align-items:center;gap:.75rem;margin-top:0;padding:1rem;animation:.3s ease-out slideIn;display:flex}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.post-download-rating.success{background:linear-gradient(135deg,#10b98114 0%,#34d3990d 100%);border-color:#10b9814d}.rating-prompt{color:var(--color-text-dim);font-size:.9rem}.rating-prompt .rating-thanks{color:#10b981;font-weight:600;animation:.4s ease-out thanksPop}@keyframes thanksPop{0%{opacity:0;transform:scale(.8)}50%{transform:scale(1.1)}to{opacity:1;transform:scale(1)}}.rating-stars{gap:4px;display:flex}.rating-stars.submitting{opacity:.7;pointer-events:none}.rating-stars.locked{pointer-events:none}.rating-star{cursor:pointer;background:0 0;border:none;padding:4px;transition:transform .15s;position:relative}.rating-star:hover:not(:disabled){transform:scale(1.15)}.rating-star:active:not(:disabled){transform:scale(.95)}.rating-star:disabled{cursor:default}.star-svg{display:block}.star-path{fill:#333;transition:fill .15s}.rating-star.hovered .star-path{fill:#a78bfa99}.rating-star.active .star-path{fill:#a78bfa}.rating-star.selected .star-path{fill:#8b5cf6}.rating-stars.locked .rating-star.active .star-path{fill:#a78bfa;filter:drop-shadow(0 0 4px #a78bfa80)}.star-burst{pointer-events:none;width:100%;height:100%;position:absolute;top:50%;left:50%}.star-burst span{background:#a78bfa;border-radius:50%;width:4px;height:4px;animation:.6s ease-out forwards burst;position:absolute;top:50%;left:50%}.star-burst span:first-child{--angle:0deg}.star-burst span:nth-child(2){--angle:45deg}.star-burst span:nth-child(3){--angle:90deg}.star-burst span:nth-child(4){--angle:135deg}.star-burst span:nth-child(5){--angle:180deg}.star-burst span:nth-child(6){--angle:225deg}.star-burst span:nth-child(7){--angle:270deg}.star-burst span:nth-child(8){--angle:315deg}@keyframes burst{0%{transform:translate(-50%,-50%)rotate(var(--angle))translateY(0);opacity:1}to{transform:translate(-50%,-50%)rotate(var(--angle))translateY(20px);opacity:0}}.rating-saving{color:var(--color-text-dim);align-items:center;gap:.5rem;font-size:.85rem;display:flex}.saving-spinner{animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.rating-error{color:#ef4444;font-size:.85rem;animation:.3s ease-out shake}@keyframes shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-4px)}40%,80%{transform:translate(4px)}}
