.tool-rating-wrapper{position:relative;display:inline-flex;align-items:center}.rating-trigger-icon{width:16px;height:16px;transition:fill .2s ease}.rating-trigger-count{color:var(--text-secondary);font-size:.85rem;margin-left:.1rem}.tool-rating-popover{position:absolute;top:calc(100% + .5rem);left:50%;transform:translateX(-50%);z-index:50;background:var(--bg-card,#ffffff);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-lg,16px);padding:1.25rem;box-shadow:0 20px 40px rgba(0,0,0,.4),0 0 0 1px rgba(255,255,255,.05);min-width:280px;display:flex;flex-direction:column;align-items:center;gap:1rem}@media (max-width:768px){.tool-rating-popover{position:fixed;top:15%;bottom:auto;left:50%;transform:translateX(-50%);width:90%;max-width:360px;box-shadow:0 20px 60px rgba(0,0,0,.6);padding:1.5rem}.tool-rating-textarea{font-size:16px}.tool-rating-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;background:rgba(0,0,0,.5);z-index:40;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}@media (min-width:769px){.tool-rating-backdrop{display:none}}.tool-rating-close-btn{position:absolute;top:12px;right:12px;background:transparent;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .2s}.tool-rating-close-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.tool-rating-close-btn svg{width:18px;height:18px}.tool-rating-stars-wrapper{display:flex;flex-direction:column;align-items:center;gap:.5rem}.tool-rating-stars{display:flex;gap:.25rem}.tool-rating-star{background:none;border:none;padding:.25rem;cursor:pointer;transition:transform .2s cubic-bezier(.34,1.56,.64,1)}.tool-rating-star:hover{transform:scale(1.15)}.tool-rating-star svg{width:32px;height:32px;transition:fill .2s ease,stroke .2s ease}.tool-rating-star.empty svg{fill:transparent;stroke:var(--text-secondary);opacity:.5}.tool-rating-star.filled svg{fill:#FFD700;stroke:#FFD700;filter:drop-shadow(0 0 6px rgba(255,215,0,.3))}.tool-rating-text{font-size:.9rem;color:var(--text-secondary);font-weight:500}.tool-rating-form{width:100%;display:flex;flex-direction:column;gap:12px;overflow:hidden;margin-top:8px}.tool-rating-textarea{width:100%;min-height:85px;padding:12px 14px;border-radius:12px;background:rgba(128,128,128,.04);border:1px solid var(--border);color:var(--text-primary);font-family:inherit;font-size:16px;resize:none;transition:all .2s ease}.tool-rating-textarea::placeholder{color:var(--text-secondary);opacity:.7}.tool-rating-textarea:focus{outline:none;background:transparent;border-color:var(--accent);box-shadow:0 0 0 3px rgba(59,130,246,.15)}.tool-rating-actions{display:flex;gap:8px;justify-content:flex-end;align-items:center}.tool-rating-cancel-btn{background:transparent;border:none;color:var(--text-secondary);cursor:pointer;padding:8px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.tool-rating-cancel-btn svg{width:20px;height:20px}.tool-rating-cancel-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.tool-rating-submit{background:var(--accent);color:#ffffff;border:none;padding:8px 20px;border-radius:20px;font-weight:600;font-size:14px;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1)}.tool-rating-submit:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px rgba(59,130,246,.35);background:#2563eb}.tool-rating-submit:disabled{opacity:.6;cursor:not-allowed}.tool-rating-success{display:flex;align-items:center;justify-content:center;gap:.5rem;color:var(--success);font-weight:600;background:rgba(16,185,129,.1);padding:.75rem 1.25rem;border-radius:2rem;width:100%;border:1px solid rgba(16,185,129,.2)}.tool-rating-success svg{width:20px;height:20px}.popover-enter{animation:popoverSlideDown .3s cubic-bezier(.16,1,.3,1) forwards}.slide-down{animation:slideDown .3s cubic-bezier(.16,1,.3,1) forwards}.fade-in{animation:fadeIn .3s ease forwards}@keyframes popoverSlideDown{0%{opacity:0;transform:translateX(-50%) translateY(-20px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}