/* Feed filters and route-only card layout */
.design-v3{
--listing-surface:var(--surface-card);
--listing-surface-soft:var(--surface-soft);
--listing-border:var(--line);
--listing-ink:var(--ink-primary);
--listing-muted:var(--ink-muted);
--listing-accent:var(--brand-green);
--listing-shadow:var(--shadow-card);
}
.feed-filters{display:grid;grid-template-columns:1.15fr .7fr repeat(2,.8fr) auto;gap:.65rem;align-items:end;margin:1.2rem 0 .65rem;padding:1rem;border:1.5px solid var(--cobalt);border-radius:var(--r);background:var(--card)}
.feed-filters label{display:grid;gap:.25rem;min-width:0;color:var(--ink-soft);font-family:var(--mono);font-size:.64rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.feed-filters select,.feed-filters input{min-width:0}
.feed-filters .feed-owner{display:flex!important;grid-column:1/-2;min-height:2.75rem;color:var(--ink);letter-spacing:0;text-transform:none}.feed-owner b{color:var(--ink)}.feed-owner>span:last-child{display:flex;gap:.45rem;flex-wrap:wrap}.sortchips{display:flex;gap:.4rem;overflow-x:auto;margin:0 0 1rem;padding:.1rem 0}.sortchip{display:inline-flex;flex:none;min-width:2.75rem;min-height:2.75rem;align-items:center;justify-content:center;padding:.42rem .65rem;border:1px solid var(--line);border-radius:2px;background:var(--card);color:var(--ink-soft);font-family:var(--mono);font-size:.66rem;font-weight:600;text-decoration:none}.sortchip[aria-current="true"]{border-color:var(--cobalt);background:var(--cobalt);color:var(--white)}
.feed-count{margin:.4rem 0 1rem;font-family:var(--mono);font-size:.78rem;font-weight:600}
#tip{position:fixed;z-index:50;background:var(--cobalt-deep);color:var(--white);font-family:var(--mono);font-weight:600;pointer-events:none}
.feed-subscribe{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.5rem 1rem;margin-bottom:1.2rem;padding:.8rem 1rem;border:1px dashed var(--grid);border-radius:var(--r);background:var(--cobalt-tint)}
.feed-subscribe .consent{margin:0}
.feed-page .feed-list{grid-template-columns:repeat(4,minmax(0,1fr))}
.feed-page .listing{grid-template-columns:1fr;align-content:start;content-visibility:auto;contain-intrinsic-size:auto 34rem}
/* Issue 211: возврат из карточки прыгает на строку по якорю. Запас сверху 6rem —
   тот же, что у остальных якорных секций нового оформления: там строку иначе
   накрыла бы липкая шапка (76 px). Правило ОДНО на оба оформления и живёт здесь
   намеренно: в старом липкой шапки нет и запас лишь оставляет воздух над строкой,
   а разделить правило нечем — таблица стилей нового оформления замерена по
   контрольной сумме, а второй ON-хук в этом файле запрещён стражем OFF-основы.
   (Решётка перед номером задачи в CSS запрещена: страж цветов читает её как
   hex-цвет вне блока токенов; имя ON-таблицы стилей — тоже: страж OFF-основы
   ищет его подстрокой.) */
/* Issue 211 (браузерная приёмка): у строки, на которую ведёт якорь, размер
   обязан быть НАСТОЯЩИМ с первого прохода вёрстки. Пропуск отрисовки
   (content-visibility) заменяет невидимые строки заглушкой в 34rem, а живая
   строка выдачи — 877–966 px: браузер считает положение якоря по заглушкам,
   прыгает, и по мере отрисовки строк цель уезжает вниз. Замер на этой машине:
   двенадцатая строка — недолёт 2534 px (три экрана), первая попадала всегда.
   Заглушку тут не подправить: строки разной высоты, точной цифры не бывает.
   Заглушку получают только строки с якорем — то есть рабочий стол выдачи, где
   их всего двенадцать; выборка на главной и городские страницы, ради которых
   пропуск отрисовки и вводился (issue 123), остаются как были. */
.feed-page .feed-list .listing[id]{scroll-margin-top:6rem;content-visibility:visible}
.feed-page .listing-photo{border-right:0;border-bottom:1px solid var(--line-warm)}
.feed-page .listing-body{min-height:18rem}
.feed-page .listing-meta{display:grid}
/* Fit: «Почему подходит» — словесная строка входа из диалога; чисел в ней не бывает. */
.fit-why{margin:.35rem 0 0;color:var(--ink-soft);font-family:var(--mono);font-size:.7rem;font-weight:600;line-height:1.45;overflow-wrap:anywhere}
/* Issue 209: компактная строка «Рядом» в строке выдачи. Ровно ОДНА строка при
   любой ширине (включая 390 px) и при любых длинах названий: перенос запрещён,
   лишнее срезается многоточием, поэтому высота строки выдачи не растёт.
   (Решётка перед номером задачи в CSS запрещена: страж цветов читает её как
   hex-цвет вне блока токенов.) */
.card-nearby{max-width:100%;min-width:0;margin:.35rem 0 0;overflow:hidden;color:var(--ink-soft);font-family:var(--mono);font-size:.72rem;font-weight:600;white-space:nowrap;text-overflow:ellipsis}
.feed-pagination{display:flex;justify-content:center;align-items:center;gap:.45rem;flex-wrap:wrap;margin:1.5rem 0}.feed-pagination a{display:grid;min-width:2.75rem;min-height:2.75rem;place-items:center;padding:.55rem .7rem;border:1px solid var(--line);border-radius:2px;background:var(--card);font-family:var(--mono);font-weight:600;text-decoration:none}.feed-pagination a[aria-current="page"]{border-color:var(--cobalt);background:var(--cobalt);color:var(--white)}.feed-pagination span{color:var(--ink-soft);font-family:var(--mono);font-size:.72rem;font-weight:600}.feed-pagination .page-status{width:100%;text-align:center}.pager-gap{padding:.4rem}

/* Listing detail */
.back-link{font-weight:400;text-decoration:underline;text-underline-offset:.17em}
.detail-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(18rem,.65fr);gap:1.25rem;align-items:start}
.detail-main{min-width:0}.detail-panel{position:sticky;top:1rem;min-width:0;padding:1rem;border:1.5px solid var(--cobalt);border-radius:var(--r);background:var(--card)}
.detail-panel .detail-hero{padding-bottom:1rem;border-bottom:1px dashed var(--line)}.detail-panel .detail-hero h1{font-size:clamp(2rem,3.4vw,2.65rem);overflow-wrap:anywhere}.detail-panel .tag{text-transform:uppercase}
.detail-district{margin:0;color:var(--ink-soft);font-family:var(--mono);font-size:.68rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase}.detail-price-row{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.detail-price{font-size:2rem}.detail-price small{color:var(--ink-soft);font-size:.75rem;font-weight:600}
.detail-section{margin-top:1.7rem}.detail-section h2{margin:0 0 .8rem}
.detail-description{padding:1rem;border:1px solid var(--line-warm);border-left:3px solid var(--cobalt);border-radius:var(--r);background:var(--card);color:var(--ink)}
.description-copy p{margin:0;line-height:1.65;overflow-wrap:anywhere}.description-copy p+p{margin-top:.8rem}
.description-collapse summary{display:grid;gap:.7rem;cursor:pointer;list-style:none;color:var(--ink)}.description-collapse summary::-webkit-details-marker{display:none}.description-collapse summary:focus-visible{outline:2px solid var(--cobalt);outline-offset:3px}
.description-preview{display:block;line-height:1.65;overflow-wrap:anywhere}.description-toggle{width:max-content;color:var(--cobalt);font-family:var(--mono);font-size:.72rem;font-weight:600;text-decoration:underline;text-underline-offset:.18em}.description-less{display:none}.description-collapse[open] .description-more{display:none}.description-collapse[open] .description-less{display:inline}.description-collapse[open] .description-copy{margin-top:.8rem;padding-top:.8rem;border-top:1px dashed var(--line-warm)}
.detail-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem}
.detail-gallery-section .detail-gallery{grid-template-columns:1fr}.detail-thumbs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.45rem}.detail-thumb{min-width:0;padding:0;overflow:hidden;border:1px solid var(--line);border-radius:2px;background:var(--card)}.detail-thumb[aria-pressed="true"]{border:2px solid var(--cobalt)}.detail-thumb img{width:100%;aspect-ratio:4/3;object-fit:cover}
.detail-photo{position:relative;aspect-ratio:4/3;margin:0;overflow:hidden;border:1px solid var(--line-warm);border-radius:var(--r);background:var(--cobalt-deep)}.detail-photo img{width:100%;height:100%;object-fit:cover}
.table-scroll{overflow-x:auto}.price-history-full table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:.78rem;font-weight:600}.price-history-full th,.price-history-full td{padding:.5rem .6rem;border-bottom:1px dashed var(--line-warm);text-align:left}.price-history-full th{color:var(--ink-soft);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase}.history-table tr.price-down:last-child{background:var(--green-ghost)}
.detail-facts{display:grid;gap:.1rem;margin:0}.detail-facts div{display:grid;grid-template-columns:1fr auto;gap:1rem;padding:.48rem 0;border-bottom:1px dashed var(--line-warm)}.detail-facts dt{color:var(--ink-soft)}.detail-facts dd{margin:0;font-family:var(--mono);font-weight:600;text-align:right}
.detail-actions{display:flex;align-items:stretch;flex-direction:column}.detail-alert{display:flex}.detail-original{margin:0}.detail-alert small{color:var(--ink-soft)}
.datum-big{margin-top:1rem;padding:.7rem 0}.datum-line{display:block;margin:.65rem 0;border-top:1.5px dashed var(--grid)}.datum-big .datum-label,.datum-big .price-row>*{background:var(--card)}.datum-note{margin:.2rem 0 1rem;color:var(--ink-soft);font-size:.78rem}.detail-sparkline{width:100%;height:auto;margin:.2rem 0 .8rem}.detail-sparkline .median-reference{stroke:var(--amber);stroke-dasharray:5 5}.median-reference-label{font-family:var(--mono);fill:var(--ink-soft);font-weight:600}.history-table{min-width:32rem}
.detail-alert.relay button{width:100%;gap:.7rem;padding:.7rem;background:var(--card);color:var(--ink)}.detail-alert.relay .mini-relay{flex:0 0 2.625rem}.relay.pending .mini-relay{background:var(--cobalt-08);border-color:var(--grid)}.relay.pending i{transform:translateX(.6rem);background:var(--cobalt)}.relay-copy{display:grid}.original-cta{width:100%}

@media (max-width:64rem){.feed-page .feed-list{grid-template-columns:repeat(2,minmax(0,1fr))}.feed-filters{grid-template-columns:repeat(3,minmax(0,1fr))}.feed-filters button{justify-self:start}.detail-layout{grid-template-columns:1fr}.detail-panel{position:static}.feed-filters .feed-owner{grid-column:1/-1}}
@media (max-width:52rem){.feed-subscribe{grid-template-columns:1fr}.feed-subscribe button{grid-column:1;grid-row:auto;justify-self:start}}
@media (max-width:42rem){.feed-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.feed-filters button{width:100%;grid-column:auto;grid-row:auto;justify-self:stretch}.feed-page .feed-list{grid-template-columns:1fr}.feed-page .listing-body{min-height:0;overflow-wrap:anywhere}.detail-gallery{grid-template-columns:1fr}.detail-actions,.detail-alert{align-items:stretch;flex-direction:column}.detail-actions .btn,.detail-alert button{width:100%}}
@media (max-width:30rem){.feed-filters{grid-template-columns:1fr}}
