/* =========================================================================
   P2P Machine — раздел контента: новости, блог, статья, аналитика.
   Подключается ПОСЛЕ theme.css и app.css, только на страницах раздела
   (блок stylesheets в шаблонах public/{news,news_item,blog,article} и analytics/*).

   Правила те же, что у всей системы: цвета — только токены --pm-*, кегли — из
   шкалы --pm-fs-*, инлайновый style="" в шаблонах — только вычисленная геометрия
   графиков (проценты координат).

   Содержание:
     0. Шапка до инициализации UIkit
     1. Общее: крошки, фильтры, пейджер, блок инструментов
     2. Лента новостей
     3. Страница новости
     4. Блог: рубрики, карточки
     5. Страница статьи: оглавление, текст
     6. Аналитика: плитки, графики, таблицы
     7. Адаптив
   ========================================================================= */

/* ------------------------------------------- 0. Шапка до инициализации UIkit
   Правило, прячущее выпадающие панели меню до запуска UIkit (из-за них страница
   распиралась до 2168 px), переехало в app.css, раздел «K. v4 → Шапка»: ошибка
   была общей для всего сайта, а не только для ленты новостей. */

/* --------------------------------------------------------------- 1. Общее */
.pm-ct .pm-lead { max-width: 760px; }
.pm-ct-crumbs b { overflow-wrap: anywhere; }

/* Чипы-фильтры: влияние новости, рубрика блога */
.pm-filterbar,
.pm-rubricnav { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 12px; }
.pm-rubricnav { margin-bottom: 26px; }
.pm-filterbar__label { font-size: var(--pm-fs-sm); color: var(--pm-text-3); margin-right: 2px; }
.pm-filterbar__state { font-size: var(--pm-fs-sm); color: var(--pm-text-2); margin: 4px 0 0; }
.pm-filterchip {
  display: inline-flex; align-items: center; gap: 7px;
  min-height: 36px; padding: 0 14px;
  font-size: var(--pm-fs-sm); font-weight: 600; line-height: 1.2; white-space: nowrap;
  color: var(--pm-text-2); background: var(--pm-surface);
  border: 1px solid var(--pm-border); border-radius: var(--pm-r-full);
}
.pm-filterchip:hover { color: var(--pm-text); border-color: var(--pm-border-strong); }
.pm-filterchip.pm-is-active { background: var(--pm-accent); border-color: var(--pm-accent); color: var(--pm-text-on-accent); }
.pm-filterchip__n { font-size: var(--pm-fs-xs); font-weight: 500; color: var(--pm-text-3); }
.pm-filterchip.pm-is-active .pm-filterchip__n { color: inherit; opacity: .8; }
.pm-filterchip.pm-is-active .pm-newscard__dot { box-shadow: 0 0 0 2px var(--pm-surface); }

/* Чип темы (тега) */
.pm-tagchip {
  display: inline-flex; align-items: center;
  min-height: 28px; padding: 0 10px;
  font-size: var(--pm-fs-xs); font-weight: 600; line-height: 1.2;
  color: var(--pm-text-2); background: var(--pm-chip-bg);
  border: 1px solid var(--pm-chip-line); border-radius: var(--pm-r-full);
}
a.pm-tagchip:hover { color: var(--pm-accent-text); border-color: var(--pm-accent-line); }
.pm-tagchip.pm-is-active { color: var(--pm-accent-text); background: var(--pm-accent-soft); border-color: var(--pm-accent-line); }

/* Пейджер: текущая страница и пропуск — не ссылки */
.pm-ct-pager { margin-top: 28px; }
.pm-ct-pager a { display: inline-flex; align-items: center; justify-content: center; min-height: 36px; }
.pm-ct-pager__current {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 36px; min-height: 36px; padding: 0 13px;
  font-size: var(--pm-fs-sm); font-weight: 700;
  color: var(--pm-text-on-accent); background: var(--pm-accent);
  border: 1px solid var(--pm-accent); border-radius: var(--pm-r-sm);
}
.pm-ct-pager__gap { min-width: 20px; text-align: center; color: var(--pm-text-3); }

/* Сноска под списком: RSS, оговорки */
.pm-ct-note {
  margin: 28px 0 0; max-width: 860px;
  font-size: var(--pm-fs-sm); line-height: 1.6; color: var(--pm-text-3);
  overflow-wrap: anywhere;
}
.pm-ct-note [uk-icon] { vertical-align: -2px; margin-right: 4px; }

