/* styles.css — общие стили кабинета.
   Ads/Analytics/Settings подключают dash.css (склейка этого файла с report/ads/profile).
   После правки пересобрать: cat styles.css report.css ads.css profile.css > dash.css */

:root {
    /* --- DARK MODE VARIABLES --- */
    --bg-body: #0f172a;           
    --bg-card: #1e293b;           
    --text-primary: #f1f5f9;      
    --text-secondary: #94a3b8;    
    --accent-color: #6366f1;      
    --accent-hover: #818cf8;
    /* Третий цвет палитры — жёлтый как CPS на графике. Индиго на тёмном фоне почти не читается. */
    --mark-color: #eab308;
    --mark-bg: rgba(234, 179, 8, .16);
    --border-color: #334155;      
    --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
    --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.5);
    --input-bg: #0f172a;
    --icon-bg: rgba(99, 102, 241, 0.15); 
    --table-head-bg: #0f172a;
    --table-hover: #334155;
}

/* --- LIGHT MODE OVERRIDES --- */
[data-bs-theme="light"] {
    --bg-body: #f3f4f6;
    --bg-card: #ffffff;
    --text-primary: #111827;
    --text-secondary: #6b7280;
    --accent-color: #4f46e5;
    --accent-hover: #4338ca;
    --mark-color: #eab308;
    --mark-bg: rgba(234, 179, 8, .14);
    --border-color: #e5e7eb;
    --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
    --shadow-md: 0 2px 4px -1px rgba(0, 0, 0, 0.1);
    --input-bg: #f9fafb;
    --icon-bg: #e5e7eb;
    --table-head-bg: #f3f4f6;
    --table-hover: #f9fafb;
}

/* --- GLOBAL SCROLLBAR & BODY --- */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: var(--bg-body); }
::-webkit-scrollbar-thumb { background-color: var(--border-color); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background-color: var(--text-secondary); }

body {
    font-family: Inter, system-ui, -apple-system, 'Segoe UI', sans-serif;
    background-color: var(--bg-body);
    color: var(--text-primary);
    font-size: 0.85rem; 
    line-height: 1.4;
    padding-bottom: 2rem;
    transition: background-color 0.3s, color 0.3s;
}

/* =========================================
   CRITICAL FIXES
   ========================================= */

/* 1. AUTOFILL FIX */
input:-webkit-autofill, input:-webkit-autofill:hover, input:-webkit-autofill:focus, input:-webkit-autofill:active {
    -webkit-box-shadow: 0 0 0 30px var(--input-bg) inset !important;
    -webkit-text-fill-color: var(--text-primary) !important;
    transition: background-color 5000s ease-in-out 0s;
}

/* 2. DATE INPUT FIX */
input[type="date"] { position: relative; }
input[type="date"]::-webkit-calendar-picker-indicator {
    background: transparent; bottom: 0; color: transparent; cursor: pointer;
    height: auto; left: 0; position: absolute; right: 0; top: 0; width: auto; z-index: 10;
}

/* =========================================
   SELECT2 BOOTSTRAP-5 THEME OVERRIDES
   ========================================= */

/* 1. КОНТЕЙНЕР (Сам инпут) */
.select2-container--bootstrap-5 .select2-selection--multiple {
    background-color: var(--input-bg) !important;
    border: 1px solid var(--border-color) !important;
    color: var(--text-primary) !important;
    min-height: 38px !important;
    border-radius: 0.4rem !important;
    padding: 0 4px !important;
    background-image: none !important;
    display: flex !important;
    align-items: center !important;
    flex-wrap: nowrap !important;
    overflow: hidden !important;
}

/* Фокус */
.select2-container--bootstrap-5.select2-container--focus .select2-selection,
.select2-container--bootstrap-5.select2-container--open .select2-selection {
    border-color: var(--accent-color) !important;
    box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15) !important;
}

/* 2. СПИСОК ВЫБРАННЫХ ЭЛЕМЕНТОВ */
.select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__rendered {
    display: flex !important;
    flex-wrap: nowrap !important; 
    align-items: center !important;
    padding: 0 !important;
    margin: 0 !important;
    width: 100% !important;
    overflow-x: auto !important; 
    scrollbar-width: none !important;
}
.select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__rendered::-webkit-scrollbar {
    display: none;
}

/* 3. ЧИПСЫ (СИНИЕ ПЛАШКИ) */
.select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__choice {
    background-color: var(--accent-color) !important;
    color: #ffffff !important;
    border: none !important;
    border-radius: 4px !important;
    margin: 3px 4px 3px 0 !important;
    padding: 2px 8px 2px 4px !important;
    font-size: 0.85rem !important;
    display: flex !important;
    align-items: center !important;
    flex-direction: row-reverse !important;
    height: 26px !important;
    line-height: 1.2 !important;
    flex-shrink: 0 !important;
}
.select2-container--bootstrap-5 .select2-selection__choice span,
.select2-container--bootstrap-5 .select2-selection__choice__display {
    color: #ffffff !important;
    margin-left: 5px !important;
    white-space: nowrap !important;
}

/* 4. КРЕСТИК (БЕЛЫЙ) — FIX */
.select2-container--bootstrap-5 .select2-selection__choice .select2-selection__choice__remove {
    /* Сбрасываем трюк Bootstrap с заменой текста картинкой */
    text-indent: 0 !important;       /* ВЕРНУТЬ ТЕКСТ */
    overflow: visible !important;    /* ПОКАЗАТЬ ЕГО */
    width: auto !important;
    height: auto !important;
    
    background: transparent !important;
    background-image: none !important;
    border: none !important;
    padding: 0 !important;
    margin: 0 !important;
    position: static !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    opacity: 0.8 !important;
}

/* Сам символ '×' внутри кнопки */
.select2-container--bootstrap-5 .select2-selection__choice .select2-selection__choice__remove span {
    color: #ffffff !important;
    font-size: 1.2rem !important;
    line-height: 0.8 !important;
    font-weight: 300 !important;
    margin: 0 !important;
    display: block !important;
}

.select2-container--bootstrap-5 .select2-selection__choice .select2-selection__choice__remove:hover {
    opacity: 1 !important;
}

/* 5. СТРОКА ПОИСКА (в мульти-селекте это <textarea>)
   Раньше она была принудительно скрыта (width/height/opacity = 0), из-за чего набранный
   текст уходил в невидимое поле. Держим её видимой всегда — без опоры на класс
   select2-container--open, чтобы не зависеть от состояния виджета. */
.select2-container--bootstrap-5 .select2-search--inline {
    display: flex !important;
    align-items: center !important;
    flex: 1 1 120px !important;
    min-width: 120px !important;
    position: static !important;
    opacity: 1 !important;
    pointer-events: auto !important;
}

.select2-container--bootstrap-5 .select2-search--inline .select2-search__field {
    width: 100% !important;
    min-width: 120px !important;
    height: 24px !important;
    min-height: 24px !important;
    max-height: 24px !important;
    line-height: 24px !important;
    margin: 0 !important;
    padding: 0 4px !important;
    position: static !important;
    opacity: 1 !important;
    pointer-events: auto !important;
    background: transparent !important;
    border: none !important;
    outline: none !important;
    box-shadow: none !important;
    resize: none !important;
    overflow: hidden !important;
    color: var(--text-primary) !important;
    -webkit-text-fill-color: var(--text-primary) !important;
    font-size: 0.85rem !important;
    font-family: inherit !important;
}

.select2-container--bootstrap-5 .select2-search--inline .select2-search__field::placeholder {
    color: var(--text-secondary) !important;
    opacity: 1 !important;
}

/* Открытый селект: разрешаем чипсам переноситься, чтобы поле ввода не уезжало за край */
.select2-container--bootstrap-5.select2-container--open .select2-selection--multiple,
.select2-container--bootstrap-5.select2-container--open .select2-selection--multiple .select2-selection__rendered {
    flex-wrap: wrap !important;
    overflow: visible !important;
}

/* 6. ВЫПАДАЮЩИЙ СПИСОК */
.select2-dropdown, 
.select2-container--bootstrap-5 .select2-dropdown {
    background-color: var(--bg-card) !important;
    border: 1px solid var(--border-color) !important;
    color: var(--text-primary) !important;
    z-index: 9999 !important;
}
.select2-container--bootstrap-5 .select2-results__option {
    padding: 6px 10px !important;
    font-size: 0.85rem !important;
}
.select2-container--bootstrap-5 .select2-results__option--highlighted[aria-selected] {
    background-color: var(--accent-color) !important;
    color: #ffffff !important;
}

/* =========================================
   MAIN STYLES
   ========================================= */

/* --- Header --- */
.dashboard-header {
    position: relative;
    z-index: 30;
    background: var(--bg-card);
    box-shadow: var(--shadow-sm);
    padding: 0.75rem 0;
    margin-bottom: 1.5rem;
    transition: background-color 0.3s;
    border-bottom: 1px solid var(--border-color);
}
.dashboard-header:has(+ .demo-banner) { margin-bottom: 0; }
.demo-banner {
    position: relative;
    z-index: 29;
    width: 100%;
    margin-bottom: 1.5rem;
    padding: 0.35rem 0;
    background: rgba(234, 179, 8, .16);
    border-bottom: 1px solid rgba(234, 179, 8, .35);
    color: #fbbf24;
}
[data-bs-theme="light"] .demo-banner { color: #b45309; }
.demo-banner-in {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem 1rem;
    flex-wrap: wrap;
    font-size: 0.8125rem;
    font-weight: 600;
}
.demo-banner-text {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    color: inherit;
    line-height: 1.3;
}
.demo-banner-text i {
    color: inherit;
    font-size: 0.95rem;
    flex: none;
}
.demo-banner-go {
    flex: none;
    display: inline-flex;
    align-items: center;
    height: 30px;
    padding: 0 0.75rem;
    border: 1px solid rgba(234, 179, 8, .55);
    border-radius: 0.5rem;
    background: transparent;
    color: inherit;
    font-weight: 700;
    font-size: 0.8rem;
    line-height: 1;
    text-decoration: none;
    white-space: nowrap;
    transition: color 0.15s, background-color 0.15s, border-color 0.15s;
}
.demo-banner-go:hover {
    color: inherit;
    background: rgba(234, 179, 8, .22);
    border-color: #fbbf24;
}
[data-bs-theme="light"] .demo-banner-go:hover { border-color: #b45309; }
.tip-cover {
    --tip-c0: #818cf8;
    --tip-c1: #4f46e5;
    --tip-c2: #4338ca;
    --tip-c3: #312e81;
    position: fixed;
    z-index: 40;
    right: max(1rem, env(safe-area-inset-right));
    bottom: max(1rem, env(safe-area-inset-bottom));
    width: min(22rem, calc(100vw - 2rem));
    margin: 0;
    padding: 0;
    animation: cornerCardIn .4s cubic-bezier(.2, .8, .2, 1) both;
}
.tip-cover[data-id="folders"] { --tip-c0: #f59e0b; --tip-c1: #c2410c; --tip-c2: #9a3412; --tip-c3: #7c2d12; }
.tip-cover[data-id="limit"]   { --tip-c0: #fb7185; --tip-c1: #e11d48; --tip-c2: #be123c; --tip-c3: #881337; }
.tip-cover[data-id="notify"]  { --tip-c0: #22d3ee; --tip-c1: #0e7490; --tip-c2: #155e75; --tip-c3: #164e63; }
.tip-cover[data-id="share"]   { --tip-c0: #34d399; --tip-c1: #047857; --tip-c2: #065f46; --tip-c3: #064e3b; }
.tip-cover[data-id="bulk"]    { --tip-c0: #e879f9; --tip-c1: #c026d3; --tip-c2: #a21caf; --tip-c3: #701a75; }
.tip-cover[data-id="batch"]   { --tip-c0: #2dd4bf; --tip-c1: #0f766e; --tip-c2: #115e59; --tip-c3: #134e4a; }
.tip-cover[data-id="compare"] { --tip-c0: #60a5fa; --tip-c1: #2563eb; --tip-c2: #1d4ed8; --tip-c3: #1e3a8a; }
.tip-cover[data-id="clone"]   { --tip-c0: #f472b6; --tip-c1: #db2777; --tip-c2: #be185d; --tip-c3: #831843; }
.tip-cover[data-id="users"]   { --tip-c0: #94a3b8; --tip-c1: #475569; --tip-c2: #334155; --tip-c3: #0f172a; }
.tip-cover[data-id="pb"]      { --tip-c0: #a3e635; --tip-c1: #4d7c0f; --tip-c2: #3f6212; --tip-c3: #1a2e05; }
.tip-card {
    position: relative;
    overflow: hidden;
    padding: 1.1rem 1.1rem 1rem;
    border-radius: 18px;
    color: #fff;
    background: radial-gradient(140% 120% at 0% 0%, var(--tip-c0) 0%, var(--tip-c1) 34%, var(--tip-c2) 70%, var(--tip-c3) 120%);
    box-shadow: 0 24px 48px -16px color-mix(in srgb, var(--tip-c2) 75%, transparent), inset 0 0 0 1px rgba(255, 255, 255, .1);
}
.tip-card::after {
    content: "";
    position: absolute;
    top: -60px;
    right: -50px;
    width: 180px;
    height: 180px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 255, 255, .3), transparent 65%);
    pointer-events: none;
}
.tip-card-top {
    display: flex;
    align-items: center;
    gap: .6rem;
    margin-bottom: .75rem;
}
.tip-card-ic {
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    border-radius: 12px;
    background: rgba(255, 255, 255, .16);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .28), 0 8px 22px -6px rgba(255, 255, 255, .3);
    color: #fff;
    font-size: 1.15rem;
}
.tip-card-pill {
    padding: .15rem .55rem;
    border-radius: 999px;
    background: #fff;
    color: var(--tip-c3);
    font-size: .72rem;
    font-weight: 700;
    line-height: 1.4;
}
.tip-cover-title {
    margin: 0 0 .35rem;
    color: #fff;
    font-size: 1.1rem;
    font-weight: 700;
    line-height: 1.25;
    letter-spacing: -.01em;
}
.tip-cover-body {
    margin: 0 0 .9rem;
    color: rgba(255, 255, 255, .9);
    font-size: .85rem;
    line-height: 1.45;
}
.tip-cover-open {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    height: 40px;
    padding: 0 1.1rem;
    border-radius: 12px;
    background: #fff;
    color: var(--tip-c2);
    font-size: .9rem;
    font-weight: 700;
    text-decoration: none;
    box-shadow: 0 8px 18px -8px rgba(0, 0, 0, .5);
    transition: background-color .15s;
}
.tip-cover-open:hover { background: #f1f5f9; color: var(--tip-c2); }
.tip-cover-x {
    position: absolute;
    top: .6rem;
    right: .6rem;
    z-index: 2;
    display: grid;
    place-items: center;
    width: 2rem;
    height: 2rem;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 9px;
    background: rgba(255, 255, 255, .16);
    color: #fff;
    font-size: .8rem;
    cursor: pointer;
    transition: background-color .15s;
}
.tip-cover-x:hover { background: rgba(255, 255, 255, .3); }
.tip-cover-open:focus-visible,
.tip-cover-x:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 2px;
}
.auto-promo {
    position: fixed;
    z-index: 40;
    right: max(1rem, env(safe-area-inset-right));
    bottom: max(1rem, env(safe-area-inset-bottom));
    width: min(22rem, calc(100vw - 2rem));
    margin: 0;
    animation: cornerCardIn .4s cubic-bezier(.2, .8, .2, 1) both;
}
.auto-promo-card {
    position: relative;
    overflow: hidden;
    padding: 1.1rem 1.1rem 1rem;
    border-radius: 18px;
    color: #fff;
    background: radial-gradient(140% 120% at 0% 0%, #7c3aed 0%, #4f46e5 48%, #4338ca 78%, #be185d 140%);
    box-shadow: 0 24px 48px -16px rgba(67, 56, 202, .75), inset 0 0 0 1px rgba(255, 255, 255, .1);
}
.auto-promo-card::after {
    content: "";
    position: absolute;
    top: -60px;
    right: -50px;
    width: 180px;
    height: 180px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(253, 224, 71, .35), transparent 65%);
    pointer-events: none;
}
.auto-promo-top {
    display: flex;
    align-items: center;
    gap: .6rem;
    margin-bottom: .75rem;
}
.auto-promo-ic {
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    border-radius: 12px;
    background: rgba(255, 255, 255, .16);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .28), 0 8px 22px -6px rgba(253, 224, 71, .7);
    color: #fde047;
    font-size: 1.2rem;
}
.auto-promo-new {
    padding: .15rem .55rem;
    border-radius: 999px;
    background: #fde047;
    color: #3b0764;
    font-size: .72rem;
    font-weight: 700;
    line-height: 1.4;
}
.auto-promo-title {
    margin: 0 0 .35rem;
    color: #fff;
    font-size: 1.1rem;
    font-weight: 700;
    line-height: 1.25;
    letter-spacing: -.01em;
}
.auto-promo-body {
    margin: 0 0 .75rem;
    color: #ede9fe;
    font-size: .85rem;
    line-height: 1.45;
}
.auto-promo-rule {
    margin: 0 0 .9rem;
    padding: .55rem .7rem;
    border-radius: 12px;
    background: rgba(17, 12, 64, .34);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .16);
    color: #fff;
    font-size: .8rem;
    line-height: 1.4;
}
.auto-promo-rule b { color: #fde047; font-weight: 700; }
.auto-promo-go {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    height: 40px;
    padding: 0 1.1rem;
    border-radius: 12px;
    background: #fff;
    color: #4338ca;
    font-size: .9rem;
    font-weight: 700;
    text-decoration: none;
    box-shadow: 0 8px 18px -8px rgba(0, 0, 0, .5);
    transition: background-color .15s;
}
.auto-promo-go:hover { background: #fef9c3; color: #4338ca; }
.auto-promo-x {
    position: absolute;
    top: .6rem;
    right: .6rem;
    z-index: 2;
    display: grid;
    place-items: center;
    width: 2rem;
    height: 2rem;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 9px;
    background: rgba(255, 255, 255, .16);
    color: #fff;
    font-size: .8rem;
    cursor: pointer;
    transition: background-color .15s;
}
.auto-promo-x:hover { background: rgba(255, 255, 255, .3); }
.auto-promo-go:focus-visible,
.auto-promo-x:focus-visible {
    outline: 2px solid #fde047;
    outline-offset: 2px;
}
@keyframes cornerCardIn {
    from { opacity: 0; transform: translateY(14px) scale(.97); }
    to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
    .tip-cover,
    .auto-promo { animation: none; }
}
@media (max-width: 767.98px) {
    .auto-promo {
        left: max(.75rem, env(safe-area-inset-left));
        right: max(.75rem, env(safe-area-inset-right));
        width: auto;
    }
}
.dashboard-header-in {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.75rem 1rem;
}
.brand-logo {
    font-weight: 700; font-size: 1.1rem; color: var(--accent-color);
    text-decoration: none; display: flex; align-items: center; gap: 0.55rem;
}
.brand-logo .brand-name { color: var(--text-primary); }

.dash-nav {
    display: inline-flex;
    align-items: stretch;
    height: 38px;
    padding: 3px;
    gap: 3px;
    border: 1px solid var(--border-color);
    border-radius: 0.55rem;
    background: var(--input-bg);
    flex: none;
}
.dash-nav-link {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    padding: 0 .95rem;
    border-radius: .4rem;
    color: var(--text-primary);
    text-decoration: none;
    font-size: .95rem;
    font-weight: 700;
    white-space: nowrap;
    line-height: 1;
    transition: color .15s, background-color .15s;
}
.dash-nav-link i { font-size: 1.05rem; opacity: .85; }
.dash-nav-link:hover { color: var(--text-primary); background: var(--icon-bg); }
.dash-nav-link.is-on {
    color: #fff;
    background: var(--accent-color);
}
.dash-nav-link.is-on i { opacity: 1; }

.hdr-pill {
    display: inline-flex; align-items: center; gap: 0.5rem;
    height: 38px; padding: 0 0.8rem;
    border: 1px solid var(--border-color); border-radius: 0.5rem;
    background: transparent;
    color: var(--text-primary); font-weight: 600; font-size: 0.85rem; line-height: 1;
    white-space: nowrap;
    transition: all 0.2s;
}
.hdr-pill-ic { color: var(--text-secondary); font-size: 0.95rem; }
.hdr-pill-chev { color: var(--text-secondary); font-size: 0.7rem; }

.ai-modal .modal-dialog { max-width: 24.5rem; }
.ai-modal-card {
    position: relative;
    overflow: hidden;
    border: 0;
    border-radius: 16px;
    padding: .85rem .9rem .9rem;
    color: var(--text-primary);
    background: var(--bg-card);
    box-shadow: inset 0 0 0 1px var(--border-color), var(--shadow-md);
}
.ai-modal-x {
    position: absolute;
    top: .7rem;
    inset-inline-end: .7rem;
    z-index: 2;
    width: 1.7rem;
    height: 1.7rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: .35rem;
    background: transparent;
    color: var(--text-secondary);
    line-height: 1;
}
.ai-modal-x:hover { background: rgba(148, 163, 184, .14); color: var(--text-primary); }
.ai-modal-ic {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.7rem;
    height: 1.7rem;
    margin-bottom: .4rem;
    border-radius: 8px;
    background: #7c5cfc;
    color: #fff;
    font-size: .88rem;
}
.ai-modal-kicker {
    margin: 0;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--text-secondary);
}
.ai-modal-title {
    margin: .35rem 0 .4rem;
    font-size: 1.22rem;
    font-weight: 800;
    letter-spacing: .01em;
    line-height: 1.15;
    color: var(--text-primary);
}
.ai-modal-lead {
    margin: 0 0 .7rem;
    font-size: .85rem;
    font-weight: 500;
    line-height: 1.4;
    color: var(--text-primary);
}
.ai-modal-tags {
    display: flex;
    flex-wrap: wrap;
    gap: .28rem;
    margin: 0 0 .75rem;
    padding: 0;
    list-style: none;
}
.ai-modal-tags li {
    padding: .14rem .4rem;
    border-radius: 6px;
    background: rgba(99, 102, 241, .14);
    color: #a5b4fc;
    font-size: .68rem;
    font-weight: 700;
    line-height: 1.2;
}
[data-bs-theme="light"] .ai-modal-tags li {
    background: rgba(79, 70, 229, .1);
    color: var(--accent-color);
}
.ai-modal-stat {
    position: relative;
    overflow: hidden;
    margin: 0 0 .85rem;
    padding: .7rem .85rem .8rem;
    border-radius: 16px;
    background: var(--input-bg);
    box-shadow: inset 0 0 0 1px var(--border-color);
}
.ai-modal-stat-ic {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.7rem;
    height: 1.7rem;
    margin-bottom: .4rem;
    border-radius: 8px;
    background: #06b6d4;
    color: #fff;
    font-size: .88rem;
}
.ai-modal-stat-lab {
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--text-secondary);
}
.ai-modal-stat strong {
    display: block;
    margin-top: .12rem;
    font-size: 1.12rem;
    font-weight: 700;
    line-height: 1.2;
    font-variant-numeric: tabular-nums;
    color: var(--text-primary);
}
.ai-modal-wave {
    position: absolute;
    inset-inline-end: 0;
    bottom: 0;
    width: 58%;
    height: 58%;
    pointer-events: none;
    opacity: .16;
    color: #06b6d4;
}
.ai-modal-wave path { fill: currentColor; }
.ai-modal-go {
    width: 100%;
    height: 2.125rem;
    border: 0;
    border-radius: .45rem;
    padding: 0 1.05rem;
    background: var(--accent-color);
    color: #fff;
    font-size: .8rem;
    font-weight: 700;
    line-height: 1;
}
.ai-modal-go:hover { background: var(--accent-hover); color: #fff; }
.ai-modal-sorry {
    margin: .45rem 0 .85rem;
    font-size: .95rem;
    font-weight: 650;
    line-height: 1.4;
    color: var(--text-primary);
}
.cab-menu, .bal-menu, .user-menu { border-radius: 0.5rem; box-shadow: var(--shadow-md); }
.btn-cab:hover { border-color: var(--accent-color); }
.btn-cab:hover .hdr-pill-ic { color: var(--accent-color); }
.btn-lang:hover { border-color: var(--accent-color); }
.btn-lang:hover .hdr-pill-ic { color: var(--accent-color); }
.btn-cab-name {
    max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.cab-menu {
    min-width: 280px; padding: 4px;
    background: var(--bg-card); border: 1px solid var(--border-color);
}
.cab-menu .dropdown-item {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    border-radius: 0.35rem; padding: 0.45rem 0.6rem;
    font-size: 0.85rem; color: var(--text-primary);
}
.cab-menu .dropdown-item:hover,
.cab-menu .dropdown-item:focus {
    background: rgba(79, 70, 229, 0.12); color: var(--text-primary);
}
.cab-menu .dropdown-item.active,
.cab-menu .dropdown-item:active {
    background: rgba(79, 70, 229, 0.18);
    color: var(--text-primary);
    box-shadow: inset 2px 0 0 var(--accent-color);
}
.cab-item-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cab-item-main {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: .1rem;
}
.cab-item-from {
    font-size: .7rem;
    font-weight: 600;
    color: var(--text-secondary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.cab-item-balance {
    font-size: 0.75rem; color: var(--text-secondary);
    font-variant-numeric: tabular-nums; white-space: nowrap;
    display: inline-flex; align-items: center;
}
.cab-menu .dropdown-item.active .cab-item-balance { color: var(--accent-color); }
.cab-row {
    display: flex;
    align-items: center;
    gap: .1rem;
}
.cab-row .dropdown-item { flex: 1 1 auto; min-width: 0; }
.cab-star {
    flex: none;
    width: 1.65rem;
    height: 1.65rem;
    margin-inline-start: .2rem;
    border: 0;
    border-radius: .35rem;
    background: transparent;
    color: var(--text-secondary);
    font-size: .95rem;
    line-height: 1;
    padding: 0;
}
.cab-star:hover,
.cab-star:focus-visible {
    color: #eab308;
    background: rgba(234, 179, 8, .14);
}
.cab-row.is-fav .cab-star { color: #eab308; }
:root { --hdr-bal-bg: rgba(99, 102, 241, 0.16); --hdr-bal-bd: rgba(99, 102, 241, 0.45); }
[data-bs-theme="light"] { --hdr-bal-bg: rgba(79, 70, 229, 0.10); --hdr-bal-bd: rgba(79, 70, 229, 0.32); }
.hdr-bal { background: var(--hdr-bal-bg); border-color: var(--hdr-bal-bd); }
.hdr-bal:hover { border-color: var(--accent-color); }
.hdr-bal > .bi-wallet2 { color: var(--accent-hover); font-size: 0.95rem; }
.hdr-bal-num { font-size: 0.95rem; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.hdr-bal-cur { font-size: 0.75rem; font-weight: 600; color: var(--text-secondary); display: inline-flex; align-items: center; }
.hdr-bal-cur .cur-icon { width: 14px; height: 16px; }
.bal-menu {
    min-width: 0; width: max-content; padding: 4px;
    background: var(--bg-card); border: 1px solid var(--border-color);
}
.bal-row {
    display: flex; align-items: center; justify-content: space-between; gap: 1.75rem;
    padding: 0.4rem 0.55rem; font-size: 0.8rem;
}
.bal-row-label {
    display: inline-flex; align-items: center; gap: 0.45rem;
    color: var(--text-secondary); white-space: nowrap;
}
.bal-row-label i { font-size: 0.85rem; }
.bal-row-note {
    padding: 0.05rem 0.3rem; border: 1px solid var(--border-color); border-radius: 0.25rem;
    font-size: 0.7rem; line-height: 1.4;
}
.bal-row-note:empty { display: none; }
.bal-row-val {
    color: var(--text-primary); font-weight: 600; white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.bal-row-total {
    margin-top: 2px;
    border-top: 1px solid var(--border-color);
}
.bal-row-total .bal-row-val { font-weight: 700; }
.btn-user { padding: 0 0.6rem; border-color: transparent; }
.btn-user:hover { border-color: var(--border-color); }
.btn-user-ava {
    position: relative; flex: none; overflow: hidden;
    width: 24px; height: 24px; border-radius: 50%;
    display: grid; place-items: center;
    background: var(--accent-color); color: #fff;
    font-size: 0.72rem; font-weight: 700; line-height: 1;
}
.btn-user-ava img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.btn-user-name {
    max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
@media (min-width: 768px) {
    .hdr-left { flex: none; }
    .hdr-right { min-width: 0; flex: 1 1 auto; justify-content: flex-end; }
    .hdr-right > .dropdown:has(.btn-user) { flex: none; }
}
.dashboard-header-in.is-user-tight .btn-user-name,
.dashboard-header-in.is-user-tight .btn-user > .hdr-pill-chev { display: none; }
.dashboard-header-in.is-user-tight .hdr-cab-drop { min-width: 0; flex: 1 1 auto; }
.dashboard-header-in.is-user-tight .btn-cab,
.dashboard-header-in.is-user-tight .btn-cab-name { min-width: 0; max-width: 100%; }
.user-menu {
    min-width: 220px; padding: 4px;
    background: var(--bg-card); border: 1px solid var(--border-color);
}
.user-menu .dropdown-item {
    display: flex; align-items: center; gap: 0.6rem; width: 100%;
    border-radius: 0.35rem; padding: 0.45rem 0.6rem;
    font-size: 0.85rem; color: var(--text-primary);
}
.user-menu .dropdown-item:hover,
.user-menu .dropdown-item:focus {
    background: rgba(99, 102, 241, 0.12); color: var(--text-primary);
}
.user-menu .dropdown-item i { color: var(--text-secondary); width: 1rem; }
.user-menu form .dropdown-item {
    border: 0;
    background: transparent;
    text-align: start;
}
.user-menu .user-menu-exit:hover,
.user-menu .user-menu-exit:focus { background: rgba(239, 68, 68, 0.12); color: #ef4444; }
.user-menu .user-menu-exit:hover i { color: #ef4444; }
.user-menu .dropdown-divider { border-color: var(--border-color); margin: 4px 0; }
.lang-item { justify-content: flex-start; }
.lang-code {
    flex: none; min-width: 2.1rem; text-align: center;
    padding: 0.05rem 0.25rem; border: 1px solid var(--border-color); border-radius: 0.3rem;
    font-size: 0.68rem; font-weight: 700; letter-spacing: 0.03em;
    color: var(--text-secondary);
}
.lang-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 767.98px) {
    .dashboard-header {
        padding: 0.5rem 0 0.55rem;
        margin-bottom: 0.85rem;
        padding-top: max(0.5rem, env(safe-area-inset-top));
    }
    .dashboard-header:has(+ .demo-banner) { margin-bottom: 0; }
    .demo-banner { margin-bottom: 0.85rem; padding: 0.4rem 0; }
    .tip-cover {
        left: max(0.75rem, env(safe-area-inset-left));
        right: max(0.75rem, env(safe-area-inset-right));
        width: auto;
    }
    .demo-banner-in { font-size: 0.8rem; }
    .dashboard-header-in {
        flex-wrap: wrap;
        gap: 0.4rem 0.5rem;
    }
    .hdr-left {
        flex: 1 1 auto;
        min-width: 0;
        gap: 0.45rem !important;
    }
    .hdr-right {
        flex: 1 1 100%;
        min-width: 0;
        justify-content: flex-start;
        flex-wrap: nowrap;
        gap: 0.35rem !important;
    }
    .hdr-cab-drop {
        flex: 1 1 0%;
        min-width: 0;
        max-width: 100%;
    }
    .hdr-right > .dropdown:not(.hdr-cab-drop) { flex: none; }
    .brand-logo > span,
    .brand-name { display: none; }
    .dash-nav { height: 34px; padding: 2px; gap: 2px; }
    .dash-nav-link { padding: 0 .5rem; font-size: .78rem; gap: .25rem; }
    .dash-nav-link i { font-size: .92rem; }
    .hdr-pill { height: 34px; padding: 0 0.5rem; gap: 0.32rem; font-size: 0.78rem; }
    .btn-cab {
        width: 100%;
        min-width: 0;
        max-width: 100%;
    }
    .btn-cab-name {
        flex: 1 1 auto;
        min-width: 0;
        max-width: none;
    }
    .btn-lang-lab,
    .btn-user-name { display: none; }
    .btn-user { padding: 0 0.3rem; }
    .hdr-bal { padding-inline: 0.45rem; }
    .hdr-bal-num { font-size: 0.82rem; }
    .cab-menu,
    .bal-menu,
    .user-menu,
    .lang-menu {
        min-width: 0;
        width: max-content;
        max-width: calc(100vw - 1.25rem);
    }
    .container {
        padding-left: 0.7rem;
        padding-right: 0.7rem;
    }
    .card-box { padding: 0.75rem; margin-bottom: 1rem; }
    body { padding-bottom: max(1.25rem, env(safe-area-inset-bottom)); }
    input.form-control,
    select.form-select,
    textarea.form-control { font-size: 16px; }
}
@media (max-width: 575.98px) {
    .hdr-right { flex-wrap: wrap; }
    .hdr-cab-drop { flex: 1 1 100%; }
    .hdr-left {
        flex: 1 1 100%;
        flex-wrap: nowrap;
        gap: 0.4rem !important;
    }
    .dash-nav {
        flex: 1 1 auto;
        width: auto;
        min-width: 0;
        height: 36px;
    }
    .dash-nav-link {
        flex: 1;
        justify-content: center;
        padding: 0 .35rem;
    }
}
[dir="rtl"] .hdr-pill-chev { margin-left: 0; margin-right: 0.15rem; }
[dir="rtl"] .brand-logo { flex-direction: row-reverse; }
[dir="rtl"] .dash-nav { flex-direction: row-reverse; }
[dir="rtl"] .hdr-bal-num,
[dir="rtl"] .bal-row-val,
[dir="rtl"] .cab-item-balance { direction: ltr; }
.btn-logout {
    color: var(--text-secondary); font-weight: 500; text-decoration: none;
    padding: 0.4rem 0.8rem; border-radius: 0.4rem; transition: all 0.2s;
    background: transparent; border: 1px solid var(--border-color); font-size: 0.85rem;
}
.btn-logout:hover {
    background: rgba(239, 68, 68, 0.1); color: #ef4444; border-color: #ef4444;
}
.btn-theme-toggle {
    color: var(--text-secondary); background: transparent; border: none;
    font-size: 1rem; padding: 0.4rem; border-radius: 50%; transition: color 0.2s;
}
.btn-theme-toggle:hover {
    color: var(--accent-color); background: rgba(0,0,0,0.05);
}
[data-bs-theme="dark"] .btn-theme-toggle:hover {
    background: rgba(255,255,255,0.1);
}

/* --- Cards --- */
.card-box {
    background: var(--bg-card);
    border-radius: 0.75rem;
    box-shadow: var(--shadow-md);
    border: 1px solid var(--border-color);
    padding: 1rem;
    margin-bottom: 1.5rem;
    transition: background-color 0.3s, border-color 0.3s;
}
.section-title {
    font-size: 1rem; font-weight: 600; color: var(--text-primary);
    margin-bottom: 0.75rem; display: flex; align-items: center; justify-content: space-between;
}

/* --- Forms (Standard) --- */
.form-label {
    font-size: 0.75rem; font-weight: 600; color: var(--text-secondary);
    margin-bottom: 0.3rem; text-transform: uppercase; letter-spacing: 0.02em;
}
.form-control, .form-select {
    background-color: var(--input-bg);
    border: 1px solid var(--border-color);
    color: var(--text-primary);
    border-radius: 0.4rem;
    padding: 0.4rem 0.75rem;
    font-size: 0.85rem;
    transition: all 0.2s;
    min-height: 38px;
}
.input-group-text {
    background-color: var(--icon-bg);
    border-color: var(--border-color);
    color: var(--text-secondary);
    font-size: 0.85rem;
    transition: all 0.3s;
}
:root .input-group-text { color: var(--accent-color); }
[data-bs-theme="light"] .input-group-text { color: var(--text-secondary); }

.form-select {
    padding-right: 2rem !important;
    text-overflow: ellipsis;
    overflow: hidden;
}
.form-control:focus, .form-select:focus {
    background-color: var(--bg-card);
    border-color: var(--accent-color);
    color: var(--text-primary);
    box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.15);
    outline: none;
}

.btn-primary {
    background-color: var(--accent-color); border: none; border-radius: 0.4rem;
    padding: 0.4rem 1rem; font-weight: 500; box-shadow: none; color: #fff; font-size: 0.85rem;
}
.btn-primary:hover, .btn-primary:active {
    background-color: var(--accent-hover); color: #fff;
}

/* --- Tables --- */
.table-responsive {
    border-radius: 0.5rem;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
}
table.dataTable {
    border-collapse: collapse !important; width: 100% !important;
    margin-top: 0 !important; color: var(--text-primary) !important;
}
table.dataTable thead th {
    background-color: var(--table-head-bg) !important;
    color: var(--text-secondary) !important;
    font-weight: 600; font-size: 0.75rem; text-transform: uppercase;
    border-bottom: 1px solid var(--border-color) !important;
    border-right: 1px solid var(--border-color) !important;
    padding: 0.6rem 0.5rem !important;
}
table.dataTable tbody td {
    padding: 0.6rem 0.5rem !important; font-size: 0.85rem;
    border-bottom: 1px solid var(--border-color);
    border-right: 1px solid var(--border-color);
    color: var(--text-primary);
    background-color: var(--bg-card) !important;
}
table.dataTable thead th:last-child,
table.dataTable tbody td:last-child { border-right: none !important; }
table.dataTable tbody tr:hover td { background-color: var(--table-hover) !important; }

/* DataTables Components */
.dt-buttons .dt-button {
    background: #10b981 !important; color: white !important; border: none !important;
    border-radius: 0.4rem !important; padding: 0.3rem 0.8rem !important;
    font-size: 0.8rem !important; font-weight: 500 !important; margin-bottom: 0.5rem;
}
.dt-buttons .dt-button:hover { background: #059669 !important; }

.dataTables_wrapper .dataTables_length,
.dataTables_wrapper .dataTables_filter,
.dataTables_wrapper .dataTables_info {
    font-size: 0.8rem; color: var(--text-secondary) !important;
}
/* Пагинация.
   Страницы со styles.css подключают dataTables.bootstrap5, а он рисует пагинацию разметкой
   Bootstrap: .pagination > .page-item > .page-link. Правила для .paginate_button из
   стандартной темы DataTables до неё не доставали вовсе, и кнопки оставались с дефолтной
   светлой заливкой и жёстким синим активным состоянием поверх тёмной карточки.

   Селектор из четырёх классов взят не случайно: у Bootstrap кнопки склеены правилом
   .page-item:not(:first-child) .page-link, и с более коротким селектором отступы не сбросить.
   Отступы самого списка не трогаем: их задаёт сам dataTables.bootstrap5 селектором
   div.dataTables_wrapper div.dataTables_paginate ul.pagination — он специфичнее. */
.dataTables_wrapper .pagination { gap: 2px; }
.dataTables_wrapper .pagination .page-item .page-link {
    margin-left: 0;
    padding: 0.25rem 0.6rem;
    font-size: 0.8rem;
    font-weight: 500;
    border-radius: 0.4rem;
    background-color: transparent;
    color: var(--text-secondary);
    border: 1px solid transparent; /* прозрачная рамка держит размер кнопки при наведении */
    transition: background-color .12s ease, color .12s ease;
}
.dataTables_wrapper .pagination .page-item .page-link:hover {
    background-color: var(--table-hover);
    color: var(--text-primary);
    border-color: var(--border-color);
}
.dataTables_wrapper .pagination .page-item .page-link:focus {
    box-shadow: none; /* синий ореол Bootstrap выбивается из темы */
    background-color: var(--table-hover);
    color: var(--text-primary);
}
.dataTables_wrapper .pagination .page-item.active .page-link {
    background-color: var(--accent-color);
    border-color: var(--accent-color);
    color: #fff;
}
.dataTables_wrapper .pagination .page-item.disabled .page-link {
    background-color: transparent;
    border-color: transparent;
    color: var(--text-secondary);
    opacity: .45;
}

/* --- Misc --- */
.creative-cell, .targeting-cell {
    max-width: 180px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    color: var(--text-secondary); cursor: help;
}
#preloader {
    position: fixed; top: 0; left: 0; width: 100%; height: 100%;
    background: var(--bg-body); display: flex; align-items: center; justify-content: center; z-index: 9999;
}
.spinner {
    width: 40px; height: 40px; border: 3px solid var(--border-color);
    border-top-color: var(--accent-color); border-radius: 50%; animation: spin 0.8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

tfoot tr { background-color: var(--input-bg); font-weight: 700; }
tfoot td {
    background-color: var(--input-bg) !important; color: var(--text-primary);
    border-top: 2px solid var(--border-color) !important; border-right: 1px solid var(--border-color) !important; font-size: 0.8rem;
}
tfoot td:last-child { border-right: none !important; }

/* Fix Phantom Row in DataTables Scroll */
.dataTables_scrollBody thead tr th {
    padding-top: 0 !important; padding-bottom: 0 !important; border-top: none !important;
    border-bottom: none !important; line-height: 0 !important; height: 0 !important; overflow: hidden !important;
}
/* Нулевая шапка в теле таблицы нужна только для ширин колонок. Без pointer-events:none
   она после смены числа колонок могла перекрыть строки и съесть клики по бюджету/CPM. */
.dataTables_scrollBody > table > thead {
    pointer-events: none !important;
}
/* ------------------------------------------------------------------ ЯЗЫК */
/* Переключатель в шапке профиля и на странице входа. Отчёт оформляет эти же
   пункты по-своему — см. report.css. */
.lang-menu {
    min-width: 190px; padding: 4px;
    background: var(--bg-card); border: 1px solid var(--border-color);
    border-radius: 0.5rem; box-shadow: var(--shadow-md);
}
.lang-menu .lang-item {
    display: flex; align-items: center; gap: 0.6rem;
    border-radius: 0.35rem; padding: 0.4rem 0.6rem;
    font-size: 0.85rem; color: var(--text-primary);
}
.lang-menu .lang-item:hover,
.lang-menu .lang-item:focus,
.lang-menu .lang-item.active {
    background: rgba(99, 102, 241, 0.12); color: var(--text-primary);
}
.lang-menu .lang-code {
    flex: none; min-width: 2.1rem; text-align: center;
    padding: 0.05rem 0.25rem; border: 1px solid var(--border-color); border-radius: 0.3rem;
    font-size: 0.68rem; font-weight: 700;
    color: var(--text-secondary);
}
.lang-menu .lang-item.active .lang-code { border-color: var(--accent-color); color: var(--accent-color); }
.lang-menu .bi-check2 { color: var(--accent-color); }

/* Gram / Stars — иконки с ads.telegram.org */
.cur-icon {
    width: 15px;
    height: 17px;
    display: inline-block;
    vertical-align: -0.2em;
    flex: none;
    fill: currentColor;
    pointer-events: none;
}
.cur-icon use { fill: currentColor; }
img.cur-icon {
    fill: none;
    object-fit: contain;
}
.cur-amt {
    display: inline-flex;
    align-items: center;
    gap: 0.28em;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.cur-amt .cur-icon { width: 14px; height: 16px; }
.hdr-bal-cur .cur-icon { color: var(--text-primary); }

.alert-first-sync {
    display: flex;
    align-items: flex-start;
    gap: .7rem;
    padding: .9rem 1rem;
    margin-bottom: 1rem;
    border: 1px solid var(--accent-color);
    background: var(--icon-bg);
    color: var(--text-primary);
    font-size: .95rem;
    line-height: 1.4;
}
.alert-first-sync > i {
    flex: none;
    margin-top: .12rem;
    font-size: 1.25rem;
    color: var(--accent-color);
}
.alert-first-sync-spin {
    flex: none;
    margin-top: .2rem;
    width: 1.15rem;
    height: 1.15rem;
    color: var(--accent-color);
    border-width: .15em;
}
.alert-first-sync-spin.spinner-border {
    --bs-spinner-border-width: .15em;
}
.alert-first-sync strong { display: block; margin-bottom: .2rem; font-weight: 800; }
.alert-first-sync p { margin: 0; color: var(--text-secondary); }

.alert-ad-stats {
    margin-bottom: 0;
}

/* Снимок сборщика в подвале. Свёрнут, пока не нажали Debug. */
.sync-dbg {
    margin-top: 0.75rem;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.72rem;
    line-height: 1.45;
}
.sync-dbg-toggle {
    border: 0;
    padding: 0;
    background: transparent;
    color: var(--text-secondary);
    font: inherit;
    font-size: 0.75rem;
    cursor: pointer;
    text-decoration: underline;
    text-underline-offset: 2px;
}
.sync-dbg-body {
    margin-top: 0.4rem;
    padding: 0.65rem 0.75rem;
    color: #92400e;
    background: #fffbeb;
    border: 1px dashed #f59e0b;
    border-radius: 0.4rem;
    word-break: break-word;
}
.sync-dbg pre {
    margin: 0;
    white-space: pre-wrap;
    word-break: break-word;
    font: inherit;
    color: inherit;
}
.sync-dbg.is-open.sync-dbg--live {
    position: sticky;
    bottom: 0;
    z-index: 30;
}
.sync-dbg.is-open.sync-dbg--live .sync-dbg-body {
    max-height: 40vh;
    overflow: auto;
    box-shadow: 0 -8px 24px rgba(0, 0, 0, .35);
}
[data-bs-theme="dark"] .sync-dbg-body {
    color: #fde68a;
    background: #1c1508;
    border-color: #b45309;
}
#syncDbgDt { margin-top: 0.35rem; }

/* Предупреждение о блокировщике. Имена классов без «ad» и «banner»:
   иначе расширение спрячет само предупреждение. */
.tg-guard[hidden] { display: none !important; }
.tg-guard {
    position: fixed;
    inset: 0;
    z-index: 20000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.25rem;
    background: rgba(10, 14, 24, .45);
}
.tg-guard-card {
    width: min(26rem, 100%);
    padding: 1.15rem 1.2rem 1rem;
    border-radius: 16px;
    background: var(--bg-card);
    color: var(--text-primary);
    border: 1px solid var(--border-color);
    box-shadow: 0 18px 50px rgba(0, 0, 0, .35);
}
.tg-guard-top {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
}
.tg-guard-title {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.3;
}
.tg-guard-x {
    margin-left: auto;
    flex: none;
    border: 0;
    padding: 0 .15rem;
    background: transparent;
    color: var(--text-secondary);
    font-size: 1.35rem;
    line-height: 1;
    cursor: pointer;
}
.tg-guard-x:hover { color: var(--text-primary); }
.tg-guard-text {
    margin: .55rem 0 0;
    font-size: .9rem;
    line-height: 1.45;
    color: var(--text-secondary);
}
.tg-guard-note {
    margin: .7rem 0 0;
    font-size: .9rem;
    line-height: 1.45;
    font-weight: 650;
    color: #fbbf24;
}
.tg-guard-note[hidden] { display: none !important; }
[data-bs-theme="light"] .tg-guard-note { color: #b45309; }
.tg-guard-go {
    margin-top: .95rem;
    border: 0;
    border-radius: .5rem;
    padding: .5rem .95rem;
    background: var(--accent-color, #4f46e5);
    color: #fff;
    font-weight: 650;
    cursor: pointer;
}
.tg-guard-go:hover { filter: brightness(1.08); }
.tg-guard-go:disabled { opacity: .72; cursor: progress; }
    /* Знак и надпись в шапке. У .brand-logo (styles.css) gap .4rem — со знаком 26px просвет
       хочется чуть больше. Имя пишем обычным цветом текста, доменную зону — акцентным: так
       строка читается как логотип, а не как адрес в адресной строке. */
    .brand-logo { gap: .55rem; }
    .brand-logo .brand-name { color: var(--text-primary); }
    .brand-logo .brand-tld  { color: var(--accent-color); }

    /* Вкладки Analytics / Ads — главный переход сайта. Рядом с кабинетом и балансом
       они не должны выглядеть подписью к логотипу: общая «дорожка» как у таблеток
       справа и заливка акцентом на текущей странице. */
    .dash-nav {
        display: inline-flex;
        align-items: stretch;
        height: 38px;
        padding: 3px;
        gap: 3px;
        border: 1px solid var(--border-color);
        border-radius: 0.55rem;
        background: var(--input-bg);
        flex: none;
    }
    .dash-nav-link {
        display: inline-flex;
        align-items: center;
        gap: .4rem;
        padding: 0 .95rem;
        border-radius: .4rem;
        color: var(--text-primary);
        text-decoration: none;
        font-size: .95rem;
        font-weight: 700;
        white-space: nowrap;
        line-height: 1;
        transition: color .15s, background-color .15s;
    }
    .dash-nav-link i { font-size: 1.05rem; opacity: .85; }
    .dash-nav-link:hover { color: var(--text-primary); background: var(--icon-bg); }
    .dash-nav-link.is-on {
        color: #fff;
        background: var(--accent-color);
        box-shadow: none;
    }
    .dash-nav-link.is-on i { opacity: 1; }
    @media (max-width: 575.98px) {
        .dash-nav-link { padding: 0 .5rem; font-size: .78rem; }
    }

    /* Мини-графики сводки: высота задаёт Chart.js (maintainAspectRatio: false),
       курсор показывает, что по линии можно читать значения. */
    .chart-mini {
        height: 150px;
        width: 100%;
        cursor: crosshair;
    }

    .obj-opt { display: inline-flex; align-items: center; gap: .35rem; }
    .obj-opt .fi { width: 1.3em; height: 1em; border-radius: 2px; box-shadow: 0 0 0 1px rgba(0,0,0,.08); }
    /* Класс на td: не inline-flex — иначе ячейка сжимается по тексту и рамка таблицы
       становится лесенкой разной ширины. */
    td.geo-cell { vertical-align: middle; }
    table.dataTable td.geo-cell { display: table-cell !important; }
    .geo-cell .fi { width: 1.3em; height: 1em; border-radius: 2px; box-shadow: 0 0 0 1px rgba(0,0,0,.08); display: inline-block; vertical-align: -2px; }
    #themeMixTable tbody tr.ax-theme-row { cursor: pointer; }
    #themeMixTable tbody tr.ax-row-on { outline: 1px solid var(--accent-color); outline-offset: -1px; }
    /* Стрелки сортировки DataTables рисуются справа в th (::before/::after).
       «?» стоит слева от названия, чтобы не попадать под них; клик не всплывает к th. */
    #geoTable thead th.tgt-share,
    #themeMixTable thead th.tgt-share,
    #themeGeoTable thead th.tgt-share {
        padding-right: 1.55rem !important;
    }
    /* Полоса в Share = доля от 100%. Цвет ярче у большей доли среди видимых строк. */
    #geoTable td.tgt-share-cell,
    #themeMixTable td.tgt-share-cell,
    #themeGeoTable td.tgt-share-cell {
        position: relative;
        min-width: 5.2rem;
        overflow: hidden;
        font-variant-numeric: tabular-nums;
    }
    table.dataTable td.tgt-share-cell { display: table-cell !important; }
    #geoTable td.tgt-share-cell .tgt-bar,
    #themeMixTable td.tgt-share-cell .tgt-bar,
    #themeGeoTable td.tgt-share-cell .tgt-bar {
        position: absolute;
        left: 0;
        top: 0;
        bottom: 0;
        max-width: 100%;
        pointer-events: none;
        opacity: .5;
    }
    #geoTable td.tgt-share-cell .tgt-share-val,
    #themeMixTable td.tgt-share-cell .tgt-share-val,
    #themeGeoTable td.tgt-share-cell .tgt-share-val {
        position: relative;
        z-index: 1;
    }
    .ax-place {
        display: flex; height: 8px; border-radius: 3px; overflow: hidden;
        min-width: 5.5rem; background: var(--border-color);
    }
    .ax-place span { display: block; height: 100%; }
    .ax-place .ax-u { background: #6366f1; }
    .ax-place .ax-c { background: #22c55e; }
    .ax-place .ax-o { background: #64748b; }
    .ax-place-lbl { font-size: .68rem; color: var(--text-secondary); margin-top: .15rem; }
    .ax-heat-wrap { overflow-x: auto; }
    table.ax-heat { font-size: .78rem; margin-bottom: 0; }
    table.ax-heat th, table.ax-heat td { vertical-align: middle; }
    table.ax-heat .ax-heat-theme {
        position: sticky; left: 0; z-index: 2;
        background: var(--bg-card); min-width: 7.5rem; white-space: nowrap;
    }
    table.ax-heat thead .ax-heat-theme { z-index: 3; }
    table.ax-heat .ax-heat-col { min-width: 4.8rem; text-align: center; font-weight: 600; }
    table.ax-heat .ax-heat-kind { font-size: .62rem; color: var(--text-secondary); text-transform: uppercase; letter-spacing: .03em; }
    table.ax-heat .ax-heat-tgt { font-size: .72rem; white-space: nowrap; }
    table.ax-heat td.ax-heat-cell {
        text-align: center; color: #fff; font-variant-numeric: tabular-nums;
        font-weight: 600; text-shadow: 0 0 3px rgba(0,0,0,.45);
    }
    table.ax-heat th.ax-heat-col { cursor: pointer; }
    table.ax-heat th.ax-heat-col:hover { filter: brightness(1.08); }
    table.ax-heat td.ax-heat-empty { text-align: center; color: var(--text-secondary); }
    table.ax-heat tr.ax-heat-dim { opacity: .28; }
    /* Analytics: одна линия полей одной высоты. Нативная multiple-тема ломала ряд. */
    .ax-filter-form.row { align-items: end; }
    .ax-filter-form > .col-12 {
        padding-bottom: .35rem; margin-bottom: .15rem;
        border-bottom: 1px solid var(--border-color);
    }
    .ax-filter-form .ax-show-btn {
        min-height: 38px; height: 38px; padding-top: 0; padding-bottom: 0;
        display: inline-flex; align-items: center; justify-content: center;
    }
    .obj-picker-menu.theme-picker-menu { min-width: 0; }
    @media (min-width: 768px) {
        .obj-picker-menu.theme-picker-menu { min-width: 16rem; }
    }
    @media (min-width: 992px) {
        .ax-filter-form.row:has(#dateRangeCol:not([hidden])) {
            display: grid;
            grid-template-columns: minmax(12rem, 1.05fr) minmax(11rem, .95fr) minmax(14rem, 1.4fr) 10.75rem;
            column-gap: 1rem;
            row-gap: .85rem;
            align-items: end;
        }
        .ax-filter-form.row:has(#dateRangeCol:not([hidden])) > .col-12 { grid-column: 1 / -1; }
        .ax-filter-form.row:has(#dateRangeCol:not([hidden])) > [hidden] { display: none !important; }
        .ax-filter-form.row:has(#dateRangeCol:not([hidden])) > [class*="col-"] {
            width: auto; max-width: none; padding-left: 0; padding-right: 0;
        }
    }
    #axPivot .ax-pv-board {
        display: grid;
        grid-template-columns: minmax(10rem, 1.1fr) repeat(4, minmax(9rem, 1fr));
        gap: .55rem;
        padding: .85rem .9rem .35rem;
    }
    @media (max-width: 991px) {
        #axPivot .ax-pv-board { grid-template-columns: 1fr 1fr; }
    }
    #axPivot .ax-pv-zone {
        border: 1px dashed var(--border-color);
        border-radius: .45rem;
        background: var(--bg-body, var(--bs-body-bg));
        min-height: 4.4rem;
        padding: .4rem .45rem .5rem;
    }
    #axPivot .ax-pv-zone.is-over { border-color: var(--accent-color); background: rgba(99, 102, 241, .08); }
    #axPivot .ax-pv-zlabel {
        font-size: .62rem; font-weight: 700; letter-spacing: .04em;
        text-transform: uppercase; color: var(--text-secondary); margin-bottom: .3rem;
    }
    #axPivot .ax-pv-drop { display: flex; flex-wrap: wrap; gap: .3rem; min-height: 1.7rem; }
    #axPivot .ax-pv-chip {
        display: inline-flex; align-items: center; gap: .25rem;
        padding: .18rem .45rem; border-radius: .35rem; font-size: .75rem; font-weight: 600;
        cursor: grab; user-select: none; border: 1px solid var(--border-color);
        background: var(--bg-card); color: var(--text-primary);
    }
    #axPivot .ax-pv-chip[data-kind="met"] { background: rgba(34, 197, 94, .12); border-color: rgba(34, 197, 94, .35); }
    #axPivot .ax-pv-chip[data-kind="dim"] { background: rgba(99, 102, 241, .12); border-color: rgba(99, 102, 241, .35); }
    #axPivot .ax-pv-chip .ax-pv-x { cursor: pointer; opacity: .55; font-weight: 700; }
    #axPivot .ax-pv-chip .ax-pv-x:hover { opacity: 1; }
    #axPivot .ax-pv-table-wrap { overflow: auto; max-height: 70vh; }
    #axPivot table.ax-pv-table { font-size: .78rem; margin: 0; }
    #axPivot table.ax-pv-table th, #axPivot table.ax-pv-table td { white-space: nowrap; font-variant-numeric: tabular-nums; }
    #axPivot table.ax-pv-table thead th { position: sticky; top: 0; z-index: 2; background: var(--bg-card); }
    #axPivot table.ax-pv-table .ax-pv-rowh {
        position: sticky; left: 0; z-index: 1; background: var(--bg-card); font-weight: 600;
    }
    #axPivot table.ax-pv-table tfoot td { font-weight: 700; }
    #axPivot .ax-pv-fbox { display: flex; flex-wrap: wrap; gap: .65rem 1.1rem; }
    #axPivot .ax-pv-fbox label { font-size: .72rem; color: var(--text-secondary); display: block; margin-bottom: .2rem; }
    #axPivot .ax-pv-fbox select { min-width: 11rem; font-size: .78rem; }
    .tgt-colhelp {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 1.1em;
        height: 1.1em;
        margin-right: .3rem;
        border-radius: 50%;
        border: 1px solid currentColor;
        font-size: .68rem;
        font-weight: 700;
        line-height: 1;
        color: var(--text-secondary);
        cursor: help;
        position: relative;
        z-index: 2;
        vertical-align: 1px;
    }
    .tgt-filters { display: flex; flex-wrap: wrap; gap: .85rem 1.4rem; align-items: flex-end; }
    .tgt-filters .tgt-flabel {
        display: block;
        font-size: .68rem;
        font-weight: 600;
        letter-spacing: .04em;
        text-transform: uppercase;
        color: var(--text-secondary);
        margin-bottom: .3rem;
        line-height: 1.2;
        min-height: 1em;
    }
    .tgt-filters .form-select { min-width: 9.5rem; width: auto; }
    .tgt-filters .btn-group .btn { font-size: .78rem; }
    .tgt-filters .form-check { margin-bottom: 0; min-height: 31px; display: flex; align-items: center; }
    .tgt-filters #tgtReset {
        min-height: 31px;
        display: inline-flex;
        align-items: center;
    }

    /* Выбор объектов деревом «клиент → объекты». Группы собирает fetch_data.php ($clientGroups). */
    .obj-picker { position: relative; }
    .obj-picker-toggle { cursor: pointer; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    /* Меню шире своего поля: после перехода формы в одну строку под объекты осталось
       4 колонки, и дерево «клиент → объекты» в такой ширине читалось бы плохо. Меню
       раскрывается поверх страницы, поэтому расширять его безопасно — если справа не хватит
       места, Bootstrap сдвинет его сам. На узких экранах правило не действует: там колонка
       и так во всю ширину, а 26rem вылезли бы за край телефона. */
    .obj-picker-menu { width: 100%; }
    @media (min-width: 768px) { .obj-picker-menu { min-width: 26rem; } }
    .obj-picker-list { max-height: 21rem; overflow-y: auto; padding: .25rem 0; }
    .obj-row { display: flex; align-items: center; gap: .5rem; margin: 0; padding: .3rem .75rem; cursor: pointer; font-size: .82rem; }
    .obj-row:hover { background: var(--bs-tertiary-bg); }
    .obj-row input { margin: 0; flex: none; }
    .obj-row-client { font-weight: 700; font-size: .78rem; text-transform: uppercase; letter-spacing: .02em; }
    .obj-row-obj { padding-left: 2.1rem; }
    .obj-row-folders {
        margin-top: .35rem;
        padding-top: .45rem;
        border-top: 1px solid var(--border-color);
        cursor: default;
    }
    .obj-row-folders:hover { background: transparent; }
    .obj-row-folder { padding-left: 2.1rem; }
    .obj-row-geo { flex: none; display: inline-flex; align-items: center; gap: .25rem; }
    .obj-row-geo .fi { width: 1.3em; height: 1em; border-radius: 2px; box-shadow: 0 0 0 1px rgba(0,0,0,.08); }
    .obj-row-name { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .obj-row-count { flex: none; font-size: .7rem; color: var(--text-secondary); }
    .obj-grp + .obj-grp { border-top: 1px solid var(--border-color); }
    .obj-picker-empty { padding: .85rem .75rem; font-size: .8rem; color: var(--text-secondary); }
    #objPickerSelected.is-on { font-weight: 600; }

    .src-debug {
        margin: 1.5rem 0 2rem;
        padding: 1rem 1.1rem;
        border: 1px dashed var(--border-color);
        border-radius: .5rem;
        font-size: .78rem;
        color: var(--text-secondary);
        background: var(--bg-card);
    }
    .src-debug h3 {
        font-size: .72rem;
        font-weight: 700;
        letter-spacing: .04em;
        text-transform: uppercase;
        margin: 0 0 .6rem;
        color: var(--text-primary);
    }
    .src-debug dl { display: grid; grid-template-columns: 14rem 1fr; gap: .2rem .75rem; margin: 0; }
    .src-debug dt { color: var(--text-secondary); }
    .src-debug dd { margin: 0; color: var(--text-primary); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
    .src-debug .src-note { margin: .7rem 0 0; }

    /* Кнопка «Admin panel» в шапке: та же геометрия, что у .btn-logout в styles.css, но
       hover акцентный, а не красный — это переход в админку, а не выход. */
    .btn-admin {
      color: var(--text-secondary); font-weight: 500; text-decoration: none;
      padding: .4rem .8rem; border-radius: .4rem; transition: all .2s;
      background: transparent; border: 1px solid var(--border-color); font-size: .85rem;
    }
    .btn-admin:hover {
      background: rgba(99, 102, 241, .1); color: var(--accent-color); border-color: var(--accent-color);
    }
      /* --- TABLE FIXES --- */
      #detailTable { font-size: 0.85rem; }
      
      #detailTable th, #detailTable td { 
          vertical-align: middle; 
          white-space: nowrap; 
      }

      /* Класс для ячеек с переносом текста.
         Не больше двух строк: список каналов иначе раздувает всю таблицу. */
      .cell-wrap {
          white-space: normal !important;
          word-break: break-word;
          min-width: 150px;
          max-width: 300px;
          line-height: 1.3;
      }
      #detailTable td.cell-wrap {
          max-height: 2.7em;
          overflow: hidden;
      }

      /* Длинный таргет и URL — одна строка, полный текст в title. */
      #detailTable td.cell-clip {
          white-space: nowrap !important;
          overflow: hidden;
          text-overflow: ellipsis;
          max-width: 220px;
      }
      #detailTable td.cell-clip a {
          display: inline;
      }

      /* Класс для ячеек с обрезкой текста */
      .text-truncate-box {
          display: block;
          overflow: hidden;
          text-overflow: ellipsis;
          white-space: nowrap;
      }
      
      .mw-200 { max-width: 200px; min-width: 150px; } 
      .mw-100 { max-width: 100px; }

      /* --- MEDIA PREVIEW (16:9) --- */
      .media-wrapper { 
          width: 80px; 
          height: 45px; 
          display: flex;
          align-items: center;
          justify-content: center;
          margin: 0 auto;
      }
      .media-box { 
          width: 100%; 
          height: 100%; 
          position: relative; 
          background: #000;
          border-radius: 4px;
          border: 1px solid #444;
      }
      .media-thumb { 
          width: 100%; 
          height: 100%; 
          object-fit: cover; 
          border-radius: 3px; 
          cursor: pointer; 
      }
      /* Zoom Popup */
      .media-zoom { 
          display: none; 
          position: absolute; 
          left: 85px; 
          top: -50%; 
          transform: translateY(-25%);
          width: 260px; 
          z-index: 9999; 
          border: 2px solid var(--bs-primary); 
          box-shadow: 0 15px 40px rgba(0,0,0,0.8); 
          background: #000; 
          border-radius: 8px; 
          overflow: hidden;
      }
      .media-box:hover .media-zoom { display: block; }
      .media-zoom video, .media-zoom img { width: 100%; display: block; }

      /* Loader Placeholder */
      .media-placeholder {
          background: rgba(255,255,255,0.05); 
          border-radius: 4px;
      }
      .media-empty {
          color: #6c757d;
          font-weight: bold;
      }
      
      /* Status Badges */
      .badge-active { background-color: #198754 !important; color: #fff !important; } /* Green */
      .badge-inactive { background-color: #6c757d !important; color: #fff !important; } /* Gray */

      /* Ad state (Telegram Ads API): статус и кнопки Pause/Activate.
         Таблица плотная, поэтому статус — точка плюс подпись её цветом, а не сплошной
         bootstrap-бейдж: заливка рядом с кнопкой действия спорит с ней за внимание и
         перебивает сами цифры отчёта.
         Цвета берём из переменных bootstrap, а не фиксированные: у отчёта есть переключатель
         светлой темы, и зашитые под тёмный фон оттенки в ней становятся нечитаемыми. */
      .ad-state, .ad-actions-cell { white-space: nowrap; vertical-align: middle; }
      .ad-status {
          display: inline-flex;
          align-items: center;
          gap: .4rem;
          font-size: .78rem;
          font-weight: 600;
          line-height: 1.2;
          color: var(--ad-status-color, var(--bs-secondary-color));
      }
      .ad-status::before {
          content: '';
          flex: 0 0 auto;
          width: .5rem;
          height: .5rem;
          border-radius: 50%;
          background: currentColor;
      }
      .ad-status--active   { --ad-status-color: var(--bs-success-text-emphasis); }
      .ad-status--review   { --ad-status-color: var(--bs-info-text-emphasis); }
      .ad-status--paused   { --ad-status-color: var(--bs-warning-text-emphasis); }
      .ad-status--declined { --ad-status-color: var(--bs-danger-text-emphasis); }
      .ad-status--idle     { --ad-status-color: var(--bs-secondary-color); }
      .ad-status--unknown  { --ad-status-color: var(--bs-tertiary-color); }
      /* Ждём ответ Telegram Ads API. Пульсирующая точка вместо спиннера в каждой строке:
         сотня крутящихся колец на странице читается как ошибка вёрстки. */
      .ad-status--loading::before { animation: adStatusPulse 1.2s ease-in-out infinite; }
      @keyframes adStatusPulse { 0%, 100% { opacity: .25; } 50% { opacity: 1; } }
      /* Кончившийся бюджет — причина, по которой у объявления нет кнопки Activate, поэтому
         подпись стоит в колонке действия, на месте самой кнопки. */
      .ad-note {
          font-size: .7rem;
          font-weight: 500;
          color: var(--bs-danger-text-emphasis);
      }
      .ad-empty { color: var(--bs-tertiary-color); }

      /* Balance / Bid CPM: по центру, tabular figures, мягкая «таблетка».
         Ноль приглушён — глаз цепляется за живые остатки, а не за ряд нулей. */
      .ad-money-col, .ad-balance-cell, .ad-cpm-cell {
          text-align: center !important;
          vertical-align: middle;
          white-space: nowrap;
      }
      .ad-money {
          display: inline-block;
          min-width: 3.6rem;
          padding: .2rem .55rem;
          font-size: .78rem;
          font-weight: 600;
          font-variant-numeric: tabular-nums;
          letter-spacing: .01em;
          line-height: 1.2;
          color: var(--bs-body-color);
          background: var(--bs-tertiary-bg);
          border: 1px solid var(--bs-border-color);
          border-radius: 999px;
      }
      .ad-money--zero {
          font-weight: 500;
          color: var(--bs-tertiary-color);
          background: transparent;
          border-color: transparent;
      }
      .ad-money--empty { color: var(--bs-tertiary-color); font-weight: 500; }

      /* Одна кнопка на строку, ширина фиксированная: Pause и Activate сменяют друг друга,
         и без общей ширины колонка дёргается при каждом переключении. */
      .ad-btn {
          display: inline-flex;
          align-items: center;
          justify-content: center;
          gap: .3rem;
          min-width: 5.6rem;
          padding: .25rem .6rem;
          font-size: .72rem;
          font-weight: 600;
          line-height: 1.2;
          color: var(--bs-secondary-color);
          background: var(--bs-tertiary-bg);
          border: 1px solid var(--bs-border-color);
          border-radius: 999px;
          cursor: pointer;
          transition: background-color .15s ease, border-color .15s ease, color .15s ease;
      }
      .ad-btn:hover:not(:disabled)         { color: var(--bs-body-color); background: var(--bs-secondary-bg); }
      .ad-btn--pause:hover:not(:disabled)  { color: var(--bs-warning-text-emphasis); border-color: var(--bs-warning-border-subtle); }
      .ad-btn--resume:hover:not(:disabled) { color: var(--bs-success-text-emphasis); border-color: var(--bs-success-border-subtle); }
      .ad-btn:focus-visible { outline: 0; box-shadow: 0 0 0 .2rem var(--bs-focus-ring-color); }
      .ad-btn:disabled { opacity: .55; cursor: default; }
      .ad-btn .spinner-border { width: .7rem; height: .7rem; border-width: .12em; }
      /* Кнопка «Info» — только иконка, поэтому общая минимальная ширина ей не нужна. */
      .ad-btn--icon { min-width: 0; padding: .25rem .45rem; font-size: .8rem; }
      .ad-info-cell { white-space: nowrap; vertical-align: middle; text-align: center; }

      /* --- Превью объявления (модалка по кнопке «Info») ---
         Повторяет рекламный пост в клиенте Telegram: зелёная подложка чата, белая рамка,
         голубой пузырь с синей полосой слева, метка «Ad», заголовок, текст и кнопка.
         Всё светлое и со своими цветами независимо от темы отчёта — смысл превью в том,
         чтобы увидеть объявление глазами пользователя, а не глазами отчёта. */
      <?php echo tg_emoji_css(); ?>
      .adp-stage {
          /* Высота задана заранее, чтобы окно не подпрыгивало, когда спиннер меняется на пост. */
          min-height: 180px;
          padding: 18px;
          border-radius: 10px;
          background: linear-gradient(160deg, #cfe2c2, #dfeacd 45%, #c7dfbe);
      }
      .adp-card {
          max-width: 420px;
          margin: 0 auto;
          padding: 5px;
          background: #fff;
          border-radius: 17px;
          box-shadow: 0 4px 14px rgba(0,0,0,.14);
      }
      .adp-bubble {
          position: relative;
          overflow: hidden;
          padding: 6px 9px 4px 12px;
          border-radius: 13px;
          background: #eaf3fd;
          color: #000;
          font-size: 15px;
          line-height: 1.35;
      }
      /* Синяя полоса вдоль левого края пузыря — ею Telegram помечает рекламный пост. */
      .adp-bubble::before {
          content: '';
          position: absolute;
          left: 0; top: 0; bottom: 0;
          width: 3px;
          background: #3390ec;
      }
      .adp-media { display: block; width: 100%; border-radius: 8px; margin-bottom: 5px; }
      .adp-ad-label { color: #3390ec; font-weight: 600; }
      .adp-title { font-weight: 600; }
      .adp-text { word-break: break-word; }
      /* Линия над кнопкой не доходит до краёв пузыря — как в клиенте Telegram, поэтому
         отрицательных отступов у кнопки нет: граница идёт по ширине содержимого. */
      .adp-button {
          display: block;
          margin-top: 6px;
          padding: 8px 0 2px;
          border-top: 1px solid #cfe3f6;
          color: #3390ec;
          font-size: 14px;
          font-weight: 600;
          text-align: center;
          text-decoration: none;
          text-transform: uppercase;
      }

      /* --- COLVIS STYLES (Темная тема) --- */
      div.dt-button-collection {
          background-color: #2d3748;
          border: 1px solid #4a5568;
          padding: 10px;
          border-radius: 6px;
          width: 220px;
      }
      div.dt-button-collection button.dt-button {
          background: transparent;
          color: #e2e8f0;
          border: none;
          display: block;
          width: 100%;
          text-align: left;
          padding: 5px 10px;
          margin-bottom: 2px;
          border-radius: 4px;
      }
      div.dt-button-collection button.dt-button:hover {
          background-color: rgba(255,255,255,0.1);
      }
      div.dt-button-collection button.dt-button.active {
          background-color: #0d6efd;
          color: #fff;
      }
      div.dt-button-collection button.dt-button span {
          margin-left: 8px;
      }
      div.dt-button-collection button.dt-button.active:before {
          content: "✔";
      }
      div.dt-button-collection button.dt-button:before {
          content: " ";
          margin-right: 14px;
      }

      /* --- COMPACT DATATABLES BUTTONS --- */
      div.dt-buttons {
          gap: 5px;
      }
      div.dt-buttons .btn {
          font-size: 0.75rem !important;
          padding: 0.3rem 0.6rem !important;
          line-height: 1.2 !important;
          border-radius: 4px !important;
          min-height: auto !important;
      }
      /* Flexbox fixes */
      .dataTables_length { float: none !important; margin-bottom: 0 !important; }
      .dt-buttons { float: none !important; }
      .dataTables_length label { margin-bottom: 0 !important; }

      /* Hide ads with no stats — рядом с поиском, но не внутри .dataTables_filter:
         селектор «.dataTables_filter input» иначе перекрашивает чекбокс в поле поиска
         и прячет квадрат. */
      .dt-hide-slot { flex: none; }
      .dataTables_wrapper .dt-hide-slot + .dataTables_filter {
          float: none !important;
          margin: 0;
          text-align: left;
      }
      .dt-hide-empty {
          display: flex;
          align-items: center;
          margin: 0;
          white-space: nowrap;
      }
      .dt-hide-empty .form-check {
          display: flex;
          align-items: center;
          gap: 0.45rem;
          min-height: 0;
          padding: 0;
          margin: 0;
      }
      .dt-hide-empty .form-check-input {
          width: 1.05em;
          height: 1.05em;
          margin: 0;
          flex: none;
          cursor: pointer;
          appearance: none;
          -webkit-appearance: none;
          background-color: var(--input-bg);
          border: 1px solid var(--border-color);
          border-radius: 0.25em;
      }
      .dt-hide-empty .form-check-input:checked {
          background-color: var(--accent-color);
          border-color: var(--accent-color);
          background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
          background-size: contain;
          background-repeat: no-repeat;
          background-position: center;
      }
      .dt-hide-empty .form-check-label {
          font-size: 0.8rem;
          color: var(--text-secondary);
          user-select: none;
          cursor: pointer;
      }
      /* Пустой By ads: поиска нет, галочка остаётся справа на его месте. */
      .p-3 > .dt-hide-empty { justify-content: flex-end; margin-bottom: 0.75rem; }

      /* Дубль горизонтальной полосы широкой таблицы, приклеенный к низу окна (stickyHScroll).
         Внутренний div нужен только шириной: он растягивает полосу до ширины таблицы. */
      .sticky-hbar {
          position: fixed; bottom: 0; z-index: 1030;
          height: 15px; overflow-x: auto; overflow-y: hidden; scrollbar-width: thin;
          background: var(--bg-card); border-top: 1px solid var(--border-color);
          display: none;
      }
      .sticky-hbar > div { height: 1px; }

      /* --- ВЫБОР ПЕРИОДА (LITEPICKER) ---
         Календарь Litepicker рисует себя в конце <body>, поэтому селекторы не вложены
         в карточку фильтров. Цвета задаются его собственными переменными и подставляются
         из палитры styles.css — за счёт этого переключатель светлой темы работает и здесь. */
      .litepicker {
          --litepicker-container-months-color-bg: var(--bg-card);
          --litepicker-container-months-box-shadow-color: transparent;
          --litepicker-footer-color-bg: var(--bg-card);
          --litepicker-footer-box-shadow-color: var(--border-color);
          --litepicker-month-header-color: var(--text-primary);
          --litepicker-month-weekday-color: var(--text-secondary);
          --litepicker-month-week-number-color: var(--text-secondary);
          --litepicker-button-prev-month-color: var(--text-secondary);
          --litepicker-button-next-month-color: var(--text-secondary);
          --litepicker-button-prev-month-color-hover: var(--accent-color);
          --litepicker-button-next-month-color-hover: var(--accent-color);
          --litepicker-day-color: var(--text-primary);
          --litepicker-day-color-hover: var(--accent-color);
          --litepicker-is-today-color: var(--accent-hover);
          --litepicker-is-in-range-color: rgba(99, 102, 241, .18);
          --litepicker-is-locked-color: var(--text-secondary);
          --litepicker-is-start-color: #fff;
          --litepicker-is-start-color-bg: var(--accent-color);
          --litepicker-is-end-color: #fff;
          --litepicker-is-end-color-bg: var(--accent-color);
          font-family: 'Inter', sans-serif;
          z-index: 1060; /* выше выпадающего списка объектов */
      }
      /* В светлой теме подсветка выбранного промежутка должна быть тем же акцентом, только
         бледнее: серый из --icon-bg сливался бы с заблокированными днями. */
      [data-bs-theme="light"] .litepicker { --litepicker-is-in-range-color: rgba(79, 70, 229, .12); }

      .litepicker .container__main {
          border: 1px solid var(--border-color);
          border-radius: .5rem;
          box-shadow: var(--shadow-md);
          overflow: hidden;
      }
      .litepicker .container__months { box-shadow: none !important; border-radius: 0; padding: .35rem; }
      .litepicker .container__months .month-item-header { font-size: .82rem; padding: .4rem 0; }
      .litepicker .container__months .month-item-weekdays-row > div {
          font-size: .68rem; text-transform: uppercase; letter-spacing: .03em;
      }
      .litepicker .container__days .day-item { border-radius: .35rem; font-size: .8rem; padding: .42rem 0; }
      .litepicker .container__days .day-item.is-locked { opacity: .3; }
      .litepicker .container__days .day-item.is-today:not(.is-start-date):not(.is-end-date) { font-weight: 700; }

      /* Список пресетов слева от календаря. Плагин ranges по умолчанию рисует их серыми
         кнопками с cursor:default и opacity при наведении — перебиваем на обычные пункты меню. */
      .litepicker .container__predefined-ranges {
          background: var(--bg-card);
          box-shadow: none !important;
          border-right: 1px solid var(--border-color);
          padding: .5rem;
          min-width: 9.5rem;
          gap: .1rem;
      }
      .litepicker .container__predefined-ranges button {
          background: transparent; border: none; border-radius: .35rem;
          color: var(--text-secondary); font-size: .8rem; font-weight: 500;
          padding: .4rem .6rem !important; margin: 0 !important; white-space: nowrap;
      }
      .litepicker .container__predefined-ranges button:hover {
          cursor: pointer !important; opacity: 1 !important;
          background: var(--icon-bg); color: var(--accent-color);
      }
      /* Поле только для чтения: ввод идёт через календарь, но выглядеть отключённым оно не должно. */
      #dateRange[readonly] { background-color: var(--input-bg); cursor: pointer; }

      /* Кнопка обязана быть той же высоты, что поля рядом.
         В styles.css у .form-control и .form-select стоит min-height: 38px, а у .btn-primary
         его нет — и границы в 1px тоже нет. При одинаковом padding (0.4rem) кнопка выходила
         33.2px против 38px у полей. Колонка выравнивает содержимое по низу, поэтому нижние
         края совпадали, а верхний край кнопки оказывался на 4.8px ниже — она заметно
         «провисала» в строке. Значение то же, что у полей, и по той же причине. */
      #reportForm button[type="submit"] { min-height: 38px; }

      /* Шаг по времени. Bootstrap'овский btn-outline-secondary тут не годится:
         в тёмной теме три серые кнопки читаются как «выключено», а выбранная — как нажатая,
         но недоступная. Поэтому дорожка одна, выбранный сегмент красится акцентом, а
         остальные остаются просто текстом — набор сразу виден, но в строке фильтров не
         спорит по весу с полями и кнопкой «Show report». */
      .step-seg {
          position: relative;
          display: flex;
          align-items: stretch;
          gap: 2px;
          padding: 3px;
          /* Та же высота, что у .form-control и .form-select в styles.css, иначе поле
             выбивается из общей линии фильтров. */
          min-height: 38px;
          border: 1px solid var(--border-color);
          border-radius: 0.4rem;
          background: var(--input-bg);
      }
      .step-seg input {
          position: absolute;
          width: 1px; height: 1px;
          opacity: 0;
          pointer-events: none;
      }
      .step-seg label {
          flex: 1 1 0;
          display: flex;
          align-items: center;
          justify-content: center;
          margin: 0;
          padding: 0 .35rem;
          border-radius: .35rem;
          font-size: .75rem;
          font-weight: 600;
          /* «Whole period» в колонке на 2/12 помещается впритык — если шрифт окажется шире
             ожидаемого, подпись обрежется многоточием, а не вылезет за рамку поля. */
          white-space: nowrap;
          overflow: hidden;
          text-overflow: ellipsis;
          color: var(--text-secondary);
          cursor: pointer;
          user-select: none;
          transition: background-color .15s, color .15s;
      }
      .step-seg label:hover { color: var(--text-primary); }
      .step-seg input:checked + label { background: var(--accent-color); color: #fff; }
      /* Переключать можно и с клавиатуры: сам radio спрятан, обводку рисуем на подписи. */
      .step-seg input:focus-visible + label { outline: 2px solid var(--accent-hover); outline-offset: -2px; }

      /* --- REPORT BUILDER --- */
      .bld-list {
          max-height: 220px;
          overflow-y: auto;
          border: 1px solid var(--border-color);
          border-radius: 8px;
          padding: 8px 10px;
      }
      .bld-list--wide { max-height: none; column-count: 3; column-gap: 18px; }
      .bld-list--wide .form-check { break-inside: avoid; }
      @media (max-width: 575.98px) { .bld-list--wide { column-count: 2; } }
      .bld-list .form-check { margin-bottom: 2px; }
      .bld-list .form-check-label { font-size: 0.85rem; cursor: pointer; }
      .bld-list .bld-count { font-size: 0.72rem; opacity: 0.6; margin-left: 4px; }
      .bld-chips { display: flex; flex-wrap: wrap; gap: 6px; min-height: 34px; align-items: center; }
      .bld-chip {
          display: inline-flex;
          align-items: center;
          gap: 6px;
          background: rgba(79, 70, 229, 0.15);
          border: 1px solid rgba(79, 70, 229, 0.4);
          color: var(--text-primary);
          border-radius: 50px;
          padding: 3px 10px;
          font-size: 0.78rem;
      }
      .bld-chip .bld-chip-x { cursor: pointer; opacity: 0.6; }
      .bld-chip .bld-chip-x:hover { opacity: 1; }
      .bld-chip .bld-chip-n { opacity: 0.5; font-size: 0.7rem; }
      .bld-empty { font-size: 0.8rem; color: var(--text-secondary); }
      #builderTable { font-size: 0.85rem; }
      #builderTable th, #builderTable td { vertical-align: middle; white-space: nowrap; }
      #builderTable td.bld-dim { max-width: 320px; overflow: hidden; text-overflow: ellipsis; }

/* --- Конструктор отчётов (кнопка Builder над таблицей «By ads») --- */
.bld-list {
    max-height: 220px; overflow-y: auto;
    border: 1px solid var(--border-color); border-radius: 8px; padding: 8px 10px;
}
.bld-list--wide { max-height: none; column-count: 3; column-gap: 18px; }
.bld-list--wide .form-check { break-inside: avoid; }
@media (max-width: 575.98px) { .bld-list--wide { column-count: 2; } }
.bld-list .form-check { margin-bottom: 2px; }
.bld-list .form-check-label { font-size: 0.85rem; cursor: pointer; }
.bld-list .bld-count { font-size: 0.72rem; opacity: 0.6; margin-left: 4px; }
.bld-chips { display: flex; flex-wrap: wrap; gap: 6px; min-height: 34px; align-items: center; }
.bld-chip {
    display: inline-flex; align-items: center; gap: 6px;
    background: rgba(79, 70, 229, 0.15); border: 1px solid rgba(79, 70, 229, 0.4);
    color: var(--text-primary); border-radius: 50px; padding: 3px 10px; font-size: 0.78rem;
}
.bld-chip .bld-chip-x { cursor: pointer; opacity: 0.6; }
.bld-chip .bld-chip-x:hover { opacity: 1; }
.bld-chip .bld-chip-n { opacity: 0.5; font-size: 0.7rem; }
.bld-empty { font-size: 0.8rem; color: var(--text-secondary); }
#builderTable { font-size: 0.85rem; }
#builderTable th, #builderTable td { vertical-align: middle; white-space: nowrap; }
#builderTable td.bld-dim { max-width: 320px; overflow: hidden; text-overflow: ellipsis; }

/* --- Шапка: кабинет, баланс, пользователь ---
   Три элемента стоят в одном ряду, поэтому и оформление у них общее: вся геометрия
   живёт в .hdr-pill, различается только заливка. До этого каждый был свёрстан
   по-своему — рамка, голый текст в две строки и кнопка без фона, — и ряд выглядел
   собранным из случайных деталей. */
.hdr-pill {
    display: inline-flex; align-items: center; gap: 0.5rem;
    height: 38px; padding: 0 0.8rem;
    border: 1px solid var(--border-color); border-radius: 0.5rem;
    background: transparent;
    color: var(--text-primary); font-weight: 600; font-size: 0.85rem; line-height: 1;
    white-space: nowrap;
    transition: all 0.2s;
}
/* Иконки приглушены: они подсказывают назначение, а читают в шапке текст. */
.hdr-pill-ic { color: var(--text-secondary); font-size: 0.95rem; }
.hdr-pill-chev { color: var(--text-secondary); font-size: 0.7rem; }

/* Все три меню шапки — панели одного вида: радиус как у таблеток (бутстраповские
   0.375rem рядом с ними заметно острее) и тень посильнее — с лёгкой панель на тёмном
   фоне сливается со страницей и кажется не всплывшей, а приклеенной. */
.cab-menu, .bal-menu, .user-menu { border-radius: 0.5rem; box-shadow: var(--shadow-md); }

.btn-cab:hover { border-color: var(--accent-color); }
.btn-cab:hover .hdr-pill-ic { color: var(--accent-color); }
.btn-lang:hover { border-color: var(--accent-color); }
.btn-lang:hover .hdr-pill-ic { color: var(--accent-color); }
.btn-cab-name {
    max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.cab-menu {
    min-width: 280px; padding: 4px;
    background: var(--bg-card); border: 1px solid var(--border-color);
}
.cab-menu .dropdown-item {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    border-radius: 0.35rem; padding: 0.45rem 0.6rem;
    font-size: 0.85rem; color: var(--text-primary);
}
.cab-menu .dropdown-item:hover,
.cab-menu .dropdown-item:focus {
    background: rgba(79, 70, 229, 0.12); color: var(--text-primary);
}
/* Активный пункт Bootstrap красит своим синим (#0d6efd) — он из другой палитры и рядом
   с индиго выглядит инородно. Заменяем на мягкую заливку акцентом. */
.cab-menu .dropdown-item.active,
.cab-menu .dropdown-item:active {
    background: rgba(79, 70, 229, 0.18);
    color: var(--text-primary);
    box-shadow: inset 2px 0 0 var(--accent-color);
}
.cab-item-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cab-item-main {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: .1rem;
}
.cab-item-from {
    font-size: .7rem;
    font-weight: 600;
    color: var(--text-secondary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* Цифры в одну ширину: иначе баланс подрагивает при каждом обновлении. */
.cab-item-balance {
    font-size: 0.75rem; color: var(--text-secondary);
    font-variant-numeric: tabular-nums; white-space: nowrap;
}
.cab-menu .dropdown-item.active .cab-item-balance { color: var(--accent-color); }
.cab-row {
    display: flex;
    align-items: center;
    gap: .1rem;
}
.cab-row .dropdown-item { flex: 1 1 auto; min-width: 0; }
.cab-star {
    flex: none;
    width: 1.65rem;
    height: 1.65rem;
    margin-inline-start: .2rem;
    border: 0;
    border-radius: .35rem;
    background: transparent;
    color: var(--text-secondary);
    font-size: .95rem;
    line-height: 1;
    padding: 0;
}
.cab-star:hover,
.cab-star:focus-visible {
    color: #eab308;
    background: rgba(234, 179, 8, .14);
}
.cab-row.is-fav .cab-star { color: #eab308; }

/* Баланс — единственная таблетка с заливкой. Сам текст остаётся основного цвета
   (в тёмной теме акцент на карточке даёт около 3.4:1 — для мелкого шрифта мало),
   а выделяет его фон. Оттенок вынесен в переменные: на белом та же прозрачность
   читается заметно гуще, чем на тёмной карточке, поэтому в светлой теме она ниже. */
:root { --hdr-bal-bg: rgba(99, 102, 241, 0.16); --hdr-bal-bd: rgba(99, 102, 241, 0.45); }
[data-bs-theme="light"] { --hdr-bal-bg: rgba(79, 70, 229, 0.10); --hdr-bal-bd: rgba(79, 70, 229, 0.32); }
.hdr-bal { background: var(--hdr-bal-bg); border-color: var(--hdr-bal-bd); }
.hdr-bal:hover { border-color: var(--accent-color); }
.hdr-bal > .bi-wallet2 { color: var(--accent-hover); font-size: 0.95rem; }
.hdr-bal-num { font-size: 0.95rem; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.hdr-bal-cur { font-size: 0.75rem; font-weight: 600; color: var(--text-secondary); display: inline-flex; align-items: center; }
.hdr-bal-cur .cur-icon { width: 14px; height: 16px; }
.cab-item-balance { display: inline-flex; align-items: center; }

/* Разбивка баланса по кошелькам. Это справка, а не список действий, поэтому строки
   не подсвечиваются при наведении и не кликаются — в отличие от соседних меню.
   Ширина по содержимому: с фиксированными 260px панель вылезала далеко левее своей
   кнопки и висела над чужими элементами. */
.bal-menu {
    min-width: 0; width: max-content; padding: 4px;
    background: var(--bg-card); border: 1px solid var(--border-color);
}
/* Обе строки — в одну линию и одной высоты. Число объявлений стояло отдельной строкой
   под подписью, из-за чего строки выходили разного роста, а список — кособоким. */
.bal-row {
    display: flex; align-items: center; justify-content: space-between; gap: 1.75rem;
    padding: 0.4rem 0.55rem; font-size: 0.8rem;
}
.bal-row-label {
    display: inline-flex; align-items: center; gap: 0.45rem;
    color: var(--text-secondary); white-space: nowrap;
}
.bal-row-label i { font-size: 0.85rem; }
.bal-row-note {
    padding: 0.05rem 0.3rem; border: 1px solid var(--border-color); border-radius: 0.25rem;
    font-size: 0.7rem; line-height: 1.4;
}
/* Число объявлений переписывает JS после удаления, и оно может опустеть: пустая рамка
   рядом с суммой выглядела бы обрезанной подписью. */
.bal-row-note:empty { display: none; }
.bal-row-val {
    color: var(--text-primary); font-weight: 600; white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
@media (max-width: 575.98px) { .btn-cab-name { max-width: none; } }

/* --- Служебный подвал (возраст данных; пересбор — только админу) ---
   Он не часть отчёта, поэтому отделён линией, а не карточкой, и набран приглушённо.
   Нижний отступ с запасом: над подвалом может висеть дубль полосы прокрутки широкой
   таблицы (.sticky-hbar), и без него он закрывал бы кнопку. */
/* Сам отчёт на всю ширину окна. */
.stats-page.container {
    max-width: none;
}
/* Карточка фильтров не должна оставлять пустую полосу над графиками.
   У .row.g-3 колонки и так имеют margin-top, а mt-2 на ряду его не гасит. */
.stats-filters.card-box {
    margin-bottom: .75rem;
}

.site-footer {
    margin-top: .35rem;
    padding: 0 0 .85rem;
    border-top: 0;
    font-size: .72rem;
    line-height: 1.35;
    color: color-mix(in srgb, var(--text-secondary) 62%, transparent);
}
.site-footer > .container { max-width: none; }
.footer-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: .45rem .75rem;
}
.footer-fresh { min-width: 0; }
.footer-part {
    margin-inline-start: .4rem;
    padding-inline-start: .4rem;
    border-inline-start: 1px solid color-mix(in srgb, currentColor 45%, transparent);
}
.footer-support-sep { margin-inline: .35rem; }
.footer-support {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    color: inherit;
    text-decoration: none;
    white-space: nowrap;
    vertical-align: middle;
}
.footer-support i {
    color: #2aa4e0;
    font-size: .95rem;
    line-height: 1;
}
.footer-support:hover { color: var(--text-primary); }
.footer-support:hover i { color: #5ec8f5; }

/* --- Меню пользователя в шапке (тема, профиль, выход) ---
   Рамка прозрачная и проявляется при наведении: кнопка в том же ряду, что кабинет и
   баланс, но она здесь наименее важная и постоянной рамкой тянула бы внимание. */
.btn-user { padding: 0 0.6rem; border-color: transparent; }
.btn-user:hover { border-color: var(--border-color); }
/* Аватар — всегда кружок с первой буквой имени, а фотография ложится поверх него.
   Держать букву запасным вариантом «на случай ошибки» не вышло: битую ссылку Telegram
   иногда отдаёт как успешную загрузку пустой картинки, события error при этом нет,
   и подменять было не по чему. Подложка же видна просто потому, что она снизу. */
.btn-user-ava {
    position: relative; flex: none; overflow: hidden;
    width: 24px; height: 24px; border-radius: 50%;
    display: grid; place-items: center;
    background: var(--accent-color); color: #fff;
    font-size: 0.72rem; font-weight: 700; line-height: 1;
}
.btn-user-ava img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.btn-user-name {
    max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.user-menu {
    min-width: 220px; padding: 4px;
    background: var(--bg-card); border: 1px solid var(--border-color);
}
.user-menu .dropdown-item {
    display: flex; align-items: center; gap: 0.6rem; width: 100%;
    border-radius: 0.35rem; padding: 0.45rem 0.6rem;
    font-size: 0.85rem; color: var(--text-primary);
}
.user-menu .dropdown-item:hover,
.user-menu .dropdown-item:focus {
    background: rgba(99, 102, 241, 0.12); color: var(--text-primary);
}
.user-menu .dropdown-item i { color: var(--text-secondary); width: 1rem; }
/* Выход — единственное необратимое действие в меню, поэтому красным при наведении. */
.user-menu .user-menu-exit:hover,
.user-menu .user-menu-exit:focus { background: rgba(239, 68, 68, 0.12); color: #ef4444; }
.user-menu .user-menu-exit:hover i { color: #ef4444; }
.user-menu .dropdown-divider { border-color: var(--border-color); margin: 4px 0; }
@media (max-width: 767.98px) { .btn-user-name { display: none; } }

/* ------------------------------------------------------------------ ЯЗЫК */

/* Код языка — в рамке слева, самоназвание рядом: так строка сканируется взглядом
   по ровному столбцу, а не по разной длины словам. */
.lang-item { justify-content: flex-start; }
.lang-code {
    flex: none; min-width: 2.1rem; text-align: center;
    padding: 0.05rem 0.25rem; border: 1px solid var(--border-color); border-radius: 0.3rem;
    font-size: 0.68rem; font-weight: 700; letter-spacing: 0.03em;
    color: var(--text-secondary);
}
.lang-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ------------------------------------------- УПРАВЛЕНИЕ ОБЪЯВЛЕНИЯМИ ------ */

/* Статусы и денежные ячейки описаны выше, в блоке «Ad state». Здесь — то, что появилось
   вместе с управлением: кликабельные ячейки, выбор строк, панель массовых действий, окно
   операции и всплывающие плашки. */

/* Ячейка-кнопка: статус, остаток, ставка. Пунктир под значением виден всегда — иначе о том,
   что по цифре можно нажать, узнаёт только тот, кто случайно провёл по ней курсором. Под
   курсором пунктир становится акцентным: понятно, что нажатие попадёт именно сюда. */
.ad-cell {
    padding: 0; border: 0; background: transparent;
    color: inherit; font: inherit; text-align: inherit;
    border-bottom: 1px dashed var(--bs-border-color); cursor: pointer;
}
.ad-cell:hover { color: var(--accent-color); border-bottom-color: var(--accent-color); }
.ad-cell:focus-visible {
    outline: 0; border-radius: 0.2rem; box-shadow: 0 0 0 0.2rem var(--bs-focus-ring-color);
}
/* У статуса под пунктиром оказалась бы плашка целиком, вместе с точкой состояния, — вместо
   него на наведении подсвечивается сама плашка. */
.ad-state .ad-cell { border-bottom: 0; }
.ad-state .ad-cell:hover { color: inherit; }
.ad-state .ad-cell:hover .ad-status { text-decoration: underline dashed var(--accent-color); text-underline-offset: .2rem; }

/* Строка-подсказка под заголовком таблицы: без неё о кликабельных ячейках приходится
   догадываться. */
.ad-table-hint { margin-top: .2rem; font-size: .72rem; color: var(--text-secondary); }

/* Дата создания: без переносов и цифрами одной ширины, чтобы столбец читался колонкой. */
.ad-date-col { white-space: nowrap; font-variant-numeric: tabular-nums; }

/* Колонка с галочкой: узкая и без переносов, иначе DataTables отдаёт ей ширину по
   заголовку и первая осмысленная колонка уезжает вправо. */
.ad-sel-col, .ad-sel-cell {
    width: 1%; padding-right: 0 !important;
    text-align: center; vertical-align: middle; white-space: nowrap;
}
.ad-sel-col .form-check-input, .ad-sel-cell .form-check-input { margin: 0; cursor: pointer; }

/* Удалённое объявление остаётся в отчёте ради истории расхода, но распоряжаться им уже
   нечем: строка приглушена, ячейки перестают быть кнопками, галочка выключена. */
.ad-status--deleted { --ad-status-color: var(--bs-tertiary-color); }
.ad-status--deleted::before { background: transparent; box-shadow: inset 0 0 0 1px currentColor; }
.ad-row--deleted > td { opacity: .55; }

.ad-btn--danger:hover:not(:disabled) {
    color: var(--bs-danger-text-emphasis); border-color: var(--bs-danger-border-subtle);
}

/* --- Панель массовых действий --- */

/* Полоса между заголовком карточки и таблицей. Появляется вместе с выбором и раздвигает
   содержимое вниз, а не накрывает его: плавающая панель на узком экране закрыла бы первые
   строки — как раз те, что человек только что отмечал. */
.ad-bulk {
    display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem;
    padding: .6rem .85rem;
    background: rgba(99, 102, 241, .07);
    border-bottom: 1px solid var(--border-color);
}
.ad-bulk[hidden] { display: none; }
.ad-bulk-count {
    flex: none; font-size: .78rem; font-weight: 700; color: var(--accent-color);
    font-variant-numeric: tabular-nums;
}
/* На месте «Selected: 3» идёт ход массовой операции — она выполняется без окна. Цвет
   спокойнее акцентного: это сообщение о работе, а не о выборе. */
.ad-bulk-run {
    color: var(--text-secondary);
    display: inline-flex;
    align-items: center;
    gap: .35rem;
}
.ad-bulk-run::before {
    content: '';
    width: .65rem;
    height: .65rem;
    flex: 0 0 auto;
    border: .12em solid currentColor;
    border-right-color: transparent;
    border-radius: 50%;
    animation: ad-run-spin .55s linear infinite;
}
@keyframes ad-run-spin {
    to { transform: rotate(360deg); }
}
/* Ширина группы не может схлопнуться в ноль: иначе «Выбрано» и «Снять выбор» остаются,
   а Pause / бюджет / CPM пропадают из ряда. max-content заставляет перенести группу
   на следующую строку, когда в этой ширине ей нет места. */
.ad-bulk-btns {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .4rem;
    flex: 1 1 auto;
    min-width: min(100%, max-content);
}
.ad-bulk-clear {
    flex: none; padding: 0; border: 0; background: transparent;
    font-size: .75rem; color: var(--text-secondary); text-decoration: underline;
    text-underline-offset: .15rem; cursor: pointer;
}
.ad-bulk-clear:hover { color: var(--text-primary); }

/* --- Окно операции --- */

/* Окно на одно действие: поле, подсказка, кнопка. Узкое и плотное намеренно — на экране
   это подсказка поверх таблицы, а не отдельная страница, и крупная карточка ради одной
   суммы закрывала бы те самые строки, из-за которых её открыли. */
.ad-modal .modal-dialog { max-width: 20rem; }
.ad-modal .modal-header { align-items: flex-start; border-bottom: 0; padding: .8rem .85rem .15rem; }
.ad-modal .modal-body   { padding: .35rem .85rem .6rem; }
.ad-modal .modal-footer { border-top: 0; padding: 0 .6rem .6rem; }
.ad-modal .modal-title  { font-size: 1rem; font-weight: 700; }
.ad-modal .btn-close    { padding: .3rem; margin: 0; font-size: .7rem; }
.ad-modal .btn          { font-size: .85rem; padding: .35rem .8rem; }
.ad-modal-sub {
    margin-top: .05rem; font-size: .78rem; color: var(--text-secondary);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 14rem;
}
.ad-panel[hidden] { display: none; }
/* display от классов bootstrap перебивает браузерное [hidden] { display: none }, поэтому
   спрятанную кнопку подтверждения (панель хода операции) гасим правилом посильнее. */
#adModalOk[hidden] { display: none; }

/* Поле суммы и ставки. Размер — как у обычного текста: цифры крупнее заголовка выглядели
   бы главным на экране, хотя это всего одно поле ввода. Цифры одной ширины, чтобы сумма не
   дёргалась при наборе. */
.ad-field .form-control {
    font-size: .9rem; font-weight: 600; padding: .3rem .5rem;
    font-variant-numeric: tabular-nums;
}
.ad-field .input-group-text {
    font-size: .72rem; font-weight: 700; color: var(--text-secondary);
    display: inline-flex; align-items: center; min-width: 2.4rem; justify-content: center;
}
/* Стрелки-крутилки убираем: шаг у валюты свой, лишние знаки поле и так не принимает, а
   пара кнопок в углу только сужает место под сумму. */
.ad-field input[type="number"] { -moz-appearance: textfield; appearance: textfield; }
.ad-field input[type="number"]::-webkit-outer-spin-button,
.ad-field input[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.ad-hint { margin-top: .4rem; font-size: .75rem; line-height: 1.4; color: var(--text-secondary); }
.ad-chips {
    display: flex;
    flex-wrap: wrap;
    gap: .28rem;
    margin-top: .5rem;
}
.ad-chips--split {
    flex-direction: column;
    flex-wrap: nowrap;
    gap: .35rem;
    align-items: stretch;
}
.ad-chips-row {
    display: flex;
    flex-wrap: wrap;
    gap: .28rem;
}
.ad-cpm-seg {
    display: flex;
    padding: 2px;
    margin-bottom: .65rem;
    background: var(--input-bg);
    border: 1px solid var(--border-color);
    border-radius: .5rem;
}
.ad-cpm-seg button {
    flex: 1;
    height: 2rem;
    border: 0;
    border-radius: .35rem;
    background: transparent;
    color: var(--text-secondary);
    font: inherit;
    font-size: .8rem;
    font-weight: 650;
    cursor: pointer;
}
.ad-cpm-seg button.is-on { background: var(--accent-color); color: #fff; }
#adCpmPre[hidden],
#adCpmSuf[hidden],
#adCpmPrev[hidden] { display: none !important; }
.ad-chip.is-on { border-color: var(--accent-color); color: var(--accent-color); }
.ad-cpm-prev {
    margin-top: .65rem;
    padding-top: .4rem;
    border-top: 1px solid var(--border-color);
}
.ad-cpm-prev-row {
    display: flex;
    justify-content: space-between;
    gap: .6rem;
    padding: .12rem 0;
    font-size: .8rem;
    font-variant-numeric: tabular-nums;
}
.ad-cpm-prev-row > span:first-child {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.ad-cpm-prev-row b.is-up { color: #34d399; }
.ad-cpm-prev-row b.is-down { color: #f87171; }
.ad-cpm-prev-row.is-skip {
    margin: .08rem 0;
    padding: .12rem .35rem;
    border-radius: .35rem;
    background: var(--mark-bg);
    color: var(--text-primary);
}
.ad-cpm-prev-more { margin-top: .1rem; font-size: .75rem; color: var(--text-secondary); }
#adBudgetSeg[hidden],
#adBudgetPrev[hidden] { display: none !important; }
.ad-chips[hidden] { display: none !important; }
.ad-chip {
    height: 1.7rem;
    padding: 0 .5rem;
    border: 1px solid var(--border-color);
    border-radius: .35rem;
    background: var(--bg-card, var(--input-bg));
    color: var(--text-primary);
    font-size: .72rem;
    font-weight: 700;
    line-height: 1;
    white-space: nowrap;
}
.ad-chip:hover { border-color: var(--accent-color); color: var(--accent-color); }

/* Второстепенное действие панели: переключение на вывод денег, пауза перед выводом,
   отправка на модерацию. */
.ad-link {
    display: inline-block; margin-top: .45rem; padding: 0;
    border: 0; background: transparent;
    font-size: .78rem; font-weight: 600; color: var(--accent-color); cursor: pointer;
}
.ad-link:hover { text-decoration: underline; }
.ad-link[hidden] { display: none; }

.ad-radio { padding-left: 1.7rem; margin-bottom: .25rem; }
.ad-radio .form-check-input { margin-left: -1.7rem; width: 1.05rem; height: 1.05rem; cursor: pointer; }
.ad-radio .form-check-label { font-size: .88rem; cursor: pointer; }
/* Недоступное состояние не убираем, а гасим: видно, что переключатель существует, и почему
   он не работает, объясняет подсказка под ним. */
.ad-radio .form-check-input:disabled,
.ad-radio .form-check-input:disabled + .form-check-label { opacity: .45; cursor: default; }

.ad-warn {
    display: flex; gap: .45rem;
    font-size: .78rem; line-height: 1.4; color: var(--bs-danger-text-emphasis);
}
.ad-cancel { color: var(--text-secondary); text-decoration: none; }
.ad-cancel:hover { color: var(--text-primary); }

/* Ход, итог и отсчёт ожидания. Одинаковые отказы склеиваются в одну фразу, поэтому
   список короткий — прокрутка больше не нужна. */
.ad-run { margin-top: .6rem; padding-top: .5rem; border-top: 1px solid var(--border-color); }
.ad-run[hidden] { display: none; }
/* Окно только с итогом (массовая пауза, запуск, модерация): панели над строкой нет, и
   разделитель отделял бы её от пустоты. */
.ad-modal--run .ad-run { margin-top: 0; padding-top: 0; border-top: 0; }
.ad-run-line {
    display: flex;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: .4rem;
    font-size: .78rem;
    font-weight: 600;
    line-height: 1.4;
    color: var(--text-primary);
}
.ad-run-line #adModalProgress { min-width: 0; flex: 1 1 12rem; }
.ad-run-spin {
    width: .7rem;
    height: .7rem;
    flex: 0 0 auto;
    color: var(--accent-color, #4f46e5);
    --bs-spinner-border-width: .12em;
}
.ad-run-spin[hidden] { display: none !important; }
.ad-run-bad { color: var(--bs-danger-text-emphasis); }
.ad-run-errs {
    margin: .4rem 0 0; padding-left: 1.1rem;
    font-size: .74rem; color: var(--bs-danger-text-emphasis);
    line-height: 1.45;
}
.ad-run-errs:empty { display: none; }

/* --- Плашки удавшихся действий --- */

/* Ответ на операцию с одним объявлением: окно закрывается, а что изменилось — говорит
   плашка. Поверх всего, но ниже модального окна (у него z-index 1055): при массовом
   действии ход показывает само окно. */
.ad-toasts {
    position: fixed; z-index: 1050; bottom: 1rem; right: 1rem;
    display: flex; flex-direction: column; gap: .4rem; pointer-events: none;
}
.ad-toast {
    max-width: 20rem; padding: .5rem .75rem;
    font-size: .78rem; font-weight: 500; color: var(--text-primary);
    background: var(--bg-card); border: 1px solid var(--border-color);
    border-left: 3px solid var(--accent-color);
    border-radius: .4rem; box-shadow: 0 .35rem 1rem rgba(0, 0, 0, .25);
    animation: adToastIn .18s ease-out;
    transition: opacity .5s ease, transform .5s ease;
}
.ad-toast--bad { border-left-color: var(--bs-danger); }
.ad-toast--out { opacity: 0; transform: translateY(.4rem); }
@keyframes adToastIn { from { opacity: 0; transform: translateY(.5rem); } to { opacity: 1; transform: none; } }

@media (max-width: 575.98px) {
    /* На телефоне кнопок в панели больше, чем ширины: пусть каждая занимает свою строку
       целиком, а не обрезается по краю карточки. */
    .ad-bulk-btns { width: 100%; }
    .ad-bulk-btns .ad-btn { flex: 1 1 8rem; }
    .ad-toasts { left: 1rem; right: 1rem; bottom: .75rem; }
    .ad-toast { max-width: none; }
}

/* ---------------------------------------------------------- АРАБСКИЙ (RTL) */

/* Сборка bootstrap.rtl зеркалит сетку и отступы, но не наши собственные правила.
   Здесь — только то, что в ней не учтено. */
[dir="rtl"] .hdr-pill-chev { margin-left: 0; margin-right: 0.15rem; }
[dir="rtl"] .brand-logo { flex-direction: row-reverse; }
[dir="rtl"] .dash-nav { flex-direction: row-reverse; }
[dir="rtl"] .footer-part { margin-left: 0; margin-right: 0.4rem; }

/* Числа, деньги и даты остаются слева направо при любом языке: «1 234.56» в
   зеркальном порядке превращается в другое число. */
[dir="rtl"] .ad-money-col,
[dir="rtl"] .hdr-bal-num,
[dir="rtl"] .bal-row-val,
[dir="rtl"] .cab-item-balance,
[dir="rtl"] td[data-order] { direction: ltr; }

/* Ссылки объявлений и служебные строки тоже латиница — иначе домен уезжает
   в конец строки, а слэши расставляются в обратном порядке. */
[dir="rtl"] .url-cell,
[dir="rtl"] .obj-row-name { direction: ltr; text-align: right; }

/* Плашки о действиях прижаты к тому же краю, где в RTL стоит колонка действий. */
[dir="rtl"] .ad-toasts { right: auto; left: 1rem; }
[dir="rtl"] .ad-toast { border-left: 1px solid var(--border-color); border-right: 3px solid var(--accent-color); }
[dir="rtl"] .ad-toast--bad { border-right-color: var(--bs-danger); }
[dir="rtl"] .ad-run-errs { padding-left: 0; padding-right: 1.1rem; }
[dir="rtl"] .ad-field .form-control,
[dir="rtl"] .ad-date-col { direction: ltr; text-align: right; }

@media (max-width: 767.98px) {
    .hdr-pill { height: 34px; padding: 0 0.5rem; gap: 0.32rem; font-size: 0.78rem; }
    .hdr-cab-drop { flex: 1 1 0%; min-width: 0; max-width: 100%; }
    .btn-cab { width: 100%; min-width: 0; max-width: 100%; }
    .btn-cab-name { flex: 1 1 auto; min-width: 0; max-width: none; }
    .cab-menu { min-width: 0; max-width: calc(100vw - 1.25rem); }

    .obj-picker-menu,
    .obj-picker-menu.theme-picker-menu {
        min-width: 0 !important;
        width: min(22rem, calc(100vw - 1.5rem));
        max-width: calc(100vw - 1.5rem);
    }
    .chart-mini { height: 128px; }
    .site-footer {
        margin-top: .25rem;
        padding: 0 0 max(.7rem, env(safe-area-inset-bottom));
    }
    .step-seg { width: 100%; }
    .step-seg label { font-size: .72rem; padding: 0 .25rem; }

    div.dataTables_wrapper div.dataTables_length,
    div.dataTables_wrapper div.dataTables_filter,
    div.dataTables_wrapper div.dataTables_info {
        float: none !important;
        text-align: left;
    }
    div.dataTables_wrapper div.dataTables_filter { margin-top: .35rem; }
    div.dataTables_wrapper div.dataTables_filter input {
        width: 100%;
        margin-left: 0 !important;
        display: block;
        font-size: 16px;
    }
    .dataTables_wrapper .dt-hide-slot + .dataTables_filter { width: 100%; }
    .dt-hide-empty { white-space: normal; }
    .sticky-hbar { left: 0; right: 0; }

    #axPivot .ax-pv-board { grid-template-columns: 1fr; }
    #axPivot .ax-pv-fbox select { min-width: 0; width: 100%; }
    .tgt-filters .form-select { min-width: 0; width: 100%; }
}
@media (max-width: 575.98px) {
    .hdr-right { flex-wrap: wrap; }
    .hdr-cab-drop { flex: 1 1 100%; }
    .dash-nav { flex: 1 1 auto; width: auto; min-width: 0; height: 36px; }
    .dash-nav-link { flex: 1; justify-content: center; }
}
/* Страница Ads: плотная лента в духе кабинета Telegram. */

:root {
    --alist-link: #2aabee;
    --alist-link-hover: #1e96d4;
    --alist-zebra: rgba(15, 20, 25, .035);
    --alist-hover: rgba(42, 171, 238, .07);
    --alist-picked: rgba(42, 171, 238, .12);
}
[data-bs-theme="dark"] {
    --alist-zebra: rgba(255, 255, 255, .04);
    --alist-hover: rgba(42, 171, 238, .1);
    --alist-picked: rgba(42, 171, 238, .16);
}

.alist-kpis-wrap { position: relative; margin: 1rem 0 0; }
/* Период живёт в углу первой плашки, а не в потоке: иначе Bootstrap .dropdown
   (block, width по родителю) сваливает кнопку под иконку и рвёт высоту ряда. */
.alist-kpi .alist-kpi-period-drop {
    position: absolute;
    top: .62rem;
    inset-inline-end: .62rem;
    z-index: 3;
    width: auto;
}
.alist-kpi-period {
    display: inline-flex;
    align-items: center;
    gap: .2rem;
    max-width: 6.4rem;
    height: 1.4rem;
    padding: 0 .35rem 0 .45rem;
    border: 1px solid var(--border-color);
    border-radius: .35rem;
    background: var(--bg-card);
    color: var(--text-primary);
    font-size: .68rem;
    font-weight: 650;
    line-height: 1;
    white-space: nowrap;
}
.alist-kpi-period span {
    overflow: hidden;
    text-overflow: ellipsis;
}
.alist-kpi-period:hover,
.alist-kpi-period[aria-expanded="true"] {
    border-color: rgba(42, 171, 238, .45);
}
.alist-kpi-period .bi { font-size: .62rem; color: var(--text-secondary); flex: none; }
.alist-kpi-period-menu { min-width: 8.5rem; padding: .25rem; }
.alist-kpi-period-menu .dropdown-item {
    border-radius: .3rem;
    font-size: .82rem;
    color: var(--text-primary);
}
.alist-kpi-period-menu .dropdown-item.is-on {
    background: rgba(99, 102, 241, .12);
    color: var(--text-primary);
    font-weight: 650;
}

.alist-kpis {
    --kpi-gap: .55rem;
    display: flex;
    align-items: stretch;
    gap: var(--kpi-gap);
    overflow-x: auto;
    padding-bottom: 2px;
}
.alist-kpi {
    position: relative;
    flex: 1 1 0;
    min-width: 8.4rem;
    overflow: hidden;
    padding: .7rem .85rem .8rem;
    border-radius: 16px;
    background: var(--bg-card);
    box-shadow: inset 0 0 0 1px var(--border-color);
}
.alist-kpi--st {
    display: grid;
    grid-template-columns: 1.7rem minmax(0, 1fr);
    grid-template-rows: auto auto;
    column-gap: .45rem;
    row-gap: .2rem;
    align-content: start;
    flex: 1.45 1 13rem;
    min-width: 13rem;
}
.alist-kpi--st .alist-kpi-ic {
    grid-column: 1;
    grid-row: 1 / span 2;
    margin-bottom: 0;
    align-self: start;
}
.alist-kpi--st .alist-kpi-lab { grid-column: 2; }
.alist-kpi--st .alist-kpi-st {
    grid-column: 2;
    margin-top: 0;
}
.alist-kpi--ai { flex: 1.85 1 17.5rem; min-width: 17.5rem; }
.alist-kpi-ic {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.7rem;
    height: 1.7rem;
    margin-bottom: .4rem;
    border-radius: 8px;
    color: #fff;
    font-size: .88rem;
}
.alist-kpi--views .alist-kpi-ic { background: #7c5cfc; }
.alist-kpi--clicks .alist-kpi-ic { background: #22c55e; }
.alist-kpi--spent .alist-kpi-ic { background: #f59e0b; }
.alist-kpi--ctr .alist-kpi-ic { background: #06b6d4; }
.alist-kpi--st .alist-kpi-ic { background: #94a3b8; }
.alist-kpi-lab {
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--text-secondary);
}
.alist-kpi-val {
    margin-top: .12rem;
    font-size: 1.12rem;
    font-weight: 700;
    line-height: 1.2;
    font-variant-numeric: tabular-nums;
    color: var(--text-primary);
}
.alist-kpi-val .cur-amt { gap: .28em; }
.alist-kpi-val .cur-icon { width: 13px; height: 15px; }
.alist-kpi-wave {
    position: absolute;
    right: 0;
    bottom: 0;
    width: 58%;
    height: 58%;
    pointer-events: none;
    opacity: .16;
}
.alist-kpi--views .alist-kpi-wave { color: #7c5cfc; }
.alist-kpi--clicks .alist-kpi-wave { color: #22c55e; }
.alist-kpi--spent .alist-kpi-wave { color: #f59e0b; }
.alist-kpi--ctr .alist-kpi-wave { color: #06b6d4; }
.alist-kpi-wave path { fill: currentColor; }
.alist-kpi-st {
    display: flex;
    flex-wrap: wrap;
    gap: .22rem;
}
.alist-kpi-tag {
    appearance: none;
    -webkit-appearance: none;
    margin: 0;
    padding: .14rem .4rem;
    border: 0;
    border-radius: 6px;
    font: inherit;
    font-size: .68rem;
    font-weight: 700;
    line-height: 1.2;
    white-space: nowrap;
    cursor: pointer;
}
.alist-kpi-tag b { font-weight: 800; margin-inline-end: .15rem; }
.alist-kpi-tag.is-active { color: #10b981; background: rgba(16, 185, 129, .12); }
.alist-kpi-tag.is-paused { color: #e09b2d; background: rgba(224, 155, 45, .14); }
.alist-kpi-tag.is-stopped { color: #8b93a7; background: rgba(139, 147, 167, .16); }
.alist-kpi-tag.is-review { color: #2aabee; background: rgba(42, 171, 238, .14); }
.alist-kpi-tag.is-declined { color: #e54d4d; background: rgba(229, 77, 77, .12); }
.alist-kpi-tag:hover { filter: brightness(1.08); }
.alist-kpi-tag:focus-visible { outline: 2px solid currentColor; outline-offset: 1px; }
.alist-kpi-tag.is-on { box-shadow: inset 0 0 0 1.5px currentColor; }
.alist-kpi-st.is-filtered .alist-kpi-tag:not(.is-on) { opacity: .42; }
[data-bs-theme="light"] .alist-kpi {
    box-shadow: 0 1px 2px rgba(15, 23, 42, .04), inset 0 0 0 1px var(--border-color);
}
[data-bs-theme="light"] .alist-kpi-wave { opacity: .2; }

.alist-kpi--ai {
    display: flex;
    flex-direction: column;
    justify-content: center;
    isolation: isolate;
    box-sizing: border-box;
    margin: 0;
    padding-inline-end: 1.85rem;
    border: 0;
    text-align: start;
    color: #fff;
    background: linear-gradient(135deg, #6d28d9 0%, #4f46e5 48%, #0891b2 100%);
    box-shadow: none;
    transition: flex-grow .42s ease, flex-basis .42s ease, min-width .42s ease, opacity .32s ease, padding .42s ease, margin .42s ease;
}
.alist-kpi-ai-open {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    flex: 1 1 auto;
    width: 100%;
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    line-height: inherit;
    text-align: start;
    cursor: pointer;
}
.alist-kpi-ai-x {
    position: absolute;
    z-index: 2;
    top: .4rem;
    inset-inline-end: .4rem;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.35rem;
    height: 1.35rem;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: rgba(255, 255, 255, .2);
    color: #fff;
    font-size: .72rem;
    line-height: 1;
    cursor: pointer;
}
.alist-kpi-ai-x:hover { background: rgba(255, 255, 255, .32); }
.alist-kpi-ai-x:focus-visible { outline: 2px solid #fff; outline-offset: 1px; }
.alist-kpis.is-ai-closing .alist-kpi--ai {
    flex-grow: 0;
    flex-basis: 0;
    min-width: 0;
    margin-inline-end: calc(var(--kpi-gap) * -1);
    padding-inline: 0;
    opacity: 0;
    pointer-events: none;
}
.alist-kpis.is-ai-closed .alist-kpi--ai { display: none; }
.alist-kpi--ai::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 0;
    background: linear-gradient(110deg, transparent 22%, rgba(255, 255, 255, .28) 50%, transparent 78%);
    transform: translateX(-140%);
    animation: alist-ai-shine 3.6s ease-in-out infinite;
    pointer-events: none;
}
.alist-kpi-ai-body {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: .5rem;
    flex: none;
    min-width: 0;
    min-height: 0;
}
.alist-kpi--ai .alist-kpi-ic {
    flex: none;
    margin-bottom: 0;
    background: rgba(255, 255, 255, .18);
}
.alist-kpi--ai .alist-kpi-lab {
    color: #fff;
    font-size: 1.22rem;
    font-weight: 800;
    letter-spacing: .01em;
    line-height: 1.15;
    text-transform: none;
}
.alist-kpi-ai-copy {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: .35rem;
    min-width: 0;
}
.alist-kpi-ai-txt {
    margin: 0;
    font-size: .72rem;
    font-weight: 650;
    line-height: 1.25;
    color: rgba(255, 255, 255, .94);
}
.alist-kpi-ai-more {
    display: inline-flex;
    align-items: center;
    height: 1.35rem;
    padding: 0 .55rem;
    border-radius: 999px;
    font-size: .68rem;
    font-weight: 700;
    line-height: 1;
    color: #312e81;
    background: #fff;
    pointer-events: none;
}
.alist-kpi--ai .alist-kpi-wave { color: #67e8f9; opacity: .28; }
.alist-kpi--ai:hover { color: #fff; filter: brightness(1.07); }
.alist-kpi-ai-open:focus-visible {
    outline: 2px solid #a5b4fc;
    outline-offset: 2px;
}
[data-bs-theme="light"] .alist-kpi--ai {
    background: linear-gradient(135deg, #6d28d9 0%, #4f46e5 48%, #0891b2 100%);
    box-shadow: 0 1px 2px rgba(15, 23, 42, .08);
}
[data-bs-theme="light"] .alist-kpi--ai::before {
    background: linear-gradient(110deg, transparent 22%, rgba(255, 255, 255, .16) 50%, transparent 78%);
}
[data-bs-theme="light"] .alist-kpi--ai:hover {
    filter: brightness(1.03);
}
@keyframes alist-ai-shine {
    0%, 58% { transform: translateX(-140%); }
    82%, 100% { transform: translateX(140%); }
}
@media (prefers-reduced-motion: reduce) {
    .alist-kpi--ai::before { animation: none; }
    .alist-kpi--ai { transition: none; }
}

.alist-toolbar {
    --alist-h: 2.125rem;
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .4rem;
    padding: .55rem 1.25rem;
    border-bottom: 1px solid var(--border-color);
}
/* Полоса выбора лежит тонкой плашкой на карточках сверху. Поиск под ними остаётся.
   Кнопки в один ряд: что не влезло, скрипт переносит в меню «Ещё». */
.alist-kpis-wrap > .ad-bulk {
    position: absolute;
    z-index: 6;
    left: 10px;
    right: 10px;
    top: 6px;
    height: 50%;
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: .45rem;
    margin: 0;
    padding: 0 .85rem;
    width: auto;
    border: 0;
    border-radius: 14px;
    background: #2f6b45;
    box-shadow: 0 8px 16px rgba(0, 0, 0, .35), inset 0 0 0 1px rgba(255, 255, 255, .16);
    overflow: visible;
}
.alist-kpis-wrap > .ad-bulk[hidden] { display: none; }
.alist-kpis-wrap > .ad-bulk .ad-bulk-count:not(.ad-bulk-run) { color: #e8f8ee; }
.alist-kpis-wrap > .ad-bulk .ad-bulk-clear { color: #d8f3e3; }
.alist-kpis-wrap > .ad-bulk .ad-bulk-clear:hover { color: #fff; }
.alist-kpis-wrap > .ad-bulk .ad-bulk-btns {
    flex: 1 1 auto;
    flex-wrap: nowrap;
    width: auto;
    min-width: 0;
    overflow: hidden;
    gap: .28rem;
}
.alist-kpis-wrap > .ad-bulk .ad-btn {
    flex: 0 0 auto;
    min-width: 0;
    padding: .32rem .55rem;
    font-size: .78rem;
    color: #143d28;
    background: #e7f6ec;
    border-color: transparent;
}
.alist-kpis-wrap > .ad-bulk .ad-btn:hover:not(:disabled) {
    color: #143d28;
    background: #fff;
    border-color: transparent;
}
.alist-kpis-wrap > .ad-bulk .ad-btn:disabled {
    opacity: .45;
    cursor: default;
}
.alist-kpis-wrap > .ad-bulk .ad-btn--pause {
    color: #7a4e08;
    background: #fff3d6;
}
.alist-kpis-wrap > .ad-bulk .ad-btn--pause:hover:not(:disabled) {
    color: #7a4e08;
    background: #ffe8b0;
    border-color: transparent;
}
.alist-kpis-wrap > .ad-bulk .ad-btn--resume {
    color: #145c32;
    background: #fff;
}
.alist-kpis-wrap > .ad-bulk .ad-btn--resume:hover:not(:disabled) {
    color: #145c32;
    background: #f4fff8;
    border-color: transparent;
}
.alist-kpis-wrap > .ad-bulk .ad-btn--danger {
    color: #9f2d2d;
    background: #fde8e8;
}
.alist-kpis-wrap > .ad-bulk .ad-btn--danger:hover:not(:disabled) {
    color: #9f2d2d;
    background: #ffd4d4;
    border-color: transparent;
}
.alist-kpis-wrap > .ad-bulk .ad-btn.is-out,
.alist-kpis-wrap > .ad-bulk .ad-bulk-more.is-out { display: none !important; }
.ad-bulk-more-menu {
    position: fixed;
    z-index: 1080;
    display: none;
    min-width: 11.5rem;
    max-height: min(70vh, 22rem);
    overflow: auto;
    padding: .3rem;
    border-radius: 12px;
    background: #243056;
    box-shadow: 0 14px 32px rgba(0, 0, 0, .5), inset 0 0 0 1px rgba(165, 180, 252, .5);
}
.ad-bulk-more-menu.is-open {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: .2rem;
}
.ad-bulk-more-menu .ad-btn,
.ad-bulk-more-menu .dropdown > .ad-btn {
    justify-content: flex-start;
    width: 100%;
}
.ad-bulk-more-menu .dropdown { width: 100%; }
.alist-kpis-wrap .ad-bulk-more-menu,
[data-bs-theme="light"] .alist-kpis-wrap .ad-bulk-more-menu {
    background: #1b3d2a;
    box-shadow: 0 14px 32px rgba(0, 0, 0, .4), inset 0 0 0 1px rgba(255, 255, 255, .14);
}
.alist-search {
    position: relative;
    flex: 1.2 1 15rem;
    min-width: 10rem;
    max-width: 20rem;
}
.alist-search > .bi-search {
    position: absolute;
    left: .65rem;
    top: 50%;
    transform: translateY(-50%);
    font-size: .82rem;
    color: var(--text-secondary);
    pointer-events: none;
}
.alist-search .form-control {
    height: var(--alist-h);
    min-height: var(--alist-h);
    max-height: var(--alist-h);
    box-sizing: border-box;
    padding: 0 .7rem 0 2rem;
    font-size: .8rem;
    line-height: 1.25;
    background: var(--ad-field-bg, var(--input-bg));
    border-color: var(--border-color);
    color: var(--text-primary);
    border-radius: .45rem;
    -webkit-appearance: none;
    appearance: none;
}
.alist-filter {
    position: relative;
    flex: 1 1 12rem;
    width: auto;
    min-width: 8.5rem;
    max-width: 16rem;
    margin: 0;
}
.alist-filter--obj {
    flex: 1.15 1 13rem;
    width: auto;
    min-width: 9rem;
    max-width: 18rem;
}
.alist-toolbar .alist-filter-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .35rem;
    width: 100%;
    height: var(--alist-h);
    min-height: var(--alist-h);
    padding: 0 .45rem 0 .7rem;
    font-size: .8rem;
    line-height: 1.25;
    text-align: start;
    background: var(--ad-field-bg, var(--input-bg));
    border: 1px solid var(--border-color);
    color: var(--text-primary);
    border-radius: .45rem;
    cursor: pointer;
    overflow: hidden;
}
.alist-toolbar .alist-filter-toggle:focus {
    box-shadow: 0 0 0 .2rem rgba(42, 171, 238, .2);
    outline: 0;
}
.alist-filter-toggle.is-on {
    border-color: rgba(42, 171, 238, .55);
    box-shadow: inset 0 0 0 1px rgba(42, 171, 238, .18);
}
.alist-filter-sum {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-align: start;
}
.alist-filter-caret {
    flex: none;
    font-size: .72rem;
    line-height: 1;
    color: var(--text-secondary);
    opacity: .75;
    margin-inline-end: 0;
}
.alist-filter-toggle[aria-expanded="true"] .alist-filter-caret {
    transform: rotate(180deg);
}
.alist-filter-menu {
    width: 16rem;
    min-width: 14rem;
    padding: 0;
    background: var(--bg-card);
    border-color: var(--border-color);
}
.alist-filter--obj .obj-picker-menu {
    width: 22rem;
    min-width: 18rem;
}
.alist-filter--obj .obj-row-obj { padding-left: .75rem; }
.alist-filter-head {
    display: flex;
    gap: .75rem;
    padding: .45rem .75rem;
    border-bottom: 1px solid var(--border-color);
}
.alist-filter-head .btn-link { font-size: .75rem; }
.obj-picker-menu .alist-filter-head {
    padding: .45rem .15rem 0;
    border-bottom: 0;
}
.alist-filter-list { max-height: 18rem; overflow-y: auto; padding: .2rem 0; }
.alist-funnel { position: relative; flex: 0 0 auto; }
.alist-funnel-btn {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    height: var(--alist-h);
    padding: 0 .7rem;
    border: 1px solid var(--border-color);
    border-radius: .45rem;
    background: var(--ad-field-bg, var(--input-bg));
    color: var(--text-secondary);
    font-size: .8rem;
    font-weight: 600;
    line-height: 1;
    cursor: pointer;
}
.alist-funnel-btn:hover,
.alist-funnel-btn:focus-visible,
.alist-funnel-btn[aria-expanded="true"] {
    color: var(--text-primary);
    border-color: rgba(42, 171, 238, .45);
}
.alist-funnel-btn.is-on {
    color: var(--accent-color, #35a3f6);
    border-color: rgba(42, 171, 238, .55);
}
.alist-range-menu {
    width: 20.5rem;
    padding: 0;
    background: var(--bg-card);
    border-color: var(--border-color);
}
.alist-range-title {
    font-size: .75rem;
    font-weight: 600;
    color: var(--text-secondary);
}
.alist-range-list { max-height: 22rem; overflow-y: auto; padding: .35rem .7rem .55rem; }
.alist-range-row {
    display: grid;
    grid-template-columns: 4.6rem minmax(0, 1fr) auto minmax(0, 1fr) auto;
    align-items: center;
    gap: .3rem;
    margin-top: .4rem;
}
.alist-range-row:first-child { margin-top: 0; }
.alist-range-row:not(:has(.alist-range-unit)) { grid-template-columns: 4.6rem minmax(0, 1fr) auto minmax(0, 1fr); }
.alist-range-lab { font-size: .78rem; font-weight: 600; color: var(--text-primary); }
.alist-range-row.is-on .alist-range-lab { color: var(--accent-color, #35a3f6); }
.alist-range-in {
    width: 100%;
    height: 1.85rem;
    padding: 0 .4rem;
    font-size: .8rem;
    background: var(--ad-field-bg, var(--input-bg));
    border: 1px solid var(--border-color);
    color: var(--text-primary);
    border-radius: .35rem;
}
.alist-range-in:focus {
    outline: 0;
    border-color: rgba(42, 171, 238, .7);
    box-shadow: 0 0 0 .15rem rgba(42, 171, 238, .2);
}
.alist-range-dash,
.alist-range-unit { color: var(--text-secondary); font-size: .75rem; }
.alist-cols { margin-left: 0; }
.alist-tools {
    display: flex;
    align-items: center;
    flex: 1 1 auto;
    min-width: 0;
    gap: .4rem;
    margin-left: 0;
}
.alist-cols-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: var(--alist-h);
    height: var(--alist-h);
    padding: 0;
    border: 1px solid var(--border-color);
    border-radius: .45rem;
    background: var(--ad-field-bg, var(--input-bg));
    color: var(--text-secondary);
    font-size: 1.05rem;
    line-height: 1;
}
.alist-cols-btn:hover,
.alist-cols-btn:focus-visible,
.alist-cols-btn[aria-expanded="true"] {
    color: var(--text-primary);
    border-color: rgba(42, 171, 238, .45);
}
.alist-cols-menu {
    min-width: 11.5rem;
    padding: .4rem;
    background: var(--bg-card);
    border-color: var(--border-color);
}
.alist-cols-all {
    display: block;
    width: 100%;
    margin: 0 0 .25rem;
    padding: .2rem .45rem;
    border: 0;
    background: transparent;
    color: var(--mark-color, #eab308);
    font-size: .72rem;
    font-weight: 600;
    text-align: left;
}
.alist-cols-all:hover { color: var(--text-primary); }
.alist-cols-item {
    display: flex;
    align-items: center;
    gap: .45rem;
    margin: 0;
    padding: .28rem .45rem;
    border-radius: .3rem;
    font-size: .8rem;
    color: var(--text-primary);
    cursor: pointer;
}
.alist-cols-item:hover { background: var(--alist-hover); }
.alist-cols-item .form-check-input { margin: 0; flex: none; }
.alist-cols-grip {
    display: inline-flex;
    align-items: center;
    flex: none;
    margin-inline-start: -.15rem;
    color: var(--text-secondary);
    cursor: grab;
    touch-action: none;
}
.alist-cols-item.is-drag { opacity: .55; }
.alist-cols-item.is-drag > :not(.alist-cols-grip) { pointer-events: none; }
.alist-cols-item.is-drag .alist-cols-grip { cursor: grabbing; }
.alist-cols-item--link {
    margin-bottom: .25rem;
    padding-bottom: .4rem;
    border-bottom: 1px solid var(--border-color);
}
.alist-hide-links .alist-link { display: none !important; }
.alist-csv {
    margin-inline-start: auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .35rem;
    height: var(--alist-h, 2.125rem);
    padding: 0 .75rem;
    border: 1px solid var(--border-color);
    border-radius: .45rem;
    background: var(--ad-field-bg, var(--input-bg));
    color: var(--text-primary);
    font-size: .8rem;
    font-weight: 600;
    line-height: 1;
    white-space: nowrap;
}
.alist-csv:hover,
.alist-csv:focus-visible {
    color: var(--text-primary);
    border-color: rgba(42, 171, 238, .45);
}

.alist-page.container {
    max-width: none;
}
/* Колонки не сжимаются уже текста. Если ряд шире окна — крутим саму таблицу, не страницу. */
.alist-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
.alist-loading td {
    text-align: center;
    padding: 2.4rem 1rem;
    color: var(--text-secondary);
}
.alist-loading .spinner-border {
    margin-right: .45rem;
    color: var(--accent-color);
    vertical-align: -0.15em;
}
.alist-pager {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: .35rem .75rem;
    padding: .55rem .85rem .7rem;
    border-top: 1px solid var(--border-color);
}
.alist-pager[hidden] { display: none !important; }
.alist-pager-info {
    margin-right: auto;
    font-size: .8rem;
    color: var(--text-secondary);
}
.alist-pager .pagination {
    margin: 0;
    gap: 2px;
}
.alist-pager .pagination .page-item .page-link {
    margin-left: 0;
    padding: 0.25rem 0.6rem;
    font-size: 0.8rem;
    font-weight: 500;
    line-height: 1.4;
    border-radius: 0.4rem;
    background-color: transparent;
    color: var(--text-secondary);
    border: 1px solid transparent;
    box-shadow: none;
    appearance: none;
    -webkit-appearance: none;
    cursor: pointer;
    transition: background-color .12s ease, color .12s ease;
}
.alist-pager .pagination .page-item .page-link:hover {
    background-color: var(--table-hover);
    color: var(--text-primary);
    border-color: var(--border-color);
}
.alist-pager .pagination .page-item .page-link:focus {
    box-shadow: none;
    background-color: var(--table-hover);
    color: var(--text-primary);
}
.alist-pager .pagination .page-item.active .page-link {
    background-color: var(--accent-color);
    border-color: var(--accent-color);
    color: #fff;
    cursor: default;
}
.alist-pager .pagination .page-item.disabled .page-link {
    background-color: transparent;
    border-color: transparent;
    color: var(--text-secondary);
    opacity: .45;
    cursor: default;
}

.alist-table {
    width: 100%;
    table-layout: auto;
    margin: 0;
    border-collapse: collapse;
    font-size: .78rem;
}
.alist-table th,
.alist-table td {
    padding: .38rem .4rem;
    border: 0;
    vertical-align: middle;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.alist-table th:first-child,
.alist-table td:first-child { padding-left: .85rem; }
.alist-table th:last-child,
.alist-table td:last-child { padding-right: 1.25rem; }
.alist-table thead th {
    font-size: inherit;
    font-weight: 700;
    letter-spacing: 0;
    text-transform: none;
    color: var(--text-primary);
    background: transparent;
    border-bottom: 1px solid var(--border-color);
    padding-top: .62rem;
    padding-bottom: .62rem;
}
.alist-th {
    cursor: pointer;
    user-select: none;
}
.alist-table th[data-col],
table.dataTable thead th { position: relative; }
.alist-col-res {
    position: absolute;
    top: 0;
    inset-inline-end: 0;
    z-index: 4;
    width: 8px;
    height: 100%;
    cursor: col-resize;
    touch-action: none;
}
.alist-col-res::after {
    content: "";
    position: absolute;
    top: 18%;
    bottom: 18%;
    inset-inline-end: 3px;
    width: 2px;
    border-radius: 1px;
    background: transparent;
}
.alist-table th:hover .alist-col-res::after,
table.dataTable thead th:hover .alist-col-res::after,
.alist-col-res.is-on::after { background: var(--accent-color); }
body.alist-resizing,
body.alist-resizing * { cursor: col-resize !important; user-select: none !important; }
.alist-table.is-sized td.alist-num,
.alist-table.is-sized th.alist-num {
    overflow: hidden;
    text-overflow: ellipsis;
}
.alist-table th[data-col],
table.dataTable thead th { position: relative; }
.alist-col-res {
    position: absolute;
    top: 0;
    inset-inline-end: 0;
    z-index: 4;
    width: 8px;
    height: 100%;
    cursor: col-resize;
    touch-action: none;
}
.alist-col-res::after {
    content: "";
    position: absolute;
    top: 18%;
    bottom: 18%;
    inset-inline-end: 3px;
    width: 2px;
    border-radius: 1px;
    background: transparent;
}
.alist-table th:hover .alist-col-res::after,
table.dataTable thead th:hover .alist-col-res::after,
.alist-col-res.is-on::after { background: var(--accent-color); }
body.alist-resizing,
body.alist-resizing * { cursor: col-resize !important; user-select: none !important; }
.alist-table.is-sized td.alist-num,
.alist-table.is-sized th.alist-num {
    overflow: hidden;
    text-overflow: ellipsis;
}
.alist-th:hover { color: var(--text-primary); }
.alist-th.is-on { color: var(--text-primary); }
.alist-caret {
    display: inline-block;
    width: 0;
    height: 0;
    margin-left: .22rem;
    vertical-align: .15rem;
    border-left: .28rem solid transparent;
    border-right: .28rem solid transparent;
    border-top: .32rem solid currentColor;
    opacity: 0;
    transition: transform .12s ease, opacity .12s ease;
}
.alist-th:hover > .alist-caret,
.alist-sort:hover .alist-caret { opacity: .4; }
.alist-th.is-on > .alist-caret,
.alist-sort.is-on .alist-caret { opacity: .85; color: var(--mark-color, #eab308); }
.alist-th.is-on[data-dir="asc"] > .alist-caret,
.alist-sort.is-on[data-dir="asc"] .alist-caret { transform: rotate(180deg); }
.alist-th-day { cursor: default; }
.alist-day-sort {
    display: inline-flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .12rem;
    line-height: 1.15;
    white-space: nowrap;
}
.alist-sort {
    display: inline-flex;
    align-items: baseline;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    font-weight: 700;
    line-height: inherit;
    cursor: pointer;
}
.alist-sort-sub {
    font-size: .85em;
    font-weight: 600;
    color: var(--text-secondary);
}
.alist-sort.is-on { color: var(--text-primary); }
.alist-sort-sub.is-on { color: var(--mark-color, #eab308); }
.alist-sort:focus-visible {
    outline: 2px solid var(--accent-color);
    outline-offset: 2px;
}
.alist-table tbody tr.alist-card:nth-child(even of .alist-card) { background: var(--alist-zebra); }
.alist-table tbody tr.alist-card:hover { background: var(--alist-hover); }
.alist-table tbody tr.is-picked { background: var(--alist-picked); }
.alist-table tbody tr.ad-row--deleted { opacity: .5; }

.alist-folder { cursor: pointer; }
.alist-folder td {
    font-weight: 700;
    background: var(--table-head-bg);
    border-bottom: 1px solid var(--border-color);
    padding-top: .5rem;
    padding-bottom: .5rem;
}
.alist-folder:hover td { background: var(--table-head-bg); }
.alist-table [data-folder-tone="0"] { --folder-color: #6366f1; }
.alist-table [data-folder-tone="1"] { --folder-color: #10b981; }
.alist-table [data-folder-tone="2"] { --folder-color: #f59e0b; }
.alist-table [data-folder-tone="3"] { --folder-color: #ec4899; }
.alist-table [data-folder-tone="4"] { --folder-color: #06b6d4; }
.alist-table [data-folder-tone="5"] { --folder-color: #8b5cf6; }
.alist-table [data-folder-tone="6"] { --folder-color: #f97316; }
.alist-table [data-folder-tone="7"] { --folder-color: #14b8a6; }
.alist-folder:not(.is-ungrouped) td:first-child,
.alist-card[data-folder-id]:not([data-folder-id="0"]) td:first-child {
    box-shadow: inset 3px 0 0 var(--folder-color, var(--accent-color));
}
.alist-table.has-folders .alist-card[data-folder-id] td.alist-ad {
    padding-left: 1.7rem;
}
.alist-folder.is-ungrouped td {
    border-top: 1px solid var(--border-color);
    padding-top: .62rem;
}
.alist-folder.is-drop td { box-shadow: inset 0 0 0 2px var(--folder-color, var(--accent-color)); }
.alist-folder-line {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .28rem .4rem;
    min-width: 0;
    max-width: 100%;
}
.alist-folder-toggle {
    flex: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    padding: 0;
    border: 0;
    border-radius: .3rem;
    background: transparent;
    color: var(--text-secondary);
    line-height: 1;
}
.alist-folder-toggle .bi {
    display: block;
    font-size: .85rem;
    transition: transform .15s ease;
}
.alist-folder.is-collapsed .alist-folder-toggle .bi { transform: rotate(-90deg); }
[dir="rtl"] .alist-folder.is-collapsed .alist-folder-toggle .bi { transform: rotate(90deg); }
.alist-folder-toggle:hover { color: var(--text-primary); background: rgba(148, 163, 184, .14); }
.alist-folder-line > .alist-folder-ic { color: var(--folder-color, var(--accent-color)); flex: none; font-size: 1rem; }
.alist-folder.is-ungrouped .alist-folder-line > .alist-folder-ic { color: var(--text-secondary); }
.alist-folder-name {
    border: 0;
    background: none;
    padding: 0;
    color: var(--text-primary);
    font: inherit;
    font-weight: 750;
    text-align: start;
    cursor: pointer;
    min-width: 5rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 1 1 5rem;
}
button.alist-folder-name { cursor: text; }
button.alist-folder-name:hover { color: var(--accent-color); }
.alist-folder-name-input {
    min-width: 8rem;
    width: 12rem;
    max-width: 100%;
    height: 1.7rem;
    padding: 0 .4rem;
    border: 1px solid var(--accent-color);
    border-radius: .3rem;
    background: var(--input-bg);
    color: var(--text-primary);
    font: inherit;
    font-weight: 750;
}
.alist-folder-n {
    color: var(--text-secondary);
    font-size: .72rem;
    font-weight: 650;
    white-space: nowrap;
}
.alist-folder-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .35rem;
    flex: 1 1 13rem;
    min-width: 0;
}
.alist-folder-limit {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .35rem;
    flex: none;
    min-width: 0;
    color: var(--text-secondary);
    font-size: .72rem;
    font-weight: 700;
    line-height: 1.15;
}
.alist-folder-limit-lab {
    padding: .18rem .4rem;
    border-radius: .3rem;
    background: rgba(239, 68, 68, .14);
    color: #ef4444;
    font-size: .68rem;
    font-weight: 750;
}
.alist-folder-limit-amt {
    display: inline-flex;
    align-items: center;
    gap: .22rem;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.alist-folder-limit .cur-icon {
    width: 11px;
    height: 12px;
    vertical-align: 0;
}
.alist-folder-limit-sep {
    opacity: .5;
    font-weight: 650;
}
.alist-folder-limit.is-hit .alist-folder-limit-amt { color: #ef4444; }
.alist-folder-acts {
    flex: none;
    display: inline-flex;
    align-items: center;
    gap: .05rem;
}
.alist-folder-set,
.alist-folder-del {
    flex: none;
    width: 1.6rem;
    height: 1.6rem;
    padding: 0;
    border: 0;
    border-radius: .3rem;
    background: transparent;
    color: var(--text-secondary);
    line-height: 1;
}
.alist-folder-set:hover { color: var(--accent-color); background: rgba(148, 163, 184, .14); }
.alist-folder-del:hover { color: #ef4444; background: rgba(239, 68, 68, .12); }
.alist-card.is-dragging { opacity: .45; }
.alist-card[draggable="true"] { cursor: grab; }
.alist-card[draggable="true"]:active { cursor: grabbing; }

.alist-folder-add {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .35rem;
    height: var(--alist-h, 2.125rem);
    padding: 0 .85rem;
    border: 1px solid var(--border-color);
    border-radius: .45rem;
    background: var(--ad-field-bg, var(--input-bg));
    color: var(--text-primary);
    font-size: .8rem;
    font-weight: 700;
    line-height: 1;
    white-space: nowrap;
}
.alist-folder-add:hover { border-color: var(--accent-color); color: var(--accent-color); }
a.alist-auto-btn { text-decoration: none; }
.alist-auto-btn > .bi { color: var(--accent-color); }
.alist-auto-btn-n {
    min-width: 1.15rem;
    padding: .12rem .35rem;
    border-radius: 999px;
    background: var(--accent-color);
    color: #fff;
    font-size: .68rem;
    font-weight: 800;
    text-align: center;
}
.alist-folder-add-menu { min-width: 16rem; }
.alist-folder-add-menu form { display: flex; flex-direction: column; gap: .4rem; }
.alist-folder-add-go { width: 100%; }
.alist-folder-hint {
    margin: 0 0 .35rem;
    font-size: .72rem;
    font-weight: 500;
    color: var(--text-secondary);
    line-height: 1.35;
    white-space: normal;
}
.alist-folder-del-note {
    display: flex;
    gap: .45rem;
    margin: 0;
    font-size: .8rem;
    font-weight: 500;
    line-height: 1.4;
    color: var(--text-primary);
}
.alist-folder-del-note > .bi {
    flex: none;
    margin-top: .12rem;
    color: var(--accent-color);
}
#alistFolderDel .modal-dialog { max-width: 22rem; }
#alistFolderSet .modal-dialog { max-width: 24rem; }
.alist-folder-limit-off {
    padding-left: 0;
    color: var(--text-secondary);
    font-size: .85rem;
    font-weight: 600;
}
.alist-folder-limit-off:hover { color: #ef4444; }
.alist-folder-limit-off[hidden] { display: none !important; }
.alist-folder-set-label {
    display: block;
    margin: 0 0 .35rem;
    font-size: .8rem;
    font-weight: 700;
    color: var(--text-primary);
}
.alist-folder-set-hint { margin: .7rem 0 0; }
.alist-folder-resume {
    display: flex;
    align-items: flex-start;
    gap: .5rem;
    margin: .9rem 0 0;
    font-size: .85rem;
    font-weight: 600;
    line-height: 1.35;
    color: var(--text-primary);
    cursor: pointer;
}
.alist-folder-resume input { margin-top: .18rem; flex: none; }
.alist-card.is-folded { display: none; }

.alist-table th.alist-col-check,
.alist-table td.alist-col-check {
    width: 2.25rem;
    min-width: 2.25rem;
    max-width: 2.25rem;
    box-sizing: border-box;
    text-align: center;
    overflow: hidden;
    padding-left: .85rem;
    padding-right: .3rem;
}
.alist-col-check .form-check-input { margin: 0; }

/* Название забирает всё, что осталось. Остальные колонки сжимаются по тексту:
   width: 1px при nowrap даёт ширину содержимого, а не долю окна. */
.alist-w-check  { width: 2.25rem; }
.alist-w-ad     { width: 100%; }
.alist-w-views,
.alist-w-clicks,
.alist-w-actions,
.alist-w-pct,
.alist-w-cpm,
.alist-w-cents,
.alist-w-spent,
.alist-w-budget,
.alist-w-day,
.alist-w-daily,
.alist-w-target,
.alist-w-status,
.alist-w-date   { width: 1px; }

.alist-table col[hidden],
.alist-table th[hidden],
.alist-table td[hidden] { display: none; }

.alist-table th[data-col="title"],
.alist-table td.alist-ad { min-width: 14rem; }
.alist-table th:not([data-col="title"]):not([data-col="target"]):not(.alist-col-check),
.alist-table td:not(.alist-ad):not(.alist-target):not(.alist-col-check) { min-width: max-content; }
.alist-table th[data-col="title"] { text-align: start; }
.alist-table td.alist-ad {
    white-space: normal;
    overflow: visible;
    text-overflow: unset;
    vertical-align: middle;
}
.alist-folder td.alist-ad {
    overflow: hidden;
}
.alist-table td.alist-target,
.alist-table th[data-col="target"] {
    white-space: normal;
    overflow: visible;
    text-overflow: unset;
    vertical-align: middle;
    text-align: center;
    min-width: 6.5rem;
    max-width: 8.5rem;
}
.alist-title {
    font-weight: 600;
    font-size: inherit;
    color: var(--text-primary);
    line-height: 1.3;
    overflow: visible;
    white-space: normal;
    overflow-wrap: anywhere;
}
.alist-link {
    display: block;
    margin-top: .15rem;
    font-size: .92em;
    color: var(--alist-link);
    text-decoration: none;
    overflow: visible;
    white-space: normal;
    overflow-wrap: anywhere;
}
.alist-link:hover { color: var(--alist-link-hover); text-decoration: underline; }

.alist-table th.alist-num,
.alist-table td.alist-num {
    text-align: right;
    font-variant-numeric: tabular-nums;
    overflow: hidden;
    text-overflow: clip;
}
/* Бюджет не прижимаем к правому краю: там цифра отрывается от слова.
   Отступ слева держит колонку отдельно от Spent, который выровнен вправо. */
.alist-table th[data-col="budget"],
.alist-table td[data-col="budget"] {
    text-align: start;
    padding-inline-start: 1rem;
}
.alist-table td.ad-balance-cell {
    text-align: start !important;
}
.alist-target {
    color: var(--text-secondary);
    line-height: 1.35;
    overflow-wrap: anywhere;
}
.alist-date { color: var(--text-secondary); }

/* CPM и бюджет — как остальные суммы, без плашки. */
.alist-table .ad-cell {
    border-bottom: 0;
    font-weight: 600;
}
.alist-day {
    display: inline-flex;
    flex-direction: column;
    align-items: flex-end;
    line-height: 1.15;
    vertical-align: middle;
}
.alist-day-spent {
    color: var(--text-secondary);
    font-size: .8em;
    font-weight: 600;
}
.alist-table td.alist-day-cell { white-space: normal; }
.alist-act {
    display: inline-flex;
    flex-direction: column;
    align-items: flex-end;
    line-height: 1.1;
    vertical-align: middle;
}
.alist-act-kind {
    color: var(--text-secondary);
    font-size: .68rem;
    font-weight: 500;
    line-height: 1.15;
    white-space: nowrap;
}
.alist-table td.alist-act-cell {
    white-space: normal;
    overflow: visible;
    text-overflow: unset;
}
.alist-table .ad-cpm-cell .ad-cell,
.alist-table .ad-balance-cell .ad-cell,
.alist-table .ad-day-cell .ad-cell {
    display: inline;
    padding: 0;
    margin: 0;
    border: 0;
    background: none;
    font: inherit;
    line-height: inherit;
    vertical-align: baseline;
    color: var(--alist-link);
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
}
.alist-table .ad-cpm-cell .ad-cell:hover,
.alist-table .ad-balance-cell .ad-cell:hover,
.alist-table .ad-day-cell .ad-cell:hover {
    color: var(--alist-link);
    text-decoration: none;
    border-bottom: 0;
}
.alist-table .ad-cell:focus-visible {
    outline: 0;
    box-shadow: 0 0 0 2px rgba(42, 171, 238, .28);
}

.alist-table td.ad-state,
.alist-table th[data-col="status"] {
    text-align: center;
}
.alist-table .ad-state .ad-cell {
    display: flex;
    width: 100%;
    max-width: 100%;
    padding: 0;
    border: 0;
    background: transparent;
    color: inherit;
    box-shadow: none;
}
.alist-table .ad-state .ad-cell:hover .ad-status {
    text-decoration: none;
    border-color: color-mix(in srgb, var(--ad-status-color) 68%, transparent);
    background: color-mix(in srgb, var(--ad-status-color) 18%, transparent);
}
.alist-table .ad-state .ad-cell:focus-visible .ad-status {
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--ad-status-color) 32%, transparent);
}

.alist-table .ad-status {
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    width: 100%;
    min-height: 1.85rem;
    padding: .28rem .4rem;
    border: 1px solid color-mix(in srgb, var(--ad-status-color) 42%, transparent);
    border-radius: .35rem;
    background: color-mix(in srgb, var(--ad-status-color) 10%, transparent);
    color: var(--ad-status-color);
    font-size: inherit;
    font-weight: 600;
    line-height: 1.2;
    text-align: center;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.alist-table .ad-status::before { display: none; }
.alist-table .ad-status--active   { --ad-status-color: #10b981; }
.alist-table .ad-status--review   { --ad-status-color: #2aabee; }
.alist-table .ad-status--paused   { --ad-status-color: #8b93a7; }
.alist-table .ad-status--idle     { --ad-status-color: #e09b2d; }
.alist-table .ad-status--declined { --ad-status-color: #e54d4d; }
.alist-table .ad-status--deleted  { --ad-status-color: #8b93a7; }
.alist-table .ad-status--unknown  { --ad-status-color: #8b93a7; }

.ad-status-menu {
    position: fixed;
    z-index: 1080;
    min-width: 8.75rem;
    padding: .3rem;
    border: 1px solid var(--border-color);
    border-radius: .5rem;
    background: var(--bg-card);
    box-shadow: 0 10px 28px rgba(0, 0, 0, .32);
}
.ad-status-menu-item {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    margin: 0;
    min-height: 1.85rem;
    padding: .35rem .7rem;
    border: 1px solid transparent;
    border-radius: .35rem;
    background: transparent;
    font: inherit;
    font-size: .85rem;
    font-weight: 600;
    line-height: 1.2;
    text-align: center;
    cursor: pointer;
}
.ad-status-menu-item + .ad-status-menu-item { margin-top: .25rem; }
.ad-status-menu-item[data-act="pause"] {
    color: #8b93a7;
    border-color: color-mix(in srgb, #8b93a7 42%, transparent);
    background: color-mix(in srgb, #8b93a7 10%, transparent);
}
.ad-status-menu-item[data-act="resume"] {
    color: #10b981;
    border-color: color-mix(in srgb, #10b981 42%, transparent);
    background: color-mix(in srgb, #10b981 10%, transparent);
}
.ad-status-menu-item[data-act="review"] {
    color: #2aabee;
    border-color: color-mix(in srgb, #2aabee 42%, transparent);
    background: color-mix(in srgb, #2aabee 10%, transparent);
}
.ad-status-menu-item:hover,
.ad-status-menu-item:focus-visible {
    filter: brightness(1.08);
    outline: 0;
}

[dir="rtl"] .alist-ad,
[dir="rtl"] .alist-link { direction: ltr; text-align: right; }
[dir="rtl"] .alist-num { text-align: left; }
[dir="rtl"] .alist-caret { margin-left: 0; margin-right: .22rem; }
[dir="rtl"] .alist-cols { margin-left: 0; margin-right: auto; }
[dir="rtl"] .alist-tools { margin-left: 0; margin-right: 0; }
[dir="rtl"] .alist-search > .bi-search { left: auto; right: .65rem; }
[dir="rtl"] .alist-search .form-control { padding: 0 2rem 0 .7rem; }

button.alist-title {
    display: block;
    width: 100%;
    max-width: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    background: none;
    font: inherit;
    font-weight: 600;
    color: var(--text-primary);
    text-align: inherit;
    line-height: 1.3;
    cursor: pointer;
    overflow: visible;
    white-space: normal;
    overflow-wrap: anywhere;
}
button.alist-title:hover {
    color: var(--text-primary);
    text-decoration: underline;
}
.alist-name {
    display: flex;
    align-items: flex-start;
    gap: .2rem;
    min-width: 0;
    max-width: 100%;
}
.alist-react {
    flex: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.15rem;
    height: 1.15rem;
    margin-top: .08rem;
    font-size: 15px;
    line-height: 1;
}
.alist-react-menu {
    position: fixed;
    z-index: 40;
    display: flex;
    flex-direction: row;
    gap: 2px;
    padding: 3px;
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .35);
}
.alist-react-menu[hidden] { display: none; }
.alist-react-menu button {
    width: 28px;
    height: 26px;
    padding: 0;
    border: 0;
    border-radius: 6px;
    background: transparent;
    font-size: 16px;
    line-height: 1;
    cursor: pointer;
}
.alist-react-menu button:hover,
.alist-react-menu button.is-on { background: rgba(42, 171, 238, .16); }
.alist-auto {
    flex: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.15rem;
    height: 1.15rem;
    margin-top: .08rem;
    color: var(--accent-color);
    font-size: .95rem;
    line-height: 1;
    cursor: default;
}
.alist-folder-line > .alist-auto { margin-top: 0; }
.alist-auto.is-off { color: var(--text-secondary); }
.alist-auto > i { pointer-events: none; }
.alist-auto-tip {
    position: fixed;
    z-index: 50;
    max-width: min(24rem, calc(100vw - 16px));
    padding: .55rem .7rem;
    border: 1px solid var(--border-color);
    border-radius: .55rem;
    background: var(--bg-card);
    box-shadow: var(--shadow-md);
    color: var(--text-primary);
    font-size: .82rem;
    line-height: 1.45;
}
.alist-auto-tip[hidden] { display: none !important; }
.alist-auto-go {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    margin-top: .35rem;
    color: var(--accent-color);
    font-size: .78rem;
    font-weight: 650;
    text-decoration: none;
}
.alist-auto-go:hover { color: var(--accent-hover); text-decoration: underline; }
.alist-auto-one + .alist-auto-one {
    margin-top: .45rem;
    padding-top: .45rem;
    border-top: 1px solid var(--border-color);
}
.alist-auto-name { margin-bottom: .1rem; font-weight: 700; }
.alist-auto-off { color: var(--text-secondary); font-size: .72rem; font-weight: 650; }
.alist-auto-one.is-off .alist-auto-say { color: var(--text-secondary); }
.alist-name > .alist-title,
.alist-name > button.alist-title {
    flex: 1 1 auto;
    width: auto;
    min-width: 0;
}
.alist-rename {
    flex: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.35rem;
    height: 1.35rem;
    margin-top: .05rem;
    padding: 0;
    border: 0;
    border-radius: .3rem;
    background: transparent;
    color: var(--text-secondary);
    font-size: .8rem;
    line-height: 1;
    cursor: pointer;
    opacity: .45;
}
.alist-rename > i { pointer-events: none; }
tr:hover .alist-rename,
.alist-rename:hover,
.alist-rename:focus-visible {
    opacity: 1;
    color: var(--text-primary);
}
.alist-rename:focus-visible {
    outline: 0;
    box-shadow: 0 0 0 2px rgba(42, 171, 238, .28);
}
.alist-rename-input {
    flex: 1 1 auto;
    min-width: 0;
    width: 100%;
    height: 1.7rem;
    margin: 0;
    padding: 0 .4rem;
    border: 1px solid var(--accent-color);
    border-radius: .35rem;
    background: var(--input-bg);
    color: var(--text-primary);
    font: inherit;
    font-weight: 600;
    line-height: 1.3;
}
button.alist-title:focus-visible {
    outline: 0;
    box-shadow: 0 0 0 2px rgba(42, 171, 238, .28);
    border-radius: .2rem;
}

/* Карточка объявления — как Info в кабинете Telegram: две колонки, пост или пузырь. */
#adCard.modal { z-index: 1055; }
#adModal.modal { z-index: 1080; }
#adModal.ad-modal--sched .modal-dialog { max-width: 46rem; }
#adModal .ad-bulk-when { margin-bottom: .85rem; }
#adModal .ad-bulk-clear-lab {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    margin: 0;
    font-size: .85rem;
    font-weight: 500;
    white-space: nowrap;
    cursor: pointer;
}
#adBulkSchedViewerWrap[hidden] { display: none !important; }
#adPanelSched.is-off .ad-card-sched-grid,
#adPanelSched.is-off .ad-card-sched-sum,
#adPanelSched.is-off .ad-card-sched-pick,
#adPanelSched.is-off #adBulkSchedViewerWrap {
    opacity: .45;
    pointer-events: none;
}
#adPanelSched .ad-card-sched-head { margin-bottom: .35rem; }
#adPanelSched .ad-card-sched-head .ad-card-label { margin: 0; font-weight: 500; }
#adCardConfirm.modal,
#adCardList.modal { z-index: 1090; }
/* Блюр на самой странице, не backdrop-filter: иначе при скролле карточки оверлей мерцает.
   Слой страницы держим ниже окна: у filter свой контекст наложения, и без явного z-index
   размытая страница в части браузеров перекрывает диалог — экран уже мутный, а окна нет. */
body.modal-open {
    overscroll-behavior: none;
}
body.modal-open .dashboard-header,
body.modal-open .alist-page,
body.modal-open > .container,
body.modal-open .site-footer {
    position: relative;
    z-index: 0;
    isolation: isolate;
    filter: blur(5px);
    pointer-events: none;
}
body.modal-open .modal {
    z-index: 1055;
}
.modal-backdrop {
    background-color: rgba(10, 14, 24, .28);
}
.modal-backdrop.show { opacity: 1; }
#adCard .modal-content { overscroll-behavior: contain; }
#adCardConfirm .modal-dialog { max-width: 24rem; }
#adCardConfirm .modal-body {
    font-size: .9rem;
    line-height: 1.45;
    color: var(--text-primary);
}
#adCardList .modal-dialog { max-width: 32rem; }
#adCardList .modal-body {
    font-size: .9rem;
    line-height: 1.45;
    color: var(--text-primary);
}
#adCardList .ad-modal-sub {
    margin: 0 0 .55rem;
    color: var(--text-secondary);
}
#adCardList textarea {
    min-height: 14rem;
    font-size: .85rem;
    line-height: 1.45;
    resize: vertical;
}
#adCardList .ad-card-field-err,
#adCardList .ad-card-hint {
    margin: .5rem 0 0;
}
.ad-card-list-fails {
    margin-top: .65rem;
    padding: .65rem .75rem .7rem;
    border-radius: 8px;
    background: rgba(229, 77, 77, .1);
    border: 1px solid rgba(229, 77, 77, .28);
}
.ad-card-list-fails[hidden] { display: none !important; }
.ad-card-list-fails-head {
    margin-bottom: .5rem;
    font-size: .82rem;
    font-weight: 650;
    color: #f0a0a0;
}
.ad-card-list-fails-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: .5rem;
}
.ad-card-list-fails-name {
    font-size: .84rem;
    font-weight: 700;
    color: var(--text-primary);
}
.ad-card-list-fails-why {
    margin-top: .12rem;
    font-size: .78rem;
    font-weight: 500;
    line-height: 1.3;
    color: var(--text-secondary);
}

.ad-card-dialog { max-width: 900px; }
.ad-card {
    overflow: hidden;
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    color: var(--text-primary);
    --ad-field-bg: #10182e;
    --ad-field-line: #243656;
    --ad-radius: 6px;
    --ad-field-focus: var(--accent-color);
    --ad-col-form: 350px;
    --ad-col-preview: 430px;
}
[data-bs-theme="light"] .ad-card {
    --ad-field-bg: #eef2f8;
    --ad-field-line: #d9d9d9;
}
.ad-card-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .9rem;
    padding: 1rem 1.4rem;
}
.ad-card-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: .2rem;
}
.ad-card-tab {
    border: 0;
    background: transparent;
    color: var(--accent-color);
    font-size: .9rem;
    font-weight: 600;
    line-height: 1.4;
    padding: .42rem .95rem;
    border-radius: 8px;
}
.ad-card-tab:hover { color: var(--accent-hover); }
.ad-card-tab.is-on {
    background: var(--accent-color);
    color: #fff;
}
.ad-card-top-right {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    margin-left: auto;
}
.ad-card-top .btn-close { margin: 0; }
.ad-card-delete {
    border: 0;
    background: none;
    color: var(--text-secondary);
    font-size: .85rem;
    padding: 0;
}
.ad-card-delete:hover { color: #e54d4d; }
.ad-card-body { padding: .7rem 1.25rem 1.35rem; }
.ad-card [hidden] { display: none !important; }
.ad-card-load,
.ad-card-err {
    padding: 2.5rem 1rem;
    text-align: center;
    color: var(--text-secondary);
}
.ad-card-err { color: #e54d4d; }
.ad-card-reject {
    margin: 4px 0 18px;
    padding: 0 0 0 14px;
    border-left: 3px solid #e54d4d;
    max-width: calc(var(--ad-col-form) + 66px + var(--ad-col-preview));
    font-size: 14px;
    line-height: 20px;
    color: var(--text-primary);
}
.ad-card-reject-title {
    margin: 0 0 6px;
    color: #e54d4d;
    font-size: 15px;
    font-weight: 700;
    line-height: 20px;
}
.ad-card-reject-name {
    margin: 0 0 4px;
    font-weight: 700;
}
.ad-card-reject-body { margin: 0; }
.ad-card-reject-body + .ad-card-reject-name { margin-top: 10px; }
#adCard.is-create .ad-card-reject { display: none !important; }

.ad-card-grid {
    display: grid;
    grid-template-columns: var(--ad-col-form) var(--ad-col-preview);
    column-gap: 66px;
    row-gap: 16px;
    justify-content: start;
}
@media (max-width: 1080px) {
    .ad-card-grid { grid-template-columns: minmax(0, var(--ad-col-form)); }
}

.ad-card-label {
    display: flex;
    align-items: center;
    margin: 16px 13px 5px;
    font-size: 14px;
    line-height: 19px;
    font-weight: 600;
    color: var(--text-primary);
    -webkit-font-smoothing: antialiased;
}
.ad-card-col > .ad-card-label:first-child,
.ad-card-col > .ad-card-label-row:first-child { margin-top: 0; }
.ad-card-label-row {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: .5rem;
    margin: 16px 13px 5px;
}
.ad-card-label-row .ad-card-label { margin: 0; }
.ad-card-similar {
    border: 0;
    background: none;
    padding: 0;
    color: var(--accent-color, #35a3f6);
    font: inherit;
    font-size: 13px;
    font-weight: 600;
    line-height: 18px;
    cursor: pointer;
    white-space: nowrap;
}
.ad-card-similar:hover { text-decoration: underline; }
#adCard.is-create .ad-card-similar { display: none; }
.ad-card-add-list {
    display: none;
    border: 0;
    background: none;
    padding: 0;
    color: var(--accent-color, #35a3f6);
    font: inherit;
    font-size: 13px;
    font-weight: 600;
    line-height: 18px;
    cursor: pointer;
    white-space: nowrap;
}
.ad-card-add-list:hover { text-decoration: underline; }
.ad-card-users {
    display: inline-block;
    margin: 6px 0 0;
    padding: 0;
    border: 0;
    background: none;
    color: var(--accent-color, #35a3f6);
    font: inherit;
    font-size: 13px;
    font-weight: 600;
    line-height: 18px;
    cursor: pointer;
    text-align: left;
}
.ad-card-users:hover { text-decoration: underline; }
.ad-card-users[hidden] { display: none !important; }
#adCardUsersText {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 13px;
    line-height: 1.45;
    resize: vertical;
}
#adCard.is-create .ad-card-add-list { display: inline; }
.ad-card-side {
    font-size: 13px;
    font-weight: 600;
    color: var(--accent-color);
}

.ad-card-box {
    display: block;
    width: 100%;
    box-sizing: border-box;
    margin: 0;
    padding: 11px 13px;
    border: none;
    border-radius: var(--ad-radius, 6px);
    background: var(--ad-field-bg, var(--input-bg));
    color: var(--text-primary);
    font: inherit;
    font-size: 14px;
    line-height: 18px;
    text-align: left;
    height: auto;
    box-shadow: inset 0 0 0 1px var(--ad-field-line, #d9d9d9);
    transition: box-shadow .2s ease;
}
.ad-card-box:focus {
    outline: 0;
    box-shadow: inset 0 0 0 2px var(--ad-field-focus, #35a3f6);
}
.ad-card-box.is-invalid,
.ad-card-box.is-invalid:focus {
    box-shadow: inset 0 0 0 2px #e54d4d;
}
.ad-card-side.is-bad { color: #e54d4d; }
.ad-card-box[readonly] { color: var(--text-primary); }
.ad-card-amount { position: relative; }
.ad-card-amount .ad-card-box { padding-right: 13px; }
.ad-card-amount.has-cur .ad-card-box { padding-left: 2.15rem; }
.ad-card-amount-prefix {
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
    z-index: 1;
}
.ad-card-amount-prefix .cur-icon { width: 15px; height: 17px; }
.ad-card-amount.has-eur .ad-card-box,
.ad-card-amount.has-extra .ad-card-box { padding-right: 7.5rem; }
.ad-card-amount.has-eur.has-extra .ad-card-box { padding-right: 10.5rem; }
.ad-card-amount-extra {
    display: flex;
    align-items: center;
    gap: 8px;
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    padding: 0 10px 0 0;
    pointer-events: none;
}
.ad-card-cpm-eur {
    color: var(--text-secondary);
    font-size: 14px;
    line-height: 18px;
    white-space: nowrap;
}
.ad-card-cpm-extra {
    font-size: 12px;
    line-height: 16px;
    font-weight: 500;
    color: #e8a04a;
    background: rgba(232, 160, 74, .18);
    border-radius: 4px;
    padding: 2px 7px;
    white-space: nowrap;
}
.ad-card-box--text {
    min-height: 76px;
    overflow: hidden;
    resize: none;
    white-space: pre-wrap;
    word-break: break-word;
    field-sizing: content;
    scrollbar-width: none;
}
.ad-card-box--text::-webkit-scrollbar { display: none; }

.ad-card-url {
    display: block;
    position: relative;
    height: 40px;
    min-height: 40px;
    max-height: 40px;
    padding: 11px 42px 11px 13px;
    overflow: hidden;
}
.ad-card-url-input {
    display: block;
    width: 100%;
    height: 18px;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    line-height: 18px;
    outline: none;
}
.ad-card-box.ad-card-url:focus-within {
    box-shadow: inset 0 0 0 2px var(--ad-field-focus, #35a3f6);
}
.ad-card-box.ad-card-url.is-invalid,
.ad-card-box.ad-card-url.is-invalid:focus-within {
    box-shadow: inset 0 0 0 2px #e54d4d;
}
select.ad-card-box.ad-card-select {
    appearance: none;
    padding-right: 2rem;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%2394a3b8' d='M1.4.6 6 5.2 10.6.6 12 2 6 8 0 2z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    cursor: pointer;
}
.ad-card-url-pic {
    position: absolute;
    right: 10px;
    top: 50%;
    width: 22px;
    height: 22px;
    margin: 0;
    border-radius: 11px;
    object-fit: cover;
    transform: translateY(-50%);
    pointer-events: none;
}
.ad-card-site-pic {
    position: absolute;
    right: 6px;
    top: 50%;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: #2ea6ff;
    color: #fff;
    transform: translateY(-50%);
    cursor: pointer;
    overflow: hidden;
}
.ad-card-site-pic[hidden] { display: none !important; }
.ad-card-site-pic:hover { background: #1b97f3; }
.ad-card-site-pic.is-busy { opacity: .55; pointer-events: none; }
.ad-card-site-pic img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.ad-card-site-pic img[hidden],
.ad-card-site-pic-icon[hidden] { display: none !important; }

.ad-card-creative {
    position: relative;
    margin: 0 0 8px;
    border-radius: 8px;
    overflow: hidden;
    background: var(--ad-field-bg, var(--input-bg));
}
.ad-card-creative img,
.ad-card-creative video {
    display: block;
    width: 100%;
    height: auto;
    max-height: 220px;
    object-fit: contain;
    object-position: center;
}
.ad-card-creative-del {
    position: absolute;
    top: 8px;
    right: 8px;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    padding: 0;
    border: 0;
    border-radius: 8px;
    background: rgba(0, 0, 0, .55);
    color: #fff;
    cursor: pointer;
}
.ad-card-creative-del:hover {
    background: #e53935;
    color: #fff;
}
.ad-card-creative-del i { font-size: 16px; line-height: 1; }
.ad-card-upload {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    margin: 0;
    padding: 11px 16px;
    border: none;
    border-radius: 8px;
    background: var(--accent-color);
    color: #fff;
    font-size: 15px;
    font-weight: 600;
    line-height: 20px;
    cursor: pointer;
}
.ad-card-upload:hover { background: var(--accent-hover); color: #fff; }
.ad-card-upload:disabled { opacity: .55; cursor: default; }
.ad-card-upload.is-busy,
.ad-card-upload.is-busy:disabled {
    opacity: 1;
    cursor: wait;
}
.ad-card-upload.is-busy:hover { background: var(--accent-color); color: #fff; }
.ad-card-upload-icon { font-size: 18px; line-height: 1; }
.ad-card-upload-spin {
    display: none;
    width: 18px;
    height: 18px;
    border: 2px solid rgba(255, 255, 255, .35);
    border-top-color: #fff;
    border-radius: 50%;
    animation: ad-card-spin .7s linear infinite;
    flex: none;
}
.ad-card-upload.is-busy .ad-card-upload-icon { display: none; }
.ad-card-upload.is-busy .ad-card-upload-spin { display: block; }
@keyframes ad-card-spin { to { transform: rotate(360deg); } }

.ad-card-pills {
    display: flex;
    gap: 8px;
}
.ad-card-pill {
    flex: 1 1 0;
    min-width: 0;
    text-align: center;
    padding: 11px 10px;
    border: none;
    border-radius: var(--ad-radius, 6px);
    background: var(--ad-field-bg, var(--input-bg));
    color: var(--text-primary);
    font: inherit;
    font-weight: 600;
    font-size: 14px;
    line-height: 18px;
    cursor: pointer;
    box-shadow: inset 0 0 0 1px var(--ad-field-line, #d9d9d9);
    transition: background .12s, color .12s, box-shadow .12s;
}
.ad-card-pill:hover:not(:disabled):not(.is-on) {
    box-shadow: inset 0 0 0 1px var(--ad-field-focus, #35a3f6);
}
.ad-card-pill:focus-visible {
    outline: 0;
    box-shadow: inset 0 0 0 2px var(--ad-field-focus, #35a3f6);
}
.ad-card-pill:disabled { cursor: default; opacity: 1; }
.ad-card-pill.is-on {
    background: var(--accent-color);
    color: #fff;
    box-shadow: inset 0 0 0 1px var(--accent-color);
}

.ad-card-status {
    display: flex;
    flex-direction: column;
    gap: 1px;
    margin: 8px 0 0 13px;
}
.ad-card-radio {
    display: flex;
    align-items: center;
    gap: 11px;
    margin: 0;
    padding: 5px 0;
    font-size: 14px;
    font-weight: 400;
    line-height: 20px;
    color: var(--text-primary);
    cursor: pointer;
}
.ad-card-radio:has(input:disabled) { cursor: default; }
.ad-card-radio input {
    appearance: none;
    -webkit-appearance: none;
    flex: none;
    width: 20px;
    height: 20px;
    margin: 0;
    border: 2px solid #b3b3b3;
    border-radius: 10px;
    background: #fff;
    cursor: pointer;
    box-shadow: none;
}
.ad-card-radio input:checked {
    border-color: var(--accent-color);
    background: #fff;
    box-shadow: inset 0 0 0 4px #fff, inset 0 0 0 9px var(--accent-color);
}
.ad-card-radio input:disabled { cursor: default; }
[data-bs-theme="dark"] .ad-card-radio input {
    background: transparent;
    border-color: #8794a1;
}
[data-bs-theme="dark"] .ad-card-radio input:checked {
    background: var(--bg-card, var(--bs-body-bg));
    border-color: var(--accent-color);
    box-shadow: inset 0 0 0 4px var(--bg-card, var(--bs-body-bg)), inset 0 0 0 9px var(--accent-color);
}

.ad-card-check {
    display: flex;
    align-items: center;
    gap: .45rem;
    margin: .7rem 0 .15rem;
    font-size: .85rem;
    font-weight: 500;
}
.ad-card-hint {
    margin-top: 0;
    padding: 5px 5px 0 13px;
    font-size: 12px;
    line-height: 17px;
    color: #808080;
}
.ad-card-hint-link {
    color: var(--accent-color);
    text-decoration: none;
}
.ad-card-hint-link:hover { text-decoration: underline; }
.ad-card-msg {
    margin: 1.15rem 0 0;
    max-width: calc(var(--ad-col-form) + 66px + var(--ad-col-preview));
    font-size: .82rem;
    line-height: 1.4;
    color: #10b981;
}
.ad-card-msg.is-bad,
.ad-card-media-err {
    margin-top: 1.15rem;
    padding: 10px 12px;
    border-radius: 8px;
    background: rgba(229, 77, 77, .16);
    white-space: pre-wrap;
    border: 1px solid rgba(229, 77, 77, .45);
    color: #ff6b6b;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.35;
}
.ad-card-save-row {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 1rem;
    margin-top: .75rem;
    padding-top: .75rem;
    max-width: calc(var(--ad-col-form) + 66px + var(--ad-col-preview));
}
.ad-card-save-note {
    margin: 0 auto 0 0;
    flex: 1;
    min-width: 0;
    font-size: .86rem;
    line-height: 1.4;
    color: var(--text-secondary);
}
.ad-card-save {
    flex: none;
    border: 0;
    border-radius: var(--ad-radius, 6px);
    padding: 11px 22px;
    background: var(--accent-color);
    color: #fff;
    font: inherit;
    font-size: 14px;
    font-weight: 600;
    line-height: 18px;
    white-space: nowrap;
    cursor: pointer;
}
.ad-card-save:hover { background: var(--accent-hover); }
.ad-card-save:disabled { opacity: .55; cursor: default; }
.ad-card-save--ghost {
    background: transparent;
    color: var(--accent-color);
    box-shadow: inset 0 0 0 1px var(--accent-color);
}
.ad-card-save--ghost:hover {
    background: var(--accent-color);
    color: #fff;
}
.ad-card-progress,
.ad-card-split-progress {
    display: none;
    max-width: calc(var(--ad-col-form) + 66px + var(--ad-col-preview));
    margin: 1rem 0 0;
    padding: .9rem 1rem 1rem;
    border-radius: 10px;
    background: var(--ad-field-bg, var(--input-bg));
    box-shadow: inset 0 0 0 2px var(--accent-color);
}
.ad-card-progress { max-width: none; }
#adCardList .ad-card-progress { margin: .75rem 0 0; }
#adCardList.is-busy textarea {
    opacity: .55;
    pointer-events: none;
}
.ad-card-progress:not([hidden]),
.ad-card-split-progress:not([hidden]) { display: block; }
.ad-card-split-progress-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    margin-bottom: .6rem;
}
.ad-card-split-progress-lab {
    font-size: .95rem;
    font-weight: 700;
    line-height: 1.3;
    color: var(--text-primary);
}
.ad-card-split-progress-spin {
    flex: none;
    width: 1rem;
    height: 1rem;
    border: 2px solid var(--ad-field-line, var(--border-color));
    border-top-color: var(--accent-color);
    border-radius: 50%;
    animation: ad-card-spin .7s linear infinite;
}
.ad-card-split-progress-track {
    height: .6rem;
    border-radius: 99px;
    background: var(--ad-field-line, var(--border-color));
    overflow: hidden;
}
.ad-card-split-progress-fill {
    position: relative;
    height: 100%;
    width: 0;
    border-radius: inherit;
    background: var(--accent-color);
    transition: width .35s ease;
    overflow: hidden;
}
.ad-card-split-progress-fill::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .45), transparent);
    animation: ad-card-split-shimmer 1.1s linear infinite;
}
@keyframes ad-card-split-shimmer {
    from { transform: translateX(-120%); }
    to { transform: translateX(120%); }
}
.ad-card-create-dbg {
    display: block;
    margin: .55rem 0 0;
    max-height: 22rem;
    overflow: auto;
    padding: .55rem .7rem;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 11px;
    line-height: 1.4;
    white-space: pre-wrap;
    word-break: break-word;
    color: #92400e;
    background: #fffbeb;
    border: 1px dashed #f59e0b;
    border-radius: .4rem;
}
[data-bs-theme="dark"] .ad-card-create-dbg {
    color: #fde68a;
    background: #1c1508;
    border-color: #b45309;
}
.ad-card-split-panel.is-creating {
    opacity: .55;
    pointer-events: none;
}
.ad-card-split-panel {
    display: none;
    max-width: calc(var(--ad-col-form) + 66px + var(--ad-col-preview));
    margin-top: .85rem;
    padding: .8rem .95rem .85rem;
    border-radius: 10px;
    background: var(--ad-field-bg, var(--input-bg));
    box-shadow: inset 0 0 0 1px var(--ad-field-line, var(--border-color));
}
#adCard.is-create .ad-card-split-panel:not([hidden]) { display: block; }
.ad-card-split-check {
    display: flex;
    align-items: flex-start;
    gap: .5rem;
    margin: 0;
    font-size: .88rem;
    font-weight: 650;
    line-height: 1.35;
    color: var(--text-primary);
    cursor: pointer;
}
.ad-card-split-check .form-check-input { margin-top: .18rem; flex: none; }
.ad-card-split {
    display: none;
    flex-direction: column;
    align-items: stretch;
    gap: .55rem;
    margin-top: .75rem;
    padding-top: .75rem;
    box-shadow: inset 0 1px 0 var(--ad-field-line, var(--border-color));
}
#adCard.is-create .ad-card-split:not([hidden]) { display: flex; }
.ad-card-split-cap {
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--text-secondary);
}
.ad-card-split-row {
    display: grid;
    grid-template-columns: minmax(10.5rem, 13.25rem) minmax(0, 1fr);
    gap: .45rem;
}
.ad-card-split-start-row {
    grid-template-columns: 6.75rem minmax(0, 1fr);
    align-items: center;
}
#adCardSplitStartFields {
    display: flex;
    flex-direction: column;
    gap: .45rem;
    min-width: 0;
}
.ad-card-split-sel--lab {
    display: flex;
    align-items: center;
    pointer-events: none;
    color: var(--text-secondary);
}
.ad-card-split-nfrom {
    display: flex;
    align-items: center;
    gap: .45rem;
    min-width: 0;
}
.ad-card-split-from-lab {
    margin: 0;
    font-size: .78rem;
    font-weight: 650;
    color: var(--text-secondary);
    white-space: nowrap;
}
.ad-card-split-from {
    width: 4.5rem;
    flex: none;
    text-align: center;
    padding: 0 .35rem;
    -moz-appearance: textfield;
}
.ad-card-split-from::-webkit-outer-spin-button,
.ad-card-split-from::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
@media (max-width: 640px) {
    .ad-card-split-row { grid-template-columns: 1fr; }
    .ad-card-split-start-row { grid-template-columns: 1fr; }
    .ad-card-split-start-row .ad-card-split-sel--lab { display: none; }
}
.ad-card-split-sel,
.ad-card-split-tpl {
    width: 100%;
    min-width: 0;
    height: 2.15rem;
    margin: 0;
    padding: 0 .7rem;
    border: 0;
    border-radius: var(--ad-radius, 6px);
    background: var(--bg-card);
    color: var(--text-primary);
    box-shadow: inset 0 0 0 1px var(--ad-field-line, #d9d9d9);
    font: inherit;
    font-size: 13px;
}
.ad-card-split-nfrom .ad-card-split-from {
    width: 4.5rem;
    flex: none;
}
.ad-card-split-tokens {
    display: flex;
    flex-wrap: wrap;
    gap: .3rem;
}
.ad-card-split-tokens button {
    border: 0;
    border-radius: 999px;
    padding: .18rem .6rem;
    background: var(--bg-card);
    box-shadow: inset 0 0 0 1px var(--ad-field-line, #d9d9d9);
    color: var(--accent-color);
    font: inherit;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
}
.ad-card-split-tokens button:hover { background: var(--alist-hover); }
.ad-card-split-preview-box {
    display: flex;
    flex-direction: column;
    gap: .2rem;
}
.ad-card-split-preview {
    font-size: .9rem;
    font-weight: 650;
    line-height: 1.35;
    color: var(--text-primary);
    overflow-wrap: anywhere;
}
.ad-card-split-hint {
    margin: 0;
    font-size: .75rem;
    line-height: 1.35;
    color: var(--text-secondary);
}
.ad-card-split-start {
    display: flex;
    flex-direction: column;
    gap: .45rem;
    padding-top: .15rem;
    border-top: 1px solid var(--ad-field-line, #d9d9d9);
}
.ad-card-split-start[hidden],
.ad-card-split-tokens[hidden],
.ad-card-split-tpl[hidden],
#adCardSplitStartFields[hidden],
#adCardUrlHint[hidden],
.ad-card-split-preview-url[hidden] { display: none !important; }
.ad-card-split-start-check {
    margin: 0;
    font-size: .82rem;
    font-weight: 500;
}
#adCardUrlHint {
    margin: 0 0 .1rem;
}
.ad-card-split-preview-url {
    margin-top: .2rem;
    font-weight: 500;
    color: var(--text-secondary);
    overflow-wrap: anywhere;
}

.ad-card-preview {
    position: relative;
    display: flex;
    flex-direction: column;
    min-height: 180px;
    padding: 12px 10px 10px;
    border-radius: var(--ad-radius, 6px);
    background: #6fa786 url('img/AdPreviewBackground.jpg') no-repeat center;
    background-size: cover;
    overflow: hidden;
}
.ad-card-preview.is-search {
    min-height: 0;
    justify-content: flex-start;
    background: #fff;
    padding: 0;
    border: 1px solid #e4e6ea;
    border-radius: 12px;
}
.ad-card-preview.is-post {
    min-height: 180px;
    padding: 10px 6px 10px 10px;
}
.ad-card-preview.is-bots {
    min-height: 235px;
    padding: 0;
    background-color: #6fa786;
    background-image: url('data:image/svg+xml,%3Csvg%20height%3D%22234%22%20viewBox%3D%220%200%20420%20234%22%20width%3D%22420%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cg%20transform%3D%22translate%289%20162.1619%29%22%3E%3Cpath%20d%3D%22m28.16%200c-11.96%200-21.66%209.66-21.66%2021.57v14.7%2010.78c0%206.3-2.47%208.92-5.37%2010.01%200%200-2.55.78%200%20.78h1.28c5.05%200%208.69-1.72%2012.37-4.61%203.69%202.89%208.33%204.61%2013.38%204.61h208.37c11.96%200%2021.66-9.66%2021.66-21.57v-14.7c0-11.91-9.7-21.57-21.66-21.57z%22%20fill%3D%22%23fff%22%20fill-opacity%3D%22.86%22%2F%3E%3Cg%20fill%3D%22%2373856c%22%20fill-opacity%3D%22.17%22%3E%3Crect%20height%3D%227%22%20rx%3D%223.5%22%20width%3D%22218%22%20x%3D%2223%22%20y%3D%2216.838086%22%2F%3E%3Cpath%20d%3D%22m26.5%2035.84h120.61c1.93%200%203.5%201.57%203.5%203.5s-1.57%203.5-3.5%203.5h-120.61c-1.93%200-3.5-1.57-3.5-3.5z%22%2F%3E%3Cpath%20d%3D%22m163.15%2035.84h55.74c1.93%200%203.5%201.57%203.5%203.5s-1.57%203.5-3.5%203.5h-55.74c-1.93%200-3.5-1.57-3.5-3.5s1.57-3.5%203.5-3.5z%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cpath%20d%3D%22m28.16%200c-11.96%200-21.66%209.66-21.66%2021.57v12.61c0%206.29-2.47%208.91-5.37%2010%200%200-2.55.78%200%20.78h1.28c5.05%200%208.69-1.72%2012.37-4.61%203.69%202.89%208.33%204.61%2013.38%204.61h179.94c11.96%200%2021.66-9.66%2021.66-21.57v-1.82c0-11.91-9.7-21.57-21.66-21.57z%22%20fill%3D%22%23d5f6cc%22%20transform%3D%22matrix%28-1%200%200%201%20411%20104.1619%29%22%2F%3E%3Cg%20fill%3D%22%23228000%22%20fill-opacity%3D%22.18%22%3E%3Cpath%20d%3D%22m18.26%2018.84h116.42c1.93%200%203.5%201.57%203.5%203.5s-1.57%203.5-3.5%203.5h-116.42c-1.93%200-3.5-1.57-3.5-3.5s1.57-3.5%203.5-3.5z%22%20transform%3D%22matrix%28-1%200%200%201%20334.1816%20104.1619%29%22%2F%3E%3Cpath%20d%3D%22m150.26%2018.84h52c1.93%200%203.5%201.57%203.5%203.5s-1.57%203.5-3.5%203.5h-52c-1.93%200-3.5-1.57-3.5-3.5s1.57-3.5%203.5-3.5z%22%20transform%3D%22matrix%28-1%200%200%201%20533.7598%20104.1619%29%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E'), url('img/AdPreviewBackground.jpg');
    background-position: center bottom, center;
    background-size: contain, cover;
}
.ad-card-preview.is-video {
    min-height: 145px;
    padding: 0;
    background: url('img/AdPreviewBackgroundVideo.jpg') no-repeat center;
    background-size: cover;
}
.ad-card-preview.is-video::before,
.ad-card-preview.is-video::after {
    content: '';
    position: absolute;
    left: 10px;
    right: 10px;
    bottom: 10px;
    z-index: 2;
    height: 3px;
    border-radius: 3px;
    background: rgba(255, 255, 255, .16);
    pointer-events: none;
}
.ad-card-preview.is-video::after {
    right: auto;
    width: 60%;
    background: rgba(255, 255, 255, .86);
}
.ad-card-video-prev {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1;
    padding: 20px;
    text-align: center;
}
.ad-card-video-banner {
    display: inline-block;
    position: relative;
    box-sizing: border-box;
    min-width: 70%;
    max-width: 100%;
    padding: 11px 20px;
    overflow: hidden;
    border-radius: 12px;
    background: #343d43;
    color: #fff;
    font-size: 13px;
    line-height: 17px;
    text-align: left;
}
.ad-card-preview.has-pic .ad-card-video-banner { padding-left: 60px; }
.ad-card-video-pic {
    position: absolute;
    left: 15px;
    top: 0;
    bottom: 0;
    width: 32px;
    height: 32px;
    margin: auto 0;
    border-radius: 16px;
    object-fit: cover;
}
.ad-card-video-head {
    display: flex;
    align-items: flex-start;
    white-space: nowrap;
    font-weight: 500;
    line-height: 16px;
    color: #fff;
}
.ad-card-video-head span:first-child {
    flex-shrink: 1;
    min-width: 0;
    margin-right: 4px;
    overflow: hidden;
    text-overflow: ellipsis;
    font-size: 13px;
    font-weight: 500;
    color: #fff;
}
.ad-card-video-ad {
    flex: none;
    padding: 1px 6px;
    border-radius: 10px;
    background: rgba(83, 183, 255, .13);
    color: #57b9ff;
    font-size: 11px;
    font-weight: 400;
    line-height: 14px;
}
.ad-card-video-text {
    margin-top: 1px;
    font-size: 13px;
    line-height: 17px;
    color: #fff;
    overflow: hidden;
}
.ad-card-video-text .ad-card-emoji,
.ad-card-video-text .ad-card-emoji-ph {
    width: 14px;
    height: 14px;
    vertical-align: -3px;
}
.ad-card-search-prev {
    width: 100%;
    height: 100%;
    overflow: hidden;
    background: #fff;
}
.ad-card-search-bar {
    display: flex;
    align-items: center;
    gap: 10px;
    height: 42px;
    padding: 0 14px;
    color: #8e8e93;
}
.ad-card-search-bar > .bi-search {
    font-size: 16px;
    color: #c7c7cc;
}
.ad-card-search-q {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 16px;
    font-weight: 400;
    line-height: 1.2;
    color: #1c1c1e;
}
.ad-card-search-nav {
    display: flex;
    align-items: center;
    gap: 14px;
    color: #c7c7cc;
    font-size: 15px;
}
.ad-card-search-label {
    padding: 7px 14px 6px;
    background: #f2f2f2;
    color: #8e8e93;
    font-size: 13px;
    font-weight: 400;
    line-height: 1.2;
}
.ad-card-search-row {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 56px;
    padding: 8px 12px;
    border-bottom: 1px solid #f0f0f0;
}
.ad-card-search-row:last-child { border-bottom: 0; }
.ad-card-search-ava,
.ad-card-search-ava-ph {
    flex: none;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    object-fit: cover;
}
.ad-card-search-ava-ph {
    display: flex;
    align-items: center;
    justify-content: center;
    background: #8e8e93;
    color: #fff;
    font-size: 14px;
    font-weight: 600;
    letter-spacing: .02em;
}
.ad-card-search-ava-ph.is-pink { background: #f48fb1; }
.ad-card-search-ava-ph.is-dark { background: #2c2c2e; }
.ad-card-search-meta {
    flex: 1;
    min-width: 0;
}
.ad-card-search-title {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 15px;
    font-weight: 500;
    line-height: 1.25;
    color: #1c1c1e;
}
.ad-card-search-kind {
    margin-top: 1px;
    font-size: 13px;
    line-height: 1.2;
    color: #8e8e93;
}
.ad-card-search-ad {
    flex: none;
    display: inline-flex;
    align-items: center;
    gap: 1px;
    padding: 2px 4px 2px 8px;
    border-radius: 11px;
    background: #dceaf8;
    color: #5b9bd5;
    font-size: 12px;
    font-weight: 600;
    line-height: 16px;
}
.ad-card-search-ad .bi {
    font-size: 12px;
    color: #8eb8dc;
}
[data-bs-theme="dark"] .ad-card-preview.is-search {
    background: #fff;
    border-color: #d8dce0;
}
.ad-card-place {
    margin: 0 0 8px 13px;
}
#adCard:not(.is-create) .ad-card-place,
#adCard:not(.is-create) #adCardPlaceLabel {
    opacity: .45;
    pointer-events: none;
}
.ad-card-check-lock {
    margin: 10px 13px 6px;
    white-space: nowrap;
    font-size: 14px;
    font-weight: 400;
    line-height: 20px;
    gap: .45rem;
}
.ad-card-preview-hit {
    position: absolute;
    inset: 0;
    z-index: 4;
    display: block;
}
.ad-card-preview:has(.ad-card-preview-hit:not([hidden])) {
    cursor: pointer;
}

.ad-card-post-wrap {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: flex-start;
    gap: 6px;
    width: 100%;
}
.ad-card-post {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    padding: 8px;
    border-radius: 14px;
    background: #fff;
    color: #222;
}
.ad-card-preview.is-post .ad-card-post {
    flex: 0 0 75%;
    width: 75%;
    max-width: 75%;
    box-sizing: border-box;
}
.ad-card-post-inner {
    overflow: hidden;
    border-radius: 8px;
}
.ad-card-post-media-wrap {
    padding: 0;
    line-height: 0;
}
.ad-card-post-media-link {
    display: block;
    line-height: 0;
}
.ad-card-post-media {
    display: block;
    width: 100%;
    height: auto;
    object-fit: cover;
    object-position: center;
    border-radius: 0;
}
.ad-card-post-body {
    margin: 0;
    padding: 8px 12px 10px;
    background: rgba(228, 90, 140, .1);
    border-left: 3px solid #e45a8c;
}
.ad-card-post-main {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    overflow: visible;
}
.ad-card-post-copy {
    flex: 1;
    min-width: 0;
}
.ad-card-post-body .ad-card-preview-img {
    flex: none;
    width: 36px;
    height: 36px;
    margin-top: 2px;
}
.ad-card-post-mark {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 0 0 2px;
}
.ad-card-post-ad {
    font-size: 12px;
    font-weight: 600;
    color: #e0568a;
    line-height: 16px;
    -webkit-font-smoothing: antialiased;
}
.ad-card-post-what {
    font-size: 9px;
    font-weight: 400;
    color: #e0568a;
    background: rgba(224, 86, 138, .12);
    border-radius: 7px;
    padding: 0 4px;
    line-height: 13px;
}
.ad-card-post .ad-card-preview-title {
    font-size: 13px;
    font-weight: 700;
    line-height: 17px;
    color: #222;
}
.ad-card-preview-title.is-loading,
#adCardVideoTitle.is-loading {
    color: transparent;
}
.ad-card-preview-title.is-loading::before,
#adCardVideoTitle.is-loading::before {
    content: '';
    display: block;
    width: 7.4rem;
    max-width: 72%;
    height: 0.72rem;
    margin: 0.16rem 0 0.12rem;
    border-radius: 0.36rem;
    background: #d7d7db linear-gradient(90deg, #d7d7db 0%, #f3f3f5 46%, #d7d7db 82%);
    background-size: 220% 100%;
    animation: ad-name-shine 1.3s ease-in-out infinite;
}
@keyframes ad-name-shine {
    0% { background-position: 100% 0; }
    100% { background-position: -100% 0; }
}
@media (prefers-reduced-motion: reduce) {
    .ad-card-preview-title.is-loading::before,
    #adCardVideoTitle.is-loading::before {
        animation: none;
    }
}
.ad-card-post .ad-card-preview-text {
    margin-top: 2px;
    font-size: 13px;
    line-height: 17px;
    color: #222;
}
.ad-card-cta {
    display: block;
    position: relative;
    margin-top: 1px;
    padding: 16px 0 8px;
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 16px;
    color: #e0568a;
    text-transform: uppercase;
    text-align: center;
    text-decoration: none;
    cursor: pointer;
}
.ad-card-cta::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: 7px;
    height: 1px;
    background: #e0568a;
    opacity: .2;
}
.ad-card-cta:hover,
.ad-card-cta:focus {
    color: #e0568a;
    text-decoration: none;
    opacity: .82;
}
.ad-card-post-chrome {
    flex: none;
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding-top: 2px;
}
.ad-card-post-chip {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border-radius: 13px;
    background: rgba(255, 255, 255, .45);
    color: #73856c;
    font-size: 12px;
}

.ad-card-bubble {
    position: absolute;
    z-index: 1;
    left: 13px;
    right: 13px;
    top: 12px;
}
.ad-card-bot-close {
    position: absolute;
    right: 0;
    top: 0;
    z-index: 2;
    width: 24px;
    height: 24px;
    margin: 10px;
    pointer-events: none;
    background: url('data:image/svg+xml,%3Csvg%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20width%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22m7%2017%2010-10m-10%200%2010%2010%22%20fill%3D%22none%22%20stroke%3D%22%23999%22%20stroke-linecap%3D%22round%22%20stroke-width%3D%221.3%22%2F%3E%3C%2Fsvg%3E') center no-repeat;
}
.ad-card-preview.has-pic .ad-card-bot-close {
    opacity: 0;
    visibility: hidden;
}
.ad-card-bot-box {
    display: block;
    position: relative;
    overflow: hidden;
    padding: 12px 16px;
    border-radius: 18px;
    background: #fff;
    color: #222;
    font-size: 14px;
    line-height: 18px;
}
.ad-card-bot-pic {
    display: block;
    float: right;
    width: 42px;
    height: 42px;
    margin: 4px 0 2px 7px;
    border-radius: var(--ad-radius, 6px);
    object-fit: cover;
}
.ad-card-bot-head {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    white-space: nowrap;
    font-weight: 700;
}
.ad-card-bot-ad {
    flex-shrink: 0;
    margin-bottom: 2px;
    color: #0288db;
    font-size: 14px;
    font-weight: 700;
    line-height: 18px;
}
.ad-card-bot-what {
    position: relative;
    z-index: 1;
    flex-shrink: 0;
    margin: 1px 7px;
    padding: 0 5px;
    color: #0288db;
    font-size: 10px;
    font-weight: 400;
    line-height: 14px;
    -webkit-font-smoothing: antialiased;
}
.ad-card-bot-what::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 0;
    border-radius: 8px;
    background: #0288db;
    opacity: .1;
}
.ad-card-bubble .ad-card-preview-title {
    flex-basis: 100%;
    order: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    font-size: 14px;
    font-weight: 700;
    line-height: 18px;
    color: #222;
}
.ad-card-bubble .ad-card-preview-text {
    margin: 0;
    font-size: 14px;
    line-height: 18px;
    color: #222;
}
.ad-card-admark {
    display: inline-block;
    margin-bottom: .2rem;
    padding: .02rem .38rem;
    border-radius: .28rem;
    background: #2aabee;
    color: #fff;
    font-size: .62rem;
    font-weight: 700;
    letter-spacing: .02em;
    text-transform: uppercase;
}
.ad-card-preview-title {
    font-size: .75rem;
    font-weight: 700;
    line-height: 1.25;
    color: #111;
}
.ad-card-preview-text {
    margin-top: .12rem;
    font-size: .74rem;
    line-height: 1.35;
    color: #333;
    white-space: pre-wrap;
    word-break: break-word;
}
.ad-card-preview-text .ad-card-emoji,
.ad-card-preview-text .ad-card-emoji-ph {
    display: inline-block;
    width: 16px;
    height: 16px;
    vertical-align: -3px;
    object-fit: contain;
}
video.ad-card-emoji {
    pointer-events: none;
    background: transparent;
}
.ad-card-preview-text .ad-card-emoji-ph {
    background: #e4e4e4;
    border-radius: 10px;
}
.ad-card-preview-text .ad-card-emoji-ph:nth-child(even) {
    background: #ececec;
}
.ad-card-preview-text .ad-card-emoji-ph:has(+ .ad-card-emoji-ph) {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}
.ad-card-preview-text .ad-card-emoji-ph + .ad-card-emoji-ph {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}
.ad-card-preview-img {
    width: 34px;
    height: 34px;
    border-radius: 7px;
    object-fit: cover;
    align-self: start;
}

.ad-card-lang {
    display: inline-block;
    margin-top: .55rem;
    padding: .18rem .7rem;
    border-radius: .4rem;
    background: var(--accent-color);
    color: #fff;
    font-size: .78rem;
    font-weight: 600;
    line-height: 1.3;
}

.ad-card-peers-box {
    position: relative;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .35rem .4rem;
    min-height: 40px;
    padding: 5px 28px 5px 9px;
    border: none;
    border-radius: var(--ad-radius, 6px);
    background: var(--ad-field-bg, var(--input-bg));
    box-shadow: inset 0 0 0 1px var(--ad-field-line, #d9d9d9);
}
.ad-card-peers {
    flex: 1 1 auto;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px;
    min-width: 0;
}
.ad-card-peers:empty,
.ad-card-peers[hidden] {
    display: none;
}
#adCard.is-create .ad-card-peers-box {
    padding-right: 9px;
}
#adCard.is-create .ad-card-peers:not(#adCardDevice),
#adCard.is-create .ad-card-peers:not(#adCardDevice):empty {
    display: flex;
    width: 100%;
    flex: 1 1 100%;
}
#adCard.is-create .ad-card-peers:not(#adCardDevice)[hidden] {
    display: flex !important;
}
#adCard.is-create #adCardDevice,
#adCard.is-create #adCardDevice[hidden] {
    display: none !important;
}
.ad-card-lock {
    position: absolute;
    right: 9px;
    top: 50%;
    transform: translateY(-50%);
    flex: none;
    color: #98a2b3;
    font-size: .9rem;
    pointer-events: none;
}
.ad-card-ph {
    flex: 1;
    min-width: 0;
    padding-left: .15rem;
    color: #98a2b3;
    font-size: .9rem;
    font-weight: 400;
    line-height: 1.35;
    text-align: start;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.ad-card-peer {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    box-sizing: border-box;
    min-height: 32px;
    max-width: 100%;
    padding: 6px 12px;
    border-radius: var(--ad-radius, 6px);
    background: var(--accent-color);
    color: #fff;
    font-size: .875rem;
    font-weight: 600;
    line-height: 20px;
    text-decoration: none;
}
.ad-card-peer:has(img) { padding: 3px 12px 3px 3px; }
.ad-card-peer.is-ex { background: #e05656; }
.ad-card-peer img {
    width: 26px;
    height: 26px;
    border-radius: var(--ad-radius, 6px);
    object-fit: cover;
    background: #fff;
}
.ad-card-peer span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ad-card-notes {
    list-style: none;
    margin: .7rem 0 0;
    padding: 0;
    font-size: .8rem;
    line-height: 1.45;
    color: var(--text-primary);
}
.ad-card-notes li {
    display: flex;
    align-items: flex-start;
    gap: .4rem;
    margin: .28rem 0;
}
.ad-card-notes i { flex: none; margin-top: .12rem; font-size: .9rem; }
.ad-card-notes .is-in i { color: #10b981; }
.ad-card-notes .is-out i { color: #e54d4d; }
.ad-card-note-text { flex: 1; min-width: 0; }
.ad-card-note-name { font-weight: 600; color: var(--accent-color); }
a.ad-card-note-name { text-decoration: none; cursor: pointer; }
a.ad-card-note-name:hover { text-decoration: underline; }

.ad-card-metrics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .65rem;
}
@media (max-width: 640px) {
    .ad-card-metrics { grid-template-columns: 1fr 1fr; }
}
.ad-card-metrics div {
    padding: .65rem .75rem;
    border: 1px solid var(--border-color);
    border-radius: .5rem;
    background: var(--ad-field-bg, var(--input-bg));
}
.ad-card-metrics span {
    display: block;
    margin-bottom: .15rem;
    font-size: .72rem;
    color: var(--text-secondary);
}
.ad-card-metrics b {
    font-size: .95rem;
    font-weight: 650;
    font-variant-numeric: tabular-nums;
}

[dir="rtl"] .ad-card-top-right { margin-left: 0; margin-right: auto; }
[dir="rtl"] .ad-card-bot-pic { float: left; margin: 4px 7px 2px 0; }
[dir="rtl"] .ad-card-bot-close { right: auto; left: 0; }
[dir="rtl"] .ad-card-preview-img { grid-column: 1; }
@media (max-width: 640px) {
    .ad-card-save-row { flex-direction: column; align-items: stretch; }
}

.alist-create {
    flex: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: var(--alist-h, 2.125rem);
    border: 0;
    border-radius: .45rem;
    padding: 0 1.05rem;
    background: var(--accent-color);
    color: #fff;
    font-size: .8rem;
    font-weight: 700;
    line-height: 1;
    white-space: nowrap;
}
.alist-create:hover { background: var(--accent-hover); color: #fff; }
.alist-matrix {
    flex: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: var(--alist-h, 2.125rem);
    border: 0;
    border-radius: .45rem;
    padding: 0 .9rem;
    background: transparent;
    color: var(--accent-color);
    box-shadow: inset 0 0 0 1px var(--accent-color);
    font-size: .8rem;
    font-weight: 700;
    line-height: 1;
    white-space: nowrap;
}
.alist-matrix:hover { background: var(--accent-color); color: #fff; }

.ad-card-create-title {
    display: none;
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.3;
    white-space: nowrap;
}
#adCard.is-create .ad-card-tabs { display: none; }
#adCard.is-create .ad-card-create-title { display: block; }
#adCard.is-create .ad-card-delete { display: none; }
.ad-card-target-bar {
    display: none;
    align-items: center;
    flex-wrap: wrap;
    gap: .15rem .2rem;
    margin: 0 0 12px;
}
#adCard.is-create .ad-card-target-bar { display: flex; }
.ad-card-target-lab {
    margin-right: .45rem;
    color: var(--text-primary);
    font-size: .95rem;
    font-weight: 700;
}
.ad-card-type {
    border: 0;
    background: transparent;
    color: var(--accent-color);
    font-size: .9rem;
    font-weight: 600;
    line-height: 1.4;
    padding: .42rem .95rem;
    border-radius: 8px;
}
.ad-card-type:hover { color: var(--accent-hover); }
.ad-card-type.is-on {
    background: var(--accent-color);
    color: #fff;
}

.ad-card-preview-empty {
    position: absolute;
    z-index: 5;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    max-width: 86%;
    padding: 7px 12px;
    border-radius: 8px;
    background: rgba(28, 34, 40, .72);
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    line-height: 1.3;
    text-align: center;
    pointer-events: none;
}
.ad-card-preview.is-empty .ad-card-bubble,
.ad-card-preview.is-empty .ad-card-post-wrap,
.ad-card-preview.is-empty .ad-card-search-prev,
.ad-card-preview.is-empty .ad-card-video-prev,
.ad-card-preview.is-empty .ad-card-preview-hit { visibility: hidden; }

.ad-card-chip-in {
    display: none;
    flex: 1 1 8rem;
    min-width: 8rem;
    width: auto;
    border: 0;
    background: transparent;
    color: var(--text-primary);
    font: inherit;
    font-size: 15px;
    line-height: 18px;
    outline: none;
}
#adCard.is-create .ad-card-chip-in { display: block; }
#adCard.is-create .ad-card-ph { display: none !important; }
#adCard.is-create .ad-card-lock { display: none !important; }
#adCard.is-create .ad-card-peers-box.is-loading { padding-right: 32px; }
#adCard.is-create .ad-card-peers-box.is-loading::after {
    content: '';
    position: absolute;
    right: 10px;
    top: 50%;
    width: 16px;
    height: 16px;
    margin-top: -8px;
    border: 2px solid var(--border-color, #d9d9d9);
    border-top-color: var(--accent-color, #3390ec);
    border-radius: 50%;
    animation: ad-card-spin .7s linear infinite;
}
#adCard.is-create .ad-card-peers-box.is-invalid {
    box-shadow: inset 0 0 0 1px #e54d4d;
}
.ad-card-field-err {
    margin: 4px 2px 10px;
    color: #e54d4d;
    font-size: 13px;
    font-weight: 500;
    line-height: 16px;
}
.ad-card-field-err[hidden] { display: none !important; }
#adCard.is-create .ad-card-peer {
    min-height: 26px;
    padding: 5px 9px;
    border-radius: var(--ad-radius, 6px);
    font-size: 12px;
    font-weight: 600;
    line-height: 16px;
    cursor: pointer;
}
#adCard.is-create .ad-card-peer:has(img) {
    padding: 3px 9px 3px 3px;
}
#adCard.is-create .ad-card-peer img {
    width: 20px;
    height: 20px;
    border-radius: 4px;
}
#adCard.is-create .ad-card-peer::after {
    content: '\00d7';
    margin-left: .35rem;
    font-weight: 700;
    opacity: .7;
}
#adCard.is-create .ad-card-peer.is-bad {
    background: #b42318;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.55);
}

.ad-card-device-sel {
    flex: 1;
    min-width: 0;
    width: 100%;
    height: 30px;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    color: #98a2b3;
    font: inherit;
    font-size: .9rem;
    line-height: 1.35;
    outline: none;
    cursor: pointer;
}
#adCard.is-create .ad-card-device-sel { display: block; }

.ad-card-suggest {
    position: fixed;
    z-index: 2000;
    max-height: 220px;
    overflow: auto;
    min-width: 180px;
    padding: 7px 0;
    border-radius: var(--ad-radius, 6px);
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    box-shadow: 0 8px 24px rgba(0, 0, 0, .18);
}
.ad-card-suggest[hidden] { display: none !important; }
.ad-card-suggest button {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    border: 0;
    background: none;
    color: var(--text-primary);
    text-align: start;
    padding: .45rem .75rem;
    font-size: .88rem;
    line-height: 1.25;
}
.ad-card-suggest button:hover { background: var(--alist-hover); }
.ad-card-suggest button.is-muted {
    color: var(--text-secondary);
    cursor: default;
}
.ad-card-suggest button.is-muted:hover { background: none; }
.ad-card-suggest img {
    flex: none;
    width: 24px;
    height: 24px;
    border-radius: 4px;
    object-fit: cover;
    background: #fff;
}
.ad-card-suggest-id {
    margin-left: auto;
    color: var(--text-secondary);
    font-size: .78rem;
    font-weight: 400;
}

.ad-card-terms {
    display: none;
    align-items: flex-start;
    gap: .5rem;
    margin: 0 auto 0 0;
    flex: 1;
    min-width: 0;
    font-size: .82rem;
    line-height: 1.4;
    color: var(--text-secondary);
}
#adCard.is-create .ad-card-terms { display: flex; }
#adCard.is-create .ad-card-save-note { display: none; }
.ad-card-terms a { color: var(--accent-color); }
.ad-card-terms .form-check-input { margin-top: .15rem; flex: none; }

.ad-card-create-hint {
    margin: .55rem 0 0;
    font-size: .8rem;
    color: var(--text-secondary);
}

.ad-budget-top {
    display: flex;
    gap: 14px;
    align-items: center;
    margin-bottom: 20px;
}
.ad-budget-now {
    flex: none;
    min-width: 108px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    padding: 10px 14px;
    border-radius: 8px;
    background: var(--ad-field-bg, var(--input-bg));
    text-align: center;
}
.ad-budget-now-amt {
    font-size: 16px;
    font-weight: 700;
    line-height: 1.2;
    font-variant-numeric: tabular-nums;
}
.ad-budget-now-amt .cur-amt { gap: 4px; }
.ad-budget-now-amt .cur-icon { width: 14px; height: 16px; }
.ad-budget-now-lab {
    font-size: 12px;
    color: var(--text-secondary);
}
.ad-budget-ops { flex: 1; min-width: 0; }
.ad-budget-modes {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    margin-bottom: 8px;
}
.ad-budget-now.is-skip {
    background: var(--mark-bg);
    color: var(--text-primary);
}
#adCardLevelChips[hidden],
#adCardLevelPrev[hidden] { display: none !important; }
.ad-budget-mode {
    border: 0;
    background: none;
    padding: 0;
    color: var(--text-secondary);
    font-size: 14px;
    font-weight: 600;
    line-height: 18px;
}
.ad-budget-mode.is-on { color: var(--text-primary); }
.ad-budget-info {
    margin-left: 4px;
    font-size: 12px;
    color: var(--text-secondary);
    font-weight: 400;
}
.ad-budget-row {
    display: flex;
    gap: 8px;
    align-items: stretch;
}
.ad-budget-field {
    position: relative;
    flex: 1 1 200px;
    max-width: 240px;
    min-width: 0;
}
.ad-budget-field.has-cur .ad-card-box { padding-left: 2.15rem; }
.ad-budget-go {
    flex: none;
    border: 0;
    border-radius: var(--ad-radius, 6px);
    background: var(--accent-color);
    color: #fff;
    font-size: 14px;
    font-weight: 600;
    line-height: 18px;
    padding: 11px 16px;
    white-space: nowrap;
    cursor: pointer;
}
.ad-budget-go:hover { background: var(--accent-hover); color: #fff; }
.ad-budget-go:disabled { opacity: .55; }
.ad-budget-ops .ad-chips { margin-top: .45rem; }
.ad-budget-ops .ad-card-msg { margin-top: 8px; }
.ad-tx-title {
    margin: 8px 0 10px;
    font-size: 16px;
    font-weight: 700;
}
.ad-tx-list {
    border-radius: 10px;
    overflow: hidden;
}
.ad-tx-row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 11px 14px;
    font-size: 14px;
    line-height: 20px;
}
.ad-tx-row:nth-child(odd) { background: var(--ad-field-bg, var(--input-bg)); }
.ad-tx-name { flex: 1; min-width: 0; }
.ad-tx-amt {
    flex: none;
    display: grid;
    grid-template-columns: 10px 14px 4.8em;
    column-gap: 5px;
    align-items: center;
    direction: ltr;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.ad-tx-amt:not(:has(.ad-tx-cur)) {
    grid-template-columns: 10px 4.8em;
}
.ad-tx-sign,
.ad-tx-cur {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 16px;
    line-height: 1;
}
.ad-tx-sign {
    position: relative;
    width: 10px;
    overflow: hidden;
    font-size: 0;
}
.ad-tx-sign::before,
.ad-tx-sign::after {
    content: '';
    position: absolute;
    left: 50%;
    top: 50%;
    background: currentColor;
    border-radius: 1px;
    transform: translate(-50%, -50%);
}
.ad-tx-sign::before {
    width: 8px;
    height: 1.5px;
}
.ad-tx-amt.is-in .ad-tx-sign::after {
    width: 1.5px;
    height: 8px;
}
.ad-tx-cur .cur-icon {
    width: 14px;
    height: 16px;
    vertical-align: 0;
}
.ad-tx-num { text-align: right; }
.ad-tx-amt.is-in { color: #31b545; }
.ad-tx-amt.is-out { color: #e54d4d; }
.ad-tx-date {
    flex: none;
    width: 132px;
    text-align: right;
    color: var(--text-secondary);
    font-size: 13px;
}
.ad-tx-empty,
.ad-tx-err {
    padding: 16px 4px;
    color: var(--text-secondary);
    font-size: 14px;
}
.ad-tx-more {
    display: block;
    margin: 10px auto 0;
    border: 0;
    background: none;
    color: var(--accent-color);
    font-weight: 600;
    font-size: 14px;
}
.ad-stats-head {
    display: flex;
    gap: 28px;
    align-items: flex-start;
    margin-bottom: 22px;
}
.ad-stats-mini {
    flex: 0 0 280px;
    max-width: 280px;
    padding: 14px 16px 16px;
    border-radius: 14px;
    background: linear-gradient(180deg, #d7ead8 0%, #cfe4d8 100%);
    color: #222;
}
.ad-stats-mini-ad {
    display: inline-block;
    margin-bottom: 8px;
    padding: 1px 6px;
    border-radius: 4px;
    background: #2aabee;
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .02em;
    text-transform: uppercase;
}
.ad-stats-mini-row {
    display: flex;
    gap: 10px;
    align-items: flex-start;
}
.ad-stats-mini-copy { flex: 1; min-width: 0; }
.ad-stats-mini-title {
    font-size: 14px;
    font-weight: 700;
    line-height: 18px;
}
.ad-stats-mini-text {
    margin-top: 2px;
    font-size: 13px;
    line-height: 17px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.ad-stats-mini-text .ad-card-emoji,
.ad-stats-mini-text .ad-card-emoji-ph {
    width: 15px;
    height: 15px;
    vertical-align: -3px;
}
.ad-stats-mini-ava {
    flex: none;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    object-fit: cover;
}
.ad-stats-mini:not(.is-bots) {
    background: #fff;
    border: 1px solid #d8dce0;
}
.ad-stats-meta { flex: 1; min-width: 0; }
.ad-stats-meta-lab {
    margin-top: 10px;
    font-size: 12px;
    font-weight: 600;
    color: var(--text-secondary);
}
.ad-stats-meta-lab:first-child { margin-top: 0; }
.ad-stats-link {
    display: inline-block;
    color: var(--accent-color);
    font-size: 15px;
    font-weight: 600;
    text-decoration: none;
}
.ad-stats-link:hover { text-decoration: underline; }
.ad-stats-created { font-size: 15px; }
.ad-stats-kpis {
    display: flex;
    gap: 28px;
    margin-top: 14px;
}
.ad-stats-kpis b {
    display: block;
    margin-top: 2px;
    font-size: 16px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}
.ad-stats-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 6px;
}
.ad-stats-h {
    font-size: 18px;
    font-weight: 700;
}
.ad-stats-iv {
    display: flex;
    gap: 6px;
}
.ad-stats-iv-btn {
    border: 0;
    background: transparent;
    color: var(--accent-color);
    font-size: 13px;
    font-weight: 600;
    padding: 4px 10px;
    border-radius: 14px;
}
.ad-stats-iv-btn.is-on {
    background: var(--accent-color);
    color: #fff;
}
.ad-stats-range {
    text-align: right;
    font-size: 13px;
    font-weight: 700;
    margin-bottom: 8px;
}
.ad-stats-chart-wrap {
    position: relative;
    height: 220px;
}
.ad-stats-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}
.ad-stats-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.ad-stats-pill {
    border: 0;
    border-radius: 16px;
    padding: 6px 12px;
    font-size: 13px;
    font-weight: 600;
    color: #fff;
    opacity: .38;
}
.ad-stats-pill.is-on { opacity: 1; }
.ad-stats-pill.is-on::before { content: "✓ "; }
.ad-stats-csv {
    border: 0;
    background: none;
    color: var(--accent-color);
    font-size: 13px;
    font-weight: 600;
}
.ad-stats-notes {
    margin-top: 14px;
    font-size: 12px;
    line-height: 16px;
    color: var(--text-secondary);
}
.ad-stats-report { margin-top: 22px; }
.ad-stats-report-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 10px;
}
.ad-stats-months { display: flex; gap: 6px; flex-wrap: wrap; }
.ad-stats-month {
    border: 0;
    background: transparent;
    color: var(--accent-color);
    font-size: 13px;
    font-weight: 600;
    padding: 4px 10px;
    border-radius: 14px;
}
.ad-stats-month.is-on {
    background: var(--accent-color);
    color: #fff;
}
.ad-stats-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 14px;
}
.ad-stats-table th {
    padding: 8px 12px;
    color: var(--text-secondary);
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    text-align: left;
}
.ad-stats-table th:nth-child(2),
.ad-stats-table th:nth-child(3),
.ad-stats-table td:nth-child(2),
.ad-stats-table td:nth-child(3) { text-align: right; }
.ad-stats-table td {
    padding: 10px 12px;
    border-top: 1px solid var(--border-color);
}
.ad-stats-table tbody tr:nth-child(odd) td { background: var(--ad-field-bg, var(--input-bg)); }
.ad-stats-table .is-total td {
    font-weight: 700;
    background: transparent;
}
@media (max-width: 720px) {
    .ad-budget-top,
    .ad-stats-head { flex-direction: column; }
    .ad-budget-now,
    .ad-stats-mini { flex-basis: auto; max-width: none; width: 100%; }
    .ad-tx-date { width: auto; }
}

@media (max-width: 767.98px) {
    .alist-kpis {
        --kpi-gap: .45rem;
        display: grid;
        grid-template-columns: 1fr 1fr;
        overflow: visible;
        gap: var(--kpi-gap);
    }
    .alist-kpi--ai {
        max-height: 16rem;
        transition: max-height .42s ease, opacity .32s ease, padding .42s ease, margin .42s ease;
    }
    .alist-kpis.is-ai-closing .alist-kpi--ai {
        flex-grow: 0;
        flex-basis: auto;
        min-width: 0;
        margin-inline-end: 0;
        margin-bottom: calc(var(--kpi-gap) * -1);
        max-height: 0;
        min-height: 0;
        padding-block: 0;
    }
    .alist-kpi,
    .alist-kpi--st,
    .alist-kpi--ai {
        flex: none;
        min-width: 0;
        width: auto;
    }
    .alist-kpi--st,
    .alist-kpi--ai { grid-column: 1 / -1; }
    .alist-kpis-wrap > .ad-bulk { height: 3.4rem; }
    .alist-kpi-val { font-size: 1rem; }

    .alist-toolbar {
        --alist-h: 2.5rem;
        flex-direction: column;
        align-items: stretch;
        padding: .55rem .75rem;
    }
    .alist-search {
        flex: none;
        width: 100%;
        max-width: none;
        min-width: 0;
    }
    .alist-search .form-control { font-size: 16px; }
    .alist-tools {
        margin-left: 0;
        width: 100%;
        flex-wrap: wrap;
    }
    .alist-csv { margin-inline-start: 0; }
    .alist-filter,
    .alist-filter--obj {
        flex: 1 1 calc(50% - .4rem);
        width: auto;
    }
    .alist-create { flex: 1 1 100%; }
    .alist-tools > .alist-matrix,
    .alist-tools > .alist-matrix + .alist-create { flex: 1 1 calc(50% - .4rem); }
    .alist-folder-add { flex: 1 1 calc(50% - .4rem); }
    .alist-folder-toggle { width: 2rem; height: 2rem; }
    .alist-filter-menu,
    .alist-filter--obj .obj-picker-menu,
    .alist-range-menu {
        width: min(22rem, calc(100vw - 1.5rem));
        min-width: 0;
    }

    .alist-wrap {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
    .alist-table {
        table-layout: auto;
        width: max-content;
        min-width: 56rem;
    }
    .alist-table col[class^="alist-w-"] { width: auto; }
    .alist-table th.alist-col-check,
    .alist-table td.alist-col-check {
        position: sticky;
        inset-inline-start: 0;
        z-index: 4;
        background-color: var(--bg-card);
    }
    .alist-table th[data-col="title"],
    .alist-table td.alist-ad {
        position: sticky;
        inset-inline-start: 0;
        z-index: 3;
        min-width: 11rem;
        max-width: 14rem;
        background-color: var(--bg-card);
        box-shadow: 6px 0 8px -6px rgba(0, 0, 0, .28);
    }
    .alist-folder:not(.is-ungrouped) td.alist-ad:first-child,
    .alist-card[data-folder-id]:not([data-folder-id="0"]) td.alist-ad:first-child {
        box-shadow: inset 3px 0 0 var(--folder-color, var(--accent-color)), 6px 0 8px -6px rgba(0, 0, 0, .28);
    }
    .alist-table th.alist-col-check ~ th[data-col="title"],
    .alist-table td.alist-col-check ~ td.alist-ad { inset-inline-start: 2.25rem; }
    .alist-table thead th.alist-col-check,
    .alist-table thead th[data-col="title"] { z-index: 6; }
    .alist-table tbody tr:nth-child(even of :not([hidden])) td.alist-ad,
    .alist-table tbody tr:nth-child(even of :not([hidden])) td.alist-col-check {
        background-image: linear-gradient(var(--alist-zebra), var(--alist-zebra));
    }
    .alist-table tbody tr:hover td.alist-ad,
    .alist-table tbody tr:hover td.alist-col-check {
        background-color: var(--bg-card);
        background-image: linear-gradient(var(--alist-hover), var(--alist-hover));
    }
    .alist-table tbody tr.is-picked td.alist-ad,
    .alist-table tbody tr.is-picked td.alist-col-check {
        background-color: var(--bg-card);
        background-image: linear-gradient(var(--alist-picked), var(--alist-picked));
    }
    .alist-table tr.alist-folder td.alist-ad,
    .alist-table tr.alist-folder td.alist-col-check {
        background-color: var(--table-head-bg);
        background-image: none;
    }

    .modal-dialog.ad-card-dialog {
        margin: .45rem;
        max-width: none;
        width: calc(100% - .9rem);
    }
    .ad-card-top {
        flex-wrap: wrap;
        gap: .5rem;
        padding: .75rem .85rem;
    }
    .ad-card-top-right {
        margin-left: 0;
        width: 100%;
        justify-content: space-between;
    }
    .ad-card-body { padding: .55rem .85rem 1rem; }
    .ad-card-tabs { width: 100%; }
    .ad-card-tab { padding: .35rem .65rem; font-size: .82rem; }
    .ad-card-label,
    .ad-card-label-row,
    #adCardStartOpen,
    #adCardEndOpen { margin-left: .35rem; margin-right: .35rem; }
}

.modal-dialog.ad-clone-dialog {
    width: min(1080px, calc(100vw - 1.5rem));
    max-width: none;
}
#adCloneModal .ad-modal-sub {
    max-width: none;
    white-space: normal;
    overflow: visible;
    text-overflow: unset;
}
.ad-clone-empty {
    margin: 0 0 .85rem;
    font-size: .95rem;
    line-height: 1.35;
    color: var(--text-primary);
}
.ad-clone-modes { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: .75rem; }
.ad-clone-modes .ad-btn.is-on {
    background: var(--bs-primary);
    color: #fff;
    border-color: transparent;
}
.ad-clone-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .65rem .75rem;
}
.ad-clone-span { grid-column: 1 / -1; }
.ad-clone-field { display: flex; flex-direction: column; gap: .3rem; margin: 0; }
.ad-clone-field > span { color: var(--text-secondary); font-size: .78rem; }
.ad-clone-field[hidden] { display: none; }
.ad-clone-toks { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .55rem; }
.ad-clone-toks[hidden],
.ad-clone-field[hidden],
#adCloneShared[hidden],
#adCloneEach[hidden],
#adCloneCopyHint[hidden],
#adCloneRun[hidden],
#adCloneBudgetWrap[hidden],
#adCloneSiteHead[hidden],
.ad-clone-site[hidden] { display: none !important; }
.ad-clone-table-wrap { overflow: auto; max-height: 46vh; margin-top: .35rem; }
.ad-clone-table { width: 100%; border-collapse: collapse; font-size: .82rem; }
.ad-clone-table th {
    text-align: left;
    font-weight: 500;
    color: var(--text-secondary);
    padding: .35rem .4rem;
    white-space: nowrap;
}
.ad-clone-table td { padding: .3rem .35rem; vertical-align: middle; }
.ad-clone-src { max-width: 11rem; color: var(--text-secondary); white-space: pre-line; word-break: break-all; }
.ad-clone-table .form-control { min-width: 6.5rem; }
.ad-clone-copies { max-width: 10rem; margin: 0 0 .75rem; }
.ad-clone-extra { display: flex; flex-direction: column; gap: .75rem; margin-top: .85rem; }
.ad-clone-check { display: flex; align-items: center; gap: .45rem; margin: 0; }
.ad-clone-types { display: flex; flex-wrap: wrap; gap: .15rem .2rem; margin-top: .55rem; }
.ad-clone-peers { display: flex; flex-wrap: wrap; gap: .3rem; }
.ad-clone-peer {
    border: 0; border-radius: 999px; padding: .15rem .55rem; cursor: pointer;
    background: var(--bs-tertiary-bg); color: var(--text-primary); font-size: .75rem;
}
.ad-clone-file-name { font-size: .75rem; color: var(--text-secondary); }
.ad-clone-file-clear {
    align-self: flex-start; border: 0; background: transparent; padding: 0; cursor: pointer;
    color: var(--text-secondary); text-decoration: underline; font-size: .75rem;
}
.ad-clone-list-btn,
.ad-clone-list-go {
    align-self: flex-start;
    border: 0;
    background: transparent;
    padding: 0;
    color: var(--accent-color);
    font-size: .75rem;
    cursor: pointer;
}
.ad-clone-list-btn:hover,
.ad-clone-list-go:hover { color: var(--accent-hover); }
.ad-clone-list-box[hidden],
.ad-clone-list-go[hidden] { display: none !important; }
#adCloneModal .modal-footer { flex-wrap: wrap; }
.ad-clone-cap {
    flex: 1 0 100%;
    margin: 0 0 .65rem;
    padding: .6rem .75rem;
    border-radius: .55rem;
    background: rgba(229, 77, 77, .14);
    color: var(--bs-danger-text-emphasis);
    font-size: .84rem;
    line-height: 1.4;
}
.ad-clone-cap[hidden] { display: none !important; }
.ad-clone-bulk {
    flex: 1 0 100%;
    margin: 0 0 .65rem;
    padding: .6rem .75rem;
    border-radius: .55rem;
    background: rgba(42, 171, 238, .1);
    color: var(--text-secondary);
    font-size: .84rem;
    line-height: 1.4;
}
.ad-clone-bulk[hidden] { display: none !important; }

/* Фоновая пачка объявлений: плашка над списком. */
.alist-bulk {
    margin: 0 0 .75rem;
    padding: .65rem .85rem;
    border: 1px solid var(--border-color);
    border-radius: .65rem;
    background: var(--bg-card);
    color: var(--text-primary);
    font-size: .84rem;
}
.alist-bulk[hidden] { display: none !important; }
.alist-bulk-main {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .4rem .65rem;
}
.alist-bulk-ico { flex: none; font-size: 1.1rem; color: var(--accent-color); }
.alist-bulk.is-done .alist-bulk-ico { color: #10b981; }
.alist-bulk.is-stop .alist-bulk-ico { color: #e5a00d; }
.alist-bulk-text { flex: 1 1 14rem; min-width: 0; }
.alist-bulk-head { font-weight: 700; }
.alist-bulk-sub { margin-top: .1rem; color: var(--text-secondary); font-size: .78rem; }
.alist-bulk-acts {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem .9rem;
    margin-inline-start: auto;
}
.alist-bulk-bar {
    height: 4px;
    margin-top: .6rem;
    border-radius: 2px;
    background: var(--border-color);
    overflow: hidden;
}
.alist-bulk-bar span {
    display: block;
    height: 100%;
    background: var(--accent-color);
    transition: width .4s ease;
}
.alist-bulk-fails {
    margin: .55rem 0 0;
    padding-inline-start: 1.1rem;
    max-height: 10rem;
    overflow-y: auto;
    color: var(--text-secondary);
    font-size: .78rem;
    line-height: 1.4;
}
.alist-bulk-fails b { color: var(--text-primary); font-weight: 650; }
.alist-bulk-more { list-style: none; margin-inline-start: -1.1rem; }
#adCloneGo:disabled {
    background: var(--input-bg);
    border-color: var(--border-color);
    color: var(--text-secondary);
    opacity: 1;
    cursor: not-allowed;
}
#adCloneTargetBox select[multiple] { min-height: 7.5rem; }
#adCloneMedia[hidden],
#adCloneTarget[hidden],
#adCloneTargetBox[hidden],
#adCloneTargetMix[hidden],
#adCloneTargetOne[hidden],
#adCloneTargetLead[hidden],
[data-clone-tgt][hidden],
.ad-clone-file-clear[hidden] { display: none !important; }
@media (max-width: 640px) {
    .ad-clone-grid { grid-template-columns: 1fr; }
}

.ad-card { position: relative; }
.ad-card-link {
    display: inline-block;
    margin: 0 0 8px;
    padding: 0;
    border: 0;
    background: none;
    color: var(--accent-color, #35a3f6);
    font: inherit;
    font-size: 14px;
    font-weight: 600;
    line-height: 18px;
    cursor: pointer;
    text-align: left;
}
#adCardStartOpen,
#adCardEndOpen {
    display: block;
    margin: 8px 13px 0;
}
.ad-card-link:hover { text-decoration: underline; }
.ad-card-link:disabled,
.ad-card-link.is-off { opacity: .45; pointer-events: none; text-decoration: none; }
.ad-card-link[hidden],
#adCardDailyBox[hidden],
#adCardStartBox[hidden],
#adCardEndBox[hidden],
#adCardSchedMini[hidden],
#adCardSchedSum[hidden],
#adCardSchedPop[hidden] { display: none !important; }
.ad-card-label-row .ad-card-link { margin: 0; }
.ad-card-budget-head .ad-card-label { flex: 1 1 auto; min-width: 0; }
.ad-card-budget-head .ad-card-link { flex: 0 0 auto; white-space: nowrap; }
.ad-card-check.is-locked { opacity: .4; pointer-events: none; }
.ad-card-when {
    display: flex;
    align-items: center;
    gap: 8px;
}
.ad-card-when .ad-card-box { flex: 1 1 0; min-width: 0; }
.ad-card-tz {
    flex: 0 0 auto;
    color: var(--text-secondary);
    font-size: 12px;
    white-space: nowrap;
}
.ad-card-tip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    margin-left: 4px;
    border-radius: 50%;
    background: var(--ad-field-line, #d9d9d9);
    color: var(--text-secondary);
    font-size: 11px;
    font-weight: 700;
    vertical-align: 1px;
    cursor: help;
}
.ad-card-sched-mini {
    display: block;
    width: 100%;
    margin: 0 0 8px;
    padding: 6px;
    border: 0;
    border-radius: var(--ad-radius, 6px);
    background: var(--ad-field-bg, var(--input-bg));
    box-shadow: inset 0 0 0 1px var(--ad-field-line, #d9d9d9);
    cursor: pointer;
}
.ad-card-sched-mini:disabled { cursor: default; }
.ad-card-sched-sum {
    margin: 0 0 10px;
    color: var(--text-secondary);
    font-size: 13px;
    line-height: 18px;
}
.ad-card-sched-sum b { color: var(--text-primary); font-weight: 600; }
.ad-card-sched-pop {
    position: absolute;
    inset: 0;
    z-index: 5;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: 24px 16px;
    background: rgba(8, 12, 24, .55);
    overflow: auto;
}
.ad-card-sched-box {
    width: min(720px, 100%);
    padding: 16px 16px 14px;
    border-radius: 10px;
    background: var(--bg-card);
    box-shadow: 0 12px 40px rgba(0, 0, 0, .35);
}
.ad-card-sched-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 10px;
}
.ad-card-sched-head .ad-card-link { margin: 0; }
.ad-card-sched-grid { overflow-x: auto; margin-bottom: 8px; }
.ad-card-sched-table { border-collapse: separate; border-spacing: 2px; }
.ad-card-sched-table th,
.ad-card-sched-table td {
    padding: 0;
    font-size: 10px;
    font-weight: 600;
    color: var(--text-secondary);
    text-align: center;
}
.ad-card-sched-table th { padding: 0 1px 4px; }
.ad-card-sched-table .ad-sched-day { width: 28px; text-align: left; }
.ad-sched-cell {
    width: 18px;
    height: 18px;
    border-radius: 2px;
    background: var(--ad-field-line, #d9d9d9);
    cursor: pointer;
}
.ad-sched-cell.is-on { background: var(--accent-color, #35a3f6); }
.ad-card-sched-mini .ad-sched-cell {
    width: 8px;
    height: 8px;
    cursor: inherit;
}
.ad-card-sched-mini .ad-card-sched-table th {
    font-size: 0;
    line-height: 0;
    padding: 0;
}
.ad-card-sched-mini .ad-sched-day { width: 0; }
.ad-card-sched-pick {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}
.ad-card-sched-pick .ad-card-select { width: auto; min-width: 8rem; margin-left: auto; }
.ad-card-sched-actions {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 16px;
    margin-top: 12px;
}
.ad-card-sched-actions .ad-card-save { width: auto; margin: 0; }

.alist-ai-btn {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    height: var(--alist-h);
    padding: 0 .75rem;
    border: 1px solid var(--border-color);
    border-radius: .45rem;
    background: var(--input-bg);
    color: var(--text-primary);
    font-size: .78rem;
    font-weight: 700;
    line-height: 1;
    white-space: nowrap;
}
.alist-ai-btn i { color: #a5b4fc; font-size: .85rem; }
.alist-ai-btn:hover,
.alist-ai-btn:focus-visible {
    border-color: rgba(124, 92, 252, .55);
    color: var(--text-primary);
}
.alist-table tr.is-verdict > td { background: var(--mark-bg); }

.verdict-modal .modal-dialog { max-width: 28.5rem; }
.verdict-card.modal-content {
    position: relative;
    display: flex;
    flex-direction: column;
    max-height: calc(100vh - 3rem);
    overflow: hidden;
    border: 0;
    border-radius: 16px;
    padding: 0;
    color: var(--text-primary);
    background: var(--bg-card);
    box-shadow: inset 0 0 0 1px var(--border-color), var(--shadow-md);
}
.verdict-x {
    position: absolute;
    top: .7rem;
    inset-inline-end: .7rem;
    z-index: 2;
    width: 1.7rem;
    height: 1.7rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: .35rem;
    background: transparent;
    color: var(--text-secondary);
}
.verdict-x:hover { background: rgba(148, 163, 184, .14); color: var(--text-primary); }
.verdict-head { padding: .9rem 1rem .7rem; }
.verdict-kicker {
    display: flex;
    align-items: center;
    gap: .4rem;
    margin: 0;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--text-secondary);
}
.verdict-ic {
    width: 1.15rem;
    height: 1.15rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 5px;
    background: #7c5cfc;
    color: #fff;
    font-size: .68rem;
}
.verdict-title {
    margin: .35rem 0 0;
    font-size: 1.15rem;
    font-weight: 800;
    letter-spacing: .01em;
    line-height: 1.15;
}
.verdict-sub {
    margin: .28rem 2rem 0 0;
    color: var(--text-secondary);
    font-size: .75rem;
    line-height: 1.35;
}
.verdict-sum {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .5rem;
    padding: 0 1rem .75rem;
}
.verdict-sum article {
    padding: .6rem .7rem .65rem;
    border-radius: 12px;
    background: var(--input-bg);
    box-shadow: inset 0 0 0 1px var(--border-color);
}
.verdict-sum span {
    display: block;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--text-secondary);
}
.verdict-sum strong {
    display: block;
    margin-top: .12rem;
    font-size: 1.15rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    line-height: 1.2;
}
.verdict-sum .is-loss strong { color: #f87171; }
.verdict-sum .is-up strong { color: var(--mark-color); }
.verdict-sum small {
    display: block;
    margin-top: .1rem;
    color: var(--text-secondary);
    font-size: .72rem;
}
.verdict-busy,
.verdict-none {
    margin: 0;
    padding: .2rem 1rem .85rem;
    color: var(--text-secondary);
    font-size: .8rem;
}
.verdict-busy[hidden],
.verdict-none[hidden] { display: none; }
.verdict-list {
    margin: 0;
    padding: 0 0 .25rem;
    list-style: none;
    overflow: auto;
}
.verdict-list li + li { border-top: 1px solid var(--border-color); }
.verdict-row {
    width: 100%;
    display: grid;
    grid-template-columns: 6.7rem minmax(0, 1fr) auto;
    gap: .12rem .55rem;
    align-items: baseline;
    padding: .62rem 1rem;
    border: 0;
    background: transparent;
    color: inherit;
    text-align: start;
    cursor: pointer;
}
.verdict-row:hover { background: rgba(148, 163, 184, .08); }
.verdict-tag {
    font-size: .64rem;
    font-weight: 700;
    letter-spacing: .03em;
    text-transform: uppercase;
    line-height: 1.2;
    color: var(--text-secondary);
}
.verdict-row.is-loss .verdict-tag,
.verdict-row.is-loss .verdict-eur { color: #f87171; }
.verdict-row.is-up .verdict-tag,
.verdict-row.is-up .verdict-eur { color: var(--mark-color); }
.verdict-name {
    font-weight: 650;
    font-size: .84rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.verdict-eur {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    font-size: .84rem;
    white-space: nowrap;
}
.verdict-why {
    grid-column: 2 / -1;
    color: var(--text-secondary);
    font-size: .75rem;
    line-height: 1.35;
}
.verdict-foot {
    padding: .7rem 1rem .9rem;
    border-top: 1px solid var(--border-color);
}
.verdict-close {
    width: 100%;
    height: 2.125rem;
    border: 0;
    border-radius: .45rem;
    background: var(--accent-color);
    color: #fff;
    font-size: .8rem;
    font-weight: 700;
}
.verdict-close:hover { background: var(--accent-hover); color: #fff; }

#adMatrix [hidden] { display: none !important; }
#adMatrix .ad-matrix-h {
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.3;
}
#adMatrix .ad-matrix-hint,
#adMatrix .ad-matrix-hold,
#adMatrix .ad-matrix-note {
    margin: 0 0 .65rem;
    font-size: .82rem;
    line-height: 1.4;
    color: var(--text-secondary);
}
#adMatrix .ad-matrix-note { white-space: pre-wrap; color: var(--text-secondary); margin-top: .55rem; }
#adMatrix .ad-matrix-note.is-bad { color: #e54d4d; }
#adMatrix .ad-matrix-shared {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .55rem;
    margin-bottom: .55rem;
    align-items: start;
}
#adMatrix .ad-matrix-budget-col {
    display: flex;
    flex-direction: column;
    gap: .35rem;
    min-width: 0;
}
#adMatrix .ad-matrix-budget-col > .ad-card-link { margin: 0; font-size: .78rem; align-self: flex-start; }
#adMatrix .ad-matrix-budget-col .ad-matrix-field-top { justify-content: flex-start; gap: .65rem; }
#adMatrix .ad-matrix-budget-col .ad-matrix-field-top .ad-card-link { margin: 0; font-size: .78rem; }
#adMatrix .ad-matrix-budget-col .ad-matrix-hint { margin: 0; }
#adMatrix .ad-matrix-sched { margin: .15rem 0 .85rem; }
#adMatrix .ad-matrix-sched .ad-card-label { margin-bottom: .25rem; }
#adMatrix .ad-matrix-look { display: flex; flex-direction: column; gap: .35rem; }
#adMatrix .ad-matrix-look-ad {
    display: grid;
    grid-template-columns: 1.4rem minmax(0, 1fr);
    gap: .1rem .55rem;
    align-items: start;
    padding: .45rem .65rem;
    border-radius: var(--ad-radius, 6px);
    background: var(--ad-field-bg, var(--input-bg));
    box-shadow: inset 0 0 0 1px var(--ad-field-line, #d9d9d9);
}
#adMatrix .ad-matrix-look-n {
    grid-row: 1 / span 2;
    color: var(--text-secondary);
    font-size: .75rem;
    line-height: 1.35;
    padding-top: .05rem;
}
#adMatrix .ad-matrix-look-text {
    color: var(--text-primary);
    font-size: .84rem;
    font-weight: 650;
    line-height: 1.35;
}
#adMatrix .ad-matrix-look-meta {
    color: var(--text-secondary);
    font-size: .75rem;
    line-height: 1.35;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
#adMatrix .ad-matrix-look-ad.is-bad .ad-matrix-look-meta { color: #e54d4d; }
#adMatrix .ad-matrix-look-ad.is-done .ad-matrix-look-text,
#adMatrix .ad-matrix-look-ad.is-done .ad-matrix-look-meta { color: var(--text-secondary); }
#adMatrix .ad-matrix-look-more {
    color: var(--text-secondary);
    font-size: .78rem;
    padding: .15rem .2rem 0;
}
#adMatrix .ad-matrix-cpm-lab {
    display: flex;
    align-items: center;
    gap: .4rem;
    min-width: 0;
}
#adMatrix .ad-matrix-cpm-extra {
    font-size: .68rem;
    font-weight: 650;
    line-height: 1;
    color: #e8a04a;
}
#adMatrix .ad-matrix-flags {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .35rem 1.25rem;
    margin: 0 0 .85rem;
}
#adMatrix .ad-matrix-flag {
    display: flex;
    align-items: center;
    gap: .45rem;
    margin: 0;
    color: var(--text-primary);
    font-size: .84rem;
    font-weight: 550;
}
#adMatrix .ad-matrix-flag .form-check-input {
    margin: 0;
    float: none;
    flex: none;
}
#adMatrix .ad-matrix-field {
    display: flex;
    flex-direction: column;
    gap: .3rem;
    min-width: 0;
    margin: 0;
    font-size: .78rem;
    font-weight: 650;
    color: var(--text-secondary);
}
#adMatrix .ad-matrix-field-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
}
#adMatrix .ad-matrix-scope { display: flex; gap: .3rem; flex: none; }
#adMatrix .ad-matrix-scope-btn {
    border: 0;
    border-radius: 999px;
    padding: .18rem .6rem;
    background: var(--ad-field-bg, var(--input-bg));
    box-shadow: inset 0 0 0 1px var(--ad-field-line, #d9d9d9);
    color: var(--text-primary);
    font: inherit;
    font-size: .72rem;
    font-weight: 650;
    cursor: pointer;
}
#adMatrix .ad-matrix-scope-btn.is-on {
    background: var(--accent-color);
    box-shadow: none;
    color: #fff;
}
#adMatrix .ad-matrix-area {
    resize: vertical;
    min-height: 4.5rem;
    line-height: 1.35;
}
#adMatrix .ad-matrix-types,
#adMatrix .ad-matrix-join {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
    margin: 0 0 .65rem;
}
#adMatrix .ad-matrix-type,
#adMatrix .ad-matrix-join-btn {
    border: 0;
    border-radius: 999px;
    padding: .28rem .75rem;
    background: var(--ad-field-bg, var(--input-bg));
    box-shadow: inset 0 0 0 1px var(--ad-field-line, #d9d9d9);
    color: var(--text-primary);
    font: inherit;
    font-size: .78rem;
    font-weight: 650;
    cursor: pointer;
}
#adMatrix .ad-matrix-type.is-on,
#adMatrix .ad-matrix-join-btn.is-on {
    background: var(--accent-color);
    box-shadow: none;
    color: #fff;
}
#adMatrix .ad-card-dialog { max-width: min(1080px, calc(100vw - 2rem)); }
#adMatrix.is-search .ad-matrix-axes { grid-template-columns: 1fr 1fr; }
#adMatrix .ad-matrix-axes {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .75rem;
    align-items: stretch;
}
#adMatrix .ad-matrix-col {
    display: grid;
    grid-template-rows: auto 1.9rem 11rem auto;
    gap: .35rem;
    min-width: 0;
}
#adMatrix .ad-matrix-box { height: 11rem; min-height: 0; }
#adMatrix .ad-matrix-pad {
    display: flex;
    height: 100%;
    overflow: hidden;
    border-radius: var(--ad-radius, 6px);
    background: var(--ad-field-bg, var(--input-bg));
    box-shadow: inset 0 0 0 1px var(--ad-field-line, #d9d9d9);
}
#adMatrix .ad-matrix-pad:focus-within {
    box-shadow: inset 0 0 0 2px var(--ad-field-focus, #35a3f6);
}
#adMatrix .ad-matrix-pad:has(.ad-matrix-area[hidden]) { display: none; }
#adMatrix .ad-matrix-nums {
    flex: none;
    width: 1.85rem;
    margin: 0;
    padding: 11px 4px 11px 2px;
    overflow: hidden;
    box-sizing: border-box;
    color: var(--text-tertiary, var(--text-secondary));
    font-size: 12px;
    line-height: 18px;
    text-align: right;
    white-space: pre;
    user-select: none;
    pointer-events: none;
}
#adMatrix .ad-matrix-pad .ad-matrix-area {
    flex: 1 1 auto;
    width: auto;
    min-width: 0;
    height: 100%;
    margin: 0;
    padding: 11px 12px 11px 4px;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    line-height: 18px;
    resize: none;
    white-space: pre;
    overflow-wrap: normal;
    word-break: normal;
    overflow-x: auto;
}
#adMatrix .ad-matrix-pad .ad-matrix-area:focus { box-shadow: none; }
#adMatrix .ad-matrix-box .ad-matrix-area,
#adMatrix .ad-matrix-box .ad-matrix-auto-sum {
    height: 100%;
    min-height: 0;
    margin: 0;
}
#adMatrix .ad-matrix-start-check { margin-top: .15rem; }
#adMatrix .ad-matrix-from {
    display: flex;
    align-items: center;
    gap: .45rem;
}
#adMatrix .ad-matrix-from label {
    margin: 0;
    white-space: nowrap;
    font-size: .78rem;
    font-weight: 650;
}
#adMatrix #adMatrixFrom {
    width: 4.5rem;
    flex: none;
    text-align: center;
    padding-left: .35rem;
    padding-right: .35rem;
    -moz-appearance: textfield;
}
#adMatrix #adMatrixFrom::-webkit-outer-spin-button,
#adMatrix #adMatrixFrom::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
#adMatrix .ad-matrix-preview-h {
    margin: .85rem 0 .4rem;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--text-secondary);
}
#adMatrix .ad-matrix-table-wrap { overflow-x: auto; }
#adMatrix .ad-matrix-table {
    width: 100%;
    border-collapse: collapse;
    font-size: .78rem;
    line-height: 1.35;
}
#adMatrix .ad-matrix-table th,
#adMatrix .ad-matrix-table td {
    padding: .35rem .45rem;
    border-bottom: 1px solid var(--border-color);
    text-align: start;
    vertical-align: top;
}
#adMatrix .ad-matrix-table th {
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .03em;
    text-transform: uppercase;
    color: var(--text-secondary);
}
#adMatrix .ad-matrix-table td { color: var(--text-primary); }
#adMatrix .ad-matrix-clip {
    max-width: 14rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
#adMatrix .ad-matrix-table tr.is-bad td { color: #e54d4d; }
#adMatrix .ad-matrix-table tr.is-done td { color: var(--text-secondary); }
#adMatrix .ad-matrix-more {
    padding: .4rem .45rem;
    font-size: .78rem;
    color: var(--text-secondary);
}
#adMatrix .ad-matrix-foot {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: .65rem;
}
#adMatrix .ad-card-terms { display: flex; }
#adMatrix .ad-card-msg,
#adMatrix .ad-card-save-row,
#adMatrix .ad-card-split-progress { max-width: none; width: 100%; margin-top: 0; }
#adMatrix.is-busy .modal-body { opacity: .55; pointer-events: none; }
#adMatrix.is-busy .ad-matrix-foot .ad-card-save-row { pointer-events: none; }
#adMatrix .ad-matrix-tpl-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .45rem .85rem;
    margin: .15rem 0 .85rem;
}
#adMatrix .ad-matrix-inline,
#adMatrix .ad-matrix-name > span {
    margin: 0;
    font-size: .78rem;
    font-weight: 650;
    color: var(--text-secondary);
}
#adMatrix .ad-matrix-name {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .4rem .75rem;
    min-width: 0;
}
#adMatrix .ad-matrix-field--n { max-width: 7.5rem; }
#adMatrix .ad-matrix-radios {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem .8rem;
    color: var(--text-primary);
    font-weight: 550;
}
#adMatrix .ad-matrix-radios label {
    display: flex;
    align-items: center;
    gap: .35rem;
    margin: 0;
}
#adMatrix .ad-matrix-kicker {
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--text-secondary);
}
#adMatrix .ad-matrix-kicker span {
    letter-spacing: 0;
    text-transform: none;
    font-weight: 550;
}
#adMatrix .ad-matrix-pic { margin: .15rem 0 .85rem; }
#adMatrix .ad-matrix-pic-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .55rem .75rem;
}
#adMatrix .ad-matrix-file,
#adMatrix .ad-matrix-link {
    border: 0;
    background: none;
    padding: 0;
    color: var(--accent-color);
    font: inherit;
    font-size: .78rem;
    font-weight: 650;
    cursor: pointer;
}
#adMatrix .ad-matrix-file {
    border-radius: .4rem;
    padding: .35rem .7rem;
    background: var(--ad-field-bg, var(--input-bg));
    box-shadow: inset 0 0 0 1px var(--ad-field-line, #d9d9d9);
    color: var(--text-primary);
}
#adMatrix .ad-card-body > .ad-matrix-field { margin-bottom: .45rem; }
#adMatrix .ad-matrix-sheet-h {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: .75rem;
    flex-wrap: nowrap;
    margin: .15rem 0 .5rem;
    font-size: .78rem;
    font-weight: 700;
}
#adMatrix .ad-matrix-sheet-h span:last-child { flex: none; white-space: nowrap; }
#adMatrix .ad-matrix-rule {
    margin: -.15rem 0 .65rem;
    color: var(--text-primary);
    font-size: .84rem;
    font-weight: 650;
    line-height: 1.35;
}
#adMatrix .ad-matrix-col-top {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: .05rem;
    min-width: 0;
}
#adMatrix .ad-matrix-per {
    color: var(--accent-color);
    font-size: .72rem;
    font-weight: 700;
    line-height: 1.2;
}
#adMatrix .ad-matrix-sheet-h span:last-child,
#adMatrix .ad-matrix-lines,
#adMatrix .ad-matrix-sub {
    font-weight: 550;
    color: var(--text-secondary);
}
#adMatrix .ad-matrix-col-h { color: var(--text-primary); font-weight: 700; }
#adMatrix .ad-matrix-check {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: .45rem .7rem;
    height: 1.9rem;
    min-height: 1.9rem;
    margin: 0;
    color: var(--text-primary);
    font-weight: 550;
}
#adMatrix .ad-matrix-check .form-check-input {
    margin: 0;
    float: none;
    flex: none;
}
#adMatrix .ad-matrix-check label {
    display: flex;
    align-items: center;
    gap: .4rem;
    margin: 0;
}
#adMatrix .ad-matrix-area { min-height: 0; resize: none; }
#adMatrix .ad-matrix-auto-sum {
    margin: 0;
    min-height: 0;
    padding: .75rem .85rem;
    border-radius: var(--ad-radius, 6px);
    background: var(--ad-field-bg, var(--input-bg));
    box-shadow: inset 0 0 0 1px var(--ad-field-line, #d9d9d9);
    color: var(--text-primary);
    font-size: .82rem;
    line-height: 1.4;
    font-weight: 550;
    word-break: break-all;
}
.ad-matrix-url-dialog { max-width: 28rem; }
#adMatrixUrl .ad-matrix-h {
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.3;
}
#adMatrixUrl .ad-matrix-hint {
    margin: 0 0 .9rem;
    font-size: .82rem;
    line-height: 1.45;
    color: var(--text-secondary);
}
#adMatrixUrl .ad-matrix-field {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: .28rem;
    width: 100%;
    margin: 0 0 .8rem;
    font-size: .78rem;
    font-weight: 650;
    color: var(--text-secondary);
}
#adMatrixUrl .ad-matrix-sub {
    font-size: .75rem;
    font-weight: 550;
    line-height: 1.35;
    color: var(--text-secondary);
}
#adMatrixUrl .ad-matrix-url-foot {
    justify-content: flex-end;
    gap: .65rem;
}
@media (max-width: 800px) {
    #adMatrix .ad-matrix-shared,
    #adMatrix .ad-matrix-axes { grid-template-columns: 1fr; }
    #adMatrix .ad-matrix-sheet-h { flex-wrap: wrap; }
    #adMatrix .ad-matrix-col { grid-template-rows: auto 1.9rem 9rem auto; }
    #adMatrix .ad-matrix-box { height: 9rem; }
}

/* Сравнение объявлений: широкая таблица, график под ней. */
.ad-compare-dialog { max-width: min(72rem, calc(100vw - 1.5rem)); }
.ad-compare-tools {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem .75rem;
    margin-bottom: .85rem;
}
.ad-compare-periods { display: inline-flex; flex-wrap: wrap; gap: .35rem; }
.ad-compare-period,
.ad-compare-copy {
    border: 1px solid var(--bs-border-color, rgba(0, 0, 0, .12));
    background: transparent;
    color: var(--text-primary);
    border-radius: .4rem;
    padding: .28rem .65rem;
    font: inherit;
    font-size: .8rem;
    font-weight: 650;
    line-height: 1.2;
    cursor: pointer;
}
.ad-compare-period.is-on {
    background: var(--accent-color, #2f6b45);
    border-color: transparent;
    color: #fff;
}
.ad-compare-period:hover:not(.is-on),
.ad-compare-copy:hover:not(:disabled) { border-color: var(--accent-color, #2f6b45); }
.ad-compare-copy:disabled { opacity: .45; cursor: default; }
.ad-compare-copy { margin-inline-start: auto; }
.ad-compare-diff {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    margin: 0;
    font-size: .84rem;
    font-weight: 550;
    cursor: pointer;
}
.ad-compare-msg {
    margin: 0 0 .75rem;
    color: var(--bs-danger-text-emphasis, #9f2d2d);
    font-size: .88rem;
}
.ad-compare-msg[hidden],
.ad-compare-empty[hidden],
.ad-compare-chart[hidden] { display: none !important; }
.ad-compare-leaders {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem 1.5rem;
    margin: 0 0 1rem;
}
.ad-compare-leaders[hidden] { display: none !important; }
.ad-compare-lead {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: .12rem;
    margin: 0;
    padding: 0;
    border: 0;
    background: none;
    color: inherit;
    text-align: left;
    cursor: pointer;
}
.ad-compare-lead-val {
    font-size: 1.35rem;
    font-weight: 700;
    line-height: 1.15;
    font-variant-numeric: tabular-nums;
    color: var(--bs-success-text-emphasis, #146c43);
}
.ad-compare-lead-lab {
    max-width: 16rem;
    font-size: .75rem;
    font-weight: 600;
    line-height: 1.3;
    color: var(--text-secondary, #66788a);
    white-space: normal;
    overflow-wrap: anywhere;
}
.ad-compare-lead:hover .ad-compare-lead-lab { color: var(--accent-color, #35a3f6); }
.ad-compare-scroll { overflow: auto; }
#adCompare .ad-compare {
    width: max-content;
    border-collapse: separate;
    border-spacing: 0;
    font-size: .84rem;
}
#adCompare .ad-compare th,
#adCompare .ad-compare td {
    padding: .4rem .7rem;
    border-bottom: 1px solid var(--bs-border-color, rgba(0, 0, 0, .08));
    vertical-align: middle;
}
#adCompare .ad-compare thead th { vertical-align: bottom; overflow: hidden; }
#adCompare .ad-compare th.ad-compare-lab,
#adCompare .ad-compare td.ad-compare-lab {
    position: sticky;
    left: 0;
    z-index: 2;
    width: 8.25rem;
    min-width: 8.25rem;
    background: var(--bs-modal-bg, var(--bs-body-bg));
    font-weight: 650;
    text-align: left;
    white-space: nowrap;
    box-shadow: 1px 0 0 var(--bs-border-color, rgba(0, 0, 0, .08));
}
#adCompare .ad-compare td.is-num {
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
#adCompare .ad-compare td.is-text {
    white-space: normal;
    overflow-wrap: anywhere;
}
#adCompare .ad-compare td.is-best {
    color: var(--bs-success-text-emphasis, #146c43);
    font-weight: 700;
}
#adCompare .ad-compare td.is-best::after {
    content: " · " attr(data-best);
    font-weight: 600;
    font-size: .78em;
}
.ad-compare-head {
    width: 12rem;
    max-width: 12rem;
}
.ad-compare-name {
    display: block;
    width: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    background: none;
    color: var(--accent-color, #35a3f6);
    font: inherit;
    font-weight: 700;
    font-size: .78rem;
    line-height: 1.3;
    text-align: right;
    white-space: normal;
    overflow-wrap: anywhere;
    cursor: pointer;
}
.ad-compare-name:hover { text-decoration: underline; }
#adCompare .ad-compare td .ad-status {
    font-size: .75rem;
    white-space: nowrap;
}
.ad-compare-chart-title {
    margin: 1.1rem 0 .35rem;
    font-size: .95rem;
    font-weight: 700;
}
.ad-compare-empty {
    margin: 0;
    color: var(--text-secondary, #66788a);
    font-size: .84rem;
}
.ad-compare-chart { position: relative; height: 260px; }

/* --- Автоматизации (auto.php) --- */
.auto-page [hidden] { display: none !important; }
.auto-top {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .6rem 1rem;
    margin-bottom: 1rem;
}
.auto-top h1 {
    margin: 0;
    font-size: 1.28rem;
    font-weight: 750;
    letter-spacing: -.02em;
    color: var(--text-primary);
}
.auto-tabs {
    display: inline-flex;
    gap: .15rem;
    padding: .2rem;
    border: 1px solid var(--border-color);
    border-radius: .65rem;
    background: var(--bg-card);
}
.auto-tab {
    padding: .3rem .8rem;
    border: 0;
    border-radius: .45rem;
    background: none;
    color: var(--text-secondary);
    font-size: .85rem;
    font-weight: 650;
}
.auto-tab:hover { color: var(--text-primary); }
.auto-tab[aria-selected="true"] { background: var(--icon-bg); color: var(--accent-color); }
.auto-tab-n { margin-inline-start: .35rem; font-weight: 500; opacity: .8; }
.auto-new { margin-inline-start: auto; }

.auto-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1rem;
    align-items: start;
}
.auto-main { min-width: 0; }
.auto-main > .card-box,
.auto-ed .card-box { margin-bottom: 0; }

.auto-empty { margin: 0; padding: 1rem 1.25rem; color: var(--text-secondary); font-size: .88rem; }
.auto-empty-t { margin: 0 0 .35rem; color: var(--text-primary); font-weight: 650; }
.auto-empty-d { margin: 0; line-height: 1.5; }

.auto-rules { display: flex; flex-direction: column; }
.auto-rule {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: .2rem .85rem;
    padding: .9rem 1.25rem;
    border-bottom: 1px solid var(--border-color);
}
.auto-rule:last-child { border-bottom: 0; }
.auto-rule.is-sel { background: var(--icon-bg); }
.auto-rule.is-off .auto-rule-name,
.auto-rule.is-off .auto-rule-say { opacity: .55; }
.auto-rule-sw { margin: .1rem 0 0; padding: 0; min-height: 0; }
.auto-rule-sw .form-check-input { margin: 0; float: none; cursor: pointer; }
.auto-rule-dot {
    width: .6rem;
    height: .6rem;
    margin: .45rem .35rem 0;
    border-radius: 50%;
    background: var(--border-color);
}
.auto-rule-dot.is-on { background: #22c55e; }
.auto-rule-name {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .45rem;
    min-width: 0;
    color: var(--text-primary);
    font-weight: 700;
}
.auto-rule-name > .bi { color: var(--accent-color); }
.auto-rule-cab {
    padding: .05rem .5rem;
    border-radius: 999px;
    background: var(--icon-bg);
    color: var(--text-secondary);
    font-size: .72rem;
    font-weight: 600;
}
.auto-rule-ctl { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: flex-end; gap: .15rem; }
.auto-ctl {
    padding: .15rem .45rem;
    border: 0;
    border-radius: .4rem;
    background: none;
    color: var(--text-secondary);
    font-size: .82rem;
    font-weight: 600;
}
.auto-ctl:hover { background: var(--icon-bg); color: var(--accent-color); }
.auto-ctl.is-danger:hover { background: none; color: #ef4444; }
.auto-rule-ro { color: var(--text-secondary); font-size: .8rem; }
.auto-rule-say,
.auto-rule-meta { grid-column: 2 / 4; }
.auto-rule-say { margin: .2rem 0 0; font-size: .88rem; line-height: 1.5; }
.auto-rule-meta {
    display: flex;
    flex-wrap: wrap;
    gap: .2rem 1.1rem;
    margin-top: .2rem;
    color: var(--text-secondary);
    font-size: .78rem;
}
.auto-rule-meta .is-hot { color: #22c55e; }
.auto-rule-note { color: #f59e0b; }
.auto-say-act { color: var(--accent-color); font-weight: 700; }

.auto-logbar { padding: .65rem 1.25rem; border-bottom: 1px solid var(--border-color); }
.auto-logbar .form-select { width: auto; max-width: 100%; }
.auto-log td { vertical-align: top; }
.auto-log-time { white-space: nowrap; color: var(--text-secondary); }
.auto-log-ad { max-width: 16rem; overflow-wrap: anywhere; }
.auto-log-rule { display: block; color: var(--text-secondary); font-size: .76rem; }
.auto-log-act { display: block; white-space: nowrap; font-weight: 600; }
.auto-log-val { display: block; font-size: .82rem; white-space: nowrap; }
.auto-log-why { max-width: 20rem; color: var(--text-secondary); font-size: .8rem; }
.auto-ok { display: block; color: #22c55e; font-size: .8rem; white-space: nowrap; }
.auto-wait { display: block; color: var(--text-secondary); font-size: .8rem; white-space: nowrap; }
.auto-fail { display: block; color: #f59e0b; font-size: .8rem; }
.auto-pager {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: .75rem 1.25rem;
    border-top: 1px solid var(--border-color);
    font-size: .85rem;
}

.auto-ed { min-width: 0; }
.auto-ed-h { margin-bottom: .9rem; }
.auto-ed-h h2 { margin: 0; font-size: 1.2rem; font-weight: 700; color: var(--text-primary); }
.auto-ed-lead { margin: .3rem 0 0; max-width: 46rem; color: var(--text-secondary); font-size: .88rem; }
.auto-back {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    margin: 0 0 .45rem;
    padding: 0;
    border: 0;
    background: none;
    color: var(--accent-color);
    font-size: .85rem;
    font-weight: 600;
}
.auto-back:hover { color: var(--accent-hover); }
a.auto-back { text-decoration: none; }
.auto-ed-body {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(18rem, 24rem);
    gap: 1rem;
    align-items: start;
}
.auto-ed-side { position: sticky; top: 1rem; min-width: 0; }
.auto-x {
    flex: none;
    width: 2rem;
    height: 2rem;
    border: 0;
    border-radius: .45rem;
    background: none;
    color: var(--text-secondary);
    font-size: 1.15rem;
    line-height: 1;
}
.auto-x:hover:not(:disabled) { background: var(--icon-bg); color: var(--text-primary); }
.auto-x:disabled { opacity: .3; cursor: default; }
.auto-sec { padding: 1rem 1.25rem; border-top: 1px solid var(--border-color); }
.auto-sec:first-child { border-top: 0; }
.auto-sec-h { display: flex; flex-wrap: wrap; align-items: center; gap: .2rem .5rem; margin-bottom: .65rem; }
.auto-sec-n {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.3rem;
    height: 1.3rem;
    border-radius: 50%;
    background: var(--icon-bg);
    color: var(--accent-color);
    font-size: .72rem;
    font-weight: 800;
}
.auto-sec-t { color: var(--text-primary); font-weight: 700; font-size: .92rem; }
.auto-sec-d { color: var(--text-secondary); font-size: .8rem; }
.auto-fld { display: flex; flex-direction: column; gap: .3rem; min-width: 0; margin: 0 0 .65rem; }
.auto-fld:last-child { margin-bottom: 0; }
.auto-fl { color: var(--text-secondary); font-size: .78rem; font-weight: 600; }
.auto-fl-note { font-weight: 400; }
.auto-three { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) minmax(0, 1fr); gap: .65rem; }
.auto-three .auto-fld { margin-bottom: 0; }

.auto-pick {
    margin-top: .65rem;
    border: 1px solid var(--border-color);
    border-radius: .55rem;
    background: var(--input-bg);
}
.auto-pick-top {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .5rem .6rem;
    border-bottom: 1px solid var(--border-color);
}
.auto-pick-top .form-control { min-width: 0; }
.auto-pick-n { margin-inline-start: auto; color: var(--text-secondary); font-size: .8rem; white-space: nowrap; }
.auto-pick-list { max-height: 13rem; overflow-y: auto; padding: .35rem .6rem; }
.auto-pick-list .auto-hint,
.auto-pick-list .auto-err { margin: .35rem 0; }
.auto-pick-row {
    display: flex;
    align-items: center;
    gap: .55rem;
    padding: .3rem 0;
    font-size: .85rem;
    cursor: pointer;
}
.auto-pick-row .form-check-input { margin: 0; flex: none; }
.auto-pick-t { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.auto-pick-id { margin-inline-start: auto; color: var(--text-secondary); font-size: .75rem; }

.auto-conds { display: flex; flex-direction: column; }
.auto-cond {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .45rem;
    padding: .55rem;
    border: 1px solid var(--border-color);
    border-radius: .6rem;
    background: var(--input-bg);
}
.auto-cond > * { flex: 1 1 8rem; min-width: 0; }
.auto-cond > .auto-cond-m { flex: 2 1 13rem; }
.auto-cond > .auto-x { flex: none; }
.auto-join {
    padding: .3rem .6rem;
    color: var(--text-secondary);
    font-size: .72rem;
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.auto-num { position: relative; display: flex; align-items: center; min-width: 0; }
.auto-num .form-control { width: 100%; min-width: 0; padding-inline-end: 2.6rem; font-weight: 600; }
.auto-suf {
    position: absolute;
    inset-inline-end: .65rem;
    color: var(--text-secondary);
    font-size: .8rem;
    pointer-events: none;
}
.auto-num.is-bad .form-control { border-color: #f59e0b; }
.auto-add {
    padding: 0 1rem;
    height: 2.2rem;
    margin-top: .5rem;
    border: 1px dashed var(--border-color);
    border-radius: .55rem;
    background: none;
    color: var(--text-secondary);
    font-size: .85rem;
    font-weight: 600;
}
.auto-add:hover { border-color: var(--accent-color); color: var(--accent-color); }
.auto-hint { margin: .45rem 0 0; color: var(--text-secondary); font-size: .78rem; line-height: 1.45; }

.auto-params {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(12rem, 18rem));
    gap: .65rem 1rem;
    margin-top: .65rem;
}
#autoAct,
#autoEvery,
#autoDelay { max-width: 26rem; }
.auto-fld.auto-delay { margin: .75rem 0 0; }
.auto-delay .auto-hint { margin: 0; }
.auto-params .auto-fld { margin: 0; }
.auto-valrow { display: flex; gap: .45rem; }
.auto-valrow .auto-num { flex: 1; }
.auto-unit {
    display: inline-flex;
    flex: none;
    overflow: hidden;
    border: 1px solid var(--border-color);
    border-radius: .45rem;
}
.auto-unit button {
    min-width: 2.4rem;
    padding: 0 .55rem;
    border: 0;
    background: var(--input-bg);
    color: var(--text-secondary);
    font-weight: 700;
}
.auto-unit button[aria-pressed="true"] { background: var(--accent-color); color: #fff; }
#autoCapMode { width: 100%; margin-top: .4rem; }
#autoCapMode button { flex: 1; white-space: nowrap; }
.auto-notify { display: flex; align-items: center; gap: .5rem; margin: .7rem 0 0; padding: 0; font-size: .85rem; }
.auto-notify .form-check-input { margin: 0; float: none; }

.card-box.auto-ed-f { padding: 1.1rem 1.25rem 1.25rem; }
.auto-side-t {
    margin-bottom: .4rem;
    color: var(--text-secondary);
    font-size: .7rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.auto-sum { margin: 0; font-size: .9rem; line-height: 1.55; color: var(--text-primary); }
.auto-now { margin-top: 1rem; padding-top: .85rem; border-top: 1px solid var(--border-color); font-size: .82rem; color: var(--text-secondary); }
.auto-now #autoNowH { color: var(--text-primary); font-weight: 650; }
.auto-now #autoNowH.is-bad { color: #f59e0b; font-weight: 600; }
.auto-now-list {
    margin-top: .5rem;
    max-height: calc(100vh - 22rem);
    min-height: 8rem;
    overflow-y: auto;
    border: 1px solid var(--border-color);
    border-radius: .55rem;
    background: var(--bg-card);
}
.auto-now-t { width: 100%; border-collapse: collapse; font-size: .8rem; }
.auto-now-t th {
    position: sticky;
    top: 0;
    padding: .4rem .6rem;
    background: var(--bg-card);
    color: var(--text-secondary);
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .05em;
    text-align: start;
    text-transform: uppercase;
}
.auto-now-t td { padding: .45rem .6rem; border-top: 1px solid var(--border-color); vertical-align: top; color: var(--text-primary); }
.auto-now-t td:last-child { text-align: end; white-space: nowrap; }
.auto-now-why { display: block; color: var(--text-secondary); font-size: .74rem; }
.auto-now-t tr.is-hit .auto-now-why { color: #22c55e; }
.auto-now-t td.is-to { font-weight: 700; }
.auto-now-t td.is-miss { color: var(--text-secondary); }
.auto-btns { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .6rem; margin-top: .85rem; }
.auto-bot {
    display: flex;
    gap: .6rem;
    margin-top: .85rem;
    padding: .7rem .8rem;
    border: 1px solid rgba(245, 158, 11, .45);
    border-radius: .6rem;
    background: rgba(245, 158, 11, .08);
    font-size: .84rem;
}
.auto-bot > .bi { flex: none; color: #f59e0b; font-size: 1.05rem; line-height: 1.3; }
.auto-bot p { margin: 0 0 .5rem; color: var(--text-primary); line-height: 1.45; }
.auto-bot p:last-child { margin-bottom: 0; }
.auto-bot .st-go { display: inline-flex; align-items: center; gap: .4rem; text-decoration: none; }
.auto-bot small { display: block; margin-top: .4rem; color: var(--text-secondary); font-size: .76rem; }
.auto-rule-bot a { margin-inline-start: .3rem; }
.auto-notify .form-check-input:disabled + .form-check-label { opacity: 1; }
.auto-btns .st-go { flex: 1; }
.auto-btns .auto-cancel { align-self: stretch; padding-inline: 1rem; }
.auto-why { margin: .5rem 0 0; color: #f59e0b; font-size: .8rem; }
.auto-err { margin: .6rem 0 0; color: #ef4444; font-size: .85rem; }

.auto-ns { grid-column: 2 / 4; margin-top: .35rem; font-size: .8rem; }
.auto-ns > summary { width: max-content; max-width: 100%; color: var(--accent-color); font-weight: 600; cursor: pointer; }
.auto-ns-list {
    margin-top: .45rem;
    max-height: 24rem;
    overflow: auto;
    border: 1px solid var(--border-color);
    border-radius: .55rem;
    background: var(--bg-card);
}
.auto-ns .auto-now-t td { white-space: nowrap; }
.auto-ns .auto-now-t td:first-child { max-width: 16rem; overflow: hidden; text-overflow: ellipsis; }
.auto-ns .auto-now-t td:last-child { min-width: 12rem; text-align: start; white-space: normal; color: var(--text-secondary); }
.auto-ns-dl { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin-top: .5rem; }
.auto-ns-dl .form-select { width: auto; }
#autoModeFld { grid-column: 1 / -1; }
#autoMode { width: 100%; max-width: 37rem; }
#autoMode button { flex: 1; min-height: 2.2rem; white-space: nowrap; }
.auto-log .auto-ok.is-ns { white-space: normal; }

@media (max-width: 991.98px) {
    .auto-ed-body { grid-template-columns: minmax(0, 1fr); }
    .auto-ed-side { position: static; }
    .auto-now-list { max-height: 20rem; }
    .auto-three { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .auto-three > :first-child { grid-column: 1 / -1; }
}
@media (max-width: 575.98px) {
    .auto-new { width: 100%; }
    .auto-rule { padding-inline: .9rem; }
    .auto-sec { padding-inline: 1rem; }
    .auto-three { grid-template-columns: minmax(0, 1fr); }
    .auto-cond > .auto-cond-m { flex-basis: calc(100% - 2.5rem); }
}
/* Настройки: тулбар + таблица, ширина как у Analytics. */

.st-page.container {
    padding-top: .15rem;
    padding-bottom: 4rem;
}
.st-page.is-solo {
    max-width: 40rem;
    margin-inline: auto;
}
.st-page.is-solo .st-hello {
    max-width: 26rem;
    margin-inline: auto;
}

.st-set {
    display: grid;
    grid-template-columns: minmax(11rem, 13rem) minmax(0, 1fr);
    gap: .75rem 1.1rem;
    align-items: start;
}
.st-set-side {
    display: flex;
    flex-direction: column;
    gap: .12rem;
    padding: .1rem 0;
}
.st-set-link {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin: 0;
    padding: .5rem .7rem;
    border-radius: .5rem;
    color: var(--text-primary);
    font-size: .85rem;
    font-weight: 650;
    line-height: 1.2;
    text-decoration: none;
}
.st-set-link i {
    flex: none;
    font-size: 1.02rem;
    color: var(--text-secondary);
}
.st-set-link:hover {
    background: var(--table-hover);
    color: var(--text-primary);
}
.st-set-link.is-on {
    background: var(--icon-bg);
    color: var(--accent-color);
}
.st-set-link.is-on i { color: var(--accent-color); }
.st-set-panel { display: none; }
.st-set-panel.is-on { display: block; }
.st-set-panel .card-box { margin-bottom: 0; }
.st-set-panel .st-pb { margin-top: 0; }
.st-access-tok + .st-access-tok {
    margin-top: 1.25rem;
    padding-top: 1.1rem;
    border-top: 1px solid var(--border-color);
}
.st-access-head { margin: 0 0 .85rem; }
.st-access-name {
    margin: 0;
    font-size: 1.08rem;
    font-weight: 750;
    letter-spacing: -.02em;
    line-height: 1.25;
    color: var(--text-primary);
    text-transform: none;
}
.st-access-cablist {
    list-style: none;
    margin: .4rem 0 0;
    padding: 0;
}
.st-access-cablist li {
    margin: 0;
    padding: .12rem 0;
    font-size: .95rem;
    font-weight: 700;
    color: var(--text-primary);
}
.st-access-note {
    margin: .4rem 0 0;
    color: var(--text-secondary);
    font-size: .8rem;
    line-height: 1.4;
}
.st-access-pick {
    list-style: none;
    margin: .55rem 0 .75rem;
    padding: 0;
}
.st-access-pick li { margin: 0; padding: 0; }
.st-access-pick label {
    display: flex;
    align-items: center;
    gap: .55rem;
    margin: 0;
    padding: .18rem 0;
    font-size: .95rem;
    font-weight: 700;
    color: var(--text-primary);
    cursor: pointer;
}
.st-access-pick input { margin: 0; flex: none; }
.st-invite-card { margin-top: .9rem; }
.st-invite-card .st-access-note { margin-bottom: .35rem; }
.st-access-head .st-muted { margin-top: .3rem; }

.st-hello { padding: 7vh 0 3rem; }
.st-hello h1,
.st-bar h1 {
    margin: 0;
    font-size: 1.28rem;
    font-weight: 750;
    letter-spacing: -.02em;
    color: var(--text-primary);
}
.st-lead {
    margin: .45rem 0 1.2rem;
    color: var(--text-secondary);
    font-size: .92rem;
    line-height: 1.45;
}

.st-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .6rem 1.25rem;
    padding: .55rem 1.25rem;
    border-bottom: 1px solid var(--border-color);
}
.st-go {
    flex: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 2.125rem;
    padding: 0 1.05rem;
    border: 0;
    border-radius: .45rem;
    background: var(--accent-color);
    color: #fff;
    font-size: .8rem;
    font-weight: 700;
    line-height: 1;
    white-space: nowrap;
    text-decoration: none;
}
.st-go:hover { background: var(--accent-hover); color: #fff; }
.st-go:disabled { opacity: .55; cursor: default; pointer-events: none; }
.st-go--sm { height: 2rem; font-size: .78rem; padding: 0 .9rem; }
.st-go--block { width: 100%; height: 2.5rem; }
.st-go--danger { background: #dc2626; }
.st-go--danger:hover { background: #b91c1c; color: #fff; }

.st-safe {
    margin: .55rem 0 0;
    color: var(--text-secondary);
    font-size: .75rem;
    line-height: 1.4;
}
.st-help-links {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem .9rem;
    margin-top: .35rem;
}
.st-safe-link {
    display: inline;
    padding: 0;
    border: 0;
    background: none;
    color: var(--accent-color);
    font-size: .78rem;
    font-weight: 650;
    line-height: 1.3;
    text-align: start;
    text-decoration: underline;
    text-underline-offset: .15em;
}
.st-safe-link:hover,
.st-safe-link:focus-visible { color: var(--accent-hover); }
.st-safe-box {
    margin-top: .55rem;
    color: var(--text-secondary);
    font-size: .8rem;
    line-height: 1.45;
}
.st-safe-box p { margin: 0; }
.st-safe-box p + p { margin-top: .45rem; }
.st-textbtn {
    display: inline;
    padding: 0;
    border: 0;
    background: none;
    color: var(--accent-color);
    font-size: inherit;
    font-weight: 650;
    line-height: inherit;
    text-align: start;
    text-decoration: none;
    box-shadow: none;
}
.st-textbtn:focus { outline: none; }
.st-textbtn:hover,
.st-textbtn:focus-visible { color: var(--accent-hover); text-decoration: underline; }
.st-textbtn.is-danger { color: #ef4444; font-weight: 600; }
.st-textbtn.is-danger:hover { color: #dc2626; }

.st-table {
    width: 100%;
    border-collapse: collapse;
    font-size: .85rem;
}
.st-table th,
.st-table td {
    padding: .7rem .5rem;
    border-bottom: 1px solid var(--border-color);
    vertical-align: middle;
    text-align: start;
}
.st-table th:first-child,
.st-table td:first-child { padding-left: 1.25rem; }
.st-table th:last-child,
.st-table td:last-child { padding-right: 1.25rem; }
.st-table tbody tr:last-child td { border-bottom: 0; }
.st-table thead th {
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--text-secondary);
    padding-top: .85rem;
    padding-bottom: .55rem;
}
.st-table tbody tr:hover td { background: var(--table-hover); }
.st-table tbody tr.st-share-row:hover td,
.st-table tbody tr.st-err:hover td,
.st-table tbody tr.st-note:hover td { background: transparent; }

.st-cab {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem 1rem;
    min-width: 0;
}
.st-cab-id { min-width: 0; }
.st-cab-go {
    display: inline-flex;
    flex: none;
    align-items: stretch;
    height: 2rem;
    padding: 2px;
    gap: 2px;
    border: 1px solid var(--border-color);
    border-radius: .5rem;
    background: var(--input-bg);
}
.st-jump {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: 0 .7rem;
    border: 0;
    border-radius: .4rem;
    background: transparent;
    color: var(--text-primary);
    font-size: .78rem;
    font-weight: 700;
    line-height: 1;
    text-decoration: none;
    white-space: nowrap;
}
.st-jump i { font-size: .9rem; opacity: .85; }
.st-jump:hover,
.st-jump:focus-visible {
    background: var(--accent-color);
    color: #fff;
    outline: none;
}
.st-jump:hover i,
.st-jump:focus-visible i { opacity: 1; }
.st-name {
    color: inherit;
    font-weight: 650;
    font-size: .85rem;
}
.st-name em {
    margin-inline-start: .3rem;
    font-style: normal;
    font-size: .65rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--accent-color);
    vertical-align: .08em;
}
.st-num,
.st-when,
.st-act { width: 1%; }
.st-num {
    text-align: end !important;
    font-weight: 650;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.st-cab-table thead th:nth-child(n+2) { width: 1%; white-space: nowrap; }
.st-cab-table thead th:nth-child(2) { text-align: end; }
.st-when {
    color: var(--text-secondary);
    font-size: .8rem;
    white-space: nowrap;
}
.st-from,
.st-empty,
.st-muted {
    margin: .2rem 0 0;
    color: var(--text-secondary);
    font-size: .75rem;
    font-weight: 500;
}
.st-note td {
    color: var(--text-secondary);
    font-size: .78rem;
}

.st-acc {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    padding: .15rem .45rem;
    border: 1px solid var(--border-color);
    border-radius: .35rem;
    background: transparent;
    color: var(--text-primary);
    font-size: .78rem;
    font-weight: 650;
}
.st-acc:hover,
.st-acc[aria-expanded="true"] {
    border-color: var(--accent-color);
    color: var(--accent-color);
}
.st-acc em {
    font-style: normal;
    min-width: 1.05rem;
    padding: 0 .25rem;
    border-radius: 999px;
    background: var(--icon-bg);
    font-size: .68rem;
    font-weight: 700;
    text-align: center;
}

.st-act { width: 1%; white-space: nowrap; }
.st-tools {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .05rem;
}
.st-ico {
    width: 1.85rem;
    height: 1.85rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: .4rem;
    background: transparent;
    color: var(--text-secondary);
    font-size: .9rem;
}
.st-ico:hover { background: var(--bg-card); color: var(--text-primary); }
.st-ico:disabled { opacity: .45; pointer-events: none; }
.st-ico.is-danger:hover { color: #ef4444; background: rgba(239, 68, 68, .1); }

.st-warn {
    margin: 0;
    padding: .4rem .5rem;
    border-radius: .4rem;
    background: rgba(239, 68, 68, .1);
    color: #ef4444;
    font-size: .78rem;
}

.st-share-row td { padding: .85rem 1rem 1.1rem; background: var(--input-bg); }
.st-share-lead {
    margin: 0 0 .65rem;
    color: var(--text-secondary);
    font-size: .8rem;
    line-height: 1.4;
    max-width: 40rem;
}

.st-invite {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
    align-items: center;
    max-width: 42rem;
}
.st-invite .form-control {
    flex: 1 1 14rem;
    min-width: 0;
    min-height: 2rem;
    height: 2rem;
    font-size: .75rem;
}
.st-invite .form-select,
.st-role .form-select,
.st-share-row .form-select {
    min-height: 2rem;
    height: 2rem;
    width: 6.4rem;
    font-size: .78rem;
    padding-top: 0;
    padding-bottom: 0;
}
.st-quiet {
    flex: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 2rem;
    padding: 0 .75rem;
    border: 1px solid var(--border-color);
    border-radius: .4rem;
    background: var(--bg-card);
    color: var(--text-primary);
    font-size: .78rem;
    font-weight: 650;
}
.st-quiet:hover { border-color: var(--accent-color); color: var(--accent-color); }
.st-quiet.is-danger {
    border-color: rgba(220, 38, 38, .35);
    color: #dc2626;
    background: transparent;
}
.st-quiet.is-danger:hover {
    border-color: #dc2626;
    color: #b91c1c;
    background: rgba(220, 38, 38, .08);
}
.st-url-tools {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .4rem .55rem;
    margin-top: .5rem;
    color: var(--text-secondary);
    font-size: .72rem;
}
.st-url-tools form,
.st-note-status form { margin: 0; }
.st-invite-foot {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .35rem .85rem;
    margin-top: .4rem;
    color: var(--text-secondary);
    font-size: .72rem;
}
.st-invite--new { margin-bottom: .45rem; }

.st-pb { margin-top: 1.15rem; }
.st-pb-body { padding: .95rem 1.25rem 1.15rem; }
.st-pb-lead {
    margin: 0 0 .9rem;
    color: var(--text-secondary);
    font-size: .88rem;
    line-height: 1.45;
    max-width: 42rem;
}
.st-pb-body .form-label {
    margin-bottom: .3rem;
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .02em;
    text-transform: uppercase;
    color: var(--text-secondary);
}
.st-pb-body .st-invite + .form-label { margin-top: .85rem; }
.st-pb-params {
    margin: .85rem 0 0;
    padding: 0;
    list-style: none;
    font-size: .82rem;
    line-height: 1.45;
    color: var(--text-secondary);
}
.st-pb-params li { margin: 0 0 .2rem; }
.st-pb-params code {
    font-size: .78em;
    color: var(--text-primary);
}
.st-pb-foot { margin-top: .85rem; }
.st-quiet em {
    font-style: normal;
    min-width: 1.05rem;
    padding: 0 .28rem;
    margin-left: .15rem;
    border-radius: .3rem;
    background: var(--icon-bg);
    font-size: .68rem;
    font-weight: 800;
}
.st-pb-log { font-size: .8rem; }
.st-pb-log th.st-num,
.st-pb-log td.st-num { text-align: end; }
.st-pb-log-empty {
    margin: 0;
    padding: 1.35rem 1.25rem 1.5rem;
    color: var(--text-secondary);
    font-size: .88rem;
    line-height: 1.45;
}
.st-pb-kind.is-reject { color: #ef4444; font-weight: 650; }
.st-pb-raw {
    max-width: 16rem;
    color: var(--text-secondary);
    font-size: .72rem;
    word-break: break-all;
}

.st-note-state {
    margin: 0;
    font-size: .84rem;
    font-weight: 650;
}
.st-note-state.is-on { color: #34d399; }
[data-bs-theme="light"] .st-note-state.is-on { color: #059669; }
.st-note-state.is-off { color: var(--text-secondary); font-weight: 500; }
.st-note-status {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .5rem 1rem;
    margin: .9rem 0 0;
}
.st-note-flags {
    display: flex;
    flex-direction: column;
    gap: .7rem;
    margin: 1rem 0 0;
    padding-top: 1rem;
    border-top: 1px solid var(--border-color);
}
.st-note-flag {
    display: flex;
    align-items: flex-start;
    gap: .6rem;
    cursor: pointer;
    color: var(--text-primary);
    font-size: .88rem;
    line-height: 1.35;
}
.st-note-flag > input {
    margin-top: .22rem;
    flex: none;
}
.st-note-flag b { font-weight: 700; }
.st-note-flag label { cursor: pointer; }
.st-note-min {
    display: block;
    max-width: 10rem;
    margin: .4rem 0 .15rem;
}
.st-note-min .form-control {
    height: 2rem;
    padding: .15rem .55rem;
    font-size: .84rem;
    font-weight: 650;
}
.st-note-flag small {
    display: block;
    margin-top: .12rem;
    color: var(--text-secondary);
    font-size: .78rem;
    font-weight: 500;
}
.st-note-save { margin-top: .9rem; }
.st-note-grid {
    margin: 1rem 0 0;
    padding-top: 1rem;
    border-top: 1px solid var(--border-color);
}
.st-note-h {
    margin: 0 0 .75rem;
    color: var(--text-secondary);
    font-size: .8rem;
    line-height: 1.4;
    max-width: 42rem;
}
.st-note-table th.mid,
.st-note-table td.mid { text-align: center; }
.st-note-table th:first-child,
.st-note-table td:first-child { padding-left: 0; }
.st-note-table th:last-child,
.st-note-table td:last-child { padding-right: 0; }
.st-note-amt {
    width: 6.2rem;
    height: 2rem;
    padding: .15rem .5rem;
    font-size: .82rem;
    font-weight: 650;
}
.st-note-foot {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .35rem .85rem;
}

.st-people {
    list-style: none;
    margin: .65rem 0 0;
    padding: 0;
    max-width: 36rem;
}
.st-people li {
    display: grid;
    grid-template-columns: 1.7rem minmax(6rem, 1fr) 6.4rem auto;
    align-items: center;
    gap: .5rem;
    min-height: 2.35rem;
    padding: .15rem 0;
}
.st-ava {
    width: 1.7rem;
    height: 1.7rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--icon-bg);
    color: var(--text-primary);
    font-size: .72rem;
    font-weight: 700;
}
.st-who {
    min-width: 0;
    display: flex;
    flex-direction: column;
    line-height: 1.2;
}
.st-who b {
    font-size: .82rem;
    font-weight: 650;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.st-who span { font-size: .7rem; color: var(--text-secondary); }

.st-add-modal {
    background: var(--bg-card);
    color: var(--text-primary);
    border: 1px solid var(--border-color);
    border-radius: .75rem;
}
/* Bootstrap centered+scrollable ставит max-height:none — карточка режет скрины без скролла. */
#profAdd .modal-dialog {
    max-height: calc(100dvh - 2rem);
}
#profAdd .modal-dialog-scrollable .modal-content {
    max-height: calc(100dvh - 2rem);
    overflow: hidden;
}
#profAdd .modal-body {
    overflow-y: auto;
    min-height: 0;
    overscroll-behavior: contain;
}
.st-add-modal .modal-header { border-bottom: 1px solid var(--border-color); }
.st-add-modal .modal-title { font-size: 1.05rem; font-weight: 700; }
.st-add-hint {
    margin: 0 0 .85rem;
    color: var(--text-secondary);
    font-size: .88rem;
    line-height: 1.45;
}
.st-add-modal #token {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: .85rem;
    min-height: 2.5rem;
}
.st-add-err {
    margin: .75rem 0 0;
    color: #e35d6a;
    font-size: .85rem;
    line-height: 1.4;
}
.st-add-dbg {
    margin: .75rem 0 0;
    padding: .6rem .7rem;
    font: 11px/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    background: #2b2614;
    color: #f5e6a8;
    border: 1px solid #8a7318;
    border-radius: .4rem;
    white-space: pre-wrap;
    word-break: break-word;
    max-height: 14rem;
    overflow: auto;
}
.st-add-modal .modal-footer {
    border-top: 1px solid var(--border-color);
    justify-content: flex-end;
}
.st-where-in {
    margin-top: .7rem;
    padding: .7rem .8rem;
    border: 1px solid var(--border-color);
    border-radius: .45rem;
    background: var(--input-bg);
}
.st-where-ol {
    margin: 0 0 .55rem;
    padding-inline-start: 1.15rem;
    font-size: .85rem;
    line-height: 1.55;
}
.st-where-ol li + li { margin-top: .7rem; }
.st-where-shot {
    display: block;
    width: 100%;
    height: auto;
    margin-top: .45rem;
    border: 1px solid var(--border-color);
    border-radius: .4rem;
    background: #fff;
}

@media (max-width: 720px) {
    .st-set {
        grid-template-columns: 1fr;
        gap: .65rem;
    }
    .st-set-side {
        flex-direction: row;
        flex-wrap: wrap;
        gap: .2rem;
        padding: 0;
    }
    .st-set-link { padding: .42rem .65rem; font-size: .8rem; }
    .st-bar { align-items: stretch; padding: .55rem .75rem; }
    .st-bar h1 { font-size: 1.12rem; }
    .st-bar .st-go { width: 100%; }
    .st-cab { flex-wrap: wrap; }
    .st-page .card-box.p-0 { overflow: visible; }
    .st-table-scroll {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
    .st-table { min-width: 32rem; }
    .st-cab-table th:nth-child(3),
    .st-cab-table td.st-when { display: none; }
    .st-note-table { min-width: 28rem; }
    .st-note-table th:nth-child(3),
    .st-note-table td:nth-child(3) { display: table-cell; }
    .st-people li {
        grid-template-columns: 1.7rem minmax(0, 1fr) 5.6rem auto;
        column-gap: .4rem;
    }
    .st-add-modal .modal-dialog { margin: .6rem; }
}

.adm-kpis {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .55rem;
    margin: 1rem 0 0;
}
.adm-kpi {
    padding: .85rem 1rem;
    border: 1px solid var(--border-color);
    border-radius: .7rem;
    background: var(--bg-card);
}
.adm-kpi-lab {
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--text-secondary);
}
.adm-kpi-val {
    margin-top: .2rem;
    font-size: 1.45rem;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    color: var(--text-primary);
}
.adm-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: .7rem;
    margin-top: .7rem;
    align-items: start;
}
.adm-feed { order: -1; }
.adm-grid > * { min-width: 0; }
.adm-page .card-box.p-0 { overflow: hidden; }
.adm-page .st-table-scroll {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
.adm-table { min-width: 36rem; }
.adm-table thead th { text-align: start; }
.adm-table th:not(:nth-child(2)),
.adm-table td:not(:nth-child(2)) {
    width: 1%;
    white-space: nowrap;
}
.adm-search {
    position: relative;
    flex: 1 1 14rem;
    max-width: 18rem;
}
.adm-search > .bi-search {
    position: absolute;
    left: .65rem;
    top: 50%;
    transform: translateY(-50%);
    font-size: .82rem;
    color: var(--text-secondary);
    pointer-events: none;
}
.adm-search input {
    width: 100%;
    height: 2.125rem;
    padding: 0 .7rem 0 2rem;
    border: 1px solid var(--border-color);
    border-radius: .45rem;
    background: var(--ad-field-bg, var(--input-bg));
    color: var(--text-primary);
    font-size: .8rem;
}
.adm-table td { vertical-align: middle; }
.adm-row { cursor: pointer; }
.adm-row.is-on td { background: var(--alist-picked, rgba(42, 171, 238, .12)); }
.adm-who {
    display: flex;
    align-items: center;
    gap: .55rem;
    min-width: 0;
    color: inherit;
    text-decoration: none;
}
.adm-who:hover .adm-who-name { color: var(--accent-color); }
.adm-ava {
    position: relative;
    flex: none;
    width: 1.85rem;
    height: 1.85rem;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: .72rem;
    font-weight: 800;
    background: var(--icon-bg);
    color: var(--text-primary);
    overflow: hidden;
}
.adm-ava img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.adm-who-txt { min-width: 0; display: flex; flex-direction: column; }
.adm-who-name { font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.adm-who-id { font-size: .68rem; color: var(--text-secondary); }
.adm-tg { color: var(--alist-link, #2aabee); text-decoration: none; }
.adm-tg:hover { text-decoration: underline; }
.adm-muted { color: var(--text-secondary); }
.adm-empty,
.adm-empty-pad {
    color: var(--text-secondary);
    font-size: .88rem;
}
.adm-empty-pad { margin: 0; padding: 1.25rem 1.15rem 1.5rem; }
.adm-hist {
    list-style: none;
    margin: 0;
    padding: .2rem 0 .6rem;
    max-height: 32rem;
    overflow: auto;
}
.adm-hist li {
    display: grid;
    grid-template-columns: 8.6rem minmax(0, 1fr);
    gap: .15rem .7rem;
    padding: .45rem 1.15rem;
    font-size: .8rem;
    line-height: 1.35;
    border-bottom: 1px solid var(--border-color);
}
.adm-hist time {
    grid-row: 1 / -1;
    color: var(--text-secondary);
    font-variant-numeric: tabular-nums;
    font-size: .72rem;
    padding-top: .12rem;
}
.adm-hist-detail {
    grid-column: 2;
    color: var(--text-secondary);
    font-size: .72rem;
}
.adm-hist-who {
    font-weight: 700;
    color: var(--text-primary);
    text-decoration: none;
}
.adm-hist-who:hover { color: var(--accent-color); }
.adm-hist-act { color: var(--text-primary); }
.adm-logbar {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
    align-items: center;
    padding: .15rem 1.15rem .65rem;
}
.adm-logchip {
    display: inline-flex;
    align-items: center;
    height: 1.7rem;
    padding: 0 .65rem;
    border: 1px solid var(--border-color);
    border-radius: 999px;
    color: var(--text-secondary);
    background: transparent;
    text-decoration: none;
    font-size: .72rem;
    white-space: nowrap;
}
.adm-logchip.is-on {
    color: var(--text-primary);
    border-color: var(--accent-color);
    background: var(--alist-picked, rgba(42, 171, 238, .12));
}
.adm-logfind { margin-inline-start: auto; }
.adm-logfind input {
    height: 1.7rem;
    width: 11rem;
    padding: 0 .6rem;
    border: 1px solid var(--border-color);
    border-radius: 999px;
    background: var(--ad-field-bg, var(--input-bg));
    color: var(--text-primary);
    font-size: .72rem;
}
.adm-bals {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem .9rem;
    align-items: baseline;
    padding: 0 1.15rem .75rem;
    border-bottom: 1px solid var(--border-color);
}
.adm-bals-h {
    font-size: .72rem;
    font-weight: 700;
    color: var(--text-secondary);
}
.adm-bal {
    font-size: .78rem;
    color: var(--text-primary);
}
.adm-bal b { font-variant-numeric: tabular-nums; font-weight: 700; }
.adm-person {
    padding: .95rem 1.15rem 1rem;
    border-bottom: 1px solid var(--border-color);
}
.adm-person-h { display: flex; align-items: center; gap: .75rem; }
.adm-person-h .adm-ava { width: 2.5rem; height: 2.5rem; font-size: .95rem; }
.adm-person-id { min-width: 0; }
.adm-person-name {
    display: flex; align-items: center; gap: .45rem; flex-wrap: wrap;
    font-size: 1.05rem; font-weight: 800;
}
.adm-person-sub {
    display: flex; gap: .65rem; flex-wrap: wrap;
    margin-top: .1rem;
    color: var(--text-secondary); font-size: .78rem;
}
.adm-demo {
    display: inline-flex; align-items: center; height: 1.25rem;
    padding: 0 .45rem; border-radius: 999px;
    background: var(--icon-bg); color: var(--text-secondary);
    font-size: .68rem; font-weight: 700;
}
.adm-facts {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(11.5rem, 1fr));
    gap: .65rem 1.1rem;
    margin: .9rem 0 0;
}
.adm-facts div { min-width: 0; }
.adm-facts dt {
    margin: 0;
    color: var(--text-secondary);
    font-size: .68rem; font-weight: 700;
}
.adm-facts dd {
    margin: .12rem 0 0;
    color: var(--text-primary);
    font-size: .84rem; font-weight: 650;
    overflow-wrap: anywhere;
}
.adm-person-bals { margin-top: .95rem; }
.adm-person-bals h2 {
    margin: 0 0 .25rem;
    color: var(--text-secondary);
    font-size: .68rem; font-weight: 700;
}
.adm-person-empty { margin: .2rem 0 0; color: var(--text-secondary); font-size: .82rem; }
.adm-cab-line {
    display: flex; align-items: baseline; justify-content: space-between; gap: 1rem;
    padding: .4rem 0;
    border-top: 1px solid var(--border-color);
    font-size: .82rem;
}
.adm-cab-name { min-width: 0; font-weight: 650; }
.adm-cab-money {
    display: flex; flex-direction: column; align-items: flex-end; gap: .1rem;
    font-variant-numeric: tabular-nums; font-weight: 700; white-space: nowrap;
}
.adm-cab-sub { color: var(--text-secondary); font-size: .72rem; font-weight: 600; }

.st-eur-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    align-items: center;
    margin-top: .9rem;
}
.st-eur-list {
    display: flex;
    flex-direction: column;
    gap: .45rem;
    margin: .15rem 0 .2rem;
}
.st-eur-item {
    display: flex;
    align-items: flex-start;
    gap: .7rem;
    margin: 0;
    padding: .7rem .85rem;
    border: 1px solid var(--border-color);
    border-radius: .6rem;
    cursor: pointer;
}
.st-eur-item input[type="checkbox"] {
    margin-top: .2rem;
    accent-color: var(--accent-color);
}
.st-eur-item strong {
    display: block;
    font-size: .85rem;
    font-weight: 650;
}
.st-eur-meta {
    display: block;
    margin-top: .12rem;
    color: var(--text-secondary);
    font-size: .75rem;
}
.st-eur-have {
    margin: 0 0 .85rem;
    padding: 0 0 0 1.1rem;
    font-size: .85rem;
}
.st-eur-tok {
    margin-top: 1.15rem;
    padding-top: 1.05rem;
    border-top: 1px solid var(--border-color);
}
.st-eur-tok-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    margin-bottom: .55rem;
}
.st-eur-tok-head h2 { margin: 0; font-size: .95rem; }
.st-eur-tok-head form { margin: 0; }

#integrations .int-card + .int-card {
    margin-top: 1.25rem;
    padding-top: 1.15rem;
    border-top: 1px solid var(--border-color);
}
#integrations .int-card-top {
    display: flex;
    align-items: center;
    gap: .85rem;
}
#integrations .int-logo {
    height: 18px;
    width: auto;
    display: block;
    flex: none;
}
#integrations .int-logo-on-light { display: none; }
[data-bs-theme="light"] #integrations .int-logo-on-dark { display: none; }
[data-bs-theme="light"] #integrations .int-logo-on-light { display: block; }
#integrations .int-card-name { min-width: 0; }
#integrations .int-card-name h2 {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
    line-height: 1.2;
}
#integrations .int-card-name .int-head { margin: 0; }
#integrations .int-badge {
    display: inline-flex;
    align-items: center;
    margin-top: .28rem;
    height: 1.35rem;
    padding: 0 .5rem;
    border-radius: 999px;
    background: var(--icon-bg);
    color: var(--text-secondary);
    font-size: .72rem;
    font-weight: 700;
}
#integrations .int-card.is-on .int-badge {
    background: color-mix(in srgb, #22c55e 16%, transparent);
    color: #15803d;
}
[data-bs-theme="dark"] #integrations .int-card.is-on .int-badge { color: #4ade80; }
#integrations .int-connect { margin-top: .15rem; }
#integrations .int-connect > summary {
    display: inline-flex;
    align-items: center;
    height: 2.125rem;
    margin-top: .85rem;
    padding: 0 1.05rem;
    border-radius: .45rem;
    background: var(--accent-color);
    color: #fff;
    font-size: .8rem;
    font-weight: 700;
    line-height: 1;
    list-style: none;
    cursor: pointer;
}
#integrations .int-connect > summary::-webkit-details-marker { display: none; }
#integrations .int-connect > summary::marker { content: ""; }
#integrations .int-connect[open] > summary { margin-bottom: .15rem; }
#integrations .int-head {
    position: relative;
    display: flex;
    align-items: center;
    gap: .35rem;
    margin: 0 0 .7rem;
}
#integrations .int-head h2 {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
    line-height: 1.2;
}
#integrations .int-help {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.7rem;
    height: 1.7rem;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--text-secondary);
    font-size: 1rem;
}
#integrations .int-help:hover,
#integrations .int-help[aria-expanded="true"] { color: var(--accent-color); }
#integrations .int-help:focus-visible {
    outline: 2px solid var(--accent-color);
    outline-offset: 2px;
}
#integrations .int-help-pop {
    position: absolute;
    z-index: 6;
    top: calc(100% + .35rem);
    left: 0;
    width: min(28rem, calc(100vw - 3rem));
    max-height: 18rem;
    overflow: auto;
    padding: .75rem .85rem;
    border: 1px solid var(--border-color);
    border-radius: .65rem;
    background: var(--bg-card);
    box-shadow: var(--shadow-md);
}
#integrations .int-help-pop p {
    margin: 0 0 .55rem;
    font-size: .8rem;
    font-weight: 450;
    line-height: 1.45;
}
#integrations .int-help-pop p:last-child { margin-bottom: 0; }
#integrations .int-ch-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .55rem .75rem;
    margin-top: .85rem;
}
#integrations .int-ch-row .st-go:disabled { opacity: .45; }
#integrations .kt-saved {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .65rem 1rem;
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--border-color);
}
#integrations .kt-saved-main {
    display: flex;
    flex-direction: column;
    gap: .12rem;
    min-width: 0;
}
#integrations .kt-saved-main strong { font-size: .9rem; font-weight: 650; }
#integrations .kt-saved-main span {
    color: var(--text-secondary);
    font-size: .75rem;
    line-height: 1.4;
}
#integrations .kt-saved .st-eur-actions {
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: flex-end;
    gap: .35rem;
    margin-top: 0;
}
#integrations .kt-act {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    align-items: center;
    gap: .5rem;
}
#integrations .kt-act form { margin: 0; }
#integrations .js-kt-test:disabled { opacity: .55; }
#integrations .kt-test-out {
    max-width: 18rem;
    margin: 0;
    font-size: .78rem;
    font-weight: 650;
    line-height: 1.35;
    text-align: right;
}
#integrations .kt-test-out.is-ok { color: #15803d; }
#integrations .kt-test-out.is-bad { color: #dc2626; }
[data-bs-theme="dark"] #integrations .kt-test-out.is-ok { color: #4ade80; }
[data-bs-theme="dark"] #integrations .kt-test-out.is-bad { color: #f87171; }
#integrations .int-on {
    display: inline-flex;
    align-items: center;
    height: 2rem;
    padding: 0 .9rem;
    border-radius: .4rem;
    background: #16a34a;
    color: #fff;
    font-size: .78rem;
    font-weight: 700;
    line-height: 1;
}
#integrations .kt-edit { flex: 1 1 100%; }
#integrations .kt-edit > summary,
#integrations .kt-more > summary {
    width: fit-content;
    color: var(--accent-color);
    font-size: .8rem;
    font-weight: 650;
    cursor: pointer;
}
#integrations .kt-edit > summary { margin-top: .35rem; }
#integrations .kt-strip {
    display: grid;
    grid-template-columns: 9.2rem minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, .75fr) auto;
    gap: .5rem;
    align-items: end;
    margin-top: .7rem;
}
#integrations .kt-strip label,
#integrations .kt-more-row > label:not(.kt-check) {
    display: flex;
    flex-direction: column;
    gap: .25rem;
    min-width: 0;
    margin: 0;
    font-size: .78rem;
    font-weight: 650;
}
#integrations .kt-strip .form-control,
#integrations .kt-strip .form-select,
#integrations .kt-more-row .form-control { font-weight: 400; }
#integrations .kt-more { margin-top: .45rem; }
#integrations .kt-more-row {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: .65rem 1rem;
    margin-top: .45rem;
}
#integrations .kt-more-row > label:first-child { flex: 0 1 12rem; }
#integrations .kt-check {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: .5rem;
    height: 2.125rem;
    margin: 0;
    font-size: .8rem;
    font-weight: 650;
}
#integrations .kt-check input { accent-color: var(--accent-color); }
#integrations .kt-add { margin-top: 1rem; }
#integrations .st-eur-actions form { margin: 0; }
@media (max-width: 860px) {
    #integrations .kt-strip { grid-template-columns: 1fr 1fr; }
    #integrations .kt-strip .st-go { grid-column: 1 / -1; }
}
@media (max-width: 520px) {
    #integrations .kt-strip { grid-template-columns: 1fr; }
}

@media (max-width: 980px) {
    .adm-grid { grid-template-columns: 1fr; }
    .adm-kpis { grid-template-columns: 1fr; }
}
.adm-app {
    display: grid;
    grid-template-columns: 12.5rem minmax(0, 1fr);
    gap: .85rem;
    align-items: start;
    margin-top: .85rem;
}
.adm-side {
    position: sticky;
    top: .75rem;
    display: flex;
    flex-direction: column;
    gap: .2rem;
    padding: .4rem;
    border: 1px solid var(--border-color);
    border-radius: .75rem;
    background: var(--bg-card);
}
.adm-side a {
    display: flex;
    align-items: center;
    gap: .55rem;
    padding: .55rem .7rem;
    border-radius: .5rem;
    color: var(--text-secondary);
    text-decoration: none;
    font-size: .88rem;
    font-weight: 650;
}
.adm-side a.is-on {
    color: var(--text-primary);
    background: rgba(79, 70, 229, .18);
}
.adm-side a:hover { color: var(--text-primary); }
.adm-main { min-width: 0; }
.adm-main > .adm-kpis { margin-top: 0; }
.adm-pane { margin-bottom: 0; }
.adm-pane-hint { margin: 0; padding: .75rem 1.15rem 0; color: var(--text-secondary); font-size: .82rem; line-height: 1.45; }
.adm-pane-pick { display: grid; grid-template-columns: 15rem minmax(0, 1fr); min-height: 22rem; }
.adm-pane-users { border-right: 1px solid var(--border-color); max-height: 40rem; overflow: auto; }
.adm-pane-user {
    display: flex;
    justify-content: space-between;
    gap: .5rem;
    padding: .6rem .9rem;
    text-decoration: none;
    color: inherit;
    font-size: .88rem;
    border-bottom: 1px solid var(--border-color);
}
.adm-pane-user.is-on { background: rgba(79, 70, 229, .16); }
.adm-pane-body { min-width: 0; padding: .85rem; display: flex; flex-direction: column; gap: .75rem; }
.adm-cab {
    border: 1px solid var(--border-color);
    border-radius: .7rem;
    background: var(--bg-card);
    overflow: hidden;
}
.adm-cab-h {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .6rem;
    padding: .75rem .9rem;
    border-bottom: 1px solid var(--border-color);
}
.adm-cab-h h2 { margin: 0; font-size: .95rem; font-weight: 700; }
.adm-own-mod { margin-left: auto; display: flex; align-items: center; gap: .4rem; font-size: .8rem; color: var(--text-secondary); }
.adm-bulk { display: flex; flex-wrap: wrap; align-items: baseline; gap: .15rem .6rem; margin: 0; }
.adm-auto-n { display: inline-block; margin-top: .2rem; font-size: .82rem; }
.adm-mod-add { display: flex; flex-wrap: wrap; gap: .6rem; align-items: flex-end; padding: .2rem .9rem .9rem; }
.adm-mod-links { display: flex; flex-direction: column; gap: .55rem; padding: 0 .9rem .9rem; }
.adm-mod-links .st-invite { max-width: none; }
.mod-tools {
    position: sticky;
    top: 0;
    z-index: 4;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .45rem;
    margin: .75rem 0;
    padding: .45rem 0;
    background: var(--bg-body);
}
.mod-tabs { display: flex; flex-wrap: wrap; gap: .35rem; }
.mod-tab {
    border: 1px solid var(--border-color);
    background: transparent;
    color: var(--text-secondary);
    border-radius: 999px;
    padding: .28rem .7rem;
    font: inherit;
    font-size: .82rem;
    font-weight: 700;
    cursor: pointer;
}
.mod-tab.is-on {
    color: var(--text-primary);
    border-color: transparent;
    background: rgba(79, 70, 229, .18);
}
.mod-tab b { font-weight: 750; }
.mod-tools .form-control { flex: 1 1 14rem; min-width: 10rem; }
.mod-tools .form-select { flex: 0 1 14rem; width: auto; max-width: 16rem; }
.mod-clear { font-size: .8rem; font-weight: 650; white-space: nowrap; }
.mod-all {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    margin: 0;
    font-size: .82rem;
    font-weight: 700;
    white-space: nowrap;
    cursor: pointer;
}
.mod-all input { margin: 0; }
.mod-pack-btn {
    border: 1px solid var(--border-color);
    background: transparent;
    color: var(--text-secondary);
    border-radius: 999px;
    padding: .28rem .7rem;
    font: inherit;
    font-size: .82rem;
    font-weight: 700;
    white-space: nowrap;
    cursor: pointer;
}
.mod-pack-btn.is-on {
    color: var(--text-primary);
    border-color: transparent;
    background: rgba(79, 70, 229, .18);
}
.mod-pack {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .35rem .75rem;
    padding: .55rem .85rem;
    background: rgba(79, 70, 229, .1);
    border-bottom: 1px solid var(--border-color);
}
.mod-pack label {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    margin: 0;
    cursor: pointer;
    font-weight: 750;
}
.mod-pack input { margin: 0; }
.mod-pack-hint { color: var(--text-secondary); font-size: .78rem; font-weight: 650; }
.mod-hint { margin: 0 0 .7rem; color: var(--text-secondary); font-size: .8rem; }
.mod-empty { margin: .4rem 0 1rem; color: var(--text-secondary); }
.mod-list { padding: 0; overflow: hidden; }
.mod-entry {
    display: grid;
    grid-template-columns: minmax(17rem, 22rem) minmax(0, 1fr) minmax(16rem, 24rem);
    column-gap: .85rem;
    row-gap: .35rem;
    align-items: start;
    padding: .7rem .85rem .55rem;
    border-bottom: 1px solid var(--border-color);
}
.mod-entry:last-child { border-bottom: 0; }
.mod-item { display: contents; }
.mod-preview { min-width: 0; }
.mod-preview .ad-card-preview { width: 100%; }
.mod-entry.is-off,
.mod-list.is-off,
.mod-kind.is-off,
.mod-tab.is-off,
.mod-empty.is-off,
.mod-hint.is-off,
.mod-tools .is-off { display: none !important; }
.mod-thumb {
    display: block;
    width: 7.2rem;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    border-radius: .4rem;
    background: #000;
}
.mod-thumb-empty {
    display: grid;
    place-items: center;
    border: 1px dashed var(--border-color);
    color: var(--text-secondary);
    font-size: 1.15rem;
    background: transparent;
}
.mod-line { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .6rem; margin-bottom: .15rem; }
.mod-pick { display: inline-flex; align-items: center; margin: 0; cursor: pointer; }
.mod-pick input { margin: 0; }
.mod-bulk {
    position: sticky;
    top: .6rem;
    z-index: 8;
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    margin: 0 0 .75rem;
    padding: .6rem .75rem;
    border: 1px solid var(--border-color);
    border-radius: .7rem;
    background: var(--bg-card);
    box-shadow: var(--shadow-md);
}
.mod-bulk[hidden] { display: none !important; }
.mod-bulk-all {
    display: flex;
    align-items: center;
    gap: .45rem;
    margin: .35rem 0 0;
    font-size: .84rem;
    font-weight: 700;
    white-space: nowrap;
    cursor: pointer;
}
.mod-bulk .mod-reason-list { flex: 1; min-width: 0; max-height: 7.5rem; }
.mod-bulk-side { display: flex; flex-direction: column; gap: .4rem; flex: none; padding-top: .15rem; }
.mod-badges { display: flex; flex-wrap: wrap; gap: .3rem; }
.mod-badge {
    padding: .1rem .45rem;
    border-radius: 999px;
    font-size: .68rem;
    font-weight: 700;
    background: rgba(148, 163, 184, .16);
    color: var(--text-secondary);
}
.mod-badge.is-new { background: rgba(79, 70, 229, .16); color: var(--text-primary); }
.mod-badge.is-edit { background: rgba(245, 158, 11, .18); color: var(--text-primary); }
.mod-badge.is-on { background: rgba(34, 197, 94, .16); color: var(--text-primary); }
.mod-badge.is-hold { background: rgba(148, 163, 184, .2); }
.mod-meta { color: var(--text-secondary); font-size: .74rem; min-width: 0; }
.mod-title {
    font-weight: 750;
    color: var(--text-primary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.mod-url {
    display: block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: .8rem;
}
.mod-text {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin: .2rem 0 0;
    color: var(--text-secondary);
    font-size: .84rem;
}
.mod-sub {
    display: flex;
    flex-wrap: wrap;
    gap: .15rem .7rem;
    margin-top: .3rem;
    color: var(--text-primary);
    font-size: .8rem;
    font-weight: 650;
}
.mod-brief {
    margin-top: .2rem;
    color: var(--text-secondary);
    font-size: .75rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.mod-chips { display: flex; flex-wrap: wrap; gap: .3rem; margin-top: .35rem; }
.mod-chips b,
.mod-chip {
    padding: .08rem .4rem;
    border-radius: 999px;
    background: rgba(245, 158, 11, .16);
    color: var(--text-primary);
    font-size: .72rem;
    font-weight: 700;
}
.mod-chip { background: rgba(148, 163, 184, .12); color: var(--text-secondary); font-weight: 650; }
.mod-log {
    margin-top: .55rem;
    color: var(--text-secondary);
    font-size: .78rem;
}
.mod-log summary {
    cursor: pointer;
    font-weight: 700;
    color: var(--text-primary);
}
.mod-log-empty { margin: .35rem 0 0; }
.mod-log-list, .mod-log-feed {
    list-style: none;
    margin: .4rem 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: .4rem;
}
.mod-log-feed { margin-top: .75rem; }
.mod-log-list li, .mod-log-row {
    padding: .45rem .55rem;
    border: 1px solid var(--border-color);
    border-radius: .5rem;
    background: color-mix(in srgb, var(--bg-card) 82%, transparent);
}
.mod-log-top {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .3rem .45rem;
}
.mod-log-top time { margin-inline-start: auto; }
.mod-log-who { color: var(--text-primary); font-weight: 750; }
.mod-log-title {
    margin-top: .2rem;
    color: var(--text-primary);
    font-weight: 700;
}
.mod-log-text, .mod-log-reason {
    margin: .15rem 0 0;
    white-space: pre-wrap;
}
.mod-log-reason { color: var(--text-primary); }
.mod-log-money, .mod-log-meta { margin-top: .15rem; }
.mod-log-more { display: inline-block; margin-top: .4rem; font-weight: 700; }
.mod-log-scope { margin: .65rem 0 0; color: var(--text-secondary); font-size: .82rem; }
.mod-log-pager {
    display: flex;
    gap: .8rem;
    margin: .9rem 0 1.2rem;
    font-weight: 700;
}
.mod-act {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: .4rem;
}
.mod-act textarea { width: 100%; }
.mod-reason-list {
    max-height: 11rem;
    overflow: auto;
    border: 1px solid var(--border-color);
    border-radius: .45rem;
    padding: .3rem .55rem .4rem;
}
.mod-reasons-g {
    margin: .4rem 0 .1rem;
    color: var(--text-secondary);
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.mod-reason-list label {
    display: flex;
    align-items: flex-start;
    gap: .4rem;
    margin: 0;
    padding: .12rem 0;
    font-size: .78rem;
    cursor: pointer;
}
.mod-reason-list input { margin-top: .15rem; }
.mod-act textarea {
    min-height: 8.5rem;
    max-height: 14rem;
    overflow: auto;
    resize: none;
    cursor: default;
    font-size: .78rem;
    line-height: 1.35;
}
.mod-act-btns {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
    justify-content: flex-end;
}
.mod-fold { grid-column: 2; padding: 0 0 .35rem; }
.mod-fold summary {
    cursor: pointer;
    color: var(--text-secondary);
    font-size: .75rem;
    font-weight: 700;
}
.mod-fold-body { padding-top: .55rem; }
.mod-fold video {
    display: block;
    width: min(100%, 28rem);
    aspect-ratio: 16 / 9;
    border-radius: .45rem;
    background: #000;
    margin-bottom: .55rem;
}
.mod-site { display: flex; align-items: center; gap: .45rem; margin-bottom: .45rem; color: var(--text-secondary); font-size: .75rem; }
.mod-site img { width: 36px; height: 36px; object-fit: cover; border-radius: .35rem; }
.mod-full { white-space: pre-wrap; margin: 0 0 .55rem; font-size: .88rem; }
.mod-facts {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: .4rem .9rem;
    margin: 0;
}
.mod-facts div { min-width: 0; }
.mod-facts dt { color: var(--text-secondary); font-size: .72rem; font-weight: 650; }
.mod-facts dd { margin: .05rem 0 0; font-size: .84rem; font-weight: 650; word-break: break-word; }
.mod-target { margin-top: .55rem; }
@media (max-width: 860px) {
    .mod-entry { grid-template-columns: minmax(0, 1fr); }
    .mod-preview { max-width: 22rem; }
    .mod-fold { grid-column: 1; }
    .mod-bulk { flex-wrap: wrap; }
    .mod-bulk .mod-reason-list { flex: 1 1 100%; }
    .mod-bulk-side { flex-direction: row; width: 100%; }
    .mod-bulk-side .btn { flex: 1 1 auto; }
    .mod-act { grid-column: 1; justify-content: stretch; }
    .mod-act .form-control { flex: 1 1 100%; }
    .mod-act .btn { flex: 1 1 auto; }
}
.adm-pill {
    padding: .12rem .45rem;
    border-radius: 999px;
    background: rgba(79, 70, 229, .16);
    color: var(--text-secondary);
    font-size: .72rem;
    font-weight: 700;
}
.adm-cab-empty { margin: 0; padding: .75rem .9rem; color: var(--text-secondary); font-size: .84rem; }
.adm-cab-table { width: 100%; border-collapse: collapse; font-size: .84rem; }
.adm-cab-table th,
.adm-cab-table td { padding: .45rem .7rem; text-align: start; border-bottom: 1px solid var(--border-color); white-space: nowrap; }
.adm-cab-table th { color: var(--text-secondary); font-size: .72rem; font-weight: 700; }
.adm-cab-table form { margin: 0; }
.adm-cab-form {
    display: grid;
    grid-template-columns: minmax(5.2rem, 7rem) minmax(5.2rem, 7.5rem) minmax(6.2rem, 8rem) minmax(8rem, 10rem) minmax(8rem, 10rem) auto;
    gap: .55rem;
    align-items: end;
    padding: .75rem .9rem .9rem;
}
.adm-cab-form label { display: flex; flex-direction: column; gap: .2rem; font-size: .72rem; color: var(--text-secondary); }
.adm-cab-form input { width: 100%; }
.adm-srv-dot {
    width: .45rem;
    height: .45rem;
    margin-inline-start: auto;
    border-radius: 50%;
    background: #e09b2d;
    flex: 0 0 auto;
}
.adm-srv-dot.is-bad { background: #e54d4d; }
.adm-srv-pill {
    display: inline-flex;
    align-items: center;
    padding: .2rem .65rem;
    border-radius: 999px;
    font-size: .75rem;
    font-weight: 750;
    color: #10b981;
    background: rgba(16, 185, 129, .14);
}
.adm-srv-pill.is-warn { color: #e09b2d; background: rgba(224, 155, 45, .16); }
.adm-srv-pill.is-bad { color: #e54d4d; background: rgba(229, 77, 77, .16); }
.adm-srv-fine {
    margin: 0;
    padding: .75rem 1.15rem 0;
    color: #10b981;
    font-size: .84rem;
    font-weight: 650;
}
.adm-srv-alert {
    margin: 0 .9rem .15rem;
    padding: .7rem .85rem;
    border: 1px solid rgba(224, 155, 45, .45);
    border-radius: .7rem;
    background: rgba(224, 155, 45, .1);
    color: var(--text-primary);
    font-size: .84rem;
}
.adm-main > .adm-srv-alert { margin: 0 0 .85rem; }
.adm-srv-alert.is-bad {
    border-color: rgba(229, 77, 77, .5);
    background: rgba(229, 77, 77, .12);
}
.adm-srv-alert-h {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
}
.adm-srv-alert-h a { font-weight: 700; white-space: nowrap; }
.adm-srv-alert ul { margin: .4rem 0 0; padding-left: 1.1rem; }
.adm-srv-alert li + li { margin-top: .2rem; }
.adm-srv-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .75rem;
    padding: .85rem;
}
.adm-srv-card {
    min-width: 0;
    padding: .75rem .9rem .85rem;
    border: 1px solid var(--border-color);
    border-radius: .7rem;
    background: var(--bg-card);
}
.adm-srv-card.is-warn { border-inline-start: 3px solid #e09b2d; }
.adm-srv-card.is-bad { border-inline-start: 3px solid #e54d4d; }
.adm-srv-card.is-wide { grid-column: 1 / -1; }
.adm-srv-card h2 {
    margin: 0 0 .55rem;
    font-size: .82rem;
    font-weight: 750;
}
.adm-srv-card dl {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: .28rem .85rem;
    margin: 0;
}
.adm-srv-card dt {
    color: var(--text-secondary);
    font-size: .75rem;
    font-weight: 600;
}
.adm-srv-card dd {
    margin: 0;
    font-size: .84rem;
    font-weight: 650;
    text-align: end;
    overflow-wrap: anywhere;
}
/* Вкладка «Сбор данных». */
.adm-cr-box { margin-top: .85rem; }
.adm-cr .adm-srv-alert { margin-top: .75rem; }
.adm-cr-note {
    margin: .45rem 1.15rem 0;
    color: var(--text-secondary);
    font-size: .8rem;
}
.adm-cr-kpis {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin: 0;
    padding: .85rem;
}
.adm-cr-kpis .adm-kpi-val { font-size: 1.25rem; }
.adm-cr-kpi-sub {
    margin-top: .15rem;
    color: var(--text-secondary);
    font-size: .76rem;
}
.adm-cr-kpis .adm-cr-warn { color: #e09b2d; }
.adm-cr-proc-h {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: .5rem;
}
.adm-cr-proc-h h2 { margin-bottom: .2rem; }
.adm-cr-what {
    margin: 0 0 .6rem;
    color: var(--text-secondary);
    font-size: .78rem;
    line-height: 1.4;
}
.adm-cr-proc dd { text-align: start; font-weight: 600; }
.adm-cr-run {
    display: block;
    margin-top: .1rem;
    color: var(--text-secondary);
    font-size: .78rem;
    font-weight: 500;
}
.adm-cr-state {
    flex: none;
    padding: .12rem .55rem;
    border-radius: 999px;
    font-size: .7rem;
    font-weight: 750;
    white-space: nowrap;
    color: #10b981;
    background: rgba(16, 185, 129, .14);
}
.adm-cr-state.is-run { color: #2aabee; background: rgba(42, 171, 238, .15); }
.adm-cr-state.is-off { color: var(--text-secondary); background: rgba(127, 127, 127, .14); }
.adm-cr-state.is-warn { color: #e09b2d; background: rgba(224, 155, 45, .16); }
.adm-cr-state.is-bad { color: #e54d4d; background: rgba(229, 77, 77, .16); }
.adm-cr-tip {
    margin: .65rem 0 0;
    padding: .5rem .65rem;
    border-radius: .55rem;
    background: rgba(224, 155, 45, .1);
    font-size: .8rem;
    line-height: 1.45;
}
.adm-cr-tip.is-bad { background: rgba(229, 77, 77, .12); }
.adm-cr-table { min-width: 44rem; }
.adm-cr-table th { text-align: start; white-space: nowrap; }
.adm-cr-table td { vertical-align: top; font-size: .84rem; }
.adm-cr-cab span { display: block; font-weight: 650; }
.adm-cr-cab small { color: var(--text-secondary); font-size: .74rem; }
.adm-cr-age,
.adm-cr-job,
.adm-cr-runs .st-num { white-space: nowrap; }
.adm-cr-wait { color: var(--text-secondary); }
.adm-cr-cstate.is-ok { color: #10b981; }
.adm-cr-runs .adm-cr-cstate.is-ok { color: inherit; }
.adm-cr-cstate.is-info { color: #2aabee; }
.adm-cr-age.is-warn,
.adm-cr-cstate.is-warn { color: #e09b2d; }
.adm-cr-age.is-bad,
.adm-cr-cstate.is-bad { color: #e54d4d; }
.adm-cr-errs {
    margin: .25rem 0 0;
    padding-inline-start: 1.1rem;
    color: var(--text-secondary);
    font-size: .76rem;
}
.adm-cr-more { margin: 0; padding: .6rem 1.15rem .9rem; color: var(--text-secondary); font-size: .8rem; }
.adm-cr-bar { padding-top: .65rem; }
.adm-cr-empty { margin-inline-start: auto; }
@media (max-width: 980px) {
    .adm-cr-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 980px) {
    .adm-app { grid-template-columns: 1fr; }
    .adm-side { position: static; flex-direction: row; flex-wrap: wrap; }
    .adm-side a { flex: 1 1 8rem; justify-content: center; }
    .adm-srv-grid { grid-template-columns: 1fr; }
    .adm-srv-card.is-wide { grid-column: auto; }
    .adm-cab-form { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 800px) {
    .adm-pane-pick { grid-template-columns: 1fr; }
    .adm-pane-users { border-right: 0; border-bottom: 1px solid var(--border-color); max-height: 14rem; }
}

/* Обратная связь: бейдж непрочитанного и лента переписки. */
.fb-badge {
    display: inline-grid;
    place-items: center;
    flex: none;
    min-width: 1.15rem;
    height: 1.15rem;
    margin-inline-start: auto;
    padding: 0 .32rem;
    border-radius: 999px;
    background: #ef4444;
    color: #fff;
    font-size: .68rem;
    font-weight: 700;
    line-height: 1;
}
.btn-user { position: relative; }
.fb-dot {
    position: absolute;
    top: 3px;
    inset-inline-start: 26px;
    z-index: 2;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #ef4444;
    box-shadow: 0 0 0 2px var(--bg-card);
    pointer-events: none;
}
.st-set-link .fb-badge,
.adm-side a .fb-badge,
.user-menu .dropdown-item .fb-badge { margin-inline-start: auto; }
.st-hello .st-set-link { margin-top: .85rem; width: fit-content; }
.fb-app {
    display: grid;
    grid-template-columns: 18rem minmax(0, 1fr);
    gap: .85rem;
    align-items: start;
    margin-top: .85rem;
}
.fb-admin { margin-top: 0; }
.fb-side, .fb-main { min-width: 0; }
.fb-new {
    display: flex;
    align-items: center;
    gap: .4rem;
    margin: .45rem .55rem .15rem;
    padding: .45rem .65rem;
    border-radius: .5rem;
    color: var(--accent-color);
    font-size: .84rem;
    font-weight: 700;
    text-decoration: none;
}
.fb-new:hover,
.fb-new.is-on { background: var(--icon-bg); color: var(--accent-color); }
.fb-list { max-height: 34rem; overflow: auto; }
.fb-list-empty,
.fb-log-empty,
.fb-note {
    margin: 0;
    color: var(--text-secondary);
    font-size: .84rem;
    line-height: 1.45;
}
.fb-list-empty { padding: .9rem 1rem; }
.fb-item {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: .65rem;
    margin: .35rem .55rem .55rem;
    padding: .7rem .75rem;
    border: 1px solid var(--border-color);
    border-radius: .65rem;
    background: var(--bg-body);
    color: inherit;
    text-decoration: none;
    cursor: pointer;
}
.fb-item-main {
    display: flex;
    flex-direction: column;
    gap: .15rem;
    min-width: 0;
    flex: 1;
}
.fb-item-open {
    display: inline-flex;
    align-items: center;
    gap: .2rem;
    flex: none;
    color: var(--accent-color);
    font-size: .78rem;
    font-weight: 700;
    white-space: nowrap;
}
.fb-item-open i { font-size: .8rem; line-height: 1; }
[dir="rtl"] .fb-item-open i { transform: scaleX(-1); }
.fb-item:hover {
    border-color: var(--accent-color);
    background: var(--table-hover);
}
.fb-item.is-on {
    border-color: transparent;
    background: rgba(79, 70, 229, .16);
}
.fb-item-h { display: flex; align-items: center; gap: .45rem; }
.fb-item-title {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: 700;
    font-size: .88rem;
}
.fb-item-who,
.fb-item-sub,
.fb-item-meta,
.fb-who {
    color: var(--text-secondary);
    font-size: .75rem;
    line-height: 1.35;
}
.fb-item-sub {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.fb-who { margin: .15rem 0 0; }
.fb-who a { color: inherit; }
.fb-head { align-items: flex-start; }
.fb-head-text { min-width: 0; }
.fb-main .st-bar h2,
.fb-head h2 {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 750;
    letter-spacing: -.02em;
    overflow-wrap: anywhere;
}
.fb-status {
    display: inline-block;
    margin-inline-start: .35rem;
    padding: .05rem .4rem;
    border: 1px solid var(--border-color);
    border-radius: 999px;
    color: var(--text-secondary);
    font-size: .68rem;
    font-weight: 700;
    vertical-align: middle;
}
.fb-log {
    display: flex;
    flex-direction: column;
    gap: .7rem;
    max-height: 28rem;
    min-height: 12rem;
    overflow: auto;
    padding: .9rem 1rem;
    background: var(--bg-body);
}
.fb-msg { max-width: min(36rem, 82%); }
.fb-msg.is-mine { margin-inline-start: auto; }
.fb-bubble {
    padding: .55rem .75rem;
    border: 1px solid var(--border-color);
    border-radius: .75rem;
    background: var(--bg-card);
    font-size: .9rem;
    line-height: 1.45;
    overflow-wrap: anywhere;
    white-space: pre-wrap;
}
.fb-msg.is-mine .fb-bubble {
    background: rgba(79, 70, 229, .22);
    border-color: transparent;
}
.fb-meta {
    margin-top: .2rem;
    color: var(--text-secondary);
    font-size: .72rem;
}
.fb-msg.is-mine .fb-meta { text-align: end; }
.fb-compose {
    display: flex;
    flex-direction: column;
    gap: .45rem;
    padding: .85rem 1rem 1rem;
}
.fb-compose textarea { min-height: 6.5rem; resize: vertical; }
.fb-send { display: flex; justify-content: flex-end; }
@media (max-width: 800px) {
    .fb-app { grid-template-columns: 1fr; }
    .fb-list { max-height: 16rem; }
    .fb-log { max-height: 22rem; }
}
