/* ============================================================================
   LUXE BOARD — Premium Classifieds (Diski-style)
   ============================================================================ */

:root {
    /* Brand — deep indigo with soft lavender */
    --brand:            #009688;
    --brand-hover:      #03685f;
    --brand-soft:       #EEEBFF;
    --brand-glow:       rgba(91, 71, 224, 0.18);
    --brand-text:       #4338CA;
    --brand-accent:     #000;

    --color-success:    #10B981;
    --color-success-soft: #D1FAE5;
    --color-danger:     #EF4444;
    --color-danger-soft: #FEE2E2;
    --color-warning:    #F59E0B;
    --color-warning-soft: #FEF3C7;
    --color-info:       #3B82F6;
    --color-info-soft:  #DBEAFE;
    --color-vip:        #F59E0B;
    --color-top:        #8B5CF6;
    --color-new:        #10B981;

    /* Surfaces */
    --bg:               #F4F5FB;
    --bg-elev:          #FFFFFF;
    --bg-soft:          #F8F9FD;
    --bg-strong:        #E5E7EB;
    --bg-overlay:       rgba(17, 24, 39, 0.5);

    --border:           #E8EAF3;
    --border-soft:      #F0F1F8;
    --border-strong:    #D1D5DB;

    --text:             #14182B;
    --text-soft:        #4B5163;
    --text-muted:       #8B91A3;
    --text-faint:       #C8CCDA;
    --text-inverse:     #FFFFFF;

    --shadow-xs:        0 1px 2px rgba(20, 24, 43, 0.04);
    --shadow-sm:        0 1px 3px rgba(20, 24, 43, 0.06), 0 1px 2px rgba(20, 24, 43, 0.04);
    --shadow:           0 4px 12px rgba(20, 24, 43, 0.05), 0 1px 3px rgba(20, 24, 43, 0.03);
    --shadow-md:        0 8px 24px rgba(20, 24, 43, 0.08);
    --shadow-lg:        0 20px 48px rgba(20, 24, 43, 0.10);
    --shadow-xl:        0 24px 64px rgba(20, 24, 43, 0.14);
    --shadow-brand:     0 10px 28px rgba(91, 71, 224, 0.30);
    --shadow-card:      0 1px 3px rgba(20, 24, 43, 0.04), 0 4px 16px rgba(20, 24, 43, 0.04);
    --shadow-hover:     0 12px 32px rgba(20, 24, 43, 0.10);

    --r-xs: 6px;
    --r-sm: 10px;
    --r:    14px;
    --r-md: 18px;
    --r-lg: 24px;
    --r-xl: 32px;
    --r-full: 999px;

    --gap-1: 4px;   --gap-2: 8px;   --gap-3: 12px;  --gap-4: 16px;
    --gap-5: 20px;  --gap-6: 24px;  --gap-7: 32px;  --gap-8: 40px;
    --gap-9: 56px;  --gap-10: 72px;

    --font: -apple-system, BlinkMacSystemFont, "Onest", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

    --tr-fast: 120ms ease;
    --tr:      200ms cubic-bezier(0.4, 0, 0.2, 1);
    --tr-slow: 380ms cubic-bezier(0.4, 0, 0.2, 1);

    --container: 1450px;
    --header-h: 76px;
}

[data-theme="dark"] {
    --bg:               #0B0E1A;
    --bg-elev:          #161B2E;
    --bg-soft:          #1E2236;
    --bg-strong:        #2A2F45;
    --border:           #2A2F45;
    --border-soft:      #1E2236;
    --border-strong:    #3A3F55;
    --text:             #F3F4F6;
    --text-soft:        #B4BAC8;
    --text-muted:       #7A8294;
    --text-faint:       #4A5060;
    --brand-soft:       rgba(91, 71, 224, 0.15);
    --shadow-sm:        0 1px 3px rgba(0,0,0,0.4);
    --shadow:           0 4px 12px rgba(0,0,0,0.4);
    --shadow-md:        0 8px 24px rgba(0,0,0,0.5);
    --shadow-lg:        0 16px 40px rgba(0,0,0,0.55);
    --shadow-card:      0 1px 3px rgba(0,0,0,0.4), 0 4px 16px rgba(0,0,0,0.3);
    --shadow-hover:     0 12px 32px rgba(0,0,0,0.5);
}

