:root{
  --paper:#eef1f4; --surface:#ffffff; --surface-2:#f6f8fa;
  --ink:#141d26; --ink-soft:#3d4954; --ink-faint:#5c6874;
  --line:#dce2e8; --line-strong:#c3ccd4;
  --accent:#1f4e8c; --accent-ink:#ffffff; --accent-soft:#e3ecf8; --accent-soft-line:#c6d8ef;
  --brass:#8a5814; --brass-soft:#f3e6cf;
  --good:#256b4d; --good-soft:#e1f0e8;
  --shadow: 0 1px 2px rgba(20,29,38,.04), 0 8px 24px -12px rgba(20,29,38,.18);
  --radius: 10px;
  --glass-bg: rgba(255,255,255,.62);
  --glass-border: rgba(255,255,255,.5);
  --glass-shadow: 0 8px 32px -8px rgba(20,29,38,.35), inset 0 1px 0 rgba(255,255,255,.4);
}
/* --ink-soft/--ink-faint были слишком светлыми (#55636f/#8593a0) и сливались
   с фоном - см. фидбек владельца 16.09.2026 "никаких светлосерых букв, всё
   должно читаться чётко". Затемнено до контраста ~9:1/~6:1 на белом фоне
   (WCAG AAA/AA), --brass и --good тоже затемнены - использовались на белом
   фоне в badge/mortgage-box текстом, были близки по тону к --brass-soft/
   --good-soft фону под собой. */
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#0f1418; --surface:#161d24; --surface-2:#1b232b;
    --ink:#e9eef2; --ink-soft:#b7c1ca; --ink-faint:#8b98a3;
    --line:#293138; --line-strong:#3a444d;
    --accent:#7aabe6; --accent-ink:#0f1418; --accent-soft:#1c2b3c; --accent-soft-line:#2c4460;
    --brass:#d7ac66; --brass-soft:#3a2f1c;
    --good:#5cba93; --good-soft:#173226;
    --shadow: 0 1px 2px rgba(0,0,0,.3), 0 8px 24px -12px rgba(0,0,0,.5);
    --glass-bg: rgba(22,29,36,.55);
    --glass-border: rgba(255,255,255,.12);
    --glass-shadow: 0 8px 32px -8px rgba(0,0,0,.6), inset 0 1px 0 rgba(255,255,255,.06);
  }
}
*{box-sizing:border-box;}
html{background:var(--paper);}
body{ margin:0; background:var(--paper); color:var(--ink); font-family:'Manrope',system-ui,-apple-system,Segoe UI,sans-serif; font-size:15px; line-height:1.5; }
h1,h2,h3{ font-family:'Unbounded',system-ui,sans-serif; text-wrap:balance; margin:0; letter-spacing:-.01em; }
a{ color:inherit; text-decoration:none; }
button, input, select{ font-family:inherit; }
img{ max-width:100%; }

.app{ max-width:1180px; margin:0 auto; padding:0 24px 64px; }

.topbar{ display:flex; align-items:center; justify-content:space-between; gap:16px; padding:20px 24px; max-width:1180px; margin:0 auto; position:sticky; top:0; z-index:30; background:var(--paper); }
.brand{ display:flex; align-items:center; gap:10px; font-family:'Unbounded'; font-weight:700; font-size:17px; }
.brand .mark{ width:26px; height:26px; border-radius:7px; background:var(--accent); color:var(--accent-ink); display:flex; align-items:center; justify-content:center; font-size:13px; font-weight:800; flex:none; }
.crumbs{ display:flex; align-items:center; gap:6px; font-size:13px; color:var(--ink-soft); flex-wrap:wrap; }
.crumbs a{ color:var(--ink-soft); }
.crumbs a:hover{ color:var(--accent); }
.crumbs .sep{ color:var(--ink-faint); }
.crumbs .current{ color:var(--ink); font-weight:600; }

.eyebrow{ font-size:11.5px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-faint); }

