@font-face {
    font-family: 'Montserrat';
    src: url('../fonts/montserrat/Montserrat-Regular.woff2') format('woff2'),
    url('../fonts/montserrat/Montserrat-Regular.woff') format('woff');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

/* Retina image rendering */
img {
    image-rendering: -webkit-optimize-contrast;
    image-rendering: crisp-edges;
    /* Bootstrap Reboot этого не делает (только .img-fluid), а фото здесь
       загружают пользователи: одна картинка шире вьюпорта давала
       горизонтальный скролл всей странице. */
    max-width: 100%;
    height: auto;
}
img[src$=".svg"] {
    image-rendering: auto;
}

:root {
    /* Colors.
       --color-primary-text — это НЕ дубль --color-primary. Насыщенный оттенок
       нужен для заливок и иконок (порог WCAG 1.4.11 для нецветового UI — 3:1),
       но тем же цветом нельзя писать текст: #0C88FA на белом даёт 3.55:1
       при норме 4.5:1. Заливка берёт --color-primary, текст — -text.
       У danger/success/warning текстовых пар нет намеренно: сейчас ими ничего
       не пишут. Понадобится — считать контраст к фактическому фону, а не
       заводить токен впрок. */
    --color-primary: #0C88FA;
    --color-primary-text: #0866C4;      /* 5.66:1 на белом */
    --color-primary-hover: #0A6FD4;
    --color-primary-active: #0858AB;
    --color-primary-light: rgba(12, 136, 250, 0.1);
    --color-primary-dark: #20263C;
    --color-accent: #E500CC;
    --color-accent-hover: #C700B2;
    --color-success: #34C66E;
    --color-success-light: rgba(52, 198, 110, 0.1);
    --color-danger: #E5384B;
    --color-danger-light: rgba(229, 56, 75, 0.1);
    --color-warning: #F5A623;
    --color-warning-light: rgba(245, 166, 35, 0.1);

    /* Neutrals */
    --color-text: #1A1F36;
    --color-text-secondary: #5A607F;
    --color-text-muted: #6B7280;        /* было #8B90A0 — 3.18:1, не проходило AA */
    --color-text-inverse: #FFFFFF;
    --color-bg: #FFFFFF;
    --color-bg-subtle: #F7F8FA;
    --color-bg-muted: #EBEDF2;
    --color-border: #DFE1E8;
    --color-border-light: #EBEDF2;

    /* Legacy aliases */
    --color-bg-light: #f5f5f5;
    --color-error: #c55;
    --gradient-main: linear-gradient(200.41deg, #FF00E5 4.13%, #0C88FA 56.26%, #00FFF0 99.1%);
    --transition: 0.25s ease;

    /* Gradient.
       Диапазон сужен до пурпур→синий. Прежний вариант уходил в бирюзу
       (#00D4C8), где белый текст давал 1.87:1 — на 61% длины кнопки текст
       не проходил AA, а максимум по всей длине был 5.64:1, без запаса.
       Здесь минимум 5.10:1 на всей длине; hover — 6.50:1.
       Менять концы можно только с пересчётом: белый текст на любой точке
       градиента обязан держать >= 4.5:1. */
    --gradient-brand: linear-gradient(135deg, #C70EB0 0%, #4A3FD0 50%, #2E5FE8 100%);
    --gradient-brand-hover: linear-gradient(135deg, #AB0C97 0%, #3E35B0 50%, #2650C6 100%);

    /* Typography */
    --font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --font-size-xs: 0.75rem;    /* 12px */
    --font-size-sm: 0.875rem;   /* 14px */
    --font-size-base: 1rem;     /* 16px */
    --font-size-md: 1.125rem;   /* 18px */
    --font-size-lg: 1.25rem;    /* 20px */
    --font-size-xl: 1.5rem;     /* 24px */
    --font-size-2xl: 1.75rem;   /* 28px */
    --font-size-3xl: 2rem;      /* 32px */

    --font-weight-normal: 400;
    --font-weight-medium: 500;
    --font-weight-semibold: 600;
    --font-weight-bold: 700;

    --line-height-tight: 1.25;
    --line-height-normal: 1.5;
    --line-height-relaxed: 1.75;

    /* Spacing (4px base) */
    --space-1: 0.25rem;   /* 4px */
    --space-2: 0.5rem;    /* 8px */
    --space-3: 0.75rem;   /* 12px */
    --space-4: 1rem;      /* 16px */
    --space-5: 1.25rem;   /* 20px */
    --space-6: 1.5rem;    /* 24px */
    --space-8: 2rem;      /* 32px */
    --space-10: 2.5rem;   /* 40px */
    --space-12: 3rem;     /* 48px */

    /* Border Radius */
    --radius-sm: 0.25rem;   /* 4px */
    --radius-md: 0.5rem;    /* 8px */
    --radius-lg: 0.75rem;   /* 12px */
    --radius-xl: 1rem;      /* 16px */
    --radius-full: 9999px;

    /* Shadows */
    --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.06);
    --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.06);
    --shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.06);
    --shadow-xl: 0 20px 48px rgba(0, 0, 0, 0.16);
    --shadow-brand: 0 8px 24px rgba(74, 63, 208, 0.28);

    /* Transitions */
    --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
    --transition-base: 250ms cubic-bezier(0.4, 0, 0.2, 1);
    --transition-slow: 400ms cubic-bezier(0.4, 0, 0.2, 1);

    /* Z-Index Scale */
    --z-dropdown: 100;
    --z-sticky: 200;
    --z-fixed: 300;
    --z-overlay: 400;
    --z-modal: 500;
    --z-popover: 600;
    --z-toast: 700;
}

/* ===== GLOBAL FOUNDATION ===== */
*, *::before, *::after {
    box-sizing: border-box;
}

body {
    font-family: var(--font-family);
    font-size: var(--font-size-base);
    font-weight: var(--font-weight-medium);
    line-height: var(--line-height-normal);
    color: var(--color-text);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* ===== TYPOGRAPHY SCALE =====
   clamp() вместо media-запросов: заголовки текут между мобилкой и десктопом
   без брейкпоинтов. h1 раньше был жёстко 32px на любом экране — на 360px
   заголовок вида "Проверенные анкеты Москвы" съедал первый экран. */
h1, .h1 { font-size: clamp(1.5rem, 1.15rem + 1.75vw, var(--font-size-3xl)); font-weight: var(--font-weight-bold); line-height: var(--line-height-tight); letter-spacing: -0.02em; }
h2, .h2 { font-size: clamp(1.25rem, 1.1rem + 0.75vw, var(--font-size-xl)); font-weight: var(--font-weight-semibold); line-height: var(--line-height-tight); }
h3, .h3 { font-size: var(--font-size-lg); font-weight: var(--font-weight-semibold); line-height: var(--line-height-tight); }
h4, .h4 { font-size: var(--font-size-md); font-weight: var(--font-weight-semibold); line-height: var(--line-height-normal); }

/* ===== FOCUS MANAGEMENT =====
   Базовое правило ловит всё фокусируемое, но у него специфичность (0,1,0):
   любое правило с классом его перебивает. Поэтому у компонентов, которые
   задают свой :focus/:hover, focus-visible продублирован явно.
   Инвентаризация перед правкой: 30 :hover против 2 :focus-visible — интерфейс
   был рассчитан на мышь. */
:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
    border-radius: var(--radius-sm);
}

/* Пропуск к содержимому — первый таб на странице. */
.skip-link {
    position: absolute;
    left: -9999px;
    top: 0;
    z-index: var(--z-toast);
    padding: var(--space-3) var(--space-4);
    background: var(--color-bg);
    color: var(--color-primary-text);
    font-weight: var(--font-weight-semibold);
    border-radius: 0 0 var(--radius-md) 0;
    box-shadow: var(--shadow-md);
}
.skip-link:focus {
    left: 0;
}

/* ===== BUTTON SYSTEM ===== */
.blue-btn {
    background: var(--gradient-brand);
    border-radius: var(--radius-md);
    text-align: center;
    padding: var(--space-3) var(--space-6);
    font-family: inherit;   /* <button> иначе берёт системный шрифт, не Montserrat */
    font-weight: var(--font-weight-medium);
    font-size: var(--font-size-base);
    line-height: var(--line-height-normal);
    color: var(--color-text-inverse);
    border: none;
    cursor: pointer;
    transition: all var(--transition-base);
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    position: relative;
    overflow: hidden;
}
.blue-btn:hover {
    background: var(--gradient-brand-hover);
    box-shadow: var(--shadow-brand);
    transform: translateY(-1px);
}
.blue-btn:active {
    transform: translateY(0);
    box-shadow: none;
    opacity: 0.9;
}
.blue-btn:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}
.blue-btn:disabled, .blue-btn.disabled {
    opacity: 0.5;
    cursor: not-allowed;
    pointer-events: none;
    transform: none;
    box-shadow: none;
}

/* Secondary Button */
.btn-secondary {
    background: transparent;
    border: 2px solid var(--color-border);
    border-radius: var(--radius-md);
    text-align: center;
    padding: var(--space-3) var(--space-6);
    font-weight: var(--font-weight-medium);
    font-size: var(--font-size-base);
    line-height: var(--line-height-normal);
    color: var(--color-text);
    cursor: pointer;
    transition: all var(--transition-base);
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
}
.btn-secondary:hover {
    border-color: var(--color-primary);
    color: var(--color-primary-text);
    background: var(--color-primary-light);
}
.btn-secondary:focus-visible,
.btn-danger:focus-visible,
.btn-ghost:focus-visible,
.desc-filter-item:focus-visible,
.item-btn:focus-visible,
.item-name:focus-visible,
.item-img-link:focus-visible,
.main-nav-item a:focus-visible,
.bottom-nav-item:focus-visible,
.service-side-menu .nav-item a:focus-visible,
.icon-close:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}
/* Нижняя навигация — тёмный фон, синее кольцо на нём теряется. */
.bottom-nav-item:focus-visible {
    outline-color: #fff;
}

/* Danger Button */
.btn-danger {
    background: var(--color-danger);
    border-radius: var(--radius-md);
    text-align: center;
    padding: var(--space-3) var(--space-6);
    font-weight: var(--font-weight-medium);
    font-size: var(--font-size-base);
    color: var(--color-text-inverse);
    border: none;
    cursor: pointer;
    transition: all var(--transition-base);
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.btn-danger:hover {
    background: #C72E3E;
    box-shadow: 0 4px 12px rgba(229, 56, 75, 0.3);
}

/* Ghost/Text Button */
.btn-ghost {
    background: transparent;
    border: none;
    padding: var(--space-2) var(--space-4);
    font-weight: var(--font-weight-medium);
    font-size: var(--font-size-base);
    color: var(--color-primary-text);
    cursor: pointer;
    transition: all var(--transition-fast);
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-md);
}
.btn-ghost:hover {
    background: var(--color-primary-light);
}

/* ===== CARD SYSTEM ===== */
.card-elevated {
    background: var(--color-bg);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    border: 1px solid var(--color-border-light);
    transition: box-shadow var(--transition-base), transform var(--transition-base);
}
.card-elevated:hover {
    box-shadow: var(--shadow-md);
    transform: translateY(-2px);
}

/* ===== BADGE SYSTEM ===== */
.badge-verified {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--color-primary-text);
}
.badge-vip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: linear-gradient(135deg, #FFD700, #FFA500);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    font-weight: var(--font-weight-bold);
}

/* ===== FORM INPUTS ===== */
.form-input-styled {
    width: 100%;
    padding: var(--space-3) var(--space-4);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    font-size: var(--font-size-base);
    color: var(--color-text);
    background: var(--color-bg);
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
    min-height: 44px;
}
.form-input-styled:focus {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px var(--color-primary-light);
    outline: none;
}
.form-input-styled::placeholder {
    color: var(--color-text-muted);
}

/* ===== TOAST / FEEDBACK ===== */
.toast {
    position: fixed;
    bottom: var(--space-6);
    right: var(--space-6);
    padding: var(--space-4) var(--space-6);
    border-radius: var(--radius-md);
    color: var(--color-text-inverse);
    font-weight: var(--font-weight-medium);
    z-index: var(--z-toast);
    animation: toast-in var(--transition-base) forwards;
    max-width: 360px;
    box-shadow: var(--shadow-lg);
}
.toast-success { background: var(--color-success); }
.toast-error { background: var(--color-danger); }
.toast-info { background: var(--color-primary); }

@keyframes toast-in {
    from { opacity: 0; transform: translateY(16px); }
    to { opacity: 1; transform: translateY(0); }
}

/* ===== EMPTY STATE ===== */
.empty-state {
    text-align: center;
    padding: var(--space-12) var(--space-6);
    color: var(--color-text-muted);
    display: flex;
    flex-direction: column;
    align-items: center;
}
.empty-state-icon {
    margin-bottom: var(--space-4);
    color: var(--color-text-muted);
    opacity: 0.5;
    line-height: 0;
}
.empty-state-title {
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text);
    margin-bottom: var(--space-2);
}
.empty-state-text {
    font-size: var(--font-size-md);
    margin-bottom: var(--space-6);
    max-width: 42ch;
}
.empty-state-text:last-child {
    margin-bottom: 0;
}

