/* ===== RESET / ПЕРЕМЕННЫЕ ===== */
:root {
    --bg: #f4f5f7;
    --bg-soft: #ffffff;
    --card-bg: #ffffff;
    --text: #1a202c;
    --text-soft: #64748b;
    --text-muted: #94a3b8;
    --border: #eef0f3;
    --border-soft: #e5e7eb;
    --shadow-1: 0 1px 3px rgba(0,0,0,.04), 0 1px 2px rgba(0,0,0,.03);
    --shadow-2: 0 4px 16px rgba(0,0,0,.06), 0 2px 8px rgba(0,0,0,.04);
    --shadow-3: 0 14px 40px rgba(0,0,0,.08), 0 4px 12px rgba(0,0,0,.06);
    --accent: #2563eb;
    --accent-hover: #1d4ed8;
    --accent-soft: #eff6ff;
    --primary: #2563eb;
    --success: #16a34a;
    --danger: #dc2626;
    --warning: #d97706;
    --info: #0284c7;
    --radius: 16px;
    --radius-sm: 10px;
    --radius-lg: 22px;
    --grad-accent: linear-gradient(135deg, #2563eb, #4f8ef7);
    --header-h: 60px;
    --transition: .2s cubic-bezier(.4,0,.2,1);
}
/* Тёмная тема */
[data-theme="dark"] {
    --bg: #0b1120;
    --bg-soft: #111a2e;
    --card-bg: #111a2e;
    --text: #e6ebf4;
    --text-soft: #9fb0c9;
    --text-muted: #67788f;
    --border: #1a2438;
    --border-soft: #27334d;
    --shadow-1: 0 1px 3px rgba(0,0,0,.35);
    --shadow-2: 0 8px 24px rgba(0,0,0,.45);
    --shadow-3: 0 14px 40px rgba(0,0,0,.55);
    --accent-soft: #172554;
    --grad-accent: linear-gradient(135deg, #2563eb, #4f8ef7);
}
/* ── Пресеты цветовых схем сайта (data-scheme) ── */
[data-scheme="green"] { --accent: #059669; --accent-hover: #047857; --accent-soft: #ecfdf5; --primary: #059669; --grad-accent: linear-gradient(135deg, #059669, #34d399); }
[data-theme="dark"][data-scheme="green"] { --accent-soft: #022c22; }
[data-scheme="violet"] { --accent: #7c3aed; --accent-hover: #6d28d9; --accent-soft: #f5f3ff; --primary: #7c3aed; --grad-accent: linear-gradient(135deg, #7c3aed, #a78bfa); }
[data-theme="dark"][data-scheme="violet"] { --accent-soft: #1e1b4b; }
[data-scheme="ocean"] { --accent: #0891b2; --accent-hover: #0e7490; --accent-soft: #ecfeff; --primary: #0891b2; --grad-accent: linear-gradient(135deg, #0891b2, #22d3ee); }
[data-theme="dark"][data-scheme="ocean"] { --accent-soft: #083344; }
[data-scheme="sunset"] { --accent: #ea580c; --accent-hover: #c2410c; --accent-soft: #fff7ed; --primary: #ea580c; --grad-accent: linear-gradient(135deg, #ea580c, #fb923c); }
[data-theme="dark"][data-scheme="sunset"] { --accent-soft: #431407; }
[data-scheme="dark"] { --accent: #4f8ef7; --accent-hover: #6ea8ff; --accent-soft: #172554; --primary: #4f8ef7; --grad-accent: linear-gradient(135deg, #2563eb, #4f8ef7); }
/* Схема по умолчанию задана в :root */
/* ── Шрифты сайта (data-font) ── */
[data-font="serif"] body, [data-font="serif"] .lp-title, [data-font="serif"] h1, [data-font="serif"] h2, [data-font="serif"] h3 { font-family: Georgia, 'Times New Roman', serif !important; }
[data-font="rounded"] body { font-family: 'Segoe UI', 'SF Pro Rounded', system-ui, -apple-system, sans-serif !important; }
[data-font="rounded"] h1, [data-font="rounded"] h2, [data-font="rounded"] h3, [data-font="rounded"] .lp-title, [data-font="rounded"] .card-title { font-weight: 700; letter-spacing: -.01em; }
/* Акцентная подсветка фокуса и кнопок в выбранной схеме */
:where([data-scheme]) .btn-primary { background: var(--grad-accent); border-color: transparent; }
:where([data-scheme]) .btn-primary:hover { filter: brightness(1.06); }
/* Тёплый ночной режим (уменьшение синего свечения) */
/* Тёплый ночной режим: всегда присутствующий оверлей, появляется плавно (opacity), мягкий янтарный градиент */
body::before.night-fade, html[data-night="warm"] body::before {
    content: '';
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    z-index: 2147480000;
    pointer-events: none;
    mix-blend-mode: multiply;
}
html[data-night="warm"] body::before {
    opacity: 0;
    animation: nightWarmIn .8s ease forwards;
    background: linear-gradient(180deg, rgba(255,155,62,0), rgba(255,150,50,.08) 30%, rgba(255,140,40,.15) 70%, rgba(255,130,30,.20) 100%);
}
@keyframes nightWarmIn { from { opacity: 0; } to { opacity: 1; } }
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { font-size: 16px; scroll-behavior: smooth; }
[data-tip] { position: relative; cursor: help; }
[data-tip]::after,
[data-tip]::before {
    position: absolute; left: 50%; z-index: 9990; opacity: 0; pointer-events: none;
    transition: opacity .16s ease, transform .16s ease;
}
[data-tip]::after {
    content: attr(data-tip);
    bottom: calc(100% + 9px); transform: translateX(-50%) translateY(4px);
    background: #1f2937; color: #f9fafb; font-size: .75rem; font-weight: 500;
    line-height: 1.45; padding: .4rem .65rem; border-radius: 9px;
    max-width: 270px; width: max-content; text-align: left;
    white-space: normal; word-break: break-word;
    box-shadow: 0 8px 24px rgba(0,0,0,.18), 0 2px 6px rgba(0,0,0,.1);
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
[data-tip]::before {
    content: ''; border: 5px solid transparent; border-top-color: #1f2937;
    bottom: calc(100% + 0px); transform: translateX(-50%);
}
[data-tip]:hover::after { opacity: 1; transform: translateX(-50%) translateY(0); }
[data-tip]:hover::before { opacity: 1; transform: translateX(-50%) translateY(0); }

[data-tip-bottom]::after { bottom: auto; top: calc(100% + 9px); transform: translateX(-50%) translateY(-4px); }
[data-tip-bottom]::before { bottom: auto; top: calc(100% + 4px); border-top-color: transparent; border-bottom-color: #1f2937; transform: translateX(-50%); }
[data-tip-bottom]:hover::after { transform: translateX(-50%) translateY(0); }
[data-tip-bottom]:hover::before { transform: translateX(-50%) translateY(0); }

[data-tip-left]::after, [data-tip-left]::before { left: auto; right: 0; transform: none; }
[data-tip-left]::after { right: 0; }
[data-tip-left]::before { display: none; }
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; background: var(--bg); color: var(--text); line-height: 1.55; min-height: 100vh; display: flex; flex-direction: column; -webkit-font-smoothing: antialiased; transition: background .3s, color .3s; }
a { color: var(--accent); text-decoration: none; transition: color .15s; }
a:hover { text-decoration: none; color: var(--accent-hover); }
img { max-width: 100%; height: auto; display: block; }
hr { border: none; border-top: 1px solid #eef0f3; margin: 1rem 0; }

/* ===== HEADER ===== */
header { background: var(--card-bg); border-bottom: 1px solid var(--border); position: sticky; top: 0; z-index: 100; backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }
.header-inner { max-width: 1200px; margin: 0 auto; padding: .35rem .75rem; display: flex; align-items: center; justify-content: space-between; gap: .35rem; min-height: 48px; }
.logo { font-size: .95rem; font-weight: 800; display: flex; align-items: center; gap: .25rem; background: var(--grad-accent); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; flex-shrink: 0; }
.logo span { -webkit-text-fill-color: var(--text); }
.logo:hover span { -webkit-text-fill-color: var(--accent); }
.header-city-badge { display: inline-flex; align-items: center; gap: .2rem; font-size: .68rem; color: var(--text-muted); text-decoration: none; white-space: nowrap; padding: .12rem .35rem; border: 1px solid var(--border-soft); border-radius: 999px; background: var(--card-bg); transition: all .15s; flex-shrink: 0; }
.header-city-badge:hover { color: var(--accent); border-color: var(--accent-soft); background: var(--accent-soft); }
header nav { display: flex; align-items: center; gap: .2rem; font-size: .78rem; }
header nav a { color: var(--text-soft); font-weight: 500; padding: .15rem .12rem; position: relative; white-space: nowrap; }
header nav a:hover { color: var(--accent); }
.nav-add { color: var(--accent) !important; font-weight: 700; font-size: .85rem; margin-right: .25rem; }
.nav-icon, .nav-notif, .nav-met, .nav-admin, .nav-places, .nav-fav, .nav-compare, .nav-cart { font-size: .95rem; }
.nav-label { display: none; }
.user-name { color: var(--text-muted); font-weight: 600; font-size: .75rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 70px; }
.theme-toggle { background: var(--bg-soft); border: 1px solid var(--border-soft); border-radius: 8px; cursor: pointer; font-size: .9rem; padding: .15rem .4rem; transition: background var(--transition), border-color var(--transition); color: var(--text); }
.theme-toggle:hover { background: var(--accent-soft); border-color: var(--accent); }
/* Иконки навигации — аккуратные круглые кнопки с hover */
.nav-fav, .nav-compare, .nav-cart, .nav-msg, .nav-notif, .nav-admin, .nav-places, .nav-met, .nav-add {
    display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px;
    border-radius: 999px; transition: background .15s, transform .15s; flex: 0 0 auto;
}
.nav-fav:hover, .nav-compare:hover, .nav-cart:hover, .nav-msg:hover, .nav-notif:hover, .nav-admin:hover, .nav-places:hover, .nav-met:hover, .nav-add:hover { background: var(--accent-soft); transform: translateY(-1px); }
.nav-logout:hover { color: var(--danger, #dc2626) !important; }

/* Поиск в шапке */
.header-search { display: flex; flex: 1; max-width: 560px; gap: .4rem; }
.header-search input { flex: 1; min-width: 0; padding: .5rem 1rem; border: 1.5px solid var(--border-soft); border-radius: 12px; font-size: .9rem; outline: none; background: var(--bg-soft); transition: border-color .2s, box-shadow .2s; }
.header-city { flex: 0 0 110px !important; }
.header-search input:focus { border-color: var(--accent); background: var(--card-bg); box-shadow: 0 0 0 3px rgba(37,99,235,.12); }
.header-search input::placeholder { color: var(--text-muted); }
.btn-search { padding: .5rem 1rem; border-radius: 12px; }

/* Живой поиск (typeahead) */
.search-wrap { position: relative; flex: 1; display: flex; }
.search-suggest { position: absolute; top: 100%; left: 0; right: 0; background: var(--card-bg); border: 1px solid var(--border-soft); border-radius: 12px; box-shadow: var(--shadow-2); z-index: 200; display: none; max-height: 360px; overflow-y: auto; margin-top: 4px; }
.search-suggest.show { display: block; }
.ss-item { display: flex; align-items: center; gap: .6rem; padding: .55rem .75rem; border-bottom: 1px solid var(--border); transition: background .12s; color: var(--text); font-size: .85rem; }
.ss-item:hover { background: var(--accent-soft); text-decoration: none; }
.ss-item img, .ss-ico { width: 40px; height: 40px; border-radius: 8px; object-fit: cover; flex: 0 0 auto; background: var(--bg-soft); display: flex; align-items: center; justify-content: center; }
.ss-body { flex: 1; min-width: 0; }
.ss-title { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ss-price { font-size: .75rem; color: var(--text-soft); margin-top: .1rem; }
.ss-cat { color: var(--text-soft); font-weight: 500; }
.ss-empty { padding: 1rem; text-align: center; color: var(--text-muted); font-size: .82rem; }
.ss-group { padding: .5rem .75rem .25rem; font-size: .7rem; font-weight: 700; color: var(--text-muted); text-transform: uppercase; letter-spacing: .03em; border-top: 1px solid var(--border); }
.ss-group:first-child { border-top: none; }

/* Гамбургер */
.hamburger { display: none; background: none; border: none; cursor: pointer; padding: .3rem; flex-direction: column; gap: 4px; }
.hamburger span { display: block; width: 20px; height: 2px; background: #333; border-radius: 2px; transition: transform .2s, opacity .2s; }
.header-inner.nav-open .hamburger span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.header-inner.nav-open .hamburger span:nth-child(2) { opacity: 0; }
.header-inner.nav-open .hamburger span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

/* ===== Выпадающие меню в шапке (десктоп) ===== */
.nav-serv-wrap { position: relative; }
.nav-serv-btn { background: none; border: none; cursor: pointer; font: inherit; color: inherit; display: inline-flex; align-items: center; gap: .3rem; padding: .35rem .55rem; border-radius: 10px; }
.nav-serv-btn:hover { background: var(--accent-soft); }
.nav-serv-wrap .services-menu {
    display: none;
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    background: var(--card-bg);
    border: 1px solid var(--border-soft);
    border-radius: 14px;
    box-shadow: var(--shadow-2);
    padding: .4rem;
    min-width: 220px;
    z-index: 2000;
}
.nav-serv-wrap .services-menu.open { display: flex; flex-direction: column; }
.nav-serv-wrap .services-menu a { display: flex; align-items: center; gap: .55rem; padding: .55rem .6rem; border-radius: 10px; color: var(--text); text-decoration: none; font-size: .82rem; white-space: nowrap; }
.nav-serv-wrap .services-menu a:hover { background: var(--accent-soft); }

/* ===== МОБИЛЬНАЯ НАВИГАЦИЯ (гамбургер = полное меню, снизу = быстрый tabbar) ===== */
@media (max-width: 768px) {
    .hamburger { display: flex; }
    .header-inner { flex-wrap: wrap; padding-bottom: .45rem; }
    .header-search { order: 10; max-width: none; flex-basis: 100%; margin-top: .5rem; }
    header nav { display: none; flex-direction: column; position: absolute; top: 100%; left: 0; right: 0; background: var(--card-bg); border-bottom: 1px solid var(--border); padding: .6rem 1rem .9rem; gap: .15rem; box-shadow: var(--shadow-2); z-index: 99; max-height: 70vh; overflow-y: auto; -webkit-overflow-scrolling: touch; }
    header nav a, header nav .nav-serv-wrap > button { display: flex !important; align-items: center; gap: .6rem; width: 100%; padding: .65rem .6rem !important; font-size: .95rem; border-radius: 10px; }
    header nav a:hover { background: var(--accent-soft); }
    header .user-name { padding: .45rem 0; font-size: .9rem; max-width: none; }
    .header-inner.nav-open nav { display: flex; }
    .nav-icon, .nav-notif, .nav-met, .nav-admin, .nav-places, .nav-fav, .nav-compare, .nav-cart { font-size: 1.1rem; }
    .nav-label { display: inline; font-size: .9rem; margin-left: .35rem; font-weight: 500; }
    .nav-serv-wrap { width: 100%; }
    .nav-serv-wrap .services-menu { position: static; transform: none; opacity: 1; pointer-events: auto; display: none; box-shadow: none; background: transparent; border: none; padding: 0 0 0 .9rem; margin-top: .1rem; width: 100%; min-width: 0; }
    .nav-serv-wrap .services-menu.open { display: flex; transform: none; }
    .nav-serv-wrap .services-menu a { width: 100%; padding: .55rem .6rem; }
    header nav .nav-serv-btn { justify-content: space-between; background: none; border: none; }
    header nav .theme-toggle { width: 100%; display: flex; align-items: center; gap: .6rem; padding: .65rem .6rem; border-radius: 10px; font-size: .95rem; justify-content: flex-start; }
    .notif-badge { top: -4px; right: -6px; }
    /* Десктопные FAB не нужны при нижнем tabbar */
    .go-top, .taxi-float-btn { display: none; }
    /* Нижний tabbar */
    .mobile-tabbar { display: flex; }
    main { padding-bottom: 5rem; }
}

.mobile-tabbar { display: none; position: fixed; bottom: 0; left: 0; right: 0; background: var(--card-bg); border-top: 1px solid var(--border); padding: .35rem 0 env(safe-area-inset-bottom, .35rem); z-index: 9999; justify-content: space-around; align-items: center; box-shadow: 0 -2px 12px rgba(0,0,0,.06); backdrop-filter: blur(12px); }
.mob-tab { display: flex; flex-direction: column; align-items: center; gap: .1rem; padding: .25rem .35rem; text-decoration: none; color: var(--text-muted); transition: color var(--transition); min-width: 56px; border-radius: 8px; }
.mob-tab[data-active="1"] { color: var(--accent); }
.mob-tab[data-active="1"] .mob-tab-ico { transform: translateY(-2px); }
.mob-tab[data-active="1"]::after { content:''; position:absolute; bottom:-.15rem; left:50%; transform:translateX(-50%); width:24px; height:3px; border-radius:99px; background: var(--accent); }
.mob-tab { position: relative; }
.mob-tab:hover { color: var(--accent); text-decoration: none; }
.mob-tab-ico { font-size: 1.3rem; line-height: 1; }
.mob-add { font-size: 1.6rem; font-weight: 700; background: var(--accent); color: #fff; width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin-top: -.3rem; box-shadow: 0 2px 8px rgba(37,99,235,.35); }
.mob-tab-lbl { font-size: .6rem; font-weight: 600; text-transform: uppercase; letter-spacing: .02em; }

/* ===== MAIN ===== */
main { max-width: 1200px; margin: 0 auto; padding: 1.75rem 1.25rem; width: 100%; flex: 1; }
.container { max-width: 1200px; margin: 0 auto; }

/* ===== HERO ===== */
.hero-alt { position: relative; text-align: center; padding: 4.5rem 1.5rem; border-radius: var(--radius-lg); overflow: hidden; margin-bottom: 2.5rem; background: linear-gradient(145deg, #0b2a6b 0%, #1e40af 45%, #2563eb 100%); box-shadow: 0 16px 48px rgba(30,64,175,.35); animation: fadeUp .5s ease-out; }
.hero-alt::before { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse at 20% 30%, rgba(255,255,255,.08) 0%, transparent 50%), radial-gradient(ellipse at 90% 25%, rgba(147,197,253,.15) 0%, transparent 50%); }
.hero-alt::after { content: ''; position: absolute; inset: 0; background: url("data:image/svg+xml,%3Csvg width='72' height='72' viewBox='0 0 72 72' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23ffffff' fill-opacity='0.03'%3E%3Cpath d='M36 38v-4h-2v4h-6v2h6v6h2v-6h6v-2h-6zm0-36V0h-2v4h-6v2h6v6h2V6h6V4h-6zM8 38v-4H6v4H0v2h6v6h2v-6h6v-2H8zM8 6V2H6v4H0v2h6v6h2V8h6V6H8z'/%3E%3C/g%3E%3C/svg%3E"); opacity: .5; }
.hero-content { position: relative; z-index: 2; animation: fadeUp .7s ease-out .1s both; }
.hero-content h1 { font-size: 2.6rem; font-weight: 800; color: #fff; margin-bottom: .7rem; letter-spacing: -.02em; line-height: 1.15; }
.hero-sub { color: rgba(255,255,255,.85); font-size: 1.05rem; max-width: 650px; margin: 0 auto 1.5rem; line-height: 1.65; }
.hero-features { display: flex; gap: .5rem; justify-content: center; flex-wrap: wrap; }
.hero-feat { background: rgba(255,255,255,.1); color: #fff; padding: .5rem 1.1rem; border-radius: 999px; font-size: .82rem; backdrop-filter: blur(8px); border: 1px solid rgba(255,255,255,.08); transition: all .25s; }
.hero-feat:hover { background: rgba(255,255,255,.2); transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,.15); }
.hero-counters { display: flex; gap: 2.5rem; justify-content: center; margin-top: 1.75rem; flex-wrap: wrap; }
.hero-counter { color: rgba(255,255,255,.7); font-size: .8rem; }
.hero-counter strong { font-size: 1.4rem; color: #fff; display: block; font-weight: 800; letter-spacing: -.01em; }
.error-page h1 { font-size: 4rem; color: var(--accent); }

@keyframes fadeUp { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes shimmer { 0% { background-position: -400px 0; } 100% { background-position: 400px 0; } }

/* ===== ПРОМО/ПРОДВИЖЕНИЕ ===== */
.promo-badge { display: inline-block; padding: .15rem .5rem; border-radius: 999px; font-size: .68rem; font-weight: 700; color: #fff; z-index: 4; }
.card-featured { border: 2px solid #f97316; box-shadow: 0 4px 16px rgba(249,115,22,.2); }
.card-vip { border: 2px solid rgba(124,58,237,.55); box-shadow: 0 4px 16px rgba(124,58,237,.18); background: linear-gradient(180deg, rgba(124,58,237,.05), var(--card-bg) 60%); }
.card-vip .card-price { color: #6d28d9; }
.card-vip .card-title { color: #4c1d95; }
.featured-block { margin: 1.5rem 0; }
.featured-block h2 { font-size: 1.2rem; margin-bottom: 1rem; }
.promo-wrap { }
.promo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 1rem; }
.promo-card { background: var(--card-bg); border: 1px solid var(--border-soft); border-radius: 14px; padding: 1.25rem; text-align: center; box-shadow: var(--shadow-1); transition: .2s; }
.promo-card:hover { box-shadow: var(--shadow-2); transform: translateY(-2px); }
.promo-card-active { border: 2px solid #16a34a; }
.promo-card-icon { font-size: 2.2rem; margin-bottom: .4rem; }
.promo-card h3 { font-size: 1rem; color: var(--text); margin-bottom: .3rem; }
.promo-card-price { font-size: 1.5rem; font-weight: 800; color: var(--text); }
.promo-card-days { color: var(--text-muted); font-size: .8rem; margin-bottom: .4rem; }
.promo-card-desc { font-size: .8rem; color: var(--text-soft); line-height: 1.5; margin-bottom: .9rem; }
.promo-item { display: flex; align-items: center; gap: .6rem; padding: .4rem 0; font-size: .85rem; }
.promo-item-icon { font-size: 1.2rem; }
.promo-item-label { font-weight: 600; color: var(--text); flex: 1; }
.promo-item-date { color: var(--text-muted); font-size: .78rem; }

/* ===== TRUST FEATURES (инфо-карточки) ===== */
.trust-block { margin: 2.5rem 0; }
.trust-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 1.25rem; }
.trust-card { background: var(--card-bg); border-radius: 20px; padding: 1.75rem; box-shadow: 0 1px 4px rgba(0,0,0,.04); border: 1px solid rgba(0,0,0,.04); transition: all .35s cubic-bezier(.25,.46,.45,.94); animation: fadeUp .5s ease-out; position: relative; overflow: hidden; }
.trust-card::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 3px; background: var(--accent, #2563eb); transform: scaleX(0); transform-origin: left; transition: transform .4s; }
.trust-card:hover { box-shadow: 0 16px 48px rgba(0,0,0,.1); transform: translateY(-4px); border-color: var(--accent, #2563eb); }
.trust-card:hover::after { transform: scaleX(1); }
.trust-icon { display: inline-block; font-size: 2.5rem; margin-bottom: .85rem; transition: all .35s; }
.trust-card:hover .trust-icon { transform: scale(1.1) rotate(-5deg); }
.trust-card h3 { font-size: 1.05rem; font-weight: 700; color: var(--text); margin-bottom: .45rem; }
.trust-card p { font-size: .85rem; color: var(--text-soft); line-height: 1.6; }

/* ===== КАТАЛОГ С ФИЛЬТРАМИ ===== */
.catalog-layout { display: grid; grid-template-columns: 240px 1fr; gap: 1rem; align-items: start; }
.catalog-layout.home-layout { display: grid; grid-template-columns: 220px 1fr; gap: 1.25rem; align-items: start; }
.home-sidebar .filter-title { font-size: .72rem; color: var(--text-muted); text-transform: uppercase; letter-spacing: .03em; margin-bottom: .35rem; }
.home-sidebar a:hover { background: var(--accent-soft) !important; color: var(--accent) !important; }
.catalog-main { min-width: 0; }
.filter-sidebar { background: var(--card-bg); border-radius: 12px; padding: .75rem .85rem; box-shadow: var(--shadow-1); border: 1px solid var(--border-soft); font-size: .8rem; position: sticky; top: 60px; display: flex; flex-direction: column; max-height: calc(100vh - 76px); overflow-y: auto; }
.sidebar-ad { position: sticky; bottom: 0; }
.sidebar-ad-wrap { margin-top: auto; padding-top: .6rem; }
.sidebar-ad .ad-block img { width: 100%; height: 200px; object-fit: cover; display: block; border-radius: 12px; }
.filter-panel { display: flex; flex-direction: column; gap: .15rem; }
.filter-section { border-bottom: 1px solid var(--border-soft); padding: .4rem 0; }
.filter-section:last-child { border-bottom: none; }
.filter-title { font-size: .75rem; font-weight: 700; color: var(--text-soft); margin-bottom: .3rem; text-transform: uppercase; letter-spacing: .03em; }
.filter-range { display: flex; align-items: center; gap: .3rem; }
.filter-range input { flex: 1; min-width: 0; padding: .3rem .4rem; border: 1.5px solid var(--border-soft); border-radius: 6px; font-size: .75rem; outline: none; background: var(--bg-soft); color: var(--text); }
.filter-range input:focus { border-color: var(--accent); box-shadow: 0 0 0 2px rgba(37,99,235,.12); }
.filter-range.active input { border-color: var(--accent); }
.filter-range .unit { font-size: .68rem; color: var(--text-muted); white-space: nowrap; }
select.active { border-color: var(--accent) !important; background: var(--accent-soft) !important; color: var(--accent) !important; }
.filter-check { display: flex; align-items: center; gap: .35rem; font-size: .78rem; color: var(--text-soft); padding: .15rem 0; cursor: pointer; transition: color .15s; }
/* Чипы активных фильтров */
.filter-chips { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; margin: .35rem 0 .75rem; }
.filter-chip { display: inline-flex; align-items: center; gap: .3rem; padding: .28rem .6rem; border: 1px solid var(--accent-soft); border-radius: 999px; font-size: .75rem; font-weight: 600; color: var(--accent); background: var(--accent-soft); text-decoration: none; transition: all .15s; }
.filter-chip:hover { background: var(--accent); color: #fff; border-color: var(--accent); text-decoration: none; }
.filter-chip-x { opacity: .6; font-size: .7rem; font-weight: 700; }
.filter-chip-clear { font-size: .75rem; color: var(--text-muted); text-decoration: none; border-bottom: 1px dashed; }
.filter-chip-clear:hover { color: var(--danger, #dc2626); }
.filter-check:hover { color: var(--accent); }
.filter-check input { accent-color: var(--accent); width: 14px; height: 14px; }
.filter-form .btn { margin-top: .4rem; border-radius: 8px; font-size: .78rem; padding: .4rem .8rem; }

/* ===== CATEGORIES ON HOMEPAGE (grid cards) ===== */
.cats-block { margin: 1.5rem 0 2rem; }
.cats-head { display: flex; align-items: baseline; gap: .7rem; flex-wrap: wrap; margin-bottom: .95rem; }
.cats-head-title { font-size: 1.3rem; font-weight: 800; color: var(--text); letter-spacing: -.01em; }
.cats-head-sub { font-size: .78rem; color: var(--text-muted); }
.cats-head-all { margin-left: auto; font-size: .8rem; font-weight: 600; color: var(--accent); text-decoration: none; padding: .35rem .8rem; border-radius: 999px; background: var(--accent-soft); transition: all .15s; }
.cats-head-all:hover { background: var(--accent); color: #fff; text-decoration: none; }
.cats-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .75rem; }
.cat-card { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .18rem; padding: .65rem .5rem .6rem; background: var(--card-bg); border-radius: 12px; border: 1.5px solid var(--border); box-shadow: var(--shadow-1); transition: transform .2s, box-shadow .2s, border-color .2s; text-decoration: none; text-align: center; position: relative; overflow: hidden; min-height: 0; }
.cat-card::before { content: ''; position: absolute; inset: 0; background: radial-gradient(120px 80px at 50% 0%, var(--accent-soft), transparent 70%); opacity: 0; transition: opacity .25s; pointer-events: none; }
.cat-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-2); border-color: var(--accent); text-decoration: none; }
.cat-card:hover::before { opacity: 1; }
.cat-card:active { transform: translateY(-1px); }
.cat-card.active { border-color: var(--accent); background: var(--accent-soft); }
.cat-card-icon { font-size: 1.35rem; line-height: 1; width: 34px; height: 34px; display: flex; align-items: center; justify-content: center; background: var(--bg-soft); border-radius: 10px; margin-bottom: .1rem; transition: transform .2s, background .2s; }
.cat-card:hover .cat-card-icon { transform: scale(1.08) translateY(-2px); background: var(--accent-soft); }
.cat-card-icon-all { font-size: 1.5rem; }
.cat-card-title { font-size: .82rem; font-weight: 600; color: var(--text); line-height: 1.3; }
.cat-card-count { font-size: .7rem; color: var(--text-muted); font-weight: 500; }

/* ===== CATEGORY BANNER (на странице категории) ===== */
.cat-banner { display: flex; align-items: flex-start; gap: 1.25rem; background: linear-gradient(145deg, var(--card-bg), var(--bg-soft)); border-radius: var(--radius-lg); padding: 1.5rem 1.75rem 1.4rem; box-shadow: var(--shadow-1); margin-bottom: 1.5rem; border: 1px solid var(--border-soft); }
.cat-banner-icon { font-size: 2.6rem; flex: 0 0 auto; width: 64px; height: 64px; display: flex; align-items: center; justify-content: center; background: var(--accent-soft); border-radius: 16px; box-shadow: inset 0 0 0 1px var(--accent); }
.cat-banner-body { flex: 1; min-width: 0; }
.cat-banner-crumbs { display: flex; flex-wrap: wrap; gap: .25rem; font-size: .72rem; color: var(--text-muted); margin-bottom: .3rem; }
.cat-banner-crumb { color: var(--text-muted); text-decoration: none; }
.cat-banner-crumb:hover { color: var(--accent); }
.cat-banner-sep { opacity: .5; }
.cat-banner-title { margin: 0; font-size: 1.5rem; font-weight: 800; color: var(--text); letter-spacing: -.015em; line-height: 1.2; }
.cat-banner-count { font-size: .78rem; color: var(--text-muted); margin-top: .15rem; font-weight: 500; }
.cat-banner-links { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .65rem; }
.cat-banner-link { display: inline-flex; align-items: center; gap: .3rem; padding: .35rem .7rem; border-radius: 999px; font-size: .8rem; font-weight: 600; color: var(--accent); background: var(--card-bg); border: 1px solid var(--border-soft); transition: all .15s; }
.cat-banner-link:hover { background: var(--accent); border-color: var(--accent); color: #fff; text-decoration: none; transform: translateY(-1px); box-shadow: 0 3px 8px rgba(37,99,235,.25); }
.cat-banner-link-cnt { font-size: .68rem; font-weight: 700; background: var(--bg-soft); color: var(--text-muted); border-radius: 999px; padding: .02rem .4rem; }
.cat-banner-link:hover .cat-banner-link-cnt { background: rgba(255,255,255,.25); color: #fff; }
.cat-description { background: var(--card-bg); border-radius: var(--radius); padding: 1rem 1.25rem; margin: 1.5rem 0 0; font-size: .9rem; color: var(--text-soft); line-height: 1.65; border: 1px solid var(--border-soft); }

/* ===== ВЕНЮ BLOCK ON HOMEPAGE ===== */
.blog-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; }
.blog-card { display: block; background: var(--card-bg); border-radius: 14px; border: 1px solid var(--border-soft); overflow: hidden; box-shadow: var(--shadow-1); transition: all .2s; text-decoration: none; }
.blog-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-2); border-color: var(--accent); text-decoration: none; }
.blog-card-photo { height: 170px; background: var(--bg-soft) center/cover no-repeat; }
.blog-card-body { padding: .9rem 1rem; }
.blog-card-meta { font-size: .72rem; color: var(--text-muted); margin-bottom: .3rem; }
.blog-card-title { font-size: 1rem; font-weight: 700; color: var(--text); line-height: 1.35; }
.blog-card-excerpt { font-size: .8rem; color: var(--text-soft); margin-top: .35rem; }
.blog-post-card { background: var(--card-bg); border-radius: 16px; padding: 1.5rem 1.75rem; box-shadow: var(--shadow-1); border: 1px solid var(--border-soft); }
.blog-post-meta { font-size: .78rem; color: var(--text-muted); margin-bottom: .4rem; }
.blog-post-card h1 { font-size: 1.7rem; line-height: 1.3; margin: 0 0 .5rem; }
.blog-post-content { font-size: 1rem; line-height: 1.7; color: var(--text-soft); white-space: pre-wrap; }
.stories-block { margin-bottom: 1.5rem; }
.stories-row { display: flex; gap: .6rem; overflow-x: auto; padding: .2rem .1rem .6rem; -webkit-overflow-scrolling: touch; }
.stories-row::-webkit-scrollbar { display: none; }
.story-item { flex: 0 0 78px; height: 128px; border-radius: 16px; background: var(--bg-soft) center/cover no-repeat; position: relative; border: 2px solid var(--border-soft); cursor: pointer; padding: 0; overflow: hidden; transition: border-color .15s, transform .15s; }
.story-item:hover { border-color: var(--accent); transform: translateY(-2px); }
.story-item::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 40%, rgba(0,0,0,.55)); }
.story-item-name { position: absolute; left: .3rem; right: .3rem; bottom: .3rem; z-index: 2; color: #fff; font-size: .62rem; font-weight: 700; text-align: center; text-shadow: 0 1px 3px rgba(0,0,0,.6); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.story-modal { position: fixed; inset: 0; z-index: 2000; background: rgba(10,15,30,.85); display: none; align-items: center; justify-content: center; padding: 1rem; }
.story-modal.open { display: flex; }
.story-modal-card { position: relative; max-width: 460px; width: 100%; }
.story-close { position: absolute; top: -2.2rem; right: 0; background: rgba(255,255,255,.15); color: #fff; border: none; border-radius: 50%; width: 30px; height: 30px; font-size: .9rem; cursor: pointer; }
.story-modal-title { color: #fff; font-size: 1rem; font-weight: 700; margin-top: .6rem; }
.story-modal-sub { color: rgba(255,255,255,.7); font-size: .78rem; margin-top: .1rem; }
.venues-block { margin-bottom: 2rem; }
.venues-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: .75rem; }
.venue-card { display: block; padding: .85rem; background: var(--card-bg); border-radius: var(--radius); box-shadow: var(--shadow-1); border: 1.5px solid var(--border); transition: all .25s; text-decoration: none; }
.venue-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-2); border-color: var(--accent); text-decoration: none; }
.venue-card-initial { width: 40px; height: 40px; border-radius: 10px; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: 700; font-size: 1.1rem; margin-bottom: .45rem; }
.venue-card-name { font-weight: 600; font-size: .9rem; color: var(--text); margin-bottom: .2rem; }
.venue-card-addr { font-size: .75rem; color: var(--text-muted); }

/* ===== CATEGORIES (classic pills, на странице категории) ===== */
.cats { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1rem 0; justify-content: center; }
.cat { display: flex; align-items: center; gap: .4rem; padding: .55rem 1rem; background: var(--card-bg); border-radius: 999px; border: 1px solid var(--border-soft); font-size: .875rem; font-weight: 500; color: var(--text-soft); transition: all .2s; box-shadow: 0 1px 2px rgba(0,0,0,.03); }
.cat:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0,0,0,.08); border-color: var(--accent); text-decoration: none; }
.cat.active { background: var(--accent); color: #fff; border-color: var(--accent); box-shadow: 0 4px 12px rgba(37,99,235,.25); }
.cat-icon { font-size: 1.1rem; flex: 0 0 auto; }
.cat-title-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ===== SUBCATEGORIES ===== */
.subcats { display: flex; flex-wrap: wrap; gap: .45rem; margin: .25rem 0 .75rem; justify-content: center; }
.subcat { display: inline-flex; align-items: center; gap: .3rem; padding: .4rem .9rem; background: var(--card-bg); border: 1px solid var(--border-soft); border-radius: 10px; font-size: .8rem; color: var(--text-soft); transition: all .15s; box-shadow: var(--shadow-1); }
.subcat:hover { background: var(--bg-soft); border-color: var(--accent); color: var(--accent); transform: translateY(-1px); text-decoration: none; }
.subcat.active { background: var(--accent-soft); border-color: var(--accent); color: var(--accent); font-weight: 600; }

/* ===== RESULT TITLE ===== */
.result-title { font-size: 1rem; font-weight: 700; color: var(--text-soft); }
.result-bar { display: flex; align-items: center; gap: .75rem; margin: 0 0 1rem; flex-wrap: wrap; }
.query-badge { display: inline-flex; align-items: center; gap: .35rem; background: #eef2ff; padding: .25rem .7rem; border-radius: 999px; font-size: .8rem; color: #4338ca; font-weight: 500; border: 1px solid #c7d2fe; }
.query-badge a { color: #6366f1; font-weight: 700; margin-left: .2rem; }
.sort-ctrl { display: flex; align-items: center; gap: .35rem; font-size: .8rem; }
.sort-label { color: var(--text-muted); font-weight: 500; }
.sort-btn { padding: .25rem .6rem; border-radius: 8px; color: var(--text-soft); font-weight: 500; transition: all .15s; }
.sort-btn:hover { background: var(--bg-soft); color: var(--text-soft); text-decoration: none; }
.sort-btn.active { background: #2563eb; color: #fff; box-shadow: 0 2px 6px rgba(37,99,235,.25); }
.result-count { color: var(--text-muted); font-size: .8rem; font-weight: 500; margin-left: auto; }

/* ===== SEARCH ===== */
.search { display: flex; gap: .5rem; margin: 1.5rem 0; }
.search input { flex: 1; padding: .65rem 1.1rem; border: 2px solid #e5e7eb; border-radius: 12px; font-size: 1rem; outline: none; background: var(--card-bg); transition: border-color .2s, box-shadow .2s; }
.search input:focus { border-color: #2563eb; box-shadow: 0 0 0 3px rgba(37,99,235,.12); }

/* ===== GRID ===== */
.grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; align-items: start; }
.grid.grid-list { grid-template-columns: 1fr; }
.grid.grid-list > .card-wrap .card { flex-direction: row; }
.grid.grid-list > .card-wrap .card-photo { width: 180px; height: 140px; flex: 0 0 auto; }
.grid.grid-list > .card-wrap .card-body { padding: .7rem .9rem; }
.grid > .card-wrap { width: 100%; min-width: 0; }
.empty { grid-column: 1 / -1; text-align: center; padding: 3.5rem 0; color: var(--text-muted); }
.empty-icon { font-size: 2.5rem; margin-bottom: .5rem; opacity: .6; }

/* ===== СЛАЙДЕР КАТЕГОРИЙ НА ГЛАВНОЙ ===== */
.home-slider-block { margin-bottom: 2rem; }
.home-slider { position: relative; display: flex; align-items: center; gap: .4rem; }
.home-slider-track { display: flex; gap: .75rem; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scrollbar-width: thin; padding: .25rem 0; flex: 1; }
.home-slider-item { flex: 0 0 280px; scroll-snap-align: start; }
.home-slider-item .card-wrap { width: 100%; }
.slider-arrow { flex: 0 0 auto; width: 36px; height: 36px; border-radius: 50%; background: var(--card-bg); border: 1px solid var(--border-soft); font-size: 1.2rem; color: var(--text); cursor: pointer; display: flex; align-items: center; justify-content: center; box-shadow: var(--shadow-1); transition: all .2s; z-index: 2; }
.slider-arrow:hover { background: var(--accent-soft); border-color: var(--accent); color: var(--accent); }
@media (max-width: 768px) { .slider-arrow { display: none; } .home-slider-item { flex: 0 0 220px; } }

/* ===== CARD ===== */
.card-wrap { animation: fadeUp .45s ease-out; position: relative; }
.card-wrap:nth-child(2n) { animation-delay: .04s; }
.card-wrap:nth-child(3n) { animation-delay: .08s; }
.card { min-width: 0; display: flex; flex-direction: column; background: var(--card-bg); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow-1); border: 1px solid var(--border); height: 100%; transition: all .3s var(--transition); position: relative; }
.card:hover { box-shadow: var(--shadow-2); transform: translateY(-4px); border-color: var(--accent); }
.card-photo { height: 200px; background: linear-gradient(145deg, var(--bg-soft), var(--border-soft)); display: flex; align-items: center; justify-content: center; overflow: hidden; position: relative; flex: 0 0 auto; }
.card-photo::before { content: ''; position: absolute; inset: 0; z-index: 1; background: linear-gradient(100deg, transparent 40%, rgba(255,255,255,.35) 50%, transparent 60%); background-size: 200% 100%; animation: cardShimmer 1.4s infinite; pointer-events: none; opacity: .6; }
.card-photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--transition), opacity .3s ease; position: relative; z-index: 2; opacity: 1; }
.card-photo img.is-loaded { opacity: 1; }
@keyframes cardShimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
.card-photo.no-shimmer::before { display: none; }
.card:hover .card-photo img { transform: scale(1.08) rotate(-.5deg); }
.card-photo::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 50%, rgba(0,0,0,.06)); pointer-events: none; }
.card-photo-count { position: absolute; bottom: .5rem; left: .5rem; background: rgba(15,23,42,.7); color: #fff; font-size: .68rem; padding: .15rem .55rem; border-radius: 8px; backdrop-filter: blur(8px); font-weight: 600; }
.no-photo { font-size: 3rem; opacity: .3; transition: all .4s; }
.no-photo-color { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .35rem; width: 100%; height: 100%; font-size: 3.2rem; text-shadow: 0 2px 12px rgba(0,0,0,.25); }
.no-photo-color .no-photo-hint { font-size: .7rem; font-weight: 600; letter-spacing: .03em; text-transform: uppercase; opacity: .85; }
.card:hover .no-photo { transform: scale(1.2) rotate(-5deg); }
.card-body { padding: .9rem 1rem .85rem; display: flex; flex-direction: column; flex: 1; min-height: 160px; gap: .25rem; }
.card-price { font-size: 1.3rem; font-weight: 800; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; letter-spacing: -.02em; }
.card-price-period { font-size: .72rem; color: var(--text-muted); margin-top: -.05rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.card-price-type { font-size: .68rem; font-weight: 500; color: var(--text-muted); margin-left: .35rem; letter-spacing: 0; }

/* Лёгкий skeleton при загрузке каталога (AJAX) */
.skeleton-card { pointer-events: none; }
.skeleton-photo, .skeleton-line { background: linear-gradient(90deg, #eef0f3 25%, var(--border-soft) 50%, #eef0f3 75%); background-size: 200% 100%; animation: shimmer 1.4s infinite; border-radius: 8px; }
.skeleton-photo { height: 200px; border-radius: var(--radius) var(--radius) 0 0; }
.skeleton-line { height: 12px; margin: .6rem 1rem 0; }
.skeleton-line.short { width: 40%; }
.card-title { font-size: .875rem; color: var(--text-soft); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.45; transition: color var(--transition); }
.card:hover .card-title { color: var(--accent); }
.card-specs { display: flex; flex-wrap: wrap; gap: .2rem .4rem; min-height: 0; max-height: 2.6em; overflow: hidden; }
.card-spec { font-size: .7rem; color: var(--text-muted); background: var(--bg-soft); padding: .1rem .4rem; border-radius: 6px; white-space: nowrap; border: 1px solid var(--border-soft); max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
.card-spec-rent { background: rgba(245,158,11,.1); border-color: rgba(245,158,11,.3); color: #b45309; }
/* Описание в карточке объявления: единая мягкая подложка под текстом */
.card-desc { font-size: .78rem; color: var(--text-soft); line-height: 1.45; margin: .35rem 0 0; padding: .4rem .55rem; background: var(--bg-soft); border-radius: 8px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; height: calc(1.45em * 2 + .8rem + 2px); box-sizing: border-box; min-height: calc(1.45em * 2 + .8rem + 2px); }

/* ===== Плитка товара из магазина (блок «Свежие товары из магазинов») — единый стиль как у .card ===== */
.store-prod-card { flex: 0 0 200px; scroll-snap-align: start; display: flex; flex-direction: column; background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow-1); text-decoration: none; color: inherit; height: 100%; transition: all .3s var(--transition); position: relative; }
.store-prod-card:hover { box-shadow: var(--shadow-2); transform: translateY(-4px); border-color: var(--accent); }
.store-prod-photo { width: 100%; height: 200px; flex: 0 0 auto; display: flex; align-items: center; justify-content: center; overflow: hidden; background: linear-gradient(145deg, var(--bg-soft), var(--border-soft)); position: relative; }
.store-prod-photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--transition); }
.store-prod-card:hover .store-prod-photo img { transform: scale(1.08) rotate(-.5deg); }
.store-prod-photo-empty { font-size: 2rem; color: var(--text-muted); }
.store-prod-body { padding: .55rem .7rem; flex: 1; display: flex; flex-direction: column; gap: .25rem; min-width: 0; }
.store-prod-title { font-size: .875rem; font-weight: 600; line-height: 1.25; color: var(--text-soft); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; transition: color var(--transition); }
.store-prod-card:hover .store-prod-title { color: var(--accent); }
.store-prod-shop { font-size: .68rem; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.store-prod-price { margin-top: auto; padding-top: .35rem; color: var(--accent); font-weight: 800; }
.card-seller { display: flex; align-items: center; gap: .3rem; font-size: .78rem; color: var(--text-soft); margin-top: .25rem; }
.seller-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent); flex: 0 0 auto; }
.seller-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.seller-name .verified { color: var(--success); font-weight: 700; }
.card-meta { display: flex; align-items: center; justify-content: space-between; font-size: .72rem; color: var(--text-muted); margin-top: .15rem; flex: 0 0 auto; }
.card-cat { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 70%; }
.card-date { flex-shrink: 0; }

/* ===== BADGE ===== */
.badge-secure { display: inline-flex; align-items: center; gap: .25rem; background: linear-gradient(135deg, #dbeafe, #bfdbfe); color: #1d4ed8; padding: .2rem .55rem; border-radius: 999px; font-size: .7rem; font-weight: 600; box-shadow: 0 1px 2px rgba(37,99,235,.12); }
.badge-free { font-weight: 700; color: var(--success, #16a34a); font-size: 1rem; }

/* ===== ПЛАВАЮЩИЕ КНОПКИ ===== */
.go-top { position: fixed; bottom: 5.5rem; right: 1.5rem; width: 52px; height: 52px; border-radius: 50%; background: var(--accent); color: #fff; border: none; cursor: pointer; font-size: 1.4rem; box-shadow: 0 6px 20px rgba(37,99,235,.4); transition: all .25s; z-index: 900; display: flex; align-items: center; justify-content: center; opacity: 0; visibility: hidden; transform: translateY(10px); }
.go-top.show { opacity: 1; visibility: visible; transform: translateY(0); }
.go-top:hover { background: var(--accent-hover); transform: translateY(-2px); }
.taxi-float-btn { position: fixed; bottom: 5.5rem; left: 1.25rem; width: 54px; height: 54px; border-radius: 50%; background: linear-gradient(135deg, #f59e0b, #d97706); color: #fff; border: none; cursor: pointer; font-size: 1.5rem; box-shadow: 0 8px 24px rgba(217,119,6,.45); transition: all .25s; z-index: 910; display: flex; align-items: center; justify-content: center; animation: taxiPulse 2.5s infinite; }
.taxi-float-btn:hover { transform: scale(1.12) translateY(-2px); box-shadow: 0 10px 28px rgba(217,119,6,.55); }
@keyframes taxiPulse { 0%,100% { box-shadow: 0 8px 24px rgba(37,99,235,.45); } 50% { box-shadow: 0 8px 24px rgba(37,99,235,.75), 0 0 0 8px rgba(37,99,235,.1); } }
@media (max-width: 600px) { .taxi-float-btn { width: 48px; height: 48px; font-size: 1.3rem; bottom: 4.5rem; left: 1rem; } }

/* Плавное появление карточек в сетке */
.grid .card-wrap { transition: all .3s; }

/* ===== BUTTONS ===== */
.btn, button { cursor: pointer; font-family: inherit; font-size: inherit; line-height: 1; }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .4rem; padding: .55rem 1.25rem; border: none; border-radius: 12px; font-weight: 600; font-size: .875rem; transition: all var(--transition); text-decoration: none; white-space: nowrap; position: relative; overflow: hidden; }
.btn::after { content: ''; position: absolute; inset: 0; background: rgba(255,255,255,0); transition: background var(--transition); }
.btn:hover::after { background: rgba(255,255,255,.1); }
.btn-primary { background: var(--grad-accent); color: #fff; box-shadow: 0 2px 8px rgba(37,99,235,.25); }
.btn-primary:hover { box-shadow: 0 6px 20px rgba(37,99,235,.35); transform: translateY(-1px); color: #fff; }
.btn-success { background: linear-gradient(135deg, #16a34a, #15803d); color: #fff; box-shadow: 0 2px 8px rgba(22,163,74,.25); }
.btn-success:hover { box-shadow: 0 6px 20px rgba(22,163,74,.35); transform: translateY(-1px); color: #fff; }
.btn-danger { background: linear-gradient(135deg, #dc2626, #b91c1c); color: #fff; box-shadow: 0 2px 8px rgba(220,38,38,.25); }
.btn-danger:hover { box-shadow: 0 6px 20px rgba(220,38,38,.35); transform: translateY(-1px); color: #fff; }
.btn-ghost { background: transparent; color: var(--text-soft); border: 1.5px solid var(--border-soft); }
.btn-ghost:hover { background: var(--bg-soft); border-color: var(--accent); color: var(--accent); transform: translateY(-1px); }
.btn-ghost::after { display: none; }
.btn-warning { background: linear-gradient(135deg, #f59e0b, #d97706); color: #fff; box-shadow: 0 2px 8px rgba(245,158,11,.3); }
.btn-warning:hover { box-shadow: 0 6px 20px rgba(245,158,11,.4); transform: translateY(-1px); color: #fff; }
.btn-lg { padding: .75rem 2rem; font-size: 1rem; border-radius: 14px; }
.btn-sm { padding: .35rem .9rem; font-size: .8rem; border-radius: 8px; }
.btn-block { width: 100%; }
.flex-1 { flex: 1; min-width: 0; }
.lp-cta-row { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; margin-top: .6rem; }
.lp-cta-row .btn { width: 100%; justify-content: center; }
.cta-label-short { display: none; }
@media (max-width: 768px) { .cta-label-full { display: none; } .cta-label-short { display: inline; } }
.lp-disclaimer { font-size: .75rem; color: var(--text-muted); margin-top: .5rem; }

/* Шаги безопасной сделки */
.lp-steps { display: flex; flex-direction: column; gap: .4rem; margin-bottom: 1rem; text-align: left; }
.lp-step { display: flex; align-items: center; gap: .6rem; font-size: .82rem; color: var(--text-soft); }
.lp-step-num { width: 24px; height: 24px; border-radius: 50%; background: #dbeafe; color: #1d4ed8; font-size: .75rem; font-weight: 700; display: flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.lp-progress { height: 6px; background: #e5e7eb; border-radius: 99px; margin-bottom: .75rem; overflow: hidden; }
.lp-progress-fill { height: 100%; background: linear-gradient(90deg, #2563eb, #60a5fa); border-radius: 99px; transition: width .4s; }

/* ===== CABINET ===== */
.tabs { display: flex; gap: 0; border-bottom: 2px solid var(--border-soft); margin-bottom: 1.5rem; }
.tab { padding: .65rem 1.25rem; font-weight: 600; color: var(--text-muted); border-bottom: 2px solid transparent; margin-bottom: -2px; cursor: pointer; transition: color .15s; }
.tab:hover { color: var(--accent); }
.tab.active { color: var(--accent); border-bottom-color: var(--accent); }
.flex-between { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1rem; }

/* ===== СЛАЙДЕР «НЕДАВНО ПРОСМОТРЕННЫЕ» ===== */
.recent-block { margin-bottom: 1.25rem; }
.recent-slider { display: flex; gap: .75rem; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: .4rem; -webkit-overflow-scrolling: touch; scrollbar-width: thin; }
.recent-slide { flex: 0 0 150px; scroll-snap-align: start; background: var(--card-bg); border: 1px solid var(--border-soft); border-radius: var(--radius-sm); overflow: hidden; text-decoration: none; box-shadow: var(--shadow-1); transition: all var(--transition); }
.recent-slide:hover { transform: translateY(-3px); box-shadow: var(--shadow-2); border-color: var(--accent); text-decoration: none; }
.recent-slide-photo { height: 90px; background: linear-gradient(145deg, var(--bg-soft), var(--border)); display: flex; align-items: center; justify-content: center; overflow: hidden; }
.recent-slide-photo img { width: 100%; height: 100%; object-fit: cover; }
.recent-slide-photo span { font-size: 2rem; opacity: .4; }
.recent-slide-body { padding: .5rem .6rem .6rem; }
.recent-slide-title { font-size: .78rem; color: var(--text); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.recent-slide-price { font-size: .88rem; color: var(--accent); font-weight: 700; margin-top: .2rem; }
.cabinet-item { display: flex; align-items: center; gap: 1rem; background: var(--card-bg); border-radius: 12px; padding: .85rem 1rem; margin-bottom: .5rem; box-shadow: 0 1px 3px rgba(0,0,0,.05); border: 1px solid rgba(0,0,0,.03); transition: box-shadow .2s; }
.cabinet-item:hover { box-shadow: 0 4px 12px rgba(0,0,0,.08); }
.cabinet-photo { width: 64px; height: 64px; border-radius: 10px; overflow: hidden; background: var(--bg-soft); display: flex; align-items: center; justify-content: center; font-size: 1.5rem; flex: 0 0 auto; }
.cabinet-photo img { width: 100%; height: 100%; object-fit: cover; }
.cabinet-body { flex: 1; min-width: 0; }
.cabinet-title { font-weight: 600; color: var(--text); font-size: .95rem; }
.cabinet-title:hover { color: var(--accent); }
.cabinet-meta { font-size: .8rem; color: var(--text-soft); margin-top: .2rem; }
.cabinet-actions { display: flex; align-items: center; gap: .4rem; }
.deal-item { text-decoration: none; display: flex; align-items: center; gap: .75rem; }
.deal-item:hover { box-shadow: 0 4px 16px rgba(0,0,0,.1); }

/* ===== DEAL PAGE ===== */
.deal-steps { display: flex; align-items: center; gap: .5rem; margin-bottom: 1rem; padding: .75rem 1rem; background: var(--card-bg); border-radius: 12px; border: 1px solid var(--border-soft); }
.deal-step { display: flex; align-items: center; gap: .4rem; font-size: .85rem; color: var(--text-muted); white-space: nowrap; }
.deal-step.done { color: var(--text); font-weight: 600; }
.deal-step-icon { font-size: 1.2rem; }
.deal-step-line { flex: 1; height: 2px; background: var(--border-soft); min-width: 20px; }
.deal-step-line.done { background: var(--accent); }

.deal-header { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.5rem; }
.deal-header h2 { margin: 0; font-size: 1.2rem; }
.muted { color: var(--text-muted); font-size: .875rem; }
.status { display: inline-block; padding: .25rem .75rem; border-radius: 999px; font-size: .75rem; font-weight: 600; }
.status-yellow { background: #fef3c7; color: #92400e; }
.status-blue { background: #dbeafe; color: #1d4ed8; }
.status-green { background: #d1fae5; color: #065f46; }
.status-gray { background: var(--bg-soft); color: var(--text-muted); }
.status-red { background: #fee2e2; color: #991b1b; }

.deal-layout { display: grid; grid-template-columns: 1fr 340px; gap: 1.5rem; align-items: start; }
.deal-main { background: var(--card-bg); border-radius: 16px; padding: 1.5rem; box-shadow: 0 1px 4px rgba(0,0,0,.05); }
.deal-main .deal-item { display: flex; align-items: center; gap: 1rem; padding: 1rem 0; }
.deal-main .deal-item img { width: 80px; height: 80px; object-fit: cover; border-radius: 10px; background: var(--bg-soft); }
.deal-summary { width: 100%; margin: 1rem 0; }
.deal-summary td { padding: .5rem .75rem; font-size: .875rem; }
.deal-summary tr td:first-child { color: var(--text-soft); }
.deal-summary .total { font-weight: 700; font-size: 1rem; border-top: 2px solid var(--border-soft); padding-top: .75rem; }
.deal-chat { background: var(--card-bg); border-radius: 16px; padding: 1rem; box-shadow: 0 1px 4px rgba(0,0,0,.05); display: flex; flex-direction: column; }
.deal-chat h3 { font-size: .9rem; margin-bottom: .75rem; }
.chat-box { flex: 1; max-height: 400px; overflow-y: auto; display: flex; flex-direction: column; gap: .5rem; margin-bottom: .75rem; }
.chat-msg { background: var(--bg-soft); padding: .6rem .85rem; border-radius: 12px; font-size: .85rem; max-width: 85%; line-height: 1.5; box-shadow: var(--shadow-1); }
.chat-msg.mine { background: var(--accent-soft); align-self: flex-end; }
.chat-name { font-weight: 600; font-size: .75rem; color: var(--text-soft); margin-bottom: .15rem; }
.chat-form { display: flex; gap: .5rem; }
.chat-form input { flex: 1; padding: .55rem .85rem; border: 1.5px solid var(--border-soft); border-radius: 10px; font-size: .875rem; outline: none; transition: border-color .15s; background: var(--bg-soft); color: var(--text); }
.chat-form input:focus { border-color: var(--accent); box-shadow: 0 0 0 2px rgba(37,99,235,.12); }

/* ===== БЕЙДЖИ НА КАРТОЧКЕ (контейнер .card-badges, фикс наложений) ===== */
.card-badges { position: absolute; top: .5rem; left: .5rem; display: flex; flex-direction: column; gap: .3rem; z-index: 4; }
.card-actions { display: flex; gap: .25rem; position: absolute; top: .5rem; right: .5rem; z-index: 5; }
.card-wrap .card-actions { opacity: 0; transform: translateY(-4px); transition: opacity .18s ease, transform .18s ease; pointer-events: none; }
.card-wrap:hover .card-actions, .card-wrap .card-actions:focus-within, .card-wrap .card-actions:has(button.active), .card-wrap .card-actions button.active { opacity: 1; transform: none; pointer-events: auto; }
.card-actions .btn-fav, .card-actions .btn-compare, .card-actions .btn-cart { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 50%; background: rgba(255,255,255,.95); border: none; cursor: pointer; font-size: .9rem; box-shadow: 0 1px 4px rgba(0,0,0,.18); transition: all .15s; }
.card-actions .btn-fav:hover, .card-actions .btn-compare:hover, .card-actions .btn-cart:hover { transform: scale(1.15); background: #fff; }
.card-actions .btn-compare.active { background: var(--accent); color: #fff; }
.card-actions .btn-cart.active { background: var(--success); color: #fff; }
.card-new-badge, .promo-badge { display: inline-block; padding: .15rem .5rem; border-radius: 999px; font-size: .68rem; font-weight: 700; color: #fff; line-height: 1.3; width: fit-content; }
.card-new-badge { background: linear-gradient(135deg, #16a34a, #22c55e); box-shadow: 0 2px 6px rgba(22,163,74,.4); }
.badge-reserved { display: inline-block; padding: .15rem .5rem; border-radius: 999px; font-size: .68rem; font-weight: 700; color: #fff; line-height: 1.3; width: fit-content; background: linear-gradient(135deg, #b91c1c, #ef4444); box-shadow: 0 2px 6px rgba(220,38,38,.4); }
.card-deal-badge { position: absolute; bottom: .5rem; right: .5rem; font-size: 1rem; filter: drop-shadow(0 1px 4px rgba(0,0,0,.6)); z-index: 4; }
.promo-vip { background: linear-gradient(135deg, #7c3aed, #a855f7); box-shadow: 0 2px 6px rgba(124,58,237,.4); }
.promo-featured { background: linear-gradient(135deg, #dc2626, #f97316); box-shadow: 0 2px 6px rgba(220,38,38,.4); }
.promo-bump { background: linear-gradient(135deg, #2563eb, #3b82f6); }
.btn-fav-lg { width: 42px; height: 42px; font-size: 1.4rem; flex: 0 0 auto; }
.title-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.title-row h1 { margin-bottom: 0; }
.stars { color: #f59e0b; letter-spacing: 1px; }
.star-half { display: inline-block; width: .5em; overflow: hidden; position: relative; color: #f59e0b; transform: translateY(-.03em); }
.star-half:after { content: '★'; position: absolute; left: 0; top: 0; color: #f59e0b; }
.rating-num { color: #2563eb; }
.seller-link { color: #2563eb; font-weight: 500; }
.seller-link:hover { color: #1d4ed8; }
.verified-badge { font-size: 1em; display: inline-block; }

/* ===== PROFILE (продавец) ===== */
.profile-header { display: flex; align-items: center; gap: 1.25rem; background: var(--card-bg); border-radius: 12px; padding: 1.5rem; box-shadow: 0 1px 3px rgba(0,0,0,.08); margin-bottom: 1.5rem; }
.profile-avatar { width: 72px; height: 72px; border-radius: 50%; background: #2563eb; color: #fff; font-size: 2rem; font-weight: 700; display: flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.profile-header h2 { margin-bottom: .25rem; }
.profile-reviews, .profile-listings { background: var(--card-bg); border-radius: 12px; padding: 1.5rem; box-shadow: 0 1px 3px rgba(0,0,0,.08); margin-bottom: 1.5rem; }
.profile-reviews h3, .profile-listings h3 { margin-bottom: 1rem; font-size: 1.05rem; }
.review-card { border: 1px solid #eee; border-radius: 10px; padding: .85rem 1rem; margin-bottom: .75rem; }
.review-header { display: flex; align-items: center; gap: .6rem; margin-bottom: .3rem; }
.review-author { font-weight: 600; font-size: .875rem; }
.review-text { font-size: .875rem; color: #444; margin-bottom: .3rem; }
.review-listing { font-size: .75rem; }

/* ===== REVIEW FORM (отзыв в сделке) ===== */
.review-form { margin-top: 1rem; border-top: 1px dashed #ddd; padding-top: 1rem; }
.review-form h4 { margin-bottom: .5rem; font-size: .95rem; }
.star-input { display: flex; flex-direction: row-reverse; justify-content: flex-end; gap: .2rem; margin-bottom: .75rem; }
.star-input input { display: none; }
.star-input label { font-size: 2rem; color: #ddd; cursor: pointer; transition: transform .12s, color .15s, text-shadow .15s; line-height: 1; }
.star-input label:hover { transform: scale(1.12); }
.star-input input:checked ~ label,
.star-input label:hover,
.star-input label:hover ~ label { color: #f59e0b; text-shadow: 0 1px 4px rgba(245,158,11,.5); }
.star-input label:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; }
.star-input .star-hint { font-size: .75rem; color: var(--text-muted); margin-left: .3rem; align-self: center; }
.review-form textarea { width: 100%; padding: .6rem .75rem; border: 1px solid var(--border-soft); border-radius: 8px; font-size: .875rem; margin-bottom: .75rem; resize: vertical; min-height: 70px; outline: none; }
.review-form textarea:focus { border-color: #2563eb; box-shadow: 0 0 0 3px rgba(37,99,235,.15); }

/* ===== FOOTER ===== */
.site-footer { background: #0b1120; color: #c8d2e0; margin-top: 3rem; padding: 2.5rem 1rem 1.5rem; border-top: 3px solid var(--accent); }
.footer-inner { max-width: 1200px; margin: 0 auto; display: grid; grid-template-columns: 1.8fr 1fr 1.3fr 1fr; gap: 2.5rem; }
.footer-col { display: flex; flex-direction: column; gap: .35rem; }
.footer-col h4 { color: #fff; font-size: .85rem; margin-bottom: .6rem; text-transform: uppercase; letter-spacing: .04em; opacity: .8; }
.footer-col a { color: #c8d2e0; font-size: .85rem; transition: all .2s; padding: .1rem 0; }
.footer-col a:hover { color: #fff; text-decoration: none; transform: translateX(3px); }
.footer-cats-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .3rem .8rem; }
.footer-cats-grid a { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.footer-stats { display: flex; gap: 1.5rem; margin-top: .25rem; flex-wrap: wrap; }
.footer-stat { font-size: .8rem; color: #8899b0; }
.footer-stat strong { display: block; font-size: 1.1rem; color: #fff; }
.footer-copy { margin-top: auto; padding-top: .75rem; color: #67788f; font-size: .8rem; }

/* Логотип и соцсети */
.footer-brand { display: flex; align-items: center; gap: .5rem; font-size: 1.2rem; font-weight: 800; color: #fff; margin-bottom: .5rem; }
.footer-social { display: flex; gap: .5rem; margin-top: .75rem; flex-wrap: wrap; }
.footer-social a { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 10px; background: rgba(255,255,255,.06); font-size: 1rem; transition: all .2s; }
.footer-social a:hover { background: var(--accent); transform: translateY(-2px); color: #fff; }
.footer-contacts { display: flex; flex-direction: column; gap: .3rem; font-size: .85rem; color: #8899b0; }
.footer-contacts span { display: flex; align-items: center; gap: .4rem; }

@media (max-width: 768px) {
    .footer-inner { grid-template-columns: 1fr 1fr; gap: 1.5rem; }
    .footer-col-brand { grid-column: 1 / -1; }
}
@media (max-width: 480px) {
    .footer-inner { grid-template-columns: 1fr; }
}

/* ===== МОДУЛЬ ПОКУПКИ НА КАРТОЧКЕ ===== */
.buy-options { display: flex; flex-direction: column; gap: .4rem; margin-bottom: .85rem; text-align: left; }
.buy-opt { display: flex; flex-direction: column; gap: .05rem; padding: .6rem .75rem; border: 1px solid var(--border-soft); border-radius: 10px; cursor: pointer; transition: .15s; }
.buy-opt input { display: none; }
.buy-opt-active { border-color: #2563eb; background: #eff6ff; }
.buy-opt-title { font-weight: 700; font-size: .9rem; color: #222; }
.buy-opt-desc { font-size: .78rem; color: var(--text-soft); }

.buy-block { margin-bottom: .85rem; text-align: left; }
.buy-block-title { font-size: .82rem; font-weight: 600; color: var(--text-soft); margin-bottom: .4rem; }

.pm-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .35rem; }
.pm-opt { display: flex; align-items: center; gap: .35rem; padding: .4rem .55rem; border: 1px solid var(--border-soft); border-radius: 8px; cursor: pointer; font-size: .78rem; transition: .15s; }
.pm-opt input { display: none; }
.pm-opt:has(input:checked) { border-color: #2563eb; background: #eff6ff; }
.pm-ico { font-size: 1rem; }
.pm-name { font-size: .78rem; }

.ship-opt-radio { display: flex; align-items: center; gap: .5rem; padding: .4rem .6rem; border: 1px solid var(--border-soft); border-radius: 8px; margin-bottom: .3rem; cursor: pointer; font-size: .8rem; transition: .15s; }
.ship-opt-radio input { display: none; }
.ship-opt-radio:has(input:checked) { border-color: #2563eb; background: #eff6ff; }
.ship-ico { font-size: 1rem; }
.ship-name { flex: 1; }
.ship-cost { color: var(--text-soft); font-size: .76rem; }
.ship-addr { margin-top: .3rem; width: 100%; padding: .5rem .7rem; border: 1px solid var(--border-soft); border-radius: 8px; font-size: .82rem; outline: none; }
.install-badge { background: rgba(22,163,74,.08); border: 1px solid rgba(22,163,74,.25); border-radius: 8px; padding: .4rem .7rem; font-size: .8rem; color: var(--success); margin-bottom: .85rem; }

/* ===== LP — КАРТОЧКА ТОВАРА ===== */
.lp-layout-new { display: grid; grid-template-columns: 1fr 400px; gap: 2rem; align-items: start; }
.lp-left { }

/* Галерея */
.lp-gallery-new { }
.lp-main-photo { background: var(--bg-soft); border-radius: 20px; overflow: hidden; height: 480px; display: flex; align-items: center; justify-content: center; position: relative; box-shadow: inset 0 0 0 1px rgba(0,0,0,.04); }
.lp-main-photo img { width: 100%; height: 100%; object-fit: contain; }
.lp-arrow { position: absolute; top: 50%; transform: translateY(-50%) scale(.92); width: 50px; height: 50px; border-radius: 50%; background: linear-gradient(135deg, rgba(255,255,255,.98), rgba(240,244,248,.95)); border: none; cursor: pointer; font-size: 1.7rem; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 18px rgba(0,0,0,.22), 0 1px 4px rgba(0,0,0,.12); transition: all .25s cubic-bezier(.25,.46,.45,.94); z-index: 3; color: #0f172a; line-height: 1; opacity: 0; }
.lp-arrow::after { content: ''; position: absolute; inset: 5px; border-radius: 50%; background: radial-gradient(circle at 30% 25%, rgba(255,255,255,.7), transparent 55%); pointer-events: none; }
.lp-main-photo:hover .lp-arrow, .lp-arrow:focus-visible { opacity: 1; transform: translateY(-50%) scale(1); }
.lp-arrow:hover { background: #fff; transform: translateY(-50%) scale(1.1); box-shadow: 0 6px 26px rgba(37,99,235,.4), 0 2px 6px rgba(0,0,0,.15); color: var(--accent); }
.lp-arrow:active { transform: translateY(-50%) scale(.96); }
.lp-arrow-left { left: 1rem; }
.lp-arrow-right { right: 1rem; }
@media (max-width: 768px) { .lp-arrow { opacity: 1; width: 42px; height: 42px; font-size: 1.4rem; } .lp-arrow-left { left: .5rem; } .lp-arrow-right { right: .5rem; } }

/* ===== ПРИГЛАШЕНИЕ PUSH (как в мобильных приложениях) ===== */
.push-prompt { display: none; position: fixed; bottom: 5rem; left: 50%; transform: translateX(-50%); z-index: 9998; background: var(--card-bg); border: 1px solid var(--border-soft); border-radius: 16px; padding: .75rem 1rem; box-shadow: var(--shadow-3); max-width: 400px; width: calc(100% - 2rem); align-items: center; gap: .75rem; animation: fadeUp .35s ease-out; }
.push-prompt-ico { font-size: 1.6rem; flex: 0 0 auto; }
.push-prompt-body { flex: 1; min-width: 0; }
.push-prompt-body strong { display: block; font-size: .9rem; color: var(--text); }
.push-prompt-body span { font-size: .78rem; color: var(--text-soft); display: block; margin-top: .1rem; line-height: 1.4; }
.push-prompt-close { background: none; border: none; font-size: .85rem; color: var(--text-muted); cursor: pointer; padding: .2rem; flex: 0 0 auto; align-self: flex-start; }
.push-prompt-close:hover { color: var(--text); }
@media (max-width: 600px) { .push-prompt { bottom: 4.5rem; } }

/* ===== PWA-БАННЕР «Установить на экран» (как в мобильных приложениях) ===== */
.pwa-banner { display: none; position: fixed; bottom: 5rem; left: 50%; transform: translateX(-50%); z-index: 9997; background: var(--card-bg); border: 1px solid var(--border-soft); border-radius: 16px; padding: .75rem 1rem; box-shadow: var(--shadow-3); max-width: 400px; width: calc(100% - 2rem); align-items: center; gap: .65rem; animation: fadeUp .35s ease-out; }
.pwa-banner-ico { flex: 0 0 auto; }
.pwa-banner-ico img { border-radius: 8px; }
.pwa-banner-body { flex: 1; min-width: 0; }
.pwa-banner-body strong { display: block; font-size: .9rem; color: var(--text); }
.pwa-banner-body span { font-size: .78rem; color: var(--text-soft); display: block; margin-top: .1rem; line-height: 1.4; }
@media (max-width: 600px) { .pwa-banner { bottom: 4.5rem; } }
.lp-img-counter { position: absolute; bottom: 1rem; right: 1rem; background: rgba(15,23,42,.7); color: #fff; font-size: .78rem; padding: .3rem .75rem; border-radius: 999px; backdrop-filter: blur(6px); }
.lp-thumbs { display: flex; gap: .65rem; margin-top: .75rem; overflow-x: auto; scroll-behavior: smooth; -webkit-overflow-scrolling: touch; cursor: grab; user-select: none; scrollbar-width: thin; }
.lp-thumbs img { width: 80px; height: 80px; object-fit: cover; border-radius: 14px; cursor: pointer; border: 2px solid transparent; transition: all .15s; box-shadow: 0 1px 4px rgba(0,0,0,.08); flex: 0 0 auto; }
.lp-thumbs img.active { border-color: var(--accent); box-shadow: 0 2px 10px rgba(37,99,235,.3); }
.lp-thumbs img:hover { border-color: var(--accent); }

/* Правая колонка */
.lp-right { position: sticky; top: 5.5rem; }
.lp-right-inner { display: flex; flex-direction: column; gap: 1rem; }
/* Карта по кнопке */
.lp-map-block { margin-top: .25rem; }
.lp-map-btn { display: flex; align-items: center; gap: .45rem; width: 100%; padding: .65rem .75rem; background: var(--accent-soft); color: var(--accent); border: 1px dashed var(--accent); border-radius: 12px; font-size: .85rem; font-weight: 700; cursor: pointer; transition: background .15s, color .15s; text-align: left; }
.lp-map-btn:hover { background: var(--accent); color: #fff; }
.lp-map-btn-ico { font-size: 1.05rem; flex: 0 0 auto; }
.lp-map-btn-tx { flex: 0 0 auto; }
.lp-map-btn-loc { flex: 1; min-width: 0; font-size: .72rem; font-weight: 400; color: inherit; opacity: .75; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: right; }
#lpMap { height: 0; border-radius: 12px; overflow: hidden; border: none; transition: height .25s ease, border-color .15s; }
.lp-map-block.open #lpMap { height: 260px; border: 1px solid var(--border-soft); margin-top: .5rem; box-shadow: 0 4px 14px rgba(0,0,0,.05); }
/* Метка-пин карты */
.lp-pin { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 50% 50% 50% 4px; background: var(--accent, #2563eb); color: #fff; box-shadow: 0 3px 10px rgba(0,0,0,.35); font-size: 1rem; transform: rotate(-45deg); }
.lp-pin::before { content: ''; position: absolute; left: 50%; top: 50%; width: 4px; height: 4px; border-radius: 50%; background: #fff; transform: translate(-50%,-50%); }
.lp-pin-wrap { background: transparent; border: none; }
.lp-pin-wrap > div { transform: rotate(45deg); }
.lp-header-info { background: var(--card-bg); border-radius: 16px; padding: 1.25rem 1.5rem; box-shadow: var(--shadow-1); border: 1px solid rgba(0,0,0,.04); }
.lp-title { font-size: 1.5rem; font-weight: 800; color: var(--text); margin-bottom: .5rem; line-height: 1.25; letter-spacing: -.01em; }
.lp-price-row { display: flex; align-items: center; gap: .75rem; margin-bottom: .35rem; flex-wrap: wrap; }
.lp-price-val { font-size: 2.1rem; font-weight: 800; color: var(--text); letter-spacing: -.02em; }
.lp-meta-row { display: flex; align-items: center; gap: 1.1rem; color: var(--text-muted); font-size: .85rem; flex-wrap: wrap; }
.lp-chip-row { display: flex; flex-wrap: wrap; gap: .4rem; margin: .35rem 0 .2rem; }

/* Карточка продавца */
.lp-seller-card-new { background: var(--card-bg); border-radius: 16px; padding: 1rem 1.25rem; box-shadow: var(--shadow-1); border: 1px solid rgba(0,0,0,.04); transition: box-shadow .2s; }
.lp-seller-card-new:hover { box-shadow: var(--shadow-2); }
.lp-seller-new { display: flex; align-items: center; gap: .85rem; text-decoration: none; color: inherit; }
.lp-seller-new:hover { text-decoration: none; }
.lp-seller-avatar { width: 50px; height: 50px; border-radius: 50%; background: linear-gradient(135deg, var(--accent), #1d4ed8); color: #fff; font-size: 1.3rem; font-weight: 700; display: flex; align-items: center; justify-content: center; flex: 0 0 auto; box-shadow: 0 2px 8px rgba(37,99,235,.3); }
.lp-seller-info { display: flex; flex-direction: column; gap: .15rem; }
.lp-seller-info strong { font-size: 1rem; color: var(--text); }
.lp-seller-rating { font-size: .82rem; color: var(--text-soft); }
.lp-seller-rating .stars { font-size: .9rem; letter-spacing: 1px; }
.lp-seller-stat { margin-left: auto; font-size: .78rem; color: var(--text-soft); background: var(--bg-soft); padding: .25rem .7rem; border-radius: 999px; white-space: nowrap; }
.lp-hr { margin: 1rem 0; }

/* Блок покупки */
.lp-box { background: var(--card-bg); border-radius: 16px; padding: 1.4rem; box-shadow: var(--shadow-1); border: 1px solid rgba(0,0,0,.04); text-align: center; animation: fadeUp .4s ease-out; }
.lp-box-icon { font-size: 2.2rem; margin-bottom: .5rem; display: block; }
.lp-box h3 { margin-bottom: .6rem; font-size: 1rem; color: var(--text); }
.lp-box p { color: var(--text-soft); font-size: .875rem; margin-bottom: 1rem; line-height: 1.5; }
.lp-box-primary { border: 1.5px solid rgba(37,99,235,.35); background: linear-gradient(180deg, rgba(37,99,235,.06), var(--card-bg) 100%); box-shadow: 0 6px 24px rgba(37,99,235,.08); }
.lp-box-waiting { border: 1.5px solid rgba(245,158,11,.4); background: linear-gradient(180deg, rgba(245,158,11,.07), var(--card-bg)); }
.lp-box-blue { border: 1.5px solid rgba(37,99,235,.3); background: linear-gradient(180deg, rgba(37,99,235,.05), var(--card-bg)); }
.lp-box-green { border: 1.5px solid rgba(22,163,74,.3); background: linear-gradient(180deg, rgba(22,163,74,.05), var(--card-bg)); }
.lp-box-gray { border: 1.5px solid var(--border-soft); background: linear-gradient(180deg, var(--bg-soft), var(--card-bg)); }
.lp-compact { padding: 1.25rem; }

.lp-box-header { display: flex; align-items: center; gap: .6rem; margin-bottom: .85rem; }
.lp-box-bigicon { font-size: 1.6rem; }
.lp-box-header h3 { margin: 0; font-size: 1.05rem; color: var(--text); }
.bb-title { font-size: .82rem; font-weight: 700; color: var(--text-soft); margin-bottom: .4rem; text-transform: uppercase; letter-spacing: .03em; }
.lp-separator { display: flex; align-items: center; gap: .75rem; margin: .75rem 0; color: var(--text-muted); font-size: .8rem; }
.lp-separator::before, .lp-separator::after { content: ''; flex: 1; height: 1px; background: var(--border-soft); }

/* Табы в левой колонке */
.lp-tabs { margin-top: 1.5rem; background: var(--card-bg); border-radius: 16px; padding: 1.25rem; box-shadow: var(--shadow-1); }
.lp-tab-bar { display: flex; gap: 0; border-bottom: 2px solid var(--border-soft); margin-bottom: 1rem; }
.lp-tab { padding: .6rem 1rem; font-size: .85rem; font-weight: 600; color: var(--text-muted); cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -2px; transition: all .15s; }
.lp-tab:hover { color: var(--text); }
.lp-tab.active { color: var(--accent); border-bottom-color: var(--accent); }
.lp-tab-pane { display: none; }
.lp-tab-pane.active { display: block; }

/* ── Полоса доверия (trustbar) ── */
.trustbar { display: grid; grid-template-columns: repeat(3, 1fr); gap: .6rem; margin-top: 1rem; }
.trustbar-item { display: flex; align-items: center; gap: .55rem; background: var(--card-bg); border: 1px solid var(--border-soft); border-radius: 12px; padding: .65rem .8rem; }
.trustbar-ico { font-size: 1.25rem; flex: 0 0 auto; }
.trustbar-item strong { display: block; font-size: .78rem; line-height: 1.2; }
.trustbar-item span { font-size: .68rem; color: var(--text-muted); }
@media (max-width: 640px) { .trustbar { display: none !important; margin-top: 0; } }

/* ── Вопросы и ответы (FAQ) ── */
.qa-item { border: 1px solid var(--border-soft); border-radius: 10px; padding: .6rem .75rem; margin-bottom: .5rem; }
.qa-q { display: flex; align-items: flex-start; gap: .4rem; font-size: .88rem; font-weight: 600; flex-wrap: wrap; }
.qa-a { display: flex; align-items: flex-start; gap: .4rem; font-size: .84rem; color: var(--text-soft); margin-top: .3rem; padding-left: 1.4rem; }
.qa-ico { flex: 0 0 auto; }
.qa-answer-form { display: flex; gap: .4rem; align-items: center; }
.qa-answer-form input[type="text"], .qa-ask-form input[type="text"] { width: 100%; }
.lp-desc-new { white-space: pre-wrap; color: var(--text-soft); line-height: 1.7; font-size: .925rem; }
.breadcrumbs { font-size: .82rem; color: var(--text-muted); margin-bottom: 1rem; }
.breadcrumbs a { color: var(--text-soft); }
.breadcrumbs a:hover { color: var(--accent); }
.params-table { width: 100%; border-collapse: collapse; font-size: .875rem; }
.params-table td { padding: .4rem .6rem; border-bottom: 1px solid var(--border-soft); }
.params-table td:first-child { color: var(--text-muted); font-weight: 500; width: 40%; }
.params-table td:last-child { color: var(--text); font-weight: 600; }
.no-photo-lg { font-size: 4rem; opacity: .3; display: flex; align-items: center; justify-content: center; height: 100%; }
.review-card-sm { border-bottom: 1px solid var(--border-soft); padding: .6rem 0; }
.review-card-sm .stars { font-size: .85rem; }
.review-author-sm { font-weight: 600; font-size: .85rem; color: var(--text); }
.review-text-sm { font-size: .85rem; color: var(--text-soft); margin-top: .2rem; }

.chip { display: inline-flex; align-items: center; gap: .25rem; padding: .15rem .5rem; border-radius: 999px; font-size: .75rem; font-weight: 600; white-space: nowrap; }
.chip-green { background: #d1fae5; color: #065f46; }
.chip-blue { background: #dbeafe; color: #1d4ed8; }
.chip-yellow { background: #fef3c7; color: #92400e; }
.chip-gray { background: #f3f4f6; color: #6b7280; }
.chip-red { background: #fee2e2; color: #991b1b; }

/* ===== PROGRESS BAR (эскроу) ===== */
.progress-track { height: 5px; background: #e5e7eb; border-radius: 99px; margin-top: .4rem; overflow: hidden; }
.progress-fill { height: 100%; background: #2563eb; border-radius: 99px; transition: width .4s; }
.progress-fill.done { background: #16a34a; }

/* ===== STAT CARDS ===== */
.stat-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .75rem; margin-bottom: 1.5rem; }
.stat-cards-sm { grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); }
.stat-card { background: var(--card-bg); border-radius: 12px; padding: 1rem; box-shadow: 0 1px 3px rgba(0,0,0,.06); text-align: center; border-left: 4px solid #ddd; }
.stat-icon { font-size: 1.5rem; }
.stat-num { font-size: 1.6rem; font-weight: 700; margin: .25rem 0; }
.stat-label { font-size: .75rem; color: #888; }
.stat-blue { border-left-color: #2563eb; } .stat-green { border-left-color: #16a34a; } .stat-yellow { border-left-color: #f59e0b; }
.stat-red { border-left-color: #dc2626; } .stat-violet { border-left-color: #8b5cf6; } .stat-cyan { border-left-color: #06b6d4; } .stat-orange { border-left-color: #f97316; } .stat-teal { border-left-color: #14b8a6; } .stat-gray { border-left-color: var(--text-muted); }

/* ===== CABINET HEADER ===== */
.cab-head { display: flex; align-items: center; gap: 1rem; background: var(--card-bg); border-radius: 12px; padding: 1.25rem 1.5rem; box-shadow: 0 1px 3px rgba(0,0,0,.06); margin-bottom: 1rem; }
.cab-avatar { width: 56px; height: 56px; border-radius: 50%; background: #2563eb; color: #fff; font-size: 1.5rem; font-weight: 700; display: flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.cab-info { flex: 1; }
.cab-info h1 { margin: 0; font-size: 1.2rem; }

/* ===== SETTINGS ===== */
.settings-wrap { max-width: 600px; margin: 0 auto; }
.settings-wrap > h2 { margin-bottom: 1rem; }
.profile-summary { display: flex; align-items: center; gap: 1rem; background: var(--card-bg); border-radius: 12px; padding: 1rem 1.25rem; box-shadow: 0 1px 3px rgba(0,0,0,.06); margin-bottom: 1.5rem; }
.profile-avatar-lg { width: 60px; height: 60px; border-radius: 50%; background: #2563eb; color: #fff; font-size: 1.75rem; font-weight: 700; display: flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.settings-wrap .form-card h3 { margin-bottom: 1rem; }

/* ===== ADMIN ===== */
.admin-wrap { }
.admin-head { display: flex; align-items: center; gap: 1rem; margin-bottom: 1rem; flex-wrap: wrap; }
.admin-head h1 { margin: 0; font-size: 1.3rem; }
.admin-tabs { display: flex; gap: 0; border-bottom: 2px solid var(--border-soft); margin-bottom: 1.5rem; flex-wrap: wrap; }
.admin-tab { padding: .55rem 1rem; font-weight: 600; color: var(--text-muted); border-bottom: 2px solid transparent; margin-bottom: -2px; cursor: pointer; font-size: .875rem; }
.admin-tab.active { color: var(--accent); border-bottom-color: var(--accent); }
.admin-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 1rem; }
.admin-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-bottom: 1rem; }
@media (max-width: 900px) { .admin-grid-3 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .admin-grid-3 { grid-template-columns: 1fr; } }

/* Липкая панель настроек модулей */
.admin-modules-panel { position: relative; }
.admin-modules-head { position: sticky; top: 64px; z-index: 20; display: flex; align-items: center; justify-content: space-between; gap: 1rem; background: var(--card-bg); padding: .75rem 1.25rem; border-radius: 12px; box-shadow: 0 4px 16px rgba(0,0,0,.1); margin-bottom: 1rem; }
.admin-modules-head h3 { margin: 0; font-size: 1rem; }
.admin-modules-scroll { max-height: 420px; overflow-y: auto; }
.admin-modules-scroll thead, .admin-table-scroll thead { position: sticky; top: 0; z-index: 5; background: var(--card-bg); }
.admin-modules-scroll thead th, .admin-table-scroll thead th { background: var(--card-bg); box-shadow: 0 2px 4px rgba(0,0,0,.06); }

/* Прокручиваемые таблицы админки с липким заголовком */
.admin-table-scroll { max-height: 520px; overflow-y: auto; border-radius: 10px; }
.admin-table-scroll .tbl th { position: sticky; top: 0; z-index: 5; background: var(--card-bg); box-shadow: 0 2px 4px rgba(0,0,0,.06); }
.admin-modules-foot { position: sticky; bottom: 0; background: var(--card-bg); padding: .75rem 1.25rem; border-radius: 12px; box-shadow: 0 -4px 16px rgba(0,0,0,.08); }

.panel { background: var(--card-bg); border-radius: 12px; padding: 1.25rem; box-shadow: 0 1px 3px rgba(0,0,0,.06); }

/* ===== Модальное окно жалобы ===== */
.modal-overlay { position: fixed; inset: 0; background: rgba(15,23,42,.6); z-index: 99999; display: flex; align-items: center; justify-content: center; padding: 1rem; backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
.modal { width: 100%; max-width: 460px; margin: 0; animation: fadeUp .25s ease-out; }
.modal h3 { margin-bottom: 1rem; font-size: 1.1rem; }

/* ===== Жалобы (админка) ===== */
.report-card { display: flex; align-items: center; gap: 1rem; padding: .85rem 1rem; border: 1px solid var(--border-soft); border-radius: 12px; margin-bottom: .6rem; background: var(--card-bg); flex-wrap: wrap; }
.report-card.report-done { opacity: .7; }
.report-main { flex: 1; min-width: 200px; }
.report-listing { font-weight: 600; color: var(--text); font-size: .9rem; }
.report-listing:hover { color: var(--accent); }
.report-meta { font-size: .82rem; color: var(--text-soft); margin-top: .2rem; }
.report-meta.muted { color: var(--text-muted); }
.report-actions { display: flex; gap: .4rem; }
.panel h3 { margin-bottom: 1rem; font-size: 1rem; }
.tbl { width: 100%; border-collapse: collapse; font-size: .85rem; color: var(--text); }
.tbl th { text-align: left; padding: .5rem .6rem; border-bottom: 2px solid var(--border-soft); color: var(--text-muted); font-weight: 600; }
.tbl td { padding: .5rem .6rem; border-bottom: 1px solid var(--border); }
.tbl tr:hover td { background: var(--bg-soft); }

.eco-row { display: flex; gap: 2rem; flex-wrap: wrap; }
.eco-item { flex: 1; min-width: 200px; }
.eco-label { font-size: .8rem; color: #888; margin-bottom: .25rem; }
.eco-value { font-size: 1.25rem; font-weight: 700; color: #222; }

.nav-admin { color: #dc2626 !important; font-weight: 600; }

/* ===== CHARTS (bar chart CSS) ===== */
.bar-chart { display: flex; flex-direction: column; gap: .45rem; }
.bar-row { display: flex; align-items: center; gap: .5rem; }
.bar-label { min-width: 80px; font-size: .78rem; color: #555; text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bar-track { flex: 1; height: 22px; background: #f3f4f6; border-radius: 6px; overflow: hidden; }
.bar-fill { height: 100%; border-radius: 6px; transition: width .4s; min-width: 0; }
.bar-val { min-width: 50px; font-size: .78rem; font-weight: 600; color: #444; }
.chart-empty { padding: 1.5rem 0; color: #999; text-align: center; font-size: .875rem; }

/* ===== DOUGHNUT CHART (SVG) ===== */
.doughnut-wrap { display: flex; align-items: center; gap: 1.5rem; flex-wrap: wrap; }
.doughnut { flex: 0 0 auto; width: 240px; height: 240px; }
.doughnut-center { display: none; }
.doughnut-legend { display: flex; flex-direction: column; gap: .3rem; }
.legend-row { display: flex; align-items: center; gap: .5rem; font-size: .8rem; }
.legend-dot { width: 10px; height: 10px; border-radius: 50%; flex: 0 0 auto; }
.legend-label { color: #555; min-width: 80px; }
.legend-val { color: #222; font-weight: 600; }

/* ===== СБП-оплата ===== */
.sbp-box { display: flex; align-items: flex-start; gap: 1rem; background: var(--card-bg); border-radius: 10px; padding: 1rem; margin-bottom: .75rem; }
.sbp-qr { background: var(--card-bg); border: 1px solid var(--border-soft); border-radius: 10px; padding: .4rem; }
.qr-svg { width: 130px; height: 130px; display: block; }
.sbp-qr + div { flex: 1; }
.qr-payload { font-family: ui-monospace, monospace; font-size: .7rem; word-break: break-all; margin-top: .25rem; }

/* ===== Доставка в сделке ===== */
.deal-ship { background: var(--bg-soft); border-color: var(--border-soft); }
.ship-form { display: flex; flex-direction: column; gap: .5rem; margin-bottom: .75rem; }
.ship-form select, .ship-form input { width: 100%; padding: .55rem .75rem; border: 1px solid var(--border-soft); border-radius: 8px; font-size: .875rem; outline: none; }
.ship-form select:focus, .ship-form input:focus { border-color: #2563eb; box-shadow: 0 0 0 3px rgba(37,99,235,.12); }
.ship-options { display: flex; flex-direction: column; gap: .35rem; }
.ship-opt { font-size: .82rem; color: var(--text-soft); }
.tracking { font-family: ui-monospace, monospace; background: var(--bg-soft); padding: .15rem .5rem; border-radius: 6px; font-size: .85rem; }

/* ===== Рассрочка ===== */
.deal-install { background: var(--card-bg)beb; border-color: #fed7aa; }

/* ===== Журнал событий ===== */
.deal-timeline { margin-top: 1.5rem; border-top: 1px dashed var(--border-soft); padding-top: 1rem; }
.deal-timeline h3 { margin-bottom: .75rem; font-size: .95rem; }
.tl-item { display: flex; gap: .75rem; padding: .45rem 0; border-bottom: 1px solid var(--bg-soft); }
.tl-icon { width: 30px; height: 30px; border-radius: 50%; background: var(--bg-soft); display: flex; align-items: center; justify-content: center; font-size: .9rem; flex: 0 0 auto; }
.tl-body { flex: 1; }
.tl-title { font-size: .875rem; font-weight: 600; color: var(--text-soft); }
.tl-note { font-size: .8rem; color: var(--text-soft); }
.tl-meta { font-size: .72rem; color: var(--text-muted); margin-top: .1rem; }

/* ===== Метрики ===== */
.metrics-wrap { }
.deal-secure-note { background: #eff6ff; border-radius: 6px; padding: .4rem .6rem; font-size: .78rem; color: #1d4ed8; margin-top: .6rem; }

/* ===== Похожие объявления ===== */
.similar-wrap { margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--border-soft); }
.similar-wrap h3 { font-size: 1.05rem; margin-bottom: 1rem; }

/* ===== Уведомления ===== */
.notif-wrap { max-width: 640px; margin: 0 auto; }
.notif-list { display: flex; flex-direction: column; gap: .35rem; }
.notif-item { display: flex; align-items: flex-start; gap: .75rem; padding: .8rem 1rem; border-radius: 12px; transition: all var(--transition); text-decoration: none; color: inherit; background: var(--card-bg); box-shadow: var(--shadow-1); border: 1px solid var(--border); }
.notif-item:hover { background: var(--bg-soft); box-shadow: var(--shadow-2); transform: translateX(3px); text-decoration: none; border-color: var(--accent); }
.notif-read { opacity: .55; }
.notif-icon { font-size: 1.2rem; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; background: var(--bg-soft); border-radius: 10px; margin-top: .1rem; }
.notif-msg { font-size: .875rem; color: var(--text); line-height: 1.5; }
.notif-meta { font-size: .72rem; color: var(--text-muted); margin-top: .2rem; }
.notif-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--accent); flex: 0 0 auto; margin-top: .35rem; box-shadow: 0 0 6px rgba(37,99,235,.4); }
.msg-badge { background: #8b5cf6 !important; }
.green-badge { background: #16a34a !important; color: #fff; }
.notif-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; border-radius: 999px; font-size: .65rem; font-weight: 700; padding: 0 .35rem; line-height: 1; color: #fff; position: absolute; top: -6px; right: -8px; background: #dc2626; }
.fav-badge { background: #16a34a; box-shadow: 0 0 0 2px var(--card-bg, #fff); }
.nav-fav, .nav-compare, .nav-cart, .nav-msg, .nav-notif { position: relative; }

/* ===== ПАНЕЛЬ УВЕДОМЛЕНИЙ (ЕДИНАЯ) ===== */
.notif-panel { display: none; position: fixed; top: var(--header-h); right: 1rem; width: 380px; max-width: 92vw; max-height: 70vh; background: var(--card-bg); border-radius: 14px; box-shadow: var(--shadow-3); border: 1px solid var(--border-soft); z-index: 9995; flex-direction: column; overflow: hidden; animation: fadeIn .15s ease-out; }
.notif-panel.open { display: flex; }
.notif-panel-head { display: flex; align-items: center; justify-content: space-between; padding: .65rem 1rem; border-bottom: 1px solid var(--border-soft); }
.notif-panel-list { flex: 1; overflow-y: auto; padding: .35rem 0; }
.notif-panel-empty { text-align: center; padding: 1.5rem; color: var(--text-muted); font-size: .85rem; }
.notif-panel-group { padding: .5rem .85rem .2rem; font-size: .68rem; font-weight: 700; color: var(--text-muted); text-transform: uppercase; letter-spacing: .03em; border-bottom: 1px solid var(--border); }
.notif-panel-item { display: block; padding: .55rem .85rem; border-bottom: 1px solid var(--border); transition: background .12s; text-decoration: none; }
.notif-panel-item:hover { background: var(--bg-soft); text-decoration: none; }
.notif-panel-msg { font-size: .82rem; color: var(--text); line-height: 1.4; display: block; }
.notif-panel-time { font-size: .68rem; color: var(--text-muted); margin-top: .15rem; display: block; }
.notif-panel-all { display: block; text-align: center; padding: .55rem; font-size: .78rem; font-weight: 600; color: var(--accent); border-top: 1px solid var(--border); transition: background .12s; }
.notif-panel-all:hover { background: var(--accent-soft); text-decoration: none; }
@media (max-width: 640px) { .notif-panel { right: .5rem; width: 96vw; } }

/* ===== СРАВНЕНИЕ ТОВАРОВ ===== */
.btn-outline-compare { display: inline-flex; align-items: center; gap: .35rem; padding: .4rem .75rem; border: 1.5px solid var(--border-soft); border-radius: 10px; background: var(--card-bg); color: var(--text-soft); font-size: .78rem; font-weight: 600; cursor: pointer; transition: all .15s; }
.btn-outline-compare:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); }
.btn-outline-compare.active { background: var(--accent); color: #fff; border-color: var(--accent); }
.compare-table-wrap { overflow-x: auto; }
.compare-table { width: 100%; border-collapse: collapse; font-size: .85rem; }
.compare-table th, .compare-table td { padding: .75rem .6rem; border: 1px solid var(--border-soft); text-align: center; vertical-align: middle; }
.compare-table th:first-child, .compare-table td:first-child { text-align: left; font-weight: 600; color: var(--text-soft); white-space: nowrap; }
.compare-table th { background: var(--bg-soft); }
.compare-item { min-width: 140px; vertical-align: top; }
.compare-photo { width: 100%; height: 110px; background: var(--bg-soft); border-radius: 10px; overflow: hidden; margin-bottom: .4rem; display: flex; align-items: center; justify-content: center; }
.compare-photo img { width: 100%; height: 100%; object-fit: cover; }
.compare-item a { font-weight: 600; color: var(--text); display: block; margin-bottom: .35rem; }
.compare-item a:hover { color: var(--accent); }
.compare-price { font-weight: 700; font-size: 1rem; color: var(--text); }
@media (max-width: 768px) { .compare-table th, .compare-table td { padding: .5rem .35rem; font-size: .78rem; } }

/* ===== Модуль бронирования ===== */
.booking-form { display: flex; flex-direction: column; gap: .5rem; text-align: left; }
.bf-row { display: flex; align-items: center; gap: .5rem; }
.bf-row label { font-size: .8rem; color: var(--text-soft); min-width: 2.2rem; }
.bf-row input { flex: 1; padding: .5rem .7rem; border: 1px solid var(--border-soft); border-radius: 8px; font-size: .85rem; outline: none; }
.bf-row input:focus { border-color: #2563eb; box-shadow: 0 0 0 3px rgba(37,99,235,.12); }
.booking-form textarea { padding: .5rem .7rem; border: 1px solid var(--border-soft); border-radius: 8px; font-size: .85rem; outline: none; resize: vertical; min-height: 50px; }

.extras-block { margin-top: .6rem; padding: .6rem .75rem; background: var(--bg-soft); border-radius: 8px; }
.extras-block h4 { font-size: .85rem; margin: 0 0 .4rem; }
.extras-item { display: flex; align-items: center; gap: .4rem; font-size: .83rem; margin-bottom: .2rem; cursor: pointer; }
.extras-item input { width: auto; }
.extras-row input { padding: .4rem .6rem; border: 1px solid var(--border-soft); border-radius: 6px; font-size: .85rem; outline: none; }
.extras-row input:focus { border-color: #2563eb; box-shadow: 0 0 0 2px rgba(37,99,235,.12); }

.cat-tree { display: flex; flex-direction: column; gap: .1rem; max-height: 420px; overflow-y: auto; }
.cat-tree-item { display: flex; align-items: center; gap: .35rem; padding: .3rem .4rem; border-radius: 6px; font-size: .87rem; cursor: pointer; }
.cat-tree-item:hover { background: var(--bg-soft); }
.cat-tree-item.active { background: #eff6ff; border: 1px solid rgba(37,99,235,.3); }
.cat-tree-link-active { color: #2563eb; font-weight: 600; }
.cat-tree-icon { font-size: .9rem; }

.booking-list { display: flex; flex-direction: column; gap: .75rem; }
.booking-card { background: var(--card-bg); border-radius: 12px; padding: 1rem 1.1rem; box-shadow: 0 1px 4px rgba(0,0,0,.06); display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
.booking-main { flex: 1; min-width: 200px; }
.booking-title { font-weight: 700; color: var(--text); font-size: .95rem; }
.booking-title:hover { color: #2563eb; }
.booking-meta { font-size: .8rem; color: var(--text-soft); margin-top: .2rem; }
.booking-msg { font-size: .83rem; color: var(--text-soft); background: var(--bg-soft); border-radius: 8px; padding: .4rem .6rem; margin-top: .35rem; }
.booking-actions { display: flex; gap: .4rem; }

/* ===== Модуль аукциона ===== */
.auction-hero { display: flex; align-items: center; justify-content: space-between; gap: 1rem; background: linear-gradient(135deg, #78350f, #b45309); color: #fff; border-radius: 16px; padding: 1.5rem 1.75rem; margin-bottom: 1.5rem; box-shadow: 0 8px 24px rgba(180,83,9,.25); flex-wrap: wrap; }
.auction-hero h1 { font-size: 1.5rem; color: #fff; margin: 0 0 .4rem; }
.auction-countdown { color: rgba(255,255,255,.9); font-size: .9rem; }
.auction-countdown strong { color: #fff; }
.auction-ended { background: rgba(255,255,255,.2); display: inline-block; padding: .3rem .8rem; border-radius: 999px; font-size: .85rem; }
.auction-price { text-align: right; }
.auction-price-label { font-size: .8rem; color: rgba(255,255,255,.8); }
.auction-price-val { font-size: 2rem; font-weight: 800; color: #fff; line-height: 1.1; }
.auction-price-min { font-size: .78rem; color: rgba(255,255,255,.75); }
.auction-grid { display: grid; grid-template-columns: 1fr 360px; gap: 1.5rem; align-items: start; }
.auction-col { }
.auction-panel { margin-bottom: 1rem; }
.bid-form { display: flex; flex-direction: column; gap: .5rem; margin-top: .5rem; }
.bid-form input { padding: .65rem .85rem; border: 1px solid var(--border-soft); border-radius: 10px; font-size: 1rem; outline: none; }
.bid-form input:focus { border-color: #2563eb; box-shadow: 0 0 0 3px rgba(37,99,235,.12); }
.bid-list { display: flex; flex-direction: column; max-height: 320px; overflow-y: auto; }
.bid-row { display: flex; align-items: center; gap: .6rem; padding: .45rem .4rem; border-bottom: 1px solid var(--bg-soft); font-size: .85rem; }
.bid-row.mine { background: #eff6ff; border-radius: 8px; }
.bid-name { flex: 1; color: var(--text-soft); font-weight: 500; }
.bid-amount { font-weight: 700; color: var(--text); }
.bid-time { color: var(--text-muted); font-size: .75rem; }

/* ===== Модуль такси ===== */
.taxi-wrap { }
.taxi-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; align-items: start; }
.taxi-grid .panel { margin-bottom: 0; }
.taxi-order-card { background: var(--card-bg); border-radius: 12px; padding: 1rem 1.1rem; box-shadow: 0 1px 4px rgba(0,0,0,.06); margin-bottom: .75rem; border-left: 4px solid #2563eb; }
.taxi-order-card.new { border-left-color: #f59e0b; animation: fadeUp .3s ease-out; }
.taxi-order-title { font-weight: 700; color: var(--text); font-size: .95rem; }
.taxi-order-meta { font-size: .8rem; color: var(--text-soft); margin-top: .2rem; }
.taxi-order-actions { margin-top: .5rem; display: flex; gap: .4rem; }
.taxi-status { font-size: .8rem; color: var(--text-muted); margin-top: .3rem; min-height: 1.2em; }
.taxi-status.ok { color: #16a34a; font-weight: 600; }
.taxi-map-wrap { margin-top: .6rem; border-radius: 12px; overflow: hidden; border: 1px solid var(--border-soft); }
.taxi-map-wrap iframe { width: 100%; height: 220px; border: 0; display: block; }
.taxi-form .bf-row input[readonly] { background: var(--bg-soft); }

/* ===== Модуль аренды ===== */
.rent-form { text-align: left; }
.rent-form .bb-title { font-weight: 700; }
.rent-price-info { font-size: .85rem; font-weight: 700; color: #166534; background: #f0fdf4; border: 1px solid #bbf7d0; border-radius: 8px; padding: .45rem .7rem; margin-bottom: .6rem; text-align: center; }
.rent-fields { border: 1px dashed #cbd5e1; border-radius: 10px; padding: .9rem 1rem; background: var(--bg-soft); }
.rent-fields h3 { margin-top: 0; }

/* ===== PAGINATION ===== */
.pagination { display: flex; align-items: center; justify-content: center; gap: .4rem; margin: 2.5rem 0; flex-wrap: wrap; }
.pgn-btn { min-width: 42px; height: 42px; display: inline-flex; align-items: center; justify-content: center; padding: 0 .75rem; border-radius: 12px; background: var(--card-bg); border: 1px solid var(--border-soft); color: var(--text-soft); font-size: .9rem; font-weight: 600; transition: all .15s; box-shadow: var(--shadow-1); }
.pgn-btn:hover { background: var(--bg-soft); border-color: var(--text-muted); color: var(--text); transform: translateY(-1px); text-decoration: none; }
.pgn-active { background: linear-gradient(135deg, #2563eb, #1d4ed8); color: #fff; border-color: transparent; box-shadow: 0 3px 10px rgba(37,99,235,.35); }
.pgn-active:hover { background: #1d4ed8; color: #fff; }
.pgn-ellipsis { color: var(--text-muted); padding: 0 .2rem; }

/* ===== FORM ==== */
.form-card { max-width: 480px; margin: 1rem auto; background: var(--card-bg); border-radius: 14px; padding: 1.75rem; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.form-card h1, .form-card h2 { margin-bottom: 1rem; font-size: 1.3rem; }
.field { margin-bottom: 1rem; }
.field label { display: block; font-weight: 600; font-size: .875rem; margin-bottom: .25rem; color: var(--text-soft); }
.field input, .field select, .field textarea { width: 100%; padding: .7rem .9rem; border: 1.5px solid var(--border-soft); border-radius: 10px; font-size: .95rem; outline: none; transition: border-color .2s, box-shadow .2s, background .2s; background: var(--bg-soft); color: var(--text); }
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--accent); background: var(--card-bg); box-shadow: 0 0 0 4px rgba(37,99,235,.1); }
.field textarea { resize: vertical; min-height: 100px; }
.field select { cursor: pointer; appearance: auto; }
.field input:hover, .field select:hover, .field textarea:hover { border-color: var(--text-muted); }
.field.field-with-icon { position: relative; }
.field.field-with-icon input { padding-left: 2.3rem; }
.field.field-with-icon .field-icon { position: absolute; left: .75rem; top: 50%; transform: translateY(-50%); font-size: 1rem; opacity: .5; pointer-events: none; }
.field .field-hint { font-size: .75rem; color: var(--text-muted); margin-top: .25rem; }
.field-counter { font-size: .72rem; color: var(--text-muted); text-align: right; margin-top: .2rem; }
.field-required::after { content: ' *'; color: var(--danger); }
.photo-dropzone { border: 2px dashed var(--border-soft); border-radius: var(--radius); padding: 1.4rem; text-align: center; color: var(--text-muted); cursor: pointer; transition: border-color .2s, background .2s; }
.photo-dropzone:hover, .photo-dropzone.drag { border-color: var(--accent); background: var(--accent-soft); }
.photo-dropzone .big { font-size: 2rem; display: block; margin-bottom: .3rem; }
.photo-preview { display: flex; gap: .4rem; margin-top: .5rem; flex-wrap: wrap; }
.photo-preview .pp-item { position: relative; }
.photo-preview img { width: 76px; height: 76px; object-fit: cover; border-radius: 8px; border: 1px solid var(--border-soft); }
.price-format { font-size: .78rem; color: var(--text-muted); margin-top: .3rem; }

/* ===== TOAST / ALERTS ===== */
.toast-container { position: fixed; top: 1rem; right: 1rem; z-index: 9999; display: flex; flex-direction: column; gap: .5rem; pointer-events: none; }
.toast { background: var(--text); color: var(--bg-soft); padding: .75rem 1.2rem; border-radius: var(--radius-sm); font-size: .875rem; font-weight: 500; box-shadow: var(--shadow-3); animation: slideIn .2s ease-out; max-width: 360px; pointer-events: auto; display: flex; align-items: center; gap: .5rem; }
.toast.toast-hide { opacity: 0; transform: translateX(20px); transition: all .25s; }
.toast-ok { background: var(--success); }
.toast-err { background: var(--danger); }

/* Карточка-оповещение о новом заказе такси (водителю) */
.toast-taxi { background: linear-gradient(135deg, #1e3a5f, #2563eb); color: #fff; padding: .6rem .8rem; max-width: 340px; display: flex; align-items: center; gap: .55rem; border-radius: 12px; }
.toast-taxi .toast-taxi-ico { font-size: 1.5rem; flex: 0 0 auto; }
.toast-taxi .toast-taxi-body { flex: 1; min-width: 0; }
.toast-taxi-title { font-weight: 700; font-size: .88rem; }
.toast-taxi-sub { font-size: .75rem; opacity: .92; line-height: 1.35; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.toast-taxi .toast-btn { flex: 0 0 auto; background: rgba(255,255,255,.18); color: #fff; border: 1px solid rgba(255,255,255,.4); border-radius: 999px; padding: .3rem .7rem; font-size: .75rem; font-weight: 600; text-decoration: none; white-space: nowrap; }
.toast-taxi .toast-btn:hover { background: #fff; color: #2563eb; }
.toast-taxi .toast-close { background: none; border: none; color: rgba(255,255,255,.8); cursor: pointer; font-size: .85rem; padding: .1rem .2rem; flex: 0 0 auto; }

/* Индикатор отправки формы: оверлей-спиннер + спиннер в кнопке */
.form-sending-overlay { position: fixed; inset: 0; z-index: 999999; display: flex; align-items: center; justify-content: center; background: rgba(15,23,42,.35); backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px); }
.form-sending-box { display: flex; align-items: center; gap: .6rem; background: var(--card-bg, #fff); color: var(--text, #111); border: 1px solid var(--border-soft); border-radius: 12px; padding: .8rem 1.2rem; font-size: .9rem; font-weight: 600; box-shadow: var(--shadow-3); }
.form-sending-spinner, .btn-spinner { display: inline-block; width: 18px; height: 18px; border: 3px solid var(--border-soft, #e2e8f0); border-top-color: var(--accent, #2563eb); border-radius: 50%; animation: btnSpin .7s linear infinite; }
@keyframes btnSpin { to { transform: rotate(360deg); } }
.btn-spinner { vertical-align: middle; }
.alert { padding: .65rem .95rem; border-radius: var(--radius-sm); font-size: .85rem; margin-bottom: 1rem; animation: fadeIn .2s; line-height: 1.5; }
.alert-err { background: #fee2e2; color: #991b1b; border: 1px solid #fecaca; }
.alert-ok { background: #d1fae5; color: #065f46; border: 1px solid #a7f3d0; }
.alert-info { background: #dbeafe; color: #1d4ed8; border: 1px solid #bfdbfe; }
@keyframes slideIn { from { opacity: 0; transform: translateX(20px); } to { opacity: 1; transform: translateX(0); } }

/* ===== ЛАЙТБОКС (ПОЛНОЭКРАННЫЙ ПРОСМОТР ФОТО) ===== */
.lightbox { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.92); z-index: 99999; align-items: center; justify-content: center; backdrop-filter: blur(8px); cursor: zoom-out; }
.lightbox.open { display: flex; }
.lb-wrap { position: relative; max-width: 92vw; max-height: 90vh; display: flex; align-items: center; justify-content: center; }
.lb-img { max-width: 100%; max-height: 90vh; object-fit: contain; transition: transform .25s cubic-bezier(.25,.46,.45,.94), opacity .2s; cursor: zoom-in; border-radius: 4px; user-select: none; -webkit-user-drag: none; }
.lb-counter { position: absolute; bottom: -2rem; left: 50%; transform: translateX(-50%); color: rgba(255,255,255,.6); font-size: .82rem; font-weight: 500; white-space: nowrap; }
.lb-close { position: absolute; top: 1rem; right: 1rem; width: 44px; height: 44px; border-radius: 50%; background: rgba(255,255,255,.12); color: #fff; border: none; font-size: 1.4rem; cursor: pointer; z-index: 2; transition: background .15s; display: flex; align-items: center; justify-content: center; }
.lb-close:hover { background: rgba(255,255,255,.25); }
.lb-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 52px; height: 52px; border-radius: 50%; background: rgba(255,255,255,.1); color: #fff; border: none; font-size: 2rem; cursor: pointer; z-index: 2; transition: background .15s; display: flex; align-items: center; justify-content: center; }
.lb-nav:hover { background: rgba(255,255,255,.25); }
.lb-prev { left: 1rem; }
.lb-next { right: 1rem; }
@media (max-width: 768px) { .lb-nav { width: 40px; height: 40px; font-size: 1.5rem; } .lb-prev { left: .4rem; } .lb-next { right: .4rem; } }

/* ===== СКРОЛЛБАРЫ ===== */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--border-soft); border-radius: 8px; border: 2px solid var(--bg); }
::-webkit-scrollbar-thumb:hover { background: var(--text-muted); }
* { scrollbar-width: thin; scrollbar-color: var(--border-soft) transparent; }

/* ===== КАЛЕНДАРЬ ЗАНЯТОСТИ (интерактивный) ===== */
.rent-calendar-block { background: var(--card-bg); border: 1px solid var(--border-soft); border-radius: 16px; padding: .9rem 1rem .55rem; margin-bottom: .75rem; }
.rent-cal-head { font-size: .82rem; font-weight: 700; color: var(--text-soft); margin-bottom: .5rem; }
.rent-cal { }
.cal-nav { display: flex; align-items: center; justify-content: space-between; margin-bottom: .6rem; }
.cal-nav-btn { width: 30px; height: 30px; border-radius: 8px; display: inline-flex; align-items: center; justify-content: center; font-size: 1rem; color: var(--text-soft); background: var(--bg-soft); border: 1px solid var(--border-soft); transition: all .15s; }
.cal-nav-btn:hover { background: var(--accent); color: #fff; text-decoration: none; border-color: var(--accent); }
.cal-title { font-size: .85rem; font-weight: 700; color: var(--text); text-transform: capitalize; }
.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.cal-dow { text-align: center; font-size: .6rem; font-weight: 700; color: var(--text-muted); text-transform: uppercase; padding: .2rem 0; }
.cal-cell { text-align: center; font-size: .75rem; font-weight: 500; color: var(--text); padding: .35rem 0; border-radius: 8px; cursor: default; transition: all .12s; }
.cal-cell.cal-busy { background: #fee2e2; color: #b91c1c; text-decoration: line-through; font-weight: 600; }
.cal-cell.cal-past { opacity: .35; }
.cal-cell.cal-today { background: var(--accent); color: #fff; font-weight: 700; box-shadow: 0 2px 8px rgba(37,99,235,.35); }
.cal-cell.cal-clickable { cursor: pointer; }
.cal-cell.cal-clickable:not(.cal-busy):not(.cal-past):hover { background: var(--accent-soft); color: var(--accent); transform: scale(1.1); }
.cal-empty { background: transparent; }
.cal-legend { display: flex; gap: .8rem; font-size: .68rem; color: var(--text-muted); margin-top: .4rem; align-items: center; }
.cal-dot { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.cal-dot-free { background: var(--bg-soft); border: 1px solid var(--border-soft); }
.cal-dot-busy { background: #fecaca; }
/* выбранная дата в календаре */
.cal-cell.cal-selected { background: var(--accent); color: #fff; font-weight: 700; box-shadow: 0 2px 8px rgba(37,99,235,.35); }

/* ===== CALENDAR ENHANCEMENTS ===== */
.cal-weekend { color: var(--danger); }
.cal-range { background: var(--accent-soft); color: var(--text); font-weight: 500; }
.cal-selected.cal-range { background: var(--accent); color: #fff; font-weight: 700; box-shadow: 0 2px 8px rgba(37,99,235,.35); }
.cal-summary { margin-top: .6rem; padding: .5rem .6rem; background: var(--bg-soft); border-radius: 10px; font-size: .82rem; color: var(--text-soft); display: flex; justify-content: space-between; align-items: center; gap: .4rem; flex-wrap: wrap; line-height: 1.5; }
.cal-summary-amount { font-weight: 700; color: var(--text); font-size: .95rem; }

/* ===== АССИСТЕНТ-ПОДСКАЗКИ (guide walkthrough) ===== */
.guide-fab { position: fixed; bottom: 1.25rem; left: 1.25rem; width: 46px; height: 46px; border-radius: 50%; background: var(--text); color: var(--bg-soft); border: none; cursor: pointer; font-size: 1.2rem; box-shadow: 0 6px 20px rgba(0,0,0,.3); transition: all .25s; z-index: 920; display: flex; align-items: center; justify-content: center; }
.guide-fab:hover { transform: scale(1.1); box-shadow: 0 8px 26px rgba(0,0,0,.4); }
.guide-overlay { position: fixed; inset: 0; background: rgba(10,16,32,.5); z-index: 940; }
.guide-hint { position: fixed; width: 340px; background: var(--card-bg); border-radius: 16px; box-shadow: var(--shadow-3); padding: 1rem 1.1rem; z-index: 950; opacity: 0; transition: opacity .2s; }
.guide-hint.show { opacity: 1; }
.guide-title { font-weight: 700; font-size: .95rem; margin-bottom: .3rem; }
.guide-text { font-size: .85rem; color: var(--text-soft); line-height: 1.5; margin-bottom: .6rem; }
.guide-list { display: flex; flex-direction: column; gap: .8rem; }
.guide-card { background: var(--bg-soft); border: 1px solid var(--border-soft); border-radius: 14px; padding: 1rem 1.1rem; transition: box-shadow .2s, border-color .2s; }
.guide-card:hover { box-shadow: var(--shadow-1); border-color: var(--accent); }
.guide-head { display: flex; align-items: flex-start; justify-content: space-between; gap: .6rem; margin-bottom: .35rem; }
.guide-head strong { font-size: .95rem; color: var(--text); line-height: 1.35; }
.guide-rating { display: inline-flex; align-items: center; gap: .2rem; background: #fef9c3; color: #a16207; padding: .15rem .55rem; border-radius: 999px; font-size: .75rem; font-weight: 700; white-space: nowrap; }
.guide-author { display: flex; align-items: center; gap: .4rem; font-size: .78rem; color: var(--text-muted); margin-bottom: .5rem; }
.guide-author .guide-avatar { width: 24px; height: 24px; border-radius: 50%; background: var(--accent-soft); display: inline-flex; align-items: center; justify-content: center; font-weight: 700; color: var(--accent); font-size: .72rem; flex: 0 0 auto; }
.guide-text { font-size: .87rem; color: var(--text-soft); line-height: 1.65; white-space: pre-wrap; }
.guide-actions { display: flex; gap: .5rem; justify-content: flex-end; margin-top: .6rem; border-top: 1px dashed var(--border-soft); padding-top: .55rem; }
.guide-vote { display: inline-flex; align-items: center; gap: .3rem; background: var(--card-bg); border: 1px solid var(--border-soft); border-radius: 999px; padding: .25rem .7rem; font-size: .8rem; color: var(--text-soft); cursor: pointer; transition: all .15s; }
.guide-vote:hover { background: var(--accent-soft); border-color: var(--accent); color: var(--accent); }
@media (max-width: 480px) { .guide-card { padding: .8rem .85rem; } .guide-head { flex-direction: column; gap: .3rem; } }
.guide-actions { display: flex; gap: .4rem; justify-content: flex-end; }
.guide-dots { display: flex; gap: .3rem; justify-content: center; margin-top: .6rem; }
.guide-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--border-soft); }
.guide-dot.active { background: var(--accent); }
.guide-highlight { outline: 3px solid var(--accent); outline-offset: 3px; border-radius: 6px; z-index: 945; animation: guidePulse 1.5s infinite; }
@keyframes guidePulse { 0%,100% { box-shadow: 0 0 0 0 rgba(37,99,235,.4); } 50% { box-shadow: 0 0 0 10px rgba(37,99,235,.12); } }

/* --- Модалки и лайтбокс на мобильных: не прятать контент под таб-баром --- */
@media (max-width: 768px) {
    .modal-overlay { padding-bottom: calc(6rem + env(safe-area-inset-bottom, 0)); align-items: center; z-index: 99999 !important; }
    .modal { max-height: calc(100vh - 6.5rem); overflow-y: auto; }
    .guide-fab { bottom: calc(5rem + env(safe-area-inset-bottom, 0)); left: .85rem; }
    .guide-hint { width: calc(100vw - 1.5rem); max-width: 340px; }
    body.lb-open .mobile-tabbar { display: none; }
    .lightbox .lb-nav { width: 38px; height: 38px; font-size: 1.4rem; }
    .lightbox .lb-close { width: 34px; height: 34px; font-size: .95rem; }
}

/* --- Избранное/сравнение/корзина бейджи в шапке — компактнее --- */
@media (max-width: 480px) {
    .notif-badge { min-width: 16px; height: 16px; font-size: .6rem; line-height: 16px; }
}

/* ============================================================
   МОБИЛЬНАЯ АДАПТАЦИЯ «КАК В ПРИЛОЖЕНИИ»
   Единый блок: всё умещается на экране смартфона, крупные
   тач-зоны, без горизонтальных прокруток, нижний таб-бар.
   ============================================================ */

/* --- Базовый компактный отступ контента --- */
@media (max-width: 820px) {
    main { padding: 1rem .85rem 5.5rem; }
    .container { padding: 0; }
}

/* --- Шапка: компактная, поиск всегда виден --- */
@media (max-width: 768px) {
    .header-inner { padding: .55rem .75rem; gap: .4rem; }
    .logo { font-size: 1rem; }
    .header-search { margin-top: .35rem; order: 10; flex-basis: 100%; }
    .btn-search { padding: .45rem .8rem; font-size: .85rem; }
    .header-city { flex-basis: 100% !important; max-width: 160px; }
}

/* --- Одноколоночный каталог, карточки компактнее --- */
@media (max-width: 768px) {
    .catalog-layout { grid-template-columns: 1fr; }
    .grid { grid-template-columns: repeat(2, 1fr); gap: .65rem; }
    .card-photo { height: 150px; }
    .card-body { padding: .55rem .65rem .6rem; }
    .card-price { font-size: 1.05rem; }
    .card-title { font-size: .8rem; }
    .cat-banner { padding: 1rem; gap: .75rem; align-items: flex-start; }
    .cat-banner-icon { width: 48px; height: 48px; font-size: 2.2rem; }
    .cat-banner-title { font-size: 1.1rem; }
    .cat-banner-count { display: none; }
    /* Мобильные фильтры: drawer поверх сетки */
    .filter-open-btn { display: inline-flex; align-items: center; gap: .35rem; margin-bottom: .75rem; padding: .5rem .9rem; background: var(--card-bg); border: 1.5px solid var(--accent); color: var(--accent); border-radius: 10px; font-size: .82rem; font-weight: 700; cursor: pointer; }
    .filter-open-btn .filter-open-badge { background: var(--accent); color: #fff; border-radius: 999px; font-size: .68rem; padding: .02rem .4rem; font-weight: 700; }
    .filter-overlay { position: fixed; inset: 0; background: rgba(15,23,42,.5); z-index: 900; opacity: 0; pointer-events: none; transition: opacity .2s; }
    .filter-overlay.open { opacity: 1; pointer-events: auto; }
    .filter-sidebar { position: fixed !important; top: 0; bottom: 0; left: 0; width: 86vw; max-width: 340px; z-index: 950; transform: translateX(-105%); transition: transform .25s ease; overflow-y: auto; border-radius: 0 16px 16px 0; box-shadow: var(--shadow-2); background: var(--card-bg) !important; max-height: none !important; }
    .filter-sidebar.open { transform: translateX(0); }
    .filter-close-btn { display: inline-flex; position: sticky; top: 0; margin-bottom: .25rem; z-index: 2; align-self: flex-end; margin-left: auto; background: var(--bg-soft); border: none; border-radius: 8px; width: 28px; height: 28px; align-items: center; justify-content: center; font-size: .9rem; cursor: pointer; color: var(--text-soft); }
}
@media (min-width: 769px) {
    .filter-open-btn, .filter-overlay, .filter-close-btn { display: none; }
}
@media (max-width: 420px) {
    .grid { grid-template-columns: 1fr 1fr; gap: .5rem; }
    .card-photo { height: 130px; }
    .hero-alt { padding: 2.5rem 1rem; }
    .hero-content h1 { font-size: 1.7rem; }
    .hero-sub { font-size: .9rem; }
}

/* --- Карточка товара: одна колонка --- */
@media (max-width: 900px) {
    .lp-layout-new { grid-template-columns: 1fr; gap: 1rem; display: flex; flex-direction: column; }
    .lp-right { position: static; }
    .lp-title { font-size: 1.35rem; }
    .lp-price-val { font-size: 1.7rem; }
    /* Фото на всю ширину экрана */
    .lp-main-photo { height: 55vh; min-height: 320px; border-radius: 0; width: 100vw; position: relative; left: 50%; transform: translateX(-50%); }
    .lp-main-photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; }
    .lp-thumbs { padding: .4rem 1.25rem; }
    .lp-arrow { width: 40px; height: 40px; }
    /* Липкие кнопки действий: прилипают к низу экрана, пока карточка продавца видна */
    .lp-cta-row { position: sticky; bottom: 0; z-index: 30; background: linear-gradient(to bottom, rgba(255,255,255,.0), rgba(255,255,255,.92) 40%, var(--card-bg) 32%); padding: .6rem .2rem .1rem; margin-top: -.1rem; }
    /* Порядок: фото(1) → цена/заголовок(2) → описание+табы(3) → продавец(4) → покупка(5) → остальное */
    .lp-left, .lp-right, .lp-right-inner { display: contents; }
    .lp-gallery-new { order: 1; }
    .lp-header-info { order: 2; }
    .lp-tabs { order: 3; }
    .trustbar { order: 3; }
    .lp-seller-card-new { order: 4; }
    .lp-hr, .lp-box, .lp-seo-text { order: 5; }
    .report-link { order: 6; }
}
@media (max-width: 480px) {
    .lp-main-photo { min-height: 260px; }
    .lp-header-info { padding: .9rem 1rem; }
    .trustbar { display: none !important; margin-top: 0; }
    .paydeliv-grid { grid-template-columns: 1fr; }
    .lp-cta-row { grid-template-columns: 1fr; }
    .lp-cta-row .flex-1 { width: 100%; }
    .compare-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
    .compare-table th, .compare-table td { min-width: 120px; white-space: nowrap; }
    .compare-table th:first-child, .compare-table td:first-child { white-space: normal; min-width: 80px; position: sticky; left: 0; background: var(--card-bg); z-index: 2; }
    .deal-summary { font-size: .82rem; }
    .deal-summary td { padding: .35rem .2rem; }
    .ship-form select, .ship-form input { width: 100% !important; box-sizing: border-box; }
    .cab-actions { flex-wrap: wrap; gap: .35rem; }
    .cab-actions .btn { flex: 1 1 auto; min-width: 0; font-size: .75rem; padding: .35rem .5rem; }
}

/* --- Сделка: одна колонка, чат на всю ширину --- */
@media (max-width: 820px) {
    .deal-layout { grid-template-columns: 1fr; gap: 1rem; }
    .deal-chat { max-height: 70vh; }
}
@media (max-width: 480px) {
    .deal-main { padding: .85rem; }
    .deal-steps { font-size: .7rem; }
    .deal-step-icon { font-size: .9rem; }
    .deal-summary td { font-size: .78rem; padding: .3rem .15rem; }
    .deal-header h2 { font-size: 1rem; }
    .deal-header .btn { font-size: .78rem; padding: .3rem .5rem; }
    .deal-box { padding: .7rem; }
    .deal-chat { max-height: 50vh; min-height: 30vh; padding: .6rem; }
    .chat-msg { max-width: 92%; font-size: .8rem; }
    .ship-form select, .ship-form input { font-size: .82rem; padding: .5rem .5rem; }
}

/* --- Админка: сетки в одну колонку, таблицы скроллятся --- */
@media (max-width: 768px) {
    .admin-grid-2 { grid-template-columns: 1fr; }
    .admin-tabs { overflow-x: auto; -webkit-overflow-scrolling: touch; flex-wrap: nowrap; padding-bottom: .3rem; }
    .admin-tab { white-space: nowrap; }
    .admin-modules-scroll { overflow-x: auto; max-height: none; }
    .admin-modules-scroll .tbl { min-width: 640px; }
    .admin-table-scroll { overflow-x: auto; }
    .admin-table-scroll .tbl { min-width: 560px; }
    .stat-cards { grid-template-columns: repeat(2, 1fr); }
}

/* --- Формы: на всю ширину, удобные отступы --- */
@media (max-width: 600px) {
    .form-card, .form-wide { padding: 1rem .85rem; }
    .form-section { margin-bottom: .85rem; }
    .bf-row { flex-wrap: wrap; }
    .bf-row label { min-width: 100%; }
    .ship-options { grid-template-columns: 1fr; }
    .extras-row { flex-wrap: wrap; }
    .extras-row input { min-width: 120px; flex: 1 1 40%; }
    .booking-form textarea { min-height: 60px; }
}

/* --- Таблицы сравнения и прочее без горизонтальной прокрутки страницы --- */
.compare-table-wrap, .compare-table-wrap { overflow-x: auto; }
body { overflow-x: hidden; }

/* --- Мобильный таб-бар: чуть выше, аккуратнее --- */
@media (max-width: 768px) {
    .mobile-tabbar { padding-bottom: max(.4rem, env(safe-area-inset-bottom, .4rem)); }
    .mob-tab-ico { font-size: 1.25rem; }
    .mob-add { width: 34px; height: 34px; font-size: 1.4rem; }
}

/* --- Кнопки: достаточная тач-зона (44px) --- */
@media (max-width: 768px) {
    a.btn, .btn { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
    .btn-sm { min-height: 38px; }
    .lp-arrow, .lb-nav { opacity: 1; }
    .notif-panel { width: 96vw; right: .4rem; }
}

/* --- Кабинет: карточки компактнее --- */
@media (max-width: 600px) {
    .cab-head { padding: .9rem 1rem; flex-wrap: wrap; }
    .cabinet-item { padding: .6rem .7rem; }
    .booking-card { padding: .8rem; }
    .admin-head { flex-wrap: wrap; row-gap: .4rem; }
    .promo-card-price { font-size: 1.2rem; }
}

/* --- Меньше 380px: минимум слой, карточки в 1 колонку --- */
@media (max-width: 380px) {
    .grid { grid-template-columns: 1fr; }
    .card-photo { height: 180px; }
    .lp-main-photo { height: 230px; }
    main { padding: .75rem .6rem 5.5rem; }
}

/* --- Переключение видимости для мобильного / десктопа --- */
@media (max-width: 900px) {
    .similar-desktop { display: none; }
    .similar-mobile { display: block; }
}
@media (min-width: 901px) {
    .similar-desktop { display: block; }
    .similar-mobile { display: none; }
}


/* --- Форма добавления: плавающий предпросмотр --- */
.add-layout > aside {
    align-self: stretch;
    min-width: 0;
}
.add-layout > aside > div {
    position: sticky;
    top: 5.5rem;
    align-self: start;
}

/* На узких экранах превью прячем под формой (одна колонка) */
@media (max-width: 820px) {
    .add-layout {
        grid-template-columns: 1fr !important;
    }
    .add-layout > aside > div {
        position: static;
    }
}


/* ===== Маркеры состояния/предложения на карточке (offer-badge) ===== */
.offer-badge { display: inline-block; padding: .15rem .5rem; border-radius: 999px; font-size: .68rem; font-weight: 700; color: #fff; line-height: 1.3; width: fit-content; white-space: nowrap; }
.badge-urgent { background: linear-gradient(135deg, #dc2626, #ef4444); box-shadow: 0 2px 6px rgba(220,38,38,.4); }
.badge-torg { background: linear-gradient(135deg, #d97706, #f59e0b); box-shadow: 0 2px 6px rgba(217,119,6,.4); }
.badge-newo { background: linear-gradient(135deg, #16a34a, #22c55e); box-shadow: 0 2px 6px rgba(22,163,74,.4); }
.badge-bargain { background: linear-gradient(135deg, #16a34a, #22c55e); box-shadow: 0 2px 6px rgba(22,163,74,.4); }


/* ===== Моё заведение (place.php): компактные раскрывающиеся секции ===== */
.place-wrap .pl-sec { border: 1px solid var(--border-soft); border-radius: 12px; background: var(--card-bg); margin: 0 0 .6rem; overflow: hidden; padding: 0; box-shadow: none; }
.place-wrap .pl-sec > summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: .45rem; padding: .6rem .8rem; font-weight: 700; font-size: .92rem; margin: 0; transition: background .15s; }
.place-wrap .pl-sec > summary::-webkit-details-marker { display: none; }
.place-wrap .pl-sec > summary:hover { background: var(--bg-soft); }
.place-wrap .pl-sec[open] > summary { border-bottom: 1px solid var(--border-soft); }
.place-wrap .pl-arrow { margin-left: auto; color: var(--text-muted); font-size: .9rem; transition: transform .18s; }
.place-wrap .pl-sec[open] .pl-arrow { transform: rotate(180deg); }
.place-wrap .pl-sec .pl-hint { font-weight: 400; font-size: .73rem; color: var(--text-muted); }
.place-wrap .pl-sec > *:not(summary) { padding-left: .8rem; padding-right: .8rem; }
.place-wrap .pl-sec > *:not(summary):last-child { padding-bottom: .8rem; }
.place-wrap .pl-sec > .form-section, .place-wrap .pl-sec > .panel { padding: 0 .8rem .8rem; margin: 0; box-shadow: none; border: none; background: transparent; border-radius: 0; }
.place-wrap .pl-sec[open] > *:not(summary) { animation: plFade .18s ease; }
@keyframes plFade { from { opacity: 0; transform: translateY(-3px); } to { opacity: 1; transform: none; } }
.place-wrap .pl-sec .booking-card { padding: .5rem .6rem; }
.place-wrap .pl-sec .stat-cards { margin: .6rem 0 0; }
/* Быстрые переходы по секциям */
.pl-nav { display: flex; flex-wrap: wrap; gap: .35rem; margin: .6rem 0 .8rem; }
.pl-nav a { display: inline-flex; align-items: center; gap: .3rem; padding: .25rem .6rem; border: 1px solid var(--border-soft); border-radius: 999px; font-size: .75rem; color: var(--text); background: var(--bg-soft); text-decoration: none; transition: .15s; }
.pl-nav a:hover { border-color: var(--accent); color: var(--accent); }
.pl-nav a .pl-nav-n { background: var(--accent); color: #fff; border-radius: 999px; font-size: .62rem; padding: .02rem .35rem; font-weight: 700; }
.pl-nav a.pl-nav-attn { border-color: #eab308; background: rgba(234,179,8,.1); }
/* Фильтр блюд */
.pl-menu-filter { width: 100%; padding: .35rem .6rem; border: 1px solid var(--border-soft); border-radius: 8px; font-size: .82rem; margin-bottom: .5rem; outline: none; background: var(--bg-soft); color: var(--text); }
.pl-menu-filter:focus { border-color: var(--accent); }
.place-wrap .pl-grid-1 { grid-template-columns: 1fr !important; }

/* ===== Меню заведения: форма добавления и карточки блюд ===== */
.dish-add-form { display: flex; flex-direction: column; gap: .45rem; margin-bottom: .6rem; background: var(--bg-soft); border: 1px solid var(--border-soft); border-radius: 12px; padding: .6rem; }
.dish-add-grid { display: grid; grid-template-columns: 2fr 1fr .9fr 1.2fr; gap: .4rem; }
.dish-field { display: flex; flex-direction: column; gap: .18rem; }
.dish-field label { font-size: .66rem; font-weight: 600; color: var(--text-muted); }
.dish-field input, .dish-field textarea { padding: .32rem .5rem; border: 1px solid var(--border-soft); border-radius: 8px; font-size: .8rem; background: var(--card-bg); color: var(--text); outline: none; transition: border-color .15s, box-shadow .15s; }
.dish-field input:focus, .dish-field textarea:focus { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-soft); }
.dish-field textarea { resize: vertical; }
.dish-add-desc { display: flex; align-items: flex-end; gap: .4rem; }
.dish-add-submit { flex: 0 0 auto; }
.dish-photo-btn { display: inline-flex; align-items: center; gap: .3rem; padding: .34rem .6rem; border: 1px dashed var(--border); border-radius: 8px; font-size: .75rem; font-weight: 600; color: var(--text-soft); cursor: pointer; background: var(--card-bg); white-space: nowrap; transition: all .15s; }
.dish-photo-btn:hover { border-color: var(--accent); color: var(--accent); }
.dish-photo-btn.edit { border-style: solid; }
.dish-photo-preview { width: 40px; height: 40px; object-fit: cover; border-radius: 8px; flex: 0 0 auto; border: 1px solid var(--border-soft); }
.dish-card { border-radius: 10px; overflow: hidden; }
.dish-card-img { height: 110px; display: flex; align-items: center; justify-content: center; overflow: hidden; background: linear-gradient(145deg, var(--border-soft), var(--bg-soft)); }
.dish-card-img img { width: 100%; height: 100%; object-fit: cover; }
.dish-card-emoji { font-size: 2rem; opacity: .5; }
.dish-card-body { padding-top: .35rem; }
.dish-card-title { font-size: .82rem; font-weight: 700; color: var(--text); line-height: 1.25; }
.dish-card-sub { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem; margin-top: .2rem; font-size: .68rem; }
.dish-card-sub b { color: var(--accent); font-weight: 800; font-size: .8rem; }
.dish-card-prep { color: var(--text-muted); display: inline-flex; align-items: center; gap: .15rem; }
.dish-card-cat { background: var(--accent-soft); color: var(--accent); padding: .05rem .4rem; border-radius: 999px; font-weight: 600; }
.dish-card-desc { font-size: .66rem; color: var(--text-soft); margin-top: .2rem; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.dish-edit-title { font-size: .78rem; font-weight: 700; color: var(--accent); margin-bottom: .3rem; }
.dish-edit-form { display: flex; flex-direction: column; gap: .3rem; }
.dish-photo-edit { width: 42px; height: 42px; object-fit: cover; border-radius: 8px; flex: 0 0 auto; border: 1px solid var(--border-soft); }
.btn-danger { color: #dc2626 !important; }
.btn-danger:hover { background: rgba(220,38,38,.12) !important; }
@media (max-width: 640px) {
    .dish-add-grid { grid-template-columns: 1fr 1fr; }
    .dish-add-desc { flex-wrap: wrap; }
    .dish-photo-preview { display: none !important; }
}
@media (max-width: 640px) { .place-wrap .pl-sec > summary { padding: .55rem .6rem; font-size: .88rem; } }


/* ===== Админ-панель: боковая навигация (в стиле крамол.рф) ===== */
.admin-layout { display: flex; gap: 1rem; align-items: flex-start; }
.adm-side { flex: 0 0 230px; width: 230px; position: sticky; top: 5.5rem; align-self: flex-start; height: calc(100vh - 7rem); overflow-y: auto; overflow-x: hidden; scrollbar-width: thin; }
.adm-side:hover::-webkit-scrollbar { width: 6px; }
.adm-side::-webkit-scrollbar { width: 4px; }
.adm-side::-webkit-scrollbar-thumb { background: var(--border-soft); border-radius: 99px; }
.adm-side::-webkit-scrollbar-track { background: transparent; }
.adm-main { flex: 1 1 auto; min-width: 0; }
.admin-tabs { display: flex; flex-direction: column; gap: .15rem; background: var(--card-bg); border: 1px solid var(--border-soft); border-radius: 12px; padding: .5rem; }
.admin-tab { display: flex; align-items: center; gap: .4rem; padding: .42rem .6rem; border-radius: 8px; color: var(--text); text-decoration: none; font-size: .85rem; transition: background .15s, color .15s; }
.admin-tab:hover { background: var(--bg-soft); }
.admin-tab.active { background: var(--accent-soft); color: var(--accent); font-weight: 700; }
.atg { font-size: .66rem; text-transform: uppercase; letter-spacing: .05em; color: var(--text-muted); padding: .5rem .6rem .15rem; font-weight: 800; }
/* Под-навигация настроек */
.adm-subnav { display: flex; flex-wrap: wrap; gap: .35rem; margin: 0 0 .9rem; }
.adm-subnav a { display: inline-flex; align-items: center; gap: .3rem; padding: .28rem .6rem; border: 1px solid var(--border-soft); border-radius: 999px; font-size: .76rem; color: var(--text); background: var(--card-bg); text-decoration: none; transition: .15s; scroll-margin-top: 6rem; }
.adm-subnav a:hover { border-color: var(--accent); color: var(--accent); }
.adm-subnav a.s-active { border-color: var(--accent); background: var(--accent-soft); color: var(--accent); font-weight: 700; }
/* Секции настроек с якорями */
.adm-sec { scroll-margin-top: 6rem; border: 1px solid var(--border-soft); border-radius: 12px; background: var(--card-bg); padding: 1rem 1.1rem; }
.adm-sec h3 { display: flex; align-items: center; gap: .4rem; margin: 0 0 .8rem; font-size: .95rem; }
@media (max-width: 1100px) {
    .admin-layout { flex-direction: column; }
    .adm-side { width: 100%; position: static; height: auto; overflow: visible; }
    .admin-tabs { flex-direction: row; flex-wrap: wrap; gap: .25rem; }
    .atg { display: none; }
}


/* ===== Настройки: поиск + сворачивание секций ===== */
.adm-toolbar { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; margin: 0 0 .9rem; grid-column: 1 / -1; }
.adm-toolbar input { flex: 1 1 220px; min-width: 200px; padding: .4rem .7rem; border: 1px solid var(--border-soft); border-radius: 8px; font-size: .85rem; background: var(--bg-soft); color: var(--text); outline: none; }
.adm-toolbar input:focus { border-color: var(--accent); }
.adm-toolbar .adm-toolbar-count { font-size: .75rem; color: var(--text-muted); }
.adm-sec h3 { cursor: pointer; user-select: none; }
.adm-sec h3:hover { color: var(--accent); }
.adm-sec .adm-caret { margin-left: auto; font-size: .7rem; color: var(--text-muted); transition: transform .15s; }
.adm-sec.set-collapsed > *:not(h3) { display: none; }
.adm-sec.set-collapsed .adm-caret { transform: rotate(-90deg); }
.adm-sec.is-hidden { display: none !important; }


/* ===== Города: заголовки областей (сворачивание + счётчики) ===== */
.city-reg-head { display: flex; align-items: center; gap: .4rem; cursor: pointer; user-select: none; background: var(--bg-soft); border: 1px solid var(--border-soft); border-radius: 8px; padding: .3rem .5rem; margin: .45rem 0 .15rem; font-size: .82rem; position: sticky; top: 0; z-index: 2; }
.city-reg-head:hover { border-color: var(--accent); color: var(--accent); }
.city-reg-head .city-reg-meta { font-size: .7rem; color: var(--text-muted); }
.city-reg-head .city-reg-caret { margin-left: auto; font-size: .7rem; color: var(--text-muted); transition: transform .15s; }
.city-reg-head.is-collapsed .city-reg-caret { transform: rotate(-90deg); }

/* ===== Такси: бейдж «новых» и мобильные табы ===== */
.chip-new { background: #ef4444; color: #fff; border: none; animation: chipPulse 1.4s infinite; }
@keyframes chipPulse { 0% { box-shadow: 0 0 0 0 rgba(239,68,68,.4); } 70% { box-shadow: 0 0 0 5px rgba(239,68,68,0); } 100% { box-shadow: 0 0 0 0 rgba(239,68,68,0); } }

.taxi-tabs { display: none; }
@media (max-width: 768px) {
    .taxi-tabs { display: flex; gap: .35rem; overflow-x: auto; margin: .9rem 0 .4rem; padding-bottom: .2rem; -webkit-overflow-scrolling: touch; }
    .taxi-tabs::-webkit-scrollbar { display: none; }
    .taxi-tab { flex: 0 0 auto; white-space: nowrap; padding: .42rem .75rem; border-radius: 999px; border: 1px solid var(--border-soft); background: var(--bg-soft); font-size: .8rem; font-weight: 600; color: var(--text-muted); cursor: pointer; transition: .15s; }
    .taxi-tab.active { background: var(--accent); border-color: var(--accent); color: #fff; }
}
@media (max-width: 768px) {
    .taxi-wrap .form-section { display: none; }
    .taxi-wrap .form-section.tab-active { display: block; }
    .taxi-wrap .form-section > summary { display: none !important; }
}
@media (min-width: 769px) {
    .taxi-tabs, .taxi-wrap .form-section[data-tab]::before { display: none; }
}

/* ── Конструктор столиков: выбор + панель редактирования ── */
#tableCanvas .table-item { position: relative; }
#tableCanvas .table-item.selected { outline: 2px solid var(--accent); outline-offset: 2px; z-index: 20; }
#tableCanvas .table-item.selected::after { content: '🍽'; position: absolute; top: -14px; left: 50%; transform: translateX(-50%); background: var(--accent); color: #fff; font-size: .6rem; padding: 0 .35rem; border-radius: 6px; }
/* Чёткая видимость столиков на плане: непрозрачная заливка, тень, граница */
#tableCanvas .table-item, .pub-table {
    background: transparent !important;
    box-shadow: 0 1px 4px rgba(0,0,0,.2) !important;
}
#tableCanvas .table-item:hover, .pub-table:hover { border-color: var(--accent) !important; }
/* Выбранный столик: зелёный с прозрачностью 89% (alpha .11) + рамка — план просвечивает */
#tableCanvas .table-item.selected, .pub-table.selected {
    background: rgba(34,197,94,.11) !important;
    box-shadow: 0 0 0 2px #16a34a, 0 2px 8px rgba(22,163,74,.35) !important;
    border-color: #16a34a !important;
}
.pub-table.selected, .pub-table:focus { outline: none; }
.table-edit-panel { position: absolute; z-index: 60; width: 210px; background: var(--card-bg); border: 1px solid var(--border-soft); border-radius: 12px; box-shadow: var(--shadow-2); padding: .6rem .7rem; font-size: .78rem; pointer-events: auto; }
.table-edit-panel .tep-head { font-weight: 700; margin-bottom: .4rem; color: var(--accent); }
.table-edit-panel .tep-row { display: flex; align-items: center; gap: .4rem; margin-bottom: .3rem; }
.table-edit-panel .tep-row label { flex: 0 0 46px; color: var(--text-muted); font-size: .72rem; }
.table-edit-panel .tep-row input, .table-edit-panel .tep-row select { flex: 1; min-width: 0; padding: .3rem .4rem; border: 1px solid var(--border-soft); border-radius: 6px; font-size: .78rem; }
.table-edit-panel .tep-actions { display: flex; gap: .3rem; margin-top: .45rem; flex-wrap: wrap; }

/* ── Онлайн-запись: сетка свободных слотов ── */
.srv-slots { display: flex; flex-wrap: wrap; gap: .35rem; }
.srv-slot { padding: .35rem .6rem; border: 1px solid var(--border-soft); border-radius: 8px; background: var(--card-bg); font-size: .78rem; font-weight: 600; color: var(--text); cursor: pointer; transition: all .12s; min-width: 52px; text-align: center; }
.srv-slot:hover { border-color: var(--accent); color: var(--accent); }
.srv-slot.sel { background: var(--accent); border-color: var(--accent); color: #fff; }
.srv-slot.busy { background: var(--bg-soft); color: var(--text-muted); border-color: var(--border-soft); text-decoration: line-through; cursor: not-allowed; opacity: .55; }
.srv-slot.busy:hover { border-color: var(--border-soft); color: var(--text-muted); }

/* ── Реклама: баннеры ── */
.ad-slot { position: relative; border-radius: 14px; overflow: hidden; }
.ad-slot a img { display: block; width: 100%; border-radius: 12px; transition: filter .2s, transform .2s; }
.ad-slot a:hover img { filter: brightness(.94); }
.ad-slot::before { content: '📢'; position: absolute; top: 8px; left: 8px; z-index: 2; background: rgba(0,0,0,.5); color: #fff; font-size: .6rem; padding: .12rem .4rem; border-radius: 6px; font-weight: 600; letter-spacing: .02em; }
/* Базовое «умное вписывание»: любые картинки баннеров заполняют слот целиком, не раздувая страницу */
.ad-slot .ad-block img, .ad-block.ad-hero img, .ad-block.ad-sidebar img,
.ad-block.ad-mobile img, .ad-block.ad-listing img, .ad-block.ad-footer img,
.ad-block.ad-header img {
    width: 100%; height: 100%; object-fit: cover; display: block;
}
/* Горизонтальные баннеры шапки/футера: вписываем квадратные картинки в широкие слоты */
.ad-slot-header { width: 100%; overflow: hidden; }
.ad-slot-header .ad-block img { width: 100%; height: 130px; object-fit: cover; display: block; }
.ad-slot-footer .ad-block img { width: 100%; height: 120px; object-fit: cover; display: block; }
.ad-slot-hero .ad-block img, .ad-block.ad-hero img { height: 150px; }
.ad-slot-listing .ad-block img, .ad-block.ad-listing img { height: 180px; }
.ad-block.ad-sidebar img { height: 180px; }
.ad-block.ad-mobile img { height: 130px; }
/* Мобильный баннер: скрыт на десктопе, показывается только на телефонах */
.ad-mobile-only { display: none; }
@media (max-width: 768px) {
    .ad-mobile-only { display: block; }
}
/* Красивые баннеры: рамка-акцент, мягкая тень, подпись на градиенте, CTA */
.ad-anchor {
    position: relative; display: block; overflow: hidden; border-radius: 14px;
    border: 1px solid var(--border-soft, #e2e8f0);
    box-shadow: 0 4px 18px rgba(15, 23, 42, .08);
    background: #fff;
    transition: box-shadow .3s ease, border-color .3s ease;
}
.ad-anchor:hover { box-shadow: 0 10px 28px rgba(37,99,235,.18); border-color: var(--accent-soft, #dbeafe); }
.ad-anchor .ad-img {
    display: block; width: 100%;
    object-fit: cover; object-position: center center;
    transition: transform .6s ease, filter .3s ease;
    filter: saturate(1.04);
}
.ad-anchor:hover .ad-img { transform: scale(1.05); filter: saturate(1.1) brightness(1.02); }
.ad-cap {
    position: absolute; inset: 0; display: flex; align-items: flex-end;
    padding: 1rem 1.1rem .85rem;
    background: linear-gradient(180deg, rgba(0,0,0,0) 30%, rgba(0,0,0,.55) 75%, rgba(0,0,0,.72));
    pointer-events: none;
}
.ad-cap-v { display: flex; flex-direction: column; gap: .18rem; max-width: 100%; }
.ad-cap-title { color: #fff; font-size: 1.05rem; line-height: 1.25; font-weight: 800; text-shadow: 0 1px 4px rgba(0,0,0,.45); max-width: 100%; }
.ad-cap-desc { color: rgba(255,255,255,.94); font-size: .8rem; line-height: 1.35; font-style: normal; max-width: 100%; text-shadow: 0 1px 3px rgba(0,0,0,.4); }
.ad-cap-cta {
    display: inline-flex; align-items: center; gap: .3rem; align-self: flex-start;
    margin-top: .3rem; padding: .3rem .75rem; border-radius: 999px;
    background: linear-gradient(135deg, var(--accent, #2563eb), var(--accent2, #4f8ef7));
    color: #fff; font-size: .74rem; font-weight: 700; font-style: normal;
    box-shadow: 0 3px 10px rgba(37,99,235,.35);
    transition: transform .18s ease, box-shadow .18s ease;
}
.ad-anchor:hover .ad-cap-cta { transform: translateX(3px) scale(1.04); box-shadow: 0 5px 16px rgba(37,99,235,.45); }
@media (max-width: 600px) {
    .ad-cap-title { font-size: .9rem; }
    .ad-cap-desc { font-size: .72rem; }
    .ad-cap-cta { font-size: .68rem; }
}

/* Баннеры popup и sticky */
.ad-popup .ad-block img, .ad-popup img { width: 100%; max-height: 420px; object-fit: cover; display: block; }
.ad-popup .ad-block { border-radius: 14px; overflow: hidden; }
.ad-sticky .ad-block img { width: 100%; max-height: 82px; object-fit: contain; display: block; }
.ad-sticky .ad-block { margin: 0 auto; max-width: 600px; }
.ad-block.ad-sticky { padding: 0; }
@media (min-width: 768px) { #adSticky { display: none !important; } }
/* Адаптив: на мобильном hero/listing чуть ниже */
@media (max-width: 600px) {
    .ad-slot-hero .ad-block img, .ad-block.ad-hero img { height: 130px; }
    .ad-slot-listing .ad-block img, .ad-block.ad-listing img { height: 150px; }
    .ad-block.ad-sidebar img { height: 150px; }
}
.grid-ad .card-ad {
    border: 1px solid var(--border-soft, #e2e8f0);
    box-shadow: 0 3px 14px rgba(15,23,42,.06);
    border-radius: 14px; overflow: hidden; position: relative;
    transition: box-shadow .25s ease, transform .25s ease;
}
.grid-ad .card-ad:hover { box-shadow: 0 8px 24px rgba(37,99,235,.15); transform: translateY(-2px); }
.grid-ad .card-ad img { object-fit: cover; object-position: center; }
/* Умное заполнение: баннерная картинка всегда занимает всю площадь фото-зоны карточки,
   без искажений и «пустых» полей — обрезается по центру под пропорции контейнера. */
.grid-ad .card-ad .card-photo { width: 100%; height: 100%; min-height: 190px; background: #eef2f7; }
.grid-ad .card-ad .card-photo img { width: 100%; height: 100%; display: block; object-fit: cover; object-position: center; }
.grid-ad .card-wrap { height: 100%; }
.grid-ad .card-ad { height: 100%; }
/* Для широких полос-баннеров тоже гарантируем fill по ширине слота с обрезкой */
.ad-anchor .ad-img { height: auto; min-width: 100%; width: 100%; object-fit: cover; object-position: center; }
/* Чипы-переменные шаблонов */
.atm-var { display:inline-block; padding:.18rem .45rem; border:1px solid var(--border-soft); border-radius:6px; background:var(--card-bg); font-size:.72rem; font-family:monospace; color:var(--accent); transition:all .12s; }
.atm-var:hover { background:var(--accent); color:#fff; border-color:var(--accent); }
/* Выбор сферы заведения — карточки-направления */
.shop-type-opt { display:flex; flex-direction:column; align-items:center; gap:.25rem; min-width:92px; padding:.45rem .5rem; border:1.5px solid var(--border-soft); border-radius:12px; background:var(--card-bg); color:var(--text-soft); cursor:pointer; transition:all .15s; }
.shop-type-opt:hover { border-color:var(--accent); transform:translateY(-2px); }
.shop-type-opt.active { border-color:var(--accent); background:var(--accent-soft); color:var(--accent); font-weight:600; box-shadow:0 2px 10px rgba(37,99,235,.15); }

/* Бейдж «Из магазина» — унифицирован с остальными бейджами карточки (.promo-badge/.card-new-badge) */
.promo-store { display: inline-block; vertical-align: middle; padding: .15rem .5rem; border-radius: 999px; font-size: .68rem; font-weight: 700; color: #fff !important; line-height: 1.3; width: fit-content; background: linear-gradient(135deg, #7c3aed, #a78bfa); }
.promo-store:hover { filter: brightness(1.1); }
.promo-store:not([href]), .promo-store[href] { text-decoration: none; }
.store-from-badge { background: rgba(124,58,237,.12); border: 1px solid rgba(124,58,237,.35); color: #6d28d9; }
/* ===== Админка: выравнивание форм настроек ===== */
.adm-sec .booking-form .bf-row {
    display: grid;
    grid-template-columns: minmax(190px, 240px) minmax(0, 1fr);
    gap: .7rem;
    align-items: start;
}
.adm-sec .booking-form .bf-row > label:not(.filter-check):not(.select-label):first-child {
    min-width: 0;
    padding-top: .5rem;
    line-height: 1.25;
    white-space: normal;
    overflow-wrap: break-word;
}
.adm-sec .booking-form .bf-row input,
.adm-sec .booking-form .bf-row select {
    width: 100%;
    min-width: 0;
    flex: auto;
    box-sizing: border-box;
}
.adm-sec .booking-form .bf-row .filter-check {
    min-width: 0;
    align-self: center;
    line-height: 1.3;
}
.adm-sec .booking-form .bf-row textarea {
    width: 100%;
    box-sizing: border-box;
}
.adm-sec .booking-form .bf-row:has(.filter-check) > label:not(.filter-check):first-child {
    align-self: center;
}
.adm-sec .booking-form .bf-row .bf-row {
    grid-column: 2 / -1;
    display: grid;
    grid-template-columns: minmax(110px, 170px) minmax(0, 1fr);
    gap: .7rem;
    align-items: center;
    margin: 0 !important;
}
.adm-sec .booking-form .bf-row .bf-row > label:first-child {
    padding-top: 0;
    font-size: .78rem;
}
@media (max-width: 640px) {
    .adm-sec .booking-form .bf-row {
        grid-template-columns: 1fr;
        gap: .25rem;
    }
    .adm-sec .booking-form .bf-row .bf-row {
        grid-column: 1 / -1;
        grid-template-columns: 1fr;
    }
}


/* Голосовой ввод во все поля */
.has-voice-input { position: relative; }
.auto-voice-btn { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); z-index: 5; width: 30px; height: 30px; border: none; background: var(--accent-soft, #eef2ff); color: var(--accent, #2563eb); border-radius: 50%; cursor: pointer; font-size: 1rem; line-height: 1; display: flex; align-items: center; justify-content: center; box-shadow: 0 1px 4px rgba(0,0,0,.15); transition: transform .15s, background .15s; }
.auto-voice-btn:hover { transform: translateY(-50%) scale(1.12); background: var(--accent, #2563eb); color: #fff; }
.auto-voice-btn.voice-btn-on { background: var(--danger, #dc2626); color: #fff; }
.auto-voice-btn.voice-btn-on::before { content: ''; position: absolute; inset: -6px; border-radius: 50%; border: 2px solid var(--danger, #dc2626); opacity: .6; animation: voicePulse 1.2s ease-out infinite; z-index: -1; }
@keyframes voicePulse { 0% { transform: scale(.7); opacity: .7; } 70% { transform: scale(1.35); opacity: 0; } 100% { opacity: 0; } }
.autovoice-note { position: absolute; right: 44px; top: 50%; transform: translateY(-50%); z-index: 6; font-size: .72rem; color: var(--text-muted); pointer-events: none; white-space: nowrap; opacity: 0; transition: opacity .2s; background: var(--card-bg); border: 1px solid var(--border-soft); border-radius: 999px; padding: .12rem .6rem; }
.autovoice-note.show { opacity: 1; }
.auto-voice-btn + textarea, .auto-voice-btn + input { padding-right: 42px; }
/* Кнопка микрофона не наезжает на текст: отступ у полей внутри обёртки с микрофоном */
.has-voice-input > input, .has-voice-input > textarea {
    padding-right: 42px !important;
    box-sizing: border-box;
}
/* поле-ссылка (readonly, но voz активен) */
.has-voice-input > input[readonly] { padding-right: 42px !important; }

/* ============================================================
   ШАБЛОНИЗАТОР СТРАНИЦ (рендер блоков макета)
   ============================================================ */
.pl-render { display: flex; flex-direction: column; gap: .9rem; margin-bottom: 1rem; }
.pl-row { display: grid; gap: .9rem; }
.pl-cols-1 .pl-row { grid-template-columns: 1fr; }
.pl-cols-2 .pl-row { grid-template-columns: repeat(2, 1fr); }
.pl-cols-3 .pl-row { grid-template-columns: repeat(3, 1fr); }
.pl-cols-4 .pl-row { grid-template-columns: repeat(4, 1fr); }
.pl-cell { min-width: 0; }
.pl-cell-1 { grid-column: span 1; } .pl-cell-2 { grid-column: span 2; } .pl-cell-3 { grid-column: span 3; } .pl-cell-4 { grid-column: span 4; }
.pl-title { font-size: 1.05rem; font-weight: 800; margin-bottom: .5rem; display: flex; align-items: center; gap: .4rem; }
.pl-cats, .pl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: .6rem; }
.pl-cat { display: flex; align-items: center; gap: .5rem; padding: .55rem .7rem; background: var(--card-bg); border: 1px solid var(--border-soft); border-radius: 12px; text-decoration: none; color: var(--text); font-size: .85rem; font-weight: 600; transition: .15s; }
.pl-cat:hover { border-color: var(--accent); color: var(--accent); transform: translateY(-1px); }
.pl-mini { display: flex; flex-direction: column; gap: .15rem; padding: .6rem .7rem; background: var(--card-bg); border: 1px solid var(--border-soft); border-radius: 12px; text-decoration: none; color: var(--text); font-size: .85rem; transition: .15s; min-height: 54px; }
.pl-mini:hover { border-color: var(--accent); color: var(--accent); transform: translateY(-1px); }
@media (max-width: 768px) {
    .pl-cols-2 .pl-row, .pl-cols-3 .pl-row, .pl-cols-4 .pl-row { grid-template-columns: 1fr 1fr; }
    .pl-cell-2, .pl-cell-3, .pl-cell-4 { grid-column: span 2; }
}
@media (max-width: 480px) {
    .pl-cols-2 .pl-row, .pl-cols-3 .pl-row, .pl-cols-4 .pl-row { grid-template-columns: 1fr; }
    .pl-cell-2, .pl-cell-3, .pl-cell-4 { grid-column: span 1; }
    .pl-cats, .pl-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ============================================================
   МОБИЛЬНАЯ АДАПТАЦИЯ АДМИНКИ (категории, таблицы, стат-карточки)
   ============================================================ */
@media (max-width: 768px) {
    /* Горизонтальная лента категорий админки: компактные чипы */
    .admin-tabs { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: thin; }
    .admin-tab { white-space: nowrap; font-size: .78rem; padding: .32rem .5rem; }
    .admin-head { flex-direction: column; align-items: flex-start; gap: .25rem; }
    .admin-head h2 { font-size: 1.1rem; }
    .adm-sec { padding: .8rem .85rem; }
    .adm-sec h3 { font-size: .9rem; }
    .stat-cards.stat-cards-sm { grid-template-columns: repeat(2, 1fr); gap: .5rem; }
    .stat-cards-sm .stat-num { font-size: 1.2rem; }
    /* Таблицы админки — прокрутка без разрыва */
    .adm-main .admin-table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
    .adm-main .admin-table-scroll .tbl { min-width: 560px; }
    /* Кнопки-действия в строках не разрываются */
    .adm-main .tbl form { display: inline-flex; gap: .2rem; flex-wrap: wrap; }
    .adm-main .tbl .btn { margin-bottom: .2rem; }
}
@media (max-width: 480px) {
    .stat-cards.stat-cards-sm { grid-template-columns: 1fr 1fr; }
    /* Настройки: число-поля на всю ширину, чтобы не вылезали */
    .adm-sec input[type="number"] { max-width: 100%; width: auto; }
    .admin-tabs { padding-bottom: .2rem; }
}

/* ============================================================
   МОБИЛЬНОЕ УЛУЧШЕНИЕ (красиво и удобно, ничего не забыто)
   Единый гармоничный блок для смартфонов
   ============================================================ */

/* Защита от авто-зума iOS при фокусе (шрифт >=16px) */
@media (max-width: 768px) {
    input, select, textarea { font-size: 16px; }
    input:not([type="checkbox"]):not([type="radio"]),
    select, textarea { touch-action: manipulation; }
}

/* Крупные touch-цели и удобные отступы форм */
@media (max-width: 768px) {
    body { -webkit-tap-highlight-color: transparent; }
    label, .filter-check { cursor: pointer; }
    .filter-check input[type="checkbox"], .filter-check input[type="radio"] {
        width: 20px; height: 20px; flex: 0 0 20px; cursor: pointer; accent-color: var(--accent, #2563eb);
    }
    .filter-check { min-height: 36px; }
    .bf-row label { padding-bottom: .1rem; }
}

/* Кабинет: вкладки — горизонтальная прокрутка, крупные */
@media (max-width: 768px) {
    .cab-tabs, .admin-tabs { -webkit-overflow-scrolling: touch; }
    .cab-tabs .admin-tab { padding: .5rem .7rem; font-size: .85rem; white-space: nowrap; }
    .cab-head { padding: .75rem !important; }
}

/* Гладкие скругления и отступы на мобильных */
@media (max-width: 768px) {
    main { padding-left: .8rem; padding-right: .8rem; }
    .panel { border-radius: 12px; }
    .btn { border-radius: 10px; }
}

/* Кнопки-действия на всю ширину там, где это удобно */
@media (max-width: 600px) {
    .hero-features, .hero-counters { gap: .4rem; }
    .hero-feat { padding: .4rem .8rem; font-size: .76rem; }
    .bf-row .btn, .form-row .btn { flex: 1 1 auto; }
    .tender-card { gap: .6rem; }
    .lp-cta-row .btn, .deal-actions .btn { flex: 1 1 45%; min-width: 120px; }
}

/* Таб-бар не перекрывает контент и формы снизу */
@media (max-width: 768px) {
    .mobile-tabbar { padding-bottom: env(safe-area-inset-bottom, .35rem); }
    .lp-cta-row, .sticky-footer { padding-bottom: calc(.5rem + env(safe-area-inset-bottom, 0)); }
    .modal, .notif-panel, .push-prompt { bottom: calc(3.2rem + env(safe-area-inset-bottom, 0)) !important; }
}

/* Лотерея / кошелёк: карточки и блоки на мобильных */
@media (max-width: 600px) {
    .lottery-ticket-row, .wallet-row { flex-direction: column; align-items: stretch; gap: .5rem; }
    .kpi .kpi b { font-size: 1.2rem; }
}

/* Убрать горизонтальный скролл у слайдеров-лент только за счёт touch */
.home-slider-track, .recent-slider, .place-card-grid { scrollbar-width: none; }
.home-slider-track::-webkit-scrollbar, .recent-slider::-webkit-scrollbar { display: none; }

/* Длинные таблицы — горизонтальная прокрутка без ломания */
@media (max-width: 768px) {
    .table-scroll, .admin-table-scroll, .simply-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
}

/* ===== Скидки на товар ===== */
.card-old-price { color: var(--text-muted); text-decoration: line-through; font-size: .82em; margin-right: .35rem; }
.card-price-sale { color: #dc2626; font-weight: 800; }
.discount-badge { display: inline-block; background: linear-gradient(135deg, #dc2626, #ef4444); color: #fff; border-radius: 999px; font-size: .68rem; font-weight: 800; padding: .05rem .45rem; line-height: 1.3; vertical-align: middle; }
.promo-lottery { background: linear-gradient(135deg, #7c3aed, #a855f7) !important; }

/* ===== Страница лотереи ===== */
.lottery-ticket-row { display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; }
.lottery-progress { background: var(--bg-soft); border-radius: 999px; height: 10px; overflow: hidden; max-width: 420px; }
.lottery-progress > div { height: 100%; background: var(--accent); }


/* ============================================================
   МОБИЛЬНЫЕ УЛУЧШЕНИЯ (тендеры, такси, сервисы, админ-настройки)
   ============================================================ */
@media (max-width: 768px) {
    /* Карточки тендеров: фото меньше, текст не вылезает */
    .tender-card { flex-direction: row; gap: .7rem; padding: .7rem .75rem; border-radius: 12px; }
    .tender-card img.ph { width: 64px; height: 64px; }
    .tender-card h3, .tender-card .tender-card-title { font-size: .95rem; line-height: 1.3; }
    .tender-stat { gap: .5rem .75rem; font-size: .72rem; }
    /* Панель фильтров тендеров: поля на всю ширину */
    .tender-flter { padding: .7rem .75rem; }
    .tender-flter select, .tender-flter input[type="search"], .tender-flter input[type="text"] { flex: 1 1 100%; width: 100%; }
    .tender-flter .btn { flex: 1 1 auto; }
    /* Заголовки hero компактнее */
    .tender-hero { padding: 1rem 1.1rem; border-radius: 14px; }
    .tender-hero h1 { font-size: 1.3rem; }
    /* Формы добавления/редактирования: поля во всю ширину */
    .add-layout .form-card .bf-row, .add-layout .form-wide .bf-row { flex-direction: column; align-items: stretch; }
    .add-layout .form-card input, .add-layout .form-card select, .add-layout .form-card textarea { width: 100%; }
    /* Карточки заведений: 1 колонка на узких */
    .place-card .place-card-body { padding: .6rem .75rem; }
    /* Таблицы в кабинете/админке: прокрутка вместо разрыва верстки */
    .cabinet-table, .panel table.tbl { min-width: 520px; }
    .panel .table-scroll, .cabinet-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
    /* Чекбоксы сервисов в админке: удобные тач-зоны */
    .adm-sec label.filter-check { min-height: 32px; display: flex; align-items: center; gap: .35rem; }
}

@media (max-width: 480px) {
    /* Нижний таб-бар не перекрывает кнопки действий */
    .lp-cta-row { padding-bottom: calc(.6rem + env(safe-area-inset-bottom, 0)); }
    /* Заголовки разделов сервисов */
    .services-page h1, .page-title { font-size: 1.25rem; }
    /* Кнопки в ряду — на всю ширину, если тесно */
    .tender-flter .btn, .places-toolbar .btn { flex: 1 1 100%; }
    /* Форма такси: компактные отступы */
    .taxi-form-card { padding: .85rem; }
    /* Админ-сетка сервисов — 1 колонка, чекбоксы в столбик удобно жать */
    .adm-sec div[style*="repeat(auto-fill"] { grid-template-columns: 1fr !important; }
}

/* Кнопка «Голос» в настройках уведомлений пользователя — заметная */
.voice-toggle-row { display: flex; align-items: center; gap: .5rem; padding: .35rem 0; font-size: .82rem; }
.voice-toggle-row .chip { font-size: .68rem; }


/* ═══════════════════════════════════════════════════════════
   АДМИНКА — ЕДИНЫЙ УЛУЧШЕННЫЙ ДИЗАЙН (адаптивный)
   ═══════════════════════════════════════════════════════════ */
.adm-side { border-right: 1px solid var(--border-soft); }
.admin-tabs { border: 1px solid var(--border-soft); background: var(--card-bg); }
.admin-tab { position: relative; font-weight: 600; }
.admin-tab:hover { background: var(--bg-soft); }
.admin-tab.active { background: linear-gradient(135deg, var(--accent-soft), transparent); }
.admin-tab.active::before { content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); width:3px; height:60%; border-radius:0 3px 3px 0; background:var(--accent); }
.atg { padding: .6rem .6rem .3rem; }

/* Заголовок страницы — заметнее */
.admin-head { padding: .25rem 0 .6rem; border-bottom: 1px dashed var(--border-soft); margin-bottom: 1.25rem; }
.admin-head h2 { font-size: 1.3rem; font-weight: 800; margin: 0; display:flex; align-items:center; gap:.5rem; }
.admin-head .muted { line-height:1.4; }

/* Панели: мягкая тень, скругления, единый отступ */
.panel { border: 1px solid var(--border-soft); border-radius: 14px; box-shadow: 0 1px 6px rgba(0,0,0,.04); }
.panel h3 { font-weight: 700; }
.panel .panel-head { display:flex; align-items:center; justify-content:space-between; gap:.75rem; flex-wrap:wrap; margin-bottom:.6rem; }
.panel .panel-head h3 { margin:0; }

/* Стат-карточки: цветная иконка-круг + число */
.stat-cards { gap: .9rem; }
.stat-card { position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.15rem;
  border:1px solid var(--border-soft); border-left-width:5px; border-radius:14px; padding:1.05rem;
  box-shadow:0 2px 8px rgba(0,0,0,.05); transition:transform .15s, box-shadow .15s; }
.stat-card:hover { transform:translateY(-2px); box-shadow:0 6px 16px rgba(0,0,0,.08); }
.stat-icon { width:46px; height:46px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:1.35rem; color:#fff; margin-bottom:.1rem; }
.stat-blue .stat-icon{background:#2563eb} .stat-green .stat-icon{background:#16a34a}
.stat-yellow .stat-icon{background:#d97706} .stat-red .stat-icon{background:#dc2626}
.stat-violet .stat-icon{background:#7c3aed} .stat-cyan .stat-icon{background:#0891b2}
.stat-orange .stat-icon{background:#ea580c} .stat-teal .stat-icon{background:#0d9488}
.stat-gray .stat-icon{background:#64748b}
.stat-num { font-size:1.7rem; font-weight:800; font-variant-numeric: tabular-nums; }
.stat-label { font-size:.78rem; color: var(--text-muted); text-align:center; }

/* Таблицы: чистые строки, акцентный заголовок */
.tbl { border-radius:10px; overflow:hidden; }
.tbl th { background: var(--accent-soft); color: var(--accent); font-weight:700; letter-spacing:.02em; }
.tbl tr:hover td { background: rgba(0,0,0,.015); }
.tbl td, .tbl th { border-color: var(--border-soft); }

/* Кнопки в админке: единый стиль */
.admin-main .btn { border-radius:9px; font-weight:600; transition: transform .12s, box-shadow .12s; }
.admin-main .btn:hover { transform:translateY(-1px); }
.btn-primary { box-shadow: 0 3px 10px rgba(37,99,235,.2); }
.btn-success { box-shadow: 0 3px 10px rgba(22,163,74,.2); }

/* Формы админки: лейблы аккуратнее, поля единый стиль */
.adm-sec input[type="text"], .adm-sec input[type="number"], .adm-sec input[type="email"],
.adm-sec input[type="password"], .adm-sec select, .adm-sec textarea {
  border:1px solid var(--border-soft); border-radius:9px; padding:.5rem .6rem; font-size:.87rem;
  transition: border-color .15s, box-shadow .15s; background: var(--bg-soft); color: var(--text); }
.adm-sec input:focus, .adm-sec select:focus, .adm-sec textarea:focus {
  border-color: var(--accent); outline:none; box-shadow:0 0 0 3px var(--accent-soft); background: var(--card-bg); }

/* Кнопки-действия в строках таблиц компактно */
.admin-main .tbl .btn { margin:.15rem .1rem; }

/* Скроллбары админки аккуратные */
.admin-tabs::-webkit-scrollbar, .admin-table-scroll::-webkit-scrollbar { height:8px; width:8px; }
.admin-tabs::-webkit-scrollbar-thumb, .admin-table-scroll::-webkit-scrollbar-thumb { background: var(--border-soft); border-radius:99px; }

/* Адаптив: сайдбар → горизонтальная лента на планшете/мобиле */
@media (max-width: 1100px) {
  .admin-layout { gap: .75rem; }
  .admin-tabs { gap:.3rem; padding:.5rem; }
  .admin-tab { border-radius:9px; padding:.4rem .65rem; }
  .admin-tab.active::before { display:none; }
  .admin-tab.active { background: var(--accent-soft); }
}
@media (max-width: 768px) {
  .admin-tabs { flex-wrap:nowrap; overflow-x:auto; }
  .admin-tab { white-space:nowrap; font-size:.8rem; padding:.4rem .6rem; }
  .admin-head h2 { font-size:1.15rem; }
  .stat-cards, .stat-cards-sm { grid-template-columns: repeat(2, 1fr); gap:.6rem; }
  .stat-card { padding:.85rem .6rem; }
  .stat-icon { width:40px; height:40px; font-size:1.2rem; }
  .stat-num { font-size:1.35rem; }
  .panel, .adm-sec { padding:.9rem; }
}
@media (max-width: 480px) {
  .stat-cards, .stat-cards-sm { gap:.5rem; }
  .stat-card { border-left-width:4px; }
  .stat-label { font-size:.72rem; }
}

/* ═══════════════════════════════════════════════════════════
   МАГАЗИНЫ — ПРОФЕССИОНАЛЬНЫЙ ДИЗАЙН КАРТОЧЕК И ВИТРИН
   (витрина-режим, когда сервис объявлений выключен)
   ═══════════════════════════════════════════════════════════ */
.store-product-card { transition: transform .15s, box-shadow .15s; border-radius: 14px; }
.store-product-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-2); }
.store-product-card .card { display:flex; flex-direction:column; }
.store-product-card .card-photo { background: linear-gradient(145deg, var(--bg-soft), var(--card-bg)); }
.store-product-card .card-body { display:flex; flex-direction:column; gap:.15rem; }
.store-product-card .card-price { font-size:1.1rem; }
.store-product-card .card-price s { color:var(--text-muted); font-size:.8rem; margin-left:.25rem; }
.store-product-card .card-title { font-weight:600; }
.store-product-card .store-badge { font-size:.68rem; color:var(--accent); font-weight:700; }

/* Чипы-фильтры витрины: аккуратные таб-кнопки */
.store-cat-chips .btn { transition: all .15s; }
.store-cat-chips .btn.active { border-color: var(--s-accent, var(--accent)); color: var(--s-accent, var(--accent)); background: var(--accent-soft); font-weight:700; }

/* Слайдер хитов витрины — компактный на мобильных */
.hp-slide { flex-wrap: wrap; }
.hp-slide img { width: 200px !important; max-height: 150px !important; }
@media (max-width: 560px) {
  .hp-slide { padding: .9rem !important; gap:.6rem; }
  .hp-slide img { width: 100% !important; max-width:120px; height:auto !important; }
  .store-hero { padding: 1rem !important; }
  .store-hero img.logo, .store-hero > div[style*="80px"] { width:64px !important; height:64px !important; font-size:1.8rem !important; border-radius:16px !important; }
}

/* ═══════════════════════════════════════════════════════════
   НАСТРОЙКИ МАГАЗИНА — улучшенный вид
   ═══════════════════════════════════════════════════════════ */
.store-settings { display:flex; flex-direction:column; gap:1rem; }
.store-settings .panel { padding: 1.15rem 1.25rem; }
.ss-head { display:flex; align-items:center; justify-content:space-between; gap:.6rem; flex-wrap:wrap; margin-bottom:.8rem; padding-bottom:.6rem; border-bottom:1px dashed var(--border-soft); }
.ss-grid { display:grid; gap:.6rem .9rem; }
.ss-grid-2 { grid-template-columns:1fr 1fr; }
.ss-grid-3 { grid-template-columns:repeat(3,1fr); }
.ss-block { background:var(--bg-soft); border:1px solid var(--border-soft); border-radius:12px; padding:.7rem .9rem; margin:.5rem 0; }
.ss-block[data-title]::before { content:attr(data-title); display:block; font-size:.74rem; font-weight:700; color:var(--text-muted); text-transform:uppercase; letter-spacing:.04em; margin-bottom:.5rem; }
@media (max-width: 860px) {
  .ss-grid-2, .ss-grid-3 { grid-template-columns:1fr; }
}
@media (max-width: 560px) {
  .store-settings .panel { padding:.85rem .8rem; }
  .ss-block { padding:.6rem .7rem; }
}

/* ═══════════════════════════════════════════════════════════
   МЕНЮ КАБИНЕТА И АДМИНКИ — поиск по вкладкам и удобство
   ═══════════════════════════════════════════════════════════ */
.adm-tab-search { width:100%; padding:.45rem .6rem; border:1px solid var(--border-soft); border-radius:9px; font-size:.78rem; background:var(--bg-soft); color:var(--text); outline:none; transition:border-color .15s, box-shadow .15s, background .15s; }
.adm-tab-search:focus { border-color:var(--accent); background:var(--card-bg); box-shadow:0 0 0 3px var(--accent-soft); }
.adm-tab-search::-webkit-search-cancel-button { -webkit-appearance:none; cursor:pointer; }

/* Активная вкладка кабинета — как в админке */
.cab-layout .admin-tab.active, .admin-tabs .admin-tab.active { color:var(--accent); font-weight:700; }

/* Кабинет: сайдбар-меню с поиском */
.cab-tab-search { position:relative; }
.cab-tab-search::after { content:'⌕'; position:absolute; right:.7rem; top:50%; transform:translateY(-50%); opacity:.5; font-size:.95rem; pointer-events:none; }

/* Мобильные: меню кабинета — горизонтальная лента, поиск компактный */
@media (max-width: 768px) {
    .adm-tab-search { font-size:16px; padding:.5rem .6rem; } /* защита от зума iOS */
    .cab-layout .admin-tabs { flex-wrap:nowrap; overflow-x:auto; }
    .cab-layout .admin-tab { white-space:nowrap; font-size:.82rem; }
    /* скрыть группы-заголовки на мобильной ленте */
    .cab-layout .atg { display:none !important; }
}

/* ═══════ Пульс/мигание кнопок по действиям ═══════ */

/* Всплеск при клике на кнопку действия */
.btn-pulse-once { animation: btnsPulse .9s ease; }
@keyframes btnsPulse {
    0%   { box-shadow: 0 0 0 0 var(--accent, rgba(37,99,235,.45)); }
    70%  { box-shadow: 0 0 0 10px rgba(37,99,235,0); }
    100% { box-shadow: 0 0 0 0 rgba(37,99,235,0); }
}

/* Зелёная пульсация успеха */
.btn-success-pulse { animation: btnSuccessPulse 1.5s ease; }
@keyframes btnSuccessPulse {
    0%   { box-shadow: 0 0 0 0 rgba(22,163,74,.55); background-color: var(--success-soft, #dcfce7); }
    40%  { background-color: var(--success-soft, #dcfce7); }
    100% { box-shadow: 0 0 0 14px rgba(22,163,74,0); }
}

/* Мигание бейджа при росте счётчика */
.badge-pulse { animation: badgePulse 1.3s ease; }
@keyframes badgePulse {
    0%   { transform: scale(1); }
    30%  { transform: scale(1.45); background: var(--danger, #dc2626); color: #fff; }
    60%  { transform: scale(1); }
    100% { transform: scale(1); }
}

/* Плавающая кнопка такси: мягкая пульсация, пока есть открытые заказы */
.taxi-float-pulse { animation: taxiFloatPulse 2s ease-in-out infinite; }
@keyframes taxiFloatPulse {
    0%, 100% { transform: scale(1);              box-shadow: 0 6px 18px rgba(37,99,235,.35); }
    50%      { transform: scale(1.12);            box-shadow: 0 0 0 0 rgba(37,99,235,.0), 0 10px 26px rgba(37,99,235,.5); }
}
.taxi-float-btn.taxi-float-pulse::after {
    content: ''; position: absolute; inset: -4px; border-radius: 50%;
    border: 3px solid var(--accent, #2563eb); opacity: .5;
    animation: taxiPulseRing 2s ease-out infinite;
}
@keyframes taxiPulseRing {
    0%   { transform: scale(.85); opacity: .6; }
    70%  { transform: scale(1.5); opacity: 0; }
    100% { transform: scale(1.5); opacity: 0; }
}

/* ═══════ Призывы подписаться на входящие заказы ═══════ */

/* Плавающая кнопка такси: пульс-призыв, если провайдер ещё не подписан на заказы */
.taxi-float-btn.taxi-float-unsub { animation: taxiFloatPulse 2s ease-in-out infinite; }
@keyframes taxiFloatSubPulse {
    0%, 100% { transform: scale(1); box-shadow: 0 6px 18px rgba(234,179,8,.4); }
    50%      { transform: scale(1.1); box-shadow: 0 10px 26px rgba(234,179,8,.6); }
}
.taxi-float-unsub { background: #f59e0b !important; color:#fff !important; animation: taxiFloatSubPulse 2s ease-in-out infinite; }
.taxi-float-btn .sub-badge {
    position: absolute; top: -4px; right: -6px; min-width: 18px; height: 18px; line-height: 18px;
    font-size: .72rem; font-weight: 700; text-align: center; border-radius: 50%;
    background: var(--danger, #dc2626); color: #fff; padding: 0 .3rem;
}

/* Контейнер всплывающей карточки-призыва (не перекрывает действия) */
.sub-prompt-wrap { position: fixed; bottom: 11.5rem; left: 1.25rem; z-index: 9950; display: flex; flex-direction: column; gap: .6rem; max-width: 360px; pointer-events: none; }
.sub-prompt-card { pointer-events: auto; }
.sub-prompt-card {
    position: relative; display: flex; gap: .7rem; align-items: flex-start;
    background: var(--card-bg); border: 1px solid var(--border-soft);
    border-radius: 14px; padding: .8rem .9rem; box-shadow: var(--shadow-3);
    animation: slideIn .25s ease-out;
}
.sub-prompt-ico { font-size: 1.5rem; line-height: 1; flex: 0 0 auto; }
.sub-prompt-body { flex: 1; min-width: 0; }
.sub-prompt-title { font-weight: 700; font-size: .9rem; margin-bottom: .2rem; }
.sub-prompt-text { font-size: .78rem; color: var(--text-muted); line-height: 1.4; margin-bottom: .5rem; }
.sub-prompt-actions { display: flex; gap: .4rem; align-items: center; flex-wrap: wrap; }
.sub-prompt-close { position: absolute; top: .45rem; right: .55rem; background: none; border: none; color: var(--text-muted); cursor: pointer; font-size: .9rem; padding: .1rem .2rem; }

/* Акцентный баннер «подключить заказы» на странице такси/кабинет */
.sub-cta-banner {
    display: flex; gap: .7rem; align-items: center; flex-wrap: wrap;
    background: linear-gradient(135deg, #eff6ff, #e0f2fe);
    border: 1px solid #bfdbfe; border-radius: 12px; padding: .7rem .9rem; margin-bottom: .6rem;
}
.sub-cta-ico { font-size: 1.6rem; flex: 0 0 auto; }
.sub-cta-body { flex: 1; min-width: 180px; }
.sub-cta-title { font-weight: 700; font-size: .88rem; color: #1e3a5f; margin-bottom: .15rem; }
.sub-cta-text { font-size: .76rem; color: #334155; line-height: 1.4; }
.sub-cta-banner form { flex: 0 0 auto; }

/* Мобильная адаптация: карточка призыва — снизу, шире, не мешает */
@media (max-width: 600px) {
    .sub-prompt-wrap { left: .7rem; right: .7rem; bottom: 5.4rem; max-width: none; }
    .sub-prompt-card { flex-direction: column; }
    .sub-prompt-ico { font-size: 1.8rem; }
}

/* ═══ Красивое поле метро (кастомный дропдаун) ═══ */
.metro-field { position: relative; }
.metro-field .field-label { display:flex; align-items:center; gap:.35rem; font-weight:600; font-size:.8rem; color:#64748b; margin-bottom:.3rem; }
.metro-input-box {
    display:flex; align-items:center; gap:.5rem;
    padding:.55rem .7rem; border:1.5px solid var(--border-soft,#e5e7eb); border-radius:12px;
    background:var(--bg-soft,#fff); cursor:pointer; transition:border-color .2s, box-shadow .2s;
}
.metro-input-box:hover, .metro-input-box.open { border-color:var(--accent,#2563eb); box-shadow:0 0 0 3px rgba(37,99,235,.1); }
.metro-input-box .mi-ico { font-size:1.1rem; flex:0 0 auto; }
.metro-input-box .mi-name { flex:1; font-size:.88rem; color:var(--text,#1a202c); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.metro-input-box .mi-name.placeholder { color:var(--text-muted,#94a3b8); }
.metro-input-box .mi-caret { flex:0 0 auto; color:var(--text-muted); transition:transform .2s; }
.metro-input-box.open .mi-caret { transform:rotate(180deg); }
.metro-drop {
    display:none; position:absolute; top:calc(100% + 6px); left:0; right:0; z-index:300;
    background:var(--card-bg,#fff); border:1px solid var(--border-soft); border-radius:14px;
    box-shadow:var(--shadow-2, 0 4px 16px rgba(0,0,0,.1)); overflow:hidden;
}
.metro-drop.open { display:block; }
.metro-search { position:relative; padding:.5rem .6rem; border-bottom:1px solid var(--border-soft); }
.metro-search input {
    width:100%; padding:.45rem .7rem .45rem 2rem; border:1px solid var(--border-soft); border-radius:9px;
    font-size:.84rem; outline:none; background:var(--bg-soft); color:var(--text);
}
.metro-search .ms-ico { position:absolute; left:.9rem; top:50%; transform:translateY(-50%); opacity:.55; font-size:.9rem; }
.metro-list { max-height:240px; overflow-y:auto; padding:.3rem; }
.metro-opt {
    display:flex; align-items:center; gap:.55rem; width:100%; padding:.5rem .6rem; border-radius:9px;
    font-size:.85rem; cursor:pointer; color:var(--text); border:none; background:none; text-align:left;
    transition:background .12s;
}
.metro-opt:hover { background:var(--accent-soft,#eef2ff); }
.metro-opt.sel { background:var(--accent-soft,#eef2ff); color:var(--accent); font-weight:600; }
.metro-line-dot { width:12px; height:12px; border-radius:50%; flex:0 0 auto; box-shadow:inset 0 0 0 2px rgba(255,255,255,.9); border:1px solid rgba(0,0,0,.12); }
.metro-opt-name { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.metro-empty { padding:.7rem; text-align:center; color:var(--text-muted); font-size:.8rem; }
.metro-selected-chip {
    display:inline-flex; align-items:center; gap:.4rem; margin-top:.5rem; padding:.3rem .7rem;
    background:var(--accent-soft,#eef2ff); border:1px solid rgba(37,99,235,.3); border-radius:999px; font-size:.82rem; color:var(--accent);
}
.metro-selected-chip .msc-x { cursor:pointer; opacity:.6; font-weight:700; padding:0 .15rem; }
.metro-selected-chip .msc-x:hover { opacity:1; }
/* Пресеты минут пешком */
.walk-presets { display:flex; gap:.35rem; flex-wrap:wrap; margin-top:.45rem; }
.walk-presets button {
    padding:.25rem .6rem; border:1px solid var(--border-soft); border-radius:999px; background:var(--bg-soft);
    font-size:.75rem; color:var(--text-muted); cursor:pointer; transition:all .15s;
}
.walk-presets button:hover { border-color:var(--accent); color:var(--accent); }
.walk-presets button.active { background:var(--accent); color:#fff; border-color:var(--accent); }
/* Карточки-поля формы */
.form-card {
    background:var(--card-bg,#fff); border:1px solid var(--border-soft); border-radius:16px; padding:1.1rem 1.25rem;
    box-shadow:var(--shadow-1, 0 1px 3px rgba(0,0,0,.05)); margin-bottom:1rem;
}
.form-card h3 { font-size:1rem; margin:0 0 .8rem; }
.form-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:.6rem .9rem; }
/* Сводка выбранного */
.listing-summary {
    display:flex; flex-wrap:wrap; gap:.4rem .8rem; align-items:center; margin-bottom:1rem; padding:.6rem .9rem;
    background:linear-gradient(135deg,var(--accent-soft,#eef2ff),rgba(37,99,235,.04)); border:1px solid rgba(37,99,235,.2); border-radius:12px; font-size:.8rem;
}
.listing-summary b { font-weight:600; color:var(--text); }
.listing-summary .ls-item { display:inline-flex; align-items:center; gap:.3rem; }
.listing-summary .ls-sep { color:var(--text-muted); opacity:.5; }

/* ═════════ ОБЛАСТЬ ОПЛАТЫ ТОВАРА ═════════ */
/* Карточка оплаты — итоговая панель */
.pay-card {
    border-radius: 20px; overflow: hidden;
    background: linear-gradient(150deg, var(--card-bg,#fff), var(--accent-soft,#eef2ff));
    border: 1px solid rgba(37,99,235,.16);
    box-shadow: 0 8px 30px rgba(37,99,235,.1);
    margin-bottom: 1.25rem;
}
.pay-card-head {
    display: flex; align-items: center; justify-content: space-between; gap: .6rem;
    padding: .8rem 1.1rem; background: linear-gradient(120deg, #2563eb, #4f8ef7); color: #fff;
}
.pay-card-head .pch-title { font-weight: 700; font-size: .95rem; }
.pay-card-head .pch-sub { font-size: .74rem; opacity: .85; }
.pay-card-head .pch-total { font-size: 1.5rem; font-weight: 800; white-space: nowrap; }
.pay-card-body { padding: .35rem .9rem .8rem; }
.pay-line {
    display: flex; justify-content: space-between; align-items: center;
    padding: .42rem .2rem; font-size: .84rem; color: var(--text-soft);
    border-bottom: 1px dashed var(--border-soft);
}
.pay-line:last-child { border-bottom: none; }
.pay-line.total { font-weight: 800; color: var(--text); font-size: 1rem; }
.pay-line b { color: var(--text); font-weight: 700; }
.pay-badge { font-size: .68rem; padding: .1rem .45rem; border-radius: 999px; background: var(--accent-soft); color: var(--accent); font-weight: 700; }
/* Блок безопасной сделки (фича галочек) */
.pay-secure {
    display: flex; flex-wrap: wrap; gap: .5rem 1rem;
    padding: .6rem .8rem; margin: .35rem .9rem .8rem;
    background: #f0fdf4; border: 1px solid #bbf7d0; border-radius: 12px;
}
.pay-secure-item { display: inline-flex; align-items: center; gap: .4rem; font-size: .76rem; color: #166534; }
.pay-secure-item .psi-ico { font-size: .9rem; }
/* Выбор способа оплаты — карточки-опции */
.pay-methods { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: .5rem; padding: .8rem .9rem 0; }
.pay-method {
    display: flex; flex-direction: column; align-items: flex-start; gap: .25rem;
    padding: .6rem .7rem; border: 2px solid var(--border-soft); border-radius: 14px;
    background: var(--bg-soft); cursor: pointer; transition: all .18s;
}
.pay-method:hover { border-color: var(--accent); transform: translateY(-2px); box-shadow: 0 4px 14px rgba(37,99,235,.12); }
.pay-method.active { border-color: var(--accent); background: var(--accent-soft); box-shadow: 0 0 0 3px rgba(37,99,235,.12); }
.pay-method .pm-ico { font-size: 1.4rem; }
.pay-method .pm-lbl { font-size: .82rem; font-weight: 700; color: var(--text); }
.pay-method .pm-desc { font-size: .68rem; color: var(--text-muted); }
.pay-method .pm-radio { margin-left: auto; }
/* Кнопка оплаты */
.pay-actions { padding: .8rem .9rem 1rem; }
.btn-pay {
    display: inline-flex; align-items: center; justify-content: center; gap: .55rem;
    width: 100%; padding: .85rem 1.2rem; border-radius: 14px; border: none;
    background: linear-gradient(120deg, #16a34a, #15803d); color: #fff;
    font-size: 1.05rem; font-weight: 800; cursor: pointer;
    box-shadow: 0 6px 18px rgba(22,163,74,.35); transition: transform .15s, box-shadow .15s;
}
.btn-pay:hover { transform: translateY(-2px); box-shadow: 0 10px 26px rgba(22,163,74,.45); }
.btn-pay:active { transform: translateY(0); }
.btn-pay .bp-icon { font-size: 1.3rem; }
.btn-pay-yookassa { background: linear-gradient(120deg, #2563eb, #4f8ef7); box-shadow: 0 6px 18px rgba(37,99,235,.35); }
/* QR-блок СБП */
.pay-qr-wrap { display: flex; align-items: center; gap: .9rem; padding: .6rem .9rem; }
.pay-qr {
    width: 128px; height: 128px; border-radius: 14px; padding: .4rem; background: #fff;
    box-shadow: 0 4px 16px rgba(0,0,0,.12); display: flex; align-items: center; justify-content: center;
}
.pay-qr svg { width: 100%; height: 100%; }
.pay-qr-info { flex: 1; }
.pay-qr-info .pq-summ { font-size: 1.2rem; font-weight: 800; }
.pay-qr-info .pq-copy { font-size: .72rem; color: var(--text-muted); cursor: pointer; text-decoration: underline dotted; }
.pay-qr-info textarea.pq-payload { width: 100%; max-width: 240px; font-size: .66rem; color: var(--text-muted); border: 1px solid var(--border-soft); border-radius: 6px; padding: .2rem .35rem; margin-top: .3rem; }
/* Кольцевой отсчёт */
.deal-ring {
    display: inline-flex; align-items: center; gap: .5rem;
    padding: .4rem .8rem; border-radius: 999px;
    background: #fef2f2; border: 1px solid #fecaca; color: #b91c1c; font-size: .8rem; font-weight: 600;
}
.deal-ring .dr-svg { width: 26px; height: 26px; transform: rotate(-90deg); }
.deal-ring .dr-svg circle { fill: none; stroke-width: 4; stroke-linecap: round; }
.deal-ring .dr-bg { stroke: #fee2e2; }
.deal-ring .dr-fg { stroke: #ef4444; transition: stroke-dashoffset 1s linear; }
/* Отлично — использован существующий deal-summary/tabbar, новые классы поверх */
@media (max-width: 600px) {
    .pay-card-head { flex-direction: column; align-items: flex-start; }
    .pay-card-head .pch-total { font-size: 1.3rem; }
    .pay-methods { grid-template-columns: 1fr 1fr; }
    .pay-qr-wrap { flex-direction: column; text-align: center; }
    .pay-qr-info textarea.pq-payload { max-width: 100%; }
}

/* ═════════ МОБИЛЬНЫЕ ШАБЛОНЫ (mtheme-a/b/c) ═════════ */
/* Общий мобильный минимум: только до 768px (темы не влияют на десктоп) */

/* ── Вариант A: «Классик компакт» ── всё главное в первом экране */
@media (max-width: 768px) {
.mtheme-a .header-inner { padding: .3rem .6rem; gap: .3rem; min-height: 46px; }
.mtheme-a .header-search { order: 3; flex-basis: 100%; margin: .25rem 0 .15rem; }
.mtheme-a .header-search input { padding: .55rem .9rem .55rem 2.1rem; border-radius: 999px; background: var(--bg-soft); }
.mtheme-a .btn-search { display: none; } /* иконку заменяет placeholder 🔍 */
.mtheme-a .header-search input::placeholder { color: var(--text-muted); }
.mtheme-a .search-wrap .search-suggest { z-index: 400; }
.mtheme-a .logo { font-size: .95rem; }
.mtheme-a main { padding: .85rem .7rem 5.2rem; }
.mtheme-a .hero-alt { padding: 1.6rem 1rem; border-radius: 16px; margin-bottom: .8rem; }
.mtheme-a .hero-content h1 { font-size: 1.3rem; }
.mtheme-a .hero-sub { font-size: .82rem; }
.mtheme-a .hero-features { gap: .3rem; }
.mtheme-a .hero-feat { font-size: .7rem; padding: .35rem .7rem; }
.mtheme-a .cats-grid { grid-template-columns: repeat(auto-fill, minmax(82px, 1fr)); gap: .45rem; }
.mtheme-a .cat-card { padding: .45rem .3rem; border-radius: 12px; }
.mtheme-a .grid { grid-template-columns: repeat(2, 1fr); gap: .5rem; }
.mtheme-a .card-photo { height: 150px; }
.mtheme-a .card-body { padding: .5rem .55rem; gap: .15rem; min-height: 0; }
.mtheme-a .card-price { font-size: 1rem; }
.mtheme-a .catalog-layout, .mtheme-a .catalog-layout.home-layout { grid-template-columns: 1fr; }
.mtheme-a .mobile-tabbar { background: rgba(255,255,255,.92); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
.mtheme-a .mob-tab { min-width: 0; flex: 1; }
}

/* ── Вариант B: «App-навигация» ── маркетплейс-стиль */
@media (max-width: 768px) {
.mtheme-b .header-inner { padding: .35rem .6rem; min-height: 50px; }
.mtheme-b .header-search { order: 2; flex: 1; margin: 0; }
.mtheme-b .header-search input { border-radius: 999px; padding: .55rem 1rem .55rem 2.2rem; background: var(--bg-soft); }
.mtheme-b .btn-search { display: none; }
.mtheme-b main { padding: .9rem .7rem 5.5rem; }
.mtheme-b .hero-alt { padding: 1.7rem 1rem; border-radius: 18px; margin-bottom: .8rem; background: radial-gradient(120% 140% at 70% 0%, #2b53c9, #15337f 70%); }
.mtheme-b .hero-content h1 { font-size: 1.4rem; }
.mtheme-b .hero-sub { display: none; }
.mtheme-b .hero-features { flex-wrap: nowrap; overflow-x: auto; justify-content: flex-start; gap: .4rem; padding-bottom: .1rem; }
.mtheme-b .cat-card { border-radius: 16px; padding: .6rem .3rem; }
.mtheme-b .cats-grid { grid-template-columns: repeat(auto-fill, minmax(76px, 1fr)); gap: .5rem; }
.mtheme-b .grid { grid-template-columns: repeat(2, 1fr); gap: .55rem; }
.mtheme-b .card { border-radius: 16px; }
.mtheme-b .card-photo { height: 160px; }
.mtheme-b .mobile-tabbar { background: rgba(255,255,255,.9); -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); height: 60px; }
.mtheme-b .mob-tab { flex: 1; }
.mtheme-b .mob-add { width: 44px; height: 44px; font-size: 1.7rem; box-shadow: 0 4px 16px rgba(37,99,235,.45); border: 3px solid var(--card-bg); }
.mtheme-b .mob-tab[data-active="1"]::after { width: 34px; }
}

/* ── Вариант C: «Минимал» ── максимум контента, меньше отступов */
@media (max-width: 768px) {
.mtheme-c .header-inner { padding: .25rem .5rem; gap: .25rem; min-height: 44px; }
.mtheme-c .logo { font-size: .9rem; }
.mtheme-c .header-search { order: 3; flex-basis: 100%; margin: .2rem 0 .1rem; }
.mtheme-c .header-search input { font-size: .82rem; padding: .5rem .8rem; border-radius: 10px; }
.mtheme-c .btn-search { padding: .5rem .7rem; font-size: .8rem; }
.mtheme-c main { padding: .5rem .5rem 5.2rem; }
.mtheme-c .hero-alt { display: none; } /* у минимала hero скрыт — меньше скролла */
.mtheme-c .cats-grid { grid-template-columns: repeat(auto-fill, minmax(74px, 1fr)); gap: .4rem; }
.mtheme-c .cat-card { padding: .4rem .2rem; border-radius: 10px; }
.mtheme-c .grid { grid-template-columns: repeat(3, 1fr); gap: .4rem; }
.mtheme-c .card-photo { height: 100px; }
.mtheme-c .card-body { padding: .4rem .45rem; }
.mtheme-c .card-price { font-size: .9rem; }
.mtheme-c .card-title { font-size: .72rem; -webkit-line-clamp: 2; }
.mtheme-c .card-meta, .mtheme-c .card-seller, .mtheme-c .card-desc { display: none; } /* компактные карточки */
.mtheme-c .mobile-tabbar { padding: .3rem 0 env(safe-area-inset-bottom, .3rem); }
.mtheme-c .mob-tab { flex: 1; min-width: 0; }
.mtheme-c .mob-tab-lbl { font-size: .55rem; }
.mtheme-c .catalog-layout, .mtheme-c .catalog-layout.home-layout { grid-template-columns: 1fr; }
}
/* (фильтры на мобильных открываются кнопкой 🔍 Фильтры — общий механизм проекта) */


/* Улучшения формы подачи/редактирования объявления */
.form-section{background:var(--card-bg,#fff);border:1px solid var(--border-soft);border-radius:14px;padding:1rem 1.1rem;box-shadow:var(--shadow-1,0 1px 3px rgba(0,0,0,.05))}
.form-section h3{font-size:1rem;margin:0 0 .7rem;padding-bottom:.45rem;border-bottom:1px solid var(--border-soft)}
select.field-invalid,input.field-invalid,textarea.field-invalid{border-color:var(--danger,#dc2626)!important;box-shadow:0 0 0 3px rgba(220,38,38,.12)}
select.field-valid,input.field-valid,textarea.field-valid{border-color:var(--success,#16a34a)!important}

/* Подкатегории под корневыми категориями на главной */
.cat-card-subs { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: .4rem; padding: .1rem 0 .3rem; margin-top: -.1rem; }
.cat-card-sub { display: inline-flex; align-items: center; gap: .3rem; padding: .3rem .7rem; background: var(--bg-soft,#f8fafc); border: 1px solid var(--border-soft); border-radius: 999px; font-size: .76rem; color: var(--text-soft); text-decoration: none; transition: all .15s; }
.cat-card-sub:hover { background: var(--accent-soft,#eef2ff); border-color: var(--accent); color: var(--accent); text-decoration: none; }
.cat-card-sub-count { font-size: .64rem; font-weight: 700; background: var(--accent-soft,#eef2ff); color: var(--accent); border-radius: 999px; padding: 0 .35rem; }
@media (max-width: 768px){ .cat-card-subs { gap: .3rem; } .cat-card-sub { font-size: .72rem; padding: .25rem .55rem; } }
/* Гарантия видимости контента при отключённых/уменьшенных анимациях (некоторые браузеры держат opacity:0) */
@media (prefers-reduced-motion: reduce){
  *, *::before, *::after { animation-duration: .001s !important; animation-iteration-count: 1 !important; transition-duration: .001s !important; }
  .card-wrap, .hero-content, .hero-alt, .trust-card, .lp-box { opacity: 1 !important; transform: none !important; }
}
/* Модалка «Войдите, чтобы сохранить в избранном» */
.fav-login-modal { position: fixed; inset: 0; z-index: 2000; display: flex; align-items: center; justify-content: center; background: rgba(15,23,42,.5); opacity: 0; visibility: hidden; transition: opacity .2s, visibility .2s; padding: 1rem; }
.fav-login-modal.open { opacity: 1; visibility: visible; }
.fav-login-box { background: var(--card-bg); border: 1px solid var(--border-soft); border-radius: 16px; box-shadow: var(--shadow-3); padding: 1.2rem 1.4rem; max-width: 360px; width: 100%; text-align: center; transform: translateY(8px); transition: transform .2s; }
.fav-login-modal.open .fav-login-box { transform: translateY(0); }
.fav-login-box h4 { margin: 0 0 .2rem; font-size: 1.05rem; }


/* Бейдж выбранной сферы заведения (в редакторе) */
.sel-scope-badge { display:inline-flex; align-items:center; gap:.5rem; flex-wrap:wrap; padding:.55rem .8rem; border:1px solid var(--accent); background:var(--accent-soft); border-radius:12px; font-size:.85rem; font-weight:600; color:var(--text); }
.sel-scope-badge .ssb-ico { font-size:1.2rem; }
.sel-scope-badge .ssb-actions { display:inline-flex; gap:.35rem; margin-left:.2rem; }

/* Форма добавления позиции (блюдо/услуга) */
.dish-add-form .dish-add-grid { display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:.5rem; align-items:end; }
.dish-add-form .dish-add-desc { display:flex; gap:.5rem; margin-top:.5rem; align-items:center; }
@media (max-width: 640px){ .dish-add-form .dish-add-grid { grid-template-columns:1fr 1fr; } }

/* Секции редактора заведения */
.form-section { border:1px solid var(--border-soft); border-radius:14px; background:var(--card-bg); padding:.9rem 1rem; margin-bottom:1rem; box-shadow:var(--shadow-1); }
.form-section summary { list-style:none; }
.form-section summary::-webkit-details-marker { display:none; }
