/* The readable report, the express check, the comparison and the subscription pages. Loaded after styles.css;
   classes are prefixed rr- so the operators' technical report keeps its own layout. The page reads as a document:
   the summary and each part under a heavy rule, sections and rows apart by space alone (no hairlines, no frames —
   owner, 2026-10-12), status as a coloured word rather than a badge. The report
   itself has a contents column beside the text (a bar on top on narrow screens) so 15 topics never read as one
   endless scroll (2026-10-04). */
.report-frame { max-width: 948px; }
.rr-frame { max-width: 1240px; }
.rr { max-width: 900px; }
.rr h1 { margin-bottom: 6px; }
.rr-meta { margin: 0 0 4px; color: var(--muted); font-size: var(--fs-s); }
.rr-meta span { white-space: nowrap; }
.rr-lead { margin: 0 0 18px; color: var(--muted); line-height: 1.5; }
.rr-card { margin: 0; padding: 30px 0 4px; }
.rr-note { margin: 0 0 10px; color: var(--muted); font-size: var(--fs-s); line-height: 1.5; }

/* Status: a glyph in a fixed column, a word in the status colour. */
.rr-icon { display: inline-block; flex: none; width: 1.1em; font-weight: 700; text-align: center; }
.rr-icon-ok { color: var(--ok); }
.rr-icon-attention { color: var(--warn); }
.rr-icon-info { color: var(--info); }
.rr-icon-unknown { color: var(--none); }
.rr-pill { display: inline-block; font-size: var(--fs-xs); font-weight: 600; white-space: nowrap; }
.rr-pill-ok { color: var(--ok); }
.rr-pill-attention { color: var(--warn); }
.rr-pill-info { color: var(--info); }
.rr-pill-unknown { color: var(--none); }
.rr-pill-test { color: var(--muted); border: 1px solid var(--line-strong); border-radius: 3px; padding: 0 5px; font-size: var(--fs-xs); letter-spacing: .03em; }

/* Report layout: contents column and text. */
.rr-layout { display: grid; grid-template-columns: 210px minmax(0, 1fr); gap: 0 44px; align-items: start; }
.rr-layout > .rr { margin: 0; }
.rr-toc { position: sticky; top: 0; max-height: 100vh; overflow-y: auto; padding: 30px 4px 24px 0; font-size: var(--fs-xs); line-height: 1.35; }
.rr-toc-title { margin: 0 0 8px; color: var(--faint); font-size: var(--fs-xs); }
.rr-toc-list, .rr-toc-list ol { list-style: none; margin: 0; padding: 0; }
.rr-toc-list > li { margin: 0 0 6px; }
.rr-toc-list a { display: flex; gap: 4px; padding: 2px 0; color: var(--muted); text-decoration: none; }
.rr-toc-list a:hover { color: var(--ink); }
.rr-toc-list a.is-current { color: var(--ink); font-weight: 600; }
.rr-toc-part > a { margin-top: 10px; color: var(--ink); font-weight: 600; }
.rr-toc-part ol { margin: 2px 0 0; }
.rr-toc-part ol a { padding-left: 10px; }
/* Status in the contents: a section that needs attention is named in the attention colour; no glyph column. */
.rr-toc-list a.rr-toc-attention { color: var(--warn); }
.rr-toc-list a.rr-toc-unknown { color: var(--faint); }
.rr-toc-bar { display: none; }

/* Cover: what the plot is, where and when, and why to trust the report. */
.rr-cover { display: grid; grid-template-columns: minmax(280px, 44%) minmax(0, 1fr); gap: 32px; align-items: start; padding: 28px 0 20px; }
.rr-cover-picture { order: -1; }
.rr-mono { font-family: var(--font-mono); font-weight: 400; letter-spacing: -.01em; }
/* A note behind «i»: closed it is a small circled letter after the value; open, the note reads under it. */
.rr-tip { display: inline; font-weight: 400; }
.rr-tip > summary { display: inline-flex; align-items: center; justify-content: center; width: 1.15em; height: 1.15em; margin-left: .35em;
  border: 1px solid var(--line-strong); border-radius: 50%; color: var(--muted); font: italic 700 .78em/1 var(--font-text); vertical-align: .12em;
  list-style: none; cursor: pointer; }
