:root{
  /* ── ТЁМНАЯ тема (дефолт). Палитра под бренд АрендОК: мятный (действия) + фиолет (акцент) ── */
  --bg:#0d0f12;
  --bg-soft:#14171c;
  --card:#181b21;
  --card-2:#1e222a;
  --line:#262b34;
  --line-strong:#323a47;
  --txt:#eef1f6;
  --txt-2:#9aa3b2;
  --txt-3:#5f6877;
  --accent:#9b7dff;                       /* фиолет — активное/выделения/эксклюзив/primary */
  --accent-2:#b4a0ff;
  --accent-soft:rgba(155,125,255,.15);
  --accent-ring:rgba(155,125,255,.22);
  --green:#34d6a8;                         /* мятный — действия (Отправить) + выбор */
  --green-soft:rgba(52,214,168,.15);
  --amber:#f5b945;
  --red:#ff6b6b;
  --pet:#c98bff;
  --panel:rgba(20,24,30,.97);              /* плавающие панели (очередь, sel-bar) */
  --bar:rgba(18,21,26,.86);                /* нижнее таб-меню */
  --bar-fade:rgba(13,15,18,.85);           /* нижний край шапки (градиент) */
  --shim-1:#171b21; --shim-2:#20242d;      /* shimmer-плейсхолдер фото */
  --nophoto-1:#171b21; --nophoto-2:#191d24;
  --scrim:rgba(13,15,18,.66);              /* затемнение над фото (бейджи) */
  --av-1:#2a3140; --av-2:#1b2029;          /* градиент аватара */
  --map-bg:#1a1d23;
  --hdr:#0d0f12;                           /* цвет шапки/фона Telegram под тему */
  --radius:18px;
  --radius-sm:13px;
  --shadow:0 8px 30px rgba(0,0,0,.45);
  --safe-top:env(safe-area-inset-top,0px);
  --safe-bot:env(safe-area-inset-bottom,0px);
}
:root[data-theme="light"]{
  /* ── СВЕТЛАЯ тема (под сайт АрендОК: белый фон, светло-серые карточки) ── */
  --bg:#f4f5f7;
  --bg-soft:#eef0f3;
  --card:#ffffff;
  --card-2:#eef1f4;
  --line:#e3e6ea;
  --line-strong:#d4d8de;
  --txt:#15181d;
  --txt-2:#5f6672;
  --txt-3:#9aa1ad;
  --accent:#7c5cfc;
  --accent-2:#6b4ce0;
  --accent-soft:rgba(124,92,252,.12);
  --accent-ring:rgba(124,92,252,.20);
  --green:#10c39c;
  --green-soft:rgba(16,195,156,.14);
  --amber:#c98313;
  --red:#e04646;
  --pet:#8b5cf6;
  --panel:rgba(255,255,255,.97);
  --bar:rgba(248,249,251,.92);
  --bar-fade:rgba(244,245,247,.85);
  --shim-1:#eef0f3; --shim-2:#e2e5ea;
  --nophoto-1:#eef0f3; --nophoto-2:#e6e9ee;
  --scrim:rgba(13,15,18,.5);
  --av-1:#e2e6ee; --av-2:#cfd5e0;
  --map-bg:#e8eaee;
  --hdr:#f4f5f7;
  --shadow:0 8px 30px rgba(20,30,50,.12);
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;height:100%;}
body{
  background:var(--bg);
  color:var(--txt);
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  font-size:15px;line-height:1.45;
  overscroll-behavior-y:none;
  -webkit-font-smoothing:antialiased;
}
/* height (а не min-height) — чтобы скроллился ВНУТРЕННИЙ #view, а не всё окно.
   Иначе #view (overflow-y:auto) не получал чёткую высоту, скроллился body, и не
   работали: sticky-меню, reveal при скролле, подсветка шапки, сброс прокрутки. */
#app{display:flex;flex-direction:column;height:var(--tg-vh,100vh);min-height:0;}

/* ── Top bar ── */
#topbar{
  position:sticky;top:0;z-index:20;
  padding:calc(var(--safe-top) + 10px) 16px 10px;
  background:linear-gradient(180deg,var(--bg) 60%,var(--bar-fade) 100%);
  backdrop-filter:blur(12px);
  border-bottom:1px solid transparent;
  transition:border-color .2s;
}
#topbar.scrolled{border-bottom-color:var(--line);}
.tb-title{font-size:25px;font-weight:740;letter-spacing:-.02em;}
.tb-sub{font-size:12.5px;color:var(--txt-2);margin-top:1px;}

/* ── Main view ── */
#view{flex:1;padding:12px 16px 96px;overflow-y:auto;}

/* ── Tab bar ── */
#tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:30;
  display:flex;
  padding:8px 10px calc(var(--safe-bot) + 8px);
  background:var(--bar);
  backdrop-filter:blur(18px);
  border-top:1px solid var(--line);
}
.tab{
  flex:1;background:none;border:none;color:var(--txt-3);
  display:flex;flex-direction:column;align-items:center;gap:3px;
  font-size:11px;font-weight:600;padding:6px 0;cursor:pointer;
  transition:color .18s,transform .1s;
}
.tab .ic{font-size:20px;line-height:1;}
.tab{font-size:10.5px;}
.tab.active{color:var(--accent-2);}
.tab:active{transform:scale(.92);}

/* ── Cards ── */
.card{
  background:var(--card);border:1px solid var(--line);
  border-radius:var(--radius);padding:16px;margin-bottom:12px;
  transition:transform .12s,border-color .18s;
}
.card.tap:active{transform:scale(.985);border-color:var(--line-strong);}

.section-title{
  font-size:13px;font-weight:700;color:var(--txt-2);
  text-transform:uppercase;letter-spacing:.06em;
  margin:22px 4px 10px;
}
.section-title:first-child{margin-top:8px;}

/* ── Stats grid ── */
.stats-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;}
.stat{
  background:var(--card);border:1px solid var(--line);
  border-radius:var(--radius);padding:14px 10px 12px;
  position:relative;overflow:hidden;
}
.stat .num{font-size:26px;font-weight:760;letter-spacing:-.03em;line-height:1;}
.stat .lbl{font-size:11.5px;color:var(--txt-2);margin-top:6px;}
.stat .glow{position:absolute;top:-30px;right:-30px;width:90px;height:90px;border-radius:50%;filter:blur(28px);opacity:.5;}
.stat.a .glow{background:var(--accent);}
.stat.g .glow{background:var(--green);}
.stat.am .glow{background:var(--amber);}
.stat.p .glow{background:var(--pet);}

/* ── Quick actions ── */
.quick{display:grid;grid-template-columns:1fr 1fr;gap:12px;grid-auto-rows:1fr;}
.quick-btn{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:18px 16px;text-align:left;color:var(--txt);cursor:pointer;
  display:flex;flex-direction:column;gap:8px;transition:transform .1s,border-color .18s;
  height:100%;box-sizing:border-box;
}
.quick-btn:active{transform:scale(.97);}
.quick-btn .qi{font-size:22px;}
.quick-btn .qt{font-weight:650;font-size:14.5px;}
.quick-btn .qs{font-size:12px;color:var(--txt-2);}

