body { background: #fff; color: #212529; }
.ps-title { font-size: 2rem; font-weight: 400; }
.ps-head { font-size: 1.4rem; }
.ps-table { font-size: .9rem; }
/* шапка страницы и заголовок таблицы не прокручиваются; --top-h — высота шапки (ставит app.js) */
.ps-top { position: sticky; top: var(--nav-h, 0px); z-index: 3; background: #fff; }
.ps-head-box { padding: 10px 50px 20px; }   /* шапка до строки «Данные биржи» */
.ps-wrap { overflow: visible; }
.ps-table th { white-space: nowrap; position: sticky; top: calc(var(--nav-h, 0px) + var(--top-h, 0px)); background: #fff; z-index: 2;
  box-shadow: inset 0 -1px 0 #dee2e6; }
.ps-table th a { text-decoration: none; cursor: pointer; }
.ps-table th.nosort { color: #212529; }
.ps-table td { vertical-align: top; padding-top: .7rem; padding-bottom: .7rem; }
.ps-table td.num { white-space: nowrap; }
.star { cursor: pointer; font-size: 1.1rem; line-height: 1; user-select: none; }
.star.on { color: #28a745; }
.star.off { color: #0d6efd; }
.tick a { text-decoration: none; }
.vol-low { color: #dc3545; }
.c-tp { color: #198754; }
.c-sl { color: #dc3545; }
.slstats { min-width: 21rem; }
.slstats .wd { color: #0d6efd; }
/* фон строки по результату выбранного дня */
.ps-table tr.r-tp > td, .coin-table tr.r-tp > td { --bs-table-accent-bg: transparent; background-color: #d4f7e0; }
.ps-table tr.r-sl > td, .coin-table tr.r-sl > td { --bs-table-accent-bg: transparent; background-color: #fbdada; }
/* SL Stats по числу стопов в подсвеченный день недели */
.ps-table td.sl0 { background-color: #a8dca8 !important; }
.ps-table td.sl1 { background-color: #d3efcf !important; }
.ps-table td.sl2 { background-color: #efedc8 !important; }
.ps-table td.sl3 { background-color: #fdd9d9 !important; }
.ps-table td.sl4 { background-color: #d99595 !important; }
.ps-table td.sl6 { background-color: #b85555 !important; color: #fff; }
.ps-table td.sl6 .wd { color: #cfe2ff; }
/* L-Change < 0 (против позиции — вход сейчас лучше): <1%, 1–2%, 2–5%, ≥5% — от светлого к тёмному */
.ps-table td.g1 { background-color: #dcfcdc !important; }
.ps-table td.g2 { background-color: #9bdf9b !important; }
.ps-table td.g3 { background-color: #33cc33 !important; }
.ps-table td.g4 { background-color: #009900 !important; }

/* страница деталей монеты */
.coin-top { position: sticky; top: var(--nav-h, 0px); z-index: 5; background: #fff; border-bottom: 1px solid #dee2e6; }
.coin-page { padding-left: 50px; padding-right: 50px; }
.coin-h { font-size: 1.6rem; font-weight: 400; }
.coin-table { font-size: .9rem; }
.coin-table th, .coin-table td { padding: .6rem .7rem; }
.coin-table th a { text-decoration: none; cursor: pointer; white-space: nowrap; }
.coin-chart { height: 440px; border: 1px solid #dee2e6; }
.tick .bb { font-size: .75rem; margin-left: .25rem; color: #6c757d; }
/* Drawperc: 1 / 3 / 5 / 10 % */
.coin-table td.dp1 { background-color: #d3edd3 !important; }
.coin-table td.dp2 { background-color: #a9dba5 !important; }
.coin-table td.dp3 { background-color: #88cb88 !important; }
.coin-table td.dp4 { background-color: #669966 !important; }
.coin-results tbody tr { cursor: pointer; }
.coin-results tbody tr.picked > td { box-shadow: inset 0 2px 0 #0d6efd, inset 0 -2px 0 #0d6efd; }
.coin-side { min-width: 0; position: sticky; align-self: flex-start; }
.coin-side:empty { display: none; }
/* страница сигналов: DZone+Pinbar — сильный сигнал */
.coin-table tr.sig-strong > td { font-weight: 600; }

/* навигатор (nav.js): всегда сверху; --nav-h — его высота, на неё сдвинуты sticky-шапки страниц */
.ps-nav { z-index: 1030; }
.ps-nav .navbar-brand { font-size: 1.05rem; }
/* колокольчик: свой цвет (у .nav-link вне .navbar-nav цвет не задан — иконка была чёрной на чёрном) */
.ps-nav .ps-bell { color: rgba(255, 255, 255, .7); border: 0; line-height: 1; }
.ps-nav .ps-bell:hover, .ps-nav .ps-bell:focus { color: #fff; }
.ps-nav .ps-bell.on { color: #ffc107; }
.ps-bell-menu { position: absolute; right: 0; top: calc(100% + 6px); z-index: 1040; width: 300px; padding: 12px 14px;
  background: #fff; color: #212529; border: 1px solid #dee2e6; border-radius: .375rem; }
/* статус сервисов: точка у ссылки «Статус», красная полоса под навигатором (health.py) */
.ps-nav { flex-wrap: wrap; padding-bottom: 0 !important; }
.ps-nav > .container-fluid { padding-bottom: .25rem; }
.ps-nav #psLogout .nav-link { color: rgba(255, 255, 255, .55); }
.ps-nav #psLogout .nav-link:hover { color: #fff; }
.ps-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 6px; vertical-align: 1px; background: #6c757d; }
.ps-dot.up { background: #20c997; }
.ps-dot.down { background: #dc3545; }
.ps-down { flex-basis: 100%; display: block; padding: 4px 12px; background: #dc3545; color: #fff; font-size: .85rem;
  text-decoration: none; }
.ps-down:hover { color: #fff; background: #bb2d3b; }
.ps-down.d-none { display: none !important; }

/* страница /status */
.st-table td, .st-table th { vertical-align: middle; font-size: .875rem; }
.st-pct { font-weight: 600; white-space: nowrap; }
.st-bar { display: flex; height: 16px; width: 240px; gap: 1px; margin-top: 2px; }
.st-bar > i { flex: 1; background: #e9ecef; border-radius: 1px; }
.st-bar > i.ok { background: #20c997; }
.st-bar > i.part { background: #ffc107; }
.st-bar > i.bad { background: #dc3545; }
.st-state { white-space: nowrap; font-weight: 600; }
.st-state.up { color: #198754; }
.st-state.down { color: #dc3545; }
.st-state.warn { color: #b58105; }