.catalog-head{ display:flex; align-items:baseline; justify-content:space-between; gap:16px; margin:24px 0 22px; flex-wrap:wrap; }
.catalog-head h1{ font-size:30px; }
.catalog-count{ font-size:13px; color:var(--ink-soft); }
.catalog-count b{ color:var(--ink); font-family:'IBM Plex Mono'; }

.catalog-layout{ display:grid; grid-template-columns:250px 1fr; gap:28px; align-items:start; }
@media (max-width:800px){ .catalog-layout{ grid-template-columns:1fr; } }

.filters{ background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:18px 18px 20px; position:sticky; top:88px; display:flex; flex-direction:column; gap:18px; }
@media (max-width:800px){ .filters{ position:static; } }
.filter-group{ display:flex; flex-direction:column; gap:9px; }
.chip-row{ display:flex; flex-wrap:wrap; gap:6px; }
.chip{ display:inline-flex; border:1px solid var(--line-strong); background:var(--surface-2); color:var(--ink-soft); font-size:12.5px; font-weight:600; padding:6px 11px; border-radius:100px; cursor:pointer; }
.chip.active{ background:var(--accent-soft); border-color:var(--accent-soft-line); color:var(--accent); }
.price-inputs{ display:flex; align-items:center; gap:8px; }
.price-inputs input{ width:100%; min-width:0; border:1px solid var(--line-strong); background:var(--surface-2); color:var(--ink); border-radius:7px; padding:8px 9px; font-family:'IBM Plex Mono'; font-size:13px; }
.price-inputs span{ color:var(--ink-faint); font-size:12px; }
select.sortsel{ width:100%; border:1px solid var(--line-strong); background:var(--surface-2); color:var(--ink); border-radius:7px; padding:9px 10px; font-size:13px; }
.reset-link{ display:inline-block; color:var(--accent); font-size:12.5px; font-weight:600; margin-top:4px; }

.cards-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:16px; }
@media (max-width:640px){ .cards-grid{ grid-template-columns:1fr; } }
.empty-state{ padding:60px 20px; text-align:center; color:var(--ink-soft); border:1px dashed var(--line-strong); border-radius:var(--radius); }
.load-more{ display:flex; justify-content:center; margin-top:20px; }
.load-more .btn{ width:auto; padding:12px 28px; }

.card{ background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; display:flex; flex-direction:column; box-shadow:var(--shadow); transition:.15s transform,.15s border-color; }
.card:hover{ transform:translateY(-2px); border-color:var(--accent-soft-line); }
/* aspect-ratio 1.7 - медиана реальных пропорций фото в базе (замер 16.09.2026,
   выборка 600 файлов из photos_optimized: медиана 1.70, среднее 1.63,
   56% в диапазоне 1.6-1.9 т.е. похоже на 16:9). object-fit:contain, а не
   cover - фото ГАРАНТИРОВАННО не обрезается ни у одного ЖК (по прямому
   требованию владельца 16.09.2026), а не просто "у большинства" - за счёт
   подбора аспекта под медиану лишнего пустого поля почти не видно. */