/* ── Client row ── */
.client-row{display:flex;align-items:center;gap:13px;}
.avatar{
  width:46px;height:46px;border-radius:50%;flex:none;
  background:linear-gradient(135deg,var(--av-1),var(--av-2));
  display:flex;align-items:center;justify-content:center;
  font-weight:680;font-size:17px;color:var(--accent-2);
  overflow:hidden;border:1px solid var(--line);
}
.avatar img{width:100%;height:100%;object-fit:cover;}
.client-main{flex:1;min-width:0;}
.client-name{font-weight:640;font-size:16px;display:flex;align-items:center;gap:7px;}
.client-name .dot{width:7px;height:7px;border-radius:50%;flex:none;}
.dot.active{background:var(--green);box-shadow:0 0 8px var(--green);}
.dot.paused{background:var(--txt-3);}
.dot.done{background:var(--accent);}
.client-crit{font-size:12.5px;color:var(--txt-2);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.chev{color:var(--txt-3);font-size:19px;flex:none;}

/* ── Chips / pills ── */
.chips{display:flex;flex-wrap:wrap;gap:7px;}
.chip{
  background:var(--card-2);border:1px solid var(--line);
  border-radius:10px;padding:5px 11px;font-size:12.5px;color:var(--txt-2);
  display:inline-flex;align-items:center;gap:5px;
}
.chip.accent{background:var(--accent-soft);color:var(--accent-2);border-color:transparent;}
.chip.green{background:var(--green-soft);color:var(--green);border-color:transparent;}
.chip.pet{background:rgba(201,139,255,.14);color:var(--pet);border-color:transparent;}

/* ── Segmented control ── */
.seg{
  display:flex;background:var(--bg-soft);border:1px solid var(--line);
  border-radius:13px;padding:4px;gap:3px;margin:4px 0 14px;
}
.seg button{
  flex:1;background:none;border:none;color:var(--txt-2);
  font-size:13.5px;font-weight:600;padding:8px 4px;border-radius:9px;cursor:pointer;
  transition:background .18s,color .18s;
}
.seg button.on{background:var(--card-2);color:var(--txt);box-shadow:0 1px 4px rgba(0,0,0,.3);}

/* ── Listing card ── */
.listing-price{font-size:21px;font-weight:740;letter-spacing:-.02em;}
.listing-title{font-weight:620;font-size:15.5px;margin-top:2px;}
.listing-meta{font-size:12.5px;color:var(--txt-2);margin-top:4px;}
.listing-thumb{
  width:100%;height:170px;border-radius:var(--radius-sm);object-fit:cover;
  margin-bottom:12px;background:var(--card-2);display:block;
}
.geo-line{font-size:12.5px;color:var(--txt-2);margin-top:5px;}

/* ── Buttons ── */
.btn{
  display:flex;align-items:center;justify-content:center;gap:8px;
  width:100%;padding:14px;border-radius:14px;border:none;cursor:pointer;
  font-size:15px;font-weight:650;transition:transform .1s,opacity .15s;
}
.btn:active{transform:scale(.98);}
.btn-primary{background:var(--accent);color:#fff;}
.btn-soft{background:var(--card-2);color:var(--txt);border:1px solid var(--line);}
.btn-green{background:var(--green);color:#06231a;}
.btn-ghost{background:none;color:var(--accent-2);}
.btn-danger{background:rgba(255,107,107,.14);color:var(--red);}
.btn-row{display:flex;gap:10px;}
.btn.sm{padding:10px 14px;font-size:13.5px;width:auto;border-radius:11px;}

/* ── Inputs ── */
.field{margin-bottom:14px;}
.field label{display:block;font-size:12.5px;color:var(--txt-2);margin-bottom:6px;font-weight:600;}
.input,textarea.input{
  width:100%;background:var(--bg-soft);border:1px solid var(--line);
  border-radius:12px;padding:13px 14px;color:var(--txt);font-size:15px;
  font-family:inherit;transition:border-color .18s;resize:none;
}
.input:focus,textarea.input:focus{outline:none;border-color:var(--accent);}
textarea.input{resize:vertical;min-height:70px;}
/* Поле поиска: одна строка по дефолту, авто-рост задаётся из JS (sGrow). */
textarea.input#sInput{resize:none;min-height:0;height:auto;max-height:140px;overflow-y:auto;line-height:1.4;}

/* ── Плашка техработ: одна строка, бегущая строка (marquee) ── */
#maintBanner{position:relative;z-index:5;background:#7c5e10;color:#ffe9a8;
  font-size:12px;height:26px;line-height:26px;overflow:hidden;white-space:nowrap;}
#maintBanner .maint-track{display:flex;width:max-content;will-change:transform;
  animation:maint-marquee 22s linear infinite;}
#maintBanner .maint-track span{padding-right:64px;white-space:nowrap;}
@keyframes maint-marquee{from{transform:translateX(0);}to{transform:translateX(-50%);}}
@media (prefers-reduced-motion:reduce){
  #maintBanner .maint-track{animation:none;width:auto;justify-content:center;}
  #maintBanner{text-align:center;}
  #maintBanner .maint-track span:last-child{display:none;}
  #maintBanner .maint-track span{padding-right:0;}
}

/* ── Detail header ── */
.detail-hero{display:flex;align-items:center;gap:15px;margin-bottom:18px;}
.detail-hero .avatar{width:62px;height:62px;font-size:23px;}
.detail-hero h2{margin:0;font-size:21px;font-weight:720;letter-spacing:-.02em;}
.detail-hero .sub{color:var(--txt-2);font-size:13px;margin-top:3px;}

.kv{display:flex;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--line);font-size:14.5px;}
.kv:last-child{border-bottom:none;}
.kv .k{color:var(--txt-2);}
.kv .v{font-weight:600;text-align:right;}

/* ── Bottom sheet ── */
.sheet{position:fixed;inset:0;z-index:100;display:flex;align-items:flex-end;}
.sheet.hidden{display:none;}
.sheet-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.55);backdrop-filter:blur(2px);animation:fade .2s;}
.sheet-body{
  position:relative;width:100%;max-height:88vh;overflow-y:auto;
  background:var(--bg-soft);border-radius:24px 24px 0 0;
  border-top:1px solid var(--line);
  padding:10px 18px calc(var(--safe-bot) + 24px);
  box-shadow:var(--shadow);animation:slideup .26s cubic-bezier(.22,.9,.3,1);
}
.sheet-grip{width:38px;height:4px;border-radius:3px;background:var(--line);margin:6px auto 16px;}
.sheet-title{font-size:18px;font-weight:700;margin:0 0 14px;}
@keyframes slideup{from{transform:translateY(100%);}to{transform:translateY(0);}}
@keyframes fade{from{opacity:0;}to{opacity:1;}}