/* Блок «инструменты по теме» */
.pm-toolbox {
  margin-top: 32px; padding: 18px 20px 20px;
  background: var(--pm-surface-2); border: 1px solid var(--pm-border); border-radius: var(--pm-r-lg);
}
.pm-toolbox__title { font: 700 var(--pm-fs-md)/1.3 var(--pm-font-display); color: var(--pm-text); margin-bottom: 12px; }
.pm-toolbox__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px; }
.pm-toolbox__grid:has(> :nth-child(4):last-child) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.pm-toolbox__item {
  display: flex; align-items: flex-start; gap: 12px; min-width: 0;
  padding: 12px 14px; color: var(--pm-text);
  background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-r-md);
  transition: border-color .12s ease;
}
.pm-toolbox__item:hover { color: var(--pm-text); border-color: var(--pm-accent-line); }
.pm-toolbox__item:hover .pm-toolbox__label { color: var(--pm-accent-text); }
.pm-toolbox__icon {
  flex: 0 0 36px; width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  color: var(--pm-accent-text); background: var(--pm-accent-soft); border-radius: var(--pm-r-md);
}
.pm-toolbox__body { min-width: 0; }
.pm-toolbox__label { display: block; font-size: var(--pm-fs-base); font-weight: 600; line-height: 1.3; }
.pm-toolbox__text { display: block; margin-top: 2px; font-size: var(--pm-fs-sm); line-height: 1.4; color: var(--pm-text-3); }

/* ------------------------------------------------------- 2. Лента новостей */
.pm-newsfeed { display: grid; gap: 30px; margin-top: 22px; }
.pm-newsday { min-width: 0; }
.pm-newsday__title {
  display: flex; align-items: baseline; gap: 10px;
  margin: 0 0 12px; padding-bottom: 8px;
  font-size: var(--pm-fs-lg); border-bottom: 1px solid var(--pm-border);
}
.pm-newsday__title span { font: 500 var(--pm-fs-sm)/1.3 var(--pm-font); letter-spacing: 0; color: var(--pm-text-3); }
.pm-newsday__list { display: grid; gap: 10px; }

.pm-newscard {
  min-width: 0; padding: 16px 18px;
  background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-r-lg);
}
.pm-newscard__meta,
.pm-newspage__meta {
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px;
  margin-bottom: 8px; font-size: var(--pm-fs-xs); color: var(--pm-text-3);
}
.pm-newscard__impact { display: inline-flex; align-items: center; gap: 6px; font-weight: 600; color: var(--pm-text-2); }
/* Сила влияния — отметка состояния: красный и жёлтый здесь значат ровно это. Рядом
   всегда стоит подпись словами, цвет — не единственный носитель смысла. */
.pm-newscard__dot { display: inline-block; flex: 0 0 8px; width: 8px; height: 8px; border-radius: 50%; background: var(--pm-border-strong); }
.pm-newscard__dot--high { background: var(--pm-neg); }
.pm-newscard__dot--medium { background: var(--pm-warn); }
.pm-newscard__dot--low { background: var(--pm-border-strong); }
.pm-newscard__source { overflow-wrap: anywhere; }
.pm-newscard__title { margin: 0 0 6px; font-size: var(--pm-fs-lg); font-weight: 700; line-height: 1.35; overflow-wrap: anywhere; }
.pm-newscard__title a { color: var(--pm-text); }
.pm-newscard__title a:hover { color: var(--pm-accent-text); }
.pm-newscard__text {
  margin: 0; font-size: var(--pm-fs-md); line-height: 1.6; color: var(--pm-text-2); overflow-wrap: anywhere;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}
.pm-newscard__tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }

/* ----------------------------------------------------- 3. Страница новости */
.pm-newspage__meta { margin-bottom: 10px; font-size: var(--pm-fs-sm); }
.pm-newspage__title { margin: 0 0 22px; overflow-wrap: anywhere; }
.pm-newspage__h { margin: 0 0 10px; font-size: var(--pm-fs-xl); }
.pm-newspage__block { margin-bottom: 22px; }
.pm-newspage__block p,
.pm-means p { margin: 0; font-size: var(--pm-fs-lg); line-height: 1.7; overflow-wrap: anywhere; }
.pm-newspage__block p { color: var(--pm-text-2); }
.pm-newspage__tags { margin-top: 16px; }
.pm-newspage__related { margin-top: 40px; }
.pm-newspage__back { margin-top: 28px; }

/* «Что это значит для P2P» — наш разбор, поэтому выделен: читатель должен видеть,
   где пересказ источника, а где трактовка сервиса. */
.pm-means {
  margin-bottom: 16px; padding: 18px 20px;
  background: var(--pm-accent-soft); border: 1px solid var(--pm-accent-line); border-radius: var(--pm-r-lg);
}
.pm-means__title { display: flex; align-items: center; gap: 8px; margin: 0 0 8px; font-size: var(--pm-fs-lg); }
.pm-means__title [uk-icon] { color: var(--pm-accent-text); }
.pm-means p { color: var(--pm-text); }

/* Строка источника */
.pm-source {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 14px 16px; font-size: var(--pm-fs-base); line-height: 1.55; color: var(--pm-text-2);
  background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-r-md);
  overflow-wrap: anywhere;
}
.pm-source b { color: var(--pm-text); font-weight: 600; }
.pm-source__icon { flex: 0 0 auto; margin-top: 2px; color: var(--pm-text-3); }
.pm-source__note { margin-top: 6px; font-size: var(--pm-fs-xs); line-height: 1.5; color: var(--pm-text-3); }

/* ----------------------------------------------------------------- 4. Блог */
.pm-bloggrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }

