.gradvreviews-block { margin-top: 2rem; padding: 1rem 0; border-top: 1px solid #eee; }
.gradvreviews-title { font-size: 1.25rem; margin-bottom: 0.75rem; }
.gradvreviews-aggregate { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.5rem; }
.gradvreviews-stars { color: #d4d4d4; letter-spacing: 2px; font-size: 1.1rem; line-height: 1; }
.gradvreviews-star.is-full { color: #c89000; }
.gradvreviews-star.is-half { background: linear-gradient(90deg, #c89000 50%, #d4d4d4 50%); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.gradvreviews-aggregate-text { color: #666; font-size: 0.9rem; }

.gradvreviews-form-wrap > summary { cursor: pointer; }
.gradvreviews-form .form-group { margin-bottom: 0.75rem; }
/* v2.2.0 — WCAG 1.3.2/2.4.3: DOM order = visual order. Il template loopa
   da 5 a 1; senza row-reverse le stelle appaiono 5-4-3-2-1 visivamente
   (sinistra = max voto), il sibling-selector qua sotto colora i successivi
   nel DOM (= a destra) al hover, dando l'effetto cumulativo corretto. */
.gradvreviews-rating-input { display: inline-flex; gap: 0.25rem; }
.gradvreviews-rating-label input { position: absolute; opacity: 0; }
.gradvreviews-rating-label span[aria-hidden] { font-size: 1.5rem; color: #d4d4d4; cursor: pointer; line-height: 1; }
.gradvreviews-rating-label input:checked ~ span[aria-hidden],
.gradvreviews-rating-label:hover span[aria-hidden],
.gradvreviews-rating-label:hover ~ .gradvreviews-rating-label span[aria-hidden] { color: #c89000; }
.gradvreviews-form-msg { margin-top: 0.5rem; font-size: 0.9rem; }
.gradvreviews-form-msg.is-success { color: #198754; }
.gradvreviews-form-msg.is-error { color: #dc3545; }

.gradvreviews-list { list-style: none; padding: 0; margin: 1rem 0 0; }
.gradvreviews-item { padding: 0.75rem 0; border-bottom: 1px solid #f0f0f0; }
.gradvreviews-item:last-child { border-bottom: none; }
.gradvreviews-item-head { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 0.25rem; }
.gradvreviews-author { font-weight: 600; }
.gradvreviews-verified { font-size: 0.75rem; }
.gradvreviews-date { margin-left: auto; }
.gradvreviews-item-body { margin: 0.25rem 0 0; color: #333; }
.gradvreviews-reply { margin: 0.5rem 0 0 1rem; padding: 0.5rem 0.75rem; border-left: 3px solid #ccc; background: #fafafa; font-size: 0.95rem; }
.gradvreviews-reply p { margin: 0.25rem 0 0; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

/* Media upload form preview (Phase 2b d1) */
.gradvreviews-media-preview { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.gradvreviews-media-preview-item { position: relative; width: 72px; height: 72px; border-radius: 4px; overflow: hidden; background: #f0f0f0; }
.gradvreviews-media-preview-item img,
.gradvreviews-media-preview-item video { width: 100%; height: 100%; object-fit: cover; display: block; }
.gradvreviews-media-preview-item .gradvreviews-media-remove { position: absolute; top: 2px; right: 2px; width: 20px; height: 20px; padding: 0; line-height: 18px; border: 0; border-radius: 50%; background: rgba(0,0,0,0.6); color: #fff; cursor: pointer; font-size: 14px; }

/* Gallery in review list */
.gradvreviews-media-gallery { list-style: none; padding: 0; margin: 0.5rem 0 0; display: flex; flex-wrap: wrap; gap: 0.5rem; }
.gradvreviews-media-item { width: 80px; height: 80px; }
.gradvreviews-media-link { display: block; width: 100%; height: 100%; border-radius: 4px; overflow: hidden; background: #f0f0f0; text-decoration: none; }
.gradvreviews-media-thumb { display: block; width: 100%; height: 100%; object-fit: cover; }
.gradvreviews-media-thumb--video { display: flex; align-items: center; justify-content: center; background: #222; color: #fff; font-size: 1.5rem; }

/* Badge widget (Phase 2b deliverable 3) */
.gradvreviews-badge { display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.25rem 0.5rem; border-radius: 4px; background: #f8f9fa; color: #222; font-size: 0.9rem; line-height: 1; }
.gradvreviews-badge--compact { padding: 0.2rem 0.4rem; font-size: 0.8rem; }
.gradvreviews-badge-link { display: inline-flex; align-items: center; gap: 0.35rem; color: inherit; text-decoration: none; }
.gradvreviews-badge-link:hover { text-decoration: underline; }
.gradvreviews-badge-stars { color: #d4d4d4; letter-spacing: 1px; }
.gradvreviews-badge-star.is-full { color: #c89000; }
.gradvreviews-badge-star.is-half { background: linear-gradient(90deg, #c89000 50%, #d4d4d4 50%); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.gradvreviews-badge-rating { font-weight: 600; }
.gradvreviews-badge-count { color: #666; }

/* Slider (Phase 2b deliverable 4) — scroll-snap, no Swiper */
.gradvreviews-slider { margin: 2rem 0; }
.gradvreviews-slider-title { font-size: 1.5rem; margin-bottom: 1rem; text-align: center; }
.gradvreviews-slider-track { list-style: none; padding: 0 0 0.5rem; margin: 0; display: flex; gap: 1rem; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: thin; }
.gradvreviews-slider-track::-webkit-scrollbar { height: 6px; }
.gradvreviews-slider-track::-webkit-scrollbar-thumb { background: #ccc; border-radius: 3px; }
.gradvreviews-slider-card { flex: 0 0 260px; max-width: 260px; scroll-snap-align: start; padding: 1rem; background: #fff; border: 1px solid #eee; border-radius: 6px; box-shadow: 0 1px 3px rgba(0,0,0,0.04); display: flex; flex-direction: column; gap: 0.35rem; }
.gradvreviews-slider-card-title { margin: 0; font-size: 0.95rem; }
.gradvreviews-slider-card-body { margin: 0; font-size: 0.9rem; color: #444; flex: 1; }
.gradvreviews-slider-card-meta { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; font-size: 0.85rem; }
.gradvreviews-slider-card-author { font-weight: 600; }
.gradvreviews-slider-card-context { display: block; font-size: 0.8rem; color: #666; text-decoration: none; border-top: 1px solid #f0f0f0; padding-top: 0.4rem; margin-top: 0.2rem; }
.gradvreviews-slider-card-context:hover { color: #222; text-decoration: underline; }
@media (max-width: 480px) { .gradvreviews-slider-card { flex: 0 0 80%; max-width: 80%; } }

/* Lightbox */
.gradvreviews-lightbox { position: fixed; inset: 0; background: rgba(0,0,0,0.85); z-index: 10000; display: flex; align-items: center; justify-content: center; padding: 1rem; }
.gradvreviews-lightbox[hidden] { display: none; }
.gradvreviews-lightbox img,
.gradvreviews-lightbox video { max-width: 95vw; max-height: 90vh; display: block; }
.gradvreviews-lightbox-close { position: absolute; top: 1rem; right: 1rem; width: 40px; height: 40px; border: 0; border-radius: 50%; background: rgba(255,255,255,0.2); color: #fff; font-size: 1.5rem; line-height: 1; cursor: pointer; }

/* Helpful voting (v1.7.0) — Classic Minimal: no border-radius > 2px, no gradient. */
.gr-review-vote { display: flex; align-items: center; gap: 0.5rem; margin-top: 0.75rem; flex-wrap: wrap; }
.gr-review-vote__label { font-size: 0.85rem; color: #6B7280; margin-right: 0.25rem; }
.gr-review-vote__btn { display: inline-flex; align-items: center; gap: 0.25rem; padding: 0.25rem 0.6rem; border: 1px solid #E6E8EC; background: #FFFFFF; color: #0B1220; font-size: 0.85rem; cursor: pointer; border-radius: 2px; transition: background 180ms cubic-bezier(0.2, 0.7, 0.2, 1), border-color 180ms cubic-bezier(0.2, 0.7, 0.2, 1); }
.gr-review-vote__btn:hover:not([disabled]) { background: #F7F8FA; border-color: #9AA1AB; }
.gr-review-vote__btn:focus-visible { outline: 3px solid #4361ee; outline-offset: 2px; }
.gr-review-vote__btn[disabled] { opacity: 0.6; cursor: wait; }
.gr-review-vote__btn .material-icons { font-size: 1rem; line-height: 1; }
.gr-review-vote__btn--up.is-active { background: #198754; border-color: #198754; color: #FFFFFF; }
.gr-review-vote__btn--down.is-active { background: #6B7280; border-color: #6B7280; color: #FFFFFF; }
.gr-review-vote__count { font-variant-numeric: tabular-nums; min-width: 1ch; }
.gr-review-vote__msg { font-size: 0.8rem; color: #6B7280; }
.gr-review-vote__msg.is-error { color: #c0392b; }

/* Q&A (v1.8.0) — Classic Minimal: radius <= 2px, no gradient, motion 180ms. */
.gr-qa-block { margin-top: 2rem; padding-top: 1rem; border-top: 1px solid #E6E8EC; }
.gr-qa-block__title { font-size: 1.25rem; line-height: 1.15; margin-bottom: 0.75rem; color: #0B1220; }
.gr-qa-empty { font-style: italic; }

.gr-qa-list { list-style: none; padding: 0; margin: 0 0 1rem; }
.gr-qa-question { padding: 0.75rem 0; border-bottom: 1px solid #EEF0F3; }
.gr-qa-question:last-child { border-bottom: none; }
.gr-qa-question__header { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 0.25rem; }
.gr-qa-question__icon { font-size: 1.1rem; color: #6B7280; }
.gr-qa-question__author { font-weight: 600; color: #0B1220; }
.gr-qa-question__date { margin-left: auto; color: #6B7280; }
.gr-qa-question__text { margin: 0.25rem 0 0; color: #0B1220; line-height: 1.55; }

.gr-qa-answers { list-style: none; padding: 0; margin: 0.5rem 0 0 1rem; }
.gr-qa-answer { padding: 0.5rem 0.75rem; margin-top: 0.4rem; background: #F7F8FA; border-left: 3px solid #E6E8EC; border-radius: 2px; }
.gr-qa-answer--admin { background: #EEF0F3; border-left-color: #4361ee; }
.gr-qa-answer__header { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 0.25rem; }
.gr-qa-answer__author { font-weight: 600; color: #0B1220; font-size: 0.9rem; }
.gr-qa-answer__badge { font-size: 0.7rem; }
.gr-qa-answer__date { margin-left: auto; color: #6B7280; }
.gr-qa-answer__text { margin: 0; color: #0B1220; line-height: 1.55; font-size: 0.95rem; }

.gr-qa-reply-toggle { margin-top: 0.5rem; }
.gr-qa-reply-toggle__summary { cursor: pointer; color: #4361ee; font-size: 0.85rem; }
.gr-qa-ask { margin-top: 1rem; }
.gr-qa-ask__summary { cursor: pointer; }

.gr-qa-form .form-group { margin-bottom: 0.75rem; }
.gr-qa-form__msg { margin-top: 0.5rem; font-size: 0.9rem; }
.gr-qa-form__msg.is-success { color: #198754; }
.gr-qa-form__msg.is-error { color: #c0392b; }

/* Honeypot: off-screen, MAI display:none (bot li skippano). */
.gr-qa-honeypot { position: absolute !important; left: -9999px !important; width: 1px !important; height: 1px !important; opacity: 0 !important; pointer-events: none; }

/* ============================
 * Q&A helpful voting (v1.9.0) — Classic Minimal, parallelo a gr-review-vote.
 * ============================ */
.gr-qa-vote { display: flex; align-items: center; gap: 0.5rem; margin-top: 0.5rem; flex-wrap: wrap; }
.gr-qa-vote__label { font-size: 0.85rem; color: #6B7280; margin-right: 0.25rem; }
.gr-qa-vote__btn { display: inline-flex; align-items: center; gap: 0.25rem; padding: 0.25rem 0.6rem; border: 1px solid #E6E8EC; background: #FFFFFF; color: #0B1220; font-size: 0.85rem; cursor: pointer; border-radius: 2px; transition: background 180ms cubic-bezier(0.2, 0.7, 0.2, 1), border-color 180ms cubic-bezier(0.2, 0.7, 0.2, 1); }
.gr-qa-vote__btn:hover:not([disabled]) { background: #F7F8FA; border-color: #9AA1AB; }
.gr-qa-vote__btn:focus-visible { outline: 3px solid var(--gr-accent, #4361ee); outline-offset: 2px; }
.gr-qa-vote__btn[disabled] { opacity: 0.6; cursor: wait; }
.gr-qa-vote__btn .material-icons { font-size: 1rem; line-height: 1; }
.gr-qa-vote__btn--up.is-active { background: var(--gr-success, #198754); border-color: var(--gr-success, #198754); color: #FFFFFF; }
.gr-qa-vote__btn--down.is-active { background: var(--gr-sale, #c0392b); border-color: var(--gr-sale, #c0392b); color: #FFFFFF; }
.gr-qa-vote__count { font-variant-numeric: tabular-nums; min-width: 1ch; }
.gr-qa-vote__msg { font-size: 0.8rem; color: #6B7280; }
.gr-qa-vote__msg.is-error { color: #c0392b; }
