:root{
  --bg:#1a1c20; --panel:#212429; --panel-2:#282c32;
  --border:#33373f; --border-soft:#2b2f36;
  --text:#e8eaed; --muted:#9aa0ac; --muted-2:#6c7280;
  --blue:#3b82f6; --green:#22a565; --orange:#e8873a; --red:#e05a5a;
  --radius:10px; --shadow:0 1px 3px rgba(0,0,0,.35);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:'Inter','Segoe UI',system-ui,-apple-system,sans-serif;
  background:var(--bg);color:var(--text);font-size:14px;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
.app{display:grid;grid-template-columns:1fr 236px;min-height:100vh}

/* ===== Меню справа ===== */
.sidebar{
  grid-column:2;grid-row:1;background:var(--panel);border-left:1px solid var(--border);
  display:flex;flex-direction:column;position:sticky;top:0;height:100vh;
}
.brand{display:flex;align-items:center;gap:11px;padding:20px 22px;font-weight:600;font-size:16px;border-bottom:1px solid var(--border-soft)}
.brand .logo{width:30px;height:30px;border-radius:8px;background:transparent;display:block;object-fit:contain}
.brand small{display:block;font-size:11px;color:var(--muted-2);font-weight:400}
.nav{padding:14px 12px;flex:1;overflow-y:auto}
.nav-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;color:var(--muted-2);padding:14px 12px 7px;font-weight:600}
.nav-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:8px;color:var(--muted);font-size:13.5px;cursor:pointer;transition:.15s;position:relative}
.nav-item:hover{background:var(--panel-2);color:var(--text)}
.nav-item.active{background:var(--panel-2);color:var(--text);font-weight:500}
.nav-item.active::before{content:"";position:absolute;right:-12px;top:8px;bottom:8px;width:3px;background:var(--blue);border-radius:3px 0 0 3px}
.nav-item .ic{width:16px;text-align:center;font-size:14px}
.nav-item .badge{margin-left:auto;background:var(--orange);color:#1a1c20;font-size:10px;font-weight:700;padding:2px 7px;border-radius:20px}
.sidebar-foot{border-top:1px solid var(--border-soft);padding:14px 16px;display:flex;align-items:center;gap:11px}
.sidebar-foot .avatar{width:34px;height:34px;border-radius:8px;background:var(--panel-2);display:grid;place-items:center;font-weight:600;color:var(--muted)}
.sidebar-foot .u-name{font-size:13px;font-weight:500}
.sidebar-foot .u-role{font-size:11px;color:var(--muted-2)}

/* ===== Контент ===== */
/* min-width:0 обязателен: иначе grid-колонка 1fr раздувается под ширину таблицы,
   и правые кнопки (действия) уезжают за край страницы вместо скролла внутри карточки. */
.main{grid-column:1;grid-row:1;min-width:0;overflow-x:hidden}
.topbar{display:flex;justify-content:space-between;align-items:center;padding:16px 28px;border-bottom:1px solid var(--border-soft);position:sticky;top:0;background:rgba(26,28,32,.9);backdrop-filter:blur(8px);z-index:5;gap:14px;flex-wrap:wrap}
.topbar h1{font-size:18px;font-weight:600}
.topbar .sub{color:var(--muted-2);font-size:12.5px;margin-top:2px}
.top-actions{display:flex;align-items:center;gap:10px}
.content{padding:24px 28px}

/* Переключатель языка */
.lang{display:flex;background:var(--panel-2);border-radius:7px;padding:3px;gap:2px}
.lang a{padding:5px 10px;border-radius:5px;font-size:12px;font-weight:600;color:var(--muted)}
.lang a.on{background:var(--blue);color:#fff}

/* ===== KPI ===== */
.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:24px}
.kpi{background:var(--panel);border:1px solid var(--border-soft);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow);display:block;transition:border-color .15s}
a.kpi:hover{border-color:var(--blue)}
.kpi .k-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.kpi .label{color:var(--muted);font-size:12.5px;font-weight:500}
.kpi .k-ic{width:34px;height:34px;border-radius:8px;display:grid;place-items:center;font-size:15px}
.kpi .value{font-size:26px;font-weight:700;letter-spacing:-.5px;line-height:1}
.kpi .go{font-size:11.5px;color:var(--muted-2);margin-top:10px}
.i-blue{background:rgba(59,130,246,.14);color:var(--blue)}
.i-green{background:rgba(34,165,101,.16);color:var(--green)}
.i-orange{background:rgba(232,135,58,.16);color:var(--orange)}
.i-red{background:rgba(224,90,90,.16);color:var(--red)}