/* ── Misc ── */
.loader{display:flex;justify-content:center;padding:60px 0;}
.spin{width:30px;height:30px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:rot .8s linear infinite;}
@keyframes rot{to{transform:rotate(360deg);}}
.empty{text-align:center;color:var(--txt-3);padding:50px 20px;font-size:14px;}
.empty .em-ic{font-size:38px;display:block;margin-bottom:12px;opacity:.6;}
.toast{
  position:fixed;left:50%;bottom:calc(var(--safe-bot) + 80px);transform:translateX(-50%);
  background:var(--card-2);border:1px solid var(--line);color:var(--txt);
  padding:12px 20px;border-radius:13px;font-size:14px;z-index:200;
  box-shadow:var(--shadow);animation:fade .2s;max-width:88%;text-align:center;
}
.toast.hidden{display:none;}
.toast.ok{border-color:var(--green);}
.toast.err{border-color:var(--red);}
.back-btn{
  background:none;border:none;color:var(--accent-2);font-size:15px;font-weight:600;
  padding:6px 0;margin:2px 0 12px;cursor:pointer;display:flex;align-items:center;gap:4px;
}
.muted{color:var(--txt-2);font-size:13.5px;}
.row-between{display:flex;justify-content:space-between;align-items:center;}
.fade-in{animation:fadein .3s ease;}
@keyframes fadein{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}
.check{
  width:24px;height:24px;border-radius:7px;border:2px solid var(--line);flex:none;
  display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;
  transition:background .15s,border-color .15s;
}
.check.on{background:var(--green);border-color:var(--green);}
/* ── Миниатюра объекта ── */
.card.pad0{padding:0;overflow:hidden;}
.card-body{padding:16px;}
.card-thumb{
  width:100%;height:175px;background:var(--card-2) center/cover no-repeat;
  position:relative;display:flex;align-items:flex-start;justify-content:flex-end;
  border-bottom:1px solid var(--line);
}
.card-thumb::before{
  content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,var(--shim-1) 30%,var(--shim-2) 50%,var(--shim-1) 70%);
  background-size:200% 100%;animation:shim 1.25s linear infinite;
}
.card-thumb.loaded::before,.card-thumb.nophoto::before{display:none;}
@keyframes shim{to{background-position:-200% 0;}}
.card-thumb.loaded{border-bottom:none;}
.card-thumb.nophoto{
  height:64px;
  background:repeating-linear-gradient(135deg,var(--nophoto-1),var(--nophoto-1) 12px,var(--nophoto-2) 12px,var(--nophoto-2) 24px);
}
.card-thumb.nophoto::after{
  content:"нет фото";position:absolute;left:14px;top:50%;transform:translateY(-50%);
  color:var(--txt-3);font-size:12.5px;
}
.src-badge{
  margin:10px;padding:4px 10px;border-radius:9px;font-size:11.5px;font-weight:600;
  background:var(--scrim);color:#dfe5ef;backdrop-filter:blur(6px);
}
.lid-badge{
  margin-left:6px;font-size:0.78em;font-weight:400;
  opacity:0.35;letter-spacing:.01em;
}
/* «Анонс» — объект пока не актуален/без фото: яркий янтарный бейдж, чтобы не сливался */
.anons-badge{
  display:inline-flex;align-items:center;gap:4px;vertical-align:middle;margin-right:3px;
  font-size:11px;font-weight:800;letter-spacing:.02em;text-transform:uppercase;
  color:#3a2700;background:#f5b945;border-radius:6px;padding:2px 7px;line-height:1.35;
}
.anons-badge svg{width:12px;height:12px;}

/* ── Чипы-кнопки выбора (циан-стиль) ── */
.chipsel{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:4px;}
.chsel{
  background:var(--bg-soft);border:1px solid var(--line);color:var(--txt);
  border-radius:11px;padding:9px 15px;font-size:14.5px;font-weight:600;cursor:pointer;
  transition:transform .1s,background .15s,border-color .15s,color .15s;min-width:46px;
}
.chsel.sm2{padding:7px 12px;font-size:13px;}
.chsel:active{transform:scale(.94);}
.chsel.on{background:var(--accent);border-color:var(--accent);color:#fff;}
.ed-label{font-size:12.5px;color:var(--txt-2);font-weight:650;margin:16px 2px 8px;}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px;}

/* ── Кнопка записи голоса ── */
.voicebtn.rec{background:rgba(255,107,107,.16);color:var(--red);border-color:transparent;animation:pulse 1.1s ease-in-out infinite;}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:.55;}}

.fab{
  position:fixed;right:18px;bottom:calc(var(--safe-bot) + 78px);z-index:25;
  width:54px;height:54px;border-radius:50%;background:var(--accent);color:#fff;
  border:none;font-size:26px;box-shadow:0 6px 20px rgba(0,0,0,.35);cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:transform .12s;
}
.fab:active{transform:scale(.9);}

/* ── Поиск объявления по номеру ── */
.idsearch{display:flex;gap:8px;margin-bottom:12px;}
.idsearch .input{flex:1;}
.idsearch .btn{white-space:nowrap;}

/* ── История отправок ── */
.hist-ic{
  width:40px;height:40px;flex:0 0 40px;border-radius:11px;display:flex;align-items:center;
  justify-content:center;font-size:18px;background:var(--green-soft);color:var(--green);
}
.hist-meta{font-size:12px;color:var(--txt-3);margin-top:4px;}
.hist-meta b{color:var(--txt-2);font-weight:600;}