.pm-postcard {
  display: flex; flex-direction: column; min-width: 0; overflow: hidden;
  color: var(--pm-text); background: var(--pm-surface);
  border: 1px solid var(--pm-border); border-radius: var(--pm-r-lg);
  transition: border-color .15s ease, box-shadow .15s ease;
}
.pm-postcard:hover { color: var(--pm-text); border-color: var(--pm-accent-line); box-shadow: var(--pm-sh-2); }
.pm-postcard:hover .pm-postcard__title { color: var(--pm-accent-text); }
.pm-postcard__cover { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; background: var(--pm-surface-2); }
.pm-postcard__body { display: flex; flex-direction: column; flex: 1 1 auto; gap: 8px; min-width: 0; padding: 18px 20px 20px; }
.pm-postcard__rubric {
  align-self: flex-start;
  font-size: var(--pm-fs-xs); font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
  color: var(--pm-accent-text);
}
.pm-postcard__title { margin: 0; font-size: var(--pm-fs-lg); line-height: 1.3; overflow-wrap: anywhere; transition: color .12s ease; }
.pm-postcard__text {
  margin: 0; font-size: var(--pm-fs-base); line-height: 1.55; color: var(--pm-text-2); overflow-wrap: anywhere;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}
.pm-postcard__meta { margin-top: auto; padding-top: 6px; font-size: var(--pm-fs-xs); color: var(--pm-text-3); }

/* Свежая статья — крупно, на первой странице списка */
.pm-featured {
  display: grid; grid-template-columns: minmax(0, 1fr); overflow: hidden; margin-bottom: 20px;
  color: var(--pm-text); background: var(--pm-surface);
  border: 1px solid var(--pm-border); border-radius: var(--pm-r-xl); box-shadow: var(--pm-sh-1);
  transition: border-color .15s ease, box-shadow .15s ease;
}
.pm-featured--cover { grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); }
.pm-featured:hover { color: var(--pm-text); border-color: var(--pm-accent-line); box-shadow: var(--pm-sh-2); }
.pm-featured:hover .pm-featured__title { color: var(--pm-accent-text); }
.pm-featured__cover { display: block; width: 100%; height: 100%; min-height: 220px; object-fit: cover; background: var(--pm-surface-2); }
.pm-featured__body { display: flex; flex-direction: column; gap: 12px; min-width: 0; padding: 28px 32px; }
.pm-featured__kicker { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.pm-featured__kicker .pm-eyebrow { margin: 0; }
.pm-featured__title { margin: 0; font-size: var(--pm-fs-2xl); line-height: 1.2; overflow-wrap: anywhere; transition: color .12s ease; }
.pm-featured__text { margin: 0; max-width: 820px; font-size: var(--pm-fs-lg); line-height: 1.6; color: var(--pm-text-2); overflow-wrap: anywhere; }

/* ------------------------------------------------------ 5. Страница статьи
   Одна сетка: текст в первой колонке, оглавление — во второй и «липнет» при
   прокрутке. Оглавление в разметке одно; на узком экране оно остаётся в потоке
   над текстом. */
.pm-article__main { display: grid; grid-template-columns: minmax(0, 760px) 280px; column-gap: 56px; justify-content: space-between; align-items: start; }
.pm-article__main > * { grid-column: 1; min-width: 0; }
.pm-article--plain .pm-article__main { grid-template-columns: minmax(0, 760px); justify-content: start; }

.pm-article__title { margin: 0 0 14px; overflow-wrap: anywhere; }
.pm-article__meta { display: flex; flex-wrap: wrap; gap: 6px 18px; margin-bottom: 26px; font-size: var(--pm-fs-sm); color: var(--pm-text-3); }
.pm-article__meta > span { display: inline-flex; align-items: center; gap: 6px; }

.pm-tocbox {
  grid-column: 2; grid-row: 1 / span 40;
  position: sticky; top: 124px; max-height: calc(100vh - 148px); overflow: auto;
  padding: 16px 14px 14px;
  background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-r-lg);
}
.pm-tocbox__title {
  display: flex; align-items: center; gap: 8px; padding: 0 6px; cursor: pointer; list-style: none;
  font: 700 var(--pm-fs-xs)/1.3 var(--pm-font); letter-spacing: .06em; text-transform: uppercase; color: var(--pm-text-3);
}
.pm-tocbox__title::-webkit-details-marker { display: none; }
.pm-tocbox__list { display: grid; gap: 2px; margin: 12px 0 0; padding: 0; list-style: none; }
.pm-tocbox__item a {
  display: block; padding: 6px 10px;
  font-size: var(--pm-fs-sm); line-height: 1.4; color: var(--pm-text-2);
  border-radius: var(--pm-r-sm); overflow-wrap: anywhere;
}
.pm-tocbox__item a:hover { color: var(--pm-text); background: var(--pm-surface-2); }
.pm-tocbox__item a.pm-is-active { font-weight: 600; color: var(--pm-accent-text); background: var(--pm-accent-soft); }
.pm-tocbox__item--3 a { padding-left: 22px; font-size: var(--pm-fs-xs); }

