/* SN Reviews: write-a-review section on software pages. Site tokens, fallbacks for safety. */
.snr { margin: 32px 0; padding: 28px 32px; border: 1px solid var(--sn-rule, #e1e4ef); border-radius: var(--sn-r-lg, 18px); background: linear-gradient(180deg, var(--sn-signal-wash, #eef3ff) 0, #fff 140px); scroll-margin-top: calc(var(--sn-hdr-bottom, 72px) + 64px); }
.snr__kicker { margin: 0 0 6px; font-size: 12px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: var(--sn-signal, #2455d8); }
.snr h2 { margin: 0 0 6px; font-size: 1.5rem; letter-spacing: -.01em; color: var(--sn-ink, #17163f); }
.snr__lede { margin: 0 0 20px; color: var(--sn-ink-soft, #3e4262); font-size: 15px; max-width: 62ch; }

.snr fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
.snr legend { float: none; width: auto; padding: 0; margin: 0 0 6px; font-size: 14px; font-weight: 600; color: var(--sn-ink, #17163f); }
.snr-req { color: var(--sn-no, #b42318); }

/* Stars: inputs 1..5 in natural order; :has() lights the chosen star and everything before it. */
.snr-stars { display: inline-flex; gap: 2px; }
.snr-stars input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.snr-stars label { margin: 0; font-size: 26px; line-height: 1; color: #d4d6e4; cursor: pointer; padding: 2px; transition: color .1s, transform .1s; }
.snr-rate--big .snr-stars label { font-size: 40px; }
.snr-stars:has(input:checked) label { color: #f5b400; }
.snr-stars input:checked + label ~ label { color: #d4d6e4; }
.snr-stars:hover label { color: #f5b400; }
.snr-stars label:hover ~ label { color: #d4d6e4; }
.snr-stars label:hover { transform: scale(1.12); }
.snr-stars input:focus-visible + label { outline: 2px solid var(--sn-signal, #2455d8); outline-offset: 2px; border-radius: 4px; }
.snr-rate.is-missing legend { color: var(--sn-no, #b42318); }
.snr__start { margin: 4px 0 0; font-size: 14px; color: var(--sn-muted, #666b88); }

.snr__more { margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--sn-rule-soft, #eef0f7); display: grid; gap: 18px; }
.snr__more[hidden] { display: none; }
.snr-grid { display: grid; gap: 16px 20px; }
.snr-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.snr-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.snr-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.snr-field { display: grid; gap: 6px; min-width: 0; }
.snr-field label { margin: 0; font-size: 14px; font-weight: 600; color: var(--sn-ink, #17163f); }
.snr-field input, .snr-field select, .snr-field textarea { width: 100%; box-sizing: border-box; font: inherit; font-size: 15px; padding: 10px 12px; border: 1px solid var(--sn-rule, #e1e4ef); border-radius: var(--sn-r-sm, 10px); background: #fff; color: var(--sn-ink, #17163f); }
.snr-field input, .snr-field select { height: 46px; }
.snr-field textarea { resize: vertical; min-height: 92px; }
.snr-field :focus { outline: 2px solid var(--sn-signal, #2455d8); outline-offset: 1px; border-color: transparent; }
.snr-hint { margin: 0; font-size: 12.5px; color: var(--sn-muted, #666b88); }
.snr-hint.is-ok { color: var(--sn-yes, #157347); }

.snr-roles { display: flex; flex-wrap: wrap; gap: 8px; }
.snr-roles legend { width: 100%; }
.snr-roles label { display: inline-flex; align-items: center; gap: 8px; margin: 0; padding: 8px 12px; border: 1px solid var(--sn-rule, #e1e4ef); border-radius: 999px; font-size: 14px; color: var(--sn-ink-soft, #3e4262); cursor: pointer; background: #fff; }
.snr-roles label:has(input:checked) { border-color: var(--sn-signal, #2455d8); background: var(--sn-signal-wash, #eef3ff); color: var(--sn-ink, #17163f); }
.snr-roles input { margin: 0; accent-color: var(--sn-signal, #2455d8); }

.snr-extra { border: 1px dashed var(--sn-rule, #e1e4ef); border-radius: var(--sn-r-sm, 10px); padding: 12px 14px; }
.snr-extra summary { cursor: pointer; font-size: 14px; font-weight: 600; color: var(--sn-signal, #2455d8); }
.snr-extra[open] { display: grid; gap: 14px; }
.snr-extra[open] summary { margin-bottom: 4px; }

.snr-about { padding: 18px; border-radius: var(--sn-r, 14px); background: var(--sn-paper-2, #f5f6fb); }
.snr-about__t { margin: 0 0 12px; font-weight: 700; color: var(--sn-ink, #17163f); }

.snr-consent { display: flex; gap: 10px; align-items: flex-start; margin: 0; font-size: 14px; color: var(--sn-ink-soft, #3e4262); line-height: 1.5; }
.snr-consent input { margin-top: 3px; flex: none; width: 18px; height: 18px; accent-color: var(--sn-signal, #2455d8); }
.snr-consent a { color: var(--sn-signal, #2455d8); }

.snr-error { margin: 0; padding: 10px 14px; border-radius: var(--sn-r-sm, 10px); background: var(--sn-no-wash, #fdeceb); color: var(--sn-no, #b42318); font-weight: 600; font-size: 14px; }
.snr-submit { justify-self: start; display: inline-flex; align-items: center; justify-content: center; min-height: 50px; padding: 0 28px; border: 0; border-radius: 999px; background: var(--sn-signal, #2455d8); color: #fff; font: inherit; font-size: 16px; font-weight: 700; cursor: pointer; }
.snr-submit:hover { background: var(--sn-signal-ink, #1a3fa8); }
.snr-submit:disabled { opacity: .6; cursor: wait; }
.snr-submit:focus-visible { outline: 2px solid var(--sn-signal, #2455d8); outline-offset: 3px; }
.snr-fine { margin: 0; font-size: 13px; color: var(--sn-muted, #666b88); max-width: 70ch; }
.snr-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.snr__done { padding: 18px 20px; border-radius: var(--sn-r, 14px); background: #e7f6ee; color: #0f5132; }
.snr__done p { margin: 0; }
.snr__done .snr__done-t { font-size: 1.15rem; font-weight: 700; margin-bottom: 4px; }
.snr__done:focus { outline: none; }

@media (max-width: 991px) { .snr-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) {
	.snr { padding: 22px 18px; }
	.snr-grid--2, .snr-grid--3 { grid-template-columns: minmax(0, 1fr); }
	.snr-rate--big .snr-stars label { font-size: 36px; }
	.snr-submit { width: 100%; }
}
@media (prefers-reduced-motion: reduce) { .snr-stars label { transition: none; } }

/* Theme text-input rules add margins; keep the grid aligned. */
.snr .snr-field input, .snr .snr-field select, .snr .snr-field textarea { margin: 0 !important; box-shadow: none; }
.snr .snr-field label { margin: 0 !important; }