* { box-sizing: border-box; }
*::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; -webkit-tap-highlight-color: transparent; scroll-behavior: smooth; }
body {
    margin: 0;
    font-family: var(--font);
    font-size: 15px;
    line-height: 1.55;
    color: var(--text);
    background: var(--bg);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    transition: background var(--tr), color var(--tr);
    min-height: 100vh;
    font-feature-settings: 'cv01', 'cv02', 'ss01';
}

img, svg, video { max-width: 100%; display: block; }
button { font: inherit; cursor: pointer; background: none; border: 0; color: inherit; padding: 0; }
a { color: inherit; text-decoration: none; transition: color var(--tr-fast); }
a:hover { color: var(--brand); }
input, textarea, select { font: inherit; color: inherit; }
h1, h2, h3, h4, h5, h6 { margin: 0; font-weight: 700; letter-spacing: -0.02em; line-height: 1.2; }

::selection { background: var(--brand); color: #fff; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 999px; }
::-webkit-scrollbar-thumb:hover { background: var(--text-muted); }

.container { width: 100%; max-width: var(--container); margin-inline: auto; padding-inline: var(--gap-5); }
.main { min-height: calc(100vh - var(--header-h) - 280px); padding-bottom: var(--gap-9); }
.section { padding: var(--gap-9) 0; }
.section-tight { padding: var(--gap-7) 0; }
.section-head { display: flex; align-items: center; justify-content: space-between; gap: var(--gap-4); margin-bottom: var(--gap-6); }
.section-title { font-size: 32px; font-weight: 800; margin: 0; letter-spacing: -0.03em; }
.section-link { display: inline-flex; align-items: center; gap: var(--gap-2); font-weight: 600; color: var(--brand); font-size: 14px; transition: gap var(--tr); }
.section-link:hover { color: var(--brand-hover); gap: var(--gap-3); }

/* ============================================================================
   HEADER
   ============================================================================ */
.header {
    position: sticky; top: 0; z-index: 100;
    background: rgba(255, 255, 255, 0.94);
    border-bottom: 1px solid var(--border-soft);
    backdrop-filter: saturate(180%) blur(20px);
    -webkit-backdrop-filter: saturate(180%) blur(20px);
}
[data-theme="dark"] .header { background: rgba(22, 27, 46, 0.94); }

.header-inner { display: flex; align-items: center; gap: var(--gap-6); height: var(--header-h); }

.logo {
    display: inline-flex; align-items: center; gap: var(--gap-3);
    font-weight: 800; font-size: 22px; letter-spacing: -0.02em;
    color: var(--text); flex-shrink: 0;
}
.logo:hover { color: var(--text); }
.logo-mark {
    display: inline-grid; place-items: center;
    width: 44px; height: 44px;
    background: var(--brand);
    color: #fff; border-radius: 14px; font-size: 18px;
    box-shadow: 0 8px 20px var(--brand-glow);
    position: relative;
}
.logo-mark::after {
    content: ""; position: absolute; inset: 0; border-radius: inherit;
    background: linear-gradient(135deg, rgba(255,255,255,0.25), transparent 50%);
    pointer-events: none;
}
.logo-text { display: flex; flex-direction: column; line-height: 1; }
.logo-sub { font-size: 10px; font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.14em; margin-top: 4px; }

.header-nav { display: flex; align-items: center; gap: var(--gap-1); margin-left: var(--gap-5); }
.header-nav a {
    position: relative;
    padding: 10px 16px;
    color: var(--text-soft);
    font-weight: 500;
    font-size: 14px;
    border-radius: var(--r-sm);
    transition: color var(--tr-fast);
}
.header-nav a:hover { color: var(--text); }
.header-nav a.active { color: var(--text); font-weight: 600; }
.header-nav a.active::after {
    content: ""; position: absolute;
    bottom: -26px; left: 16px; right: 16px;
    height: 3px;
    background: var(--brand);
    border-radius: 3px 3px 0 0;
}

.header-actions { display: flex; align-items: center; gap: var(--gap-3); margin-left: auto; }

.btn-submit-ad { height: 46px; padding: 0 22px !important; border-radius: var(--r-sm) !important; box-shadow: 0 6px 16px var(--brand-glow); font-size: 14px; }

.icon-btn {
    position: relative;
    display: inline-grid; place-items: center;
    width: 44px; height: 44px;
    border-radius: var(--r-sm);
    color: var(--text-soft);
    transition: all var(--tr);
    background: transparent;
}
.icon-btn:hover { background: var(--bg-soft); color: var(--brand); }
.icon-btn .badge-dot {
    position: absolute; top: 10px; right: 10px;
    width: 8px; height: 8px;
    background: var(--color-danger);
    border-radius: 50%;
    border: 2px solid var(--bg-elev);
}

.theme-toggle .theme-icon-light { display: none; }
[data-theme="dark"] .theme-toggle .theme-icon-light { display: inline-block; }
[data-theme="dark"] .theme-toggle .theme-icon-dark  { display: none; }

.user-menu { position: relative; }
.user-menu-trigger {
    display: inline-grid; place-items: center;
    width: 44px; height: 44px;
    border-radius: var(--r-sm);
    background: var(--bg-soft);
    color: var(--text-soft);
    transition: all var(--tr);
}
.user-menu-trigger:hover { background: var(--brand-soft); color: var(--brand); }
.user-avatar-letter, .user-menu-trigger img {
    width: 32px; height: 32px; border-radius: 50%;
    object-fit: cover;
    background:var(--brand);
    color: #fff; font-weight: 700; font-size: 13px;
    display: grid; place-items: center;
}

.user-menu-dropdown {
    position: absolute; top: calc(100% + 10px); right: 0;
    min-width: 260px;
    background: var(--bg-elev);
    border: 1px solid var(--border);
    border-radius: var(--r-md);
    box-shadow: var(--shadow-xl);
    padding: var(--gap-2);
    opacity: 0; visibility: hidden;
    transform: translateY(-8px);
    transition: all var(--tr);
    z-index: 50;
}
.user-menu.open .user-menu-dropdown { opacity: 1; visibility: visible; transform: translateY(0); }
.user-menu-header {
    padding: var(--gap-3);
    background: linear-gradient(135deg, var(--brand) 0%, var(--brand-accent) 100%);
    color: #fff; border-radius: var(--r-sm); margin-bottom: var(--gap-2);
}
.user-menu-name { font-weight: 700; font-size: 14px; }
.user-menu-email { font-size: 12px; opacity: 0.85; margin-top: 2px; }
.user-menu-balance {
    display: flex; align-items: center; justify-content: space-between;
    margin-top: var(--gap-3); padding: 8px 12px;
    background: rgba(255, 255, 255, 0.18);
    border-radius: var(--r-xs);
    font-size: 13px; font-weight: 600;
}
.user-menu-dropdown a {
    display: flex; align-items: center; gap: var(--gap-3);
    padding: 10px 12px; border-radius: var(--r-xs);
    font-size: 14px; color: var(--text);
    transition: background var(--tr-fast);
}
.user-menu-dropdown a:hover { background: var(--bg-soft); color: var(--brand); }
.user-menu-dropdown a i { color: var(--text-muted); width: 18px; text-align: center; font-size: 14px; }
.user-menu-dropdown a:hover i { color: var(--brand); }
.user-menu-dropdown hr { border: 0; border-top: 1px solid var(--border-soft); margin: 6px 0; }
.user-menu-dropdown .logout { color: var(--color-danger); }
.user-menu-dropdown .logout i { color: var(--color-danger); }

.mobile-toggle { display: none; }

/* ============================================================================
   BUTTONS
   ============================================================================ */
.btn {
    display: inline-flex; align-items: center; justify-content: center;
    gap: var(--gap-2);
    padding: 12px 22px;
    border-radius: var(--r-sm);
    font-weight: 600; font-size: 14px;
    cursor: pointer;
    border: 1px solid transparent;
    transition: all var(--tr);
    white-space: nowrap; user-select: none;
    line-height: 1;
}
.btn:active { transform: translateY(1px); }

.btn-primary { background: var(--brand); color: #fff; }
.btn-primary:hover { background: var(--brand-hover); color: #fff; box-shadow: var(--shadow-brand); }

.btn-ghost { background: transparent; color: var(--text); border-color: var(--border); }
.btn-ghost:hover { background: var(--bg-soft); color: var(--brand); border-color: var(--brand); }

.btn-soft { background: var(--brand-soft); color: var(--brand); }
.btn-soft:hover { background: var(--brand); color: #fff; }

.btn-white { background: var(--bg-elev); color: var(--text); border-color: var(--border); box-shadow: var(--shadow-sm); }
.btn-white:hover { background: var(--brand-soft); color: var(--brand); border-color: var(--brand); }

.btn-danger { background: var(--color-danger); color: #fff; }
.btn-danger:hover { background: #DC2626; color: #fff; }

.btn-sm { padding: 9px 16px; font-size: 13px; }
.btn-lg { padding: 16px 28px; font-size: 15px; }
.btn-xl { padding: 18px 34px; font-size: 16px; border-radius: var(--r); }
.btn-block { width: 100%; }

/* ============================================================================
   HERO
   ============================================================================ */
.hero { padding: var(--gap-7) 0 var(--gap-9); position: relative; overflow: hidden; }
.hero-grid { display: grid; grid-template-columns: 1.05fr 1fr; gap: var(--gap-7); align-items: center; }
.hero-left { position: relative; z-index: 2; }

.hero-pill {
    display: inline-flex; align-items: center; gap: var(--gap-2);
    padding: 8px 16px;
    background: var(--brand-soft);
    color: var(--brand-text);
    border-radius: var(--r-full);
    font-size: 13px; font-weight: 600;
    margin-bottom: var(--gap-5);
}
.hero-pill i { color: var(--brand); }

.hero-title {
    font-size: clamp(34px, 4.5vw, 54px);
    font-weight: 800;
    line-height: 1.08;
    letter-spacing: -0.03em;
    margin: 0 0 var(--gap-4);
    color: var(--text);
}
.hero-title-accent {
    background: linear-gradient(135deg, var(--brand) 0%, var(--brand-accent) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}
.hero-subtitle {
    font-size: 16px;
    color: var(--text-soft);
    max-width: 480px;
    margin: 0 0 var(--gap-6);
    line-height: 1.6;
}

.hero-search-form {
    display: flex; gap: var(--gap-2);
    padding: 8px;
    background: var(--bg-elev);
    border: 1px solid var(--border);
    border-radius: var(--r);
    box-shadow: var(--shadow-md);
    max-width: 600px;
}
.hero-search-field { flex: 1; display: flex; align-items: center; gap: var(--gap-2); padding: 0 16px; min-width: 0; }
.hero-search-field + .hero-search-field { border-left: 1px solid var(--border-soft); flex: 0 0 200px; }
.hero-search-field i { color: var(--text-muted); font-size: 14px; flex-shrink: 0; }
.hero-search-field input, .hero-search-field select {
    width: 100%; border: 0; outline: 0;
    background: transparent;
    height: 50px; font-size: 14px;
    color: var(--text); min-width: 0;
}
.hero-search-form .btn { flex-shrink: 0; height: 50px; padding: 0 28px; }

.hero-cats {
    display: flex; flex-wrap: wrap; gap: var(--gap-3);
    margin-top: var(--gap-6);
}
.hero-cat {
    display: flex; flex-direction: column; align-items: center; gap: 8px;
    min-width: 80px; transition: transform var(--tr);
}
.hero-cat:hover { transform: translateY(-3px); color: var(--text); }
.hero-cat-icon {
    width: 60px; height: 60px;
    border-radius: var(--r);
    background: var(--bg-elev);
    border: 1px solid var(--border);
    color: var(--brand);
    display: grid; place-items: center;
    font-size: 20px;
    box-shadow: var(--shadow-xs);
    transition: all var(--tr);
}
.hero-cat:hover .hero-cat-icon { background: var(--brand-soft); border-color: var(--brand); transform: scale(1.05); }
.hero-cat-name { font-size: 12px; color: var(--text-soft); font-weight: 500; text-align: center; }

.hero-illustration { position: relative; aspect-ratio: 1/1; max-width: 560px; margin-left: auto; }

/* ============================================================================
   CATEGORIES — popular section
   ============================================================================ */
.cats-grid {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: var(--gap-4);
}
.cat-card {
    position: relative;
    aspect-ratio: 1 / 1;
    border-radius: var(--r-md);
    overflow: hidden;
    background: var(--bg-strong);
    transition: all var(--tr);
    color: #fff;
    isolation: isolate;
    box-shadow: var(--shadow-sm);
}
.cat-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); color: #fff; }
.cat-card-bg {
    position: absolute; inset: 0;
    background: linear-gradient(135deg, var(--brand) 0%, var(--brand-accent) 100%);
    z-index: 0;
}
.cat-card-icon {
    position: absolute; inset: 0;
    display: grid; place-items: center;
    font-size: 72px;
    color: rgba(255, 255, 255, 0.22);
    z-index: 1;
    transition: transform var(--tr-slow);
}
.cat-card:hover .cat-card-icon { transform: scale(1.1); }
.cat-card-overlay {
    position: absolute; inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,0.75) 0%, transparent 55%);
    z-index: 2;
}
.cat-card-content {
    position: absolute;
    bottom: var(--gap-4); left: var(--gap-4); right: var(--gap-4);
    z-index: 3;
}
.cat-card-title { font-size: 17px; font-weight: 700; margin: 0 0 4px; color: #fff; }
.cat-card-count { font-size: 13px; opacity: 0.85; color: #fff; }

.cat-card[data-color="dark"]    .cat-card-bg { background: linear-gradient(135deg, #1F2937, #374151); }
.cat-card[data-color="brown"]   .cat-card-bg { background: linear-gradient(135deg, #78350F, #B45309); }
.cat-card[data-color="gray"]    .cat-card-bg { background: linear-gradient(135deg, #6B7280, #9CA3AF); }
.cat-card[data-color="beige"]   .cat-card-bg { background: linear-gradient(135deg, #92400E, #D97706); }
.cat-card[data-color="blue"]    .cat-card-bg { background: linear-gradient(135deg, #3B82F6, #60A5FA); }
.cat-card[data-color="orange"]  .cat-card-bg { background: linear-gradient(135deg, #F59E0B, #FBBF24); }

/* ============================================================================
   AD CARDS
   ============================================================================ */
.ads-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--gap-4);
    margin-bottom:30px;
}
.ads-grid-3 { grid-template-columns: repeat(3, 1fr); }
.ads-grid-2 { grid-template-columns: repeat(2, 1fr); }

.ad-card {
    background: var(--bg-elev);
    border-radius: var(--r-md);
    overflow: hidden;
    transition: all var(--tr);
    position: relative;
    box-shadow: var(--shadow-card);
    display: flex;
    flex-direction: column;
    border: 1px solid transparent;
}
.ad-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-hover);
    border-color: var(--border-soft);
}
.ad-card-link { position: absolute; inset: 0; z-index: 1; }
.ad-card-photo {
    aspect-ratio: 4 / 3;
    background: var(--bg-soft);
    position: relative;
    overflow: hidden;
}
.ad-card-photo img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--tr-slow); }
.ad-card:hover .ad-card-photo img { transform: scale(1.06); }
.ad-card-nophoto { width: 100%; height: 100%; display: grid; place-items: center; color: var(--text-faint); font-size: 48px; }

.ad-badges {
    position: absolute; top: 12px; left: 12px;
    display: flex; flex-direction: column; gap: 6px;
    z-index: 2;
}
.ad-badge {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 5px 10px;
    border-radius: var(--r-full);
    font-size: 11px; font-weight: 700;
    color: #fff;
    backdrop-filter: blur(8px);
    box-shadow: 0 2px 8px rgba(0,0,0,0.2);
}
.ad-badge-vip     { background: var(--color-top); }
.ad-badge-prem    { background: var(--color-vip); color: #fff; }
.ad-badge-urgent  { background: var(--color-danger); }
.ad-badge-new     { background: var(--color-new); }
.ad-badge-verified{ background: var(--color-success); }

.ad-fav {
    position: absolute;
    top: 12px; right: 12px;
    z-index: 3;
    width: 36px; height: 36px;
    border-radius: 50%;
    display: grid; place-items: center;
    background: rgba(255, 255, 255, 0.95);
    color: var(--text-soft);
    backdrop-filter: blur(8px);
    transition: all var(--tr);
    box-shadow: var(--shadow-sm);
}
.ad-fav:hover { color: var(--brand); transform: scale(1.1); }
.ad-fav.active { color: var(--color-danger); }
.ad-fav.active i { font-weight: 900; }

.ad-card-body {
    padding: var(--gap-4);
    display: flex; flex-direction: column; gap: 8px;
    position: relative; z-index: 2;
    pointer-events: none;
    flex: 1;
}
.ad-card-body a { pointer-events: auto; position: relative; z-index: 3; }

.ad-card-title {
    font-size: 15px;
    font-weight: 600;
    line-height: 1.4;
    margin: 0;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    min-height: 42px;
    color: var(--text);
}
.ad-card-title a:hover { color: var(--brand); }

.ad-card-price {
    font-size: 20px;
    font-weight: 800;
    color: var(--text);
    letter-spacing: -0.02em;
    margin-top: 2px;
}
.price-free { color: var(--color-success); }
.price-negotiable, .price-contract { color: var(--text-soft); font-size: 16px; font-weight: 600; }

.ad-card-attrs {
    display: flex; flex-wrap: wrap; gap: var(--gap-3);
    font-size: 13px; color: var(--text-soft);
    padding-top: var(--gap-2);
    border-top: 1px solid var(--border-soft);
    margin-top: auto;
}
.ad-card-attr { display: inline-flex; align-items: center; gap: 5px; }
.ad-card-attr i { color: var(--text-muted); font-size: 12px; }

.ad-card-meta {
    display: flex; justify-content: space-between; align-items: center;
    font-size: 12px; color: var(--text-muted);
    margin-top: 4px;
    padding-top: var(--gap-2);
    border-top: 1px solid var(--border-soft);
}
.ad-card-city { display: inline-flex; align-items: center; gap: 4px; }
.ad-card-city i { color: var(--brand); }

/* ============================================================================
   FEATURES STRIP
   ============================================================================ */
.features-strip {
    background: var(--bg-elev);
    border: 1px solid var(--border-soft);
    border-radius: var(--r-lg);
    padding: var(--gap-7);
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--gap-5);
    box-shadow: var(--shadow-sm);
}
.feature-item { display: flex; align-items: center; gap: var(--gap-3); }
.feature-icon {
    width: 56px; height: 56px;
    border-radius: var(--r);
    display: grid; place-items: center;
    font-size: 20px;
    flex-shrink: 0;
}
.feature-icon-1 { background: var(--brand-soft); color: var(--brand); }
.feature-icon-2 { background: var(--color-info-soft); color: var(--color-info); }
.feature-icon-3 { background: var(--color-success-soft); color: var(--color-success); }
.feature-icon-4 { background: var(--color-warning-soft); color: var(--color-warning); }
.feature-title { font-size: 15px; font-weight: 700; margin-bottom: 2px; }
.feature-text { font-size: 13px; color: var(--text-soft); line-height: 1.5; margin: 0; }

/* ============================================================================
   FLASH MESSAGES
   ============================================================================ */
.flash {
    display: flex; align-items: center; gap: var(--gap-3);
    padding: 14px 18px;
    margin: var(--gap-4) 0;
    border-radius: var(--r-sm);
    font-size: 14px; font-weight: 500;
    animation: flashIn 0.3s ease;
}
@keyframes flashIn { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } }
.flash i { font-size: 18px; flex-shrink: 0; }
.flash-success { background: var(--color-success-soft); color: #047857; }
.flash-error   { background: var(--color-danger-soft);  color: #B91C1C; }
.flash-warning { background: var(--color-warning-soft); color: #B45309; }
.flash-info    { background: var(--color-info-soft);    color: #1D4ED8; }
[data-theme="dark"] .flash { background: var(--bg-soft); }

/* ============================================================================
   FOOTER
   ============================================================================ */
.footer {
    background: var(--bg-elev);
    border-top: 1px solid var(--border-soft);
    padding: var(--gap-9) 0 var(--gap-5);
    margin-top: var(--gap-10);
}
.footer-grid {
    display: grid;
    grid-template-columns: 1.6fr 1fr 1fr 1fr;
    gap: var(--gap-6);
    margin-bottom: var(--gap-7);
}
.logo-footer { margin-bottom: var(--gap-4); }
.footer-tagline { color: var(--text-soft); font-size: 14px; line-height: 1.6; max-width: 320px; }
.footer-title { font-size: 14px; font-weight: 700; color: var(--text); margin-bottom: var(--gap-4); }
.footer-links { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
.footer-links a { color: var(--text-soft); font-size: 14px; }
.footer-links a:hover { color: var(--brand); }
.footer-social { display: flex; gap: var(--gap-2); margin-top: var(--gap-4); }
.footer-social a {
    width: 40px; height: 40px;
    border-radius: var(--r-sm);
    display: grid; place-items: center;
    background: var(--bg-soft);
    color: var(--text-soft);
    transition: all var(--tr);
}
.footer-social a:hover { background: var(--brand); color: #fff; transform: translateY(-3px); }
.footer-bottom {
    border-top: 1px solid var(--border-soft);
    padding-top: var(--gap-4);
    display: flex; justify-content: space-between;
    flex-wrap: wrap; gap: var(--gap-3);
    font-size: 13px; color: var(--text-muted);
}

/* ============================================================================
   EMPTY STATE & ERRORS
   ============================================================================ */
.empty-state {
    text-align: center;
    padding: var(--gap-10) var(--gap-5);
    background: var(--bg-elev);
    border-radius: var(--r-md);
    border: 1px solid var(--border-soft);
}
.empty-state-icon {
    width: 80px; height: 80px;
    margin: 0 auto var(--gap-4);
    background: var(--bg-soft);
    border-radius: 50%;
    display: grid; place-items: center;
    color: var(--text-muted);
    font-size: 32px;
}
.empty-state h3 { font-size: 20px; margin: 0 0 8px; }
.empty-state p { color: var(--text-soft); margin: 0 0 var(--gap-5); }

.error-page { text-align: center; padding: var(--gap-10) var(--gap-5); }
.error-code {
    font-size: clamp(120px, 18vw, 220px);
    font-weight: 800; line-height: 1;
    background: linear-gradient(135deg, var(--brand) 0%, var(--brand-accent) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    letter-spacing: -0.04em;
}
.error-title { font-size: 32px; margin: 0 0 var(--gap-3); }
.error-text { color: var(--text-soft); margin: 0 0 var(--gap-5); max-width: 480px; margin-inline: auto; }
.error-actions { display: flex; gap: var(--gap-3); justify-content: center; flex-wrap: wrap; }

/* ============================================================================
   FORMS
   ============================================================================ */
.form-group { margin-bottom: var(--gap-4); }
.form-label { display: block; margin-bottom: 8px; font-weight: 600; font-size: 14px; color: var(--text); }
.form-label .required { color: var(--color-danger); }
.form-input, .form-select, .form-textarea {
    width: 100%;
    padding: 12px 16px;
    background: var(--bg-elev);
    border: 1px solid var(--border);
    border-radius: var(--r-sm);
    font-size: 14px;
    color: var(--text);
    transition: all var(--tr);
    outline: 0;
}
.form-input:focus, .form-select:focus, .form-textarea:focus {
    border-color: var(--brand);
    box-shadow: 0 0 0 4px var(--brand-glow);
}
.form-textarea { resize: vertical; min-height: 140px; line-height: 1.6; }
.form-hint { font-size: 12px; color: var(--text-muted); margin-top: 6px; }
.form-error { color: var(--color-danger); font-size: 13px; margin-top: 6px; }
.form-input-color { width: 80px; height: 44px; padding: 4px; cursor: pointer; }

/* ============================================================================
   BREADCRUMBS
   ============================================================================ */
.breadcrumbs {
    display: flex; flex-wrap: wrap; align-items: center;
    gap: 8px;
    margin-bottom: var(--gap-5);
    font-size: 13px;
    color: var(--text-muted);
}
.breadcrumbs a { color: var(--text-soft); }
.breadcrumbs a:hover { color: var(--brand); }
.breadcrumbs-sep { opacity: 0.5; font-size: 10px; }
.breadcrumbs-current { color: var(--text); font-weight: 500; }

/* ============================================================================
   RESPONSIVE
   ============================================================================ */
@media (max-width: 1280px) {
    .ads-grid { grid-template-columns: repeat(3, 1fr); }
    .cats-grid { grid-template-columns: repeat(4, 1fr); }
}
@media (max-width: 1024px) {
    .hero-grid { grid-template-columns: 1fr; gap: var(--gap-6); }
    .hero-illustration { max-width: 420px; margin: 0 auto; }
    .header-nav { display: none; }
    .footer-grid { grid-template-columns: 1fr 1fr; }
    .features-strip { grid-template-columns: 1fr 1fr; }
    .cats-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 768px) {
    :root { --header-h: 64px; --container: 100%; }
    .container { padding-inline: var(--gap-4); }
    .section { padding: var(--gap-7) 0; }
    .section-title { font-size: 24px; }
    .mobile-toggle { display: inline-grid; }
    .header-actions .btn-submit-ad span { display: none; }
    .header-actions .btn-submit-ad { padding: 0 12px !important; width: 44px; }
    .ads-grid { grid-template-columns: repeat(2, 1fr); gap: var(--gap-3); }
    .ad-card-body { padding: var(--gap-3); }
    .ad-card-title { font-size: 14px; min-height: 38px; }
    .ad-card-price { font-size: 17px; }
    .cats-grid { grid-template-columns: repeat(2, 1fr); }
    .features-strip { grid-template-columns: 1fr; padding: var(--gap-5); }
    .footer-grid { grid-template-columns: 1fr; gap: var(--gap-5); }
    .hero-search-form { flex-direction: column; padding: var(--gap-3); }
    .hero-search-field + .hero-search-field { border-left: 0; border-top: 1px solid var(--border-soft); padding-top: var(--gap-2); flex: 1 1 auto; }
    .hero-title { font-size: 32px; }
}
@media (max-width: 480px) {
    .ads-grid { grid-template-columns: 1fr 1fr; }
    .cats-grid { grid-template-columns: 1fr 1fr; }
}


/* ============================================================================
   BOTTOM NAVIGATION (mobile only)
   ============================================================================ */
.bottom-nav {
    display: none;
    position: fixed;
    bottom: 0; left: 0; right: 0;
    z-index: 150;
    background: var(--bg-elev);
    border-top: 1px solid var(--border-soft);
    box-shadow: 0 -4px 20px rgba(0,0,0,0.06);
    padding: 6px 4px calc(6px + env(safe-area-inset-bottom));
    justify-content: space-around;
    align-items: center;
}

.bottom-nav-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 3px;
    padding: 4px 8px;
    font-size: 11px;
    font-weight: 500;
    color: var(--text-muted);
    flex: 1;
    transition: color 0.15s;
}
.bottom-nav-item i { font-size: 20px; }
.bottom-nav-item span { font-size: 10px; }
.bottom-nav-item.active { color: var(--brand); }
.bottom-nav-item:hover { color: var(--brand); }

/* Центральная кнопка "Подать" */
.bottom-nav-add { position: relative; }
.bottom-nav-add-btn {
    width: 48px; height: 48px;
    border-radius: 50%;
    background: var(--brand);
    color: #fff;
    display: grid;
    place-items: center;
    font-size: 20px;
    margin-top: -20px;
    box-shadow: 0 6px 16px var(--brand-glow);
    transition: transform 0.2s;
}
.bottom-nav-add:hover .bottom-nav-add-btn { transform: scale(1.05); color: #fff; }
.bottom-nav-add i { font-size: 20px; }

/* Показываем только на мобилке */
@media (max-width: 768px) {
    .bottom-nav { display: flex; }
    /* Отступ снизу чтобы контент не прятался под меню */
    body { padding-bottom: 70px; }
    /* Прячем обычный футер на мобилке (опционально) */
    .footer { margin-bottom: 60px; }
}




/* Описание в карточке */
.ad-card-desc {
    font-size: 13px;
    color: var(--text-soft);
    line-height: 1.45;
    margin: 4px 0 0;
    display: -webkit-box;
    -webkit-line-clamp: 2;          /* грид — 2 строки */
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Списочный вид — 3 строки описания */
.ads-grid.ads-list-view .ad-card-desc {
    -webkit-line-clamp: 3;
    margin-top: 8px;
}

/* На мобилке в гриде описание можно скрыть чтобы не загромождать,
   но в списке оставляем */
@media (max-width: 600px) {
    .ad-card-desc { -webkit-line-clamp: 2; font-size: 12px; }
    .ads-grid.ads-list-view .ad-card-desc { -webkit-line-clamp: 2; }
}