/* Bigon desktop — shared shell: header, cabinet sidebar, controls, auth.
   Built from Figma SG7jHFmMbXAHVFpctabyHy. Uses tokens.css. */

/* ---------- generic controls ---------- */
.btn { display:inline-flex; align-items:center; justify-content:center; gap:8px;
  border:none; border-radius:var(--radius-sm); font-size:var(--fz-15); font-weight:var(--fw-med);
  padding:12px 22px; line-height:1; transition:.15s; }
.btn--green { background:var(--ok); color:#fff; }
.btn--green:hover { filter:brightness(1.05); }
.btn--green:disabled { background:#A9D7BC; cursor:default; }
.btn--grey { background:#EDEFF2; color:var(--tx); }
.btn--grey:hover { background:#E3E6EA; }
.btn--blue { background:var(--bg-blue); color:#fff; }
.btn--cta { background:var(--grad-cta); color:#fff; border-radius:var(--radius-pill); font-weight:var(--fw-semi); }
.btn--catalog { background:var(--grad-catalog); color:#fff; border-radius:var(--radius-sm); font-weight:var(--fw-semi); padding:12px 18px; }
.btn--block { width:100%; }
.btn--soft { background:#EDEFF2; color:var(--tx-head); border-radius:var(--radius-sm); font-weight:var(--fw-semi); padding:12px 18px; }
.btn--soft:hover { background:#E3E6EA; }
/* lightweight on-site modal (replaces native confirm/alert flows) */
.bg-modal { position:fixed; inset:0; background:rgba(20,28,46,.45); display:flex; align-items:center; justify-content:center; z-index:10000; padding:20px; }
.bg-modal__box { background:#fff; border-radius:16px; padding:26px; max-width:420px; width:100%; box-shadow:0 20px 60px rgba(20,28,46,.25); }
.bg-modal__title { font-size:var(--fz-18,18px); font-weight:var(--fw-bold); margin-bottom:18px; text-align:center; }
.bg-modal__actions { display:flex; gap:10px; flex-wrap:wrap; }
.bg-modal__actions .btn { flex:1; min-width:150px; text-align:center; }

.field { width:100%; background:var(--bg); border:1px solid transparent; border-radius:var(--radius-sm);
  padding:13px 16px; font-size:var(--fz-14); color:var(--tx); font-family:var(--font); }
.field::placeholder { color:#A6AEB6; }
.field:focus { outline:none; border-color:var(--bg-blue); background:#fff; }

.switch { position:relative; width:38px; height:22px; flex:0 0 auto; cursor:pointer; }
/* The input must cover the whole switch (was 0×0, so the visible slider wasn't
   clickable — the toggle looked "on" and could never be turned off). */
.switch input { position:absolute; inset:0; width:100%; height:100%; margin:0; opacity:0; cursor:pointer; z-index:2; }
.switch i { position:absolute; inset:0; background:#CDD3DA; border-radius:999px; transition:.15s; pointer-events:none; }
.switch i::after { content:""; position:absolute; top:2px; left:2px; width:18px; height:18px; background:#fff; border-radius:50%; transition:.15s; }
.switch input:checked + i { background:var(--bg-blue); }
.switch input:checked + i::after { transform:translateX(16px); }

.card { background:var(--surface); border-radius:var(--radius); box-shadow:var(--shadow-card); }

/* ---------- top header ---------- */
.hdr-top { max-width:var(--container); margin:0 auto; padding:10px 20px 0; display:flex; justify-content:flex-end; gap:26px; }
.hdr-top a { color:var(--tx-head); font-size:var(--fz-14); font-weight:var(--fw-med); }
.hdr { max-width:var(--container); margin:0 auto; padding:8px 20px 14px; display:flex; align-items:center; gap:16px; }
/* лого-заглушка в шапке (задача #25) — слева от «Каталог», ведёт на главную */
.hdr__logo { display:inline-flex; align-items:center; gap:9px; text-decoration:none; flex:0 0 auto; }
.hdr__logo-mark { width:36px; height:36px; border-radius:10px; background:linear-gradient(135deg, var(--bg-purple) 0%, var(--ok) 100%); color:#fff; font-weight:800; font-size:21px; line-height:1; display:inline-flex; align-items:center; justify-content:center; } /* #55 — оба бренд-цвета (фиолет+зелёный) в лого */
.hdr__logo-word { font-weight:800; font-size:21px; letter-spacing:-.02em; color:var(--tx-head); }
@media (max-width:900px){ .hdr__logo-word { display:none; } }
.hdr__search { flex:1; display:flex; align-items:center; gap:10px; background:var(--bg); border-radius:var(--radius-sm); padding:0 16px; height:48px; }
.hdr__search > svg { width:20px; height:20px; flex:0 0 auto; }
.hdr__city svg { width:16px; height:16px; }
.btn--catalog svg { width:18px; height:18px; }
.hdr__search input { flex:1; border:none; background:transparent; font-size:var(--fz-14); font-family:var(--font); color:var(--tx); }
.hdr__search input:focus { outline:none; }
.hdr__city { color:var(--bg-blue); font-weight:var(--fw-med); display:inline-flex; align-items:center; gap:6px; white-space:nowrap; cursor:pointer; position:relative; }
/* мегаменю каталога (#16) */
.hdr__catalog { position:relative; flex:0 0 auto; }
.hdr__catmenu { position:absolute; top:calc(100% + 8px); left:0; min-width:300px; background:#fff; border:1px solid var(--line-soft); border-radius:14px; box-shadow:0 12px 34px rgba(0,26,52,.14); padding:8px; z-index:60; display:grid; grid-template-columns:1fr 1fr; gap:2px; }
.hdr__catmenu a { padding:9px 12px; border-radius:9px; color:var(--tx); font-size:var(--fz-14); }
.hdr__catmenu a:hover { background:var(--bg); color:var(--tx-head); }
.hdr__catmenu-all { grid-column:1 / -1; color:var(--bg-blue); font-weight:var(--fw-med); }
/* выбор города (#17) */
/* #65 — шире, чтобы «Город · Регион» помещался целиком (было 250px, обрезалось) */
.hdr__citymenu { position:absolute; top:calc(100% + 10px); left:0; width:340px; max-width:92vw; background:#fff; border:1px solid var(--line-soft); border-radius:14px; box-shadow:0 12px 34px rgba(0,26,52,.14); padding:10px; z-index:60; cursor:default; }
.hdr__citymenu > input { width:100%; height:38px; border:1px solid var(--line); border-radius:9px; padding:0 12px; font-size:var(--fz-14); font-family:inherit; margin-bottom:8px; box-sizing:border-box; }
.hdr__citylist { max-height:240px; overflow-y:auto; overflow-x:hidden; display:flex; flex-direction:column; }
/* перенос длинного «Город · Регион» вместо обрезки */
.hdr__citylist button { text-align:left; padding:9px 10px; border:none; background:none; border-radius:8px; font-size:var(--fz-14); line-height:1.3; color:var(--tx); cursor:pointer; font-family:inherit; white-space:normal; overflow-wrap:anywhere; }
.hdr__citylist button:hover { background:var(--bg); }
.hdr__city-empty { color:var(--tx-soft); font-size:var(--fz-13); padding:8px 10px; }
.hdr__icons { display:flex; align-items:center; gap:20px; }
.hdr__ico { display:flex; flex-direction:column; align-items:center; gap:3px; color:var(--tx-head); font-size:var(--fz-11); cursor:pointer; position:relative; }
.hdr__ico svg { width:24px; height:24px; }
.hdr__ico-img { position:relative; display:inline-flex; } /* якорь для бейджа-уголка (#27) */
.hdr__avatar { width:44px; height:44px; border-radius:50%; object-fit:cover; background:#E7EAF0; cursor:pointer; }
/* выпадающее меню под аватаром (#33) */
.hdr__user { position:relative; display:flex; align-items:center; }
.hdr__menu { position:absolute; top:calc(100% + 10px); right:0; min-width:190px; background:#fff; border:1px solid var(--line-soft); border-radius:14px; box-shadow:0 12px 34px rgba(0,26,52,.14); padding:6px; opacity:0; visibility:hidden; transform:translateY(-6px); transition:opacity .15s, transform .15s, visibility .15s; z-index:60; }
.hdr__user:hover .hdr__menu, .hdr__menu:hover { opacity:1; visibility:visible; transform:none; }
.hdr__menu a { display:block; padding:10px 12px; border-radius:9px; color:var(--tx); font-size:var(--fz-14); white-space:nowrap; }
.hdr__menu a:hover { background:var(--bg); color:var(--tx-head); }
.hdr__menu .hdr__menu-sep { height:1px; background:var(--line-soft); margin:5px 6px; }
.hdr-divider { border:none; border-top:1px solid var(--line-soft); margin:0; }

/* ---------- cabinet layout (header + left sidebar + content) ---------- */
.cab { max-width:var(--container); margin:0 auto; padding:24px 20px 60px; display:grid; grid-template-columns:var(--sidebar-w) 1fr; gap:60px; }
.cab__breadcrumb { max-width:var(--container); margin:0 auto; padding:18px 20px 0; color:var(--bg-blue); font-size:var(--fz-14); }
.cab__breadcrumb b { color:var(--tx-head); font-weight:var(--fw-reg); }

.side { }
.side__head { text-align:center; }
.side__avatar { width:96px; height:96px; border-radius:50%; object-fit:cover; background:#E7EAF0; }
.side__name { font-size:var(--fz-20); font-weight:var(--fw-semi); margin-top:10px; }
.side__since { color:var(--tx-muted); font-size:var(--fz-13); margin-top:4px; }
.side__rating { color:var(--tx-muted); font-size:var(--fz-13); margin-top:4px; }
.side__points { display:flex; align-items:center; gap:8px; color:var(--ok); font-size:var(--fz-14); font-weight:var(--fw-med); margin:18px 0 8px; }
.side__menu { display:flex; flex-direction:column; }
.side__item { display:flex; align-items:center; gap:12px; padding:11px 12px; color:var(--tx); font-size:var(--fz-14); border-radius:var(--radius-sm); cursor:pointer; transition:background .15s, color .15s; }
/* #34 — симпатичная заливка при наведении (как у Юнисайта) */
.side__item:hover { color:var(--tx-head); background:rgba(108,92,231,.07); }
/* активный пункт — чёрный жирный, без голубого (#34); мягкая бренд-заливка */
.side__item.is-active { color:var(--tx-head); font-weight:700; background:rgba(108,92,231,.10); }
.side__item svg { width:20px; height:20px; flex:0 0 auto; opacity:.85; }
.side__item-label { flex:1 1 auto; }
/* #34 — сумма спецкошелька прямо в пункте «Кошелёк» */
.side__amt { color:var(--ok); font-size:var(--fz-13); font-weight:var(--fw-med); white-space:nowrap; letter-spacing:-.01em; }
/* #124 — раскрывающийся раздел «Бизнес-услуги» */
.side__group-toggle { width:100%; background:none; border:0; font:inherit; text-align:left; }
.side__chev { flex:0 0 auto; transition:transform .18s; opacity:.6; font-size:12px; }
.side__group.is-open .side__chev { transform:rotate(180deg); }
.side__group-items { display:none; margin:2px 0 2px 10px; padding-left:10px; border-left:1px solid rgba(108,92,231,.14); flex-direction:column; }
.side__group.is-open .side__group-items { display:flex; }
.side__subitem { padding:9px 12px; font-size:var(--fz-13); }
.side__subitem svg { width:18px; height:18px; }
/* смена аватара из сайдбара (#45) */
.side__avatar-wrap { position:relative; display:inline-block; cursor:pointer; }
.side__avatar-cam { position:absolute; right:-2px; bottom:-2px; width:26px; height:26px; border-radius:50%; background:var(--bg-purple); color:#fff; box-shadow:0 1px 5px rgba(0,0,0,.25); display:flex; align-items:center; justify-content:center; font-size:13px; }
/* «Поделиться профилем» — ярче и кликабельнее (#43) */
.side__share { color:var(--bg-blue); font-weight:var(--fw-med); font-size:var(--fz-14); margin-top:22px; cursor:pointer; display:inline-flex; align-items:center; gap:6px; }
.side__share:hover { color:var(--bg-blue-600); }
.side__socials { display:flex; gap:10px; margin-top:8px; }
.side__socials img { width:26px; height:26px; }

.content h1 { font-size:var(--fz-32); font-weight:var(--fw-semi); margin-bottom:18px; }

/* ---------- auth ---------- */
.auth-wrap { min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:40px 20px; }
.auth-card { display:grid; grid-template-columns:340px 380px; border-radius:18px; overflow:hidden; box-shadow:var(--shadow-card); background:#fff; }
.auth-aside { background:linear-gradient(160deg,#EAF2FE 0%,#F3ECFB 100%); padding:34px 32px; }
.auth-aside__brand { font-size:24px; font-weight:var(--fw-bold); color:var(--tx-head); }
.auth-aside__sub { color:var(--tx); font-size:var(--fz-14); line-height:1.5; margin:14px 0 22px; }
.auth-aside__li { display:flex; gap:12px; margin-bottom:16px; }
.auth-aside__li svg { width:18px; height:18px; color:var(--tx-head); flex:0 0 auto; margin-top:2px; }
.auth-aside__li b { display:block; color:var(--tx-head); font-weight:var(--fw-semi); font-size:var(--fz-14); }
.auth-aside__li span { color:var(--tx-muted-2); font-size:var(--fz-13); }
.auth-main { padding:30px 34px; }
.auth-tabs { display:flex; gap:30px; border-bottom:1px solid var(--line-soft); margin-bottom:22px; }
.auth-tab { background:none; border:none; padding:0 0 12px; font-size:var(--fz-15); font-weight:var(--fw-semi); color:var(--tx-soft); border-bottom:2px solid transparent; margin-bottom:-1px; }
.auth-tab.is-active { color:var(--ok); border-bottom-color:var(--ok); }
.auth-hint { text-align:center; color:var(--tx); font-size:var(--fz-14); margin-bottom:18px; }
.auth-form { display:flex; flex-direction:column; gap:14px; }
/* #179 — поле пароля с «глазком» */
.pw-wrap { position:relative; display:block; }
.pw-wrap > .field { width:100%; margin:0; padding-right:46px; }
.pw-eye { position:absolute; right:6px; top:50%; transform:translateY(-50%); width:34px; height:34px; display:flex; align-items:center; justify-content:center; border:none; background:none; padding:0; cursor:pointer; color:#A6AEB6; border-radius:8px; }
.pw-eye:hover { color:var(--tx-head); background:var(--bg); }
.auth-row { display:flex; align-items:center; gap:10px; color:var(--tx); font-size:var(--fz-14); }
.auth-foot { text-align:center; color:var(--tx-muted); font-size:var(--fz-13); margin-top:18px; max-width:760px; line-height:1.5; }
.auth-err { color:var(--danger); font-size:var(--fz-13); text-align:center; min-height:16px; }

/* ---------- page container ---------- */
.page { max-width:var(--container); margin:0 auto; padding:8px 20px 60px; }
.crumb { color:var(--bg-blue); font-size:var(--fz-14); margin:14px 0; }
.crumb b { color:var(--tx-soft); font-weight:var(--fw-reg); }
.page h1 { font-size:var(--fz-32); font-weight:var(--fw-semi); }

/* ---------- catalog ---------- */
/* #46 — сетка подкатегорий как в Юнисайте: 4 колонки, текущая — жирным */
.cat-quick { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:10px 40px; margin:16px 0 34px; }
.cat-quick a { color:var(--tx); font-size:var(--fz-14); }
.cat-quick a:hover { color:var(--bg-blue); }
.cat-quick a.is-current { font-weight:var(--fw-bold); color:var(--tx-head); }
.cat-quick__sk { height:14px; border-radius:7px; } /* скелетон подкатегорий на время загрузки */
/* Каталог: hold-until-ready — пока грузятся данные, держим контент скрытым и показываем
   центральный лоадер; готовая страница (заголовок+подкатегории+товары) появляется РАЗОМ (fade-in),
   без сборки по кускам и прыжков. JS убирает лоадер и снимает .cat-loading при готовности. */
.cat-loading { opacity:0; pointer-events:none; }
.cat-ready { opacity:1; transition:opacity .22s ease; }
.cat-loader { display:flex; justify-content:center; align-items:center; padding:150px 0; }
.cat-loader__spin { width:42px; height:42px; border-radius:50%; border:3px solid var(--line-soft); border-top-color:var(--bg-purple); animation:cat-spin .8s linear infinite; }
@keyframes cat-spin { to { transform:rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .cat-loader__spin { animation-duration:1.8s; } .cat-ready { transition:none; } }
.cat-sect-title { font-size:var(--fz-20); font-weight:var(--fw-semi); margin:0 0 18px; }
.cat-row { display:grid; grid-template-columns:repeat(6,1fr); gap:16px; margin-bottom:40px; }
.cat-body { display:grid; grid-template-columns:230px 1fr; gap:34px; align-items:start; }
.cat-filter h4 { font-size:var(--fz-14); font-weight:var(--fw-semi); margin:0 0 12px; }
.cat-filter__group { margin-bottom:20px; }
.cat-check { display:flex; align-items:center; gap:8px; font-size:var(--fz-14); margin-bottom:9px; color:var(--tx); }
.cat-price { display:flex; gap:8px; }
.cat-price input { width:100%; text-align:center; }
.cat-select { width:100%; background:var(--bg); border:1px solid transparent; border-radius:var(--radius-sm); padding:11px 14px; font-size:var(--fz-14); font-family:var(--font); color:var(--tx); }
.cat-toolbar { display:flex; justify-content:flex-end; align-items:center; gap:14px; margin-bottom:16px; color:var(--tx-muted); font-size:var(--fz-14); }
.cat-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:20px 18px; }
/* поиск: подсказка об исправлении раскладки (#47) */
.cat-hint { grid-column:1 / -1; color:var(--tx-muted); font-size:var(--fz-14); background:var(--bg); border-radius:10px; padding:10px 14px; margin-bottom:4px; }
/* каталог: сортировка в тулбаре сверху + кол-во фото на карточке (#26) */
.cat-toolbar { display:flex; justify-content:space-between; align-items:center; gap:16px; margin-bottom:16px; }
.cat-sort { color:var(--tx-muted); font-size:var(--fz-14); display:inline-flex; align-items:center; gap:8px; white-space:nowrap; }
.cat-sort .cat-select { width:auto; }
.pcard__img { position:relative; }
.pcard__count { position:absolute; left:8px; bottom:8px; background:rgba(0,0,0,.55); color:#fff; font-size:11px; padding:2px 7px; border-radius:10px; }
/* #124 — продвижение (VIP) */
.pcard__vip { position:absolute; left:8px; top:8px; background:linear-gradient(135deg,#F5B301,#F58A00); color:#fff; font-size:11px; font-weight:800; letter-spacing:.5px; padding:2px 8px; border-radius:8px; box-shadow:0 1px 4px rgba(0,0,0,.2); z-index:1; }
/* #188 — выделение продвинутых карточек (outline — без сдвига сетки): VIP — мягкая
   золотая рамка, Турбо — яркая цветная рамка + лёгкая заливка («выделено цветом»). */
.pcard--vip { outline:1.5px solid #FCE0A0; outline-offset:2px; border-radius:12px; }
.pcard--turbo { outline:2px solid #F58A00; outline-offset:2px; border-radius:12px; background:#FFF7EC; }
/* #188 — модалка выбора типа продвижения (Турбо/VIP/Поднятие) */
.promo-types { display:flex; flex-direction:column; gap:12px; }
.promo-type { border:1px solid #E7EAF0; border-radius:14px; padding:12px 14px; }
.promo-type--turbo { border-color:#F58A00; background:#FFF7EC; }
.promo-type--vip { border-color:#FCE0A0; }
.promo-type__h { font-weight:700; font-size:15px; color:var(--tx-head); margin-bottom:2px; }
.promo-type__desc { color:#6B7480; font-size:12.5px; line-height:1.35; margin-bottom:10px; }
.promo-type__opts { display:flex; flex-wrap:wrap; gap:8px; }
.promo-opt { display:inline-flex; align-items:center; gap:8px; border:1px solid #E7EAF0; border-radius:10px; padding:8px 12px; cursor:pointer; font-size:14px; }
.promo-opt:hover { border-color:var(--bg-blue); }
.promo-opt:has(input:checked) { border-color:var(--bg-blue); background:#F2F6FF; }
.promo-opt input { margin:0; }
.promo-opt__p { color:var(--tx-head); font-weight:700; }
/* #129 — сердечко избранного поверх фото карточки (как в Юнисайте) */
.pcard__fav { position:absolute; right:8px; top:8px; z-index:2; width:32px; height:32px; display:flex; align-items:center; justify-content:center; padding:0; margin:0; border:none; border-radius:50%; background:rgba(255,255,255,.92); color:#8a94a3; font-size:17px; line-height:1; cursor:pointer; box-shadow:0 1px 4px rgba(0,0,0,.18); transition:transform .12s ease, color .12s ease, background .12s ease; font-family:inherit; }
.pcard__fav:hover { transform:scale(1.08); color:var(--danger); background:#fff; }
.pcard__fav.is-fav { color:var(--danger); }
.pcard__fav.is-busy { opacity:.5; pointer-events:none; }
.vip-badge { display:inline-block; background:linear-gradient(135deg,#F5B301,#F58A00); color:#fff; font-size:11px; font-weight:800; letter-spacing:.5px; padding:2px 8px; border-radius:8px; vertical-align:middle; }
/* #155 — бейдж лица публикации объявления в «Мои объявления» */
.ads-tag { display:inline-block; font-size:11px; font-weight:700; padding:2px 7px; border-radius:7px; vertical-align:middle; margin-left:4px; }
.ads-tag--company { background:#EAF1FF; color:#2F6BFF; }
.ads-tag--private { background:#EEF1F5; color:#6B7480; }
/* избранное — компактная кнопка в правом верхнем углу карточки (#24) */
.pdp-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }
.pdp-fav { flex:0 0 auto; border:1px solid var(--line); background:#fff; border-radius:var(--radius-pill); padding:9px 16px; font-size:var(--fz-14); color:var(--tx); cursor:pointer; white-space:nowrap; font-family:inherit; }
.pdp-fav:hover { border-color:var(--danger); color:var(--danger); }
.pdp-fav[data-on="1"] { color:var(--danger); border-color:var(--danger); }
/* поделиться объявлением (#56) + блок «из той же категории» (#23) */
.pdp-share { color:var(--bg-blue); font-weight:var(--fw-med); cursor:pointer; }
.pdp-same { margin-top:34px; }
.pdp-same > h2 { margin:0 0 16px; }
.share-row { display:flex; gap:8px; margin:14px 0; }
.share-row .field { flex:1; }
/* форма подачи объявления (#37) */
.ann-hint { color:var(--tx-soft); font-size:var(--fz-12); margin-top:4px; }
.ann-cur { color:var(--tx-muted); margin-left:4px; }
.seg { display:inline-flex; background:var(--bg); border-radius:var(--radius-sm); padding:3px; gap:2px; }
.seg__btn { border:none; background:none; padding:8px 16px; border-radius:8px; font-size:var(--fz-14); color:var(--tx); cursor:pointer; font-family:inherit; }
.seg__btn.is-active { background:#fff; color:var(--tx-head); font-weight:var(--fw-med); box-shadow:0 1px 3px rgba(0,0,0,.08); }
.ann-city { position:relative; }
.ann-city__list { position:absolute; top:calc(100% + 4px); left:0; right:0; background:#fff; border:1px solid var(--line-soft); border-radius:10px; box-shadow:0 10px 28px rgba(0,26,52,.12); padding:6px; z-index:30; max-height:220px; overflow:auto; }
.ann-city__list button { display:block; width:100%; text-align:left; padding:8px 10px; border:none; background:none; border-radius:7px; font-size:var(--fz-14); cursor:pointer; font-family:inherit; color:var(--tx); }
.ann-city__list button:hover { background:var(--bg); }
.ann-alert { background:#FFF0F0; color:var(--danger); border:1px solid #FBD5D5; border-radius:10px; padding:10px 14px; font-size:var(--fz-14); margin-bottom:10px; }
.ann-attrs { display:flex; flex-direction:column; gap:12px; }
.ann-attr { display:flex; flex-direction:column; gap:6px; }
.ann-attr > span { font-size:var(--fz-13); color:var(--tx-muted); }
.ann-attr .field { max-width:360px; }
/* кнопка удаления (#12) */
.btn--danger { background:var(--danger); color:#fff; }
/* автозаполнение по ИНН (#12) */
.inn-row { display:flex; gap:8px; align-items:center; }
.inn-row .field { flex:1; }
/* форма «оставить отзыв» (#48) */
.pdp-review-form { margin-top:20px; padding-top:18px; border-top:1px solid var(--line-soft); }
.pdp-review-form h3 { font-size:16px; margin:0 0 12px; }
.rev-row { display:flex; gap:18px; margin-bottom:10px; flex-wrap:wrap; }
.rev-lbl { display:inline-flex; flex-direction:column; gap:4px; font-size:var(--fz-13); color:var(--tx-muted); }
.rev-lbl .field { width:auto; min-width:130px; }
.pdp-review-form textarea.field { width:100%; margin-bottom:10px; }
.rev-msg { margin-top:8px; font-size:var(--fz-14); }
.rev-msg--ok { color:var(--ok); }
.rev-msg--err { color:var(--danger); }
/* всплывающий чат в объявлении (#21c) */
.pdp-chat__box { width:420px; max-width:92vw; padding:0; overflow:hidden; }
.pdp-chat__head { display:flex; align-items:center; justify-content:space-between; padding:14px 18px; border-bottom:1px solid var(--line-soft); font-weight:600; }
.pdp-chat__close { border:0; background:none; font-size:24px; cursor:pointer; color:var(--tx-muted); line-height:1; }
.pdp-chat__body { height:320px; overflow-y:auto; padding:16px; display:flex; flex-direction:column; gap:8px; background:#FAFBFD; }
.pc-msg { max-width:78%; padding:8px 12px; border-radius:12px; font-size:14px; line-height:1.4; word-wrap:break-word; }
.pc-msg--mine { align-self:flex-end; background:var(--bg-blue); color:#fff; }
.pc-msg--them { align-self:flex-start; background:#fff; border:1px solid var(--line-soft); }
.pc-empty { margin:auto; color:var(--tx-soft); }
.pdp-chat__form { display:flex; gap:8px; padding:12px; border-top:1px solid var(--line-soft); }
.pdp-chat__form .field { flex:1; }
/* рейтинг продавца в карточке (#22) */
.pdp-seller__rating { display:block; color:var(--warn); font-size:var(--fz-13); font-weight:600; margin-top:2px; }
/* страница продавца (#22/#48) */
/* #134 — витринная карточка продавца */
.scard { display:flex; gap:24px; align-items:flex-start; background:#fff; border:1px solid var(--line-soft); border-radius:18px; padding:24px 26px; margin:10px 0 22px; box-shadow:0 6px 24px rgba(20,30,60,.05); }
.scard__ava { width:104px; height:104px; border-radius:50%; flex:0 0 auto; overflow:hidden; display:flex; align-items:center; justify-content:center; background:linear-gradient(135deg,#EAF2FE,#F3ECFB); color:var(--bg-purple); font-size:42px; font-weight:700; }
.scard__ava img { width:100%; height:100%; object-fit:cover; }
.scard__main { flex:1 1 auto; min-width:0; }
.scard__namerow { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.scard__name { font-size:26px; font-weight:var(--fw-bold); line-height:1.15; }
.scard__online { display:inline-flex; align-items:center; gap:6px; font-size:13px; color:var(--ok); font-weight:600; }
.scard__online i { width:8px; height:8px; border-radius:50%; background:var(--ok); display:inline-block; box-shadow:0 0 0 3px rgba(83,179,116,.18); }
.scard__sub { display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-top:8px; }
.scard__sphere { display:inline-block; padding:3px 12px; border-radius:var(--radius-pill); background:rgba(0,102,245,.10); color:var(--bg-blue); font-size:13px; font-weight:600; }
.scard__rating { display:inline-flex; align-items:center; gap:8px; font-weight:600; color:var(--tx-head); }
.scard__stars { letter-spacing:1px; }
.scard__star { color:#D7DCE6; font-size:16px; }
.scard__star.is-on { color:#FAB818; }
.scard__norate { color:var(--tx-soft); font-weight:400; font-size:var(--fz-13); }
.scard__meta { color:var(--tx-muted); margin-top:10px; font-size:var(--fz-14); }
.scard__legal { color:var(--tx-soft); font-size:13px; margin-top:4px; }
.scard__stats { display:flex; gap:10px; flex-wrap:wrap; margin-top:14px; }
.scard__chip { background:var(--bg); border-radius:10px; padding:8px 14px; font-size:var(--fz-13); color:var(--tx-muted); }
.scard__chip b { color:var(--tx-head); font-weight:700; margin-right:2px; }
.scard__actions { margin-top:16px; }
.scard__contacts { flex:0 0 auto; width:250px; background:var(--bg); border-radius:14px; padding:16px 18px; }
.scard__ctitle { font-weight:var(--fw-semi); margin-bottom:10px; }
.scard__crow { font-size:var(--fz-14); color:var(--tx); margin-bottom:8px; display:flex; gap:8px; align-items:flex-start; }
.scard__crow a { color:var(--bg-blue); }
/* вкладки карточки продавца */
.seller-tabs { display:flex; gap:26px; border-bottom:1px solid var(--line); margin:8px 0 22px; }
.seller-tab { background:none; border:none; padding:0 0 12px; font-size:var(--fz-16); font-weight:var(--fw-med); color:var(--tx-muted); border-bottom:2px solid transparent; margin-bottom:-1px; cursor:pointer; }
.seller-tab.is-active { color:var(--tx-head); border-bottom-color:var(--bg-purple); }
.seller-tab__c { color:var(--tx-soft); font-weight:400; }
.scard-empty { color:var(--tx-soft); padding:36px 0; text-align:center; }
.scard-h2 { font-size:var(--fz-20); font-weight:var(--fw-semi); margin:6px 0 14px; }
.scard-stores { margin-bottom:22px; }
@media (max-width:720px){ .scard { flex-direction:column; gap:16px; } .scard__contacts { width:100%; } }
.seller-stores { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:16px; }
.seller-store { border:1px solid var(--line-soft); border-radius:var(--radius); padding:16px 18px; background:#fff; }
.seller-store__row { font-size:var(--fz-14); color:var(--tx); margin-bottom:8px; display:flex; gap:8px; align-items:flex-start; }
.seller-store__row a { color:var(--bg-blue); }
.seller-store__photos { display:flex; gap:8px; flex-wrap:wrap; margin-top:6px; }
.seller-store__photo { width:72px; height:72px; object-fit:cover; border-radius:8px; border:1px solid var(--line-soft); }
.srev { padding:14px 0; border-bottom:1px solid var(--line-soft); }
.srev__top { display:flex; justify-content:space-between; }
.srev__top b { color:var(--warn); }
.srev__top span { color:var(--tx-soft); font-size:var(--fz-13); }
.srev p { margin:6px 0 0; }
.srev__reply { margin-top:8px; padding:8px 12px; background:var(--bg); border-radius:8px; font-size:var(--fz-13); }
/* состояние «продано» в карточке (#54) */
.pdp-sold { display:inline-block; background:#FFF0F0; color:var(--danger); border:1px solid #FBD5D5; border-radius:8px; padding:6px 12px; font-weight:600; margin:0 0 10px; }
/* касса (#59) */
.cashier { max-width:560px; margin-top:20px; }
.cashier__row { display:flex; gap:10px; align-items:center; margin-top:8px; }
.cashier__buyer { margin:18px 0; padding:14px 18px; background:var(--bg); border-radius:12px; display:flex; flex-direction:column; gap:2px; }
.cashier__buyer b { color:var(--tx-head); font-size:18px; }
.cashier__buyer span { color:var(--tx-muted); }
.cashier__actions { display:flex; flex-direction:column; gap:18px; }
.cashier__act h3 { font-size:16px; margin:0 0 4px; }
.cashier__result { margin-top:16px; font-weight:600; }
.cashier__result--ok { color:var(--ok); }
.cashier__result--err { color:var(--danger); }
.wallet-qr { margin:18px 0; padding:18px; border:1px solid var(--line-soft); border-radius:14px; display:inline-flex; flex-direction:column; align-items:center; gap:6px; text-align:center; }
.wallet-qr__label { font-weight:600; color:var(--tx-head); }
.wallet-qr__img { width:180px; height:180px; }
.wallet-qr__code { font-size:22px; font-weight:700; letter-spacing:4px; color:var(--tx-head); }
.wallet-qr__hint { color:var(--tx-muted); font-size:var(--fz-13); max-width:220px; }
/* магазины по сферам (#32) */
.shops-bar { margin:12px 0 18px; }
.shop-card { display:block; border:1px solid var(--line-soft); border-radius:14px; padding:18px; color:inherit; transition:box-shadow .15s; }
.shop-card:hover { box-shadow:0 6px 20px rgba(0,26,52,.08); }
.shop-card__name { font-weight:700; color:var(--tx-head); font-size:16px; }
.shop-card__meta { color:var(--tx-muted); font-size:var(--fz-14); margin-top:4px; }
.shop-card__kind { color:var(--bg-blue); font-size:var(--fz-13); margin-top:10px; }
/* тариф продавца (#52) */
.t-current { background:#EAF7EF; border:1px solid #BFE6CD; border-radius:12px; padding:14px 18px; display:flex; flex-direction:column; gap:2px; }
.t-current b { color:var(--ok); }
.t-current span { color:var(--tx-muted); font-size:var(--fz-14); }
.t-current--off { background:#FFF8E6; border-color:#F4E2B0; }
.t-current--off b { color:var(--warn); }
.t-free { color:var(--ok); font-weight:var(--fw-med); margin-top:8px; }
.t-bundles { display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:16px; margin-top:16px; }
.t-card { border:1px solid var(--line-soft); border-radius:14px; padding:18px; }
.t-card__title { font-weight:700; font-size:18px; color:var(--tx-head); }
.t-card__days { color:var(--tx-muted); font-size:var(--fz-14); margin:4px 0 12px; }
.t-card__price { font-weight:800; font-size:24px; color:var(--tx-head); margin-bottom:14px; }
/* онбординг-шаги (#51) */
.onb-steps { background:#FFF8E6; border:1px solid #F4E2B0; border-radius:12px; padding:12px 16px; margin:0 0 16px; color:var(--tx-head); font-size:var(--fz-14); display:flex; flex-direction:column; gap:4px; }
.onb-steps span { color:var(--tx-muted); }
/* мои объявления: цена без переноса + кликабельное название (#49) */
.ads-price { white-space:nowrap; }
/* причина отклонения объявления (#53) */
.ads-reject-reason { color:var(--danger); font-size:var(--fz-12); margin-top:4px; max-width:240px; line-height:1.35; }
/* плавность отрисовки: резерв высоты шапки (без скачка) + мягкое появление (#41) */
[data-shell-header] { display:block; min-height:120px; position:relative; z-index:1000; }
/* #176 — выпадающие меню шапки (каталог/город/подсказки) должны быть НАД картой:
   Leaflet-контролы имеют z-index до 1000, поэтому карту опускаем в отдельный
   контекст наложения z-index:0, а шапку поднимаем выше (правило выше). */
.leaflet-container { position:relative; z-index:0; }
@keyframes pageIn { from { opacity:0; transform:translateY(4px); } to { opacity:1; transform:none; } }
.page, .cab { animation:pageIn .24s ease both; }
.ads-title-link { color:var(--tx-head); font-weight:var(--fw-med); }
.ads-title-link:hover { color:var(--bg-blue); }
/* подкатегории: ссылка «назад» (#46) */
.cat-quick__back { grid-column:1 / -1; font-weight:var(--fw-med); color:var(--bg-purple-deep); margin-bottom:2px; }
/* корзина: имя продавца, ввод кол-ва, доступные баллы (#39) */
.cart-seller-head { font-weight:var(--fw-semi); color:var(--tx-head); margin-bottom:10px; }
.qty__inp { width:48px; text-align:center; border:1px solid var(--line); border-radius:6px; height:30px; font-family:inherit; font-size:var(--fz-14); margin:0 2px; }
.summary__pts { color:var(--tx-soft); font-weight:400; font-size:var(--fz-12); }
.summary__total .old { color:var(--tx-soft); text-decoration:line-through; font-weight:400; margin-right:8px; font-size:var(--fz-14); }
/* чекаут: поля не на всю ширину (#40) */
.co-field .field { max-width:460px; }
/* слайдер на главной (#30) */
.hero-slider { position:relative; }
.hero-slide { display:none; }
/* #128 — высота слайда фиксирована (см. .hero min-height), контент центрируем — слайдер НЕ прыгает от объёма текста в баннере */
.hero-slide.is-active { display:flex; flex-direction:column; justify-content:center; }
.hero-slider__nav { position:absolute; top:50%; transform:translateY(-50%); width:40px; height:40px; border-radius:50%; border:none; background:#fff; box-shadow:0 2px 12px rgba(0,0,0,.12); color:var(--tx-head); font-size:24px; line-height:1; cursor:pointer; z-index:2; }
.hero-slider__nav--prev { left:-6px; } .hero-slider__nav--next { right:-6px; }
.hero-slider__dots { display:flex; gap:8px; justify-content:center; margin-top:14px; }
.hero-slider__dots button { width:8px; height:8px; border-radius:50%; border:none; background:var(--line); cursor:pointer; padding:0; transition:width .2s, background .2s; }
.hero-slider__dots button.is-active { background:var(--bg-purple); width:22px; border-radius:4px; }
.cat-empty { grid-column:1/-1; text-align:center; color:var(--tx-soft); padding:50px 0; }

/* карточка каталога: одинаковая высота плитки (#26, коммент Антона про фиксацию) */
.pcard { display:flex; flex-direction:column; color:var(--tx); }
.pcard__img { position:relative; aspect-ratio:1/1; border-radius:var(--radius-sm); overflow:hidden; background:var(--bg); }
.pcard__img img { width:100%; height:100%; object-fit:cover; }
.pcard__cnt { position:absolute; left:8px; bottom:8px; background:rgba(0,0,0,.55); color:#fff; font-size:11px; border-radius:6px; padding:2px 7px; }
/* цена: длинные суммы (напр. 100 000 000 ₽) переносятся, а не ломают карточку */
.pcard__price { font-size:var(--fz-17); font-weight:var(--fw-semi); margin:11px 0 4px; display:flex; align-items:center; flex-wrap:wrap; gap:6px 8px; overflow-wrap:anywhere; }
.pcard__cb { background:#EAFBF1; color:var(--ok); font-size:11px; font-weight:var(--fw-med); border-radius:6px; padding:2px 7px; }
/* заголовок: ровно 2 строки — короткие резервируют высоту, длинные обрезаются многоточием */
.pcard__title { font-size:var(--fz-14); line-height:1.35; display:-webkit-box; -webkit-line-clamp:2; line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:calc(var(--fz-14) * 1.35 * 2); }
.pcard__loc { color:var(--tx-muted); font-size:var(--fz-13); margin-top:5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pcard__date { color:var(--tx-soft); font-size:var(--fz-13); margin-top:2px; }

/* ---------- скелетоны загрузки (perf/UX) ----------
   Показываются В HTML сразу (первый кадр), пока JS тянет данные с API. Убирают
   «вспышку» пустых блоков — страница выглядит цельной, а не собирается по кускам.
   Геометрия 1:1 повторяет .pcard / .home-cat, поэтому при замене на данные нет
   скачка layout. JS затирает их через innerHTML= при отрисовке. */
.skel { position:relative; overflow:hidden; background:#EAEDF1; border-radius:var(--radius-sm); }
.skel::after { content:""; position:absolute; inset:0; transform:translateX(-100%);
  background:linear-gradient(90deg, transparent 0, rgba(255,255,255,.65) 50%, transparent 100%);
  animation:skel-shimmer 1.25s ease-in-out infinite; }
@keyframes skel-shimmer { 100% { transform:translateX(100%); } }
@media (prefers-reduced-motion: reduce) { .skel::after { animation:none; } .pdp-hero img, .pdp-thumb img { transition:none; } }
/* карточка товара */
.skel-card { display:flex; flex-direction:column; }
.skel-card__img { aspect-ratio:1/1; border-radius:var(--radius-sm); }
.skel-line { height:12px; border-radius:6px; }
.skel-line--price { width:46%; height:17px; margin:11px 0 8px; }
.skel-line--title { width:92%; margin-bottom:7px; }
.skel-line--sub { width:58%; }
/* плитка категории */
.skel-cat { background:#fff; border:1px solid var(--line-soft); border-radius:var(--radius);
  padding:20px 16px; display:flex; flex-direction:column; align-items:center; }
.skel-cat__ic { width:60px; height:60px; border-radius:14px; margin-bottom:12px; }
.skel-cat__name { width:70%; height:12px; border-radius:6px; }

/* каталог: переключатель вида «Списком / На карте» (#26) */
.cat-toolbar__right { display:flex; align-items:center; gap:14px; }
.cat-view { display:inline-flex; border:1px solid var(--line); border-radius:var(--radius-sm); overflow:hidden; }
.cat-view__btn { border:0; background:#fff; color:var(--tx-muted); width:38px; height:38px; font-size:16px; line-height:1; cursor:pointer; font-family:inherit; }
.cat-view__btn + .cat-view__btn { border-left:1px solid var(--line); }
.cat-view__btn.is-active { background:var(--bg-blue); color:#fff; }
/* каталог: карта OSM с объявлениями (#26) */
.cat-map { height:640px; border:1px solid var(--line); border-radius:var(--radius-sm); overflow:hidden; position:relative; }
.cat-map__empty { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; text-align:center; padding:0 20px; color:var(--tx-soft); background:var(--bg); z-index:500; }
.map-card { display:block; width:180px; color:var(--tx); }
.map-card img { width:100%; height:110px; object-fit:cover; border-radius:8px; }
.map-card b { display:block; font-size:15px; margin:7px 0 2px; }
.map-card span { display:block; font-size:13px; line-height:1.3; }
.map-card i { display:block; font-style:normal; color:var(--tx-muted); font-size:12px; margin-top:3px; }

/* ---------- product (PDP) ---------- */
.pdp-head { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; }
.pdp-head h1 { font-size:var(--fz-24); font-weight:var(--fw-bold); }
.pdp-meta { color:var(--tx-soft); font-size:var(--fz-13); margin:6px 0 18px; display:flex; gap:18px; }
.pdp { display:grid; grid-template-columns:1fr 372px; gap:34px; align-items:start; }
.pdp-hero { position:relative; aspect-ratio:16/11; border-radius:var(--radius); overflow:hidden; background:var(--bg); }
/* #135 — фото карточки показываем целиком (как в лайтбоксе), без обрезки. Нейтральный фон-подложка (var(--bg)) заполняет поля у нестандартных пропорций. */
.pdp-hero img { width:100%; height:100%; object-fit:contain; }
/* PDP hero: пока грузится фото — на контейнере .skel (нейтральный шиммер как на
   home/catalog), фото проявляется плавно по load. Картинка ВИДИМА по умолчанию
   (opacity:1) и прячется ТОЛЬКО при .skel — её видимость не зависит от выполнения JS. */
.pdp-hero.skel { background:#EAEDF1; }
.pdp-hero img { transition:opacity .25s ease; }
.pdp-hero.skel img { opacity:0; }
.pdp-hero img.is-loaded { opacity:1; }
/* галерея карточки: вотермарк, стрелки, зум-лайтбокс (#20) */
.pdp-hero__wm { position:absolute; right:14px; bottom:12px; color:rgba(255,255,255,.78); font-weight:700; font-size:15px; letter-spacing:.04em; text-shadow:0 1px 4px rgba(0,0,0,.45); pointer-events:none; user-select:none; }
.pdp-hero__nav { position:absolute; top:50%; transform:translateY(-50%); width:42px; height:42px; border-radius:50%; border:none; background:rgba(255,255,255,.92); color:var(--tx-head); font-size:24px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center; box-shadow:0 2px 12px rgba(0,0,0,.18); opacity:0; transition:opacity .15s; }
.pdp-hero:hover .pdp-hero__nav { opacity:1; }
.pdp-hero__nav--prev { left:12px; } .pdp-hero__nav--next { right:12px; }
.pdp-lightbox { position:fixed; inset:0; background:rgba(8,12,20,.93); z-index:9999; display:flex; align-items:center; justify-content:center; }
.pdp-lightbox__stage { position:relative; display:flex; }
.pdp-lightbox__stage img { max-width:84vw; max-height:88vh; object-fit:contain; border-radius:8px; }
.pdp-lightbox__close { position:absolute; top:20px; right:24px; width:44px; height:44px; border-radius:50%; border:none; background:rgba(255,255,255,.16); color:#fff; font-size:26px; cursor:pointer; }
/* #135 — стрелки лайтбокса зафиксированы у краёв экрана (Авито-стиль), НЕ плавают от размера фото */
.pdp-lightbox__nav { position:absolute; top:50%; transform:translateY(-50%); z-index:2; width:54px; height:54px; border-radius:50%; border:none; background:rgba(255,255,255,.16); color:#fff; font-size:30px; line-height:1; cursor:pointer; }
.pdp-lightbox__nav--prev { left:24px; } .pdp-lightbox__nav--next { right:24px; }
.pdp-thumbs { display:flex; gap:10px; margin-top:12px; flex-wrap:wrap; }
.pdp-thumb { width:64px; height:64px; border-radius:var(--radius-sm); overflow:hidden; background:var(--bg); cursor:pointer; border:2px solid transparent; }
.pdp-thumb.is-active { border-color:var(--bg-blue); }
.pdp-thumb img { width:100%; height:100%; object-fit:cover; transition:opacity .2s ease; }
.pdp-thumb.skel img { opacity:0; }
.pdp-thumb img.is-loaded { opacity:1; }
.pdp-section { margin-top:28px; }
.pdp-section h2 { font-size:var(--fz-17); font-weight:var(--fw-semi); margin-bottom:12px; }
.pdp-section p { line-height:1.55; }
.pdp-feat { display:flex; font-size:var(--fz-14); margin-bottom:8px; }
.pdp-feat dt { color:var(--tx-muted); width:180px; flex:0 0 auto; }
.pdp-aside { position:sticky; top:16px; }
.pdp-card { background:#fff; border:1px solid var(--line-soft); border-radius:var(--radius); padding:22px; }
.pdp-price { font-size:var(--fz-24); font-weight:var(--fw-bold); margin-bottom:16px; }
.pdp-seller { display:flex; gap:12px; align-items:center; margin-top:18px; padding-top:18px; border-top:1px solid var(--line-soft); }
.pdp-seller img { width:44px; height:44px; border-radius:50%; background:#E7EAF0; }
.pdp-seller b { display:block; font-size:var(--fz-14); }
.pdp-seller span { color:var(--tx-muted); font-size:var(--fz-13); }
.pdp-report { color:var(--danger); font-size:var(--fz-13); text-align:center; margin-top:14px; }
.site-foot { border-top:1px solid var(--line-soft); margin-top:40px; }
.site-foot__in { max-width:var(--container); margin:0 auto; padding:22px 20px; display:flex; gap:26px; color:var(--tx-muted); font-size:var(--fz-13); }

/* ---------- cart / checkout split ---------- */
.split { display:grid; grid-template-columns:1fr 372px; gap:30px; align-items:start; }
.box { background:#fff; border:1px solid var(--line-soft); border-radius:var(--radius); }
.cart-list { padding:4px 22px; }
.cart-item { display:grid; grid-template-columns:96px 1fr auto; gap:16px; padding:20px 0; border-bottom:1px solid var(--line-soft); align-items:start; }
.cart-item:last-child { border-bottom:none; }
.cart-item__img { width:96px; height:96px; border-radius:var(--radius-sm); object-fit:cover; background:var(--bg); }
.cart-item__title { font-weight:var(--fw-semi); }
.cart-item__loc { color:var(--tx-muted); font-size:var(--fz-13); margin-top:4px; }
.cart-item__price { font-size:var(--fz-17); font-weight:var(--fw-semi); margin-top:12px; }
.cart-item__del { display:inline-flex; align-items:center; gap:6px; height:40px; padding:0 14px; font-size:var(--fz-14); font-weight:var(--fw-med); color:var(--danger); background:none; border:1px solid var(--line-soft); border-radius:10px; cursor:pointer; transition:background .15s, border-color .15s; }
.cart-item__del:hover { background:#FDECEC; border-color:var(--danger); }
.cart-item__del svg { width:18px; height:18px; }
.qty { display:inline-flex; align-items:center; border:1px solid var(--line); border-radius:var(--radius-sm); margin-top:10px; }
.qty button { background:none; border:none; padding:6px 14px; font-size:16px; color:var(--tx); cursor:pointer; }
.qty span { min-width:30px; text-align:center; font-size:var(--fz-14); }
.cart-seller-h { font-weight:var(--fw-semi); padding:16px 22px 0; color:var(--tx-muted); font-size:var(--fz-13); }

.summary { background:#fff; border:1px solid var(--line-soft); border-radius:var(--radius); padding:24px; margin-bottom:18px; }
.summary h2 { font-size:var(--fz-20); font-weight:var(--fw-bold); margin-bottom:18px; }
.summary__row { display:flex; justify-content:space-between; align-items:center; margin-bottom:14px; font-size:var(--fz-14); }
.summary__row .green { color:var(--ok); }
.summary__total { display:flex; justify-content:space-between; font-size:var(--fz-20); font-weight:var(--fw-bold); margin:8px 0 18px; }
.summary__total b { color:var(--bg-purple); }

/* ---------- checkout ---------- */
.co-field { margin-bottom:18px; max-width:560px; }
.co-field > span { display:block; color:var(--tx); font-size:var(--fz-14); margin-bottom:7px; }
.co-field em { color:var(--danger); font-style:normal; }
.pay-opt { display:flex; align-items:center; gap:10px; margin-bottom:12px; font-size:var(--fz-14); }

/* ---------- orders / tabs ---------- */
.tabs { display:flex; gap:28px; border-bottom:1px solid var(--line-soft); margin:6px 0 22px; }
.tab { background:none; border:none; padding:0 0 12px; font-size:var(--fz-15); font-weight:var(--fw-med); color:var(--tx-soft); border-bottom:2px solid transparent; margin-bottom:-1px; cursor:pointer; }
.tab.is-active { color:var(--tx-head); border-bottom-color:var(--bg-blue); }
.ord-row { display:grid; grid-template-columns:max-content 64px 1fr auto; gap:18px; align-items:center; padding:16px; border:1px solid var(--line-soft); border-radius:var(--radius); margin-bottom:12px; color:var(--tx); }
.ord-row img { width:64px; height:64px; border-radius:var(--radius-sm); object-fit:cover; background:var(--bg); grid-column:2; }
.ord-row__price { font-weight:var(--fw-semi); }
.ord-row__title { font-size:var(--fz-14); }
.ord-row__meta { color:var(--tx-muted); font-size:var(--fz-13); }
.ord-actions { grid-column:1/-1; display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-top:10px; padding-top:12px; border-top:1px solid var(--line-soft); }
.ord-actions .btn { padding:9px 16px; font-size:var(--fz-14); border-radius:var(--radius-sm); }
.ord-note { color:var(--tx-muted); font-size:var(--fz-14); }
.ord-pts { display:inline-flex; align-items:center; gap:8px; }
.ord-pts .field { width:96px; padding:9px 10px; }
.badge { font-size:12px; font-weight:var(--fw-med); border-radius:6px; padding:4px 10px; white-space:nowrap; }
.badge--green { background:#EAFBF1; color:var(--ok); }
.badge--amber { background:#FFF6E5; color:#C98A00; }
.badge--blue { background:#EAF1FE; color:var(--bg-blue); }
.badge--red { background:#FDEAEC; color:var(--danger); }
.empty { text-align:center; color:var(--tx-soft); padding:48px 0; }

/* ---------- cabinet: settings form + account + wallet ---------- */
.mode-toggle { display:inline-flex; background:#EDEFF2; border-radius:var(--radius-sm); padding:4px; gap:4px; margin-bottom:22px; }
.mode-toggle button { background:none; border:none; padding:9px 20px; border-radius:6px; font-size:var(--fz-14); color:var(--tx-muted); display:inline-flex; gap:8px; align-items:center; }
.mode-toggle button.is-active { background:#fff; color:var(--tx-head); font-weight:var(--fw-med); box-shadow:0 1px 3px rgba(0,0,0,.08); }
.alert { background:#FFF8E6; border:1px solid #FCE9B8; border-radius:var(--radius-sm); padding:14px 18px; color:var(--tx); font-size:var(--fz-14); margin-bottom:24px; }
.form-grid { display:grid; grid-template-columns:200px 1fr; gap:16px 24px; align-items:center; max-width:760px; }
.form-grid > .lbl { color:var(--tx); font-size:var(--fz-14); }
.form-grid em { color:var(--danger); font-style:normal; }
.radio-row { display:flex; gap:26px; }
.radio-row label { display:flex; align-items:center; gap:8px; font-size:var(--fz-14); }
.sect-title { font-size:var(--fz-17); font-weight:var(--fw-semi); margin:34px 0 4px; }
.acct-row { display:grid; grid-template-columns:200px 1fr; gap:24px; padding:14px 0; font-size:var(--fz-14); border-bottom:1px solid var(--line-soft); max-width:760px; align-items:center; }
.acct-row dt { color:var(--tx-muted); }
.acct-ok { color:var(--ok); font-size:var(--fz-13); margin-left:10px; }

.wallet-balance { background:var(--bg); border-radius:var(--radius); padding:22px 26px; display:inline-block; min-width:260px; }
.wallet-balance b { font-size:32px; font-weight:var(--fw-bold); }
.wallet-balance span { color:var(--tx-muted); margin-left:8px; }
.wallet-burn { background:#FDEEEE; color:var(--danger); border-radius:var(--radius); padding:14px 18px; margin-top:14px; display:inline-flex; gap:8px; align-items:center; }
.hist { width:100%; border-collapse:collapse; margin-top:14px; }
.hist th { text-align:left; color:var(--tx-muted); font-size:12px; font-weight:var(--fw-med); padding:10px 0; border-bottom:1px solid var(--line-soft); text-transform:uppercase; letter-spacing:.03em; }
.hist th:last-child, .hist td.amt { text-align:right; }
.hist td { padding:18px 0; border-bottom:1px solid var(--line-soft); font-size:var(--fz-14); }
.hist td.amt { color:var(--ok); font-weight:var(--fw-med); }
.hist td.amt.neg { color:var(--danger); }

/* ---------- my ads table ---------- */
.ads-head { display:flex; justify-content:space-between; align-items:center; }
.ads-toolbar { display:flex; justify-content:space-between; align-items:center; gap:16px; margin:6px 0 14px; }
.ads-toolbar .right { display:flex; gap:12px; align-items:center; }
.ads-table { width:100%; border-collapse:collapse; }
.ads-table th { text-align:left; color:var(--tx-muted); font-size:12px; font-weight:var(--fw-med); text-transform:uppercase; letter-spacing:.02em; padding:12px; border-bottom:1px solid var(--line-soft); }
.ads-table td { padding:14px 12px; border-bottom:1px solid var(--line-soft); font-size:var(--fz-14); vertical-align:middle; }
.ads-table th:nth-child(4), .ads-table td:nth-child(4), .ads-table th:nth-child(5), .ads-table td:nth-child(5) { text-align:right; }
.ads-table img { width:48px; height:48px; border-radius:8px; object-fit:cover; background:var(--bg); display:block; }
.ads-status { display:inline-block; font-size:12px; font-weight:var(--fw-med); border-radius:6px; padding:4px 12px; }
.ads-status--pub { background:#EAFBF1; color:var(--ok); }
.ads-status--draft { background:#EEF1F4; color:var(--tx-muted); }
.ads-status--pending { background:#FFF6E6; color:#B7791F; }
.ads-status--rejected { background:#FDECEC; color:var(--danger); }
.ads-actions { white-space:nowrap; }
.ads-act { display:inline-block; font-size:13px; font-weight:var(--fw-med); padding:6px 10px; border-radius:8px; border:1px solid var(--line-soft); background:#fff; cursor:pointer; text-decoration:none; margin-right:6px; }
.ads-act--edit { color:var(--tx-head); }
.ads-act--edit:hover { background:var(--bg); }
.ads-act--del { color:var(--danger); }
.ads-act--del:hover, .ads-act--del.is-armed { background:#FDECEC; border-color:var(--danger); }
/* #182 — кнопка «Опубликовать» (черновик/отклонённое → в каталог) */
.ads-act--pub { color:#0F9D58; border-color:#B7E1C6; font-weight:var(--fw-semi); }
.ads-act--pub:hover { background:#EAF7EE; border-color:#0F9D58; }
.ads-act--pub:disabled { opacity:.6; cursor:default; }
/* ad photo upload thumbnails (new-ad / edit-ad) */
.ann-photo { position:relative; width:84px; height:84px; border-radius:10px; overflow:hidden; border:1px solid var(--line-soft); background:var(--bg); cursor:grab; }
.ann-photo img { width:100%; height:100%; object-fit:cover; display:block; }
.ann-photo__del { position:absolute; top:3px; right:3px; width:22px; height:22px; border:none; border-radius:50%; background:rgba(20,28,46,.72); color:#fff; font-size:15px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center; }
.ann-photo__del:hover { background:var(--danger); }
.ads-del { color:var(--danger); background:none; border:none; cursor:pointer; }

/* ---------- home / landing ---------- */
.hero { background:linear-gradient(120deg,#EAF2FE 0%,#F3ECFB 100%); border-radius:var(--radius); padding:48px 44px; margin:18px 0 38px; min-height:360px; box-sizing:border-box; }
.hero h1 { font-size:38px; font-weight:var(--fw-bold); max-width:560px; line-height:1.15; }
.hero p { color:var(--tx-muted-2); font-size:var(--fz-15); margin:16px 0 24px; max-width:520px; line-height:1.5; }
.home-cats { display:grid; grid-template-columns:repeat(6,1fr); gap:16px; margin-bottom:44px; }
.home-cat { background:#fff; border:1px solid var(--line-soft); border-radius:var(--radius); padding:20px 16px; text-align:center; color:var(--tx); transition:.15s; }
.home-cat:hover { border-color:var(--bg-blue); transform:translateY(-2px); }
.home-cat__ic { width:60px; height:60px; margin:0 auto 12px; border-radius:14px; background:var(--bg); display:flex; align-items:center; justify-content:center; font-size:24px; overflow:hidden; }
.home-cat__ic img { width:100%; height:100%; object-fit:cover; display:block; }
.home-cat__name { font-size:var(--fz-14); font-weight:var(--fw-med); }
.home-banners { display:grid; grid-template-columns:1fr; gap:14px; margin:0 0 38px; }
.home-banners:has(.home-banner:nth-child(2)) { grid-template-columns:1fr 1fr; }
.home-banner { display:block; border-radius:var(--radius); overflow:hidden; border:1px solid var(--line-soft); background:#F4F5FB; line-height:0; }
.home-banner img { width:100%; height:auto; max-height:240px; object-fit:cover; display:block; transition:transform .25s; }
.home-banner:hover img { transform:scale(1.02); }

.home-sect { display:flex; justify-content:space-between; align-items:center; margin:0 0 20px; }
.home-sect h2 { font-size:var(--fz-24); font-weight:var(--fw-semi); }
.home-sect a { font-size:var(--fz-14); }

/* ---------- admin (dark sidebar) ---------- */
.adm { display:grid; grid-template-columns:240px 1fr; min-height:100vh; }
/* #184 — не показывать интерфейс админки до подтверждения роли (иначе «моргает»
   контент до редиректа/гейта). admin-shell.js добавляет body.adm-ready после проверки. */
body[data-admin-page] .adm { visibility:hidden; }
body[data-admin-page].adm-ready .adm { visibility:visible; }
.adm-side { background:var(--admin-sidebar); color:var(--admin-sidebar-tx); padding:22px 0; }
.adm-side__logo { color:#fff; font-weight:var(--fw-bold); font-size:18px; padding:0 24px 22px; }
.adm-side a { display:flex; align-items:center; gap:10px; padding:11px 24px; color:var(--admin-sidebar-tx); font-size:var(--fz-14); }
.adm-side a:hover, .adm-side a.is-active { background:rgba(255,255,255,.08); color:#fff; }
.adm-main { background:var(--admin-bg); padding:30px 40px 60px; }
.adm-main h1 { font-size:var(--fz-24); font-weight:var(--fw-semi); margin-bottom:6px; }
.adm-sub { color:var(--tx-muted); font-size:var(--fz-14); margin-bottom:24px; }
.adm-tabs { display:flex; gap:24px; border-bottom:1px solid #E3E6F0; margin-bottom:22px; }
.adm-tab { background:none; border:none; padding:0 0 12px; font-size:var(--fz-14); font-weight:var(--fw-med); color:var(--tx-muted); border-bottom:2px solid transparent; margin-bottom:-1px; cursor:pointer; }
.adm-tab.is-active { color:var(--tx-head); border-bottom-color:var(--bg-blue); }
.adm-review { background:#fff; border:1px solid var(--line-soft); border-radius:12px; padding:18px 20px; margin-bottom:14px; }
.adm-review__top { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; }
.adm-review__rate { font-weight:var(--fw-semi); }
.adm-review__meta { color:var(--tx-soft); font-size:var(--fz-13); }
.adm-review__actions { display:flex; gap:10px; margin-top:14px; }

/* ---------- admin dashboard: stat cards ---------- */
.adm-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:16px; margin-bottom:26px; }
.adm-card { background:#fff; border:1px solid var(--line-soft); border-radius:var(--radius); padding:18px 20px; }
.adm-card__label { color:var(--tx-muted); font-size:var(--fz-13); margin-bottom:8px; }
.adm-card__value { font-size:var(--fz-32); font-weight:var(--fw-bold); color:var(--tx-head); line-height:1.1; }
.adm-card__sub { color:var(--tx-soft); font-size:var(--fz-13); margin-top:6px; }
.adm-card__sub b { color:var(--ok); font-weight:var(--fw-semi); }

/* ---------- admin dashboard: charts (inline bars) ---------- */
.adm-charts { display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:16px; margin-bottom:26px; }
.adm-chart { background:#fff; border:1px solid var(--line-soft); border-radius:var(--radius); padding:18px 20px; }
.adm-chart__title { font-weight:var(--fw-semi); font-size:var(--fz-14); color:var(--tx-head); margin-bottom:4px; }
.adm-chart__total { color:var(--tx-muted); font-size:var(--fz-13); margin-bottom:14px; }
.adm-bars { display:flex; align-items:flex-end; gap:4px; height:120px; }
.adm-bar { flex:1; display:flex; flex-direction:column; justify-content:flex-end; align-items:center; height:100%; }
.adm-bar__fill { width:100%; min-height:2px; background:var(--bg-blue); border-radius:3px 3px 0 0; transition:height .3s; }
.adm-bar__fill--rev { background:var(--ok); }
.adm-bar__cap { font-size:9px; color:var(--tx-soft); margin-top:4px; white-space:nowrap; }

/* ---------- admin toolbar (filters + search) ---------- */
.adm-toolbar { display:flex; gap:12px; flex-wrap:wrap; align-items:center; margin-bottom:18px; }
.adm-toolbar input, .adm-toolbar select { height:38px; border:1px solid var(--line-soft); border-radius:var(--radius-sm); padding:0 12px; font-size:var(--fz-14); background:#fff; }
.adm-toolbar input[type=search] { min-width:240px; }

/* ---------- admin table ---------- */
.adm-table { width:100%; border-collapse:collapse; background:#fff; border:1px solid var(--line-soft); border-radius:var(--radius); overflow:hidden; }
.adm-table th { text-align:left; font-size:12px; text-transform:uppercase; letter-spacing:.04em; color:var(--tx-muted); padding:12px 16px; border-bottom:1px solid var(--line-soft); background:#FAFBFE; }
.adm-table td { padding:13px 16px; font-size:var(--fz-14); color:var(--tx); border-bottom:1px solid var(--line-soft); vertical-align:middle; }
.adm-table tr:last-child td { border-bottom:none; }
.adm-table tr:hover td { background:#FAFBFE; }
.adm-table .num { text-align:right; font-variant-numeric:tabular-nums; }
.adm-table .row-actions { display:flex; gap:8px; justify-content:flex-end; }

/* ---------- status badge ---------- */
.adm-badge { display:inline-block; padding:3px 10px; border-radius:var(--radius-pill); font-size:12px; font-weight:var(--fw-med); background:#EEF1F4; color:var(--tx-soft); white-space:nowrap; }
.adm-badge--ok { background:rgba(83,179,116,.14); color:#2E8B57; }
.adm-badge--wait { background:rgba(250,183,24,.16); color:#9A7400; }
/* #151 — баннер статуса модерации профиля продавца */
.mod-status { border-radius:12px; padding:14px 18px; margin:14px 0 4px; font-size:14px; line-height:1.5; border:1px solid transparent; }
.mod-status--wait { background:rgba(250,183,24,.10); border-color:rgba(250,183,24,.35); color:#8a6800; }
.mod-status--ok { background:rgba(83,179,116,.10); border-color:rgba(83,179,116,.35); color:#2E8B57; }
.mod-status--bad { background:rgba(235,0,27,.07); border-color:rgba(235,0,27,.30); color:var(--danger); }
/* #147 — выпадашка автодополнения адреса (DaData) */
.addr-ac__it:hover { background:#F2F5FB; }
/* #153 — метро на карточке товара + в фильтрах/каталоге */
.pdp-metro { display:flex; align-items:center; gap:8px; font-size:var(--fz-14); color:var(--tx); margin-bottom:6px; }
.pdp-metro__dot { width:10px; height:10px; border-radius:50%; flex:0 0 auto; }
.pdp-addr-line { display:flex; align-items:flex-start; gap:6px; }
.pcard__metro { display:inline-flex; align-items:center; gap:5px; font-size:var(--fz-13); color:var(--tx-muted); margin-top:2px; }
.pcard__metro i { width:8px; height:8px; border-radius:50%; display:inline-block; flex:0 0 auto; }
.cat-metro { display:flex; flex-direction:column; gap:6px; max-height:260px; overflow:auto; }
.cat-metro__opt { display:flex; align-items:center; gap:8px; font-size:var(--fz-14); cursor:pointer; padding:3px 0; }
.cat-metro__opt i { width:9px; height:9px; border-radius:50%; flex:0 0 auto; }
.cat-metro__line { font-size:var(--fz-12); color:var(--tx-soft); text-transform:uppercase; letter-spacing:.04em; margin-top:8px; }
.adm-badge--bad { background:rgba(235,0,27,.10); color:var(--danger); }
.adm-badge--blue { background:rgba(0,102,245,.10); color:var(--bg-blue); }

/* ---------- admin form (banner add/edit) ---------- */
.adm-form { background:#fff; border:1px solid var(--line-soft); border-radius:var(--radius); padding:22px 24px; max-width:640px; margin-bottom:22px; display:grid; gap:14px; }
.adm-form label { display:block; font-size:var(--fz-13); color:var(--tx-muted); margin-bottom:5px; }
.adm-form input[type=text], .adm-form input[type=url], .adm-form input[type=number], .adm-form input[type=datetime-local], .adm-form select { width:100%; height:38px; border:1px solid var(--line-soft); border-radius:var(--radius-sm); padding:0 12px; font-size:var(--fz-14); }
.adm-form .row2 { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.adm-form .check { display:flex; align-items:center; gap:8px; font-size:var(--fz-14); color:var(--tx); }
.adm-form__actions { display:flex; gap:10px; margin-top:4px; }
.adm-thumb { width:64px; height:40px; object-fit:cover; border-radius:6px; border:1px solid var(--line-soft); background:#F4F5FB; }
.adm-muted { color:var(--tx-muted); font-size:var(--fz-13); }

/* #167 — адаптив админки: меню прячется под бургер (off-canvas), контент во всю
   ширину, формы в один столбец, таблицы скроллятся. Бургер и затемнение — только на узких. */
.adm-burger, .adm-backdrop { display:none; }
@media (max-width: 900px) {
  .adm { display:block; min-height:0; }
  /* сайдбар — выезжающая слева панель поверх контента */
  .adm-side {
    position:fixed; top:0; left:0; bottom:0; width:min(78vw,280px); z-index:1000;
    overflow-y:auto; -webkit-overflow-scrolling:touch;
    transform:translateX(-100%); transition:transform .25s ease; box-shadow:2px 0 20px rgba(0,0,0,.3);
  }
  .adm-side.is-open { transform:translateX(0); }
  /* кнопка-бургер и затемнение */
  .adm-burger {
    display:inline-flex; align-items:center; justify-content:center; gap:8px;
    position:fixed; top:10px; left:10px; z-index:1001; height:42px; padding:0 14px;
    border:none; border-radius:10px; background:var(--admin-sidebar); color:#fff;
    font-size:15px; font-weight:600; cursor:pointer; box-shadow:0 2px 10px rgba(0,0,0,.2);
  }
  .adm-burger__icon { display:inline-block; width:18px; height:14px; position:relative; }
  .adm-burger__icon::before, .adm-burger__icon::after, .adm-burger__icon i {
    content:""; position:absolute; left:0; right:0; height:2px; background:#fff; border-radius:2px;
  }
  .adm-burger__icon::before { top:0; } .adm-burger__icon i { top:6px; } .adm-burger__icon::after { bottom:0; }
  .adm-backdrop { display:block; position:fixed; inset:0; background:rgba(0,0,0,.45); z-index:999; opacity:0; pointer-events:none; transition:opacity .25s; }
  .adm-backdrop.is-open { opacity:1; pointer-events:auto; }
  .adm-main { padding:64px 14px 48px; }
  .adm-form { max-width:100%; }
  .adm-form .row2 { grid-template-columns:1fr; }
  .adm-tabs { gap:16px; overflow-x:auto; -webkit-overflow-scrolling:touch; }
  /* широкие таблицы не ломают страницу — скроллятся внутри своей обёртки */
  .adm-table { display:block; overflow-x:auto; white-space:nowrap; }
}

/* ---------- addresses ---------- */
.addr-list { display:flex; flex-direction:column; gap:12px; margin-bottom:8px; max-width:760px; }
.addr-item { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; padding:16px 18px; }
.addr-item__head { font-weight:var(--fw-semi); font-size:var(--fz-14); margin-bottom:4px; display:flex; align-items:center; flex-wrap:wrap; }
.addr-item__body { font-size:var(--fz-14); color:var(--tx); }
.addr-item__note { color:var(--tx-muted); font-size:var(--fz-13); margin-top:4px; }
.addr-item__del { font-size:18px; line-height:1; flex:0 0 auto; }
.addr-form { padding:22px 22px 26px; max-width:760px; }
.addr-form .form-grid { max-width:none; }

/* ---------- cabinet: employees ---------- */
.emp-list { display:flex; flex-direction:column; gap:12px; max-width:760px; margin-top:14px; }
.emp-row { display:flex; align-items:center; gap:16px; padding:16px 20px; }
.emp-row__name { flex:1; font-size:var(--fz-14); font-weight:var(--fw-med); color:var(--tx); }
.emp-del { font-size:var(--fz-14); }
.emp-add { display:flex; align-items:center; gap:12px; flex-wrap:wrap; max-width:760px; margin-top:14px; }
.emp-add .field { flex:1; min-width:200px; }
.emp-add .btn { flex:0 0 auto; }

/* ---------- settings sub-tabs (Общая настройка / Программа лояльности / Сотрудники) ---------- */
.set-tabs { display:flex; gap:28px; border-bottom:1px solid var(--line-soft); margin:2px 0 8px; }
.set-tabs a { color:var(--tx-soft); font-size:var(--fz-14); padding:0 0 12px; border-bottom:2px solid transparent; margin-bottom:-1px; }
.set-tabs a:hover { color:var(--bg-blue); }
.set-tabs a.is-active { color:var(--tx-head); font-weight:var(--fw-med); border-bottom-color:var(--bg-blue); }

/* ===== QA-фиксы 2026-06-29 (задачи #10 #35 #43 #49) ===== */
/* #10 — кликабельное лого над формой входа + бренд-ссылка в aside */
.auth-aside__brand { display:inline-block; text-decoration:none; }
.auth-aside__brand:hover { opacity:.9; }
.auth-logo { display:inline-flex; align-items:center; gap:8px; font-size:20px; font-weight:var(--fw-bold); color:var(--tx-head); text-decoration:none; margin-bottom:18px; }
.auth-logo:hover { opacity:.9; }
.auth-logo__mark { width:30px; height:30px; border-radius:9px; background:linear-gradient(135deg, var(--bg-purple) 0%, var(--ok) 100%); color:#fff; font-weight:800; font-size:18px; display:inline-flex; align-items:center; justify-content:center; }

/* #35 — оформление вкладки «Программа лояльности» в кошельке (раньше голый текст) */
.wallet-loyalty { background:var(--bg); border:1px solid var(--line-soft); border-radius:var(--radius); padding:18px 20px; line-height:1.6; }
.wallet-loyalty p { margin:0 0 6px; }
.wallet-loyalty ul { margin:8px 0 0 18px; padding:0; line-height:1.7; }
.wallet-loyalty li { margin-bottom:4px; }

/* #43 — «Поделиться профилем» оформлено как заметная кнопка (было голубым текстом) */
.side__share { color:var(--bg-purple-deep); font-weight:var(--fw-semi); font-size:var(--fz-14); margin-top:18px; cursor:pointer; display:inline-flex; align-items:center; gap:6px; border:1px solid var(--bg-purple); border-radius:var(--radius-sm); padding:9px 14px; background:#fff; transition:background .15s,color .15s; }
.side__share:hover { background:var(--bg-purple); color:#fff; }

/* #49 — «Кол-во» без переноса + действия иконками (карандаш/крестик) */
.ads-qty { white-space:nowrap; }
.ads-act--icon { display:inline-flex; align-items:center; justify-content:center; width:32px; height:32px; padding:0; font-size:15px; line-height:1; }

/* #39 — корзина: монета баллов, строка списания, блок «Мои заказы» */
.summary__coin { width:16px; height:16px; vertical-align:-3px; margin-right:2px; }
.summary__pts-row { align-items:center; }
.summary__was { color:var(--tx-muted); font-weight:var(--fw-reg); font-size:var(--fz-13); margin-left:6px; }
.cart-orders-link { display:flex; align-items:center; justify-content:space-between; background:#fff; border:1px solid var(--line-soft); border-radius:var(--radius); padding:14px 18px; margin-top:4px; color:var(--tx-head); font-weight:var(--fw-med); text-decoration:none; box-shadow:var(--shadow-card); }
.cart-orders-link:hover { border-color:var(--bg-purple); }
.cart-orders-link__go { color:var(--bg-purple-deep); font-weight:var(--fw-semi); }

/* #49 — статус «В архиве» */
.ads-status--archived { background:#EEF1F4; color:var(--tx-muted); }

/* #51 — онбординг-чеклист «шаги старта» */
.onb { background:#fff; border:1px solid var(--line-soft); border-radius:var(--radius); padding:18px 20px; margin-bottom:18px; box-shadow:var(--shadow-card); }
.onb-head { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:14px; flex-wrap:wrap; }
.onb-head b { color:var(--tx-head); font-size:var(--fz-15); }
.onb-progress { color:var(--tx-muted); font-size:var(--fz-13); margin-left:10px; }
.onb-bar { flex:1; min-width:120px; max-width:240px; height:6px; background:var(--line-soft); border-radius:99px; overflow:hidden; }
.onb-bar i { display:block; height:100%; background:linear-gradient(90deg,var(--bg-purple),var(--ok)); border-radius:99px; transition:width .3s; }
.onb-steps { display:flex; flex-direction:column; gap:8px; }
.onb-step { display:flex; align-items:center; gap:12px; padding:10px 12px; border-radius:var(--radius-sm); background:var(--bg); }
.onb-step--current { background:#F2EFFF; outline:1px solid var(--bg-purple); }
.onb-step--done { opacity:.7; }
.onb-step__num { flex:0 0 26px; width:26px; height:26px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; font-weight:700; font-size:13px; background:#fff; border:1px solid var(--line); color:var(--tx-muted); }
.onb-step--done .onb-step__num { background:var(--ok); border-color:var(--ok); color:#fff; }
.onb-step--current .onb-step__num { background:var(--bg-purple); border-color:var(--bg-purple); color:#fff; }
.onb-step__body { display:flex; flex-direction:column; flex:1; }
.onb-step__body b { color:var(--tx-head); font-size:var(--fz-14); }
.onb-step__body span { color:var(--tx-muted); font-size:var(--fz-13); }
.onb-step__cta { flex:0 0 auto; padding:8px 14px; font-size:var(--fz-13); }

/* #47 — выпадающие автоподсказки поиска в шапке */
.hdr__search { position:relative; }
.hdr__suggest { position:absolute; top:calc(100% + 4px); left:0; right:0; background:#fff; border:1px solid var(--line-soft); border-radius:var(--radius-sm); box-shadow:var(--shadow-card); z-index:60; overflow:hidden; max-height:320px; overflow-y:auto; }
.hdr__suggest button { display:block; width:100%; text-align:left; padding:9px 14px; background:none; border:0; font-size:var(--fz-14); color:var(--tx); cursor:pointer; }
.hdr__suggest button:hover { background:var(--bg); }

/* #22 — форма жалобы */
.cmpl-lbl { display:block; font-size:var(--fz-13); color:var(--tx-muted); margin-bottom:8px; }
.cmpl-lbl .field { margin-top:4px; }
.bg-modal [data-cmpl-text] { width:100%; margin-bottom:8px; resize:vertical; }
.cmpl-err { color:var(--danger); font-size:var(--fz-13); min-height:16px; margin-bottom:6px; }

/* #48 — действия владельца над отзывами */
.srev__acts { margin-top:8px; display:flex; gap:10px; }
.srev__act { background:none; border:1px solid var(--line); border-radius:var(--radius-sm); padding:5px 12px; font-size:var(--fz-13); color:var(--bg-purple-deep); cursor:pointer; }
.srev__act:hover { background:var(--bg); border-color:var(--bg-purple); }

/* #26/#37 — карта OSM (Leaflet) */
.ann-map { height:280px; border-radius:var(--radius); margin-top:8px; border:1px solid var(--line-soft); z-index:0; }
.pdp-map { height:280px; border-radius:var(--radius); margin-top:10px; border:1px solid var(--line-soft); z-index:0; }
.pdp-addr { margin-top:10px; color:var(--tx-head); font-weight:var(--fw-med); }
.pdp-addr svg { width:16px; height:16px; vertical-align:-3px; margin-right:4px; }
/* #22 — онлайн-статус продавца */
.s-online { display:inline-flex; align-items:center; gap:6px; font-size:var(--fz-13); }
.s-online::before { content:""; width:8px; height:8px; border-radius:50%; background:var(--tx-soft); display:inline-block; }
.s-online.is-online { color:var(--ok); }
.s-online.is-online::before { background:var(--ok); }

/* «Мои отзывы» — статус модерации + причина отклонения + исправление */
.myrev-list { display:flex; flex-direction:column; gap:14px; }
.myrev { background:#fff; border:1px solid var(--line-soft); border-radius:var(--radius); padding:16px 18px; box-shadow:var(--shadow-card); }
.myrev-top { display:flex; align-items:center; gap:12px; margin-bottom:8px; flex-wrap:wrap; }
.myrev-rate { font-weight:var(--fw-semi); color:var(--tx-head); }
.myrev-date { color:var(--tx-muted); font-size:var(--fz-13); }
.myrev-badge { margin-left:auto; font-size:var(--fz-13); font-weight:var(--fw-med); padding:3px 10px; border-radius:999px; }
.myrev-badge--pending { background:#FFF4D6; color:#8a6d00; }
.myrev-badge--ok { background:#E4F5EA; color:#2b7a4b; }
.myrev-badge--rej { background:#FDECEC; color:var(--danger); }
.myrev-text { color:var(--tx); line-height:1.5; }
.myrev-reason { margin-top:10px; padding:10px 12px; background:#FDECEC; border-radius:var(--radius-sm); color:var(--danger); font-size:var(--fz-14); }
.myrev-reply { margin-top:10px; padding:10px 12px; background:var(--bg); border-radius:var(--radius-sm); font-size:var(--fz-14); }
.myrev-acts { margin-top:12px; display:flex; gap:10px; }
.myrev-editform { margin-top:12px; display:flex; flex-direction:column; gap:8px; border-top:1px solid var(--line-soft); padding-top:12px; }
.myrev-lbl { font-size:var(--fz-13); color:var(--tx-muted); display:flex; align-items:center; gap:8px; }
.myrev-editform textarea { width:100%; resize:vertical; }
.myrev-err { color:var(--danger); font-size:var(--fz-13); min-height:16px; }

/* Гео-фильтр в выпадашке города: «Весь регион» и сброс */
.hdr__citylist .hdr__city-region { color:var(--bg-purple-deep); font-weight:var(--fw-med); }
.hdr__citylist .hdr__city-reset { color:var(--tx-muted); border-bottom:1px solid var(--line-soft); border-radius:0; margin-bottom:4px; }
.hdr__citylist .hdr__city-reset:hover { color:var(--danger); background:#FDECEC; }

/* Пустой экран поиска/каталога — иллюстрация + заголовок + подпись (как в Юнисайте) */
.cat-empty { grid-column:1 / -1; text-align:center; padding:48px 16px 60px; color:var(--tx); }
.cat-empty__img { max-width:340px; width:70%; height:auto; margin:0 auto 22px; display:block; }
.cat-empty__title { font-size:var(--fz-20); font-weight:var(--fw-bold); color:var(--tx-head); margin-bottom:8px; }
.cat-empty__sub { font-size:var(--fz-15); color:var(--tx-muted); max-width:520px; margin:0 auto; line-height:1.5; }

/* #40 — способ доставки (табы Курьером/Самовывоз) + начисление + экран «Спасибо за заказ» */
.co-tabs { display:inline-flex; gap:6px; background:var(--bg); border-radius:var(--radius-sm); padding:4px; margin-bottom:14px; }
.co-tab { border:0; background:none; padding:9px 18px; border-radius:8px; font-size:var(--fz-14); font-weight:var(--fw-med); color:var(--tx-muted); cursor:pointer; }
.co-tab.is-active { background:#fff; color:var(--tx-head); box-shadow:0 1px 3px rgba(0,26,52,.12); }
.co-note { color:var(--tx-muted); font-size:var(--fz-14); background:var(--bg); border-radius:var(--radius-sm); padding:12px 14px; line-height:1.5; }
.summary__earn [data-co-earn] { color:var(--ok); font-weight:var(--fw-med); }
.co-success { text-align:center; padding:64px 16px; grid-column:1/-1; }
.co-success h2 { font-size:var(--fz-24); margin-bottom:10px; }
.co-success p { color:var(--tx-muted); margin-bottom:24px; }
.co-success__btns { display:inline-flex; gap:12px; flex-wrap:wrap; justify-content:center; }

/* Заказы: кликабельная карточка + модалка-сводка заказа */
.ord-row--link { cursor:pointer; transition:box-shadow .15s, border-color .15s; }
.ord-row--link:hover { box-shadow:0 4px 18px rgba(0,26,52,.08); }
.ordm { max-width:520px; text-align:left; }
.ordm__meta { display:flex; align-items:center; gap:12px; margin:6px 0 14px; color:var(--tx-muted); font-size:var(--fz-13); }
.ordm__items { display:flex; flex-direction:column; gap:10px; margin-bottom:16px; }
.ordm__item { display:flex; align-items:center; gap:12px; }
.ordm__item img { width:52px; height:52px; border-radius:8px; object-fit:cover; background:var(--bg); flex:0 0 auto; }
.ordm__item-t { flex:1; min-width:0; }
.ordm__item-t div { color:var(--tx-head); font-weight:var(--fw-med); }
.ordm__item-t span { color:var(--tx-muted); font-size:var(--fz-13); }
.ordm__rows { border-top:1px solid var(--line-soft); padding-top:12px; display:flex; flex-direction:column; gap:8px; }
.ordm__rows > div { display:flex; justify-content:space-between; gap:16px; font-size:var(--fz-14); }
.ordm__rows > div > span:first-child { color:var(--tx-muted); }
.ordm__total { border-top:1px solid var(--line-soft); padding-top:10px; margin-top:4px; }
.ordm__total b { color:var(--tx-head); font-size:var(--fz-17); }

/* ---------- Кошелёк — desktop redesign (2026-07-02) ---------- */
.wallet .tabs { margin-bottom:24px; }
.wallet-pane[hidden] { display:none; }

/* card row: баланс + QR */
.wallet-grid { display:flex; flex-wrap:wrap; gap:16px; align-items:stretch; }

/* balance card (перекрывает старое inline-block определение выше) */
.wallet-balance {
  flex:1 1 340px; min-width:0;
  background:var(--bg); border:1px solid var(--line-soft);
  border-radius:16px; padding:26px 28px;
  display:flex; flex-direction:column; justify-content:center;
  position:relative; overflow:hidden; min-height:190px;
}
.wallet-balance::after {
  content:""; position:absolute; right:-40px; bottom:-40px;
  width:170px; height:170px; border-radius:50%;
  background:radial-gradient(circle at 32% 30%, rgba(145,125,250,.20), rgba(108,92,231,.05) 68%, transparent 70%);
  pointer-events:none;
}
.wallet-balance__label { color:var(--tx-muted); font-size:var(--fz-14); font-weight:var(--fw-med); position:relative; z-index:1; }
.wallet-balance__row { display:flex; align-items:center; gap:14px; margin:10px 0 6px; position:relative; z-index:1; }
.wallet-balance b { font-size:46px; line-height:1; font-weight:var(--fw-bold); color:var(--tx-head); letter-spacing:-.01em; }
.wallet-balance__coin { width:38px; height:40px; flex:0 0 auto; }
.wallet-balance__unit { color:var(--tx-muted); font-size:var(--fz-13); position:relative; z-index:1; margin:0; }

/* burn notice — внутри карточки */
.wallet-burn {
  margin-top:18px; align-self:flex-start;
  background:#FDEEEE; color:var(--danger); border-radius:12px;
  padding:10px 14px; display:inline-flex; gap:8px; align-items:center;
  font-size:var(--fz-13); font-weight:var(--fw-med); position:relative; z-index:1;
}
.wallet-burn img { width:16px; height:16px; }

/* QR card */
.wallet-qr {
  flex:0 0 300px; margin:0;
  background:var(--surface); border:1px solid var(--line-soft);
  border-radius:16px; padding:22px 20px;
  display:flex; flex-direction:column; align-items:center; gap:8px; text-align:center;
  box-shadow:var(--shadow-card);
}
.wallet-qr__img { width:176px; height:176px; }
.wallet-qr__code { font-size:22px; font-weight:700; letter-spacing:5px; color:var(--tx-head); background:var(--bg); border-radius:8px; padding:4px 14px; }
.wallet-qr__hint { color:var(--tx-muted); font-size:var(--fz-13); max-width:220px; }

/* loyalty pane */
.wallet-loyalty {
  background:var(--bg); border:1px solid var(--line-soft); border-radius:16px;
  padding:24px 26px; max-width:760px; line-height:1.6;
}
.wallet-loyalty__lead { font-size:var(--fz-15); font-weight:var(--fw-semi); color:var(--tx-head); margin:0 0 16px; }
.wallet-benefits { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.wallet-benefit { display:flex; gap:12px; align-items:flex-start; background:var(--surface); border:1px solid var(--line-soft); border-radius:12px; padding:14px 16px; }
.wallet-benefit__ic { width:34px; height:34px; flex:0 0 auto; border-radius:9px; background:rgba(108,92,231,.10); display:flex; align-items:center; justify-content:center; }
.wallet-benefit__tx { min-width:0; }
.wallet-benefit__tx b { display:block; color:var(--tx-head); font-size:var(--fz-14); font-weight:var(--fw-semi); margin-bottom:2px; }
.wallet-benefit__tx span { color:var(--tx-muted); font-size:var(--fz-13); line-height:1.5; }
.wallet-loyalty__note { color:var(--tx-muted); font-size:var(--fz-13); margin:16px 0 0; }

/* history pane */
.wallet-pane .sect-title { margin-top:0; }
.hist td.empty { text-align:center; color:var(--tx-muted); padding:40px 0; }

@media (max-width:980px) { .wallet-benefits { grid-template-columns:1fr; } }