/* Текст статьи крупнее обычного «документного» .pm-prose: это чтение, а не справка */
.pm-article__body { max-width: none; font-size: var(--pm-fs-lg); line-height: 1.7; overflow-wrap: anywhere; }
.pm-article__body > :first-child { margin-top: 0; }
.pm-article__body h2 { margin: 40px 0 14px; font-size: var(--pm-fs-2xl); line-height: 1.25; scroll-margin-top: 124px; }
.pm-article__body h3 { margin: 28px 0 10px; font-size: var(--pm-fs-xl); line-height: 1.3; scroll-margin-top: 124px; }
.pm-article__body p { margin: 0 0 16px; }
.pm-article__body li { margin-bottom: 8px; }
.pm-article__body strong, .pm-article__body b { color: var(--pm-text); }

/* Таблица из статьи: своя горизонтальная прокрутка, страница вбок не едет */
.pm-prose__table { margin: 0 0 20px; border: 1px solid var(--pm-border); border-radius: var(--pm-r-md); }
.pm-prose .pm-prose__table > table { display: table; width: 100%; min-width: 440px; margin: 0; font-size: var(--pm-fs-base); border-collapse: collapse; }
.pm-prose .pm-prose__table th, .pm-prose .pm-prose__table td { border-width: 0 0 1px; border-style: solid; border-color: var(--pm-border); }
.pm-prose .pm-prose__table tr:last-child > td { border-bottom: 0; }
/* В ячейках слово целиком: «anywhere» у текста статьи разрешал браузеру сжать колонку
   до одной буквы. Не помещается — у таблицы своя горизонтальная прокрутка. */
.pm-prose .pm-prose__table th, .pm-prose .pm-prose__table td { overflow-wrap: break-word; word-break: normal; hyphens: none; }

.pm-article__cta { margin-top: 36px; }
.pm-article__related { margin-top: 44px; }

/* ------------------------------------------------------------ 6. Аналитика */
.pm-an__head { max-width: 900px; margin-bottom: 24px; }
.pm-an__kicker { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin-bottom: 12px; }
.pm-an__kicker .pm-eyebrow { margin: 0; }
.pm-an__period { display: inline-flex; align-items: center; gap: 6px; font-size: var(--pm-fs-sm); color: var(--pm-text-3); }
.pm-an__title { margin: 0 0 14px; overflow-wrap: anywhere; }
.pm-an__lead { margin: 0; font-size: var(--pm-fs-lg); line-height: 1.65; color: var(--pm-text-2); overflow-wrap: anywhere; }
.pm-an__section { margin-top: 44px; min-width: 0; }
.pm-an__h { margin: 0 0 14px; font-size: var(--pm-fs-xl); }
.pm-an__row { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 16px; }
.pm-an__prose { max-width: 860px; font-size: var(--pm-fs-lg); line-height: 1.7; overflow-wrap: anywhere; }
.pm-an__section > .pm-link-arrow { margin-top: 14px; }

.pm-an-card {
  min-width: 0; padding: 20px 22px;
  background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-r-lg); box-shadow: var(--pm-sh-1);
}
.pm-an-card + .pm-an-card { margin-top: 14px; }

/* Плитки показателей. Числа — моноширинные (.pm-nums), значение крупно, остальное тихо. */
.pm-an-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(168px, 1fr)); gap: 12px; }
.pm-an-tiles--compact { margin-bottom: 20px; }
.pm-an-tile { min-width: 0; padding: 14px 16px; background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-r-lg); }
.pm-an-card .pm-an-tile { background: var(--pm-surface-2); border-color: transparent; }
.pm-an-tile__label { margin-bottom: 6px; font-size: var(--pm-fs-xs); line-height: 1.35; color: var(--pm-text-3); }
.pm-an-tile__value { font-size: var(--pm-fs-xl); font-weight: 700; line-height: 1.2; color: var(--pm-text); overflow-wrap: anywhere; }
/* Изменение курса — не «хорошо» и не «плохо», поэтому без зелёного и красного. */
.pm-an-tile__delta { margin-top: 4px; font-size: var(--pm-fs-sm); font-weight: 600; color: var(--pm-text-2); }
.pm-an-tile__hint { margin-top: 4px; font-size: var(--pm-fs-xs); line-height: 1.4; color: var(--pm-text-3); }

/* --- График: общая рамка --- */
.pm-an-chart { margin: 0; min-width: 0; }
.pm-an-chart__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 16px; margin-bottom: 16px; }
.pm-an-chart__title { font-size: var(--pm-fs-md); font-weight: 600; color: var(--pm-text); }
.pm-an-chart__note { max-width: 860px; margin: 12px 0 0; font-size: var(--pm-fs-xs); line-height: 1.55; color: var(--pm-text-3); }

/* Легенда: ключ повторяет форму знака (штрих у линии, точка у точки, квадрат у полосы).
   Подписи — цветом текста, не цветом серии: светлый тон на белом нечитаем как текст. */