/* .spinner / .spinner-overlay / .skeleton* удалены — ни один шаблон и ни одна
   строка JS их не использовала. Состояние загрузки в проекте показывает
   .pagination-preloader (см. ниже) и .ajax-filter-loading. */

.footer {
    background-color: #f5f5f5;
    font-size: .9em;
    height: 60px;
}

.footer > .container {
    padding-right: 15px;
    padding-left: 15px;
}

.not-set {
    color: #c55;
    font-style: italic;
}

/* add sorting icons to gridview sort links */
a.asc:after, a.desc:after {
    content: '';
    left: 3px;
    display: inline-block;
    width: 0;
    height: 0;
    border: solid 5px transparent;
    margin: 4px 4px 2px 4px;
    background: transparent;
}

a.asc:after {
    border-bottom: solid 7px #212529;
    border-top-width: 0;
}

a.desc:after {
    border-top: solid 7px #212529;
    border-bottom-width: 0;
}

.grid-view th,
.grid-view td:last-child {
    white-space: nowrap;
}

.grid-view .filters input,
.grid-view .filters select {
    min-width: 50px;
}

.hint-block {
    display: block;
    margin-top: var(--space-1);
    color: var(--color-text-muted);
}

.error-summary {
    color: #a94442;
    background: #fdf7f7;
    border-left: 3px solid #eed3d7;
    padding: 10px 20px;
    margin: 0 0 15px 0;
}

/* Правила для `.nav li > form > button.logout` удалены вместе с их
   @media(max-width:767px): такой разметки в проекте нет — это остаток
   стартового шаблона Yii2. Выход размечен классом .btn-exit (main.php).
   Заодно ушёл единственный брейкпоинт 767px, конфликтовавший с 768px. */

.img {
    max-width: 100%;
    height: auto;
    width: 100%;
}
/* ===== PREMIUM DESC-FILTER ===== */
.desc-filter {
    display: flex;
    margin-bottom: var(--space-6);
    flex-wrap: wrap;
    gap: var(--space-2);
    align-items: center;
    padding: var(--space-3) var(--space-4);
    background: var(--color-bg-subtle);
    border-radius: var(--radius-lg);
    border: 1px solid var(--color-border-light);
}
.desc-filter div {
    margin-right: 0;
}
.desc-filter svg {
    margin-left: 6px;
    transition: transform var(--transition-fast);
}
.filter-title {
    color: var(--color-text-muted);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-right: var(--space-2);
    white-space: nowrap;
}
.desc-filter-item {
    display: inline-flex;
    align-items: center;
    padding: var(--space-2) var(--space-4);
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-full);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    color: var(--color-text);
    cursor: pointer;
    transition: all var(--transition-fast);
    user-select: none;
    white-space: nowrap;
}
.desc-filter-item:hover {
    border-color: var(--color-primary);
    color: var(--color-primary-text);
    background: var(--color-primary-light);
    box-shadow: var(--shadow-sm);
}
.desc-filter-item:hover svg {
    transform: translateY(1px);
}
.desc-filter-item:hover svg path {
    fill: var(--color-primary);
}
.desc-filter-item:active {
    transform: scale(0.97);
}
h1 {
    color: var(--color-text);
    margin-bottom: var(--space-6);
}
.data-info-item{
    margin-bottom: var(--space-1);
}
/* Единственное объявление .name. Раньше их было три (здесь, ~1112 и ~1623),
   они переопределяли друг друга: underline из среднего гасился
   text-decoration:none из последнего. Размер снят со шкалы (было 22/26px). */
.name {
    font-size: var(--font-size-lg);
    line-height: var(--line-height-tight);
    color: var(--color-primary-dark);
    text-decoration: none;
}

/* Длинный читаемый текст — вес 400.
   body держит 500 (Montserrat Medium) как основу интерфейса, но для сплошных
   абзацев описания это утомляет глаз: Medium рассчитан на короткие подписи. */
.profile-about {
    font-weight: var(--font-weight-normal);
    line-height: var(--line-height-relaxed);
}

/* Legacy .article-info kept for non-card contexts */
.article-info {
    padding: var(--space-4);
    overflow: hidden;
    border: 1px solid var(--color-border-light);
    border-radius: 0 0 var(--radius-md) var(--radius-md);
}

/* ===== PREMIUM ITEM CARD ===== */
.item-card {
    display: flex;
    flex-direction: column;
    border-radius: var(--radius-lg);
    overflow: hidden;
    background: var(--color-bg);
    border: 1px solid var(--color-border-light);
    transition: all var(--transition-base);
    position: relative;
    height: 100%;
}
.item-card:hover {
    box-shadow: var(--shadow-lg);
    transform: translateY(-4px);
    border-color: transparent;
}
.item-card:hover .item-img-overlay {
    opacity: 1;
}

/* Photo link */
.item-img-link {
    display: block;
    text-decoration: none;
    color: inherit;
}
.item-card .item-img {
    position: relative;
    border-radius: var(--radius-lg) var(--radius-lg) 0 0;
    min-height: 0;
    aspect-ratio: 2/3;
    overflow: hidden;
}
.item-card .item-img .img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--transition-slow);
}
.item-img-link:hover .img,
.item-img-link:hover picture {
    transform: scale(1.03);
}
.item-card .item-img picture {
    display: block;
    width: 100%;
    height: 100%;
    transition: transform var(--transition-slow);
}
.item-card .item-img picture img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Name link */
.item-name {
    font-size: var(--font-size-base);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 70%;
    text-decoration: none;
    display: block;
}
.item-name:hover {
    color: var(--color-primary-text);
}
.item-img-overlay {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 50%;
    background: linear-gradient(to top, rgba(0,0,0,0.4) 0%, transparent 100%);
    opacity: 0;
    transition: opacity var(--transition-base);
    pointer-events: none;
    border-radius: 0 0 var(--radius-lg) var(--radius-lg);
}
.item-img-placeholder {
    width: 100%;
    height: 100%;
    aspect-ratio: 2/3;
    background: linear-gradient(228deg, var(--color-primary) 12%, #580CFA 82%);
    display: flex;
    align-items: center;
    justify-content: center;
}
.item-img-placeholder span {
    font-size: 4rem;
    font-weight: var(--font-weight-bold);
    color: #fff;
    opacity: 0.8;
}

/* Badges */
.item-badge {
    position: absolute;
    top: var(--space-3);
    left: var(--space-3);
    padding: 2px var(--space-2);
    border-radius: var(--radius-sm);
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-bold);
    letter-spacing: 0.05em;
    z-index: 2;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}
.item-badge-vip {
    background: linear-gradient(135deg, #FFD700, #FFA500);
    color: #1a1a1a;
    text-transform: uppercase;
}
.item-badge-verified {
    top: var(--space-3);
    left: auto;
    right: var(--space-3);
    background: rgba(29, 161, 242, 0.9);
    padding: 4px;
    border-radius: var(--radius-full);
    line-height: 0;
}
.item-price-tag {
    position: absolute;
    bottom: var(--space-3);
    left: var(--space-3);
    background: rgba(0, 0, 0, 0.65);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    color: #fff;
    padding: var(--space-1) var(--space-3);
    border-radius: var(--radius-full);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-semibold);
    z-index: 2;
}

/* Body */
.item-body {
    padding: var(--space-3) var(--space-4) var(--space-2);
}
.item-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--space-2);
}
/* .item-name moved to card section above */
.item-rating {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-semibold);
    color: var(--color-primary-text);
    flex-shrink: 0;
}

/* Stats row */
.item-stats {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-1);
    margin-bottom: var(--space-2);
}
.item-stat {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    padding: 2px var(--space-2);
    background: var(--color-bg-subtle);
    border-radius: var(--radius-full);
    font-size: 11px;
    font-weight: var(--font-weight-medium);
    color: var(--color-text-secondary);
    white-space: nowrap;
    line-height: 1.4;
}
.item-stat svg {
    width: 12px;
    height: 12px;
    opacity: 0.6;
    flex-shrink: 0;
}
.item-about {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    line-height: var(--line-height-normal);
    max-height: 2.8em;
    overflow: hidden;
}

/* Action button */
.item-action {
    padding: 0 var(--space-4) var(--space-3);
}
.item-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    width: 100%;
    padding: var(--space-2) var(--space-4);
    background: var(--gradient-brand);
    color: #fff;
    border: none;
    border-radius: var(--radius-md);
    font-family: inherit;   /* <button> иначе берёт системный шрифт */
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-semibold);
    cursor: pointer;
    transition: all var(--transition-base);
    min-height: 44px;       /* тач-таргет: было 40px */
    text-decoration: none;
}
.item-btn:hover {
    background: var(--gradient-brand-hover);
    box-shadow: var(--shadow-brand);
    transform: translateY(-1px);
}
.item-btn:active {
    transform: translateY(0);
    box-shadow: none;
}
.item-btn svg {
    flex-shrink: 0;
    stroke: currentColor;
}
.owl-carousel{
    position: relative;
}
.owl-nav{
    display: none;
}
.owl-dots .owl-dot{
    background: #2d2d2d !important;
    opacity: 0.5;
    border-radius: 3px;
    width: 20px;
    height: 3px;
    margin-right: 10px;
    transition: all 0.5s ease-out;
}
.container.scrol-container::-webkit-scrollbar
{
    width:12px
}

.container.scrol-container::-webkit-scrollbar-track
{
    -webkit-box-shadow: inset 0 0 6px rgb(0255 255 / 50%);
    border-radius:10px;
    background:#e9ecef
}

.container.scrol-container::-webkit-scrollbar-thumb
{
    border-radius:10px;
    -webkit-box-shadow:inset 0 0 6px rgba(255,255,255,.7);
    background: linear-gradient(
            200.41deg, #FF00E5 4.13%, var(--color-primary) 56.26%, #00FFF0 99.1%), #C4C4C4;
}
.owl-dots{
    position: absolute;
    bottom: 20px;
    width: 100%;
    text-align: center;
    max-height: 50px;
    overflow: hidden;
}
.rating {
    font-size: 22px;
    line-height: 27px;
    text-align: right;
}

.blue-text {
    font-family: Montserrat;
    font-style: normal;
    font-weight: 600;
    color: var(--color-primary-text);
}
.dot {
     background: #FF00E5;
     border-radius: 50%;
     display: inline-block;
     margin-right: 20px;
     width: 32px;
     height: 32px;
 }
.dots{
    text-align: center;
}
.dot:first-child {
    animation: FirstDot 3s infinite;
}

.dot:nth-child(2) {
    animation: SecondDot 3s infinite;
}

.dot:nth-child(3) {
    animation: ThirdDot 3s infinite;
}

.dot:nth-child(4) {
    animation: FourthDot 3s infinite;
}

.dot:nth-child(5) {
    animation: FifthDot 3s infinite;
}

@keyframes FirstDot {
    0% {
        transform: scale(1) translateX(0);
    }
    25% {
        transform: scale(2.5) translateX(0);
    }
    50% {
        transform: scale(1) translateX(0);
    }
    83% {
        transform: scale(1) translateX(240px);
    }
    100% {
        transform: scale(1) translateX(0);
    }
}

@keyframes SecondDot {
    0% {
        transform: translateX(0px);
    }
    27% {
        transform: translateX(-40px);
    }
    50% {
        transform: translateX(0px);
    }
    81% {
        transform: translateX(180px);
    }
    100% {
        transform: translateX(0);
    }
}

@keyframes ThirdDot {
    0% {
        transform: translateX(0px);
    }
    29% {
        transform: translateX(-100px);
    }
    50% {
        transform: translateX(0px);
    }
    79% {
        transform: translateX(120px);
    }
    100% {
        transform: translateX(0);
    }
}

@keyframes FourthDot {
    0% {
        transform: translateX(0px);
    }
    31% {
        transform: translateX(-160px);
    }
    50% {
        transform: translateX(0px);
    }
    77% {
        transform: translateX(60px);
    }
    100% {
        transform: translateX(0);
    }
}

@keyframes FifthDot {
    0% {
        transform: scale(1) translateX(0);
    }
    33% {
        transform: scale(1) translateX(-220px);
    }
    50% {
        transform: scale(1) translateX(0);
    }
    75% {
        transform: scale(2.5) translateX(0);
    }
    100% {
        transform: scale(1) translateX(0);
    }
}

.about {
    font-family: Montserrat;
    font-style: normal;
    font-weight: normal;
    font-size: var(--font-size-md);
    line-height: 22px;
    color: var(--color-primary-dark);
    margin-top: 15px;
}
.article-info .about{
    max-height: 40px;
    overflow: hidden;
}


/* Единственное объявление .bottom-nav — раньше их было два подряд, второе
   гасило display:flex первого, а медиа-запрос 768px возвращал flex обратно.
   Показ по-прежнему включается только на мобильных (см. медиа-блок).
   padding-bottom с env() уводит панель из-под home-indicator на iPhone;
   работает в паре с viewport-fit=cover в <meta viewport> (main.php). */
.bottom-nav {
    position: sticky;
    bottom: 0;
    background: #000;
    display: none;
    flex-direction: row;
    justify-content: space-between;
    align-items: stretch;
    z-index: 12;
    color: #fff;
    text-align: center;
    font-size: var(--font-size-xs);
    line-height: var(--line-height-tight);
    padding: var(--space-2) var(--space-4);
    padding-bottom: calc(var(--space-2) + env(safe-area-inset-bottom, 0px));
}
.add-advert-wrap{
    overflow: auto;
    padding: var(--space-1);
}

/* Тач-таргет 44px — минимум Apple HIG. Правило одно на <a> и <button>,
   поэтому кнопки нижней навигации сбрасывают браузерную обводку. */
.bottom-nav-item {
    color: #fff;
    text-align: center;
    min-width: 48px;
    min-height: 44px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--space-1);
    background: none;
    border: none;
    font: inherit;
    cursor: pointer;
    text-decoration: none;
    padding: var(--space-1) var(--space-2);
}
.bottom-nav-item.add-request-btn.blue-btn {
    padding: var(--space-2) var(--space-5);
    min-height: 44px;
}

