/* Общая тёмная палитра панели и входа. Геометрия карточек Trading Robots сохранена. */
/* Сворачиваемые блоки push и читаемый JSON для диагностики Android. */
#push-page summary{cursor:pointer;font-weight:600;justify-content:flex-start}
#push-page summary::before{content:'▸';margin-right:10px}
#push-page details[open]>summary::before{content:'▾'}
.push-recent-card{border-top:1px solid var(--line);padding:16px 0;overflow-wrap:anywhere}
.push-recent-card p{margin-top:8px;font-size:12px}
.push-recent-card pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#101922;padding:14px;border-radius:8px;font-size:12px}
/* Счётчики и независимые фильтры онлайн-соединений переносятся на узких экранах. */
.connection-controls{display:flex;flex-wrap:wrap;gap:14px;padding:0 22px 20px;align-items:end}
.connection-controls label{display:flex;flex-direction:column;gap:7px;font-size:12px;color:var(--muted)}
.connection-versions{display:flex;gap:10px;flex-wrap:wrap;width:100%}
.connection-versions .pill{font-size:13px;padding:10px 14px}
:root{color-scheme:dark;color:#edf3f8;background:#101922;--muted:#a0b2c2;--line:#334452;--green:#207b62;--dark:#edf3f8}
.signals-filters{justify-content:flex-start;flex-wrap:wrap}.signals-filters label{display:flex;align-items:center;gap:8px;font-size:12px}.signals-filters select{max-width:340px}.signals-filters input[type=checkbox]{width:auto}#signals-rows pre{max-width:440px;max-height:240px;overflow:auto}
/* Полноширинный блок перед таблицей Signals; метрики распределены по ширине. */
#signals-quotes{width:100%;margin-bottom:20px}
.signals-quotes-card .service-data{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:0 28px}
.signals-quotes-card .service-row{min-width:0}
.signals-quotes-card .service-row strong{overflow-wrap:anywhere}
.sidebar,.topbar{background:#131f29}
.metric,.service,.panel:not(.trading-card),.login-card{background:#17232d}
.topbar strong,.service-row strong{color:#dfebf4}
.brand-sub,.nav-caption,.nav-item,.text-button,.metric-label,.metric-foot,.eyebrow,.empty,.event time,.event-source,.login-note,.page-footer{color:#a0b2c2}
.metric-label span,.soon,.slash{color:#91a8b9}
.nav-item.active{background:#1a3d36;color:#9de4c8}
/* Счётчик меню показывает все Socket.io-соединения, не размер таблицы из 200 строк. */
.nav-count{margin-left:auto;min-width:25px;padding:3px 7px;border-radius:999px;background:#293b49;color:#dceaf4;text-align:center;font-size:11px;font-variant-numeric:tabular-nums}
.nav-item.active .nav-count{background:#296b58;color:#e7fff4}
.nav-item:not(:disabled):hover{background:#203440;color:#e5f1f9}
.avatar,.count,.pill.neutral{background:#293b49;color:#bfd0dd}
.pill.good{background:#193d32;color:#97e0b9}
.pill.bad{background:#4a302b;color:#ffbc9b}
.tiny-dot{background:#61c399}
.secondary{background:#213746;border-color:#4f6b7c;color:#e6f1f9}
.secondary:hover{background:#2a495d}
.service-data,.event,td{border-color:var(--line)}
th{background:#1e2d39;color:#b9cad8}
.panel-footer{background:#131f29;color:#a0b2c2}
.panel:not(.trading-card) input,select,.login-card input{background:#101c25;border-color:#526273;color:#edf3f8}
input::placeholder{color:#8fa4b5;opacity:1}
.banner{background:#342c22;border-color:#66503a;color:#f0cca0}
.login-wrap{background:radial-gradient(ellipse at 20% 0%,#1b3938,transparent 60%),#101922}
.login-card{box-shadow:0 22px 70px #0004}
.login-card label{color:#b9cad8}
.error-text{color:#ffaaa0}
/* Поля и карточки Market сохраняют общую тёмную тему панели. */
.market-form-grid textarea,.market-author input,.market-delete input{background:#101c25;border-color:#526273;color:#edf3f8}.market-editor legend,.market-form-grid>label,.market-author,.market-delete label{color:#b9cad8}.market-modes span{border-color:#526273;color:#bfd0dd}.market-modes input:checked+span{background:#193d32;color:#9de4c8}.market-card{background:#17232d;border-color:#334452}.market-logo{background:#20313d}.market-id-badge,.market-author-badge,.market-tags span{background:#293b49;color:#bfd0dd}.market-description{color:#a0b2c2}
.market-schedule-grid select,.market-schedule-grid input{background:#101c25;border-color:#526273;color:#edf3f8}
/* Неблокирующее уведомление закреплено в окне, поэтому видно и при прокрутке карточки. */
.request-activity{position:fixed;right:22px;bottom:22px;z-index:1000;display:flex;align-items:center;gap:12px;max-width:calc(100vw - 32px);padding:13px 18px;background:#203b4b;color:#edf8ff;border:1px solid #6895ae;border-radius:9px;box-shadow:0 5px 24px #0005;font-size:13px;pointer-events:none}
.request-spinner{width:19px;height:19px;flex:none;border:2px solid #6b8798;border-top-color:#b7f0dc;border-radius:50%;animation:request-spin .8s linear infinite}
@keyframes request-spin{to{transform:rotate(360deg)}}
/* При ограничении анимации остаётся заметный статичный индикатор с текстом ожидания. */
@media(prefers-reduced-motion:reduce){.request-spinner{animation:none}}
@media(max-width:650px){.request-activity{right:16px;bottom:16px;font-size:12px}}