.pm-an-legend { display: inline-flex; flex-wrap: wrap; gap: 4px 16px; font-size: var(--pm-fs-sm); color: var(--pm-text-2); }
.pm-an-legend--block { display: flex; margin-bottom: 12px; }
.pm-an-legend__item { display: inline-flex; align-items: center; gap: 7px; }
.pm-an-key { display: inline-block; flex: 0 0 16px; width: 16px; height: 0; border-top: 2px solid var(--pm-text-3); }
.pm-an-key--ask { border-top-color: var(--pm-accent); }
.pm-an-key--bid { border-top-color: var(--pm-text-3); }
.pm-an-key--dot-ask, .pm-an-key--dot-bid { flex-basis: 10px; width: 10px; height: 10px; border: 0; border-radius: 50%; }
.pm-an-key--dot-ask { background: var(--pm-accent); }
.pm-an-key--dot-bid { background: var(--pm-text-3); }
.pm-an-key--ref { flex-basis: 2px; width: 0; height: 14px; border-top: 0; border-left: 2px solid var(--pm-border-strong); }
.pm-an-key--working, .pm-an-key--middle, .pm-an-key--traps { flex-basis: 12px; width: 12px; height: 12px; border: 0; border-radius: 3px; }
.pm-an-key--working { background: var(--pm-pos); }
.pm-an-key--middle { background: var(--pm-border-strong); }
.pm-an-key--traps { background: var(--pm-neg); }

/* --- Линейный график ---
   Две серии: главная (покупка) — цветом бренда, вторая (продажа) — нейтральным серым.
   Зелёный и красный здесь не используются: в этой системе они значат «прибыль» и
   «ловушка», а не «продажа» и «покупка». Различие серий держится не только на цвете:
   есть легенда, подписи у концов линий и таблица с теми же числами. */
.pm-an-plot { position: relative; display: grid; grid-template-columns: 46px minmax(0, 1fr); column-gap: 10px; height: 240px; border-radius: var(--pm-r-sm); }
.pm-an-plot__y { position: relative; font: 500 var(--pm-fs-xs)/1 var(--pm-font-mono); color: var(--pm-text-3); }
.pm-an-plot__y span { position: absolute; right: 0; white-space: nowrap; transform: translateY(-50%); }
.pm-an-plot__area { position: relative; margin-right: 76px; touch-action: pan-y; }
.pm-an-plot__area svg { position: absolute; inset: 0; display: block; width: 100%; height: 100%; overflow: visible; }
.pm-an-gridline { stroke: var(--pm-border); stroke-width: 1; vector-effect: non-scaling-stroke; shape-rendering: crispEdges; }
.pm-an-line { fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.pm-an-line--ask { stroke: var(--pm-accent); }
.pm-an-line--bid { stroke: var(--pm-text-3); }
/* Маркер конца линии: кольцо цвета поверхности отделяет его от самой линии */
.pm-an-dot { position: absolute; width: 10px; height: 10px; margin: -5px 0 0 -5px; border-radius: 50%; box-shadow: 0 0 0 2px var(--pm-surface); pointer-events: none; }
.pm-an-dot--ask { background: var(--pm-accent); }
.pm-an-dot--bid { background: var(--pm-text-3); }
.pm-an-endlabel { position: absolute; left: 100%; margin-left: 10px; font-size: var(--pm-fs-xs); font-weight: 600; color: var(--pm-text); white-space: nowrap; transform: translateY(-50%); pointer-events: none; }
.pm-an-plot__x { position: relative; height: 22px; margin: 8px 76px 0 56px; font: 500 var(--pm-fs-xs)/1 var(--pm-font-mono); color: var(--pm-text-3); }
.pm-an-plot__xl { position: absolute; top: 0; white-space: nowrap; transform: translateX(-50%); }
.pm-an-plot__xl--start { transform: none; }
.pm-an-plot__xl--end { transform: translateX(-100%); }

/* Перекрестие и подсказка при наведении (включает content.js; без него график статичен) */
.pm-an-cross { position: absolute; top: 0; bottom: 0; width: 1px; background: var(--pm-border-strong); pointer-events: none; }
.pm-an-tip {
  position: absolute; top: 6px; z-index: 2; min-width: 132px; padding: 9px 11px; pointer-events: none;
  font-size: var(--pm-fs-xs); line-height: 1.5; color: var(--pm-text-2);
  background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-r-md); box-shadow: var(--pm-sh-2);
}
.pm-an-tip__label { margin-bottom: 4px; font-weight: 600; color: var(--pm-text-3); }
.pm-an-tip__row { display: flex; align-items: center; gap: 7px; white-space: nowrap; }
.pm-an-tip__row b { font-family: var(--pm-font-mono); font-weight: 600; color: var(--pm-text); }
.pm-an-plot:focus-visible { outline: 2px solid var(--pm-accent); outline-offset: 6px; }

