/* Reviews: the /review form, the /reviews list and a product page's reviews block (api/reviews.py). */

.review-page .faq a { color: inherit; }
.review-page .faq a.btn { color: var(--paper); text-decoration: none; }
.rv-form { display: flex; flex-direction: column; gap: var(--s2); max-width: 32rem; margin: var(--s4) 0 var(--s6); }
.rv-about { margin: 0 0 var(--s2); padding: var(--s3) var(--s4); border-radius: var(--radius-m); background: var(--paper-2); }
.rv-label { display: block; margin: var(--s3) 0 0; font-size: var(--text-s); font-weight: 700; color: var(--ink); }
.rv-input {
  width: 100%; box-sizing: border-box; padding: 12px 14px; border: 0; border-radius: 12px;
  background: var(--card); box-shadow: inset 0 0 0 1.5px var(--line);
  font: inherit; font-size: 16px; color: var(--ink);
}
.rv-input:focus-visible { outline: 0; box-shadow: inset 0 0 0 2px var(--ink); }
textarea.rv-input { resize: vertical; min-height: 8rem; line-height: 1.45; }
.rv-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s3); }
.rv-file { font: inherit; font-size: var(--text-s); }
.rv-form .tiny.muted { margin: 0; }
.rv-stars-field { border: 0; margin: 0; padding: 0; }
.rv-stars { display: inline-flex; flex-direction: row-reverse; gap: 4px; }
.rv-stars input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.rv-stars label { cursor: pointer; width: 44px; height: 44px; display: grid; place-items: center; }
.rv-stars label::before { content: "☆"; font-size: 34px; line-height: 1; color: var(--ink-3); }
.rv-stars input:checked ~ label::before,
.rv-stars label:hover::before, .rv-stars label:hover ~ label::before { content: "★"; color: var(--gold); }
.rv-stars input:focus-visible + label { outline: 2px solid var(--ink); border-radius: 8px; }
.rv-consent { display: flex; gap: var(--s2); align-items: flex-start; margin: var(--s3) 0; font-size: var(--text-s); color: var(--ink-2); }
.rv-consent input { width: 20px; height: 20px; flex: none; margin-top: 1px; }
.rv-msg { min-height: 1.4em; margin: var(--s2) 0 0; font-size: var(--text-s); color: var(--accent); }
.rv-msg.is-ok { color: var(--good); }
.rv-done a { text-decoration: underline; }

.reviews-block { margin: var(--s8) 0 var(--s4); max-width: 40rem; }
.reviews-average { margin: 0 0 var(--s4); font-weight: 600; }
.reviews-average span, .review .review-stars { color: var(--gold); letter-spacing: 2px; }
.review { padding: var(--s4) 0; border-top: 1px solid var(--line); }
.review .review-stars { margin: 0 0 var(--s1); font-size: 20px; }
.review-product { margin: 0 0 var(--s1); font-weight: 700; color: var(--ink-2); }
.review blockquote { margin: 0; }
.review blockquote p { margin: 0 0 var(--s2); color: var(--ink); white-space: pre-line; }
.review-photo { display: block; max-width: min(100%, 22rem); height: auto; margin: var(--s2) 0; border-radius: var(--radius-m); }
.review .review-meta { margin: 0; color: var(--ink-3); }
.review-verified { font-weight: 700; color: var(--ink-2); }
.review-reply { margin: var(--s3) 0 0 var(--s4); padding: var(--s2) var(--s4); border-left: 3px solid var(--line); }
.review-reply p { margin: 0 0 var(--s1); color: var(--ink-2); }