.plus-wrap {
    background: #fff;
    border-radius: 7px;
    width: 44px;
    height: 32px;
    display: flex;
    justify-content: center;
    align-items: center;
}

/* Плавающая кнопка показа .desc-filter. Скрыта на десктопе (там ряд чипов виден
   сам); на мобильных — fixed над нижней навигацией (см. медиа-блок ниже).
   Вынесена из <header>, т.к. header на <=575px скрыт целиком. */
.desc-filter-fab {
    display: none;
    position: fixed;
    right: var(--space-4);
    bottom: calc(64px + env(safe-area-inset-bottom, 0px));
    z-index: var(--z-fixed);
    width: 48px;
    height: 48px;
    align-items: center;
    justify-content: center;
    border: none;
    border-radius: var(--radius-full);
    background: var(--gradient-brand);
    color: #fff;
    cursor: pointer;
    box-shadow: var(--shadow-lg);
    transition: transform var(--transition-fast);
}
.desc-filter-fab:active {
    transform: scale(0.94);
}
.desc-filter-fab[aria-expanded="true"] {
    background: var(--gradient-brand-hover);
}

/* ===== SITE HEADER =====
   Разметка — views/layouts/_header.php. Одна строка: бренд | разделы |
   действия. Липкая на всех ширинах; тень появляется только после прокрутки
   (класс .is-scrolled ставит script.js), у верха страницы — плоская линия.
   Единственный цвет кроме логотипа и градиентной кнопки — индикатор
   активного раздела: 2px-полоса с градиентом самого логотипа.
   Иконки 22px одного набора, кнопки одной высоты (40px, на тач-ширинах 44),
   чтобы ряд читался как одна линия.
   Медиа-запросы компонента лежат здесь же, а не в общих блоках ниже: всё,
   что относится к шапке, — в одном месте. */
.site-header {
    position: sticky;
    top: 0;
    z-index: var(--z-sticky);
    background: var(--color-bg);
    border-bottom: 1px solid var(--color-border-light);
    margin-bottom: var(--space-5);
    transition: box-shadow var(--transition-base);
}
.site-header.is-scrolled {
    box-shadow: 0 8px 24px -16px rgba(26, 31, 54, 0.25);
}
.site-header__row {
    display: flex;
    align-items: center;
    gap: var(--space-1);
    min-height: 64px;
}
.site-header__brand {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
    margin-right: var(--space-5);
    border-radius: var(--radius-sm);
}
.site-header__brand img {
    display: block;
    height: 36px;
    width: auto;
}
.site-header__nav {
    display: flex;
    align-self: stretch;
    align-items: stretch;
    gap: var(--space-1);
}
.site-header__link {
    position: relative;
    display: inline-flex;
    align-items: center;
    padding: 0 var(--space-3);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-secondary);
    text-decoration: none;
    white-space: nowrap;
    transition: color var(--transition-fast);
}
.site-header__link:hover {
    color: var(--color-text);
}
/* Индикатор активного раздела лежит на нижней границе шапки (bottom:-1px —
   поверх hairline), градиент тот же, что у логотипа. */
.site-header__link::after {
    content: '';
    position: absolute;
    left: var(--space-3);
    right: var(--space-3);
    bottom: -1px;
    height: 2px;
    border-radius: 2px 2px 0 0;
    background: linear-gradient(90deg, #FF00E5 0%, #0C88FA 60%, #00FFF0 100%);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform var(--transition-fast);
}
.site-header__link.is-active {
    color: var(--color-text);
}
.site-header__link.is-active::after {
    transform: scaleX(1);
}
.site-header__link:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: -2px;
    border-radius: var(--radius-sm);
}
.site-header__actions {
    display: flex;
    align-items: center;
    gap: var(--space-1);
    margin-left: auto;
}

/* Иконочная кнопка: круг 40px, иконка 22px. <a> и <button> выглядят одинаково,
   поэтому здесь же снимается браузерный хром кнопки. */
.hdr-icon {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    padding: 0;
    border: none;
    border-radius: var(--radius-full);
    background: transparent;
    color: var(--color-text-secondary);
    cursor: pointer;
    text-decoration: none;
    transition: background var(--transition-fast), color var(--transition-fast);
}
.hdr-icon:hover {
    background: var(--color-bg-muted);
    color: var(--color-text);
}
.hdr-icon:active {
    background: var(--color-border);
}
.hdr-icon:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}
.hdr-icon svg {
    display: block;
    width: 22px;
    height: 22px;
}
/* Счётчик оповещений — вместо прежней 7px точки без координат. */
.hdr-badge {
    position: absolute;
    top: 3px;
    right: 3px;
    min-width: 17px;
    height: 17px;
    padding: 0 4px;
    border-radius: var(--radius-full);
    background: var(--color-accent);
    color: #fff;
    font-size: 10px;
    font-weight: var(--font-weight-bold);
    line-height: 17px;
    text-align: center;
    box-shadow: 0 0 0 2px var(--color-bg);
}

/* Текстовые кнопки: «Войти» (тихая) и «Добавить объявление» (градиент). */
.hdr-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    height: 40px;
    padding: 0 var(--space-4);
    border: none;
    border-radius: var(--radius-full);
    font-family: inherit;
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-semibold);
    line-height: 1;
    white-space: nowrap;
    text-decoration: none;
    cursor: pointer;
    transition: background var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);
}
.hdr-btn svg {
    flex-shrink: 0;
    width: 18px;
    height: 18px;
}
.hdr-btn:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}
.hdr-btn--ghost {
    background: transparent;
    color: var(--color-text);
}
.hdr-btn--ghost:hover {
    background: var(--color-bg-muted);
}
.hdr-btn--primary {
    margin-left: var(--space-1);
    padding-right: var(--space-5);
    background: var(--gradient-brand);
    color: var(--color-text-inverse);
}
.hdr-btn--primary:hover {
    background: var(--gradient-brand-hover);
    box-shadow: var(--shadow-brand);
    color: var(--color-text-inverse);
}
.hdr-btn--primary:active {
    box-shadow: none;
}

/* Профиль: аватар 40px + выпадающее меню. Открытие/закрытие — класс
   .is-open и aria-expanded, ставит script.js. */
.hdr-user {
    position: relative;
    margin-left: var(--space-1);
}
.hdr-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    padding: 0;
    border: none;
    border-radius: 50%;
    overflow: hidden;
    background: linear-gradient(228deg, var(--color-primary) 12%, #580CFA 82%);
    color: #fff;
    cursor: pointer;
    box-shadow: 0 0 0 2px var(--color-bg), 0 0 0 3px var(--color-border);
    transition: box-shadow var(--transition-fast);
}
.hdr-avatar:hover,
.hdr-avatar[aria-expanded="true"] {
    box-shadow: 0 0 0 2px var(--color-bg), 0 0 0 4px var(--color-primary);
}
.hdr-avatar:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 3px;
}
.hdr-avatar picture,
.hdr-avatar__img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.hdr-avatar__letter {
    font-size: var(--font-size-md);
    font-weight: var(--font-weight-semibold);
    line-height: 1;
    text-transform: uppercase;
}
.hdr-dropdown {
    position: absolute;
    top: calc(100% + 10px);
    right: 0;
    width: 260px;
    padding: var(--space-2);
    background: var(--color-bg);
    border: 1px solid var(--color-border-light);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    z-index: var(--z-dropdown);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-6px);
    transition: opacity var(--transition-fast), transform var(--transition-fast),
                visibility 0s linear var(--transition-fast);
}
.hdr-dropdown.is-open {
    opacity: 1;
    visibility: visible;
    transform: none;
    transition-delay: 0s;
}
.hdr-dropdown__head {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: var(--space-2) var(--space-3) var(--space-3);
    margin-bottom: var(--space-2);
    border-bottom: 1px solid var(--color-border-light);
    color: var(--color-text);
    text-decoration: none;
}
.hdr-dropdown__name {
    font-size: var(--font-size-base);
    font-weight: var(--font-weight-semibold);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.hdr-dropdown__hint {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    transition: color var(--transition-fast);
}
.hdr-dropdown__hint svg {
    width: 14px;
    height: 14px;
}
.hdr-dropdown__head:hover .hdr-dropdown__hint {
    color: var(--color-primary-text);
}
.hdr-dropdown__head:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: -2px;
    border-radius: var(--radius-md);
}
.hdr-dropdown__group + .hdr-dropdown__group {
    margin-top: var(--space-2);
    padding-top: var(--space-2);
    border-top: 1px solid var(--color-border-light);
}
.hdr-dropdown form {
    margin: 0;
}
.hdr-dropdown__item {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    width: 100%;
    min-height: 40px;
    padding: var(--space-2) var(--space-3);
    border: none;
    border-radius: var(--radius-md);
    background: none;
    font-family: inherit;
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    color: var(--color-text);
    text-align: left;
    text-decoration: none;
    cursor: pointer;
    transition: background var(--transition-fast), color var(--transition-fast);
}
.hdr-dropdown__item svg {
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    color: var(--color-text-muted);
    transition: color var(--transition-fast);
}
.hdr-dropdown__item:hover {
    background: var(--color-primary-light);
    color: var(--color-primary-text);
}
.hdr-dropdown__item:hover svg {
    color: inherit;
}
.hdr-dropdown__item:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: -2px;
}
.hdr-dropdown__count {
    margin-left: auto;
    min-width: 20px;
    padding: 0 6px;
    border-radius: var(--radius-full);
    background: var(--color-accent);
    color: #fff;
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-bold);
    line-height: 20px;
    text-align: center;
}
.hdr-dropdown__item--exit,
.hdr-dropdown__item--exit svg {
    color: var(--color-danger);
}
.hdr-dropdown__item--exit:hover {
    background: var(--color-danger-light);
    color: var(--color-danger);
}

/* Кнопка фильтра нужна только там, где форма фильтра спрятана в панель
   (< 1200px, см. .filter-wrap). На десктопе форма стоит под шапкой. */
.site-header .filter-btn {
    display: none;
}
@media (max-width: 1199px) {
    .site-header__nav {
        display: none;
    }
    .site-header .filter-btn {
        display: inline-flex;
    }
}
@media (max-width: 991px) {
    /* «Добавить объявление» сжимается до круглого «+». */
    .hdr-btn__label {
        display: none;
    }
    .hdr-btn--primary {
        width: 40px;
        padding: 0;
    }
}
@media (max-width: 768px) {
    .site-header__row {
        min-height: 56px;
    }
    .site-header__brand {
        margin-right: var(--space-3);
    }
    .site-header__brand img {
        height: 30px;
    }
    /* Тач-минимум 44px (Apple HIG). */
    .hdr-icon,
    .hdr-btn--primary {
        width: 44px;
        height: 44px;
    }
    /* Профиль открывается из нижней навигации («Я»). */
    .hdr-user {
        display: none;
    }
}
@media (max-width: 575px) {
    .site-header {
        margin-bottom: var(--space-4);
    }
    /* Оповещения, чат, «+» и вход есть в нижней навигации и в меню.
       Остаются логотип, фильтр и меню. */
    .hdr-icon--events,
    .hdr-icon--chat,
    .hdr-btn {
        display: none;
    }
}

/* ===== AUTH PAGES =====
   /login, /register, восстановление пароля, привязка Telegram
   (modules/user/views/user/login.php, signup.php, …, views/telegram/auth.php).
   Раньше вход и регистрация были выезжающими тёмными панелями в layout —
   теперь обычные страницы: карточка по центру, подписи над полями, ошибки
   серверной валидации под полем (ActiveForm ставит .has-error на .auth-field).
   Верхняя кромка карточки — градиент логотипа, как у активного раздела
   в шапке. */