/* ===== Карточки / сетки ===== */
.grid{display:grid;grid-template-columns:1fr 2fr;gap:18px;margin-bottom:18px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}
.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:18px;margin-bottom:18px}
.card{background:var(--panel);border:1px solid var(--border-soft);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}
.card-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px}
.card h3{font-size:14.5px;font-weight:600}
.card .card-sub{color:var(--muted-2);font-size:12px;margin-top:3px}
.seg{display:flex;background:var(--panel-2);border-radius:7px;padding:3px;gap:2px}
.seg button,.seg a{background:none;border:none;color:var(--muted);font-size:12px;padding:5px 11px;border-radius:5px;cursor:pointer;font-weight:500;text-decoration:none;display:inline-block}
.seg button.on,.seg a.on{background:var(--blue);color:#fff}
.dash-filter{display:flex;align-items:center;gap:8px}
.dash-filter select{padding:7px 10px;font-size:12.5px;min-width:130px}
.legend{display:flex;gap:16px;font-size:12px;color:var(--muted);flex-wrap:wrap}
.legend span{display:flex;align-items:center;gap:7px}
.dot{width:9px;height:9px;border-radius:3px;display:inline-block}

/* Список */
.list-item{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid var(--border-soft);font-size:13.5px}
.list-item:last-child{border-bottom:none;padding-bottom:0}
.list-item .name{display:flex;align-items:center;gap:12px}
.list-item .name small{display:block;color:var(--muted-2);font-size:11.5px;margin-top:2px}
.avatar{width:34px;height:34px;border-radius:8px;display:grid;place-items:center;font-size:12px;font-weight:600}
.tag{font-size:11px;padding:4px 10px;border-radius:6px;font-weight:600;white-space:nowrap}
.tag.ok{background:rgba(34,165,101,.16);color:var(--green)}
.tag.warn{background:rgba(232,135,58,.16);color:var(--orange)}
.tag.err{background:rgba(224,90,90,.16);color:var(--red)}
.tag.blue{background:rgba(59,130,246,.16);color:var(--blue)}

/* Таблица */
table{width:100%;border-collapse:collapse;font-size:13px}
thead th{text-align:left;color:var(--muted-2);font-size:11px;text-transform:uppercase;letter-spacing:.05em;font-weight:600;padding:0 10px 12px 0;border-bottom:1px solid var(--border-soft)}
tbody td{padding:12px 10px 12px 0;border-bottom:1px solid var(--border-soft);vertical-align:middle}
tbody tr:last-child td{border-bottom:none}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}

/* ===== Формы ===== */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 20px}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field.full{grid-column:1 / -1}
label{font-size:13px;color:var(--muted)}
input[type=text],input[type=password],input[type=number],input[type=url],input[type=search],select,textarea{
  background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:9px 12px;color:var(--text);font-size:13.5px;font-family:inherit;width:100%
}
textarea{min-height:70px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue)}
.btn{background:var(--blue);color:#fff;border:none;border-radius:8px;padding:9px 16px;font-size:13px;font-weight:500;cursor:pointer;transition:filter .15s;display:inline-block}
.btn:hover{filter:brightness(1.08)}
.btn.ghost{background:var(--panel);border:1px solid var(--border);color:var(--text)}
.btn.sm{padding:6px 11px;font-size:12px}
.btn.danger{background:var(--red)}
.btn.gray{background:var(--panel-2);color:var(--text);border:1px solid var(--border)}

/* Переключатель (тумблер) */
.switch{position:relative;display:inline-block;width:42px;height:24px;flex:none}
.switch input{opacity:0;width:0;height:0}
.slider{position:absolute;inset:0;background:var(--panel-2);border:1px solid var(--border);border-radius:24px;cursor:pointer;transition:.2s}
.slider::before{content:"";position:absolute;height:16px;width:16px;left:3px;top:3px;background:var(--muted);border-radius:50%;transition:.2s}
.switch input:checked + .slider{background:var(--green);border-color:var(--green)}
.switch input:checked + .slider::before{transform:translateX(18px);background:#fff}
.toggle-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--border-soft)}
.toggle-row:last-child{border-bottom:none}
.toggle-row .tl{flex:1}
.toggle-row .tl small{display:block;color:var(--muted-2);font-size:11.5px;margin-top:2px}
.threshold{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--border-soft)}
.threshold input[type=number]{width:120px}
.threshold .tl{flex:1}

