/* ============================================================================
   GetFlip — визуальный язык в духе serezha.ai, СВЕТЛАЯ тема основная.
   Montserrat (черный дисплей) · Manrope (боди) · JetBrains Mono (тех-лейблы).
   Bone-фон · ink-текст · электрик-лайм = сигнал/выгода (заливка кнопок/бейджей).
   ============================================================================ */

/* ── Шрифты: self-host variable-woff2 (cyrillic+latin), без Google CDN ────── */
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400 700;font-display:swap;src:url("../fonts/jetbrains-mono-cyrillic.6465b62dd126.woff2") format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400 700;font-display:swap;src:url("../fonts/jetbrains-mono-latin.570751c5f8b4.woff2") format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Manrope';font-style:normal;font-weight:400 800;font-display:swap;src:url("../fonts/manrope-cyrillic.8fc0aa17e129.woff2") format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'Manrope';font-style:normal;font-weight:400 800;font-display:swap;src:url("../fonts/manrope-latin.101877a7a906.woff2") format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:700 900;font-display:swap;src:url("../fonts/montserrat-cyrillic.45ea393f38e4.woff2") format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:700 900;font-display:swap;src:url("../fonts/montserrat-latin.c154477b9aff.woff2") format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
:root{
  --ground:#eeece5; --surface:#ffffff; --raise:#f7f5ef;
  --ink:#0e0e0c; --muted:#57544c; --muted-2:#6c685e;
  --line:rgba(14,14,12,.1); --line-2:rgba(14,14,12,.17);
  --lime:#d6f84c; --lime-ink:#0b0b0b; --deal:#3c6c00;
  --risk:#9a6a12; --risk-bg:rgba(154,106,18,.1);
  --radius:14px; --radius-sm:10px;
  --shadow:0 1px 2px rgba(14,14,12,.05),0 26px 54px -30px rgba(14,14,12,.22);
  --maxw:1160px;
  --display:"Montserrat","Manrope",system-ui,sans-serif;
  --sans:"Manrope",system-ui,-apple-system,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;
}
/* Тёмная тема — ТОЛЬКО по явному выбору (data-theme="dark" из тумблера);
   prefers-color-scheme сознательно не слушаем — дефолт светлый везде. */
:root[data-theme="light"]{
  --ground:#eeece5; --surface:#ffffff; --raise:#f7f5ef;
  --ink:#0e0e0c; --muted:#57544c; --muted-2:#6c685e;
  --line:rgba(14,14,12,.1); --line-2:rgba(14,14,12,.17);
  --lime:#d6f84c; --lime-ink:#0b0b0b; --deal:#3c6c00;
  --risk:#9a6a12; --risk-bg:rgba(154,106,18,.1);
  --shadow:0 1px 2px rgba(14,14,12,.05),0 26px 54px -30px rgba(14,14,12,.22);
}
:root[data-theme="dark"]{
  --ground:#0b0b0b; --surface:#121212; --raise:#171717;
  --ink:#edeae3; --muted:#a9a59b; --muted-2:#8b8779;
  --line:rgba(237,234,227,.11); --line-2:rgba(237,234,227,.2);
  --lime:#d6f84c; --lime-ink:#0b0b0b; --deal:#d6f84c;
  --risk:#e0b64a; --risk-bg:rgba(224,182,74,.12);
  --shadow:0 1px 0 rgba(237,234,227,.04),0 30px 60px -30px rgba(0,0,0,.7);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;overflow-x:clip}
body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--sans);
  font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:clip}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
h1,h2,h3{font-family:var(--display);font-weight:800;letter-spacing:-.022em;line-height:1.03;text-wrap:balance;margin:0}
.num,.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
.num{white-space:nowrap}/* число с единицей (напр. «345 982 ₽/м²») не переносим — «м²» не должно уходить на строку ниже */
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 22px}
.muted{color:var(--muted)}
.eyebrow{font-family:var(--mono);font-weight:500;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.eyebrow .hl{color:var(--deal)}
.eyebrow .ico{width:12px;height:12px;vertical-align:-1.5px}
:focus-visible{outline:2px solid var(--deal);outline-offset:2px;border-radius:3px}
::selection{background:var(--lime);color:var(--lime-ink)}

/* Header */
.site-header{position:sticky;top:0;z-index:30;background:color-mix(in srgb,var(--ground) 84%,transparent);
  backdrop-filter:saturate(140%) blur(12px);border-bottom:1px solid var(--line)}
.header-inner{display:flex;align-items:center;justify-content:space-between;height:66px;gap:16px}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--display);font-weight:800;font-size:1.12rem;letter-spacing:-.02em;color:var(--ink)}
.brand .mark{color:var(--deal)}
.brand-fl{background:var(--lime);color:var(--lime-ink);border-radius:5px;padding:.03em .18em;margin-left:.06em}
.site-nav{display:flex;align-items:center;gap:24px}
.site-nav a{position:relative;font-family:var(--mono);font-size:.8rem;letter-spacing:.04em;color:var(--muted);text-transform:uppercase}
.site-nav a:hover{color:var(--deal)}
.site-nav a[aria-current="page"]{color:var(--deal)}
.site-nav a[aria-current="page"]::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;background:var(--deal);border-radius:2px}
.nav-toggle,.nav-burger,.nav-overlay{display:none}
.nav-sub .pill{margin-left:8px}
/* Лаймовый CTA подписки в шапке: нейтрализуем каскад .site-nav a
   (mono/uppercase/muted перекрывают .btn; в тёмной теме hover красил бы
   текст лаймом по лаймовому фону) */
.site-nav .btn{color:var(--lime-ink);font-family:var(--sans);font-size:.85rem;
  letter-spacing:.01em;text-transform:none;white-space:nowrap}
.site-nav .btn:hover,.site-nav .btn[aria-current="page"]{color:var(--lime-ink)}
.site-nav .btn[aria-current="page"]::after{display:none}
@media (max-width:1100px){.site-nav .nav-cta-price{display:none}}
.header-right{display:flex;align-items:center;gap:18px}
.theme-btn{background:none;border:1px solid var(--line-2);border-radius:9px;padding:0;width:34px;height:34px;cursor:pointer;
  color:var(--muted);display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s,color .15s}
.theme-btn:hover{border-color:var(--deal);color:var(--deal)}

/* Служебный баннер сверху (режим обслуживания/объявление из админ-панели) */
.site-banner{background:var(--risk-bg);color:var(--risk);text-align:center;padding:9px 16px;
  font-size:.88rem;font-weight:600;border-bottom:1px solid var(--line)}

/* Buttons / pills */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--lime);
  color:var(--lime-ink);padding:12px 20px;border-radius:10px;font-family:var(--sans);font-weight:700;
  font-size:.93rem;border:0;cursor:pointer;transition:transform .12s,filter .15s;letter-spacing:.01em}
.btn:hover{filter:brightness(1.05);transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn-lg{padding:15px 28px;font-size:1rem}
.btn-sm{padding:9px 15px;font-size:.85rem}
.btn-ghost{background:transparent;color:var(--ink);border:1px solid var(--line-2)}
.btn-ghost:hover{border-color:var(--deal);color:var(--deal);filter:none}
.btn-block{display:flex;width:100%}
.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-family:var(--mono);
  font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;font-weight:500;white-space:nowrap}
.pill-ok{background:var(--lime);color:var(--lime-ink)}
.conf{font-family:var(--mono);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;padding:4px 8px;border-radius:6px;font-weight:500}
.conf-high{background:var(--lime);color:var(--lime-ink)}
.conf-medium{background:var(--line);color:var(--muted)}
.conf-low{background:var(--line);color:var(--muted-2)}

/* ── Иконки: единый штриховой набор через CSS-mask, цвет = currentColor.
   Вместо эмодзи — те же линии, что и остальная графика сайта. ── */
