/* =========================================================================
   RehubPro / Courage — единая современная тема (в духе SOZA / shadcn)
   -------------------------------------------------------------------------
   Порядок: Bootstrap → Basecoat → ЭТОТ ФАЙЛ.
   Концепция каркаса: единый мягкий «холст» (светло-серый фон) + белая
   «плавающая» боковая панель без жёстких границ; прозрачная стеклянная
   шапка и ненавязчивый футер — без разделительных линий, чтобы всё
   выглядело цельно и современно.
   Палитра фиксированная: синий — основной, бирюзовый — вторичный.
   ========================================================================= */

/* -------------------------------------------------------------------------
   1. Токены
   ------------------------------------------------------------------------- */
:root {
    /* Основной — синий */
    --primary:#2563eb; --primary-hover:#1d4ed8; --tint:#eff6ff; --ring:rgba(37,99,235,.32);
    /* Вторичный — бирюзовый */
    --secondary:#0d9488; --secondary-hover:#0f766e; --secondary-tint:#f0fdfa;
    /* Успех/доход — бирюзовый (по просьбе: цвет успеха = бирюза, не зелёный) */
    --success:var(--secondary); --success-tint:var(--secondary-tint);
    /* Семантические */
    --info:#2563eb; --info-bg:#eff6ff;
    --warn:#d97706; --warn-bg:#fffbeb;
    --danger:#dc2626; --danger-bg:#fef2f2;

    /* Нейтральные (slate) */
    --ink:#0f172a; --ink-soft:#334155; --muted:#64748b; --muted-2:#94a3b8;
    --line:#e5e9f0; --line-soft:#eef2f7;
    --canvas:#f4f6fb;        /* общий фон-холст */
    --surface-2:#eef2f8;     /* лёгкая подложка (hover, шапки таблиц) */
    --card-bg:#ffffff;

    /* Тени */
    --shadow-xs:0 1px 2px rgba(15,23,42,.05);
    --shadow-sm:0 1px 3px rgba(15,23,42,.06),0 1px 2px rgba(15,23,42,.04);
    --shadow-md:0 8px 24px -10px rgba(15,23,42,.14);
    --shadow-lg:0 20px 45px -15px rgba(15,23,42,.25);
    --shadow-side:6px 0 24px -14px rgba(15,23,42,.14);

    /* Радиусы */
    --radius:0.7rem; --radius-lg:0.95rem; --radius-xl:1.25rem;

    /* Токены Basecoat / legacy */
    --primary-foreground:#ffffff;
    --border:var(--line); --input:var(--line);
    --muted-foreground:var(--muted); --foreground:var(--ink);
    --primary-color:var(--primary);      /* legacy */
    --secondary-color:var(--secondary);  /* legacy */
    --bg-color:var(--canvas);            /* legacy */
    --text-color:var(--ink);             /* legacy */

    /* Bootstrap-компоненты и старые шаблоны используют ту же палитру. */
    --bs-primary:var(--primary);
    --bs-primary-rgb:37,99,235;
    --bs-secondary:var(--muted);
    --bs-secondary-rgb:100,116,139;
    --bs-success:var(--primary);
    --bs-success-rgb:37,99,235;
    --bs-info:var(--info);
    --bs-info-rgb:37,99,235;
    --bs-warning:var(--warn);
    --bs-warning-rgb:217,119,6;
    --bs-danger:var(--danger);
    --bs-danger-rgb:220,38,38;
    --bs-body-font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
    --bs-body-color:var(--ink);
    --bs-body-bg:var(--canvas);
    --bs-border-color:var(--line);

    /* Каркас */
    --app-sidebar-width:258px;
    --app-navbar-height:66px;
    --app-footer-height:46px;
}

/* -------------------------------------------------------------------------
   2. База и типографика
   ------------------------------------------------------------------------- */