/* ── Очередь отправки (плавающая панель) ── */
#sendq{
  position:fixed;left:10px;right:10px;bottom:calc(var(--safe-bot) + 88px);
  z-index:60;background:var(--panel);border:1px solid var(--line);
  border-radius:16px;padding:12px 14px;box-shadow:0 8px 22px rgba(0,0,0,.28);
  backdrop-filter:blur(10px);animation:sqIn .22s ease;
}
@keyframes sqIn{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:none;}}
.sq-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.sq-title{font-weight:640;font-size:13.5px;display:flex;align-items:center;gap:8px;}
.sq-x{background:none;border:none;color:var(--accent);font-size:13px;font-weight:600;padding:4px 6px;}
.sq-spin{
  width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.18);
  border-top-color:var(--accent);display:inline-block;animation:rot .7s linear infinite;
}
.sq-list{display:flex;flex-direction:column;gap:6px;max-height:34vh;overflow:auto;}
.sq-row{display:flex;align-items:center;gap:9px;font-size:12.5px;}
.sq-ic{width:18px;flex:0 0 18px;text-align:center;font-size:13px;}
.sq-row.send .sq-ic{color:var(--accent);}
.sq-row.ok .sq-ic{color:var(--green);}
.sq-row.err .sq-ic{color:var(--red);}
.sq-row.wait{opacity:.6;}
.sq-info{min-width:0;display:flex;flex-direction:column;line-height:1.25;}
.sq-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--txt);}
.sq-sub{font-size:11px;color:var(--txt-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* ── Выбор нескольких объявлений (галочка на карточке) ── */
.lc-check{
  flex:0 0 26px;width:26px;height:26px;margin-left:10px;border-radius:50%;
  border:2px solid var(--line);display:flex;align-items:center;justify-content:center;
  font-size:14px;color:#fff;background:transparent;transition:.15s;cursor:pointer;
}
.lc-check.on{background:var(--green);border-color:var(--green);}
.card.lc-sel{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;}
.sel-bar{
  position:fixed;left:10px;right:10px;bottom:calc(var(--safe-bot) + 88px);z-index:56;
  display:flex;gap:8px;align-items:center;padding:10px;border-radius:14px;
  background:var(--panel);border:1px solid var(--accent);
  box-shadow:0 8px 22px rgba(0,0,0,.28);backdrop-filter:blur(10px);animation:sqIn .2s ease;
  transition:opacity .18s cubic-bezier(.22,.9,.3,1),transform .18s cubic-bezier(.22,.9,.3,1);
}
/* уход панели выбора: опускается + растворяется (visibility с задержкой убирает её после анимации) */
.sel-bar.hidden{
  opacity:0;transform:translateY(16px);pointer-events:none;visibility:hidden;
  transition:opacity .16s ease,transform .16s ease,visibility 0s linear .16s;
}

/* ── Галочка выбора: заметнее ── */
.lc-check{
  width:30px;height:30px;flex:0 0 30px;margin-left:12px;border-radius:50%;
  border:2px solid var(--green);background:var(--green-soft);
  box-shadow:0 0 0 4px var(--green-soft);
}
.lc-check.on{background:var(--green);border-color:var(--green);box-shadow:0 0 0 4px var(--green-soft);}
.card.lc-sel{border-color:var(--green);box-shadow:0 0 0 1px var(--green) inset;}
.pick-hint{
  font-size:12.5px;color:var(--accent-2);background:var(--accent-soft);
  border:1px solid var(--accent-ring);border-radius:12px;
  padding:9px 12px;margin:0 0 12px;line-height:1.35;
}

/* ── Прогрессивное превью: low-quality сначала размыто ── */
.card-thumb.lq{filter:blur(7px) saturate(1.05);transform:scale(1.04);}
.card-thumb{transition:filter .35s ease;}
img.listing-thumb.lq{filter:blur(8px) saturate(1.05);}
img.listing-thumb{transition:filter .35s ease;}

/* ── Очередь отправки: окно отмены ── */
.sq-row.pending{opacity:1;}
.sq-row.pending .sq-ic{color:var(--amber);}
.sq-cancel{
  flex:0 0 auto;margin-left:auto;background:rgba(255,107,107,.14);color:var(--red);
  border:none;border-radius:9px;padding:5px 10px;font-size:11.5px;font-weight:600;cursor:pointer;
}
.sq-x.danger{color:var(--red);}

/* ── Карта (обвести область) ── */
.map-tools{display:flex;gap:8px;align-items:center;margin-bottom:10px;}
.map-box{height:58vh;min-height:340px;border-radius:14px;overflow:hidden;border:1px solid var(--line);background:var(--card-2);}
.map-box.drawing{touch-action:none;}
.map-box.drawing .leaflet-interactive{cursor:crosshair;}
.map-legend{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--txt-3);margin-top:8px;}
.dotm{width:10px;height:10px;border-radius:50%;display:inline-block;margin-left:8px;}
.dotm.blue{background:#5b8cff;}
.dotm.amber{background:#f5b945;}
.area-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px;}
.area-chips:empty{display:none;}
.area-chip{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:600;color:var(--txt);background:var(--card-2);border:1px solid var(--line);border-radius:999px;padding:5px 6px 5px 11px;}
.area-chip svg{width:13px;height:13px;opacity:.7;}
.area-x{border:none;background:rgba(127,127,127,.16);color:var(--txt-2);width:18px;height:18px;border-radius:50%;font-size:11px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;}
.area-x:active{background:rgba(127,127,127,.3);}
.leaflet-container{background:var(--map-bg);font:inherit;}

/* ── Карусель последних объектов (Главная) ── */
.carousel{display:flex;gap:12px;overflow-x:auto;padding:4px 8px 16px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;}
.carousel::-webkit-scrollbar{display:none;}
.ccard{flex:0 0 196px;scroll-snap-align:start;background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;cursor:pointer;transition:transform .1s;}
.ccard:active{transform:scale(.98);}
.cc-thumb{height:118px;background:var(--card-2);background-size:cover;background-position:center;position:relative;display:flex;align-items:flex-start;}
.cc-thumb.nophoto{background:repeating-linear-gradient(135deg,var(--nophoto-1),var(--nophoto-1) 12px,var(--nophoto-2) 12px,var(--nophoto-2) 24px);}
.cc-thumb.nophoto::after{content:"нет фото";position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--txt-3);font-size:12px;}
.cc-body{padding:10px 12px 12px;}
.cc-price{font-weight:740;font-size:16px;letter-spacing:-.02em;}
.cc-title{font-size:13px;font-weight:600;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cc-meta{font-size:11.5px;color:var(--txt-2);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* ── Ссылка «все ›» в шапке карусели (без рамки кнопки) ── */
.link-all{background:none;border:none;color:var(--accent-2);font-size:13px;font-weight:600;cursor:pointer;padding:4px 0;width:auto;}
.link-all:active{opacity:.6;}

/* ── Убираем горизонтальное переполнение (чёрные краюшки при переходах) ── */
html,body,#app,#view{max-width:100%;overflow-x:hidden;}
#view>*{max-width:100%;}

/* ── Версия (незаметно) ── */
.app-ver{text-align:center;color:var(--txt-3);font-size:11px;letter-spacing:.06em;margin:26px 0 8px;opacity:.7;}

/* ФДГ — превью фото */
.ap-photos{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:10px}
.ap-thumb{aspect-ratio:1/1;border-radius:10px;background:var(--card-2) center/cover no-repeat;border:1px solid var(--line)}

/* ── Лёгкий лоск ── */
.ccard{box-shadow:0 2px 8px rgba(0,0,0,.12);}
.cc-thumb::after{content:"";position:absolute;left:0;right:0;bottom:0;height:38px;background:linear-gradient(180deg,transparent,rgba(13,15,18,.45));pointer-events:none;}
.cc-thumb.nophoto::after{background:none;}
.carousel{scroll-padding-left:2px;}
.section-title{color:var(--txt-2);}

/* ── Фото в детальном просмотре: во всю ширину, без чёрных уголков ── */
.detail-photo{
  display:block;width:calc(100% + 32px);max-width:none;margin:-6px -16px 16px;
  height:248px;object-fit:cover;background:var(--card-2);transition:filter .35s ease;
}
.detail-photo.lq{filter:blur(8px) saturate(1.05);}
.gal-img.lq{filter:blur(10px) saturate(1.05);}

/* ── Полоска миниатюр под обложкой объекта ── */
.detail-thumbs{
  display:flex;gap:6px;overflow-x:auto;margin:0 0 10px;padding-bottom:4px;
  -webkit-overflow-scrolling:touch;scrollbar-width:none;
}
.detail-thumbs::-webkit-scrollbar{display:none;}
.dthumb{
  flex:0 0 auto;width:60px;height:60px;border-radius:9px;cursor:pointer;
  background:var(--card-2) center/cover no-repeat;border:1px solid var(--line);
  opacity:.55;transition:opacity .25s ease,transform .1s;
}
.dthumb.loaded{opacity:1;}
.dthumb:active{transform:scale(.94);}

/* ── Шапка: 3-колоночный grid [лево: ‹+тексты | центр: лого | право: колокол] ── */
/* 1fr | auto | 1fr → лого ВСЕГДА строго по центру экрана, не зависит от длины заголовка */
.tb-head{width:100%;}
.back-btn{
  flex:0 0 auto;background:none;border:none;color:var(--accent-2);
  font-size:30px;line-height:1;font-weight:400;padding:0;margin:-2px 4px 0 -4px;cursor:pointer;
}
.back-btn.hidden{display:none;}
.back-btn:active{opacity:.55;}
/* Когда есть back — заголовок чуть мельче (рядом стрелка) */
#topbar.has-back .tb-title{font-size:20px;}

/* ── 4 вкладки → шрифт крупнее ── */
.tab{font-size:11.5px;}

/* ── Строка поиска (в Объектах) ── */
.search-bar{
  width:100%;display:flex;align-items:center;gap:10px;text-align:left;
  background:var(--bg-soft);border:1px solid var(--line);border-radius:13px;
  padding:13px 14px;color:var(--txt-3);font-size:15px;font-family:inherit;
  margin-bottom:12px;cursor:pointer;transition:border-color .15s;
}
.search-bar .sb-ic{font-size:18px;color:var(--txt-2);}
.search-bar:active{border-color:var(--accent);}

/* ── Теги-чипы в фильтрах (несколько ЖК/районов/метро) ── */
.tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px;}
.tags:empty{display:none;}
.tag{
  display:inline-flex;align-items:center;gap:7px;background:var(--accent-soft);
  color:var(--accent-2);border-radius:9px;padding:5px 8px 5px 11px;font-size:13px;font-weight:600;
}
.tag-x{cursor:pointer;font-size:16px;line-height:1;opacity:.8;}
.tag-x:active{opacity:.5;}

/* ── Метка эксклюзива ── */
.excl-line{font-size:12px;font-weight:600;color:var(--accent);margin-top:5px;}

/* ════════════════════════ Онбординг (spotlight-тур) ════════════════════════ */
#onb{position:fixed;inset:0;z-index:1000;}
#onb.hidden{display:none;}
/* «дырка» подсветки: прозрачный блок, вокруг него огромная тень = затемнение всего */
#onbHole{
  position:absolute;border-radius:14px;
  box-shadow:0 0 0 9999px rgba(8,10,13,.80);
  transition:all .28s cubic-bezier(.4,0,.2,1);
  pointer-events:none;
  outline:2px solid var(--accent);outline-offset:2px;
}
#onbHole.center{box-shadow:0 0 0 9999px rgba(8,10,13,.86);outline:none;}
/* перехват кликов мимо подсказки, чтобы юзер не тыкал по приложению во время тура */
#onbCatch{position:absolute;inset:0;}
.onb-card{
  position:absolute;left:16px;right:16px;
  background:var(--card-2);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:18px 18px 16px;
  animation:onbPop .26s cubic-bezier(.34,1.4,.5,1) both;
}
@keyframes onbPop{from{opacity:0;transform:translateY(8px) scale(.97);}to{opacity:1;transform:none;}}
.onb-card .onb-ic{font-size:26px;margin-bottom:8px;}
.onb-card h3{margin:0 0 6px;font-size:18px;font-weight:700;}
.onb-card p{margin:0;color:var(--txt-2);font-size:14px;line-height:1.5;}
.onb-foot{display:flex;align-items:center;justify-content:space-between;margin-top:16px;gap:10px;}
.onb-dots{display:flex;gap:6px;}
.onb-dots i{width:6px;height:6px;border-radius:50%;background:var(--line);transition:background .2s,width .2s;}
.onb-dots i.on{background:var(--accent);width:16px;border-radius:3px;}
.onb-btns{display:flex;gap:8px;}
.onb-skip{background:none;border:none;color:var(--txt-3);font-size:13px;cursor:pointer;font-family:inherit;padding:6px 2px;}
.onb-skip:active{color:var(--txt-2);}

/* ════════════════════════ Галерея фото объекта ════════════════════════ */
.detail-photo-wrap{position:relative;}
.gal-count{
  position:absolute;right:10px;bottom:10px;
  background:rgba(0,0,0,.6);color:#fff;font-size:12.5px;font-weight:600;
  padding:4px 9px;border-radius:20px;backdrop-filter:blur(4px);
}
.gallery-ov{
  position:fixed;inset:0;z-index:1100;background:#000;
  display:flex;flex-direction:column;
  animation:onbPop .2s ease both;
  overscroll-behavior:none;touch-action:none;  /* не триггерим pull-to-refresh/back-жест браузера */
}
.gal-top{
  display:flex;align-items:center;justify-content:space-between;
  padding:calc(var(--safe-top) + 12px) 16px 8px;color:#fff;
}
.gal-pos{font-size:14px;font-weight:600;color:#fff;opacity:.9;}
.gal-close{
  background:rgba(255,255,255,.12);border:none;color:#fff;
  width:34px;height:34px;border-radius:50%;font-size:18px;line-height:1;cursor:pointer;
}
.gal-close:active{background:rgba(255,255,255,.25);}
.gal-stage{flex:1;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;}
.gal-blur-bg{position:absolute;inset:-30px;background-size:cover;background-position:center;filter:blur(28px);opacity:.55;pointer-events:none;transition:background-image .15s;}
.gal-img{position:relative;z-index:1;max-width:100%;max-height:100%;object-fit:contain;transition:opacity .18s;}
.gal-spin{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;}
.gal-nav{
  position:absolute;top:50%;transform:translateY(-50%);
  background:rgba(255,255,255,.10);border:none;color:#fff;
  width:42px;height:42px;border-radius:50%;font-size:26px;line-height:1;cursor:pointer;z-index:2;
}
.gal-nav.prev{left:10px;} .gal-nav.next{right:10px;}
.gal-nav:active{background:rgba(255,255,255,.25);}
.gal-bottom{padding:14px 16px calc(var(--safe-bot) + 16px);display:flex;justify-content:center;}
.gal-cover.is-cover{background:var(--green);color:#06281d;}

/* Компактные иконки-фильтры (источник/комиссия/сортировка/расш.фильтры) */
.mini-row{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;margin-bottom:8px;}
.mini-row::-webkit-scrollbar{display:none;}
.mini-chip{flex:none;position:relative;background:var(--card-2);border:1px solid var(--line);
  color:var(--txt);border-radius:10px;padding:8px 11px;font-size:16px;
  white-space:nowrap;cursor:pointer;display:flex;align-items:center;}
.mini-chip.act{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-2);}
.mini-chip:active{opacity:.8;}
.mc-dot{position:absolute;top:4px;right:4px;width:6px;height:6px;border-radius:50%;background:var(--accent);}
/* Строка поиска по агенту на вкладке Объекты */
.list-search{position:relative;margin-bottom:10px;display:flex;align-items:center;}
.list-search .ls-ic{position:absolute;left:12px;color:var(--txt-3);pointer-events:none;display:flex;z-index:1;}
.list-search input{padding:12px 36px 12px 38px;width:100%;box-sizing:border-box;font-size:15px;}
.list-search .ls-clr{position:absolute;right:10px;background:none;border:none;color:var(--txt-2);font-size:18px;cursor:pointer;padding:4px;line-height:1;}
/* Шторка одиночного выбора */
.pick-list{display:flex;flex-direction:column;gap:6px;}
.pick-row{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  background:var(--card-2);border:1px solid var(--line);color:var(--txt);border-radius:12px;
  padding:14px 16px;font-size:15px;font-weight:600;cursor:pointer;text-align:left;}
.pick-row.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-2);}
.pick-row:active{opacity:.8;}
.pick-ok{color:var(--accent-2);font-size:17px;}