.ico{display:inline-block;width:15px;height:15px;flex:none;background:currentColor;
  -webkit-mask:var(--i) center/contain no-repeat;mask:var(--i) center/contain no-repeat;
  vertical-align:-2px}
.ico-deal{color:var(--deal)}
.ico-spark{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 1.6l2.5 7.9 7.9 2.5-7.9 2.5-2.5 7.9-2.5-7.9L1.6 12l7.9-2.5z'/%3E%3C/svg%3E")}
.ico-check{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 11.08V12a10 10 0 1 1-5.93-9.14'/%3E%3Cpolyline points='22 4 12 14.01 9 11.01'/%3E%3C/svg%3E")}
.ico-eye{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E")}
.ico-ban{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='4.93' y1='4.93' x2='19.07' y2='19.07'/%3E%3C/svg%3E")}
.ico-bell{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9'/%3E%3Cpath d='M13.73 21a2 2 0 0 1-3.46 0'/%3E%3C/svg%3E")}
.ico-clock{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpolyline points='12 6 12 12 16 14'/%3E%3C/svg%3E")}
.ico-warn{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z'/%3E%3Cline x1='12' y1='9' x2='12' y2='13'/%3E%3Cline x1='12' y1='17' x2='12.01' y2='17'/%3E%3C/svg%3E")}
.btn .ico{width:15px;height:15px}

/* Deal ticker — фиксированная тёмная «терминальная» полоса в обеих темах */
.ticker{border-bottom:1px solid rgba(237,234,227,.12);background:#0b0b0b;overflow:hidden}
.ticker-track{display:flex;gap:38px;white-space:nowrap;padding:10px 0;width:max-content;
  animation:ticker 46s linear infinite;font-family:var(--mono);font-size:.78rem;letter-spacing:.02em}
.ticker:hover .ticker-track{animation-play-state:paused}
.ticker-item{color:#928e82;text-transform:uppercase}
.ticker-item b{color:#d6f84c;font-weight:600}
@keyframes ticker{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* Feed toolbar + grid */
.deals-layout{display:grid;grid-template-columns:276px 1fr;gap:30px;align-items:start;padding:34px 0}
.deals-head{grid-column:1/-1;display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.deals-head h1{font-family:var(--display);font-weight:900;font-size:1.9rem;letter-spacing:-.03em;margin-top:6px}
.deals-tools{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.deals-head .count{font-family:var(--mono);color:var(--muted);font-size:.78rem;letter-spacing:.06em;text-transform:uppercase}
.sortwrap{display:flex;align-items:center;gap:8px}
.sortwrap .eyebrow{margin:0}
.sortsel{width:auto;padding:8px 34px 8px 12px;font-size:.82rem}
.feed-busy{width:16px;height:16px;border-radius:50%;border:2px solid var(--line-2);border-top-color:var(--deal);display:inline-block}
.htmx-indicator{opacity:0;transition:opacity .15s}
.htmx-request.htmx-indicator,.htmx-request .htmx-indicator{opacity:1}
.htmx-request.feed-busy,.htmx-request .feed-busy{animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
#deal-results.htmx-request{opacity:.55;transition:opacity .15s}
.deal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(306px,1fr));gap:16px}

/* Deal card */
.deal-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:19px;display:flex;flex-direction:column;gap:12px;transition:transform .15s,border-color .15s,box-shadow .15s;
  animation:cardin .42s cubic-bezier(.2,.7,.3,1) both}
.deal-card:hover{transform:translateY(-3px);border-color:var(--line-2);box-shadow:var(--shadow)}
@keyframes cardin{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.deal-grid>*:nth-child(1){animation-delay:.02s}.deal-grid>*:nth-child(2){animation-delay:.06s}
.deal-grid>*:nth-child(3){animation-delay:.1s}.deal-grid>*:nth-child(4){animation-delay:.14s}
.deal-grid>*:nth-child(5){animation-delay:.18s}.deal-grid>*:nth-child(6){animation-delay:.22s}
.deal-grid>*:nth-child(7){animation-delay:.26s}.deal-grid>*:nth-child(8){animation-delay:.3s}
.deal-grid>*:nth-child(9){animation-delay:.34s}.deal-grid>*:nth-child(n+10){animation-delay:.38s}
.deal-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.deal-top-r{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.seg-tag{font-family:var(--mono);font-size:.64rem;letter-spacing:.08em;text-transform:uppercase;
  color:var(--muted);border:1px solid var(--line-2);border-radius:5px;padding:3px 7px}
.deal-metarow{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.ppm-tag{font-family:var(--mono);font-size:.75rem;color:var(--muted);letter-spacing:.01em;white-space:nowrap}
.deal-posted{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:.72rem;letter-spacing:.02em;color:var(--muted-2)}
.deal-posted .ico{opacity:.65}
.discount{font-family:var(--mono);font-size:1.85rem;font-weight:700;color:var(--deal);letter-spacing:-.02em;line-height:1}
.deal-price{font-family:var(--display);font-size:1.3rem;font-weight:800;letter-spacing:-.02em}
.deal-fair{font-family:var(--mono);font-size:.8rem;color:var(--muted);margin-top:3px}
.deal-fair s{opacity:.7}
.deal-fair .save{color:var(--deal);font-weight:600}
.deal-facts{display:flex;flex-wrap:wrap;gap:6px 15px;font-size:.87rem;color:var(--muted)}
.deal-facts b{color:var(--ink);font-weight:600}
.deal-addr{font-family:var(--mono);font-size:.78rem;letter-spacing:.03em;color:var(--muted);text-transform:uppercase}
.chip{display:inline-flex;align-items:center;gap:5px;background:var(--risk-bg);color:var(--risk);
  font-family:var(--mono);font-size:.72rem;padding:4px 9px;border-radius:6px;width:fit-content;letter-spacing:.02em}
.card-flags{display:flex;flex-wrap:wrap;gap:6px}
/* Причины «почему дёшево»: тон = цвет. Зелёный — только сигналы выгоды. */
.reason-chips{display:flex;flex-wrap:wrap;gap:6px}
.chip-warning{background:var(--risk-bg);color:var(--risk)}
.chip-positive{background:color-mix(in srgb,var(--deal) 12%,transparent);color:var(--deal)}
.chip-neutral{background:var(--raise);color:var(--muted);border:1px solid var(--line)}
/* «Под снос по реновации» — акцентный тег апсайда (не риск): фирменный лайм */
.chip-snos{background:color-mix(in srgb,var(--lime) 22%,transparent);
  color:var(--ink);border:1px solid color-mix(in srgb,var(--lime) 55%,transparent);font-weight:600}
/* «Продана сегодня» — статус-пилюля в шапке карточки (слева от сердечка):
   ink-заливка + лаймовая галочка — читается как «завершено», не как риск.
   В тёмной теме пилюля инвертируется (светлая) → галочка тёмная (--lime-ink). */
.sold-badge{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;
  border-radius:999px;background:var(--ink);color:var(--ground);
  font-family:var(--mono);font-size:.68rem;font-weight:600;letter-spacing:.07em;
  text-transform:uppercase;white-space:nowrap;line-height:1;cursor:default}
.sold-badge svg{width:13px;height:13px;flex:none;fill:none;stroke:var(--lime);
  stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
:root[data-theme="dark"] .sold-badge svg{stroke:var(--lime-ink)}
.fgroup-snos{border:1px solid color-mix(in srgb,var(--lime) 45%,transparent);
  background:color-mix(in srgb,var(--lime) 9%,transparent);border-radius:10px;padding:12px 12px 14px}
.snos-box{border:1px solid color-mix(in srgb,var(--lime) 45%,transparent);
  background:color-mix(in srgb,var(--lime) 8%,transparent);border-radius:12px;padding:16px 18px;margin:18px 0}
.snos-box p{margin:8px 0 0}
.deals-sub{max-width:64ch;margin:8px 0 0;font-size:.92rem;line-height:1.5}
.disc-basis{display:block;font-family:var(--mono);font-size:.66rem;color:var(--muted-2);margin-top:4px;letter-spacing:.02em}
.deal-card-sus{border-color:color-mix(in srgb,var(--risk) 35%,transparent)}
/* нижний блок карточки: адрес/₽м² + «выложено» + кнопки — единым футером,
   прижат к низу (margin-top:auto) → на всех карточках в одном месте, не скачет */
.deal-foot{margin-top:auto;display:flex;flex-direction:column;gap:9px;border-top:1px solid var(--line);padding-top:13px}
.card-actions{display:flex;gap:9px}
/* Filters */
.filters{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;position:sticky;top:82px}
.filters-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 16px}
.filters h3{font-family:var(--display);font-weight:800;font-size:1.05rem;margin:0;letter-spacing:-.01em}
/* сброс всех фильтров — пилюля с иконкой и счётчиком активных */
.filters-reset{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;
  border:1px solid var(--line-2);border-radius:999px;text-decoration:none;
  font-family:var(--mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;
  color:var(--muted);transition:color .15s,border-color .15s,background .15s}
.filters-reset svg{width:12px;height:12px;flex:none;fill:none;stroke:currentColor;
  stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.filters-reset:hover{color:var(--risk);border-color:color-mix(in srgb,var(--risk) 45%,transparent);
  background:var(--risk-bg)}
.reset-count{display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;
  padding:0 5px;border-radius:999px;background:var(--lime);color:var(--lime-ink);
  font-size:.62rem;font-weight:700}
/* счётчик выбранного у заголовка группы (район/метро) */
.eyebrow-count{display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;
  padding:0 5px;margin-left:7px;border-radius:999px;background:var(--lime);color:var(--lime-ink);
  font-size:.62rem;font-weight:700;vertical-align:middle}
.filt-toggle{position:absolute;opacity:0;pointer-events:none}
.filt-summary{display:none}
.fgroup{margin-bottom:18px}
.fgroup>label{display:block;margin-bottom:9px}
.chips{display:flex;flex-wrap:wrap;gap:7px}
/* длинные списки чипов (метро/район): свёрнуто 6 плашек */
.chips-more-toggle{position:absolute;opacity:0;pointer-events:none}
/* Без JS: свёрнуто первые 6 чипов, раскрытие чекбоксом-тумблером (всё сразу).
   С JS chip-search.js берёт управление и листает по 30 (класс .is-hidden),
   предварительно сняв .chips-clip. */
.chips-clip .chip-in:nth-child(n+7){display:none}
.chips-more-toggle:checked~.chips-clip .chip-in{display:inline}
.chip-in.is-hidden{display:none}
.chips-more{display:inline-block;margin-top:9px;font-family:var(--mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--deal);cursor:pointer}
.chips-more:hover{text-decoration:underline}
/* JS-кнопки пагинации выглядят как текст-ссылки (сброс дефолтного вида button) */
.chips-more-js{appearance:none;-webkit-appearance:none;background:none;border:0;padding:0;margin-right:16px}
/* атрибут hidden должен реально прятать (класс .chips-more иначе перебивает его) */
.chips-more[hidden]{display:none}
.chips-more .more-close{display:none}
.chips-more-toggle:checked~.chips-more .more-open{display:none}
.chips-more-toggle:checked~.chips-more .more-close{display:inline}
.chip-in{position:relative}
.chip-in input{position:absolute;opacity:0;pointer-events:none}
.chip-in span{display:inline-block;padding:6px 12px;border:1px solid var(--line-2);border-radius:8px;
  font-family:var(--mono);font-size:.8rem;cursor:pointer;background:transparent;color:var(--muted);transition:.12s}
.chip-in input:checked+span{background:var(--lime);color:var(--lime-ink);border-color:var(--lime);font-weight:600}
.chip-in input:focus-visible+span{outline:2px solid var(--deal);outline-offset:2px}
/* поиск по чипам длинных фильтров (район/метро) */
.chip-search{width:100%;padding:8px 11px;margin:2px 0 9px;border:1px solid var(--line-2);border-radius:8px;
  font-family:var(--mono);font-size:.8rem;background:var(--raise);color:var(--ink)}
.chip-search::placeholder{color:var(--muted-2)}
.chip-search:focus-visible{outline:2px solid var(--deal);outline-offset:1px}
.fgroup.searching .chips-more{display:none}
.frow{display:flex;gap:8px}
input[type=text],input[type=email],input[type=number],select,textarea{width:100%;padding:11px 13px;
  border:1px solid var(--line-2);border-radius:9px;font-size:.92rem;background:var(--raise);color:var(--ink);font-family:var(--mono)}
textarea{font-family:var(--sans);line-height:1.5;resize:vertical;min-height:120px}
input::placeholder,textarea::placeholder{color:var(--muted-2)}
/* Селекты: нативный вид убран, свой шеврон — единый контрол во всех темах и разделах */
select{appearance:none;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;
  padding-right:38px;transition:border-color .15s;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='m6 9 6 6 6-6' stroke='%238b877d' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;background-size:15px}
select:hover{border-color:var(--deal)}
select option{background:var(--surface);color:var(--ink)}
select::-ms-expand{display:none}
:root[data-theme="dark"] select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='m6 9 6 6 6-6' stroke='%23a9a59b' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}

/* Кастомный дропдаун (js/select.js): нативный select остаётся скрытым носителем
   значения, выпадающая панель — своя, в стиле сайта (системную не стилизовать). */
.sel-native[data-enhanced]{position:absolute!important;width:1px;height:1px;
  opacity:0;pointer-events:none;margin:-1px;overflow:hidden}
.sel{position:relative;display:inline-block;vertical-align:middle}
.sel-btn{display:inline-flex;align-items:center;justify-content:space-between;gap:9px;
  padding:10px 12px;border:1px solid var(--line-2);border-radius:9px;font-size:.9rem;
  background:var(--raise);color:var(--ink);font-family:var(--mono);cursor:pointer;
  transition:border-color .15s;text-align:left;max-width:100%}
.sel-btn::after{content:"";width:14px;height:14px;flex:none;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='m6 9 6 6 6-6' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='m6 9 6 6 6-6' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
  color:var(--muted-2);transition:transform .15s}
.sel-btn:hover{border-color:var(--deal)}
.sel-open .sel-btn{border-color:var(--deal)}
.sel-open .sel-btn::after{transform:rotate(180deg)}
.sel-pop{position:absolute;top:calc(100% + 6px);left:0;min-width:100%;width:max-content;
  max-width:min(320px,86vw);z-index:45;background:var(--surface);border:1px solid var(--line-2);
  border-radius:10px;box-shadow:var(--shadow);padding:5px;display:none;max-height:300px;
  overflow:auto;overscroll-behavior:contain}
.sel-open .sel-pop{display:block;animation:selin .13s cubic-bezier(.2,.7,.3,1)}
.sel-up .sel-pop{top:auto;bottom:calc(100% + 6px)}
@keyframes selin{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}
.sel-opt{display:flex;align-items:center;gap:8px;padding:9px 11px;border-radius:7px;
  font-family:var(--mono);font-size:.85rem;color:var(--ink);cursor:pointer;white-space:nowrap}
.sel-opt::before{content:"";width:13px;height:13px;flex:none;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M20 6 9 17l-5-5' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M20 6 9 17l-5-5' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
  opacity:0}
.sel-opt[aria-selected="true"]{color:var(--deal);font-weight:600}
.sel-opt[aria-selected="true"]::before{opacity:1}
.sel-opt.is-active{background:var(--raise)}
/* контекстные размеры на местах прежних селектов */
.sortwrap .sel-btn{padding:8px 12px;font-size:.82rem}
.report-form .sel-btn{padding:8px 11px;font-size:.82rem;background:var(--surface)}
.check-row{display:flex;align-items:center;gap:9px;font-size:.88rem;cursor:pointer;color:var(--muted)}
.check-row input{accent-color:var(--deal)}
/* «Показывать в том числе»: не фильтр-галочка, а ДОБАВЛЕНИЕ к списку — вместо
   квадратика «+», при выборе «✓» (как chip-in: нативный input скрыт, метка-спан) */
.add-row{display:flex;align-items:center;white-space:nowrap;font-size:.78rem;line-height:1.3;cursor:pointer;color:var(--ink);padding:2px 0}
.add-row input{position:absolute;opacity:0;pointer-events:none}
/* отступ до текста — margin у иконки (flex-gap к «голому» тексту капризен в Safari) */
.add-row .add-mark{display:inline-flex;align-items:center;justify-content:center;width:21px;height:21px;flex:0 0 auto;margin-right:14px;border:1px solid var(--line-2);border-radius:7px;background:var(--raise);color:var(--muted);font-size:1rem;font-weight:600;line-height:1;transition:background .15s,border-color .15s,color .15s}
.add-row .add-mark::before{content:"+"}
.add-row:hover .add-mark{border-color:var(--deal);color:var(--deal)}
.add-row input:checked+.add-mark{background:var(--lime);border-color:var(--lime);color:var(--lime-ink)}
.add-row input:checked+.add-mark::before{content:"✓";font-size:.82rem;font-weight:700}
.add-row input:focus-visible+.add-mark{outline:2px solid var(--deal);outline-offset:2px}
.consent-row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:9px;font-size:.88rem;line-height:1.4;cursor:pointer;color:var(--muted);text-align:left}
.consent-row input{margin-top:2px;flex:0 0 auto;accent-color:var(--deal)}
.consent-row span{flex:1 1 0}
/* Обязательное согласие: свой хинт вместо системного пузыря валидации
   (класс consent-need ставит invalid-обработчик в base.html) */
.consent-hint{display:none;flex:1 1 100%;margin:2px 0 0 23px;color:var(--risk);
  font-weight:600;font-size:.82rem}
.consent-row.consent-need .consent-hint{display:block}
.consent-row.consent-need>input{outline:2px solid var(--risk);outline-offset:2px;border-radius:3px}
/* Плашка «отключите VPN» перед оплатой — показывает скрипт _vpn_notice.html по гео IP */
.vpn-note{background:var(--risk-bg);border:1px solid color-mix(in srgb,var(--risk) 40%,transparent);
  color:var(--risk);border-radius:10px;padding:11px 14px;margin:0 0 16px;
  font-size:.88rem;font-weight:600;line-height:1.45;text-align:left}

/* Detail */
.crumb{padding:22px 0 0}
.crumb a{font-family:var(--mono);font-size:.78rem;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}
.detail{padding:20px 0 44px;display:grid;grid-template-columns:1.55fr 1fr;gap:28px;align-items:start}
/* min-width:0 — иначе min-content таблицы (.comps) распирает колонку и даёт
   горизонтальный скролл страницы на мобилке вместо скролла внутри .table-wrap */
.detail>*{min-width:0}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:26px}
.panel+.panel{margin-top:18px}
.bigdiscount{font-family:var(--mono);font-size:3rem;font-weight:700;color:var(--deal);line-height:1;letter-spacing:-.03em}
.price-line{font-family:var(--display);font-size:1.9rem;font-weight:900;margin:18px 0 3px;letter-spacing:-.03em}
.kv{display:grid;grid-template-columns:auto 1fr;gap:11px 22px;font-size:.94rem;margin:20px 0}
.kv dt{font-family:var(--mono);font-size:.75rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);align-self:center}
.kv dd{margin:0;font-weight:600;color:var(--ink)}
.samehouse{font-family:var(--mono);font-size:.62rem;letter-spacing:.05em;text-transform:uppercase;
  color:var(--deal);background:color-mix(in srgb,var(--deal) 10%,transparent);border-radius:5px;padding:2px 6px;white-space:nowrap}
.bait-banner{background:var(--risk-bg);border:1px solid color-mix(in srgb,var(--risk) 45%,transparent);
  border-radius:var(--radius-sm);padding:14px 18px;margin-top:18px}
.bait-banner b{color:var(--risk);font-family:var(--mono);font-size:.82rem;letter-spacing:.06em;text-transform:uppercase}
.bait-banner p{margin:7px 0 0;color:var(--muted);font-size:.93rem}
/* «Квартира продана» — нейтральный вариант баннера (не оранжевый риск) */
.sold-banner{background:var(--raise);border-color:var(--line)}
.sold-banner b{color:var(--muted)}
/* приглушаем карточку проданной — она уже неактуальна «купить сейчас» */
.deal-card-sold{opacity:.72}
.deal-card-sold:hover{opacity:1}
.whycheap{margin-top:20px}
.reason-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:9px}
.reason-list li{position:relative;padding-left:18px;font-size:.93rem;color:var(--muted)}
.reason-list li b{color:var(--ink);font-weight:600}
.reason-list li::before{content:"";position:absolute;left:0;top:.48em;width:8px;height:8px;border-radius:50%}
.reason-list .tone-warning::before{background:var(--risk)}
.reason-list .tone-positive::before{background:var(--deal)}
.reason-list .tone-neutral::before{background:var(--muted-2)}
.risk-box{background:var(--risk-bg);border:1px solid color-mix(in srgb,var(--risk) 30%,transparent);border-radius:var(--radius-sm);padding:16px 18px;margin-top:20px}
.risk-box b{color:var(--risk);font-family:var(--mono);font-size:.78rem;letter-spacing:.06em;text-transform:uppercase}
.risk-box ul{margin:9px 0 0;padding-left:18px;color:var(--muted);font-size:.92rem}
/* Price-distribution chart (деталь: как мы считаем) */
.dist{margin:6px 0 2px}
.dist-track{position:relative;height:12px;border-radius:7px;background:var(--raise);border:1px solid var(--line)}
.dist-good{position:absolute;left:0;top:0;bottom:0;border-radius:6px 0 0 6px;
  background:color-mix(in srgb,var(--lime) 55%,transparent)}
.dist-band{position:absolute;top:0;bottom:0;border-radius:2px;
  background:linear-gradient(90deg,color-mix(in srgb,var(--ink) 12%,transparent),color-mix(in srgb,var(--ink) 22%,transparent))}
.dist-t{position:absolute;top:-3px;bottom:-3px;width:1.5px;background:var(--line-2);border-radius:2px}
.dist-med{top:-6px;bottom:-6px;width:2px;background:var(--ink);opacity:.75}
.dist-you{position:absolute;top:-7px;bottom:-7px;width:3px;background:var(--deal);border-radius:3px;
  box-shadow:0 0 0 4px color-mix(in srgb,var(--deal) 16%,transparent)}
.dist-axis{display:flex;justify-content:space-between;gap:8px;margin-top:15px;
  font-family:var(--mono);font-size:.72rem;color:var(--muted-2);letter-spacing:.02em}
.dist-axis b{color:var(--muted)}
/* обычный текстовый поток, а не flex: иначе каждое слово («Эта»/«квартира») становится
   отдельным flex-элементом и дробится по строкам; ₽/м² держит вместе .num (nowrap) */
.dist-note{margin:14px 0 0;font-size:.9rem;color:var(--ink);line-height:1.5}
.dist-dot{display:inline-block;vertical-align:middle;width:9px;height:9px;border-radius:50%;background:var(--deal);margin-right:8px;
  box-shadow:0 0 0 4px color-mix(in srgb,var(--deal) 16%,transparent)}
/* Спарклайн истории цены (детальная) */
.spark{margin:18px 0 4px}
.spark-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.spark-svg{display:block;width:100%;height:52px}
.spark-line{fill:none;stroke:var(--deal);stroke-width:2;stroke-linejoin:round;stroke-linecap:round;
  vector-effect:non-scaling-stroke}
.spark-area{fill:color-mix(in srgb,var(--lime) 22%,transparent);stroke:none}
.spark-dot{fill:var(--deal);stroke:var(--surface);stroke-width:1.5}
.spark-axis{display:flex;justify-content:space-between;gap:10px;margin-top:6px;
  font-family:var(--mono);font-size:.74rem;color:var(--muted-2);letter-spacing:.02em}
.spark-axis b{color:var(--muted)}

.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:10px}
/* min-width:0 (не фикс.430px) — таблица всегда влезает в свою колонку и на
   десктопе (узкий aside), и на мобилке; бейдж «этот дом» переносим под площадь,
   чтобы он не распирал колонку и не давал горизонтальный скролл внутри панели */
.comps{width:100%;min-width:0;border-collapse:collapse;font-size:.88rem}
.comps th{text-align:left;padding:9px 6px;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:500}
.comps td{padding:10px 6px;border-bottom:1px solid var(--line);font-family:var(--mono);color:var(--ink);font-variant-numeric:tabular-nums}
.comps .samehouse{display:block;margin-top:3px}
.detail-cta{margin-top:22px;display:flex;gap:10px;flex-wrap:wrap}
.paywall{background:var(--raise);border:1px solid var(--line-2);border-radius:var(--radius);padding:26px;text-align:center;width:100%}
.paywall h3{font-family:var(--sans);font-weight:700;margin:6px 0 4px}
.paywall p{margin:0 0 14px}
.panel-title{font-family:var(--sans);font-weight:700;font-size:1.05rem;margin:8px 0 6px}
.panel-basis{font-size:.92rem;margin:0 0 8px}
.panel-conf{font-size:.8rem;margin:0 0 18px;color:var(--muted-2)}
.panel-note{font-size:.78rem;margin-top:10px}
.kv-tight{margin-bottom:0}

/* Simple pages / auth */
.narrow{max-width:460px;margin:64px auto;padding:0 22px}
.narrow-wide{max-width:560px}
.card-plain{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:32px}
.card-plain.center{text-align:center}
.card-title{margin:0 0 6px;font-size:1.5rem}
.card-sub{margin:0 0 18px}
.card-note{font-size:.82rem;margin:16px 0 0}
.mail-link{color:var(--deal);border-bottom:1px solid color-mix(in srgb,var(--deal) 40%,transparent)}
.mt10{margin-top:10px}
.mb16{margin-bottom:16px}
.notice{background:var(--lime);color:var(--lime-ink);padding:13px 16px;border-radius:9px;font-size:.92rem;font-weight:500}
.notice-soft{background:var(--raise);color:var(--ink);border:1px solid var(--line-2);font-weight:500}
.notice-soft a{color:var(--deal)}
.empty-state{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:48px 26px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px}
.empty-state svg{color:var(--muted-2);margin-bottom:6px}
.empty-title{font-family:var(--display);font-weight:800;font-size:1.15rem;margin:0}
.empty-state .muted{max-width:44ch;margin:0}
.error{background:var(--risk-bg);color:var(--risk);padding:13px 16px;border-radius:9px;font-size:.92rem}
.form-row{margin-bottom:14px}
.plan-price{font-family:var(--mono);font-size:2.8rem;font-weight:700;color:var(--deal);letter-spacing:-.02em;margin:8px 0 2px}
.plan-per{font-size:1rem;font-family:var(--sans)}
.plan-list{list-style:none;padding:0;margin:22px auto;max-width:360px;text-align:left;line-height:2.05;color:var(--muted)}
.plan-list li::before{content:"→ ";color:var(--deal);font-family:var(--mono)}

/* FAQ подписки (/pricing) — самостоятельный аккордеон (не .lp .lpfaq лендингов) */
.pfaq{margin-top:30px}
.pfaq>.eyebrow{display:block;margin:0 0 10px}
.pfaq-list{border-top:1px solid var(--line-2)}
.pfaq details{border-bottom:1px solid var(--line-2)}
.pfaq summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:17px 2px;font-family:var(--display);font-weight:700;font-size:1.02rem;letter-spacing:-.01em;color:var(--ink)}
.pfaq summary::-webkit-details-marker{display:none}
.pfaq summary::after{content:"+";font-family:var(--mono);font-weight:400;font-size:1.5rem;line-height:.7;
  color:var(--muted-2);transition:transform .22s,color .22s;flex:none}
.pfaq details[open] summary::after{transform:rotate(135deg);color:var(--deal)}
.pfaq .ans{padding:0 2px 20px;color:var(--muted);font-size:.95rem;line-height:1.6}
.pfaq details[open] .ans{animation:faqin .24s cubic-bezier(.2,.7,.3,1)}
@keyframes faqin{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.pfaq .ans-lead{margin:0 0 13px;color:var(--ink);font-weight:600}
.pfaq .ans-list{list-style:none;margin:0;padding:0;display:grid;gap:11px}
.pfaq .ans-list li{position:relative;padding-left:30px;color:var(--muted)}
.pfaq .ans-list li::before{content:"";position:absolute;left:0;top:1px;width:20px;height:20px;border-radius:6px;
  background:color-mix(in srgb,var(--deal) 15%,transparent)}
.pfaq .ans-list li::after{content:"";position:absolute;left:5px;top:6px;width:10px;height:10px;background:var(--deal);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat}

/* Footer — большой корпоративный (тёмный, обе темы) */
.site-footer{background:var(--ink);color:#c9c6bd;margin-top:56px}
[data-theme="dark"] .site-footer{background:#000}
.trustbar{border-top:1px solid rgba(237,234,227,.07);border-bottom:1px solid rgba(237,234,227,.12);padding:18px 0}
/* три гарантии — единый центрированный кластер, а не растянутые по ширине чипы */
.trust-row{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;
  justify-content:center;gap:8px 30px}
.trust-item{position:relative;display:flex;align-items:center;gap:12px;padding:6px 2px;
  font-family:var(--mono);font-size:.75rem;letter-spacing:.02em;line-height:1.3;
  color:rgba(237,234,227,.6);transition:color .2s ease}
.trust-item .ti-ic{width:34px;height:34px;flex:none;display:grid;place-items:center;border-radius:50%;
  background:rgba(214,248,76,.06);border:1px solid rgba(214,248,76,.18);
  transition:background .2s ease,border-color .2s ease,box-shadow .2s ease}
.trust-item .ti-ic svg{width:17px;height:17px;color:var(--lime);
  transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.trust-item .ti-tx b{color:rgba(237,234,227,.95);font-weight:600}
.trust-item:hover{color:rgba(237,234,227,.86)}
.trust-item:hover .ti-ic{background:rgba(214,248,76,.13);border-color:rgba(214,248,76,.42);
  box-shadow:0 0 0 4px rgba(214,248,76,.06)}
.trust-item:first-child:hover .ti-ic svg{transform:rotate(-180deg)}
/* десктоп: волосяные разделители между пунктами (только когда всё в одну строку) */
@media (min-width:880px){
  .trust-row{gap:0 clamp(30px,4vw,64px)}
  .trust-item+.trust-item::before{content:"";position:absolute;left:calc(clamp(30px,4vw,64px) / -2);
    top:50%;transform:translateY(-50%);width:1px;height:24px;background:rgba(237,234,227,.13)}
}
@media (max-width:560px){
  .trust-row{flex-direction:column;align-items:flex-start;gap:4px}
  .trust-item{width:100%}
}
@media (prefers-reduced-motion:reduce){
  .trust-item .ti-ic svg{transition:none}
  .trust-item:first-child:hover .ti-ic svg{transform:none}
}
.foot-main{padding:52px 0 38px}
.foot-cols{display:grid;grid-template-columns:1.7fr 1fr 1fr 1fr 1fr 1fr;gap:30px}
.foot-brand .mark{display:inline-block;font-family:var(--display);font-weight:800;font-size:1.35rem;letter-spacing:-.02em;color:#edeae3;margin-bottom:14px}
.foot-brand .flip{background:var(--lime);color:var(--lime-ink);border-radius:5px;padding:.03em .18em;margin-left:.04em}
.foot-brand .tag{font-size:.88rem;color:rgba(237,234,227,.65);max-width:280px;line-height:1.55;margin:0 0 16px}
.foot-brand .mail{font-family:var(--mono);font-size:.82rem;color:var(--lime);border-bottom:1px solid rgba(214,248,76,.4);padding-bottom:1px}
.foot-brand .mail:hover{color:#e2ff6b}
.foot-brand .loc{font-family:var(--mono);font-size:.72rem;color:rgba(237,234,227,.5);margin-top:14px;text-transform:uppercase;letter-spacing:.08em}
.fcol{display:flex;flex-direction:column}
.fcol h4{font-family:var(--mono);text-transform:uppercase;letter-spacing:.14em;font-size:.66rem;color:rgba(237,234,227,.5);margin:0 0 16px;font-weight:500}
.fcol a{font-size:.84rem;color:rgba(237,234,227,.78);margin-bottom:11px;transition:color .15s}
.fcol a:hover{color:var(--lime)}
/* мини-форма «Чего не хватает?» под колонками футера */
.foot-feedback{margin-top:34px;padding-top:26px;border-top:1px solid rgba(237,234,227,.12);max-width:640px}
.ff-label{display:block;font-family:var(--mono);text-transform:uppercase;letter-spacing:.14em;font-size:.66rem;color:rgba(237,234,227,.5);margin-bottom:10px}
.ff-row{display:flex;gap:10px;align-items:stretch;flex-wrap:wrap}
.ff-row textarea{flex:1 1 300px;resize:vertical;min-height:52px;background:rgba(237,234,227,.06);border:1px solid rgba(237,234,227,.18);border-radius:10px;padding:10px 12px;color:#edeae3;font:inherit;font-size:.85rem}
.ff-row textarea::placeholder{color:rgba(237,234,227,.42)}
.ff-row textarea:focus{outline:none;border-color:var(--lime)}
.ff-hp{display:none}
.ff-err{color:#f2b8ac;font-size:.8rem;margin:8px 0 0}
.ff-done{color:rgba(237,234,227,.85);font-size:.9rem;margin:0}
.foot-feedback .btn{align-self:flex-end}
.foot-bottom{border-top:1px solid rgba(237,234,227,.12);padding:24px 0}
.foot-bottom .wrap{display:flex;flex-wrap:wrap;gap:14px 30px;align-items:center;justify-content:space-between}
.fb-left{font-family:var(--mono);font-size:.72rem;color:rgba(237,234,227,.55);line-height:1.6}
.fb-left b{color:rgba(237,234,227,.85);font-weight:700}
.fb-left .req{display:block;margin-top:5px;font-size:.66rem;color:rgba(237,234,227,.4)}
.fb-right{display:flex;gap:20px;align-items:center;font-size:.82rem}
.fb-right a{color:rgba(237,234,227,.7)}
.fb-right a:hover{color:var(--lime)}
.foot-disc{padding:0 0 42px}
.foot-disc .wrap{font-family:var(--mono);font-size:.7rem;color:rgba(237,234,227,.4);line-height:1.65;max-width:920px}

/* Legal docs (оферта / политика) */
.legal{max-width:760px;margin:0 auto;padding:40px 22px 64px}
.legal .draft-note{background:var(--risk-bg);color:var(--risk);border:1px solid color-mix(in srgb,var(--risk) 30%,transparent);
  border-radius:var(--radius-sm);padding:12px 16px;font-size:.85rem;margin:0 0 26px}
.legal h1{font-size:1.9rem;letter-spacing:-.02em;margin:0 0 6px}
.legal .legal-meta{font-family:var(--mono);font-size:.74rem;color:var(--muted-2);text-transform:uppercase;letter-spacing:.06em;margin:0 0 28px}
.legal h2{font-family:var(--display);font-weight:800;font-size:1.15rem;letter-spacing:-.01em;margin:28px 0 10px}
.legal p,.legal li{color:var(--muted);font-size:.95rem;line-height:1.7}
.legal ul{padding-left:20px;margin:8px 0}
.legal li{margin:4px 0}
.legal a{color:var(--deal)}
.legal a:hover{text-decoration:underline}
.legal .legal-req{font-family:var(--mono);font-size:.8rem;color:var(--muted-2);line-height:1.8;margin-top:8px}

/* Pager */
.pager{margin-top:26px;display:flex;gap:12px;justify-content:center;align-items:center}
.pager .muted{font-family:var(--mono);font-size:.82rem;letter-spacing:.04em}

/* Responsive */
@media (max-width:900px){
  .deals-layout{grid-template-columns:1fr;gap:0;padding-top:22px}
  /* «Фильтры»: полноширинная панель-кнопка тулбара под заголовком/сортировкой */
  .filt-summary{display:flex;width:100%;margin:0 0 14px;align-items:center;gap:11px;
    background:var(--surface);border:1px solid var(--line-2);border-radius:var(--radius-sm);
    padding:13px 16px;font-family:var(--mono);font-size:.8rem;text-transform:uppercase;
    letter-spacing:.06em;cursor:pointer;color:var(--ink);box-shadow:var(--shadow);
    transition:border-color .15s,background .15s,transform .1s}
  .filt-summary:active{transform:translateY(1px)}
  .filt-summary .filt-ic{color:var(--muted-2);flex:none}
  .filt-summary .chev{color:var(--muted-2);transition:transform .2s;margin-left:auto;flex:none}
  .filt-summary:has(.filt-badge){border-color:color-mix(in srgb,var(--deal) 50%,var(--line-2));
    background:color-mix(in srgb,var(--deal) 6%,var(--surface))}
  .filt-summary:has(.filt-badge) .filt-ic{color:var(--deal)}
  .filt-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;
    margin-left:2px;padding:0 6px;border-radius:999px;background:var(--lime);color:var(--lime-ink);
    font-family:var(--mono);font-size:.72rem;font-weight:700;line-height:1}
  .filt-toggle:checked~.filt-summary .chev{transform:rotate(180deg)}
  .filters{display:none;position:static;margin-top:14px}
  .filt-toggle:checked~.filters{display:block}
  .detail{grid-template-columns:1fr}
  /* тач-цели ≥44px на мобилке */
  .theme-btn{width:44px;height:44px}
  .sortsel{padding-top:13px;padding-bottom:13px}
  .sortwrap .sel-btn{padding-top:13px;padding-bottom:13px}
  .brand{padding:8px 0}
  .fav-btn{width:40px;height:40px}
  .header-right{gap:6px}
  .site-nav{position:fixed;inset:66px 0 auto 0;z-index:50;flex-direction:column;align-items:stretch;
    background:var(--ground);border-bottom:1px solid var(--line);padding:14px 22px;gap:2px;
    transform:translateY(-180%);transition:transform .22s;box-shadow:var(--shadow)}
  .site-nav a{padding:12px 4px;border-bottom:1px solid var(--line)}
  /* CTA подписки в бургере — снова кнопка, а не пункт списка */
  .site-nav a.btn{border-bottom:0;margin-top:10px;padding:13px 16px;justify-content:center}
  .site-nav .nav-cta-price{display:inline}
  .nav-sub{display:flex;align-items:center;justify-content:space-between}
  .nav-sub .pill{margin-left:0}
  .nav-burger{display:inline-flex;flex-direction:column;gap:5px;cursor:pointer;padding:9px;background:none;border:0}
  .nav-burger span{width:22px;height:2px;background:var(--ink);border-radius:2px}
  .nav-toggle:checked~.header-right .site-nav{transform:translateY(0)}
  /* cursor:pointer обязателен: iOS Safari синтезирует клик по label только у «кликабельного» элемента */
  .nav-toggle:checked~.header-right .nav-overlay{display:block;position:fixed;inset:66px 0 0 0;z-index:40;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent}
  .site-nav a[aria-current="page"]::after{display:none}
  .foot-cols{grid-template-columns:1fr 1fr 1fr;gap:30px 24px}
  .foot-brand{grid-column:1/-1}
}
@media (max-width:520px){
  .wrap{padding:0 16px}
  .deal-grid{grid-template-columns:1fr}
  .foot-cols{grid-template-columns:1fr 1fr}
  .foot-bottom .wrap{flex-direction:column;align-items:flex-start}
  /* «Похожие предложения» — плотнее на узком экране (перенос бейджа — в базовом .comps) */
  .comps{font-size:.72rem}
  .comps th,.comps td{padding:8px 4px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}html{scroll-behavior:auto}}

/* ── ИИ-судья, алерты, track record ─────────────────────────────────────── */
.page-narrow{max-width:760px;margin:0 auto;padding-top:28px;padding-bottom:48px}
.page-narrow .panel{margin-top:18px}
.mt24{margin-top:24px}
.liq-note{margin-top:6px;font-size:.9rem}
.ai-verdict{margin:16px 0;padding:14px 16px;border:1px solid var(--line-2);border-radius:var(--radius-sm);background:var(--raise)}
.ai-verdict .ai-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.ai-badge{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);
  font-size:.76rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.ai-badge .ico{width:15px;height:15px}
.ai-verdict.ai-buy{border-color:var(--deal)}
.ai-verdict.ai-buy .ai-badge{color:var(--deal)}
.ai-verdict.ai-skip{border-color:var(--risk);background:var(--risk-bg)}
.ai-verdict.ai-skip .ai-badge{color:var(--risk)}
.ai-list{margin:8px 0 0;padding-left:18px;font-size:.92rem}
.ai-flags li{color:var(--risk)}
/* Плашка ИИ на карточке: пилюля в языке .conf/.eyebrow — mono, uppercase, спарк-иконка */
.ai-chip{margin-top:8px;display:inline-flex;align-items:center;gap:7px;
  font-family:var(--mono);font-size:.68rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;
  color:var(--muted);background:var(--raise);border:1px solid var(--line-2);border-radius:999px;padding:6px 12px}
.ai-chip .ico{width:13px;height:13px}
.ai-chip.ai-buy{color:var(--deal);border-color:color-mix(in srgb,var(--deal) 45%,transparent);
  background:color-mix(in srgb,var(--deal) 9%,transparent)}
.ai-chip.ai-skip{color:var(--risk);border-color:color-mix(in srgb,var(--risk) 45%,transparent);background:var(--risk-bg)}
.save-search form{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.save-search input[type=text]{flex:1;min-width:160px;padding:8px 10px;border:1px solid var(--line-2);border-radius:8px;background:var(--surface);color:var(--ink)}
.filter-list{list-style:none;margin:0;padding:0}
.filter-list li{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line)}
.filter-list li:last-child{border-bottom:none}
.filter-list form{margin:0}
.report-form{margin-top:14px;display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:.9rem}
.report-form select{width:auto;padding:8px 34px 8px 10px;font-size:.82rem;background-color:var(--surface)}
.report-thanks{color:var(--deal);font-size:.9rem}
.form-check{display:flex;gap:8px;align-items:center;margin:10px 0;font-size:.9rem}
/* Форма поддержки */
.support-form .form-row{margin:0 0 14px}
.support-method{margin:0 0 14px}
.support-label{display:block;margin-bottom:8px;font-size:.9rem;color:var(--muted)}
.support-method .check-row{margin-bottom:6px}
.hp-field{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* ── Тосты (js/toast.js): всплывающие уведомления снизу-справа ───────────── */
.toast-stack{position:fixed;right:18px;bottom:18px;z-index:55;display:flex;flex-direction:column;
  gap:10px;max-width:min(360px,calc(100vw - 32px));pointer-events:none}
.toast{pointer-events:auto;position:relative;display:flex;align-items:flex-start;gap:12px;
  background:var(--surface);color:var(--ink);border:1px solid var(--line-2);border-left:3px solid var(--deal);
  border-radius:var(--radius-sm);padding:13px 14px 13px 16px;box-shadow:var(--shadow);
  font-size:.9rem;line-height:1.4;animation:toastin .26s cubic-bezier(.2,.7,.3,1) both}
.toast-err{border-left-color:var(--risk)}
.toast-msg{flex:1;min-width:0}
.toast-x{flex:none;background:none;border:0;color:var(--muted-2);font-size:1.2rem;line-height:1;
  cursor:pointer;padding:0 2px;margin:-2px -2px 0 0;transition:color .12s}
.toast-x:hover{color:var(--ink)}
.toast-out{animation:toastout .24s ease forwards}
@keyframes toastin{from{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:none}}
@keyframes toastout{to{opacity:0;transform:translateX(16px)}}
@media (max-width:520px){.toast-stack{left:16px;right:16px;bottom:16px;max-width:none}}

/* ── Карточка «факт о Москве» (js/facts.js), снизу-слева ─────────────────── */
.fact-card{position:fixed;left:18px;bottom:18px;z-index:50;width:320px;max-width:calc(100vw - 32px);
  background:var(--surface);border:1px solid var(--line-2);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:15px 16px;opacity:0;transform:translateY(14px);
  transition:opacity .3s cubic-bezier(.2,.7,.3,1),transform .3s cubic-bezier(.2,.7,.3,1)}
.fact-card.fact-in{opacity:1;transform:none}
.fact-card.fact-out{opacity:0;transform:translateY(14px)}
.fact-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.fact-x{background:none;border:0;color:var(--muted-2);font-size:1.15rem;line-height:1;cursor:pointer;padding:0 2px;transition:color .12s}
.fact-x:hover{color:var(--ink)}
.fact-text{margin:0;font-size:.92rem;line-height:1.5;color:var(--ink);min-height:2.2em}
.fact-caret{display:inline-block;width:2px;height:1em;margin-left:1px;vertical-align:-2px;
  background:var(--deal);animation:blink 1s step-end infinite}
@keyframes blink{50%{opacity:0}}
.fact-cta{display:inline-block;margin-top:11px;font-family:var(--mono);font-size:.76rem;
  letter-spacing:.04em;text-transform:uppercase;color:var(--deal)}
.fact-cta:hover{text-decoration:underline}
@media (max-width:520px){.fact-card{left:16px;right:16px;bottom:16px;width:auto}}

/* ── Онбординг-тур (js/tour.js) ──────────────────────────────────────────── */
.tour-ring{position:absolute;z-index:60;border-radius:var(--radius);pointer-events:none;
  border:2px solid var(--lime);box-shadow:0 0 0 9999px rgba(14,14,12,.5);
  transition:top .25s,left .25s,width .25s,height .25s}
.tour-tip{position:absolute;z-index:61;width:300px;max-width:calc(100vw - 24px);
  background:var(--surface);border:1px solid var(--line-2);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:16px 17px}
.tour-title{font-family:var(--display);font-weight:800;font-size:1.02rem;letter-spacing:-.01em;margin-bottom:5px}
.tour-text{margin:0;font-size:.9rem;line-height:1.5;color:var(--muted)}
.tour-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px}
.tour-dots{display:flex;gap:6px}
.tour-dot{width:7px;height:7px;border-radius:50%;background:var(--line-2)}
.tour-dot.on{background:var(--deal)}
.tour-btns{display:flex;align-items:center;gap:10px}
.tour-skip{background:none;border:0;color:var(--muted-2);font-family:var(--mono);font-size:.74rem;
  text-transform:uppercase;letter-spacing:.06em;cursor:pointer;padding:4px 2px}
.tour-skip:hover{color:var(--ink)}

/* ── Лендинг-поп-ап (js/popup.js): центрированная модалка с эффектом печати ── */
.gf-pop-backdrop{position:fixed;inset:0;z-index:120;display:flex;align-items:center;
  justify-content:center;padding:20px;background:rgba(14,14,12,.55);
  opacity:0;transition:opacity .3s cubic-bezier(.2,.7,.3,1)}
.gf-pop-backdrop.gf-in{opacity:1}
[data-theme="dark"] .gf-pop-backdrop{background:rgba(0,0,0,.66)}
.gf-pop{position:relative;z-index:121;width:min(440px,100%);background:var(--surface);color:var(--ink);
  border:3px solid var(--ink);border-radius:var(--radius);box-shadow:8px 8px 0 var(--ink);
  padding:28px 30px 26px;opacity:0;transform:translateY(10px) scale(.96);
  transition:opacity .34s cubic-bezier(.2,.7,.3,1),transform .34s cubic-bezier(.2,.7,.3,1)}
.gf-pop-backdrop.gf-in .gf-pop{opacity:1;transform:none}
[data-theme="dark"] .gf-pop{border-color:var(--line-2);box-shadow:8px 8px 0 rgba(237,234,227,.14)}
.gf-pop-x{position:absolute;top:12px;right:14px;background:none;border:0;color:var(--muted-2);
  font-size:1.5rem;line-height:1;cursor:pointer;padding:2px 4px;transition:color .12s}
.gf-pop-x:hover{color:var(--ink)}
.gf-pop-title{font-family:var(--display);font-weight:800;font-size:1.5rem;letter-spacing:-.02em;
  line-height:1.06;margin:12px 0 10px;max-width:22ch}
.gf-pop-text{margin:0;font-size:.98rem;line-height:1.55;color:var(--ink);min-height:5.4em}
.gf-pop-actions{display:flex;align-items:center;gap:16px;margin-top:22px;flex-wrap:wrap}
.gf-pop-cta{white-space:nowrap}
.gf-pop-later{background:none;border:0;color:var(--muted-2);font-family:var(--mono);font-size:.76rem;
  text-transform:uppercase;letter-spacing:.06em;cursor:pointer;padding:4px 2px;transition:color .12s}
.gf-pop-later:hover{color:var(--ink)}
@media (max-width:520px){
  .gf-pop-backdrop{padding:0;align-items:flex-end}
  .gf-pop{width:100%;border-width:2px;border-radius:var(--radius) var(--radius) 0 0;
    box-shadow:0 -6px 0 var(--ink);padding:24px 20px 22px;transform:translateY(16px)}
  [data-theme="dark"] .gf-pop{box-shadow:0 -6px 0 rgba(237,234,227,.14)}
  .gf-pop-title{font-size:1.3rem}
}

/* Микроанимация «сердечка» избранного (класс вешает toggle-ответ) */
@keyframes heartpop{0%{transform:scale(1)}45%{transform:scale(1.35)}100%{transform:scale(1)}}

/* ── Избранное: кнопка-сердечко ──────────────────────────────────────────── */
.fav-btn{flex:none;display:inline-flex;align-items:center;justify-content:center;
  width:34px;height:34px;padding:0;border:1px solid var(--line-2);border-radius:9px;
  background:var(--surface);color:var(--muted-2);cursor:pointer;transition:color .15s,border-color .15s,background .15s}
.fav-btn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.9;
  stroke-linejoin:round;transition:fill .15s}
.fav-btn:hover{color:var(--deal);border-color:var(--deal)}
.fav-btn.is-fav{color:var(--deal);border-color:color-mix(in srgb,var(--deal) 45%,transparent);
  background:color-mix(in srgb,var(--deal) 9%,transparent)}
.fav-btn.is-fav svg{fill:currentColor;stroke:currentColor}
.fav-btn.fav-pop svg{animation:heartpop .4s cubic-bezier(.2,.7,.3,1)}
.fav-btn[disabled]{opacity:.5;cursor:default}

/* ── Страница избранного + таблица сравнения ─────────────────────────────── */
.favs-page{padding:34px 0 48px}
.favs-page h1{font-family:var(--display);font-weight:900;font-size:1.9rem;letter-spacing:-.03em;margin:6px 0 4px}
.favs-page>.muted{max-width:64ch;margin:0 0 22px}
.favs-grid{margin-top:8px}
.deal-card.fav-gone{opacity:.82}
.fav-gone .deal-price{font-family:var(--display);font-size:1.3rem;font-weight:800;letter-spacing:-.02em}
.fav-note{font-family:var(--mono);font-size:.78rem;letter-spacing:.02em;color:var(--muted-2);
  display:flex;align-items:center;gap:7px}
.fav-compare{margin-top:26px}
.comps-fav th[scope="row"]{white-space:nowrap;color:var(--muted);font-family:var(--mono);
  font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;font-weight:500;padding-right:14px}
.comps-fav thead th{vertical-align:top}
.comps-fav thead th a{color:var(--ink);font-weight:600}
.comps-fav thead th a:hover{color:var(--deal)}
.comps-fav thead th .muted{font-weight:400;font-size:.82em}
.comps-fav td.best{background:color-mix(in srgb,var(--lime) 30%,transparent);
  color:var(--ink);font-weight:700;border-radius:5px}

/* Skeleton-мерцание поверх затемнения ленты при htmx-подгрузке.
   Существующее #deal-results.htmx-request{opacity:.55} — база; добавляем «бегущий»
   блик, чтобы ожидание читалось как загрузка, а не как зависание. */
#deal-results.htmx-request{pointer-events:none;position:relative;overflow:hidden}
#deal-results.htmx-request::after{content:"";position:absolute;inset:0;z-index:2;
  background:linear-gradient(100deg,transparent 20%,color-mix(in srgb,var(--surface) 55%,transparent) 50%,transparent 80%);
  background-size:220% 100%;animation:shimmer 1.15s linear infinite;pointer-events:none}
@keyframes shimmer{from{background-position:200% 0}to{background-position:-120% 0}}

/* ── Плашка переполнения избранного ─────────────────────────────────────── */
.fav-full-note{display:flex;align-items:flex-start;gap:9px;margin:0 0 18px}
.fav-full-note .ico{flex:none;margin-top:2px;color:var(--muted)}

/* ── Ховер-тултипы (data-tip) ────────────────────────────────────────────
   Плавающий .gf-tip (position:fixed, вешается на <body> из tooltip.js) — чтобы
   подсказка НЕ обрезалась overflow/стек-контекстом карточек и прижималась к краю
   экрана. Светлая «карточка» в стиле сайта; стрелку-ромб позиционирует JS.
   Тема-независимо через переменные (в тёмной теме — тёмная карточка). */
.has-tip{cursor:help;text-decoration:underline dotted;text-underline-offset:3px;
  text-decoration-thickness:1px;text-decoration-color:var(--muted-2)}
.gf-tip{position:fixed;left:0;top:0;z-index:200;max-width:280px;
  background:var(--surface);color:var(--ink);border:1px solid var(--line-2);
  font-family:var(--sans);font-size:12px;font-weight:500;line-height:1.45;
  text-align:left;padding:9px 12px;border-radius:var(--radius-sm);
  box-shadow:0 14px 34px rgba(14,14,12,.17),0 3px 9px rgba(14,14,12,.09);
  opacity:0;transform:translateY(3px);pointer-events:none;
  transition:opacity .12s ease,transform .12s ease}
.gf-tip.is-open{opacity:1;transform:translateY(0)}
.gf-tip__arrow{position:absolute;width:9px;height:9px;background:var(--surface);
  border:1px solid var(--line-2);transform:rotate(45deg)}
.gf-tip[data-pos="top"] .gf-tip__arrow{bottom:-5px;
  border-top-color:transparent;border-left-color:transparent}
.gf-tip[data-pos="bottom"] .gf-tip__arrow{top:-5px;
  border-bottom-color:transparent;border-right-color:transparent}
@media (max-width:520px){.gf-tip{max-width:min(82vw,280px)}}