/* Таблица-двойник графика */
.pm-an-data { margin-top: 14px; }
.pm-an-data > summary { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; list-style: none; font-size: var(--pm-fs-sm); font-weight: 600; color: var(--pm-accent-text); }
.pm-an-data > summary::-webkit-details-marker { display: none; }
.pm-an-data > summary::before { content: '+'; display: inline-block; width: 10px; text-align: center; }
.pm-an-data[open] > summary::before { content: '\2212'; }
.pm-an-data .pm-table-wrap { margin-top: 10px; max-height: 320px; overflow-y: auto; }

/* --- Таблицы аналитики --- */
.pm-an-table th { white-space: normal; }
.pm-an-table tbody th {
  font-size: var(--pm-fs-base); font-weight: 600; letter-spacing: 0; text-transform: none; white-space: normal;
  color: var(--pm-text); background: transparent; border-bottom: 1px solid var(--pm-border); padding: 13px 14px;
}
.pm-an-table.uk-table-small tbody th { padding: 9px 12px; }
.pm-an-table tbody tr:last-child th { border-bottom: 0; }
.pm-an-table tbody th .pm-chip { margin-left: 6px; }
.pm-an-table tbody th a { font-weight: 600; }

/* «Гантели» по площадкам: продажа и покупка на общей шкале, отметка курса ЦБ */
.pm-an-venues__scale { width: 36%; min-width: 190px; }
.pm-an-venues__axis { display: flex; justify-content: space-between; font: 500 var(--pm-fs-xs)/1 var(--pm-font-mono); letter-spacing: 0; text-transform: none; color: var(--pm-text-3); }
.pm-an-track { position: relative; height: 22px; }
.pm-an-track::before { content: ''; position: absolute; top: 50%; right: 0; left: 0; border-top: 1px solid var(--pm-border); }
.pm-an-track__ref { position: absolute; top: -8px; bottom: -8px; width: 0; margin-left: -1px; border-left: 2px solid var(--pm-border-strong); }
.pm-an-track__bar { position: absolute; top: 50%; height: 4px; margin-top: -2px; background: var(--pm-accent-line); border-radius: var(--pm-r-full); }
.pm-an-track__dot { position: absolute; top: 50%; width: 12px; height: 12px; margin: -6px 0 0 -6px; border-radius: 50%; box-shadow: 0 0 0 2px var(--pm-surface); }
.pm-an-track__dot--ask { background: var(--pm-accent); }
.pm-an-track__dot--bid { background: var(--pm-text-3); }

/* Состав по типам связок: рабочие / средние / ловушки. Здесь зелёный и красный уместны —
   это и есть их значение в системе; середина нейтральная, между сегментами зазор. */
.pm-an-types__bar { width: 34%; min-width: 170px; }
.pm-an-stack { display: flex; gap: 2px; height: 14px; min-width: 8px; }
.pm-an-stack__seg { display: block; flex: 0 0 auto; height: 100%; min-width: 2px; }
.pm-an-stack__seg:last-child { border-radius: 0 var(--pm-sq-s) var(--pm-sq-s) 0; }
.pm-an-stack__seg--working { background: var(--pm-pos); }
.pm-an-stack__seg--middle { background: var(--pm-border-strong); }
.pm-an-stack__seg--traps { background: var(--pm-neg); }

/* Столбцы одной серии (рабочие маршруты по дням) */
.pm-an-cols { display: flex; align-items: flex-end; gap: 10px; height: 210px; margin-bottom: 30px; padding-top: 28px; border-bottom: 1px solid var(--pm-border); }
.pm-an-cols__col { position: relative; display: flex; flex: 1 1 0; align-items: flex-end; justify-content: center; min-width: 0; height: 100%; }
.pm-an-cols__bar { position: relative; width: 100%; max-width: 24px; min-height: 2px; background: var(--pm-accent); border-radius: var(--pm-sq-s) var(--pm-sq-s) 0 0; }
.pm-an-cols__bar--none { background: var(--pm-border); }
.pm-an-cols__val { position: absolute; bottom: 100%; left: 50%; margin-bottom: 6px; font-size: var(--pm-fs-xs); font-weight: 600; color: var(--pm-text); white-space: nowrap; transform: translateX(-50%); }
.pm-an-cols__label { position: absolute; top: 100%; left: 50%; margin-top: 9px; font: 500 var(--pm-fs-xs)/1 var(--pm-font-mono); color: var(--pm-text-3); white-space: nowrap; transform: translateX(-50%); }

/* Rapira: список «показатель — значение» */
.pm-an-dl { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 16px 18px; margin: 0; }
.pm-an-dl dt { margin-bottom: 4px; font-size: var(--pm-fs-xs); color: var(--pm-text-3); }
.pm-an-dl dd { margin: 0; font-size: var(--pm-fs-lg); font-weight: 700; color: var(--pm-text); }
.pm-an-dl__sub { font-size: var(--pm-fs-sm); font-weight: 600; color: var(--pm-text-2); }