.auth-page {
    display: flex;
    justify-content: center;
    padding: var(--space-4) 0 var(--space-12);
}
.auth-card {
    position: relative;
    width: 100%;
    max-width: 440px;
    padding: var(--space-10) var(--space-10) var(--space-8);
    background: var(--color-bg);
    border: 1px solid var(--color-border-light);
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow-md);
    overflow: hidden;
}
.auth-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: linear-gradient(90deg, #FF00E5 0%, #0C88FA 60%, #00FFF0 100%);
}
.auth-card__title {
    margin-bottom: var(--space-2);
}
.auth-card__lead {
    margin: 0 0 var(--space-8);
    font-size: var(--font-size-sm);
    color: var(--color-text-secondary);
}
.auth-card__lead a,
.auth-card__foot a,
.auth-field__link {
    color: var(--color-primary-text);
    font-weight: var(--font-weight-semibold);
    text-decoration: none;
}
.auth-card__lead a:hover,
.auth-card__foot a:hover,
.auth-field__link:hover {
    text-decoration: underline;
    text-underline-offset: 3px;
}
.auth-field {
    margin-bottom: var(--space-5);
}
.auth-field__label {
    display: block;
    margin-bottom: var(--space-2);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text);
}
.auth-field__row {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--space-3);
}
.auth-field__link {
    font-size: var(--font-size-xs);
    white-space: nowrap;
}
.auth-field__control {
    position: relative;
}
/* Специфичность (0,2,0) намеренно: перебивает фоновые иконки .phone-input /
   .pass-input, которые остались для тёмных полей панелей. */
.auth-form .auth-field__input {
    display: block;
    width: 100%;
    min-height: 48px;
    padding: var(--space-3) var(--space-4);
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    font-family: inherit;
    font-size: var(--font-size-base);   /* >= 16px — iOS не зумит поле */
    color: var(--color-text);
    -webkit-appearance: none;
    appearance: none;
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}
.auth-form .auth-field__input::placeholder {
    color: var(--color-text-muted);
}
.auth-form .auth-field__input:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px var(--color-primary-light);
}
.auth-form .auth-field__control .auth-field__input {
    padding-right: 52px;
}
.auth-form .has-error .auth-field__input {
    border-color: var(--color-danger);
}
.auth-form .has-error .auth-field__input:focus {
    box-shadow: 0 0 0 3px var(--color-danger-light);
}
.auth-field__error {
    margin-top: var(--space-2);
    font-size: var(--font-size-xs);
    color: var(--color-danger);
}
.auth-field__error:empty {
    display: none;
}
.auth-field__hint {
    margin-top: var(--space-2);
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
}
.auth-field__eye {
    position: absolute;
    top: 50%;
    right: 4px;
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: none;
    border-radius: var(--radius-full);
    background: transparent;
    color: var(--color-text-muted);
    cursor: pointer;
    transform: translateY(-50%);
    transition: background var(--transition-fast), color var(--transition-fast);
}
.auth-field__eye:hover {
    background: var(--color-bg-muted);
    color: var(--color-text);
}
.auth-field__eye:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 0;
}
.auth-field__eye svg {
    width: 20px;
    height: 20px;
}
.auth-field__eye[aria-pressed="false"] .auth-field__eye-hide,
.auth-field__eye[aria-pressed="true"] .auth-field__eye-show {
    display: none;
}
.auth-card__submit {
    width: 100%;
    min-height: 48px;
    margin-top: var(--space-2);
}
.auth-card__divider {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    margin: var(--space-6) 0 var(--space-4);
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
}
.auth-card__divider::before,
.auth-card__divider::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--color-border-light);
}
.auth-telegram {
    display: flex;
    justify-content: center;
    min-height: 40px;
}
.auth-card__foot {
    margin: var(--space-6) 0 0;
    font-size: var(--font-size-sm);
    color: var(--color-text-secondary);
    text-align: center;
}
@media (max-width: 575px) {
    .auth-page {
        padding-top: 0;
    }
    .auth-card {
        padding: var(--space-6) var(--space-5);
        border-radius: var(--radius-lg);
        box-shadow: var(--shadow-sm);
    }
}

.article-info .blue-btn {
    margin-top: 20px;
}

.user-button .user-text, .menu-button .menu-text {
    top: 3.5px;
}

.menu-button .menu-text {
    top: 7.2px;
}

/* ===== PREMIUM SIDE PANELS ===== */
.menu, .side-menu {
    background: var(--color-bg);
    left: -120%;
    height: 100%;
    position: fixed;
    /* Выше sticky-шапки (--z-sticky:200), иначе шапка перекрывала верх панели,
       и клик по крестику попадал на иконки шапки — панель не закрывалась. */
    z-index: var(--z-modal);
    width: 100%;
    top: 0;
    box-shadow: var(--shadow-xl);
    overflow: hidden;
}
.side-menu-overlay {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    /* Между шапкой (200) и панелью (--z-modal:500). */
    z-index: var(--z-overlay);
    opacity: 0;
    transition: opacity var(--transition-base);
}
.side-menu-overlay.active {
    display: block;
    opacity: 1;
}
.side-user-menu .user-menu{
    padding-left: 20px;
}
.side-user-menu .user-photo-wrap , .data-side-menu .user-photo-wrap{
    justify-content: center;
    align-items: center;
    flex-direction: column;
    margin-top: 25px;
    margin-bottom: 25px;
}
.user-photo-wrap img{
    border-radius: 50%;
}
.article-info .name{
    max-height: 25px;
    overflow: hidden;
}
/* ===== ТЁМНЫЕ ПОЛЯ ПАНЕЛЕЙ =====
   .login-text / .form-input остались у панели добавления объявления
   (.add-advert-wrap) и форм уведомлений. Вход и регистрация — отдельные
   страницы, их стили в блоке AUTH PAGES. */
.login-text {
    font-size: var(--font-size-2xl) !important;
    font-weight: var(--font-weight-bold) !important;
    color: var(--color-text-inverse);
    margin-bottom: var(--space-8);
    text-align: center;
    letter-spacing: -0.01em;
}
.form-input {
    margin-bottom: var(--space-6);
    background: rgba(255, 255, 255, 0.08);
    border: none;
    border-bottom: 2px solid rgba(255, 255, 255, 0.2);
    color: #fff;
    padding: var(--space-3) var(--space-4);
    width: 280px;
    font-size: var(--font-size-base);
    border-radius: var(--radius-sm) var(--radius-sm) 0 0;
    transition: all var(--transition-fast);
}
.form-input:focus {
    outline: none;
    border-bottom-color: var(--color-primary);
    background: rgba(255, 255, 255, 0.12);
}
/* Подсветки нижней границы для клавиатуры мало (WCAG 2.4.11 требует
   различимый индикатор). Панель тёмная — кольцо белое, а не синее.
   Должно идти ПОСЛЕ :focus, специфичность у них равная. */
.form-input:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 2px;
}
.form-input::placeholder {
    color: rgba(255, 255, 255, 0.4);
}
.login-form , .add-advert-form{
    align-items: center;
    justify-content: center;
    flex-direction: column;
    position: relative;
    height: 100%;
    display: flex;
}
.review-form {
    padding: 1.2rem 2rem;
    background: #f7f7f7;
    flex: 0 0 100%;
    border-radius: 10px;
    margin: 15px -15px;
}
.field , .review-form .field-addusercommentform-author_name , .review-form .field-addusercommentform-text {
    flex-direction: column;
    margin-bottom: 25px;
}
.review-item {
    margin-bottom: 15px;
}
.gal-inner{
    padding-top: 10px;
}
.delete_img {
    position: absolute;
    top: 10px;
    right: 20px;
    background: #fff;
    border-radius: 50%;
    width: 25px;
    height: 25px;
    display: flex;
}
.form-review-title {
    font-size: 2rem;
    font-weight: 700;
    margin-bottom: 15px;
}
.field input, .comment-text {
    border: none;
    padding: 6px 8px;
    border-radius: 5px;
    max-width: 330px;
}
.comment-text {
    max-width: 450px;
}
/* ===== PREMIUM MAIN NAV ===== */
.menu {
    max-width: 380px;
}
.main-nav {
    display: flex;
    flex-direction: column;
    padding: var(--space-8) var(--space-4) var(--space-6);
    margin: 0;
    list-style: none;
    overflow-y: auto;
    height: 100%;
}
.main-nav-header {
    font-size: var(--font-size-xl);
    font-weight: var(--font-weight-bold);
    color: var(--color-text);
    padding: 0 var(--space-3);
    margin-bottom: var(--space-6);
    letter-spacing: -0.01em;
}
.main-nav-section {
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    padding: var(--space-4) var(--space-3) var(--space-2);
    margin-top: var(--space-2);
}
.main-nav-item {
    margin-bottom: 1px;
}
.main-nav-item a {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-3) var(--space-3);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    color: var(--color-text);
    text-decoration: none;
    border-radius: var(--radius-md);
    transition: all var(--transition-fast);
    cursor: pointer;
}
.main-nav-item a:hover {
    background: var(--color-primary-light);
    color: var(--color-primary-text);
}
.main-nav-item a:hover .main-nav-arrow {
    opacity: 1;
    transform: translateX(2px);
}
.main-nav-item a:active {
    background: rgba(12, 136, 250, 0.12);
}
.main-nav-item a > svg:first-child {
    flex-shrink: 0;
    opacity: 0.5;
    width: 18px;
    height: 18px;
}
.main-nav-item a:hover > svg:first-child {
    opacity: 1;
    color: var(--color-primary-text);
}
.main-nav-arrow {
    margin-left: auto;
    opacity: 0.25;
    flex-shrink: 0;
    transition: all var(--transition-fast);
}
.main-nav-divider {
    height: 1px;
    background: var(--color-border-light);
    margin: var(--space-3) var(--space-3);
}
.main-nav-item-accent a {
    color: var(--color-primary-text);
    font-weight: var(--font-weight-semibold);
}
.main-nav-item-accent a:hover {
    background: var(--color-primary);
    color: #fff;
}
.main-nav-item-accent a:hover > svg:first-child {
    color: #fff;
    opacity: 1;
}

.nav-item a {
    
    font-style: normal;
    font-weight: 500;
    font-size: 22px;
    line-height: 26px;
    text-align: center;
    text-decoration-line: underline;
    color: var(--color-primary-dark);
}

/* icon-close styles moved to premium section below */

.single-info {
    align-items: center;
    justify-content: center;
    flex-direction: column;
    position: relative;
    display: flex;
}

.first-letter {
    align-items: center;
    justify-content: center;
    flex-direction: column;
    position: relative;
    height: 100%;
    display: flex;
    
    font-style: normal;
    font-weight: normal;
    font-size: 42px;
    line-height: 1;
    text-align: center;
    color: #FFFFFF;
    position: relative;
    top: -5px;
}

.telegram-profile {
    font-family: Montserrat;
    font-style: normal;
    font-weight: 600;
    font-size: 17px;
    line-height: 21px;
    color: #848484;
}

/* .form-input styles moved to premium auth section above */

.name-img {
    background: linear-gradient(228.09deg, var(--color-primary) 12.18%, #580CFA 82.54%);
    width: 118px;
    height: 118px;
    border-radius: 50%;
    overflow: hidden;
    position: relative;
}
video{
    max-width: 100%;
}
.profile-data {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    text-align: center;
    font-family: Montserrat;
    font-style: normal;
    font-weight: 500;
    font-size: var(--font-size-xs);
    line-height: 15px;
    text-align: center;
    color: #C4C4C4;
    width: 100%;
    margin-top: 10px;
}
.profile-data-item{
    position: relative;
    width: 100%;
}

.profile-data-item::after {
    content: "";
    position: absolute;
    width: 1px;
    height: 9px;
    display: block;
    background: #C4C4C4;
    right: 0;
    top: 12px;
}
.profile-data-item:last-child::after{
    display: none;
}
.profile-data-item-count {
    
    font-style: normal;
    font-weight: 500;
    font-size: var(--font-size-lg);
    line-height: 24px;
    /* identical to box height */
    text-align: center;
    color: var(--color-primary-dark);
}
.filter-block form, #map-filter form {
    display: flex;
    margin: 15px 0;
    flex-wrap: wrap;
    justify-content: space-around;
    align-items: center;
}
.slider-item-wrap {
    height: 50px;
    flex-direction: column;
    margin-right: 15px;
}
.metro-select {
    border: none;
    box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
    border-radius: 15px;
    min-height: 44px;
    font-style: normal;
    font-weight: 300;
    font-size: var(--font-size-base);
    line-height: 18px;
    color: #999999;
    padding-left: 15px;
    -moz-appearance: none;
    -webkit-appearance: none;
    appearance: none;
    background-image: url("../img/iconfinder_nav-arrow-left_3831011.png");
    background-size: auto;
    background-repeat: no-repeat;
    background-position: right 16px top 14px;
    width: 170px;
}
.slider-item {
    align-items: center;
    flex-direction: column;
}
.slider-item-text {
    font-style: normal;
    font-weight: normal;
    line-height: 18px;
    color: #5C5C5C;
    min-width: 61px;
    display: flex;
    margin-bottom: 10px;
    font-size: var(--font-size-sm);
}
.ui-slider-range.ui-corner-all.ui-widget-header {
    background: #F74952;
    border: none;
    height: 2px;
    top: 1px;
}
.ui-slider-handle.ui-corner-all.ui-state-default {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    border: 3px solid #f74952;
    background: #fff;
    top: -9px;
    box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);
}
.filter-input-wrap {
    justify-content: space-between;
    width: 100%;
    margin-top: 15px;
}
/* Узкие поля «от/до» под слайдерами бокового фильтра поиска (search widget):
   <input type="text" id="age-from" readonly> — ВИДИМЫЕ readonly-поля, значение
   двигает слайдер. Без max-width они растягиваются на всю ширину и разносят
   раскладку фильтра (метки соседних слайдеров налезают друг на друга).
   Раньше я ошибочно счёл все .slider-item input скрытыми (в формах
   notify/advert они действительно hidden — там правило просто безвредно). */