/* ── Когда видна панель «отправить выбранные» — поднимаем низ списка, чтобы она не
   перекрывала кнопку «Загрузить ещё». :has() — без JS (мягкая деградация на старье). ── */
body:has(.sel-bar:not(.hidden)) #view{padding-bottom:calc(var(--safe-bot) + 170px);}

/* ── Skeleton-загрузка (вместо спиннера): мерцающие карточки формы объявления ── */
.sk-list{display:flex;flex-direction:column;gap:14px;padding-top:6px;}
.sk-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px;}
.sk-photo{height:180px;border-radius:12px;margin-bottom:12px;}
.sk-line{height:14px;border-radius:7px;margin:8px 0;}
.sk-line.w60{width:60%;} .sk-line.w40{width:40%;}
.sk-row{display:flex;gap:8px;margin-top:14px;}
.sk-btn{flex:1;height:38px;border-radius:11px;}
.sk-photo,.sk-line,.sk-btn{
  background:linear-gradient(90deg,var(--card-2) 25%,var(--line) 50%,var(--card-2) 75%);
  background-size:200% 100%;animation:sk-shimmer 1.4s ease-in-out infinite;
}
@keyframes sk-shimmer{0%{background-position:200% 0;}100%{background-position:-200% 0;}}

/* ── Светлая тема: точечные доводки (размытые блики мутнеют на белом) ── */
:root[data-theme="light"] .stat .glow{opacity:.28;filter:blur(22px);}
:root[data-theme="light"] .seg button.on{box-shadow:0 1px 4px rgba(20,30,50,.1);}