.page-actions{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:12px;flex-wrap:wrap}
.filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.note{background:rgba(59,130,246,.08);border:1px solid rgba(59,130,246,.25);color:var(--text);padding:12px 14px;border-radius:8px;font-size:13px;margin-bottom:16px}
.demo-badge{font-size:10px;background:var(--panel-2);color:var(--muted-2);padding:2px 8px;border-radius:20px;border:1px solid var(--border)}
.meter{height:8px;background:var(--panel-2);border-radius:20px;overflow:hidden;margin-top:6px}
.meter > span{display:block;height:100%;border-radius:20px}
.muted{color:var(--muted-2)}
.stat-inline{display:flex;gap:6px;color:var(--muted-2);font-size:12px}

/* ===== Вход / заглушка ===== */
.auth-wrap{display:grid;place-items:center;min-height:100vh;padding:20px}
.auth-card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:32px;width:100%;max-width:360px;box-shadow:var(--shadow)}
.auth-card .logo{width:48px;height:48px;border-radius:12px;background:transparent;display:block;margin:0 auto 18px}
.auth-card h1{font-size:19px;text-align:center;margin-bottom:6px}
.auth-card .hint{text-align:center;color:var(--muted-2);font-size:12px;margin-bottom:22px}
.auth-card .btn{width:100%;padding:11px;margin-top:6px}
.auth-error{background:rgba(224,90,90,.14);color:var(--red);border:1px solid rgba(224,90,90,.3);padding:10px;border-radius:8px;font-size:13px;margin-bottom:16px;text-align:center}
.blocked-box{text-align:center;max-width:420px}
.blocked-box .big{font-size:64px;margin-bottom:14px}
.blocked-box h1{font-size:22px;color:var(--red);margin-bottom:10px}

@media (max-width:1100px){
  .kpi-row{grid-template-columns:repeat(2,1fr)}
  .grid,.grid-2,.grid-3{grid-template-columns:1fr}
  .form-grid{grid-template-columns:1fr}
}
@media (max-width:720px){
  .app{grid-template-columns:1fr}
  .sidebar{position:static;height:auto}
  .kpi-row{grid-template-columns:1fr}
}

/* ===== Анимации переходов между страницами ===== */
/* Кросс-документный View Transition для браузеров с поддержкой (Chrome/Edge) */
@view-transition { navigation: auto; }

/* Плавное появление контента при каждой загрузке страницы (фолбэк + общий эффект) */
@keyframes pageIn { from { opacity:0; transform:translateY(10px) } to { opacity:1; transform:none } }
@keyframes cardIn { from { opacity:0; transform:translateY(14px) } to { opacity:1; transform:none } }

.content { animation: pageIn .30s ease both }

/* Лёгкий каскад для верхних блоков дашборда */
.content > .kpi-row { animation: cardIn .40s ease both }
.content > .grid-2 { animation: cardIn .44s .06s ease both }
.content > .card   { animation: cardIn .46s .10s ease both }

/* Мягкие переходы для интерактивных элементов */
.kpi, .btn, .nav-item, .list-item, .seg a, .seg button { transition: transform .15s ease, background .15s ease, color .15s ease, filter .15s ease }
.kpi:hover { transform: translateY(-2px) }

@media (prefers-reduced-motion: reduce) {
  .content, .content > .kpi-row, .content > .grid-2, .content > .card { animation: none }
  .kpi:hover { transform: none }
}

/* Кнопка «Назад» в левом углу topbar */
.topbar-left{display:flex;align-items:center;gap:14px}
.btn-back{
  width:36px;height:36px;flex:0 0 auto;border-radius:9px;
  background:var(--panel-2);border:1px solid var(--border);color:var(--text);
  font-size:17px;line-height:1;cursor:pointer;display:grid;place-items:center;
  transition:background .15s,border-color .15s,transform .15s;
}
.btn-back:hover{background:var(--panel);border-color:var(--blue);transform:translateX(-2px)}
.btn-back:active{transform:translateX(-2px) scale(.94)}