.slider-item input {
    font-weight: var(--font-weight-medium);
    font-size: var(--font-size-xs);
    line-height: 14px;
    letter-spacing: -0.08em;
    color: var(--color-primary-dark);
    max-width: 40px;
    max-height: 16px;
    border: none;
    text-align: center;
    background: hsla(0, 0%, 80%, 0);
}
.close-filter-btn{
    display: none;
}
.search-by-params-btn {
    display: none;
}
/* Заголовок панели виден только в мобильной выезжающей панели (см. @media). */
.filter-wrap-title {
    display: none;
}
.edit-profile-btn {
    margin-top: 10px;
    margin-bottom: 20px;
}

.profile-hr {
    color: #ACACAC;
    margin-bottom: 0;
}

.profile-about {
    font-family: Montserrat;
    font-style: normal;
    font-weight: normal;
    font-size: var(--font-size-sm);
    line-height: 17px;
    letter-spacing: -0.165px;
    color: #5F5F5F;
    margin-top: 10px;
    margin-bottom: 20px;
}
.tab-content{
    padding: 0px 13px;
}
.nav-tabs .nav-link {
    border: none;
    opacity: 0.5;
}
.nav-tabs .active{
    opacity: 1;
}
.single-info > .row{
    width: 100%;
}
.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link {
    color: inherit;
    background-color: inherit;
    border-color: #6B6B6B;
}
.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {
    border-color: #6B6B6B;
    isolation: inherit;
}

.nav-link.active{
    border: none;
}

.adv-item .name{
    margin-top: 0px;
}
.adv-item .item-text{
    font-family: Montserrat;
    font-style: normal;
    font-weight: normal;
    font-size: var(--font-size-md);
    line-height: 22px;
    color: var(--color-primary-dark);
    text-decoration: none;
}
.phone-input {
    background: url("../img/telephone.png"), hsla(0, 0%, 100%, 0);
    background-repeat: no-repeat;
    background-position-y: center;
}

.username-input {
    background: url("../img/user.png"), hsla(0, 0%, 100%, 0);
    background-repeat: no-repeat;
    background-position-y: center;
    background-size: 17px 19px;
    opacity: 0.7;
}

.pass-input {
    background: url("../img/padlock1.png"), hsla(0, 0%, 100%, 0);
    background-repeat: no-repeat;
    background-position-y: center;
}

.email-input {
    background: url("../img/email.png"), hsla(0, 0%, 100%, 0);
    background-repeat: no-repeat;
    background-position-y: center;
}

.cash-input-wrap::before{
    content:"";
    position:absolute;
    background: url("../img/banknote1.png"), hsla(0, 0%, 100%, 0);
    width: 27px;
    height: 23px;
    display: block;
}

.time-input-wrap::before{
    content:"";
    position:absolute;
    background: url("../img/wall-clock1.png"), hsla(0, 0%, 100%, 0);
    width: 27px;
    height: 23px;
    display: block;
    background-repeat: no-repeat;
}

.add-advert-form .form-input{
    margin-left: 40px;
    width: 100%;
}
.add-advert-form #addadvertform-date{
    margin-left: 40px;
}
.slider-item .ui-slider {
    width: 100%;
    border: none;
    height: 1px;
    background: var(--color-primary);
    margin-right: 5px;
    margin-left: 5px;
}

/* ===== jQuery UI slider — только геометрия =====
   Полную тему jQuery UI не подключаем (ломает вёрстку фильтра), а её базовый
   слой отвечал за раскладку слайдера. Переносим сюда лишь необходимый минимум,
   без цветов/шрифтов/рамок — внешний вид ручки и полосы задают правила выше.
   .ui-slider БЕЗ position:relative → абсолютные ручки уезжали к body. */
.ui-slider {
    position: relative;
}
/* jQuery UI ставит ручке inline left:N% по левому краю; сдвигаем на половину
   её ширины (28px), чтобы центр ручки совпадал со значением. */
.ui-slider-horizontal .ui-slider-handle {
    margin-left: -10px;
}

.ui-slider-range.ui-corner-all.ui-widget-header {
    background: var(--color-primary);
    border: none;
    height: 3px;
    top: -1px;
    position: relative;
}
#notify-price-slider-range{
    width: 100%;
    position: relative;
}
.m-l-auto{
    margin-left: auto;
}
/* Сам переключатель остаётся 36x24 — растёт только область нажатия <label>
   до 44x44 (минимум Apple HIG). Настоящий input скрыт (width/height 0),
   поэтому кликабелен именно label. */
.checkbox-google {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    margin-right: var(--space-2);
    position: relative;
    vertical-align: middle;
    font-size: var(--font-size-sm);
    user-select: none;
    cursor: pointer;
}
.checkbox-google .checkbox-google-switch {
    display: inline-block;
    width: 36px;
    height: 24px;
    border-radius: 20px;
    position: relative;
    vertical-align: middle;
    background: #9f9f9f;
    transition: .2s;
}
.checkbox-google .checkbox-google-switch:before {
    content: '';
    display: inline-block;
    width: 28px;
    height: 28px;
    position: absolute;
    top: -2px;
    left: -1px;
    background: #fff;
    border-radius: 50%;
    box-shadow: 0 3px 1px -2px rgba(0,0,0,0.2), 0 2px 2px 0 rgba(0,0,0,0.14), 0 1px 5px 0 rgba(0,0,0,0.12);
    transition: .15s;
}
.checkbox-google input[type=checkbox] {
    display: block;
    width: 0;
    height: 0;
    position: absolute;
    z-index: -1;
    opacity: 0;
}
.checkbox-google input[type=checkbox]:checked + .checkbox-google-switch {
    background: HSLA(144.1, 63.1%, 54.3%, 0.5);
}
.checkbox-google input[type=checkbox]:checked + .checkbox-google-switch:before {
    background: #41D47C;
    transform:translateX(18px);
}

/* Hover */
.checkbox-google input[type="checkbox"]:not(:disabled) + .checkbox-google-switch {
    cursor: pointer;
    border-color: rgba(0, 0, 0, .3);
}

/* Active/Focus */
.checkbox-google input[type="checkbox"]:not(:disabled):active + .checkbox-google-switch:before,
.checkbox-google input[type="checkbox"]:not(:disabled):focus + .checkbox-google-switch:before {
    animation: checkbox-active-on 0.5s forwards linear;
}
@keyframes checkbox-active-on {
    0% {
        box-shadow: 0 0 0 0 rgba(212,212,212, 0);
    }
    99% {
        box-shadow: 0 0 0 10px rgba(212,212,212, 0.5);
    }
}

.checkbox-google input[type="checkbox"]:not(:disabled):checked:active + .checkbox-google-switch:before,
.checkbox-google input[type="checkbox"]:not(:disabled):checked:focus + .checkbox-google-switch:before {
    animation: checkbox-active-off 0.5s forwards linear;
}
@keyframes checkbox-active-off {
    0% {
        box-shadow: 0 0 0 0 rgba(154,190,247, 0);
    }
    99% {
        box-shadow: 0 0 0 10px rgba(154,190,247, 0.5);
    }
}

/* Disabled */
.checkbox-google input[type=checkbox]:disabled + .checkbox-google-switch {
    filter: grayscale(60%);
    border-color: rgba(0, 0, 0, .1);
}
.checkbox-google input[type=checkbox]:disabled + .checkbox-google-switch:before {
    background: #eee;
}
.separete{
    margin: 0px 5px;
}
#edit-form .form-group{
    flex-direction: row;
}
.edit-profile-tab .nav-link{
    width: inherit!important;
    margin:inherit!important;
    background: none;
}
.box-shadow{
    background: #FFFFFF;
    box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.1);
    padding: 32px;
}
.edit-profile-tab {
    flex-direction: column!important;
    justify-content: flex-start!important;
    align-items: inherit!important;
    margin-left: inherit!important;
}
.edit-profile-tab .nav-link{
    font-family: Montserrat;
    font-style: normal;
    font-weight: 500;
    font-size: var(--font-size-md);
    line-height: 554.9%;
    color: #AEAEAE;
}
.edit-profile-tab .active{
    color: var(--color-primary-dark);
}
.tab-content .add-advert-form{
    min-height: inherit;
}
.tab-content .text-left{
    display: none;
}
.field-notifisettins-status{
    margin-left: auto;
}
.range-wrap{
    justify-content: space-between;
    flex-direction: row;
    width: 100%;
}
.slider-item{
    margin-bottom: 20px;
}
#custom-handle{
    position: relative;
}
.range-value{
    position: absolute;
    top: 14px;
    
    font-style: normal;
    font-weight: normal;
    font-size: var(--font-size-sm);
    line-height: 16px;
    text-align: center;
    color: var(--color-primary-text);
    width: 30px;
    left: -9px;
    background: #fff;
    height: 25px;
}
.m-bottom-15{
    margin-bottom: 15px!important;
}
.gray-text{
    
    font-style: normal;
    font-weight: normal;
    font-size: var(--font-size-sm);
    line-height: 16px;
    color: #989898;
}
.input-wrap{
    width: 100%;
    max-width: 360px;
    margin-bottom: 25px;
}
.ui-slider-handle.ui-corner-all.ui-state-default {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    border: 3px solid var(--color-primary);
    background: #fff;
    top: -9px;
    box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);
    display: block;
    position: absolute;
}
.add-advert-form .big-black-text{
    margin-bottom: 50px;
}
.chat-page{
    margin-top: 13px;
}
.chat-item{
    display: flex;
}
.message-text-read{
    
    font-style: normal;
    font-weight: normal;
    font-size: var(--font-size-md);
    line-height: 21px;

    color: rgba(32, 38, 60, 0.36);
}
.chat-img{
    min-width: 59px;
    background: linear-gradient(248.41deg, #FF00E5 4.13%, var(--color-primary) 56.26%, #00FFF0 99.1%), #C4C4C4;
    width: 59px;
    height: 59px;
    border-radius: 50%;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    position: relative;
    display: flex;
}
.message{
    margin-left: 20px;
}
.chat-item{
    margin-bottom: 10px;
}
.message-data{
    align-items: center;
    justify-content: center;
    flex-direction: column;
}
.message-count{
    
    font-style: normal;
    font-weight: normal;
    font-size: var(--font-size-md);
    line-height: 21px;
    /* identical to box height */
    color: #F74952;
    margin-top: 15px;
}
.small-blue-text{
    
    font-style: normal;
    font-weight: 300;
    font-size: var(--font-size-md);
    line-height: 21px;
    /* identical to box height */
    color: var(--color-primary-text);
}
.advert-about{
    width: 100%;
    border: 1px solid #DFDFDF;
    box-sizing: border-box;
    box-shadow: 0px 0px 14px rgba(0, 0, 0, 0.08);
    border-radius: 3px;
}
.place-input-wrap::before{
    content:"";
    position:absolute;
    background: url("../img/placeholder1.png"), hsla(0, 0%, 100%, 0);
    width: 27px;
    height: 23px;
    display: block;
    background-repeat: no-repeat;
}
.advert-about{

}
.add-advert-form{
    padding: 10px;
    min-height: 880px;
}

.add-advert-form .blue-btn, .time-input-wrap , .place-input-wrap , .cash-input-wrap{
    width: 100%;
    max-width: 360px;
    overflow: hidden;
}

.add-advert-form .form-input{
    color: #000;
}
.login-text {
    font-family: Montserrat;
    font-style: normal;
    font-weight: bold;
    font-size: var(--font-size-xl);
    line-height: 29px;
    text-align: center;
    color: #fff;
    margin-bottom: 25px;
    background-repeat: no-repeat;
}
.big-black-text{
    font-family: Montserrat;
    font-style: normal;
    font-weight: bold;
    font-size: var(--font-size-md);
    line-height: 22px;
    /* identical to box height */

    text-align: center;

    color: var(--color-primary-dark);
}
.nav-tabs {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
    flex-wrap: wrap;
    padding-left: 0;
    list-style: none;
    align-items: center;
    justify-content: space-around;
    flex-direction: row;
    position: relative;
    height: 100%;
    margin-bottom: 0px;
    border: none;
    max-width: 466px;
    margin-left: auto;
    margin-right: auto;
}
.nav-tabs .nav-link{
    margin: 0 auto;
    width: 150px;
}
.nav-tabs .active{
    border-bottom: 2px solid #6B6B6B;
}

.nav-link {
    border: none;
}
.filter-item{
    
    font-style: normal;
    font-weight: normal;
    font-size: var(--font-size-md);
    line-height: 21px;
    border: 1px solid #ECECEC;
    border-radius: 11px;
    color: #000000;
    display: inline-block;
    padding: 5px 14px 8px;
    margin-bottom: 10px;
}
input:checked + .img-label-radio {
    border: 1px solid #0060df;
}
.filter-item-wrap input{
    opacity: 0;
    position: absolute;
    z-index: -1;
}
.adv-item .img{
    border-radius: 50%;
}
.comment-item .img{
    max-width: 54px;
    margin-right: 15px;
}
.adv-item .date-place , .adv-item .comments{
    margin-top: 25px;
}
.comment-item .post_header_info{
    flex-grow: 2;
}
.adv-item{
    padding: 30px 30px;
    background: #FFFFFF;
    border: 1px solid #F2F2F2;
    box-sizing: border-box;
    box-shadow: 0px 0px 14px rgba(0, 0, 0, 0.08);
    border-radius: 3px;
    margin: 0;
    margin-bottom: 15px;
}
.work-control-block {
    margin-top: 15px;
}
.work-control-block > div {
    margin-right: 15px;
}
.start-dialog {
    width: 47px;
    height: 47px;
    background: linear-gradient(248.41deg, #FF00E5 4.13%, var(--color-primary) 56.26%, #00FFF0 99.1%), #C4C4C4;
    border-radius: 50%;
    display: flex;
    justify-content: center;
    align-items: center;
}
.text-left{
    text-align: left!important;
}
.add-advert-form .form-input , #wall-form .price-input{
    border-bottom: 1px solid #ECECEC;
}
.work-control-block > div{
    cursor: pointer;
}
.blur{
    filter: blur(4px);
}
#under-avatar-form {
    position: absolute;
    bottom: -14px;
    width: 100%;
}
.img-label-wrap{
    display: flex;
    align-items: center;
    justify-content: center;
}
.img-label-wrap label{
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(200.41deg, #FF00E5 4.13%, var(--color-primary) 56.26%, #00FFF0 99.1%), #C4C4C4;
    border-radius: 50%;
    border: 2px solid #FFFFFF;
    box-sizing: border-box;
    box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.13);
}
#under-avatar-form .field-under-avatar-form-input {
    display: none;
}
.add-advert-form .form-input{
    margin-bottom: 35px;
    padding: 0;
    padding-left: 10px;
}
.date-place svg , .adv-price svg , .comments svg{
    margin-right: 15px;
}
#wall-form .form-control:focus{
    box-shadow: none;
}
#wall-form #addcommentform-price{
    border: none;
    margin-bottom: 20px;
    border-bottom: 1px solid #ECECEC;
    max-width: 320px;
}
.adv-price{
    display: flex;
    align-items: center;
    justify-content: flex-end;
}
.comments-list .big-black-text {
    text-align: left;
    margin-bottom: 25px;
}
.comments-list {
    margin-top: 25px;
}
.comment-item{
    padding-bottom: 25px;
    border-bottom: 1px solid #E7E7E7;
    margin-bottom: 25px;
}
#addcommentform-text{
    border: none;
}
.item {
    margin-bottom: 15px;
}
.send-comment-btn{
    position: absolute;
    right: 0;
    top: 10px;
    border-radius: 50%;
    width: 49px;
    height: 49px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
}
#get-dialog-on-single{
    max-width: 230px;
    margin-top: 10px;
}
/* «Пожаловаться» на странице анкеты — под кнопкой «Написать сообщение». */
.complaint-link {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    min-height: 44px;
    margin-top: var(--space-1);
    padding: 0;
    background: none;
    border: none;
    font-family: inherit;
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    color: var(--color-danger);
    cursor: pointer;
    transition: color var(--transition-base);
}
.complaint-link:hover,
.complaint-link:focus-visible {
    color: var(--color-text);
    text-decoration: underline;
}
.dialog-wrap .dialog{
    display: flex;
    flex-direction: column;
    max-width: 580px;
    margin-left: auto;
    margin-right: auto;
}
.dialog-wrap .chat-wrap{
    /* dvh учитывает сворачивание адресной строки; 100vh на iOS больше
       видимой области, и низ переписки с полем ввода уезжал под неё.
       Строка с vh оставлена фолбэком для браузеров без dvh. */
    max-height: calc(100vh - 110px);
    max-height: calc(100dvh - 110px);
}
/* 16px — порог, ниже которого iOS Safari зумит страницу при фокусе на поле
   и обратно сам не отматывает. В чате фокус происходит постоянно, поэтому
   здесь это было заметнее всего. Не опускать ниже 1rem. */