/* ── Шапка: заголовок+подзаголовок слева · лого по центру · колокольчик справа ── */
.tb-head{overflow:visible;}  /* visible — чтобы значок колокольчика не обрезался */
/* 1fr | auto | 1fr: боковые колонки равны → центр-лого ровно по середине экрана */
.tb-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;column-gap:7px;min-width:0;}
/* левая зона: стрелка + блок текстов (заголовок над подзаголовком, выровнены по левому краю) */
.tb-left{grid-column:1;display:flex;align-items:center;gap:5px;min-width:0;}
.tb-titles{display:flex;flex-direction:column;min-width:0;}
.tb-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tb-sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* лого в центральной auto-колонке, не ловит тапы */
.brand-logo{grid-column:2;height:13px;width:auto;margin:0;color:var(--txt);pointer-events:none;}
.bell-btn{grid-column:3;justify-self:end;margin-left:0;}

/* ── Расширяем tap-область мелких крестиков/кнопок до 44×44 (визуал не трогаем) ──
   Невидимый псевдоэлемент по центру ловит палец — клик уходит на родителя. */
.area-x,.tag-x,.ls-clr,.gal-close,.sq-cancel,.ap-rm{position:relative;}
.area-x::after,.tag-x::after,.ls-clr::after,.gal-close::after,.sq-cancel::after,.ap-rm::after{
  content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:44px;height:44px;
}

/* ── Выходные анимации слоёв (зеркалят входы, короче по времени) ── */
.sheet.closing .sheet-body{animation:none;transform:translateY(100%);transition:transform .2s cubic-bezier(.22,.9,.3,1);}
.sheet.closing .sheet-backdrop{animation:none;opacity:0;transition:opacity .2s ease;}
#sendq.leaving{opacity:0;transform:translateY(16px);transition:opacity .18s ease,transform .18s ease;}
.gallery-ov.closing{opacity:0;transition:opacity .18s ease;}
.toast.out{opacity:0;transform:translate(-50%,8px);transition:opacity .2s ease,transform .2s ease;}

/* ── Уважаем системную настройку «уменьшить движение» (a11y) ── */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important;
  }
}

/* ════════ Колокольчик уведомлений (в шапке справа) ════════ */
.bell-btn{
  flex:0 0 auto;position:relative;background:none;border:none;color:var(--txt-2);
  padding:4px;margin-left:auto;cursor:pointer;display:inline-flex;align-items:center;
  transition:color .18s,transform .1s;
}
.bell-btn:active{transform:scale(.9);color:var(--accent-2);}
.bell-badge{
  position:absolute;top:-2px;right:-2px;min-width:17px;height:17px;padding:0 4px;
  border-radius:9px;background:var(--red);color:#fff;font-size:10.5px;font-weight:700;
  line-height:17px;text-align:center;box-shadow:0 0 0 2px var(--bg);
}
.bell-badge.hidden{display:none;}

/* ════════ Звезда «в избранное» ════════ */
.fav-btn{
  position:absolute;bottom:8px;right:8px;z-index:2;
  width:34px;height:34px;border-radius:50%;border:none;cursor:pointer;
  background:var(--scrim);color:#fff;backdrop-filter:blur(6px);
  display:flex;align-items:center;justify-content:center;font-size:17px;
  transition:transform .12s,color .15s;
}
.fav-btn:active{transform:scale(.85);}
.fav-btn.on{color:var(--amber);}
.fav-btn.on .lic{fill:var(--amber);}
.fav-toggle{flex:0 0 52px;width:52px;}
.fav-toggle.on{color:var(--amber);border-color:var(--amber);}
.fav-toggle.on .lic{fill:var(--amber);}

/* ════════ Reveal-on-scroll «менюшка» (поиск+фильтры) ════════ */
.sticky-menu{
  position:sticky;top:0;z-index:15;background:var(--bg);
  padding:10px 0 6px;margin-top:0;   /* воздух СВЕРХУ внутри менюшки (не лип к шапке) */
  transition:transform .25s ease,opacity .25s ease;
}
.sticky-menu.hdr-hidden{transform:translateY(-135%);opacity:0;pointer-events:none;}
/* Менюшку клеим ВПЛОТНУЮ к шапке (padding-top:0), а воздух над поиском даёт сама
   .sticky-menu (padding-top:10px выше). Точечно ТОЛЬКО на вкладках, где первый
   элемент — sticky-менюшка (Объекты/Поиск). Прочие вкладки сохраняют дефолтный отступ. */
#view:has(> .sticky-menu:first-child){padding-top:0;}
/* Поиск: менюшка-фильтры вложена в .search-wrap (не первый ребёнок #view), поэтому
   правило выше её не ловит. Убираем верхний padding #view, а воздух у поля поиска
   даёт сама .search-wrap — тогда при скролле панель фильтров клеится к шапке без дырки. */
#view:has(> .search-wrap){padding-top:0;}
.search-wrap{padding-top:12px;}

/* ── Кнопка «наверх»: всплывает при долгом скролле. Справа снизу; если на экране есть
   FAB (он тоже справа) — поднимаемся над ним. .hidden тут — фейд, не display:none. ── */