/* Колокольчик оповещений в шапке */
.bell-wrap{position:relative;display:flex}
.bell{
  position:relative;width:32px;height:32px;border-radius:8px;padding:0;
  display:grid;place-items:center;cursor:pointer;
  background:transparent;border:1px solid var(--border);color:var(--muted);
  transition:background .15s,border-color .15s,color .15s;
}
.bell:hover{background:var(--panel-2);color:var(--text)}
.bell svg{display:block}
.bell.has{color:var(--orange);border-color:var(--border)}
.bell-badge{
  position:absolute;top:-8px;right:-8px;min-width:19px;height:19px;padding:0 5px;
  border-radius:20px;background:var(--red);color:#fff;
  font-size:11px;font-weight:700;line-height:19px;text-align:center;
  border:2px solid var(--bg);font-variant-numeric:tabular-nums;box-shadow:0 1px 3px rgba(0,0,0,.4);
}

/* Выпадающее окно оповещений */
.bell-menu{
  position:absolute;top:calc(100% + 8px);right:0;width:320px;max-width:86vw;z-index:20;
  background:var(--panel);border:1px solid var(--border);border-radius:12px;
  box-shadow:0 12px 30px rgba(0,0,0,.45);overflow:hidden;
  animation:bellDrop .16s ease both;
}
@keyframes bellDrop{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.bell-menu-head{
  display:flex;justify-content:space-between;align-items:center;
  padding:12px 14px;border-bottom:1px solid var(--border-soft);font-weight:600;font-size:13.5px;
}
.bell-count{background:var(--orange);color:#1a1c20;font-size:11px;font-weight:700;padding:1px 8px;border-radius:20px}
.bell-menu-list{max-height:320px;overflow-y:auto}
.bell-item{display:flex;gap:10px;align-items:flex-start;padding:11px 14px;border-bottom:1px solid var(--border-soft)}
.bell-item:hover{background:var(--panel-2)}
.bell-item.unread{background:rgba(232,135,58,.06)}
.bell-item .bi-dot{width:9px;height:9px;border-radius:3px;margin-top:4px;flex:0 0 auto}
.bi-dot.i-green{background:var(--green)}
.bi-dot.i-blue{background:var(--blue)}
.bi-dot.i-orange{background:var(--orange)}
.bell-item .bi-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.bell-item .bi-msg{font-size:13px;line-height:1.35}
.bell-item small{color:var(--muted-2);font-size:11px}
.bell-empty{padding:26px 14px;text-align:center;color:var(--muted-2);font-size:13px}
.bell-menu-foot{display:block;text-align:center;padding:11px;font-size:12.5px;color:var(--blue);border-top:1px solid var(--border-soft)}
.bell-menu-foot:hover{background:var(--panel-2)}

/* Отчёты: раскрывающиеся настройки критерия + поиск по списку */
.sub{margin:-2px 0 16px;padding:10px 12px;background:var(--panel-2);border:1px solid var(--border-soft);border-radius:8px}
.sub .form-grid{margin:0}
.sub .field{margin-bottom:0}
.opt-search{margin-bottom:8px}
select[size]{padding:4px;height:auto}
select[size] option{padding:6px 8px;border-radius:5px}

/* Новости: сортируемые заголовки + пагинация */
.th-sort{color:inherit;text-decoration:none;white-space:nowrap}
.th-sort:hover{color:var(--text)}
.th-sort.on{color:var(--blue)}
.pager{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;margin-top:16px}
.pager-pages{display:flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:5px}
.pager-number{min-width:34px;justify-content:center;padding-left:8px;padding-right:8px}
.pager-number.on{color:#fff;background:var(--blue);border-color:var(--blue);pointer-events:none}
.pager-dots{padding:0 3px;color:var(--muted)}
.pager-edge{min-width:34px;justify-content:center}
.btn.disabled,a.btn.disabled{pointer-events:none;opacity:.4}

/* Отчёты: инлайн-галочка ИИ-фильтра рядом с тумблером */
.ai-check{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted);cursor:pointer;white-space:nowrap}
.ai-check input{width:auto;margin:0;accent-color:var(--green)}

/* Активный столбец сортировки */
.th-active{color:var(--blue)}

/* Кнопка «отметить прочитанными» в окне колокольчика */
.bell-readall{background:none;border:none;color:var(--blue);font-size:11.5px;font-weight:600;cursor:pointer;padding:0}
.bell-readall:hover{text-decoration:underline}

/* Вкладка «Часто упоминаемые темы» */
.topic{border-bottom:1px solid var(--border-soft)}
.topic:last-child{border-bottom:none}
.topic>summary{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 0;cursor:pointer;list-style:none}
.topic>summary .name,.topic>summary .name>div:last-child{min-width:0}
.topic>summary::-webkit-details-marker{display:none}
.topic>summary:hover{opacity:.92}
.topic[open]>summary{border-bottom:1px dashed var(--border-soft)}
.topic-body{padding:8px 0 12px 46px}
.topic-title{min-width:0;white-space:normal;overflow-wrap:anywhere;line-height:1.4}
.topic-stats{color:var(--muted-2);font-size:11.5px;margin:2px 0 10px}
.dashboard-topic>summary{padding-left:8px;padding-right:8px;margin-left:-8px;margin-right:-8px}
.topic-section-title{font-size:12px;margin:10px 0 8px}
.topic-source-row{padding:8px 0}
.topic-source-avatar{width:28px;height:28px;font-size:13px}

/* Выбор категорий: вертикальный список с тумблерами (клик по строке переключает) */
.chips{display:flex;flex-direction:column;max-height:320px;overflow-y:auto;padding:2px 12px;background:var(--panel-2);border:1px solid var(--border);border-radius:10px}
.cat-row{
  display:flex;align-items:center;gap:12px;padding:11px 4px;
  border-bottom:1px solid var(--border-soft);cursor:pointer;
  font-size:13.5px;color:var(--text);user-select:none;transition:color .12s;
}
.cat-row:last-child{border-bottom:none}
.cat-row .cat-name{flex:1;min-width:0}
.cat-row:hover .cat-name{color:var(--text)}
.cat-row.on .cat-name{color:var(--green);font-weight:500}
.chip-search{margin-bottom:10px}
.chips::-webkit-scrollbar{width:8px}
.chips::-webkit-scrollbar-thumb{background:var(--border);border-radius:8px}

/* Модальное окно (диалог добавления источника) */
.modal{border:none;padding:0;border-radius:14px;width:92%;max-width:560px;max-height:90vh;position:fixed;inset:0;margin:auto;background:var(--panel);color:var(--text);box-shadow:0 24px 60px rgba(0,0,0,.55)}
.modal::backdrop{background:rgba(0,0,0,.55);backdrop-filter:blur(2px)}
.modal-form{display:flex;flex-direction:column;max-height:88vh}
.modal-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border-soft)}
.modal-head h3{font-size:15px;font-weight:600}
.modal-x{background:none;border:none;color:var(--muted);font-size:16px;cursor:pointer;line-height:1;padding:4px}
.modal-x:hover{color:var(--text)}
.modal-body{padding:18px 20px;overflow-y:auto}
.modal-body .form-grid{margin-bottom:6px}
.modal-foot{display:flex;gap:10px;padding:14px 20px;border-top:1px solid var(--border-soft)}