.dialog-wrap .form-control{
    font-size: var(--font-size-base);
}
.dialog-wrap #message-form{
    margin-bottom: 10px;
}
.img-tab .img-item{
    position: relative;
    padding: 0;
    padding-bottom: 10px;
    padding-right: 10px;
}
.form-horizontal .form-group{
    display: flex;
    align-items: center;
    margin-bottom: 25px;
    flex-direction: column;
}
.form-group .help-block{
    color: #fff;
}
.form-horizontal .form-control{
    font-family: var(--font-family);
    font-weight: var(--font-weight-medium);
    font-size: var(--font-size-base);   /* было 15px — iOS зумил форму при фокусе */
    line-height: var(--line-height-normal);
    color: var(--color-primary-dark);
}
.name-price-wrap .price{
    margin-left: auto;
}
.form-horizontal .control-label{
    width: 200px;
}
.form-group #addadvertform-text{
    margin-left: 0px;
    border: 1px solid #ECECEC;
}
.form-group .select2{
    width: 100%!important;
}
/* ===== PREMIUM SERVICE SIDE MENU ===== */
.scrol-container {
    max-height: 100%;
    overflow: auto;
    padding-top: var(--space-10);
}
.service-side-menu {
    z-index: 30;
    background: var(--color-bg);
}
.service-side-menu .scrol-container {
    padding: var(--space-8) var(--space-6) var(--space-6);
    display: flex;
    flex-direction: column;
    height: 100%;
}

/* Close button */
.sm-close-btn {
    position: absolute;
    top: var(--space-4);
    right: var(--space-4);
    z-index: 10;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-full);
    background: var(--color-bg-subtle);
    color: var(--color-text-muted);
    cursor: pointer;
    transition: all var(--transition-fast);
    border: 1px solid var(--color-border-light);
}
.sm-close-btn:hover {
    background: var(--color-danger-light);
    color: var(--color-danger);
    border-color: rgba(229, 56, 75, 0.2);
}

/* Header */
.sm-header {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    margin-bottom: var(--space-4);
    padding-right: 50px;
}
.service-side-menu .side-menu-title {
    font-size: var(--font-size-xl);
    font-weight: var(--font-weight-bold);
    color: var(--color-text);
    letter-spacing: -0.01em;
}
.sm-count {
    background: var(--color-primary-light);
    color: var(--color-primary-text);
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-semibold);
    padding: 2px var(--space-2);
    border-radius: var(--radius-full);
    min-width: 24px;
    text-align: center;
}

/* Search */
.service-side-menu .side-menu-search {
    display: block;
    width: 100%;
    margin-bottom: var(--space-4);
    padding: var(--space-3) var(--space-4);
    padding-left: var(--space-10);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    font-size: var(--font-size-sm);
    transition: all var(--transition-fast);
    background: var(--color-bg-subtle) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238B90A0' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.35-4.35'/%3E%3C/svg%3E") no-repeat 14px center;
    background-size: 16px;
}
.service-side-menu .side-menu-search:focus {
    outline: none;
    border-color: var(--color-primary);
    background-color: var(--color-bg);
    box-shadow: 0 0 0 3px var(--color-primary-light);
}

/* Items list */
.sm-items {
    flex: 1 1 auto;
    overflow-y: auto;
    width: 100%;
}
.service-side-menu .nav-item {
    text-align: left;
    font-size: var(--font-size-base) !important;
    padding: 0;
    margin-bottom: 0;
}
.service-side-menu .nav-item a {
    display: flex;
    align-items: center;
    padding: var(--space-3) var(--space-4);
    font-size: var(--font-size-sm) !important;
    font-weight: var(--font-weight-medium);
    color: var(--color-text);
    text-decoration: none;
    border-radius: var(--radius-md);
    transition: all var(--transition-fast);
    position: relative;
}
.service-side-menu .nav-item a::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 3px;
    height: 0;
    background: var(--color-primary);
    border-radius: var(--radius-full);
    transition: height var(--transition-fast);
}
.service-side-menu .nav-item a:hover {
    background: var(--color-primary-light);
    color: var(--color-primary-text);
    padding-left: calc(var(--space-4) + 6px);
}
.service-side-menu .nav-item a:hover::before {
    height: 60%;
}
.service-side-menu .nav-item a:active {
    background: rgba(12, 136, 250, 0.12);
}

/* Desc-filter chevron icon */
.desc-filter-chevron {
    margin-left: 6px;
    transition: transform var(--transition-fast);
}
.desc-filter-item:hover .desc-filter-chevron {
    transform: translateY(2px);
}
.desc-filter-item svg:first-child {
    margin-right: 6px;
    opacity: 0.6;
    flex-shrink: 0;
}
.desc-filter-item:hover svg:first-child {
    opacity: 1;
}

/* Panel variations — small panels don't stretch items */
.place-wrap .sm-items,
.price-wrap .sm-items,
.national-wrap .sm-items,
.body-wrap .sm-items,
.age-wrap .sm-items,
.hair-wrap .sm-items,
.popular-wrap .sm-items,
.breast-wrap .sm-items,
.rost-wrap .sm-items {
    flex: 0 0 auto;
    overflow-y: visible;
}
.place-wrap .scrol-container,
.price-wrap .scrol-container,
.national-wrap .scrol-container,
.body-wrap .scrol-container,
.age-wrap .scrol-container,
.hair-wrap .scrol-container,
.popular-wrap .scrol-container,
.breast-wrap .scrol-container,
.rost-wrap .scrol-container {
    justify-content: center;
    align-items: center;
}
.service-side-menu .nav-item a {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.adv-price-mobile{
    display: none;
}
.advert-mobile-wrap{
    display: none;
}
.single-advert-user-photo-mobile{
    display: none;
}
.add-advert-form{
    max-width: 1320px;
    margin: auto;
}
.add-advert-form-desc{
    align-items: inherit;
    justify-content: inherit;
    flex-direction: inherit;
}
.add-advert-form-desc #addadvertform-date {
    margin-left: inherit;
}
.add-advert-form-desc .help-block{
    color: #000;
}
.add-advert-form-desc .field-addadvertform-date ,
.add-advert-form-desc .field-addadvertform-price,
.add-advert-form-desc .field-addadvertform-address
{
    display: flex;
    width: 100%;
    flex-wrap: wrap;
    padding-left: 35px;
}
.add-advert-form-desc .input-group{
    flex-grow: 2;
    width: auto!important;
}
.add-advert-form-desc .cash-input-wrap .form-input ,
.add-advert-form-desc .place-input-wrap ,
.add-advert-form-desc #addadvertform-address ,
.add-advert-form-desc .field-addadvertform-date .input-group {
    flex-grow: 2;
    margin-left: auto;
    width: auto;
    max-width: 410px;
}
.add-advert-form-desc .time-input-wrap ,
.add-advert-form-desc .place-input-wrap ,
.add-advert-form-desc .cash-input-wrap{
    max-width: 100%;
}
.pay-form .blue-btn{
    width: 252px;
    height: 52px;
    margin-top: 25px;
}
.add-advert-form-desc{
    max-width: inherit;
    padding: inherit;
    min-height: inherit;
    margin: inherit;
    padding: 0;
}
.add-advert-form-desc #addadvertform-text{
    height: 151px;
}
.add-advert-form-desc .input-wrap-text, .add-advert-form-desc .labels-wrap{
    max-width: inherit;
}
.user-menu{
    list-style: none;
    padding-left: 10px;
}
.user-menu li {
    font-family: var(--font-family);
    font-weight: var(--font-weight-semibold);
    font-size: var(--font-size-md);
    line-height: var(--line-height-normal);
    color: var(--color-text);
    margin-top: var(--space-4);
}
/* Пункт "Настройки" — <button>, а не ссылка: он открывает панель.
   Снимаем браузерный хром, чтобы он не отличался от соседних пунктов. */