.to-top{
  position:fixed;right:16px;bottom:calc(var(--safe-bot) + 78px);
  width:44px;height:44px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:var(--card);color:var(--txt);border:1px solid var(--line);
  box-shadow:0 6px 18px rgba(0,0,0,.28);z-index:24;cursor:pointer;
  opacity:1;transform:translateY(0);transition:opacity .2s ease,transform .2s ease;
}
/* когда есть FAB — кнопка «наверх» встаёт над ним (FAB 54px + зазор) */
body:has(#fab) .to-top{bottom:calc(var(--safe-bot) + 144px);}
.to-top:active{transform:scale(.92);}
.to-top.hidden{opacity:0;transform:translateY(14px);pointer-events:none;}

/* ════════ Комментарии к объекту ════════ */
.cmts{display:flex;flex-direction:column;gap:8px;}
.cmt{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;}
.cmt-head{display:flex;align-items:center;gap:8px;margin-bottom:4px;}
.cmt-author{font-weight:660;font-size:13px;color:var(--accent-2);}
.cmt-date{font-size:11.5px;color:var(--txt-3);}
.cmt-del{margin-left:auto;background:none;border:none;color:var(--txt-3);cursor:pointer;font-size:14px;padding:2px;}
.cmt-del:active{color:var(--red);}
.cmt-text{font-size:14px;line-height:1.4;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;}
.cmt-form{display:flex;gap:8px;align-items:flex-end;margin-top:10px;}
.cmt-form .input{flex:1;min-height:44px;}
.cmt-form .btn{flex:0 0 auto;white-space:nowrap;}

/* ════════ Лента уведомлений (в шторке) ════════ */
.notif-list{display:flex;flex-direction:column;gap:8px;max-height:62vh;overflow:auto;}
.notif{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:11px 13px;}
.notif.unread{border-color:var(--accent);background:var(--accent-soft);}
.notif-text{font-size:14px;line-height:1.42;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;}
.notif-date{font-size:11.5px;color:var(--txt-3);margin-top:5px;}

/* ════════════════════════════════════════════════════════════════════════
   REDESIGN LAYER v46 — слой «живости» поверх базы. Логику НЕ меняет.
   Откат: удалить весь блок ниже + вернуть styles.css?v=45 в index.html.
   Тяжёлые эффекты завёрнуты в :root:not([data-theme="light"]) → светлая тема цела.
   ════════════════════════════════════════════════════════════════════════ */

/* — токены: палитра ТЁМНОЙ (светлую перебьёт её же правило выше по спец.) + новые — */
:root{
  --bg:#0a0c11;
  --card:#161921;
  --card-2:#1c2029;
  --ease-spring:cubic-bezier(.34,1.56,.64,1);
  --topedge:rgba(255,255,255,.06);
  --font-display:'Unbounded','Onest',-apple-system,sans-serif;
}

/* — шрифт интерфейса (обе темы, живая кириллица) — */
body{font-family:'Onest',-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;}

/* — фон: ambient-свечение + зерно (только тёмная; под контентом, не мешает скроллу) — */
#app{position:relative;}
:root:not([data-theme="light"]) #app::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background-image:
    radial-gradient(ellipse 85% 45% at 20% 0%, rgba(155,125,255,.10) 0%, transparent 60%),
    radial-gradient(ellipse 65% 40% at 90% 100%, rgba(52,214,168,.06) 0%, transparent 55%);
}
:root:not([data-theme="light"]) #app::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.4;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
#topbar,#view,#tabbar{position:relative;z-index:1;}

/* — типографика: цены/числа дисплейным Unbounded, секции без CAPS + линия — */
.listing-price,.stat .num{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-weight:700;letter-spacing:-.02em;}
.section-title{text-transform:none;letter-spacing:.02em;display:flex;align-items:center;gap:9px;}
.section-title::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--line),transparent);}

/* — пружина на тапе — */
.card{transition:transform .14s var(--ease-spring),border-color .18s,box-shadow .2s;}
.card.tap:active{transform:scale(.985);}
.btn{transition:transform .12s var(--ease-spring),opacity .15s,box-shadow .25s;}
.btn:active{transform:scale(.96);}
.tab:active{transform:scale(.9);}
.chip:active{transform:scale(.94);}

/* — глубина: top-edge + тени (только тёмная, светлая остаётся плоской) — */
:root:not([data-theme="light"]) .card,
:root:not([data-theme="light"]) .stat{
  box-shadow:0 1px 0 var(--topedge) inset,0 10px 28px rgba(0,0,0,.4),0 2px 6px rgba(0,0,0,.28);
}

/* — CTA glow (только тёмная) — */
:root:not([data-theme="light"]) .btn-green{box-shadow:0 6px 20px rgba(52,214,168,.38),0 1px 0 rgba(255,255,255,.22) inset;}
:root:not([data-theme="light"]) .btn-primary{box-shadow:0 6px 20px rgba(155,125,255,.4),0 1px 0 rgba(255,255,255,.2) inset;}

/* — стекло таб-бара (только тёмная) — */
:root:not([data-theme="light"]) #tabbar{backdrop-filter:blur(20px) saturate(1.4);box-shadow:0 -1px 0 rgba(255,255,255,.05) inset;}