.card-art{ position:relative; aspect-ratio:1.7; background:var(--accent-soft); overflow:hidden; }
.card-art img{ width:100%; height:100%; object-fit:contain; display:block; }
.card-badge{ position:absolute; top:10px; left:10px; background:var(--surface); color:var(--brass); font-size:11px; font-weight:700; padding:4px 9px; border-radius:100px; box-shadow:var(--shadow); }
.card-body{ padding:14px 16px 16px; display:flex; flex-direction:column; gap:10px; flex:1; }
.card-body h2{ font-size:16.5px; line-height:1.25; }
.card-loc{ font-size:12.5px; color:var(--ink-soft); }
.card-metrics{ display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.card-price{ font-size:17px; font-weight:600; }
.card-price small{ font-size:11px; font-weight:600; color:var(--ink-faint); margin-right:3px; }
.card-metro{ font-size:12px; color:var(--ink-soft); white-space:nowrap; }
.card-foot{ border-top:1px solid var(--line); padding-top:10px; }
.card-count{ font-size:12px; color:var(--ink-faint); }

.photo-strip{ display:flex; gap:8px; overflow-x:auto; margin:20px 0; }
.photo-strip img{ height:200px; border-radius:10px; flex:none; }

.complex-hero{ margin-bottom:26px; }
.class-badge{ display:inline-block; background:var(--brass-soft); color:var(--brass); font-size:12px; font-weight:700; padding:5px 12px; border-radius:100px; margin-bottom:10px; }
.hero-info h1{ font-size:34px; margin-top:4px; }
.hero-addr{ color:var(--ink-soft); font-size:14px; margin-top:6px; }
.hero-facts{ display:grid; grid-template-columns:repeat(3,auto) 1fr; gap:18px; margin-top:14px; }
@media (max-width:700px){ .hero-facts{ grid-template-columns:repeat(2,1fr); } }
.fact-val{ font-family:'IBM Plex Mono'; font-size:16px; font-weight:600; }
.fact-sub{ font-size:11.5px; color:var(--ink-faint); }

.complex-layout{ display:grid; grid-template-columns:1fr 300px; gap:32px; align-items:start; }
@media (max-width:800px){ .complex-layout{ grid-template-columns:1fr; } }

.section-block{ margin-bottom:34px; }
.section-block h2{ font-size:19px; margin-bottom:14px; }
.desc-text{ max-width:64ch; color:var(--ink-soft); font-size:14.5px; line-height:1.65; white-space:pre-line; }

.amenity-cols{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
@media (max-width:700px){ .amenity-cols{ grid-template-columns:1fr; } }
.amenity-group-title{ display:flex; align-items:center; gap:8px; font-family:'Manrope'; font-size:13px; text-transform:uppercase; letter-spacing:.05em; color:var(--ink); font-weight:800; margin:0 0 10px; }
.amenity-icon{ width:18px; height:18px; flex:none; color:var(--accent); }
.amenity-item{ display:flex; align-items:baseline; gap:7px; padding:8px 0; border-bottom:1px solid var(--line); font-size:13.5px; }
.amenity-name{ display:flex; align-items:baseline; gap:7px; }
.amenity-item .check{ color:var(--good); font-weight:700; flex:none; }
.amenity-dist{ font-family:'IBM Plex Mono'; color:var(--ink-soft); font-size:12.5px; white-space:nowrap; margin-left:auto; padding-left:8px; }

.transit-row{ display:flex; flex-wrap:wrap; gap:12px; }
.transit-pill{ display:flex; align-items:center; gap:10px; background:var(--surface); border:1px solid var(--line); border-radius:100px; padding:9px 16px 9px 12px; }
.transit-pill .dot{ width:9px; height:9px; border-radius:50%; background:var(--accent); }
.transit-pill .name{ font-size:13.5px; font-weight:600; }
.transit-pill .dist{ font-family:'IBM Plex Mono'; font-size:12.5px; color:var(--ink-soft); }

.room-tabs{ display:flex; gap:6px; margin-bottom:16px; flex-wrap:wrap; }
.room-tab{ display:inline-block; border:1px solid var(--line-strong); background:var(--surface); color:var(--ink-soft); font-weight:600; font-size:13px; padding:8px 14px; border-radius:8px; }
.room-tab.active{ background:var(--accent); color:var(--accent-ink); border-color:var(--accent); }
.room-panel{ display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:10px; overflow:hidden; margin-bottom:14px; }
@media (max-width:700px){ .room-panel{ grid-template-columns:repeat(2,1fr); } }
.room-stat{ background:var(--surface); padding:16px; }
.room-stat .val{ font-family:'IBM Plex Mono'; font-size:18px; font-weight:600; margin-top:6px; }

.apt-list{ display:flex; flex-direction:column; border:1px solid var(--line); border-radius:10px; overflow:hidden; }
.apt-row{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 16px; background:var(--surface); border-bottom:1px solid var(--line); font-size:13.5px; }
.apt-row:last-child{ border-bottom:none; }
.apt-row:hover{ background:var(--surface-2); }
.apt-area{ font-family:'IBM Plex Mono'; font-weight:600; min-width:70px; }
.apt-meta{ color:var(--ink-soft); flex:1; }
.apt-price{ font-family:'IBM Plex Mono'; font-weight:600; white-space:nowrap; }

.faq-list{ display:flex; flex-direction:column; gap:8px; }
.faq-item{ background:var(--surface); border:1px solid var(--line); border-radius:8px; padding:12px 16px; }
.faq-item summary{ cursor:pointer; font-weight:600; font-size:14px; }
.faq-item p{ margin:10px 0 0; color:var(--ink-soft); font-size:13.5px; line-height:1.55; }

.side-card{ background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:18px; position:sticky; top:88px; display:flex; flex-direction:column; gap:14px; box-shadow:var(--shadow); }
.side-price{ font-family:'IBM Plex Mono'; font-size:24px; font-weight:600; }
.side-row{ display:flex; justify-content:space-between; gap:14px; font-size:13px; padding:9px 0; border-top:1px solid var(--line); }
.side-row:first-of-type{ border-top:none; }
.side-row .k{ color:var(--ink-soft); flex:none; }
.side-row .v{ font-weight:600; text-align:right; }

.btn{ display:block; text-align:center; background:var(--accent); color:var(--accent-ink); border:none; border-radius:8px; padding:12px 16px; font-weight:700; font-size:14px; cursor:pointer; width:100%; }
.btn-ghost{ background:none; border:1px solid var(--line-strong); color:var(--ink); }

.lead-form{ display:flex; flex-direction:column; gap:8px; }
.lead-form input{ border:1px solid var(--line-strong); background:var(--surface-2); color:var(--ink); border-radius:7px; padding:10px 12px; font-size:13.5px; }
.sent-ok{ background:var(--good-soft); color:var(--good); font-weight:600; font-size:13.5px; padding:12px 14px; border-radius:8px; }

.unit-crumb-back{ display:inline-block; font-size:13px; color:var(--ink-soft); padding:16px 0; }
.unit-head{ margin-bottom:22px; }
.unit-head h1{ font-size:28px; }
.unit-sub{ color:var(--ink-soft); font-size:13.5px; margin-top:4px; }
.unit-layout{ display:grid; grid-template-columns:1.15fr 1fr; gap:32px; align-items:start; }
@media (max-width:800px){ .unit-layout{ grid-template-columns:1fr; } }

.spec-grid{ display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--line); border:1px solid var(--line); border-radius:10px; overflow:hidden; margin:0 0 18px; }
.spec-cell{ background:var(--surface); padding:14px 16px; }
.spec-cell .val{ font-family:'IBM Plex Mono'; font-size:16.5px; font-weight:600; margin-top:5px; }

.price-card{ background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:20px; box-shadow:var(--shadow); }
.price-big{ font-family:'IBM Plex Mono'; font-size:30px; font-weight:700; margin-top:4px; }
.price-per{ font-size:12.5px; color:var(--ink-soft); margin-top:2px; }
.mortgage-box{ background:var(--good-soft); border-radius:8px; padding:12px 14px; margin-top:14px; }
.mortgage-box .label{ font-size:11.5px; color:var(--good); font-weight:700; text-transform:uppercase; letter-spacing:.04em; }
.mortgage-box .amt{ font-family:'IBM Plex Mono'; font-size:19px; font-weight:700; color:var(--good); margin-top:3px; }
.mortgage-box .assump{ font-size:11px; color:var(--ink-soft); margin-top:5px; line-height:1.4; }
.price-card .lead-form, .price-card .btn{ margin-top:14px; }

.alt-plans h2{ font-size:17px; margin-bottom:4px; }
.alt-plans .hint{ font-size:12.5px; color:var(--ink-soft); margin-bottom:14px; }
.alt-scroll{ display:flex; gap:10px; overflow-x:auto; padding-bottom:4px; }
.alt-card{ flex:none; width:150px; border:1.5px solid var(--line-strong); border-radius:10px; background:var(--surface); padding:10px; }
.alt-area{ font-family:'IBM Plex Mono'; font-size:13px; font-weight:600; }
.alt-meta{ font-size:11px; color:var(--ink-soft); margin-top:2px; }
.alt-price{ font-family:'IBM Plex Mono'; font-size:11.5px; color:var(--ink-soft); margin-top:4px; }

.sitefoot{ padding:24px 0; margin-top:40px; border-top:1px solid var(--line); }
.legal-footer{ display:flex; flex-direction:column; gap:6px; font-size:12px; color:var(--ink-faint); line-height:1.6; }
.legal-footer a{ color:var(--ink-faint); }
.legal-footer a:hover{ color:var(--accent); }
.legal-links{ display:flex; flex-wrap:wrap; gap:4px 16px; margin-top:4px; }

/* ---- юридические страницы (policy/consent/cookies) ---- */
.legal-page{ max-width:74ch; }
.legal-page h1{ font-size:26px; margin-bottom:6px; }
.legal-updated{ color:var(--ink-faint); font-size:12.5px; margin-bottom:24px; }
.legal-page h2{ font-size:16px; margin:28px 0 10px; }
.legal-page p{ color:var(--ink-soft); font-size:14px; line-height:1.7; margin:0 0 12px; }
.legal-page a{ color:var(--accent); text-decoration:underline; }
.legal-list{ margin:0 0 12px; padding-left:20px; color:var(--ink-soft); font-size:14px; line-height:1.7; }
.legal-list li{ margin-bottom:4px; }
.legal-note{ margin-top:24px; padding-top:16px; border-top:1px solid var(--line); }

/* ---- согласие на обработку ПД в формах заявки ---- */
.consent-check{ display:flex; gap:8px; align-items:flex-start; font-size:11.5px; line-height:1.5; color:var(--ink-soft); cursor:pointer; }
.consent-check input{ margin-top:2px; flex:none; width:15px; height:15px; accent-color:var(--accent); }
.consent-check a{ color:var(--accent); }
.consent-error{ background:var(--brass-soft); color:var(--brass); font-size:12.5px; font-weight:600; padding:10px 12px; border-radius:8px; margin-bottom:4px; }

/* ---- cookie-баннер ---- */
/* "Зеркальное" стекло (glassmorphism) - полупрозрачный фон + блюр того, что
   под баннером, по прямой просьбе владельца 16.09.2026. Фоллбэк на непрозрачный
   --surface для браузеров без backdrop-filter (Firefox < 103, старые Safari). */
.cookie-banner{
  position:fixed; left:16px; right:16px; bottom:16px; z-index:100; max-width:560px; margin:0 auto;
  background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:16px 18px;
  box-shadow:var(--shadow); display:flex; flex-direction:column; gap:12px;
}
@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)){
  .cookie-banner{
    background:var(--glass-bg); border:1px solid var(--glass-border);
    box-shadow:var(--glass-shadow); -webkit-backdrop-filter:blur(18px) saturate(160%); backdrop-filter:blur(18px) saturate(160%);
  }
}
.cookie-banner[hidden]{ display:none !important; }
.cookie-banner p{ margin:0; font-size:13px; color:var(--ink-soft); line-height:1.5; }
.cookie-banner a{ color:var(--accent); }
.cookie-banner-actions{ display:flex; gap:8px; justify-content:flex-end; }
.cookie-banner-actions .btn{ width:auto; padding:9px 18px; font-size:13px; }