.user-menu-btn-item {
    background: none;
    border: none;
    padding: 0;
    font: inherit;
    color: inherit;
    cursor: pointer;
    text-align: left;
    width: 100%;
    min-height: 44px;
    display: flex;
    align-items: center;
}
.btn-exit{
    font-family: var(--font-family);
    font-weight: var(--font-weight-semibold);
    font-size: var(--font-size-md);
    line-height: var(--line-height-normal);
    color: var(--color-text);
    padding: 0;
    background: none;
    border: none;
    cursor: pointer;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
}
.btn-exit:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}
.balance-card {
    width: 295px;
    height: 186px;
    filter: drop-shadow(0px 12px 29px rgba(12, 136, 250, 0.3));
    background: linear-gradient(248.41deg, #FF00E5 4.13%, var(--color-primary) 56.26%, #00FFF0 99.1%), #C4C4C4;
    border-radius: 15px;
    padding: 16px;
}
.margin-top-10{
    margin-top: 10px;
}
.card-text-img-wrap{
    display: flex;
}
.balance-type-item{
    display: flex;
    align-items: center;
}
.card-text-img-wrap .card-text{
    font-style: normal;
    font-weight: normal;
    font-size: 10px;
    line-height: 11px;
    color: #FFFFFF;
    width: 132px;
    flex-grow: 2;
    display: flex;
    align-items: center;
}
.balance-card .big-white-text{
    margin-top: 5px;
}
.white-bold-text {
    font-weight: bold;
    font-size: var(--font-size-md);
    line-height: 141.4%;
    color: #FFFFFF;
}
.balance-type-item svg{
    margin-right: 25px;
}
.date-and-context-wrap .balance-type-text{
    
    font-style: normal;
    font-weight: 500;
    font-size: var(--font-size-md);
    line-height: 22px;
    color: var(--color-primary-dark);
}
.date-and-context-wrap .balance-type-date{
    
    font-style: normal;
    font-weight: normal;
    font-size: var(--font-size-md);
    line-height: 21px;
    color: #E2E2E2;
}
.table-striped > tbody > tr:nth-of-type(2n+1) > * {
    --bs-table-accent-bg:none;
    color: none;
}
.edit-profile-tab-form{
    border-left: 1px solid #ececec;
    padding-left: 110px;
}
.edit-profile-tab .nav-item{
    position: relative;
}
.edit-profile-tab .nav-item .active::before{
    background: linear-gradient(248.41deg, #FF00E5 4.13%, var(--color-primary) 56.26%, #00FFF0 99.1%), #C4C4C4;
    border-radius: 11px;
    transform: rotate(-90deg);
    width: 70.81px;
    height: 5.49px;
    display: block;
    position: absolute;
    content: '';
    left: -65px;
    bottom: 53px;
}
.advert-expired .item-text ,
.advert-expired .date-place ,
.advert-expired .date-place a ,
.advert-expired .date-place svg{
    color:#C4C4C4!important;
}
.advert-expired .name{
    
    font-style: normal;
    font-weight: normal;
    font-size: 17px;
    line-height: 20px;
    letter-spacing: -0.165px;
    color: var(--color-primary-text);
}
.table{
    border-color: #fff;
}
.table a{
    color: var(--color-primary-dark);
}
.table .refill{
    font-family: Montserrat;
    font-style: normal;
    font-size: var(--font-size-md);
    /* identical to box height */
    color: #41D57C;
}

.table .pay{
    font-family: Montserrat;
    font-style: normal;
    font-size: var(--font-size-md);
    /* identical to box height */
    color: #F74952;
}

.table > :not(:first-child) {
    border-top: none;
}
.big-white-text {
    font-family: Ubuntu;
    font-style: normal;
    font-weight: bold;
    font-size: 36px;
    line-height: 41px;
    color: #FFFFFF;
}
.margin-top-20 {
    margin-top: 20px !important;
}
.pay-form-wrap {
    background: #FFFFFF;
    border: 1px solid #EDEDED;
    box-sizing: border-box;
    box-shadow: 0px 0px 22px rgba(0, 0, 0, 0.06);
    border-radius: 21px;
    padding: 25px;
}
#obmenkapayform-currency input {
    position: absolute;
    z-index: -1;
    opacity: 0;
}
.pay-form-wrap .form-group input {
    text-align: left;
    background: #FFFFFF;
    border: 1px solid #F74952;
    box-sizing: border-box;
    border-radius: 3px;
    color: #F74952;
}
input:checked + .image-label-radio {
    border: 1px solid #F74952;
}
.pay-form-wrap .form-group label {
    color: #000;
    margin-bottom: 20px;
}

input:checked + .image-label-radio {

    border: 1px solid #F74952;

}
.pay-form-wrap .form-group label {

    color: #000;
    margin-bottom: 20px;

}
.qiwi_label {

    background: url('../img/qiwi-img.png');
    background-position: center;
    background-repeat: no-repeat;

}
.image-label-radio {
    background-repeat: no-repeat;
    border: 1px solid #EEEEEE;
    box-sizing: border-box;
    border-radius: 6px;
    width: 54px;
    height: 28px;
    background-position: center;
    display: inline-block;
}
.visa_master_label {
    background: url('../img/visa-master.png');
    background-repeat: no-repeat;
    width: 62px;
    background-position-x: 8px;
    background-position-y: 5px;
}
.pay-form-wrap .blue-text{
    border: 1px solid #E7E7E7;
    box-sizing: border-box;
    border-radius: 3px;
    padding: 5px;
    padding-left: 15px;

    font-family: Montserrat;
    font-style: normal;
    font-weight: bold;
    font-size: var(--font-size-xl);
    line-height: 29px;
    color: var(--color-primary-text);
    width: 252px;
}
.pay-form .form-group{
    align-items: baseline;
}
.user-menu li a{
    font-family: Montserrat;
    font-style: normal;
    font-weight: 600;
    font-size: var(--font-size-md);
    line-height: 22px;
    color: #131313;
    margin-top: 18px;
    text-decoration: none;
}
.field-obmenkapayform-sum label{
    display: block;
}
.pay-form-wrap label{
    font-family: Montserrat;
    font-style: normal;
    font-weight: normal;
    font-size: var(--font-size-base);
    line-height: 20px;
    /* identical to box height */
    color: #444444;
}
.first-letter-wrap{
    position: relative;
    background: linear-gradient(228.09deg, var(--color-primary) 12.18%, #580CFA 82.54%);
    width: 118px;
    height: 118px;
    border-radius: 50%;
}
.back-url{
    position: absolute;
    top: 0;
    left: 10px;
    display: none;
    z-index: 5;
}
.owl-dots .active{
    width: 30px;
    transition: all 0.5s ease-out;
}
.advert-photo-wrap .name-img , .advert-mobile-wrap .name-img{
    width: 70px;
    height: 70px;
    display: block;
}
#add-gallery-form{
    display: flex;
    justify-content: center;
    align-items: center;
}
#add-gallery-form label{
    text-align: center;
}
.gallery-label-wrap .form-group{
    display: none;
}
.gallery-label-wrap label{
    display: flex;
    flex-direction: column;
    align-content: center;
    justify-content: center;
    align-items: center;
    color: #0c88fa;
    text-decoration: underline;
    font-size: var(--font-size-base);
}
.user-photo-wrap .name{
    margin-top: 10px;
}
#menu-under-avatar-form , .photo-form{
    position: absolute;
    bottom: -13px;
    width: 100%;
}
.side-user-menu .user-photo-wrap .img{
    max-width: 118px;
}
.data-wrap .field-user-age,
.data-wrap .field-user-pol ,
.data-wrap .field-user-rost,
.data-wrap .field-user-ves,
.data-wrap .field-user-grud,
.data-wrap .field-user-role,
.data-wrap .field-usermetro-metro_id ,
.data-wrap .field-user-price
{
    margin: 10px 0 !important;
    border-bottom: 1px solid #F0F0F0;
    padding-bottom: 10px;
}
#addadvertform-date-datetime > span{
    opacity: 0;
    height: 0;
    width: 0;
    display: block;
    padding: 0;
}
.add-advert-wrap {
    overflow-y: auto;
}
.data-wrap .field-user-age label{
    width: inherit;
}
.data-wrap .form-control{
    border: none;
    text-align: center;
}
.data-wrap .form-control:focus{
    box-shadow: none;
    border: none;
    border-radius: 0px;
}
.data-wrap .name{
    display: none;
}
.data-wrap .send-btn{
    margin-top: 15px;
    text-align: center;
    display: flex;
    justify-content: center;
    margin-top: 15px;
    margin-bottom: 15px!important;
}
.data-wrap .field-user-username{
    margin-left: 21px;
}
.data-wrap .form-horizontal .form-group, .data-content-wrap .form-horizontal .form-group{
    margin-bottom: 0;
}
.data-wrap .user-photo-wrap {
    margin-bottom: 10px;
}
.data-wrap .field-user-telegram, .data-wrap .field-user-phone{
    justify-content: center;
}
.form-group #user-telegram{
    font-family: Montserrat;
    font-style: normal;
    font-weight: 600;
    font-size: 17px;
    line-height: 21px;
    /* identical to box height */
    color: #848484;
}
.event-item > a{
    flex: 0 0 100%;
    width: 100%;
}
#event-h1-settings-wrap{
    display: flex;
}
.event-item > div{
    margin-right: 15px;
}
.event-item {
    padding: 15px;
    border-bottom: 1px solid #eaeaea;
    flex-wrap: wrap;
}
.data-wrap .field-user-user_status{
    margin: 10px 0!important;
    flex-direction: row;
}
.data-wrap .field-user-age label ,
.data-wrap .field-user-age select ,
.data-wrap .field-user-pol select ,
.data-wrap .field-user-pol label,
.data-wrap .field-user-rost select ,
.data-wrap .field-user-rost label,
.data-wrap .field-user-ves input ,
.data-wrap .field-user-ves label,
.data-wrap .field-user-grud input ,
.data-wrap .field-user-grud label,
.data-wrap .field-user-price input ,
.data-wrap .field-user-price label,
.data-wrap .field-user-role input ,
.data-wrap .field-user-role select ,
.data-wrap .field-user-role label,
.data-wrap .field-usermetro-metro_id select ,
.data-wrap .field-usermetro-metro_id label
{
    
    font-style: normal;
    font-weight: normal;
    font-size: var(--font-size-md);
    line-height: 21px;
    color: #7D7D7D;
}
.data-wrap .field-user-user_status .form-control{
    text-align: left;
    margin-left: 0;
    padding-left: 0;
    border-bottom: 1px solid #F0F0F0;
    border-radius: 0;
    
    font-style: normal;
    font-weight: normal;
    font-size: var(--font-size-md);
    line-height: 21px;
    color: #7D7D7D;
    padding-bottom: 15px;
}
.data-wrap #user-phone{
    background: url('../img/green-phone.png');
    background-position-y: 0%;
    background-repeat: no-repeat;
    background-position: center;
    background-position-x: 40px;
}
.data-wrap .field-user-smoking{
    flex-direction: column!important;
    text-align: left;
    align-items: inherit;
}
.data-wrap .field-user-smoking #user-smoking{
    display: flex;
}
.data-wrap .field-user-smoking #user-smoking span{
    flex-grow: 1;
    margin-right: 15px;
}
.data-wrap .field-user-smoking #user-smoking input{
    display: none;
}
.data-wrap .field-user-smoking #user-smoking label{
    width: 100%;
    height: 35px;
    box-sizing: border-box;
    box-shadow: 0px 0px 13px rgba(0, 0, 0, 0.04);
    border-radius: 3px;
    text-align: center;
    line-height: 31px;
}
.data-wrap .field-user-smoking > label{
    margin-bottom: 15px;
}
.data-wrap .field-user-smoking{
    margin-bottom: 10px;
}
.data-wrap .field-userservice-service_id{
    flex-direction: column!important;
    text-align: left;
    align-items: baseline;
}
.dialog_list-wrap {
    background: #FFFFFF;
    border: 1px solid #EDEDED;
    box-sizing: border-box;
    box-shadow: 0px 0px 9px rgba(0, 0, 0, 0.06);
    border-radius: 5px;
    padding: 10px 15px;
    min-height: 527px;
}
.dialog_item_ul {
    padding-left: 0;
    list-style: none;
    margin-bottom: 0;
    max-height: 600px;
    overflow: hidden;
    overflow-y: hidden;
    overflow-y: auto;
}
.dialog_item {
    padding-bottom: 15px;
    border-bottom: 1px solid #DFDFDF;
    padding-top: 15px;
}
#event-h1-settings-wrap .settings-btn{
    display: none;
}
.dialog-name {
    margin-bottom: 5px;
    margin-top: 3px;
}
.grey-text {
    font-style: normal;
    font-weight: normal;
    font-size: var(--font-size-md);
    line-height: 141.4%;
    display: inline-block;
    color: #999999;
}
.nim-dialog--inner-text {
    font-style: normal;
    font-weight: normal;
    font-size: var(--font-size-md);
    line-height: 141.4%;
    /* or 25px */


    color: #000000;
}
.close-chat {
    position: absolute;
    top: 15px;
}
.close-chat {
    display: none;
}
.dialog_list-wrap-with-dialog .dialog {
    display: flex;
    flex: 0 0 60%;
    max-width: 60%;
    flex-direction: column;
    transition: all 1s ease-out;
}
.chat-block {
    flex: 1 0 auto;
}
.chat-block, .comment-wall-form {
    padding-left: 15px;
}
.chat-block, .comment-wall-form {
    padding-left: 15px;
}
.comment-wall-form {
    border-top: 1px solid #DFDFDF;
}
.dialog-name {
    margin-bottom: 5px;
    margin-top: 3px;
    font-style: normal;
    font-weight: 500;
    font-size: var(--font-size-md);
    line-height: 141.4%;
    /* or 25px */


    color: var(--color-primary-dark);
}
.overflow-hidden {
    overflow: hidden !important;
}
.chat-wrap {
    max-height: 450px;
    overflow-y: scroll;
    position: relative;
    right: -12px;
    padding-right: 10px;
}
.chat, .authorisation-block {
    min-height: 30vh;
}
.chat {
    display: flex;
    flex-direction: column-reverse;
}
.right-message {
    text-align: right;
    color: #7C7C7C;
}
.post-text {
    line-height: 60px;
}
.right-message .message-wrap {
    background: #F2F2F2;
    color: #7C7C7C;
}
.message-wrap {
    background: var(--color-primary);
    border-radius: 10px;
    color: #fff;
    padding: 15px 18px;
}
.comment-wall-form {
    border-top: 1px solid #DFDFDF;
}
.message-send-btn {
    margin-left: 15px;
    padding: 8px;
    height: 40px;
    margin-top: auto;
}
.orange-btn {
    background: linear-gradient(200.41deg, #FF00E5 4.13%, var(--color-primary) 56.26%, #00FFF0 99.1%), #C4C4C4;
    border-radius: 10px;
    font-style: normal;
    font-weight: normal;
    font-size: var(--font-size-base);
    line-height: 100.4%;
    color: #FFFFFF;
    display: inline-block;
    padding: 11px 24px 11px 25px;
    margin-right: 11px;
    border: none;
    margin-top: 10px;
}
.chat-block, .comment-wall-form {
    padding-left: 15px;
}
.dialog_list-wrap-with-dialog .dialog_list {
    display: flex;
    flex: 0 0 40%;
    max-width: 40%;
    transition: all 1s ease-out;
    border-right: 1px solid #dfdfdf;
}
.dialog_item_ul {
    width: 100%;
}
.dialog_list-wrap-with-dialog .dialog-photo-wrap {
    max-width: 95px;
    flex: 20%;
}
.dialog_list-wrap-with-dialog .nim-dialog--content {
    flex: 80%;
}
#sendmessageform-text {
    height: 39px;
    border: none;
    margin-top: 10px;
}
.form-otvet{
    width: 100%;
}
.dialog-wrap .close-chat{
    display: none;
}
.data-content-wrap .add-advert-form .big-black-text{
    display: none;
}
.data-content-wrap .add-advert-form{
    min-height:inherit;
}
.dialog_list .dialog-photo{
    border-radius: 50%;
    overflow: hidden;
}
.dialog{
    position: relative;
}
.comment-item:last-child{
    border-bottom: 0;
}
#wall-form{
    margin-top: 20px;
}
.advert-close .comment-item{
    opacity: 0.5;
}
.start-dialog-wrap, .remove-advert-request, .check-advert-request{
    display: flex;
    justify-content: center;
    align-items: center;
}
.help-text{
    margin-left: 5px;
}
.work-control-block-check{
    margin-bottom: 25px!important;
    margin-top: 0px!important;
    justify-content: end;
}
.advert-close .status-check{
    opacity: 1;
}
.event-signal{
    position: absolute;
    width: 7px;
    height: 7px;
    background: #f00;
    border-radius: 50%;
}
.link-item{
    color: #212529;
    margin-right: 15px;
    text-decoration: none;
}
.link-block{
    margin-bottom: 15px;
    margin-top: -10px;
}
.item-img {
    min-height: 0;
    aspect-ratio: 2/3;
    overflow: hidden;
    border-radius: var(--radius-lg) var(--radius-lg) 0 0;
}
/* z-index moved to premium service side menu section above */
.slider-item .ui-slider {
    width: 140px;
    border: none;
    height: 2px;
    background: #ececec;
    margin-right: 5px;
    margin-left: 5px;
}
#gal .name{
    padding-left: 0;
    margin-bottom: 10px;
}
.filter-block .metro-select-wrap{
    max-width: 180px;
    margin-right: 10px;
}
@media (max-width: 1400px) {
    .single-advert-user-photo-mobile .name{
        margin-left: 10px;
    }
    .single-advert-user-photo-mobile{
        display: flex;
    }
    .single-advert-user-photo-desc .name{
        display: none;
    }
    .single-advert-user-photo{
        display: none;
    }
    .adv-item .item-text{
        margin-top: 25px;
    }
    .comments-list  .item-text{
        margin-top: 0px;
    }
}
@media (max-width: 1199px) {
    .search-by-params-btn img{
        margin-left: auto;
        display: block;
        margin-top: 10px;
        margin-right: 10px;
    }
    /* Панель фильтра ведёт себя как main-nav (.menu): полноэкранная, выезжает
       слева через open_side_menu()/close_side_menu() (animate left), с общим
       оверлеем .side-menu-overlay. filter-btn/крестики переключены на
       data-target="filter-wrap". По умолчанию за экраном (left:-120%). */
    .filter-wrap {
        position: fixed;
        top: 0;
        left: -120%;
        height: 100%;
        width: 100%;
        z-index: var(--z-modal);
        background-color: #fff;
        overflow-y: auto;
        padding: var(--space-6) var(--space-5) var(--space-10);
        box-shadow: var(--shadow-xl);
    }
    /* Заголовок панели (добавлен в search.php). */
    .filter-wrap-title {
        display: block;
        font-size: var(--font-size-lg);
        font-weight: var(--font-weight-bold);
        color: var(--color-text);
        margin-bottom: var(--space-5);
    }
    .metro-select-wrap{
        margin-bottom: var(--space-5);
        text-align: center;
    }
    .metro-select-wrap select{
        text-align: center;
    }
    .filter-block form{
        flex-direction: column;
        align-items: stretch;
        margin: 0;
    }
    /* Каждый слайдер — блок на всю ширину: подпись сверху, слайдер, значения. */
    .slider-item-wrap{
        height: auto;
        width: 100%;
        margin-right: 0;
        margin-bottom: var(--space-6);
    }
    .slider-item {
        width: 100%;
    }
    .filter-block .slider-item .ui-slider {
        width: 100%;
        margin: var(--space-4) 0 var(--space-2);
    }
    .slider-item-text {
        font-weight: var(--font-weight-semibold);
        color: var(--color-text);
        font-size: var(--font-size-base);
        margin-bottom: 0;
    }
    /* Кнопка «Показать» — во всю ширину панели. */
    .filter-wrap .blue-btn {
        width: 100%;
        margin-top: var(--space-4);
    }
    /* Кнопка закрытия — крупный X в правом верхнем углу панели. */
    .close-filter-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        position: absolute;
        top: var(--space-4);
        right: var(--space-4);
        width: 40px;
        height: 40px;
        border-radius: var(--radius-full);
        background: var(--color-bg-subtle);
        cursor: pointer;
    }
    /* Прежняя кнопка-крестик (img) больше не нужна — закрываем через .close-filter-btn. */
    .search-by-params-btn {
        display: none;
    }
}