/* Строки баланса AI */
.bal-row{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px solid var(--border-soft);font-size:13.5px}
.bal-row:last-child{border-bottom:none}
.bal-row span{color:var(--muted)}

/* Активная (выбранная) AI-модель — подсветка строки */
tr.row-active td{background:rgba(34,165,101,.08)}

/* PJAX: индикатор загрузки (тонкая полоса сверху) */
#pjax-bar{position:fixed;top:0;left:0;height:2.5px;width:0;background:var(--blue);z-index:9999;
  box-shadow:0 0 8px var(--blue);opacity:0;pointer-events:none}
#pjax-bar.run{width:80%;opacity:1;transition:width 8s cubic-bezier(.1,.7,.3,1),opacity .2s}
#pjax-bar.done{width:100%;opacity:0;transition:width .2s ease,opacity .4s .2s}

/* Широкие таблицы скроллятся внутри карточки (иначе колонка действий уезжает за край) */
.card:has(table){overflow-x:auto}
.card:has(table) > table{min-width:760px}
.table-wrap{overflow-x:auto}

/* ===== Интерактивные графики дашборда ===== */
.chart-wrap{position:relative}

/* Всплывающая подсказка (значение при наведении) */
.chart-tip{
  position:absolute;transform:translate(-50%,-100%);pointer-events:none;z-index:6;
  background:var(--panel-2);border:1px solid var(--border);border-radius:8px;
  padding:6px 10px;font-size:12px;color:var(--text);white-space:nowrap;
  box-shadow:0 6px 18px rgba(0,0,0,.4);line-height:1.35
}
.chart-tip b{font-size:14px;font-weight:700;color:var(--blue)}
.chart-tip span{display:block;color:var(--muted-2);font-size:11px;margin-top:1px}