.rr-tip > summary::-webkit-details-marker { display: none; }
.rr-tip > summary:hover, .rr-tip[open] > summary { border-color: var(--ink); color: var(--ink); }
.rr-tip-text { display: block; margin: 3px 0 0; color: var(--muted); font-size: var(--fs-xs); font-style: normal; line-height: 1.45; }
/* The cover as a map sheet: the frame's edges in degrees, north up, a scale bar (identity «План участка», 2026-10-12). */
.rr-sheet { position: relative; padding: 18px; border: 1px solid var(--ink); background: var(--surface); }
.rr-sheet img { display: block; width: 100%; height: auto; max-height: none; aspect-ratio: 1 / 1; object-fit: cover; border-radius: 0; }
.rr-sheet-tick { position: absolute; font: 10px/1 var(--font-mono); color: var(--ink); white-space: nowrap; }
.rr-sheet-top { top: 4px; }
.rr-sheet-top.rr-sheet-start { left: 18px; }
.rr-sheet-top.rr-sheet-end { right: 18px; }
.rr-sheet-side { left: 3px; writing-mode: vertical-rl; transform: rotate(180deg); }
.rr-sheet-side.rr-sheet-start { top: 18px; }
.rr-sheet-side.rr-sheet-end { bottom: 18px; }
/* «Что изменилось с прошлой проверки» (2026-10-19): the frames «было» and «стало» side by side, one under the other on a phone. */
.rr-changes-frames { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin: 0 0 8px; }
.rr-changes-frames figure { margin: 0; }
.rr-changes-frames img { display: block; width: 100%; height: auto; image-rendering: pixelated; }
.rr-changes-frames figcaption { margin-top: 6px; color: var(--muted); font-size: var(--fs-s); }
@media (max-width: 640px) { .rr-changes-frames { grid-template-columns: 1fr; } }
.rr-sheet-north { position: absolute; right: 26px; top: 26px; width: 26px; height: 36px; }
.rr-sheet-north text { font: 700 10px var(--font-ui); fill: #fff; stroke: #1c201e; stroke-width: .5; }
.rr-sheet-scale { position: absolute; left: 28px; bottom: 26px; width: calc((100% - 36px) * var(--scale) / 100); color: #fff; font: 10px/1 var(--font-mono); text-shadow: 0 0 3px #000, 0 0 2px #000; }
.rr-sheet-scale-labels { display: flex; justify-content: space-between; margin: 0 -4px 3px; }
.rr-sheet-scale-bar { display: flex; height: 6px; border: 1px solid #fff; box-shadow: 0 0 2px rgba(0, 0, 0, .7); }
.rr-sheet-scale-bar i { flex: 1; }
.rr-sheet-scale-bar i:nth-child(odd) { background: #fff; }
/* Topographic signs beside the topics: the eye's index, never the only carrier of meaning. */
.topo-sign { flex: none; align-self: center; }
.topo-ink { fill: none; stroke: var(--ink); stroke-width: 1.6; }
.topo-dash { stroke-dasharray: 3 2.2; }
.topo-fill { fill: var(--ink); }
.topo-water { fill: none; stroke: var(--topo-water); stroke-width: 1.7; }
.topo-forest { fill: none; stroke: var(--topo-forest); stroke-width: 1.7; }
.topo-relief { fill: none; stroke: var(--topo-relief); stroke-width: 1.6; }
.topo-relief-fill { fill: var(--topo-relief); }
.topo-road-fill { fill: var(--topo-road); opacity: .55; }
.topo-text { font: 15px var(--font-mono); fill: var(--ink); }
.rr-cover h1 { margin: 2px 0 14px; }
.rr-cover-facts { display: grid; grid-template-columns: 1fr; margin: 0 0 12px; border-top: 2px solid var(--ink); }
.rr-cover-facts div { display: grid; grid-template-columns: 9.5em minmax(0, 1fr); gap: 0 12px; align-items: baseline; padding: 6px 0; border-bottom: 1px solid var(--line-strong); }
.rr-cover-facts dt { color: var(--muted); font-size: var(--fs-s); }
.rr-cover-facts dd { margin: 0; font-size: var(--fs-s); font-weight: 700; }
.rr-cover-facts small { display: block; color: var(--muted); font-size: var(--fs-xs); font-weight: 400; }
.rr-trust { margin: 0; color: var(--muted); font-size: var(--fs-s); }
.rr-trust::before { content: "✓ "; color: var(--ok); font-weight: 700; }
.rr-cover-caveat { margin: 6px 0 0; }
.rr-cover-picture { margin: 0; }
.rr-cover-picture > img, .rr-cover-picture > svg { display: block; width: 100%; height: auto; max-height: 320px; object-fit: cover; border-radius: 3px; background: var(--soft); }
.rr-cover-ground { fill: var(--soft); }
.rr-cover-contour { fill: rgba(22, 122, 84, .08); stroke: #0d5a3d; stroke-width: 2.5; stroke-linejoin: round; }
.rr-cover-picture figcaption { margin: 6px 0 0; font-size: var(--fs-xs); }

/* The verdict at the top: opened by the same heavy rule as a part, no frame. */
.rr-verdict-box { display: flex; flex-direction: column; gap: 0; margin: 10px 0 0; padding: 16px 0 4px; border-top: 2px solid var(--ink); scroll-margin-top: 14px; }
.rr-verdict-box > .rr-icon { display: none; }
.rr-verdict-body { flex: 1; min-width: 0; }
.rr-verdict-box h2 { margin: 0 0 12px; font-size: var(--fs-l); line-height: 1.35; }
.rr-verdict-box p { margin: 0; line-height: 1.5; }
.rr-purpose { display: flex; flex-wrap: wrap; gap: 4px 16px; align-items: baseline; margin: 0 0 8px; font-size: var(--fs-s); }
.rr-purpose .rr-note { margin: 0; }
.rr-purpose select { width: auto; min-width: 14em; padding: 5px 8px; font-size: var(--fs-s); font-weight: 700; }
.rr-purpose label { display: inline; font-weight: 400; }
.rr-purpose a { color: var(--muted); text-decoration: none; padding-bottom: 1px; border-bottom: 2px solid transparent; white-space: nowrap; }
.rr-purpose a:hover { color: var(--ink); }
.rr-purpose a.is-active { color: var(--ink); font-weight: 600; border-bottom-color: var(--ink); }
.rr-verdict-box .rr-purpose-lead { margin: 6px 0 10px; }
.rr-verdict-box .rr-counts { margin: 0 0 4px; font-size: var(--fs-s); }
.rr-counts .rr-pill { font-size: var(--fs-s); margin-right: 1.1em; }
.rr-summary-group { margin: 18px 0 4px; font-size: var(--fs-s); }
.rr-verdict-box .rr-summary-unknown { margin: 14px 0 0; }
/* Old reports' highlight list (express check keeps its own list). */
.rr-highlight-list { list-style: none; margin: 8px 0 0; padding: 0; }
.rr-highlight-list li { display: grid; grid-template-columns: 1.4em 1fr; gap: 6px; align-items: start; padding: 5px 0; line-height: 1.45; }

.rr-checklist h2, .rr-card > h2 { margin: 0 0 10px; font-size: var(--fs-l); }
.rr-checklist ol { margin: 0; padding-left: 22px; }
.rr-checklist li { padding: 5px 0; line-height: 1.45; }
.rr-checklist small { display: block; margin-top: 2px; color: var(--muted); font-size: var(--fs-s); }
.rr-checklist small a { color: inherit; text-decoration: underline dotted; text-underline-offset: 3px; }
#checklist, #history, #plot-map { scroll-margin-top: 14px; }

.rr-passport { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 28px; margin: 0; }
.rr-passport div { display: grid; grid-template-columns: 9.5em 1fr; gap: 10px; padding: 5px 0; }
.rr-passport dt { color: var(--muted); font-size: var(--fs-s); }
.rr-passport dd { margin: 0; font-size: var(--fs-s); font-weight: 600; }
.rr-passport small { display: block; color: var(--muted); font-size: var(--fs-xs); font-weight: 400; }

.rr-summary { list-style: none; margin: 0; padding: 0; }
.rr-summary a { display: grid; grid-template-columns: 22px minmax(9em, 14em) 1fr; gap: 10px; align-items: baseline; padding: 5px 0; color: inherit; text-decoration: none; }
.rr-summary a:hover .rr-summary-title { text-decoration: underline; }
.rr-summary-title { font-weight: 600; }
.rr-summary-verdict { color: var(--ink-soft); font-size: var(--fs-s); line-height: 1.4; }
/* In the purpose's own questions the status is the answer itself: attention in colour and bold, unknown greyed. */
.rr-row-attention .rr-summary-verdict { font-weight: 700; }
.rr-row-unknown .rr-summary-verdict { color: var(--muted); }
/* Bargaining points: one sentence each, no status column. */
.rr-bargaining { list-style: disc; padding-left: 1.2em; }
.rr-bargaining li { padding: 3px 0; }
.rr-bargaining a { display: inline; padding: 0; }
.rr-bargaining a:hover .rr-summary-verdict { text-decoration: underline; }
/* The brief on top: money rows have no sign column; three steps are a short numbered list; one bargaining line. */
.rr-summary.rr-money a, .rr-money-row { display: grid; grid-template-columns: minmax(9em, 14em) 1fr; gap: 10px; align-items: baseline; padding: 5px 0; color: inherit; text-decoration: none; }
.rr-steps { margin: 0; padding-left: 22px; }
.rr-steps li { padding: 3px 0; line-height: 1.45; }
.rr-steps a { color: inherit; text-decoration: none; }
.rr-steps a:hover { text-decoration: underline; }
.rr-verdict-box .rr-steps + .rr-note { margin: 4px 0 0; }
.rr-bargain-line { margin: 14px 0 0; font-size: var(--fs-s); line-height: 1.45; }
.rr-bargain-line a { color: inherit; }

/* The plot among its neighbours: a word and a dot on a thin scale, no badges. */
.rr-neighbour-list { list-style: none; margin: 4px 0 0; padding: 0; }
.rr-neighbour-list li { display: grid; grid-template-columns: minmax(9em, 14em) minmax(0, 1fr); gap: 4px 14px; padding: 6px 0; line-height: 1.45; }
.rr-neighbour-title { color: var(--ink); font-weight: 600; text-decoration: none; }
.rr-neighbour-title:hover { text-decoration: underline; }
.rr-neighbour-body { display: grid; gap: 3px; }
.rr-neighbour-text { font-weight: 600; }
.rr-neighbour-body small { color: var(--muted); font-size: var(--fs-xs); }
.rr-scale { display: inline-flex; align-items: center; gap: 8px; color: var(--faint); font-size: var(--fs-xs); }
.rr-scale-track { position: relative; width: 140px; height: 2px; background: var(--line-strong); }
.rr-scale-dot { position: absolute; top: -4px; width: 10px; height: 10px; margin-left: -5px; border-radius: 50%; background: var(--ink); }
#neighbours { scroll-margin-top: 14px; }

/* History of the plot: one time line, newest first. */
.rr-timeline { list-style: none; margin: 4px 0 0; padding: 0; }
.rr-timeline li { display: grid; grid-template-columns: 7.5em minmax(0, 1fr); gap: 12px; padding: 5px 0; line-height: 1.45; }
.rr-timeline-year { font-weight: 600; font-variant-numeric: tabular-nums; }
.rr-timeline-what a { color: inherit; text-decoration: none; }
.rr-timeline-what a:hover { text-decoration: underline; }
.rr-timeline-what small { display: block; color: var(--muted); font-size: var(--fs-xs); }
.rr-timeline-toggle { margin-top: 6px; font-size: var(--fs-s); }

/* Parts and sections. */
.rr-part { margin: 52px 0 0; padding-top: 14px; border-top: 2px solid var(--ink); scroll-margin-top: 14px; }
.rr-part h2 { margin: 0 0 4px; font-size: var(--fs-xl); }
.rr-part .rr-note { margin: 0 0 4px; font-size: var(--fs-s); }
.rr-section { scroll-margin-top: 14px; }
.rr-part + .rr-section { padding-top: 18px; }
/* The standard index name beside the plain wording in the farm and forest indicators. */
.rr-term { color: var(--muted); font-size: var(--fs-xs); font-weight: 400; font-variant-numeric: tabular-nums; white-space: nowrap; }
/* Sections that are secondary for the chosen purpose fold under one heading. */
.rr-fold > summary { cursor: pointer; list-style: none; }
.rr-fold > summary::-webkit-details-marker { display: none; }
.rr-fold > summary :is(h2, h3) { display: inline; }
.rr-fold > summary :is(h2, h3)::after { content: " ▸"; color: var(--muted); font-weight: 400; }
.rr-fold[open] > summary :is(h2, h3)::after { content: " ▾"; }
.rr-other > summary { cursor: pointer; list-style: none; }
.rr-other > summary::-webkit-details-marker { display: none; }
.rr-other > summary h2::after { content: " ▸"; color: var(--muted); font-weight: 400; }
.rr-other[open] > summary h2::after { content: " ▾"; }
.rr-section-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
.rr-section-head h2 { flex: 1; margin: 0; font-size: var(--fs-l); }
.rr-checked { margin: 8px 0 0; }
.rr-verdict { margin: 0 0 12px; font-size: var(--fs-m); font-weight: 600; line-height: 1.45; }
.rr-section .rr-verdict { font-size: var(--fs-l); }
/* The status in the verdict's own colour: attention ochre, fine green, no data grey (owner, 2026-10-12). */
/* The status is a marker under the verdict, the text stays ink (owner, 2026-10-12: a sudden green font read oddly). */
.rr-hl { padding: .04em .3em; margin-left: -.3em; border-radius: 2px; -webkit-box-decoration-break: clone; box-decoration-break: clone;
  -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.rr-section-attention .rr-hl, .rr-row-attention .rr-summary-verdict, .rr-tone-attention { background: var(--mark-attention); }
.rr-section-ok .rr-hl, .rr-tone-ok { background: var(--mark-ok); }
.rr-section-unknown .rr-hl { background: var(--mark-unknown); }
.rr-row-attention .rr-summary-verdict, .rr-tone-attention, .rr-tone-ok { padding: 0 .25em; border-radius: 2px;
  -webkit-box-decoration-break: clone; box-decoration-break: clone; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.rr-section-head .rr-pill { font-size: var(--fs-s); font-weight: 700; }
.rr-section .rr-verdict:has(+ .rr-verdict-detail) { margin-bottom: 3px; }
.rr-verdict-detail { margin: 0 0 12px; color: var(--ink-soft); line-height: 1.5; }
.rr-verified { margin: 4px 0 12px; color: var(--muted); font-size: var(--fs-s); line-height: 1.45; }
.rr-verified summary { list-style: none; color: var(--ok); font-weight: 500; cursor: pointer; }
.rr-verified summary::-webkit-details-marker { display: none; }
.rr-verified-mark { font-weight: 700; }
.rr-verified-more { margin-left: 4px; white-space: nowrap; text-decoration: underline dotted; }
.rr-verified[open] .rr-verified-more { display: none; }
.rr-verified ul { margin: 6px 0 4px; padding-left: 20px; }
.rr-verified li { margin: 2px 0; }

.rr-facts { display: grid; grid-template-columns: 1fr; margin: 0 0 14px; }
.rr-facts div { display: grid; grid-template-columns: minmax(10em, 38%) minmax(0, 1fr); gap: 0 14px; align-items: baseline; padding: 4px 0; }
.rr-facts dt { color: var(--muted); font-size: var(--fs-s); line-height: 1.4; }
.rr-facts dd { margin: 0; font-size: var(--fs-s); font-weight: 700; line-height: 1.4; }
.rr-facts dd small { display: block; color: var(--muted); font-size: var(--fs-xs); font-weight: 400; }
.rr-more { margin: -6px 0 14px; }
.rr-more > summary { font-size: var(--fs-s); font-weight: 500; }
.rr-more > .rr-facts { margin-top: 6px; }
.rr-meaning { margin: 0 0 10px; line-height: 1.55; }
.rr-action { margin: 0 0 10px; line-height: 1.5; }
.rr-action strong { color: var(--warn); }
.rr-planning-document { margin: 18px 0; }
.rr-planning-document h3 { margin: 0 0 5px; font-size: var(--fs-m); }
.rr-planning-form { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; }
.rr-planning-form input[type="file"] { flex: 1 1 260px; min-width: 0; font-size: var(--fs-s); }
.rr-planning-status { flex: 1 0 100%; color: var(--muted); font-size: var(--fs-s); line-height: 1.45; }
.rr-map-links { display: flex; flex-wrap: wrap; gap: 4px 16px; margin: 0 0 10px; }
.rr-map-button { border: 0; background: none; padding: 0; color: var(--accent); font-size: var(--fs-s); font-weight: 500; text-align: left; text-decoration: underline dotted; text-underline-offset: 3px; }
.rr-map-button:hover { color: var(--accent-hover); }

/* Price: the range as a bar, the seller's price as a mark on it (report.js). */
.rr-price-bar-caption { margin: 2px 0 6px; }
.rr-price-bar { margin: 0 0 12px; }
.rr-price-bar-track { position: relative; height: 10px; border-bottom: 1px solid var(--line-strong); }
.rr-price-bar-range { position: absolute; top: 2px; bottom: 0; background: rgba(43, 87, 71, .22); border-left: 1px solid var(--accent); border-right: 1px solid var(--accent); }
.rr-price-bar-median { position: absolute; top: 0; bottom: -1px; width: 2px; margin-left: -1px; background: var(--accent); }
.rr-price-bar-seller { position: absolute; top: -4px; bottom: -5px; width: 3px; margin-left: -1px; background: var(--warn); }
.rr-price-bar-labels { position: relative; height: 1.4em; margin-top: 3px; color: var(--muted); font-size: var(--fs-xs); font-variant-numeric: tabular-nums; }
.rr-price-bar-labels span { position: absolute; white-space: nowrap; transform: translateX(-50%); }
.rr-price-check { margin: 16px 0 18px; }
.rr-price-check label { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; font-size: var(--fs-s); }
.rr-price-check input[type="text"] { flex: 1 1 180px; min-width: 0; }
.rr-price-check-result { margin: 8px 0 0; font-size: var(--fs-s); line-height: 1.5; }
.rr-price-check .rr-price-share { display: flex; gap: 8px; margin: 8px 0 6px; color: var(--muted); font-size: var(--fs-xs); font-weight: 400; }
.rr-price-share-button { padding: 5px 12px; border: 1px solid var(--line-strong); background: var(--surface); font-size: var(--fs-s); }
.rr-price-share-button:disabled { opacity: .5; cursor: default; }
.rr-price-share-status { margin-left: 8px; font-size: var(--fs-s); }

.rr-table { width: 100%; margin: 6px 0 12px; border-collapse: collapse; font-size: var(--fs-s); }
.rr-table th, .rr-table td { padding: 6px 10px 6px 0; border-bottom: 0; text-align: left; vertical-align: top; }
.rr-table thead th { border-bottom: 1px solid var(--line-strong); }
.rr-table th { color: var(--muted); font-size: var(--fs-xs); font-weight: 600; white-space: nowrap; }
.rr-table td.rr-num, .rr-table th.rr-num { text-align: right; white-space: nowrap; }
.rr-coord { font-family: var(--font-mono); font-size: var(--fs-xs); white-space: nowrap; }
.rr-table-wrap { overflow-x: auto; }
.rr-data { margin: 8px 0 12px; }
.rr-data > summary { font-size: var(--fs-s); }
.rr-data > .rr-table-wrap { margin-top: 6px; }
.rr-parcel-compare { margin: 10px 0 12px; padding-top: 9px; border-top: 1px solid var(--line); }
.rr-parcel-compare > summary { font-size: .88rem; font-weight: 600; }
.rr-parcel-compare > .rr-table-wrap { margin-top: 6px; }
.rr-parcel-table { min-width: 610px; margin-bottom: 0; }
.rr-parcel-table small { display: block; margin-top: 2px; color: var(--muted); font-size: .76rem; font-weight: 400; line-height: 1.3; }

details.rr-expert { margin-top: 12px; color: var(--muted); font-size: var(--fs-s); }
details.rr-expert summary { color: var(--muted); font-weight: 500; text-decoration: underline dotted; text-underline-offset: 3px; }
details.rr-expert summary:hover { color: var(--ink); }
.rr-expert-grid { display: grid; grid-template-columns: minmax(10em, 16em) 1fr; gap: 4px 14px; margin: 10px 0; }
.rr-expert-grid dt { color: var(--muted); }
.rr-expert-grid dd { margin: 0; font-variant-numeric: tabular-nums; }
.rr-expert ul { margin: 4px 0 8px; padding-left: 18px; }
.rr-expert li { margin: 4px 0; }
.rr-expert-label { margin: 10px 0 0; color: var(--muted); font-weight: 600; }
.rr-sources { margin: 8px 0 0; color: var(--muted); font-size: var(--fs-xs); }

.rr-test { margin: 12px 0 4px; padding: 14px 16px; border: 1px dashed var(--line-strong); border-radius: 4px; }
.rr-test h3 { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 0 0 6px; font-size: var(--fs-m); }
.rr-test p { margin: 6px 0; line-height: 1.5; }
.rr-quality { display: grid; grid-template-columns: 1fr; margin: 10px 0; }
.rr-quality div { display: grid; grid-template-columns: minmax(10em, 38%) minmax(0, 1fr); gap: 0 14px; align-items: baseline; padding: 4px 0; }
.rr-quality dt { color: var(--muted); font-size: var(--fs-s); line-height: 1.4; }
.rr-quality dd { margin: 0; font-size: var(--fs-s); font-weight: 700; }

.rr-compare { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 12px 0; }
.rr-compare figure { margin: 0; }
.rr-compare img { width: 100%; height: auto; border-radius: 2px; }
/* A square 1 km+ photo frame at full column width would be taller than the screen. */
.rr-figure img.rr-photo { width: min(100%, 560px); border-radius: 2px; }
.rr-detailed-links a { white-space: nowrap; }

.rr-limits ul { margin: 6px 0 0; padding-left: 18px; color: var(--muted); font-size: var(--fs-s); line-height: 1.55; }
.rr-appendix, .rr-reference { margin-top: 0; scroll-margin-top: 14px; }
.rr-appendix > summary, .rr-reference > summary { color: var(--ink); font-size: var(--fs-m); font-weight: 600; cursor: pointer; }
.rr-reference > :is(ol, ul) { margin-top: 10px; }
.rr-appendix h3 { margin: 18px 0 6px; font-size: var(--fs-m); }
.rr-muted-link { color: var(--accent); }
.rr-share-status { margin: 0; }

/* Express check, comparison. */
.rr-express-list { margin: 8px 0 0; padding-left: 20px; line-height: 1.5; }
.rr-express-list li { margin: 4px 0; }
.rr-button { display: inline-block; margin-top: 10px; padding: 9px 16px; border-radius: 4px; text-decoration: none; font-weight: 600; }
.rr-compare-page { max-width: 1200px; }
.rr-compare-frame { max-width: 1248px; }
.rr-compare-form { display: grid; gap: 8px; }
.rr-compare-form label { display: block; font-weight: 400; }
.rr-compare-form button { justify-self: start; }
/* Plots side by side like a shop's comparison (owner, 2026-10-24): the plot on top, groups by section, two switches. */
.rr-compare-switches { display: flex; flex-wrap: wrap; gap: 6px 22px; margin: 4px 0 10px; font-size: var(--fs-s); }
.rr-compare-switches label { display: inline-flex; gap: 6px; align-items: center; }
.rr-compare-table td { min-width: 12em; line-height: 1.4; }
.rr-compare-table th[scope="row"] { position: sticky; left: 0; z-index: 1; min-width: 9em; max-width: 14em; padding-right: 12px;
  background: var(--canvas); color: var(--muted); font-size: var(--fs-s); font-weight: 400; white-space: normal; }
.rr-compare-plot { min-width: 12em; vertical-align: bottom; color: var(--ink); font-size: var(--fs-s); white-space: normal; }
.rr-compare-plot img { display: block; width: 100%; max-width: 180px; height: auto; margin-bottom: 6px; border-radius: 2px; }
.rr-compare-title { display: block; font-weight: 700; }
.rr-compare-remove { display: block; margin-top: 4px; font-size: var(--fs-xs); font-weight: 400; }
.rr-compare-group-head th { padding-top: 18px; color: var(--ink); font-size: var(--fs-m); font-weight: 700; }
.rr-compare-table tr.is-more { display: none; }
.rr-compare-table.all-facts tr.is-more { display: table-row; }
.rr-compare-table.only-differences tr.is-same { display: none; }
.rr-tone-unknown { background: var(--mark-unknown); }
.rr-compare-add { margin-top: 18px; }
@media (max-width: 600px) {
  .rr-compare-table td, .rr-compare-plot { min-width: 8.5em; }
  .rr-compare-plot img { max-width: 120px; }
  .rr-compare-table th[scope="row"] { min-width: 6.5em; max-width: 8em; font-size: var(--fs-xs); }
}

/* Charts drawn by the page (report_charts): grey bars, one ink line, the year in question dark, the usual level dashed. */
.rr-chart { margin: 12px 0; }
.rr-chart svg { display: block; width: 100%; height: auto; max-height: 230px; }
.rr-chart-bar { fill: var(--chart); }
.rr-chart-bar:hover { fill: var(--chart-hover); }
.rr-chart-bar.is-highlight { fill: var(--accent); }
.rr-chart-line { fill: none; stroke: var(--ink); stroke-width: 1.6; stroke-linejoin: round; }
.rr-chart-dot { fill: var(--ink); }
.rr-chart-reference { stroke: var(--warn); stroke-width: 1.2; stroke-dasharray: 5 4; }
.rr-chart-event { stroke: var(--warn); stroke-width: 1.4; }
.rr-chart-axis { stroke: var(--line-strong); stroke-width: 1; }
.rr-chart-grid { stroke: var(--line); stroke-width: 1; }
.rr-chart-label { font-size: 11px; fill: var(--muted); font-variant-numeric: tabular-nums; }
.rr-chart figcaption { margin-top: 4px; }

/* Summer wind rose with the unpleasant neighbours (surroundings section). */
.rr-wind-chart svg { display: block; max-width: 100%; height: auto; margin: 0 auto; }
.rr-wind-ring { fill: none; stroke: var(--line-strong); stroke-width: 1; stroke-dasharray: 3 3; }
.rr-wind-ring-label { font-size: 10px; fill: var(--faint); }
.rr-wind-wedge { fill: #5d7385; fill-opacity: .55; stroke: #49596a; stroke-width: .6; }
.rr-wind-compass { font-size: 13px; font-weight: 600; fill: var(--ink); }
.rr-wind-mark { fill: var(--ink); stroke: var(--surface); stroke-width: 1.5; }
.rr-wind-mark-label { font-size: 11px; font-weight: 700; fill: var(--surface); }
.rr-wind-list { margin: 6px 0 0 18px; padding: 0; }

/* Narrow screens: the contents become a bar that stays on top and opens the same list. */
@media screen and (max-width: 1100px) {
  .rr-layout { display: block; }
  .rr-layout > .rr { margin: 0 auto; }
  .rr-toc { display: none; }
  .rr-toc-bar { display: block; position: sticky; top: 0; z-index: 1100; margin: 0 -24px; padding: 0 24px; background: var(--bar-bg); border-bottom: 1px solid var(--line); font-size: var(--fs-s); }
  .rr-toc-bar > summary { display: flex; gap: 8px; align-items: baseline; padding: 9px 0; list-style: none; color: var(--ink); font-weight: 600; }
  .rr-toc-bar > summary::-webkit-details-marker { display: none; }
  .rr-toc-bar > summary::after { content: "▾"; margin-left: auto; color: var(--faint); font-weight: 400; }
  .rr-toc-bar[open] > summary::after { content: "▴"; }
  .rr-toc-bar-current { overflow: hidden; color: var(--muted); font-weight: 400; text-overflow: ellipsis; white-space: nowrap; }
  .rr-toc-bar .rr-toc-list { max-height: 60vh; overflow-y: auto; padding: 0 0 12px; }
  .rr-section, .rr-part, .rr-verdict-box, #checklist, #history, #plot-map, #neighbours, .rr-appendix { scroll-margin-top: 52px; }
}
/* "screen": an A4 page (~700 px) is narrower than 760 px, and the phone layout made the PDF 20 pages long (2026-09-28). */
@media screen and (max-width: 760px) {
  .rr-toc-bar { margin: 0 -14px; padding: 0 14px; }
  /* Phone cover: title, then the photo across the column, then one line per fact (owner, 2026-10-12: the cover
     fell apart into a long column of loose labels with a small photo hanging at the end). */
  .rr-cover { grid-template-columns: 1fr; gap: 0; padding-top: 16px; }
  .rr-cover-text { display: contents; }
  .rr-cover-text > *, .rr-cover-picture { order: 2; }
  .rr-cover-text > .rr-meta, .rr-cover-text > h1, .rr-cover-picture { order: 1; }
  .rr-cover h1 { margin-bottom: 12px; font-size: var(--fs-xl); }
  .rr-cover-picture { margin: 0 0 14px; }
  .rr-cover-picture > img, .rr-cover-picture > svg { max-height: 210px; }
  .rr-cover-facts { grid-template-columns: 1fr; }
  .rr-cover-facts div { display: grid; grid-template-columns: 7.6em minmax(0, 1fr); gap: 0 10px; align-items: baseline; padding: 3px 0; }
  .rr-cover-facts dd { margin: 0; }
  .rr-purpose .rr-note { flex-basis: 100%; }
  .rr-purpose { gap: 6px 14px; }
  .rr-passport, .rr-facts, .rr-quality { grid-template-columns: 1fr; }
  .rr-passport div { grid-template-columns: 8.5em 1fr; }
  .rr-summary a { grid-template-columns: 22px minmax(0, 1fr); gap: 1px 10px; }
  .rr-summary a .topo-sign { grid-row: span 2; align-self: start; margin-top: 2px; }
  .rr-summary-verdict { grid-column: 2; }
  .rr-summary.rr-money a, .rr-money-row { grid-template-columns: minmax(0, 1fr); gap: 1px 0; }
  .rr-money .rr-summary-verdict { grid-column: 1; }
  .rr-sheet-tick { font-size: 9px; }
  .rr-timeline li { grid-template-columns: 4.8em minmax(0, 1fr); }
  .rr-neighbour-list li { grid-template-columns: 1fr; }
  .rr-expert-grid { grid-template-columns: 1fr; }
}
@media screen and (max-width: 520px) { .rr-compare { grid-template-columns: 1fr; } .rr-price-bar-mid { display: none; } }

/* «Скачать PDF» is a link styled as the main button; while the server prints it, it waits. */
.rr-pdf-link { display: inline-block; border-radius: 4px; padding: 8px 14px; font-size: var(--fs-s); font-weight: 600; line-height: 1.3; text-decoration: none; }
.rr-pdf-link[aria-busy="true"] { opacity: .6; cursor: progress; }
.rr-print-only { display: none; }

/* The PDF: the cover and the summary first, then the sections without empty half-pages. Big sections may break
   across pages (kept whole, a section taller than the rest of a page left the page empty); small blocks stay whole.
   report.js opens the folded figures and tables before printing. */
@page { size: A4; margin: 12mm 11mm; }
@media print {
  .rr-compare-switches, .rr-compare-add, .rr-compare-remove { display: none; }
  /* Paper is for the screen: printers and PDF get white. */
  :root { --canvas: #fff; --surface: #fff; }
  html { font-size: 13px; }
  .rr-frame { max-width: none; }
  .rr-layout { display: block; }
  .rr { max-width: none; }
  .rr-card { padding: 12px 0; }
  .rr-toc, .rr-toc-bar, .rr-map-links, .rr-timeline-toggle { display: none !important; }
  .rr-cover { grid-template-columns: 70mm minmax(0, 1fr); padding-top: 0; }
  .rr-test, .rr-facts div, .rr-summary li, .rr-passport div, .rr-verdict, .rr-action, .rr-timeline li, figure, tr { break-inside: avoid; }
  .rr-section-head, .rr-part, .rr-summary-group, .rr-card > h2 { break-after: avoid; }
  .rr-purpose, .rr-purpose-lead, details.rr-expert, .rr .report-actions, .rr .monitor-status, .rr-price-check, .rr-compare-form, .rr-planning-document, .rr-screen-only { display: none; }
  /* The plot's map is printed (2026-10-26: the PDF had none): the overview's layers on the light scheme, without the
     buttons; the OpenStreetMap credit and the wind arrow stay. report.js tells the printer when its tiles are in. */
  .rr .report-map-section { display: block; break-inside: avoid; }
  .rr .report-map-section h2 .rr-tip { display: none; }
  .rr #report-map { height: 118mm; }
  .rr #report-map .leaflet-control-zoom, .rr #report-map .leaflet-control-layers, .rr .report-map-key-layers,
  .rr .report-map-layers-hint, .rr .report-map-views { display: none !important; }
  /* Folded parts, the appendix and the reference blocks print open (report.js opens them), without their arrows; the
     appendix keeps the contour's corners, the dates and the data's licences, not the download link. */
  .rr details > summary { list-style: none; }
  .rr details > summary::-webkit-details-marker { display: none; }
  .rr-other > summary h2::after, .rr-other[open] > summary h2::after { content: none; }
  .report-map-legend-line { display: block; margin-top: 4px; }
  .rr-other > summary, .rr-other > summary h2 { color: var(--ink); }
  .rr-index-other > summary { cursor: default; }
  .rr-appendix > p:has(> .rr-muted-link) { display: none; }
  .rr-appendix > summary, .rr-reference > summary, .rr-appendix h3, .rr-other > summary { break-after: avoid; }
  .rr-appendix .rr-table-wrap { break-inside: avoid; }
  /* The summers' strip under the latest scene wraps on paper instead of running off the page. */
  .rr-history-strip { flex-wrap: wrap; overflow: visible; }
  .rr-data > summary, .rr-more > summary, .rr-parcel-compare > summary { display: none; }
  .rr-verified-more { display: none; }
  /* In the PDF a note is plain small text: report.js has opened every note, the «i» itself is not printed. */
  .rr-tip > summary { display: none; }
  .rr-fold > summary :is(h2, h3)::after { content: none; }
  .rr-print-only { display: block; }
  .rr-summary a { grid-template-columns: 22px minmax(9em, 13em) 1fr; padding: 4px 0; }
  .rr-summary.rr-money a, .rr-money-row { grid-template-columns: minmax(9em, 13em) 1fr; }
  .rr-part { margin: 16px 0 2px; }
  .rr-compare, .rr-figure { break-inside: avoid; }
  .rr-figure img.rr-photo, .rr-compare img { max-height: 90mm; width: auto; max-width: 100%; }
  .rr-wind-chart svg { width: 260px; height: 260px; }
  .rr-compare-page { max-width: none; }
  a { color: inherit; text-decoration: none; }
}

/* Blocks as sheets on the paper (owner, 2026-10-13: «разные блоки на фоне отделять — не жёсткой рамкой, а хотя бы
   разрывом»): every block of the report lies on a lighter sheet, a gap of the darker paper between them, no frame. The
   heavy rule above the summary and the parts stays — inside the sheet it is the block's own heading line. */
body:has(.rr-layout), body:has(.rr-express-page) { background: var(--rr-paper); }
.rr-express-buy { margin: 18px 0 4px; }
.rr-express-adds { margin: 12px 0 0; }
.rr-express-adds > summary { cursor: pointer; font-weight: 600; }
.rr-express-adds-title { margin: 0 0 4px; font-weight: 600; }
/* The letter with the check's own address (owner, 2026-10-31): one quiet block under the result, a hairline above it
   and no frame — the second request must not compete with the button to buy. */
.rr-express-mail { display: flex; flex-direction: column; gap: 4px; margin: 20px 0 0; padding-top: 16px; border-top: 1px solid var(--line); }
.rr-express-mail-label { font-weight: 600; }
.rr-express-mail .rr-note { margin: 0; }
.rr-express-mail-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; }
.rr-express-mail-row input { flex: 1 1 220px; min-width: 0; padding: 9px 12px; border: 1px solid var(--line-strong); border-radius: 4px; background: var(--field); color: var(--ink); }
.rr-express-mail-row input:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
.rr-express-mail-consent { margin: 2px 0 0; color: var(--muted); font-size: var(--fs-s); line-height: 1.45; }
.rr-express-mail-check { display: flex; align-items: flex-start; gap: 6px; cursor: pointer; }
.rr-express-mail-check input { flex: none; margin: 2px 0 0; accent-color: var(--accent); }
.rr-express-mail-consent a { color: inherit; }
.rr-express-mail-status { margin: 2px 0 0; font-size: var(--fs-s); color: var(--accent); }
.rr-express-mail-status:empty { display: none; }
/* The start page's example is the report's first page, cut short: the same sheet on the darker paper. */
.demo-sheet { margin: 6px 0 0; padding: 22px 26px 16px; background: var(--rr-sheet); border-radius: 3px; box-shadow: 0 0 0 10px var(--rr-paper); }
.demo-cover { padding: 0 0 14px; }
.demo-title { margin: 2px 0 12px; font-family: var(--font-text); font-size: var(--fs-xl); font-weight: 700; line-height: 1.2; }
.demo-summary { margin: 4px 0 0; }
.demo-headline { margin: 0 0 6px !important; font-family: var(--font-text); font-size: var(--fs-l); font-weight: 700; line-height: 1.35; }
.demo-more { margin: 14px 0 0; font-size: var(--fs-s); }
.demo-history { margin-top: 22px; padding-top: 18px; border-top: 2px solid var(--ink); }
.demo-summary .rr-bargain-line { margin-top: 10px; }
@media screen and (max-width: 760px) { .demo-sheet { padding: 16px 14px 12px; box-shadow: 0 0 0 6px var(--rr-paper); } .demo-cover { grid-template-columns: 1fr; gap: 14px; } }
:root { --rr-paper: #efebe1; --rr-sheet: #fffdf8; }
/* The plot's history (owner, 2026-10-16, «как в автотеке»): one timeline — the events by years, newest first, with
   the plot's frames; they come in one by one as the list scrolls into view, a frame opens large on a click. */
.rr-history-list { margin: 0; padding: 0; list-style: none; }
.rr-history-event { display: grid; grid-template-columns: 7.5rem 22px minmax(0, 1fr); column-gap: 14px; padding-bottom: 18px; }
.rr-history-when { text-align: right; line-height: 1.3; }
.rr-history-when .rr-mono { font-size: var(--fs-l); }
.rr-history-when small { display: block; color: var(--muted); font-size: var(--fs-s); }
.rr-history-dot { position: relative; display: flex; justify-content: center; }
.rr-history-dot::before { content: ""; position: absolute; top: 0; bottom: -18px; width: 2px; background: var(--ink); }
.rr-history-event:last-child .rr-history-dot::before { bottom: 0; }
.rr-history-dot::after { content: ""; position: relative; width: 12px; height: 12px; margin-top: 5px; border-radius: 50%; background: var(--rr-sheet, var(--surface)); border: 2px solid var(--ink); box-sizing: border-box; }
.rr-history-what { padding-top: 1px; line-height: 1.45; }
.rr-history-picture { display: block; margin-top: 8px; padding: 0; border: 0; background: none; cursor: zoom-in; }
.rr-history-picture img { display: block; width: 180px; max-width: 100%; aspect-ratio: 3 / 2; object-fit: cover; border-radius: 2px; transition: width .35s ease; }
.rr-history-picture.is-large { cursor: zoom-out; }
/* The plot's summers in a row under the latest scene: a small frame and its year each. */
.rr-history-strip { display: flex; gap: 6px; margin-top: 10px; padding-bottom: 4px; overflow-x: auto; }
.rr-history-frame { flex: none; display: grid; gap: 3px; margin: 0; justify-items: center; }
.rr-history-frame img { width: 72px; height: 54px; aspect-ratio: auto; }
.rr-history-frame small { color: var(--muted); font-size: var(--fs-xs); }
.rr-history-frame.is-large img { width: min(420px, 80vw); height: auto; aspect-ratio: 4 / 3; }
.rr-history-picture.is-large img { width: min(520px, 100%); }
.rr-history-event:hover .rr-history-dot::after, .rr-history-attention .rr-history-dot::after { border-color: var(--accent); }
.rr-history-attention .rr-history-dot::after { background: var(--accent); }
/* Arriving: each event fades up in turn, and the line grows down to it. */
.rr-history-list.is-arriving .rr-history-event { opacity: 0; transform: translateY(8px); transition: opacity .45s ease, transform .45s ease; }
.rr-history-list.is-arriving .rr-history-event .rr-history-dot::before { transform: scaleY(0); transform-origin: top; transition: transform .5s ease .1s; }
.rr-history-list.is-arriving .rr-history-event.is-shown { opacity: 1; transform: none; }
.rr-history-list.is-arriving .rr-history-event.is-shown .rr-history-dot::before { transform: scaleY(1); }
@media (max-width: 560px) {
  .rr-history-event { grid-template-columns: 4.6rem 18px minmax(0, 1fr); column-gap: 10px; }
}
@media print { .rr-history-picture img, .rr-history-picture.is-large img { width: 140px; } .rr-history-list.is-arriving .rr-history-event { opacity: 1; transform: none; } }

/* Б2 on screen: dark paper, the sheets a step lighter (styles.css); print keeps the light pair above. */
@media screen { :root { --rr-paper: #0b0f12; --rr-sheet: #141b20; } }
.report-page.rr > .rr-cover, .report-page.rr > .rr-card, .rr-other > .rr-card {
  margin: 0 0 14px; padding: 24px 28px 18px; background: var(--rr-sheet); border-radius: 3px;
}
.report-page.rr > .rr-cover { margin-top: 24px; }
.report-page.rr > .rr-verdict-box { border-top: 0; box-shadow: inset 0 3px 0 var(--ink); }
.report-page.rr > .rr-part { margin: 38px 0 12px; }
.report-page.rr > details.rr-card > summary { padding: 2px 0; }
.rr-other > summary.rr-part { margin: 38px 0 12px; }
.rr-part + .rr-section { padding-top: 24px; }
@media screen and (max-width: 760px) {
  .report-page.rr > .rr-cover, .report-page.rr > .rr-card, .rr-other > .rr-card { padding: 18px 16px 12px; margin-bottom: 10px; }
  .report-page.rr > .rr-cover { margin-top: 12px; }
}
@media print {
  body:has(.rr-layout) { background: #fff; }
  .report-page.rr > .rr-cover, .report-page.rr > .rr-card, .rr-other > .rr-card { padding: 12px 0; margin: 0; background: none; }
  .report-page.rr > .rr-verdict-box { box-shadow: none; border-top: 2px solid var(--ink); }
}
/* Three views of one report (2026-10-15): the overview indexes the sections in the summary's own rows (sign, title,
   verdict; a warm mark under a verdict that needs attention), a section page opens one topic with the contents as its
   tabs and its neighbours at the bottom. No frames and no line under every row (owner, 2026-10-12). */
.rr-section-index .rr-summary-group { margin-top: 22px; }
.rr-section-index h2 + .rr-summary-group { margin-top: 10px; }
.rr-index-other > summary { cursor: pointer; }
.rr-index a { padding: 7px 0; }
.rr-section-page-head { margin: 24px 0 14px; }
.rr-section-page-head .rr-meta { margin: 0 0 6px; }
.rr-section-back { margin: 0; font-size: var(--fs-s); }
.rr-section-back a { color: var(--accent); }
.rr-mode-section .report-map-section { margin-top: 0; }
.rr-section-nav { display: flex; justify-content: space-between; gap: 18px; margin: 26px 0 8px; }
.rr-section-nav a { display: grid; gap: 2px; max-width: 48%; color: var(--ink); font-weight: 600; text-decoration: none; }
.rr-section-nav a:hover { text-decoration: underline; }
.rr-section-nav small { color: var(--muted); font-size: var(--fs-xs); font-weight: 400; }
.rr-section-next { margin-left: auto; text-align: right; }
/* A report assembled in parts: the banner, and the sections still coming (muted, «…» instead of a verdict). */
.rr-assembling { margin: 16px 0 14px; padding: 12px 16px; border-radius: 3px; background: var(--rr-sheet, #fffdf8); box-shadow: inset 3px 0 0 var(--accent); font-size: var(--fs-s); }
.rr-assembling-stopped { box-shadow: inset 3px 0 0 var(--warn); }
.rr-row-pending .rr-summary-title, .rr-row-pending .rr-summary-verdict, .rr-toc-pending { color: var(--muted); }
.rr-section-pending .rr-verdict { color: var(--muted); font-weight: 400; }

/* Report preparation (2026-10-15): the plot on the paper of the report, its contour in the report's colours, the
   finished map images arriving one at a time with their names. The moving line says «working»; with reduced motion
   it is not drawn. */
.building-report { max-width: 1180px; }
.building-head { display: grid; gap: 2px; padding: 26px 0 14px; }
.building-head h1 { margin: 0 0 6px; font-size: var(--fs-xl); }
.building-state { margin: 4px 0 0; font-size: var(--fs-m); font-weight: 700; }
.building-detail, .building-eta, .building-note, .building-ready { margin: 0; color: var(--muted); font-size: var(--fs-s); }
.building-progress-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px; margin-top: 6px; }
.building-progress { height: 3px; overflow: hidden; background: var(--line); }
.building-progress span { display: block; width: 0; height: 100%; background: var(--accent); transition: width 1s linear; }
.building-progress-label { color: var(--muted); font-size: var(--fs-xs); white-space: nowrap; }
.building-progress.is-overdue span { animation: building-progress-breathe 1.8s ease-in-out infinite; }
.building-map-section { margin: 0; }
.building-map-shell { position: relative; min-height: min(66vh, 680px); overflow: hidden; border-radius: 3px; background: var(--rr-sheet, #fffdf8); }
#building-map { position: absolute; inset: 0; min-height: 100%; background: var(--rr-paper, #efebe1); }
.building-map-shell .leaflet-container { font: inherit; }
.building-arriving-layer { transition: opacity .6s ease; }
/* A livelier photograph under the arriving layers (owner, 2026-10-15). Only the licensed imagery tiles: our own map
   images keep the colours of their legends in the report, and Google's logo and attribution are controls, untouched. */
#building-map .zemsat-imagery-layer { filter: saturate(1.32) contrast(1.12) brightness(1.06); }
.building-scan { position: absolute; z-index: 590; inset: 0; overflow: hidden; pointer-events: none; }
/* The scan, driven by live-map.js (2026-10-17): one pass of a yellow line for each picture shown, from north to south,
   tilted along the satellite's strip, a light band behind it; between pictures, and before the living map starts, it is
   not seen (owner: the old white line ran on the start page before the new one). */
.building-scan span { position: absolute; top: 0; right: -25%; left: -25%; height: 2px; background: #fff8e0; opacity: 0; transition: opacity .18s ease; will-change: transform;
  box-shadow: 0 0 0 1px rgba(20, 16, 8, .6), 0 0 8px 2px rgba(255, 210, 63, .9), 0 0 28px 8px rgba(255, 190, 60, .35); }
.building-scan span::before { content: ""; position: absolute; right: 0; bottom: 2px; left: 0; height: 56px; pointer-events: none;
  background: linear-gradient(to top, rgba(255, 214, 110, .26), rgba(255, 214, 110, 0)); }
.building-scan.is-passing span { opacity: 1; }
.building-scan.is-3d { display: none; }
.building-map-caption { position: absolute; z-index: 610; right: 16px; bottom: 26px; display: grid; min-width: 200px; max-width: min(360px, 70%); gap: 2px; padding: 12px 16px; border-radius: 3px; background: var(--rr-sheet, #fffdf8); box-shadow: 0 0 0 6px rgba(239, 235, 225, .7); color: var(--ink); pointer-events: none; }
.building-map-caption small, .building-map-caption span { color: var(--muted); font-size: var(--fs-xs); }
.building-map-caption strong { font-family: var(--font-ui); font-size: var(--fs-l); line-height: 1.2; }
.building-map-shell.is-ready .building-scan, .building-map-shell.is-stopped .building-scan { opacity: 0; transition: opacity .2s ease; }
.building-ready { margin: 10px 0 0; }
.building-counts { margin-top: 6px; color: var(--ink) !important; font-size: var(--fs-xs); }
/* The contour runs: the screen says «working» even between two arriving layers. (No zoom «breathing» of the whole
   map: it pushed Google's logo and copyright line out of the frame, and those must stay visible.) */
.building-contour { stroke-dasharray: 12 8; animation: building-contour-run 1.4s linear infinite; }
/* Roads drawn in along their length (each path has pathLength 100), then faded out with the next picture. */
.building-road { stroke-dasharray: 100; stroke-dashoffset: 100; animation: building-road-draw .9s ease-out forwards; transition: opacity .45s ease; }
.building-road-glow { animation-duration: 1.1s; }
.building-road.is-leaving { opacity: 0; }
@keyframes building-road-draw { to { stroke-dashoffset: 0; } }
@keyframes building-contour-run { to { stroke-dashoffset: -40; } }
@keyframes building-progress-breathe { 50% { opacity: .55; } }
.building-sections { margin: 18px 0 0; }
.building-sections h2 { margin: 0 0 10px; font-size: var(--fs-l); }
.building-sections-list { display: flex; flex-wrap: wrap; gap: 8px; }
.building-section-link { transition: background-color .8s ease, border-color .8s ease; }
.building-section-link.is-new { border-color: var(--accent); background: var(--mark-ok); }
.building-note { margin: 12px 0 0; }
.building-error { margin: 12px 0 0; color: var(--warn); font-weight: 600; }
.building-error-actions { margin-top: 10px; }
@media (prefers-reduced-motion: reduce) { .building-scan { display: none; } .building-arriving-layer { transition: none; } .building-contour { animation: none; } .building-road { animation: none; stroke-dashoffset: 0; transition: none; } .building-progress span { transition: none; animation: none; } }
@media screen and (max-width: 760px) { .building-map-shell { min-height: 520px; margin-right: -14px; margin-left: -14px; border-radius: 0; } .building-map-caption { right: 12px; bottom: 22px; min-width: 0; } }

/* The site's pages about a check, an audience and the examples (SEO plan, 2026-10-22): the text on the paper, and every
   piece of a real example report on its own sheet, as the start page shows its example — an excerpt looks like the
   report it came from. */
body:has(.show-page) { background: var(--rr-paper); }
.landing .landing-lead { margin: 0 0 18px; font-size: var(--fs-m); line-height: 1.55; }
.landing h2 { margin-top: 36px; }
.landing-check { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px 12px; margin: 6px 0 0; }
.landing-check input[type="search"] { padding: 11px 14px; font-size: var(--fs-m); }
.landing-check .primary { padding: 0 20px; font-size: var(--fs-s); font-weight: 600; white-space: nowrap; border-radius: 4px; }
.landing-check-note { margin: 8px 0 0 !important; color: var(--muted); font-size: var(--fs-s); }
.show-sheet { margin: 16px 0 22px; padding: 18px 22px 12px; background: var(--rr-sheet); border-radius: 3px; }
.show-sheet .rr-section-head h3 { flex: 1; margin: 0; font-size: var(--fs-l); }
.show-sheet .rr-facts { margin-bottom: 8px; }
.show-caption { margin: 0 0 12px !important; color: var(--muted); font-size: var(--fs-xs); }
.show-more { margin: 8px 0 0 !important; font-size: var(--fs-s); }
.show-group { margin: 14px 0 4px; font-size: var(--fs-s); }
.show-picture { display: block; width: 220px; max-width: 100%; margin-top: 8px; aspect-ratio: 3 / 2; object-fit: cover; border-radius: 2px; }
.show-frame { flex: 0 0 auto; display: grid; gap: 2px; }
.show-frame img { width: 96px; aspect-ratio: 3 / 2; object-fit: cover; border-radius: 2px; }
.show-model-link { position: relative; display: block; max-width: 520px; color: var(--ink); text-decoration: none; }
.show-model-link img { display: block; width: 100%; aspect-ratio: 3 / 2; object-fit: cover; border-radius: 2px; }
.show-model-link span { position: absolute; left: 14px; bottom: 14px; padding: 8px 14px; border-radius: 4px; background: var(--accent); color: var(--on-accent); font-size: var(--fs-s); font-weight: 600; }
.show-cards { display: grid; gap: 16px; margin: 14px 0 10px; }
.show-card { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: 18px; padding: 16px 18px; background: var(--rr-sheet); border-radius: 3px; }
.show-card-picture img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 2px; }
.show-card-title { margin: 0 !important; font-family: var(--font-text); font-size: var(--fs-l); }
.show-card-title a { color: var(--ink); text-decoration: none; }
.show-card-title a:hover { text-decoration: underline; }
.show-card-meta { margin: 2px 0 8px !important; color: var(--muted); font-size: var(--fs-s); }
.show-findings { margin: 0; padding: 0; list-style: none; }
.show-findings li { display: grid; grid-template-columns: 26px minmax(0, 1fr); gap: 0 8px; padding: 4px 0; font-size: var(--fs-s); line-height: 1.45; }
.show-findings small { display: block; color: var(--muted); font-size: var(--fs-xs); }
.show-findings a { color: var(--ink); text-decoration: none; }
.show-findings a:hover { text-decoration: underline; }
.show-case-cover { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 240px); gap: 18px; align-items: start; }
.show-case-picture { display: block; width: 100%; border-radius: 2px; }
.show-case-cover figcaption { grid-column: 2; margin: -10px 0 0; }
.method-list { margin: 0; }
.method-list div { display: grid; grid-template-columns: minmax(9em, 30%) minmax(0, 1fr); gap: 2px 18px; padding: 6px 0; }
.method-list dt { font-weight: 700; }
.method-list dd { margin: 0; line-height: 1.55; }
.landing-open { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 18px; margin: 26px 0 0 !important; }
.landing-open .rr-button { margin-top: 0; }
.home-audiences { margin: 0; padding: 0; list-style: none; }
.home-audiences li { padding: 0 0 10px; }
.home-audiences a { font-weight: 600; }
.home-audiences span { color: var(--muted); }
@media screen and (max-width: 760px) {
  .landing-check { grid-template-columns: 1fr; }
  .landing-check .primary { justify-self: start; padding: 11px 18px; }
  .show-sheet, .show-card { padding: 14px 14px 10px; }
  .show-card, .show-case-cover { grid-template-columns: 1fr; }
  .show-card-picture img { aspect-ratio: 3 / 2; }
  .show-case-cover figcaption { grid-column: 1; margin: 0; }
  .method-list div { grid-template-columns: 1fr; }
}

/* The frost depth of the towns (ROADMAP G5): the depths by soil, the months, the list with its filter. */
.frost-table td:last-child, .frost-list td:not(:first-child), .frost-months td:last-child { text-align: right; white-space: nowrap; }
.frost-months { max-width: 360px; }
.frost-cold { background: var(--mark-unknown); }
.frost-filter input { max-width: 320px; margin: 4px 0 12px; padding: 9px 12px; }
.frost-nearby { padding-left: 20px; }
.frost-sources { margin-top: 30px; }
.frost-sources summary { cursor: pointer; font-weight: 600; }
.frost-sources p { color: var(--muted); font-size: var(--fs-s); }
.method-compare td:first-child { font-weight: 600; }
.method-compare td, .method-compare th { vertical-align: top; }
.torgi-case { padding-top: 12px; padding-bottom: 10px; }
.torgi-calm { margin: 0 !important; color: var(--muted); font-size: var(--fs-s); }

/* «Массив участков» (owner, 2026-10-27): a territory, its cadastral parcels and a table of findings. The site stays
   restrained: no frames, no coloured cards — one tint on the parcels the check found something in. */
.cluster-map { height: 420px; margin: 6px 0 10px; background: var(--surface); }
.rr-cluster-table { min-width: 780px; }
.rr-cluster-table td { font-size: var(--fs-xs); }
.rr-cluster-table td:nth-child(3) { min-width: 14em; }
.rr-cluster-attention td:nth-child(4), .rr-cluster-attention td:nth-child(6) { font-weight: 700; }
.rr-cluster-line { margin: 0 0 10px; }
.rr-cluster-line p { margin: 0; line-height: 1.5; }
.rr-sources-list { margin: 8px 0; padding-left: 18px; color: var(--muted); font-size: var(--fs-xs); line-height: 1.5; }
.rr-list { margin: 6px 0 10px; padding-left: 18px; }
.rr-list li { margin: 6px 0; line-height: 1.5; }
@media (max-width: 720px) {
  .cluster-map { height: 300px; }
}
