/* ============================================================
   Tool Rating Widget — CSS
   Star color #F5B301 · dark + light mode · mobile-first
   ============================================================ */

.trw-widget {
    --trw-star:        #F5B301;
    --trw-star-empty:  rgba(0,0,0,0.14);
    --trw-text:        #1f2937;
    --trw-muted:       #6b7280;
    --trw-bg:          transparent;
    --trw-success:     #16a34a;
    --trw-radius:      12px;

    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    display: inline-flex;
    flex-direction: column;
    gap: 8px;
    padding: 14px 18px;
    border-radius: var(--trw-radius);
    background: var(--trw-bg);
    max-width: 100%;
}

/* Dark mode — auto via prefers-color-scheme + manual body class */
@media (prefers-color-scheme: dark) {
    .trw-widget {
        --trw-text:       #f3f4f6;
        --trw-muted:      rgba(243,244,246,0.6);
        --trw-star-empty: rgba(255,255,255,0.18);
    }
}

body.dark-mode .trw-widget,
body.dark-mode-spinumbers .trw-widget {
    --trw-text:       #f3f4f6;
    --trw-muted:      rgba(243,244,246,0.6);
    --trw-star-empty: rgba(255,255,255,0.18);
}

/* ── Label ── */
.trw-label {
    font-size: 1.5rem;
    font-weight: 600;
    color: var(--trw-text);
    letter-spacing: 0.2px;
    text-align: center;
}

/* ── Stars row ── */
.trw-stars-row {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

/* ── Star stack (base + fill overlay + buttons) ── */
.trw-stars {
    position: relative;
    display: inline-block;
    line-height: 1;
    font-size: 1.9rem;
    letter-spacing: 3px;
    white-space: nowrap;
    height: 1.9rem;
}

.trw-stars-base {
    color: var(--trw-star-empty);
    pointer-events: none;
}

.trw-stars-fill {
    position: absolute;
    top: 0;
    left: 0;
    overflow: hidden;
    color: var(--trw-star);
    pointer-events: none;
    white-space: nowrap;
    width: 0%;
    transition: width 0.5s cubic-bezier(0.34, 1.4, 0.64, 1);
}

/* Invisible clickable buttons layered over the stars */
.trw-star-btn {
    position: absolute;
    top: 0;
    width: 20%;
    height: 100%;
    background: transparent;
    border: none;
    margin: 0;
    padding: 0;
    cursor: pointer;
    z-index: 3;
    -webkit-tap-highlight-color: transparent;
}

.trw-star-btn[data-value="1"] { left: 0%; }
.trw-star-btn[data-value="2"] { left: 20%; }
.trw-star-btn[data-value="3"] { left: 40%; }
.trw-star-btn[data-value="4"] { left: 60%; }
.trw-star-btn[data-value="5"] { left: 80%; }

.trw-star-btn:focus-visible {
    outline: 2px solid var(--trw-star);
    outline-offset: 2px;
    border-radius: 3px;
}

/* Hover preview — JS adds .trw-hovering and sets fill width */
.trw-stars.trw-hovering .trw-stars-fill {
    transition: width 0.12s ease;
    opacity: 0.85;
}

/* Click pop animation */
.trw-stars.trw-pop {
    animation: trwPop 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
}

@keyframes trwPop {
    0%   { transform: scale(1); }
    45%  { transform: scale(1.12); }
    100% { transform: scale(1); }
}

/* ── Meta (avg / count) ── */
.trw-meta {
    display: flex;
    align-items: baseline;
    gap: 2px;
    font-size: 0.95rem;
    color: var(--trw-text);
}

.trw-avg {
    font-size: 1.15rem;
    font-weight: 800;
    color: var(--trw-text);
}

.trw-slash {
    color: var(--trw-muted);
    font-weight: 600;
    margin-right: 4px;
}

.trw-count-wrap {
    color: var(--trw-muted);
    font-size: 0.88rem;
    font-weight: 500;
}

.trw-count { font-weight: 700; color: var(--trw-text); }

/* ── Success / error message ── */
.trw-message {
    font-size: 0.82rem;
    font-weight: 600;
    min-height: 18px;
    opacity: 0;
    transform: translateY(-4px);
    transition: opacity 0.3s ease, transform 0.3s ease;
    color: var(--trw-success);
}

.trw-message.trw-show {
    opacity: 1;
    transform: translateY(0);
}

.trw-message.trw-error {
    color: #dc2626;
}

/* ── Voted state — lock interactions ── */
.trw-widget.trw-voted .trw-star-btn {
    cursor: default;
}

/* ── Responsive ── */
@media (max-width: 480px) {
    .trw-widget { padding: 12px 14px; }
    .trw-stars { font-size: 1.7rem; height: 1.7rem; }
    .trw-avg { font-size: 1.05rem; }
}