:root {
  --bg: #f6f5f2; --surface: #fff; --ink: #1d2327; --muted: #5b646b; --line: #d9d6cf;
  --v-bg: #fde8e6; --v-ink: #7a1610;
  --s-bg: #fff4d6; --s-ink: #5c4300;
  --n-bg: #e8edf2; --n-ink: #2b3b4a;
  --font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
body { margin: 0; background: var(--bg); color: var(--ink); font: 16px/1.5 var(--font); }
#rv-root { max-width: 920px; margin: 0 auto; padding: 24px; }
h1 { font-size: 1.4rem; margin: 0 0 8px; }
h2 { font-size: 1.2rem; margin: 32px 0 12px; }
h4 { font-size: 1rem; margin: 16px 0 8px; }
.muted { color: var(--muted); }
.note { background: var(--s-bg); color: var(--s-ink); padding: 8px 12px; border-radius: 6px; }
.summary { list-style: none; display: flex; flex-wrap: wrap; gap: 16px; padding: 0; margin: 16px 0 8px; }
.badge { display: inline-block; padding: 1px 8px; border-radius: 4px; font-size: .85rem; font-weight: 600;
  border: 1px solid currentColor; }
.badge--violation { background: var(--v-bg); color: var(--v-ink); }
.badge--suspicion, .badge--not_run { background: var(--s-bg); color: var(--s-ink); }
.badge--not_run { border-style: dashed; }
.badge--not_checked { background: var(--n-bg); color: var(--n-ink); }
.filters { border: 1px solid var(--line); border-radius: 6px; margin: 16px 0; display: flex; flex-wrap: wrap; gap: 4px 20px; }
.filters__item { cursor: pointer; }
.findings, .locs { list-style: none; padding: 0; margin: 0; }
.finding { background: var(--surface); border: 1px solid var(--line); border-left-width: 4px;
  border-radius: 6px; padding: 8px 12px; margin-bottom: 8px; }
.finding--violation { border-left-color: var(--v-ink); }
.finding--suspicion, .finding--not_run { border-left-color: var(--s-ink); }
.finding__head { display: flex; gap: 12px; align-items: center; }
.finding__rule { color: var(--muted); font-size: .85rem; }
.finding__msg { margin: 6px 0; }
.finding__hint { margin: 6px 0 0; color: var(--muted); }
.loc { margin: 6px 0; font-size: .9rem; }
.loc__path { color: var(--muted); }
.loc__quote { margin: 4px 0 0; padding-left: 12px; border-left: 2px solid var(--line); white-space: pre-wrap; }
mark { background: #ffe066; color: inherit; text-decoration: underline; }
.tree { padding-left: 20px; }
.empty { color: var(--muted); }
:focus-visible { outline: 3px solid #1a56db; outline-offset: 2px; }
@media print { body { background: #fff; } .filters { display: none; } .finding { break-inside: avoid; } }
.table-wrap { overflow-x: auto; margin: 8px 0; }
.data { border-collapse: collapse; width: 100%; background: var(--surface); font-size: .9rem; }
.data th, .data td { border: 1px solid var(--line); padding: 6px 8px; text-align: left; vertical-align: top; }
.data thead th { background: var(--n-bg); color: var(--n-ink); }
.cell--gap { background: var(--v-bg); color: var(--v-ink); }
.cell--auto { background: #e6f2ea; color: #14452a; }
.cell--na { background: var(--n-bg); color: var(--n-ink); }
.cell__status { display: block; font-size: .8rem; text-transform: uppercase; letter-spacing: .03em; }
.artifact summary { cursor: pointer; color: var(--muted); }
/* Сравнение версий: смысл не зависит от цвета (маркеры +/− и подчёркивание/зачёркивание) */
.badge--diff { background: var(--n-bg); color: var(--n-ink); }
.dsec { background: var(--surface); border: 1px solid var(--line); border-radius: 6px; padding: 8px 12px; margin-bottom: 8px; }
.dsec summary { cursor: pointer; }
.paras, .rows { list-style: none; padding-left: 0; margin: 8px 0; }
.rows { padding-left: 16px; list-style: disc; }
.para { margin: 8px 0; padding-left: 8px; border-left: 2px solid var(--line); }
.diff__text { margin: 4px 0; white-space: pre-wrap; }
.seg--ins { background: #dff3e0; color: #12351a; text-decoration: underline; }
.seg--del { background: #fde8e6; color: #7a1610; text-decoration: line-through; }
.seg--ins::before { content: "[+"; font-weight: 700; }
.seg--ins::after { content: "+]"; font-weight: 700; }
.seg--del::before { content: "[\2212"; font-weight: 700; }
.seg--del::after { content: "\2212]"; font-weight: 700; }
.btn:focus-visible, summary:focus-visible, input:focus-visible { outline: 3px solid #1a56db; outline-offset: 2px; }
@media print {
  .result__bar, .filters, button, .upload, #run-error { display: none !important; }
  .dsec, .para, .finding, tr { break-inside: avoid; }
  a[href]::after { content: " (" attr(href) ")"; }
  body, .dsec, .finding { background: #fff; }
  #rv-root, #cmp-root { max-width: none; padding: 0; }
}
@media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto !important; transition: none !important; animation: none !important; } }