/* — цветные числа статов (только тёмная) — */
:root:not([data-theme="light"]) .stat.a .num{color:#bfb0ff;}
:root:not([data-theme="light"]) .stat.g .num{color:#5fe7c4;}
:root:not([data-theme="light"]) .stat.am .num{color:#f7c662;}
:root:not([data-theme="light"]) .stat.p .num{color:#d2a3ff;}

/* — живой градиентный обвод эксклюзива (фолбэк: webview без :has() просто без обвода) — */
.card:has(.excl-line){position:relative;border-color:transparent;}
.card:has(.excl-line)::before{
  content:"";position:absolute;inset:0;border-radius:inherit;padding:1.5px;z-index:4;pointer-events:none;
  background:linear-gradient(135deg,#9b7dff,rgba(255,255,255,.5) 35%,#34d6a8 70%,#9b7dff);
  background-size:300% 300%;animation:flow 6s linear infinite;
  -webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;
}
@keyframes flow{to{background-position:300% 0;}}

/* ════════════════════════════════════════════════════════════════════════
   REDESIGN PHASE 2 v47 — полировка: карточки/списки, экран объекта, галерея,
   комментарии, уведомления. Логику/JS НЕ меняет (CSS-only). Тяжёлое —
   в :root:not([data-theme="light"]). Откат: удалить блок + вернуть v46.
   ════════════════════════════════════════════════════════════════════════ */

/* — Карточка объекта: обложка обрезается по радиусу + читаемый нижний скрим — */
.card.pad0{overflow:hidden;}
.card-thumb::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(0,0,0,.16) 0%,transparent 20%,transparent 56%,rgba(0,0,0,.5) 100%);
}
.card-thumb.nophoto::after{background:none;}
.src-badge{
  margin:9px;padding:3px 9px;border-radius:8px;font-size:11px;font-weight:600;
  letter-spacing:.01em;background:rgba(10,12,17,.55);
}
.lid-badge{opacity:.4;}
.listing-meta,.cc-meta,.notif-date,.hist-meta{font-variant-numeric:tabular-nums;}

/* — Звезда избранного: стеклянная, мягкая пружина — */
.fav-btn{
  width:32px;height:32px;background:rgba(10,12,17,.5);backdrop-filter:blur(8px);
  box-shadow:0 2px 8px rgba(0,0,0,.32);
  transition:transform .14s var(--ease-spring),color .15s,background .15s;
}
.fav-btn:active{transform:scale(.82);}
.fav-btn.on{background:rgba(245,185,69,.2);}

/* — Экран объекта: обложка со скруглением снизу + тень, миниатюры с пружиной — */
.detail-photo{border-radius:0 0 18px 18px;}
:root:not([data-theme="light"]) .detail-photo{box-shadow:0 12px 30px rgba(0,0,0,.45);}
.dthumb{transition:opacity .25s ease,transform .14s var(--ease-spring);}
.dthumb:active{transform:scale(.9);}

/* — Характеристики (kv): хайрлайны между строк, числа табличные, выравнивание — */
.kv{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;font-variant-numeric:tabular-nums;}
.kv+.kv{border-top:1px solid var(--line);}
.kv .k{color:var(--txt-2);font-size:13.5px;}
.kv .v{font-weight:620;text-align:right;}

/* — Комментарии: акцентная полоса слева, имя дисплейным шрифтом, пружина — */
.cmt{border-left:2px solid var(--accent-ring);transition:transform .14s var(--ease-spring);}
.cmt:active{transform:scale(.99);}
.cmt-author{font-family:var(--font-display);font-size:12.5px;font-weight:600;}
.cmt-form .input{border-radius:14px;}

/* — Уведомления: непрочитанные с точкой и свечением, плавное появление — */
.notif{transition:transform .14s var(--ease-spring),border-color .18s;animation:notifIn .3s var(--ease-spring) both;}
.notif:active{transform:scale(.99);}
@keyframes notifIn{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
:root:not([data-theme="light"]) .notif.unread{box-shadow:0 0 0 1px var(--accent-ring),0 6px 18px rgba(155,125,255,.18);}
.notif.unread .notif-text::before{
  content:"";display:inline-block;width:7px;height:7px;border-radius:50%;
  background:var(--accent);margin-right:8px;vertical-align:middle;
}

/* — Колокольчик: значок «выскакивает» пружиной при появлении — */
.bell-badge:not(.hidden){animation:bellPop .32s var(--ease-spring);}
@keyframes bellPop{from{transform:scale(0);}to{transform:scale(1);}}

/* — Быстрые действия + карусель: глубина и пружина (только тёмная) — */
.quick-btn{transition:transform .14s var(--ease-spring),border-color .18s,box-shadow .2s;}
.quick-btn:active{transform:scale(.96);}
.ccard{transition:transform .14s var(--ease-spring),box-shadow .2s;}
:root:not([data-theme="light"]) .quick-btn{box-shadow:0 1px 0 var(--topedge) inset,0 6px 18px rgba(0,0,0,.3);}
:root:not([data-theme="light"]) .ccard{box-shadow:0 1px 0 var(--topedge) inset,0 8px 22px rgba(0,0,0,.35);}

/* — Пустые состояния мягче — */
.empty .em-ic{opacity:.5;}

/* ════════════════════════════════════════════════════════════════════════
   REDESIGN PHASE 3 v48 — акцент на СТЕКЛЕ + избранное СЕРДЕЧКОМ (красное) +
   кружок-выбора и сердце на одной линии (на фото) + видимый обвод эксклюзива
   на СВЕТЛОЙ теме. CSS-only. Откат: удалить блок + вернуть styles.css?v=47.
   ════════════════════════════════════════════════════════════════════════ */

/* — Избранное: красное сердце (вместо янтарной звезды) — */
.fav-btn.on{background:rgba(255,77,77,.22);color:var(--red);}
.fav-btn.on .lic{fill:var(--red);}
.fav-toggle.on{color:var(--red);border-color:var(--red);}
.fav-toggle.on .lic{fill:var(--red);}
#qFav .qi,#favBtn .lic{color:var(--red);}

/* — Источник вниз-влево над скримом; сердце на фото выровнено по правому краю тела (16px),
     чтобы быть на ОДНОЙ ВЕРТИКАЛИ с кружком выбора (кружок на своём месте в теле) — */
.card-thumb{justify-content:flex-start;}
.src-badge{position:absolute;left:0;bottom:0;margin:10px;z-index:5;}
.fav-btn{position:absolute;top:12px;right:16px;margin:0;z-index:6;}

/* — СТЕКЛО: полупрозрачные поверхности + блюр фона (только тёмная, светлая плоская) — */
:root:not([data-theme="light"]) .chip,
:root:not([data-theme="light"]) .seg,
:root:not([data-theme="light"]) .stat,
:root:not([data-theme="light"]) .quick-btn,
:root:not([data-theme="light"]) .ccard,
:root:not([data-theme="light"]) .card{
  background:rgba(255,255,255,.045);
  backdrop-filter:blur(12px) saturate(1.25);
  border-color:rgba(255,255,255,.09);
}
:root:not([data-theme="light"]) .seg button.on,
:root:not([data-theme="light"]) .chip.accent,
:root:not([data-theme="light"]) .chip.green{backdrop-filter:none;}
:root:not([data-theme="light"]) .sheet-body{
  background:rgba(20,23,30,.8);backdrop-filter:blur(26px) saturate(1.3);
  border-top-color:rgba(255,255,255,.1);
}
:root:not([data-theme="light"]) .sel-bar{background:rgba(20,24,30,.66);backdrop-filter:blur(18px) saturate(1.4);}
:root:not([data-theme="light"]) #topbar{backdrop-filter:blur(18px) saturate(1.4);}
/* лёгкое стекло на шторке и в светлой теме (поверх контента) */
:root[data-theme="light"] .sheet-body{background:rgba(255,255,255,.82);backdrop-filter:blur(22px) saturate(1.2);}

/* — Эксклюзив: видимый обвод на СВЕТЛОЙ теме (убираем невидимый белый сегмент) — */
:root[data-theme="light"] .card:has(.excl-line){background:linear-gradient(180deg,rgba(124,92,252,.05),#fff);}
:root[data-theme="light"] .card:has(.excl-line)::before{
  padding:2px;
  background:linear-gradient(135deg,#7c5cfc,#10c39c 50%,#7c5cfc);
  background-size:300% 300%;
}

/* ── Правки пакет 16.06 ── */
/* Кнопки в карточке — не вылезать из flex, текст не переносить */
.card-body .btn{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* в ряду карточки кнопки тесные (3 шт на узком экране) — поджимаем паддинг/зазор иконки */
.card-body .btn.sm{padding:10px 11px;gap:6px;}
/* Кнопки в sel-bar — не переносить */
.sel-bar .btn{white-space:nowrap;}
/* Поля в шторке — бОльший отступ */
.sheet-body .field{margin-bottom:20px;}
/* Glow на btn-green в detail — убрать лишнее расстояние (mб вниз, не тень) */
#bSend{margin-bottom:4px;}
/* cmt-form: кнопка отправки узкая (иконка) */
.cmt-form .btn{padding:13px 16px;}
/* ФДГ / любой card: первый ed-label без лишнего верхнего отступа */
.card > .ed-label:first-child{margin-top:0;}
/* Чипы комнат: sm-паддинг чтобы влезли в 1 строку */
#fRooms .chsel{padding:8px 11px;font-size:13.5px;}
/* Минут чипсы: такие же */
#fGeoMin .chsel{padding:8px 12px;font-size:13px;}
/* Кнопки фильтров низа — правки layout */
.filter-apply-row{display:flex;gap:8px;margin-top:20px;align-items:center;}
.filter-apply-row .btn-reset-icon{flex:0 0 auto;padding:10px 14px;}