html, body { margin:0; padding:0; height:100%; overflow:hidden; }
body {
    display:flex; flex-direction:row;
    background-color:var(--canvas); color:var(--ink);
    font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
    -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale; font-size:14px;
}
button, input, select, textarea { font:inherit; }
.ti { line-height:1; vertical-align:-.125em; }
h1,h2,h3,h4,h5,h6 { color:var(--ink); font-weight:700; letter-spacing:-.014em; }
a { color:var(--primary-hover); text-decoration:none; }
a:hover { color:var(--primary); }
::selection { background:var(--tint); }

/* Единое отображение и копирование текста во всех многострочных и текстовых полях. */
textarea::selection,
input[type="text"]::selection,
input:not([type])::selection {
    background:var(--primary);
    color:#fff;
}

.text-copy-control { position:relative; }
.text-copy-btn {
    position:absolute;
    top:0;
    right:1rem;
    z-index:1;
    display:inline-flex;
    align-items:center;
    gap:.2rem;
    height:1.5rem;
    padding:0 .35rem;
    border:1px solid var(--line);
    border-radius:.375rem;
    background:var(--text-copy-parent-background, transparent);
    color:var(--ink-soft);
    font-size:.7rem;
    font-weight:500;
    line-height:1;
    transform:translateY(-50%);
}
.text-copy-btn::before {
    content:"";
    position:absolute;
    inset:-3px;
    z-index:-1;
    pointer-events:none;
    border-radius:calc(.375rem + 3px);
    background:var(--text-copy-parent-background, transparent);
}
.text-copy-btn:hover, .text-copy-btn:focus-visible {
    border-color:var(--primary); color:var(--primary-hover); outline:none;
}
.text-copy-btn.is-copied {
    border-color:var(--primary);
    color:var(--primary) !important;
}
::-webkit-scrollbar { width:10px; height:10px; }
::-webkit-scrollbar-thumb { background:#cbd5e1; border-radius:9999px; border:2px solid transparent; background-clip:content-box; }
::-webkit-scrollbar-thumb:hover { background:#94a3b8; background-clip:content-box; }
::-webkit-scrollbar-track { background:transparent; }

/* -------------------------------------------------------------------------
   3. Каркас: холст + плавающая панель, без жёстких линий
   ------------------------------------------------------------------------- */
.app-sidebar {
    position:fixed; top:0; left:0;
    width:var(--app-sidebar-width); height:100vh;
    background:var(--card-bg);
    border-right:none;
    box-shadow:var(--shadow-side);
    overflow:hidden; z-index:1000;              /* сам сайдбар не скроллится — логотип зафиксирован */
    display:flex; flex-direction:column; padding:0;
}
.wrapper {
    margin-left:var(--app-sidebar-width);
    display:flex; flex-direction:column;
    height:100vh; width:calc(100% - var(--app-sidebar-width));
    overflow:hidden; background:var(--canvas);
}
/* Стеклянная шапка без нижней границы — сливается с холстом */
.navbar {
    position:fixed; top:0; left:var(--app-sidebar-width); right:0;
    height:var(--app-navbar-height); z-index:1001;
    display:flex; align-items:center; justify-content:space-between;
    background-color:rgba(244,246,251,.72)!important;
    backdrop-filter:saturate(180%) blur(12px); -webkit-backdrop-filter:saturate(180%) blur(12px);
    border-bottom:none!important; box-shadow:none!important;
}
main {
    flex:1; overflow-y:auto; background:transparent;
    padding:calc(var(--app-navbar-height) + 1.35rem) 1.9rem calc(var(--app-footer-height) + 1rem);
}
footer {
    position:fixed; bottom:0; left:var(--app-sidebar-width); right:0;
    height:var(--app-footer-height);
    background:var(--canvas); border-top:none;
    color:var(--muted-2); text-align:center;
    display:flex; align-items:center; justify-content:center;
    z-index:1001; font-size:12px; letter-spacing:.01em;
}

/* -------------------------------------------------------------------------
   4. Шапка: заголовок страницы слева + действия справа
   ------------------------------------------------------------------------- */
.topbar-title { display:inline-flex; align-items:center; gap:.5rem; margin-left:.4rem; font-size:1.32rem; font-weight:700; color:var(--ink); letter-spacing:-.01em; white-space:nowrap; }
.topbar-title__icon { font-size:1.3rem; line-height:1; color:var(--primary); }
.topbar-actions { display:flex; align-items:center; gap:.35rem; }
/* Слот для кнопок страницы, «поднятых» в топбар */
.topbar-slot { display:flex; align-items:center; gap:.5rem; margin-right:.4rem; }
.topbar-slot:empty { display:none; }
.topbar-slot .btn { padding:.42rem .85rem; font-size:.85rem; }
.topbar-slot .btn .ti { font-size:1.05em; }

/* -------------------------------------------------------------------------
   5. Сайдбар: логотип и навигация
   ------------------------------------------------------------------------- */
/* Логотип зафиксирован сверху (flex-shrink:0, сайдбар не скроллится) и увеличен */
.app-sidebar__brand {
    height:176px; flex-shrink:0;
    display:flex; align-items:center; justify-content:center;
    padding:20px 1rem; margin:0;
}
.app-sidebar__brand a { display:flex; align-items:center; justify-content:center; width:100%; text-decoration:none; }
/* Фикс. размер логотипа: любой логотип клиента вписывается в бокс 132×216 и центрируется */
.app-sidebar__brand img { height:132px; width:auto; max-width:216px; object-fit:contain; display:block; }
.app-sidebar__brand h4 { color:var(--ink)!important; font-size:1.5rem; margin:0; text-align:center; }

/* Навигация — единственная скроллируемая зона сайдбара; компактная, чтобы основные пункты помещались без прокрутки */
.app-nav { list-style:none; padding:.7rem .7rem 1rem; margin:0; display:flex; flex-direction:column; gap:1px; flex:1 1 auto; min-height:0; overflow-y:auto; }
.app-nav__section { padding:.75rem .75rem .3rem; font-size:.65rem; font-weight:700; letter-spacing:.09em; text-transform:uppercase; color:var(--muted-2); }
.app-nav .nav-link {
    display:flex; align-items:center; gap:.65rem;
    padding:.34rem .72rem; border-radius:var(--radius);
    color:var(--ink-soft); font-size:.85rem; font-weight:500;
    text-decoration:none; white-space:nowrap; position:relative;
    transition:background-color .13s ease, color .13s ease;
}
/* Иконки навигации — тонкий набор Tabler, единый цвет (slate), синий у активного пункта */
.app-nav .nav-link .app-nav__icon { width:1.3rem; min-width:1.3rem; text-align:center; font-size:1.15rem; color:var(--muted); transition:color .13s ease; }
.app-nav .nav-link .app-nav__icon .ti { line-height:1; }
.app-nav .nav-link:hover { background:var(--surface-2); color:var(--ink); }
.app-nav .nav-link:hover .app-nav__icon { color:var(--ink-soft); }
.app-nav .nav-link.active { background:var(--tint); color:var(--primary-hover); font-weight:600; }
.app-nav .nav-link.active .app-nav__icon { color:var(--primary); }
/* Аккуратный акцент слева у активного пункта */
.app-nav .nav-link.active::before {
    content:""; position:absolute; left:-.7rem; top:50%; transform:translateY(-50%);
    width:3px; height:1.15rem; border-radius:0 3px 3px 0; background:var(--primary);
}
.app-nav__divider { display:none; }

/* -------------------------------------------------------------------------
   6. Кнопки
   ------------------------------------------------------------------------- */
.btn {
    border-radius:var(--radius); font-weight:500; font-size:.9rem; padding:.5rem 1.05rem;
    transition:all .15s ease; display:inline-flex; align-items:center; justify-content:center; gap:.45rem; line-height:1.35;
}
.btn:active { transform:translateY(.5px); }
.btn:focus, .btn:focus-visible { outline:none; box-shadow:0 0 0 3px var(--ring); }
.btn-sm { padding:.35rem .7rem; font-size:.82rem; border-radius:calc(var(--radius) - 3px); }
.btn-lg { padding:.7rem 1.3rem; font-size:1rem; }

.btn-primary, .btn-primary-custom { background:var(--primary); border:1px solid var(--primary); color:#fff; box-shadow:var(--shadow-xs); }
.btn-primary:hover, .btn-primary-custom:hover { background:var(--primary-hover); border-color:var(--primary-hover); color:#fff; box-shadow:var(--shadow-sm); }
.btn-outline-primary { background:#fff; border:1px solid var(--primary); color:var(--primary-hover); }
.btn-outline-primary:hover { background:var(--tint); border-color:var(--primary); color:var(--primary-hover); }

/* По требованию: никаких зелёных/бирюзовых кнопок — «вторичные» и «успех»
   сведены к основному синему. Опасные действия остаются красными (.btn-danger). */
.btn-secondary-custom, .btn-success { background:var(--primary); border:1px solid var(--primary); color:#fff; box-shadow:var(--shadow-xs); }
.btn-secondary-custom:hover, .btn-success:hover { background:var(--primary-hover); border-color:var(--primary-hover); color:#fff; box-shadow:var(--shadow-sm); }
.btn-outline-secondary-custom, .btn-outline-success { background:#fff; border:1px solid var(--primary); color:var(--primary-hover); }
.btn-outline-secondary-custom:hover, .btn-outline-success:hover { background:var(--tint); border-color:var(--primary); color:var(--primary-hover); }

/* Нейтральные / инфо */
.btn-secondary { background:#fff; border:1px solid var(--line); color:var(--ink-soft); box-shadow:var(--shadow-xs); }
.btn-secondary:hover { background:var(--surface-2); border-color:#cbd5e1; color:var(--ink); }
.btn-info { background:var(--info); border:1px solid var(--info); color:#fff; }
.btn-info:hover { filter:brightness(.94); color:#fff; }
.btn-outline-secondary { background:#fff; border:1px solid var(--line); color:var(--ink-soft); }
.btn-outline-secondary:hover { background:var(--surface-2); color:var(--ink); border-color:#cbd5e1; }
.btn-outline-info { background:#fff; border:1px solid var(--primary); color:var(--primary-hover); }
.btn-outline-info:hover { background:var(--tint); border-color:var(--primary); color:var(--primary-hover); }

/* Опасные */
.btn-danger { background:var(--danger); border:1px solid var(--danger); color:#fff; }
.btn-danger:hover { filter:brightness(.94); color:#fff; }
.btn-outline-danger { background:#fff; border:1px solid var(--danger); color:var(--danger); }
.btn-outline-danger:hover { background:var(--danger-bg); color:var(--danger); }
.btn-light { background:#fff; border:1px solid var(--line); color:var(--ink-soft); }
.btn-link { color:var(--primary-hover); } .btn-link:hover { color:var(--primary); text-decoration:underline; }

/* -------------------------------------------------------------------------
   7. Карточки
   ------------------------------------------------------------------------- */
.card { background:var(--card-bg); border:1px solid var(--line); border-radius:var(--radius-lg); box-shadow:var(--shadow-sm); padding:0; gap:0; overflow:hidden; }
.card > .card-header, .card > .card-body, .card > .card-footer { width:100%; }
.card-header { padding:.9rem 1.2rem; border-bottom:1px solid var(--line); background:transparent; font-weight:600; color:var(--ink); }
.card-body { padding:1.2rem; }
.card-footer { padding:.9rem 1.2rem; border-top:1px solid var(--line); background:transparent; }
.card-title { font-weight:700; }
.card > .card-header.bg-success { background:var(--success)!important; border-color:var(--success); }
.card > .card-header.bg-danger { background:var(--danger)!important; border-color:var(--danger); }
.card.border-success { border-color:rgba(22,163,74,.35); }
.card.border-danger { border-color:rgba(220,38,38,.30); }

/* -------------------------------------------------------------------------
   8. Таблицы
   ------------------------------------------------------------------------- */
.table { width:100%; color:var(--ink); border-color:var(--line); margin-bottom:0; }
.table > thead > tr > th, .table > thead th {
    background:var(--surface-2); color:var(--muted); font-weight:600; font-size:.78rem;
    text-transform:uppercase; letter-spacing:.03em; border-bottom:1px solid var(--line);
    padding:.7rem .8rem; vertical-align:middle;
}
.table > tbody > tr > td, .table > tbody td { padding:.65rem .8rem; border-top:1px solid var(--line-soft); vertical-align:middle; }
.table > tbody > tr:hover { background:var(--surface-2); }
.table-bordered, .table-bordered th, .table-bordered td { border-color:var(--line)!important; }
.table-striped > tbody > tr:nth-of-type(odd) > * { background:rgba(238,242,248,.6); }
.table-card { background:var(--card-bg); border:1px solid var(--line); border-radius:var(--radius-lg); box-shadow:var(--shadow-sm); overflow:hidden; }
.glass-card {
    padding:1rem;
    border:1px solid var(--line);
    border-radius:var(--radius-lg);
    background:var(--card-bg);
    box-shadow:var(--shadow-sm);
}

/* -------------------------------------------------------------------------
   9. Формы
   ------------------------------------------------------------------------- */
.form-control, .form-select {
    border-radius:var(--radius); border:1px solid var(--line); color:var(--ink);
    font-size:.9rem; padding:.5rem .75rem; box-shadow:var(--shadow-xs);
    transition:border-color .15s ease, box-shadow .15s ease;
}
.form-control::placeholder { color:var(--muted-2); }
.form-control:focus, .form-select:focus { border-color:var(--primary); box-shadow:0 0 0 3px var(--ring); }
.form-control-sm, .form-select-sm { padding:.35rem .6rem; font-size:.82rem; border-radius:calc(var(--radius) - 3px); }
.form-label { font-weight:500; color:var(--ink-soft); margin-bottom:.3rem; font-size:.85rem; }
.input-group-text { background:var(--surface-2); border:1px solid var(--line); color:var(--muted); font-size:.9rem; padding:.5rem .8rem; }
/* Единый шов у сгруппированных полей: одинаковая высота, схлопнутые границы, скруглены только внешние углы */
.input-group { align-items:stretch; }
.input-group > .form-control,
.input-group > .form-select,
.input-group > .input-group-text,
.input-group > .btn { box-shadow:none; }
/* WebKit не растягивает form-control/-select до высоты группы (в отличие от аддонов и кнопок),
   из-за чего у input[type=date] верх/низ не сходятся с иконкой и кнопкой. Единая высота: */
.input-group > .form-control,
.input-group > .form-select { min-height:2.25rem; }
.input-group > :not(:first-child) { margin-left:-1px; border-top-left-radius:0!important; border-bottom-left-radius:0!important; }
.input-group > :not(:last-child) { border-top-right-radius:0!important; border-bottom-right-radius:0!important; }
.input-group > .btn { z-index:2; }
.input-group > .form-control:focus,
.input-group > .form-select:focus { z-index:3; }
.form-check-input:checked { background-color:var(--primary); border-color:var(--primary); }
.form-check-input:focus { border-color:var(--primary); box-shadow:0 0 0 3px var(--ring); }

/* -------------------------------------------------------------------------
   10. Вкладки
   ------------------------------------------------------------------------- */
.nav-tabs { border-bottom:1px solid var(--line); gap:.15rem; }
.nav-tabs .nav-link { border:none; border-bottom:2px solid transparent; border-radius:0; margin-bottom:-1px; color:var(--muted); font-weight:500; padding:.6rem .9rem; background:transparent; }
.nav-tabs .nav-link:hover { color:var(--ink); border-bottom-color:var(--line); background:transparent; }
.nav-tabs .nav-link.active { color:var(--primary-hover); border-bottom-color:var(--primary); background:transparent; font-weight:600; }
.custom-tabs { border-bottom:0; }
.custom-tabs .nav-link {
    border:1px solid var(--line);
    border-radius:var(--radius);
    color:var(--ink-soft);
    background:var(--card-bg);
    box-shadow:var(--shadow-xs);
}
.custom-tabs .nav-link:hover {
    border-color:var(--muted-2);
    background:var(--surface-2);
}
.custom-tabs .nav-link.active {
    color:var(--primary-hover);
    border-color:var(--primary);
    background:var(--tint);
    box-shadow:0 0 0 3px var(--ring);
}
.nav-pills .nav-link { color:var(--ink-soft); font-weight:500; border-radius:var(--radius); }
.nav-pills .nav-link.active { background:var(--primary); color:#fff; }

/* Аккордеон: заголовок обычного веса (ФИО в просмотре отчётов не должно быть жирным —
   .accordion-header это <h2>, иначе кнопка наследует font-weight:700). */
.accordion-button { font-weight:500; color:var(--ink); box-shadow:none; }
.accordion-button:not(.collapsed) { color:var(--primary-hover); background:var(--tint); box-shadow:none; }
.accordion-button:focus { box-shadow:0 0 0 3px var(--ring); border-color:transparent; }
.accordion-button:not(.collapsed)::after { filter:hue-rotate(0deg); }

/* -------------------------------------------------------------------------
   11. Модалки
   ------------------------------------------------------------------------- */
.modal-content { border:none; border-radius:var(--radius-xl); box-shadow:var(--shadow-lg); overflow:hidden; }
.modal-header { border-bottom:1px solid var(--line); padding:1.1rem 1.4rem; }
.modal-title { font-weight:700; font-size:1.1rem; }
.modal-body { padding:1.4rem; }
.modal-footer { border-top:1px solid var(--line); padding:1rem 1.4rem; gap:.5rem; }
.modal-backdrop.show { opacity:.45; }

/* -------------------------------------------------------------------------
   12. Бейджи и алерты
   ------------------------------------------------------------------------- */
.badge { font-weight:600; border-radius:9999px; padding:.32em .7em; font-size:.74rem; }
.badge.bg-success { background:var(--success)!important; }
.badge.bg-primary { background:var(--primary)!important; }
.badge.bg-info { background:var(--secondary)!important; }
.text-primary, .text-info { color:var(--primary)!important; }
.text-success { color:var(--primary-hover)!important; }
.text-warning { color:var(--warn)!important; }
.text-danger { color:var(--danger)!important; }
.text-secondary, .text-muted { color:var(--muted)!important; }
.bg-primary, .bg-info, .bg-success { background-color:var(--primary)!important; }
.bg-warning { background-color:var(--warn)!important; }
.bg-danger { background-color:var(--danger)!important; }
.bg-light { background-color:var(--surface-2)!important; }
.border-primary, .border-info, .border-success { border-color:var(--primary)!important; }
.border-warning { border-color:var(--warn)!important; }
.border-danger { border-color:var(--danger)!important; }
.alert { border-radius:var(--radius); border:1px solid transparent; padding:.85rem 1.05rem; }
.alert-success { background:var(--success-tint); border-color:#99f6e4; color:#0f766e; }
.alert-danger { background:var(--danger-bg); border-color:#fecaca; color:#991b1b; }
.alert-warning { background:var(--warn-bg); border-color:#fde68a; color:#92400e; }
.alert-info { background:var(--info-bg); border-color:#bfdbfe; color:#1e40af; }

/* -------------------------------------------------------------------------
   13. Выпадающие меню + мост совместимости с Bootstrap
   ------------------------------------------------------------------------- */
.dropdown-menu:not(:has(> [data-popover])) { display:none; position:absolute; flex-direction:column; inset:auto; }
.dropdown-menu:not(:has(> [data-popover])).show { display:block; }
.dropdown-menu { border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow-lg); padding:.35rem; color:var(--ink); }
.dropdown-menu .dropdown-item { border-radius:calc(var(--radius) - 3px); padding:.5rem .7rem; font-size:.9rem; color:var(--ink-soft); display:flex; align-items:center; }
.dropdown-menu .dropdown-item:hover { background:var(--surface-2); color:var(--ink); }
.dropdown-menu .dropdown-item:active { background:var(--primary); color:#fff; }
.dropdown-menu .dropdown-item.text-danger:hover { background:var(--danger-bg); }
.dropdown-header { color:var(--muted); font-weight:600; font-size:.74rem; text-transform:uppercase; letter-spacing:.04em; }
.dropdown-divider { border-color:var(--line-soft); }

/* -------------------------------------------------------------------------
   14. Шапка страницы (в контенте) + помощники
   ------------------------------------------------------------------------- */
.page-header { display:flex; align-items:center; gap:.85rem; margin-bottom:1.4rem; }
.page-header h1, .page-header h2 { font-size:1.5rem; font-weight:700; margin:0; }
.page-header .page-header__icon {
    display:inline-flex; align-items:center; justify-content:center;
    width:2.6rem; height:2.6rem; border-radius:var(--radius);
    background:var(--tint); color:var(--primary); font-size:1.15rem;
    box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--primary) 18%, transparent);
}
.page-title { font-size:1.5rem; font-weight:700; margin:0; }
.bg-primary-custom { background-color:var(--primary)!important; }
.text-primary-custom { color:var(--primary)!important; }
.icon-left { margin-right:.4rem; } .icon-right { margin-left:.4rem; }
.profile-avatar {
    width:120px;
    height:120px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    overflow:hidden;
    border:1px solid var(--line);
    border-radius:50%;
    background:var(--tint);
    color:var(--primary);
    box-shadow:var(--shadow-sm);
}
.profile-avatar img { width:100%; height:100%; object-fit:cover; }
.profile-avatar .ti { font-size:3rem; }

/* -------------------------------------------------------------------------
   15. Служебные оверлеи
   ------------------------------------------------------------------------- */
#license-banner { text-align:center; font-weight:600; font-size:14px; padding:9px; color:#fff; pointer-events:none; }
#license-banner.warning { background:var(--warn); }
#license-banner.grace { background:var(--danger); }
#license-expired-overlay {
    position:fixed; inset:0; width:100vw; height:100vh;
    background:rgba(220,38,38,.92); color:#fff; z-index:10000;
    font-size:1.35rem; font-weight:600; text-align:center; padding:2rem;
    display:flex; flex-direction:column; gap:.75rem; align-items:center; justify-content:center; pointer-events:all;
}
#page-loader-overlay {
    position:fixed; inset:0; width:100vw; height:100vh;
    background:rgba(15,23,42,.35); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
    z-index:10000; display:none; flex-direction:column; align-items:center; justify-content:center; transition:opacity .3s ease;
}
.loader-content { text-align:center; color:#fff; }
.modern-spinner { width:48px; height:48px; border:3px solid rgba(255,255,255,.3); border-radius:50%; border-top-color:var(--primary); animation:spin .8s ease-in-out infinite; margin:0 auto 15px; }
@keyframes spin { to { transform:rotate(360deg); } }
.loading-text { font-size:1.05rem; font-weight:300; letter-spacing:1px; text-transform:uppercase; animation:pulse 1.5s infinite; }
@keyframes pulse { 0%,100% { opacity:1; } 50% { opacity:.5; } }

/* -------------------------------------------------------------------------
   16. Иконки в отчётах (заполнение + просмотр)
   Контейнеры помечены классом .report-icons. Все нейтральные действия используют
   primary; опасное/негативное состояние — только danger.
   ------------------------------------------------------------------------- */
.report-icons .ti { width:1.15em; text-align:center; margin-right:.15rem; font-size:1.05em; }
.report-icons .ti-brain,
.report-icons .ti-barbell,
.report-icons .ti-target,
.report-icons .ti-chart-line,
.report-icons .ti-users,
.report-icons .ti-users-group,
.report-icons .ti-seeding,
.report-icons .ti-pin,
.report-icons .ti-message-dots,
.report-icons .ti-folders,
.report-icons .ti-user { color:var(--primary); }
.report-icons .ti-alert-triangle { color:var(--danger); }
/* Иконки внутри кнопок сохраняют цвет кнопки (например, «Сохранить») */
.report-icons .btn .ti { color:inherit; }