@media (max-width: 992px) {
    .adv-item-single .adv-price{
        display: none!important;
    }
    .adv-item-single .adv-price-mobile{
        display: flex!important;
        margin-top: 20px;
    }
    .adv-item-single .date-place > div{
        margin-top: 20px;
    }
    .adv-item-single .date-place .blue-text{
        line-height: 32px;
    }
    .edit-profile-btn {
        font-size: var(--font-size-base);
    }
}

/* Порядок медиа-блоков — строго по убыванию (desktop-first): 1400 > 1199 >
   992 > 768 > 575. Блок 768 раньше стоял ПОСЛЕ 575 и на узких экранах
   выигрывал у него при равной специфичности. Пересечение у блоков одно
   (.back-url) и по разным свойствам, поэтому перестановка ничего не меняет
   в отрисовке — но убирает ловушку для следующей правки. */
@media (max-width: 768px) {
    main{
        min-height: calc(100vh - 78px);
        min-height: calc(100dvh - 78px);
    }
    /* Горизонтальный ряд чипов-фильтров прячем на мобильных: на телефоне он не
       помещается. Показать его можно кнопкой .desc-filter-btn в шапке —
       она видна только здесь и раскрывает .desc-filter под шапкой. */
    .desc-filter {
        display: none;
    }
    .desc-filter-fab {
        display: inline-flex;
    }
    .desc-filter.desc-filter--open {
        display: flex;
    }
    .dialog {
        display: none;
    }
    .dialog_list-wrap-with-dialog .dialog_list {
        display: none;
    }
    .dialog_list-wrap-with-dialog .dialog {
        flex: 0 0 100%;
        max-width: 100%;
        display: flex;
    }
    #event-h1-settings-wrap .settings-btn{
        display: block;
        margin-left: auto;
    }
    #get-dialog-on-single {
        margin-left: auto;
        margin-right: auto;
    }
    .complaint-link-wrap {
        text-align: center;
    }
    .close-chat {
        display: block;
    }
    .back-url{
        display: block;
    }
    .bottom-nav{
        display: flex;
    }
    .balance-card{
        margin: auto;
        margin-bottom: 30px;
    }
    .adv-price{
        display: none!important;
    }
    .advert-photo-wrap{
        display: none;
    }
    .adv-item .comments {
        margin-top: 20px;
    }
    .advert-mobile-wrap{
        display: flex;
    }
    .name-img{
        margin: auto;
        margin-top: 15px;
        margin-bottom: 15px;
    }
    .date-place > div{
        margin-bottom: 15px;
    }
    .adv-item-single .date-place > div{
        margin-bottom: 0px;
    }
    .single .name , .single .telegram-profile{
        text-align: center;
    }
}

@media (max-width: 575px) {
    .advert-mobile-wrap .name-img {
        width: 60px;
        height: 60px;
        display: block;
    }
    .breadcrumb{
        display: none;
    }
    .back-url{
        top: 20px;
        left: 20px;
    }
    .owl-stage {
        height: calc(100vh - 290px);
        height: calc(100dvh - 290px);
        overflow: hidden;
    }
    .service-data-info-item .profile-data-item-count{
        margin-bottom: 0px;
        display: block;
        text-align: left;
    }
    .data-info-item {
        margin-bottom: 10px;
    }
    .service-data-info-item .service-list{
        column-count: 2;
    }
    .service-data-info-item .service-list a{
        display: block;
    }
    .service-list span{
        display: none;
    }
    .edit-profile-btn{
        margin-top: 30px;
    }
    .nav-tabs .nav-link{
        width: auto;
    }
    .adv-item {
        padding: 15px 10px;
    }
    .adv-price-mobile{
        display: flex;
    }
    .article-info{
        padding: 15px;
    }
    .item {
        padding: 0;
    }
}


/* ===== RELATED PROFILES SECTION ===== */
.related-profiles {
    margin-top: var(--space-10);
    padding-top: var(--space-8);
    border-top: 1px solid var(--color-border-light);
}
.related-profiles h2 {
    font-size: var(--font-size-xl);
    font-weight: var(--font-weight-bold);
    margin-bottom: var(--space-6);
    color: var(--color-text);
}

/* ===== PAGINATION PRELOADER ===== */
.pagination-preloader {
    display: none;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--space-8) 0;
    width: 100%;
}
.pagination-preloader.active {
    display: flex;
}
.preloader-spinner {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    margin-bottom: var(--space-3);
}
.preloader-dot {
    width: 10px;
    height: 10px;
    border-radius: var(--radius-full);
    background: var(--color-primary);
    animation: preloaderBounce 1.4s ease-in-out infinite both;
}
.preloader-dot:nth-child(1) {
    animation-delay: -0.32s;
}
.preloader-dot:nth-child(2) {
    animation-delay: -0.16s;
    background: var(--color-accent);
}
.preloader-dot:nth-child(3) {
    animation-delay: 0s;
}
@keyframes preloaderBounce {
    0%, 80%, 100% {
        transform: scale(0.4);
        opacity: 0.4;
    }
    40% {
        transform: scale(1);
        opacity: 1;
    }
}
.preloader-text {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    letter-spacing: 0.05em;
    text-transform: uppercase;
    font-weight: var(--font-weight-medium);
}

/* ===== AJAX FILTER ===== */
.ajax-filter-loading {
    opacity: 0.5;
    pointer-events: none;
    transition: opacity var(--transition-fast);
}
/* .filter-spinner и второй экземпляр @keyframes spin удалены: JS вешает
   .ajax-filter-loading (script.js), а .filter-spinner не появлялся в разметке
   ни разу. */

/* ===== ICON CLOSE PREMIUM ===== */
.icon-close {
    text-align: right;
    padding: 0;
    position: absolute;
    right: var(--space-3);
    /* Выше формы/контента панели (z-index:1): крестик идёт первым в разметке,
       форма — позже, и при равном z-index перекрывала его — клик не проходил. */
    z-index: 10;
    top: var(--space-3);
    cursor: pointer;
    width: 44px;    /* было 36 — не дотягивало до тач-минимума */
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-full);
    transition: background var(--transition-fast);
}
.icon-close:hover {
    background: rgba(0, 0, 0, 0.06);
}
/* ===== REDUCED MOTION =====
   В файле 16 @keyframes, из них бесконечные: preloaderBounce, spin,
   skeleton-pulse и пять *Dot — остановить их было нечем. Пользователи
   с вестибулярными расстройствами выставляют этот флаг в системе.
   Не `animation: none` — так пропали бы прелоадеры: анимация остаётся,
   но схлопывается в один кадр, состояние загрузки видно. */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
    /* Подъём карточек и кнопок под курсором — самое заметное движение. */
    .item-card:hover,
    .blue-btn:hover,
    .item-btn:hover,
    .card-elevated:hover {
        transform: none;
    }
    .item-img-link:hover .img,
    .item-img-link:hover picture {
        transform: none;
    }
}