/* Сигналы сканера и новости периода */
.pm-an-signals { display: grid; gap: 10px; }
.pm-an-signal { padding: 14px 16px; background: var(--pm-surface); border: 1px solid var(--pm-border); border-left: 3px solid var(--pm-border-strong); border-radius: var(--pm-r-md); }
.pm-an-signal--high { border-left-color: var(--pm-neg); }
.pm-an-signal--medium { border-left-color: var(--pm-warn); }
.pm-an-signal__title { margin-bottom: 4px; font-weight: 600; color: var(--pm-text); overflow-wrap: anywhere; }
.pm-an-signal p { margin: 0; font-size: var(--pm-fs-base); line-height: 1.6; color: var(--pm-text-2); overflow-wrap: anywhere; }
.pm-an-news { display: grid; gap: 9px; margin: 0 0 14px; padding: 0; list-style: none; }
.pm-an-news li { display: flex; align-items: baseline; gap: 10px; font-size: var(--pm-fs-md); line-height: 1.45; overflow-wrap: anywhere; }
.pm-an-news .pm-newscard__dot { position: relative; top: -1px; }

.pm-an-method p { max-width: 860px; font-size: var(--pm-fs-base); line-height: 1.65; color: var(--pm-text-2); }
.pm-an-method .pm-an-method__stamp { font-size: var(--pm-fs-xs); color: var(--pm-text-3); }

/* Соседние отчёты */
.pm-an-nav { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 36px; }
.pm-an-nav__link { display: block; min-width: 0; padding: 14px 16px; color: var(--pm-text); background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-r-md); }
.pm-an-nav__link:hover { color: var(--pm-text); border-color: var(--pm-accent-line); }
.pm-an-nav__link--next { text-align: right; }
.pm-an-nav__dir { display: inline-flex; align-items: center; gap: 6px; font-size: var(--pm-fs-xs); font-weight: 600; color: var(--pm-text-3); }
.pm-an-nav__title { display: block; margin-top: 4px; font-size: var(--pm-fs-sm); font-weight: 600; line-height: 1.4; overflow-wrap: anywhere; }

/* Главная раздела */
.pm-an-latest { margin-top: 8px; padding: 26px 28px; background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-r-xl); box-shadow: var(--pm-sh-1); }
.pm-an-latest__title { margin: 0 0 10px; font-size: var(--pm-fs-2xl); line-height: 1.2; overflow-wrap: anywhere; }
.pm-an-latest__title a { color: var(--pm-text); }
.pm-an-latest__title a:hover { color: var(--pm-accent-text); }
.pm-an-latest__lead { max-width: 900px; margin: 0 0 18px; font-size: var(--pm-fs-lg); line-height: 1.6; color: var(--pm-text-2); overflow-wrap: anywhere; }
.pm-an-latest .pm-an-tiles { margin-bottom: 18px; }
.pm-an-latest .pm-an-tile { background: var(--pm-surface-2); border-color: transparent; }

/* Карточки делят ширину поровну; единственная карточка не растягивается на весь экран. */
.pm-an-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 14px; }
.pm-an-cards > :only-child { max-width: 420px; }
.pm-an-rcard { display: flex; flex-direction: column; gap: 10px; min-width: 0; padding: 18px 20px; color: var(--pm-text); background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-r-lg); transition: border-color .15s ease, box-shadow .15s ease; }
.pm-an-rcard:hover { color: var(--pm-text); border-color: var(--pm-accent-line); box-shadow: var(--pm-sh-2); }
.pm-an-rcard__title { margin: 0; font-size: var(--pm-fs-lg); line-height: 1.3; overflow-wrap: anywhere; }
.pm-an-rcard__facts { display: flex; flex-wrap: wrap; gap: 8px 18px; }
.pm-an-rcard__facts > div { display: flex; flex-direction: column; gap: 2px; }
.pm-an-rcard__facts b { font-size: var(--pm-fs-md); color: var(--pm-text); }
.pm-an-rcard__text { margin: 0; font-size: var(--pm-fs-sm); line-height: 1.55; color: var(--pm-text-2); overflow-wrap: anywhere; }

.pm-an-list { display: grid; gap: 8px; }
.pm-an-rowlink { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 18px; padding: 12px 16px; color: var(--pm-text); background: var(--pm-surface); border: 1px solid var(--pm-border); border-radius: var(--pm-r-md); }
.pm-an-rowlink:hover { color: var(--pm-text); border-color: var(--pm-accent-line); }
.pm-an-rowlink__date { flex: 0 0 96px; }
.pm-an-rowlink__facts { display: flex; flex: 1 1 240px; flex-wrap: wrap; gap: 4px 18px; font-size: var(--pm-fs-sm); }
.pm-an-rowlink__k { font-size: var(--pm-fs-xs); color: var(--pm-text-3); }
.pm-an-rowlink__go { margin-left: auto; color: var(--pm-text-3); }