/* Линейный график: зоны наведения, курсор-линия, активная точка */
.chart-hit{fill:transparent;cursor:pointer;pointer-events:all}
.chart-cursor{stroke:var(--blue);stroke-width:1;stroke-dasharray:3 3;opacity:.6;pointer-events:none}
.chart-active-dot{fill:var(--blue);stroke:var(--panel);stroke-width:2;pointer-events:none;
  filter:drop-shadow(0 0 4px var(--blue))}

/* Недельные столбцы: подсветка активного, приглушение остальных */
.bar-hit{fill:transparent;cursor:pointer}
.week-bar{transition:opacity .15s,filter .15s;pointer-events:none}
.week-bar.dim{opacity:.35}
.week-bar.hot{filter:brightness(1.25) drop-shadow(0 0 5px rgba(59,130,246,.6))}

/* Разбивка по регионам/категориям — подсветка строки при наведении */
.bd-row{padding:6px 8px;margin:0 -8px 8px;border-radius:8px;cursor:default;
  transition:background .15s}
.bd-row:hover{background:var(--panel-2)}
.bd-row:hover .meter > span{filter:brightness(1.2)}
.bd-row .bd-n{color:var(--text)}

/* Списки (темы / топ постов) — подсветка при наведении */
.list-item.hoverable{padding-left:8px;padding-right:8px;margin-left:-8px;margin-right:-8px;
  border-radius:8px;transition:background .15s;cursor:default}
.list-item.hoverable:hover{background:var(--panel-2)}
.list-item.hoverable:hover .tag{filter:brightness(1.12)}

/* Полный текст публикации в блоке последних новостей */
.post-preview{display:block}
.post-preview>summary{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;cursor:pointer;list-style:none}
.post-preview>summary .name,.post-preview>summary .name>div:last-child{min-width:0}
.top-post-news{display:-webkit-box;margin-top:4px;overflow:hidden;color:var(--muted);line-height:1.4;white-space:normal;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:3}
.post-preview>summary::-webkit-details-marker{display:none}
.post-preview>summary::after{content:'＋';color:var(--muted);font-size:16px}
.post-preview[open]>summary::after{content:'−'}
.post-full-text{margin:12px 0 8px 46px;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text);line-height:1.55}
.post-source-link{display:inline-block;margin-left:46px;font-size:12px;color:var(--blue);text-decoration:none}
.post-source-link:hover{text-decoration:underline}
.news-post-preview>summary{cursor:pointer;color:var(--text)}
.news-post-preview .post-full-text{margin-left:0;min-width:260px}
.news-post-preview .post-source-link{margin-left:0}
.translate-post{margin-top:8px}
.post-translation{margin-top:10px;padding:10px 12px;border-left:3px solid var(--green);background:var(--panel-2);white-space:pre-wrap;line-height:1.5}
.topic-post{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid var(--border-soft);font-size:12.5px}
.topic-post-text{min-width:0;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.55}
.topic-post-expand{border-top:1px solid var(--border-soft)}
.topic-post-expand>summary{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:10px 0;cursor:pointer;list-style:none}
.topic-post-expand>summary::-webkit-details-marker{display:none}
.topic-post-expand>summary::after{content:'＋';flex:none;color:var(--muted);font-size:14px}
.topic-post-expand[open]>summary::after{content:'−'}
.topic-post-preview{min-width:0;flex:1;overflow-wrap:anywhere;line-height:1.45}
.topic-post-meta{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:none;color:var(--muted-2);font-size:11px;white-space:nowrap}
.topic-post-full{padding:2px 0 8px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.55;color:var(--text)}
.topic-post-link{margin:0 0 12px}
.topic-post a{color:var(--blue);white-space:nowrap;text-decoration:none}
.topic-post a:hover{text-decoration:underline}
.post-image{display:block;max-width:min(100%,560px);max-height:360px;margin:12px 0 8px 46px;border-radius:10px;object-fit:contain;object-position:left center;background:var(--panel-2)}
.news-post-image{margin-left:0;max-width:100%}

/* KPI: заметнее реагируют на курсор */
a.kpi{transition:border-color .15s,transform .15s,box-shadow .15s}
a.kpi:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(0,0,0,.35)}
a.kpi:hover .value{color:var(--blue)}
.topic-context{display:block;max-width:100%;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--muted);font-size:11px;line-height:1.45;margin-top:4px}
.translate-post.is-loading{opacity:.7;position:relative}.translate-post.is-loading:after{content:' ';display:inline-block;width:12px;height:12px;margin-left:7px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;vertical-align:-2px;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