/* ---------------------------------------------------------------- 7. Адаптив */
@media (max-width: 1100px) {
  .pm-bloggrid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pm-article__main { grid-template-columns: minmax(0, 1fr); }
  .pm-article__main > * { max-width: 760px; }
  .pm-tocbox { grid-column: 1; grid-row: auto; position: static; max-height: none; margin-bottom: 24px; overflow: visible; }
  /* Над текстом оглавление сворачивается — нужен знак, что его можно раскрыть. */
  .pm-tocbox__title::after {
    content: ''; width: 7px; height: 7px; margin-left: auto;
    border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
    transform: translateY(-2px) rotate(45deg);
  }
  .pm-tocbox[open] > .pm-tocbox__title::after { transform: translateY(2px) rotate(-135deg); }
  .pm-featured--cover { grid-template-columns: minmax(0, 1fr); }
  .pm-featured__cover { height: auto; aspect-ratio: 16 / 9; min-height: 0; }
}

@media (max-width: 640px) {
  /* Рубрик и тем много: на телефоне — одна прокручиваемая строка, а не пять рядов чипов.
     Строка выходит за поля контейнера (у сайта они 24 px), чипы уезжают под край экрана. */
  .pm-rubricnav,
  .pm-filterbar--tags {
    flex-wrap: nowrap; margin-right: -24px; margin-left: -24px; padding: 0 24px 4px;
    overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch;
  }
  .pm-rubricnav { margin-bottom: 22px; }
  .pm-rubricnav::-webkit-scrollbar,
  .pm-filterbar--tags::-webkit-scrollbar { display: none; }
  .pm-rubricnav > *,
  .pm-filterbar--tags > * { flex: 0 0 auto; }

  /* Последняя крошка на странице статьи и новости — её же заголовок: он стоит строкой ниже. */
  .pm-ct-crumbs--title b,
  .pm-ct-crumbs--title span:last-of-type { display: none; }

  .pm-bloggrid { grid-template-columns: minmax(0, 1fr); }
  .pm-featured__body { padding: 20px 18px; }
  .pm-featured__title { font-size: var(--pm-fs-xl); }
  .pm-featured__text { font-size: var(--pm-fs-md); }

  .pm-newscard { padding: 14px 14px; }
  .pm-newscard__title { font-size: var(--pm-fs-md); }
  .pm-newscard__text { font-size: var(--pm-fs-base); }
  .pm-means { padding: 16px 16px; }
  .pm-toolbox { padding: 16px 14px; }
  .pm-toolbox__grid,
  .pm-toolbox__grid:has(> :nth-child(4):last-child) { grid-template-columns: minmax(0, 1fr); }

  .pm-article__body h2 { margin-top: 32px; font-size: var(--pm-fs-xl); }
  .pm-article__body h3 { font-size: var(--pm-fs-lg); }

  .pm-an-card { padding: 16px 14px; }
  .pm-an-latest { padding: 20px 16px; }
  .pm-an-latest__title { font-size: var(--pm-fs-xl); }
  .pm-an-latest__lead, .pm-an__lead { font-size: var(--pm-fs-md); }
  .pm-an-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .pm-an-tile { padding: 12px 12px; }
  .pm-an-tile__value { font-size: var(--pm-fs-lg); }
  .pm-an__section { margin-top: 36px; }

  .pm-an-plot { grid-template-columns: 40px minmax(0, 1fr); column-gap: 8px; height: 200px; }
  .pm-an-plot__area { margin-right: 66px; }
  .pm-an-plot__x { margin: 8px 66px 0 48px; }
  /* Пять подписей оси в 200 px слипаются: остаются края и середина
     (какие подписи второстепенные, решает ChartBuilder). */
  .pm-an-plot__xl--minor { display: none; }

  /* Таблицы на телефоне: остаются главные числа, шкала и второстепенные колонки скрыты,
     поля ячеек уже — три колонки должны помещаться без прокрутки вбок. */
  .pm-an-table__opt, .pm-an-venues__scale, .pm-an-venues__opt, .pm-an-types__bar, .pm-an-types__opt { display: none; }
  .pm-an-table { font-size: var(--pm-fs-sm); }
  .pm-an-table th, .pm-an-table td, .pm-an-table tbody th, .pm-an-table.uk-table-small tbody th { padding-right: 6px; padding-left: 6px; }
  .pm-an-table thead th { letter-spacing: 0; }
  .pm-an-table tbody th { font-size: var(--pm-fs-sm); }
  .pm-an-table tbody th .pm-chip { display: inline-flex; margin: 4px 0 0; line-height: 1.25; white-space: normal; }
  /* Широкая таблица недели прокручивается вбок; первый столбец (день) остаётся на месте. */
  .pm-an-table--wide th:first-child, .pm-an-table--wide td:first-child { position: sticky; left: 0; z-index: 1; box-shadow: 1px 0 0 var(--pm-border); }
  .pm-an-table--wide td:first-child { background: var(--pm-surface); }

  .pm-an-cols { gap: 6px; height: 180px; }
  .pm-an-cols__m { display: none; }
  .pm-an-nav { grid-template-columns: minmax(0, 1fr); }
  .pm-an-nav__link--next { text-align: left; }
  .pm-an-rowlink__date { flex-basis: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  .pm-postcard, .pm-featured, .pm-an-rcard, .pm-toolbox__item { transition: none; }
}
