/*
 * Каркас админки на токенах Trade Desk: меню, страница, карточки, таблицы, формы,
 * кнопки, статусы. Страницы (trades/strategies/settings/…) свёрстаны на старых
 * классах .card/.btn/.status-badge/.form-input — здесь они переопределены так,
 * чтобы выглядеть как панели/пилюли/таблицы дизайн-системы. Токены — tokens.css
 * (область .td-app, её носит <body>).
 */
*, *::before, *::after { box-sizing: border-box; }
body.td-app {
    margin: 0; min-height: 100vh; background: var(--bg-void); color: var(--ink-100);
    font: 400 14px/20px var(--font-ui); -webkit-font-smoothing: antialiased;
    /* старые имена переменных, которыми пользуются шаблоны */
    --bg-main: var(--bg-void); --bg-card: var(--surface-100); --bg-input: var(--surface-200);
    --border-color: var(--line-soft); --text-main: var(--ink-100); --text-muted: var(--ink-200);
    --text-soft: var(--ink-300); --accent: var(--info); --accent-hover: var(--info);
    --danger: var(--short); --success: var(--long); --warning: var(--warn);
}
.page { padding: var(--space-6) var(--space-6) var(--space-10); max-width: 1488px; margin: 0 auto; }
@media (max-width: 768px) {
    .page { padding: var(--space-4) max(14px, env(safe-area-inset-right)) var(--space-8) max(14px, env(safe-area-inset-left)); }
}

/* ---------- верхнее меню ---------- */
.nav {
    display: flex; align-items: center; gap: var(--space-4); margin-bottom: var(--space-6);
    padding: 0 var(--space-5); min-height: 52px; background: var(--surface-100);
    border: 1px solid var(--line-soft); border-radius: var(--radius-lg); box-shadow: var(--shadow-panel);
    overflow-x: auto; scrollbar-width: none;
}
.nav::-webkit-scrollbar { display: none; }
.nav-brand { display: inline-flex; align-items: center; gap: var(--space-2); flex-shrink: 0; color: var(--ink-100); text-decoration: none; font: 600 15px/20px var(--font-ui); letter-spacing: 0.01em; }
.nav-brand svg { width: 18px; height: 18px; color: var(--info); }
.nav-menu { display: flex; align-self: stretch; gap: var(--space-1); margin-left: var(--space-3); }
.nav-menu a {
    display: inline-flex; align-items: center; padding: 0 var(--space-3); white-space: nowrap; text-decoration: none;
    color: var(--ink-200); font: 500 11px/1 var(--font-mono); letter-spacing: 0.08em; text-transform: uppercase;
    border-bottom: 2px solid transparent; border-top: 2px solid transparent;
}
.nav-menu a:hover { color: var(--ink-100); background: var(--ink-wash); }
.nav-menu a.active { color: var(--ink-100); border-bottom-color: var(--info); }
.nav-spacer { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0; white-space: nowrap; color: var(--ink-300); font: 400 11px/14px var(--font-mono); }
#navLiveLabel { color: var(--ink-300) !important; font: 400 11px/14px var(--font-mono) !important; }
.nav-live-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--ink-300); flex-shrink: 0; }
.nav-live-dot.ok { background: var(--long); box-shadow: var(--glow-live); }
.nav-live-dot.warn { background: var(--warn); }
.nav-live-dot.danger { background: var(--short); }
.nav-logout-btn { flex-shrink: 0; }
a:focus-visible, button:focus-visible, summary:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
@media (max-width: 768px) {
    .nav { padding: 0 var(--space-3); gap: var(--space-2); }
    .nav-brand span { display: none; }
    .nav-menu { margin-left: 0; }
    .nav-menu a { padding: 0 var(--space-2); font-size: 10px; }
}

/* ---------- заголовки ---------- */
.header { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); margin-bottom: var(--space-6); flex-wrap: wrap; }
h1 { margin: 0; color: var(--ink-100); font: 600 28px/32px var(--font-ui); letter-spacing: -0.02em; text-transform: none; }
.header-actions { display: flex; gap: var(--space-2); align-items: center; flex-wrap: wrap; }
.section-title { font: 600 15px/20px var(--font-ui); margin: var(--space-6) 0 var(--space-3); }

/* ---------- панели ---------- */
.card, .card-small, .status-card {
    background: var(--surface-100); border: 1px solid var(--line-soft); border-radius: var(--radius-lg);
    box-shadow: var(--shadow-panel); padding: var(--space-5); margin: 0 0 var(--space-6); font-size: 14px;
}
.card[style*="margin-top"] { margin-top: 0 !important; }
.card-title {
    margin: calc(-1 * var(--space-5)) calc(-1 * var(--space-5)) var(--space-5); padding: var(--space-4) var(--space-5);
    border-bottom: 1px solid var(--line-soft); color: var(--ink-100); font: 600 15px/20px var(--font-ui);
    letter-spacing: 0.01em; text-transform: none;
}
.card > p, .card-hint { color: var(--ink-300) !important; font: 400 12px/16px var(--font-ui) !important; margin: 0 0 var(--space-4) !important; max-width: 90ch; }
.empty-hint { color: var(--ink-300); font: 400 12px/16px var(--font-ui); margin: 0; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--space-5); }
.status-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: var(--space-5); margin-bottom: var(--space-6); }
.status-card { margin: 0; }
.status-label { color: var(--ink-300); font: 500 11px/14px var(--font-ui); letter-spacing: 0.12em; text-transform: uppercase; margin-bottom: var(--space-2); }
.status-value { font: 500 22px/26px var(--font-mono); font-variant-numeric: tabular-nums; color: var(--ink-100); }
.status-value.ok { color: var(--long); } .status-value.warn { color: var(--warn); } .status-value.danger { color: var(--short); }

/* ---------- таблицы (кроме .td-table из bundle.css) ---------- */
.card:has(> table), .card:has(> .table-scroll) { padding-bottom: 0; }
.card > table, .table-scroll { margin: 0 calc(-1 * var(--space-5)); width: calc(100% + 2 * var(--space-5)); }
.table-scroll { overflow-x: auto; scrollbar-width: thin; scrollbar-color: var(--line-hard) transparent; }
.card > .table-scroll:first-child, .card > table:first-child { margin-top: calc(-1 * var(--space-5)); }
.table-scroll > table { width: 100%; }
.card-title + table, .card-title + .table-scroll { margin-top: calc(-1 * var(--space-5)); }
table:not(.td-table) { border-collapse: collapse; width: 100%; }
table:not(.td-table) th {
    text-align: left; padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--line-soft); color: var(--ink-300);
    font: 500 11px/14px var(--font-ui); letter-spacing: 0.08em; text-transform: uppercase; white-space: nowrap;
}
table:not(.td-table) td { text-align: left; padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--line-soft); color: var(--ink-100); font-size: 14px; vertical-align: middle; }
table:not(.td-table) tbody tr:last-child td { border-bottom: none; }
table:not(.td-table) tbody tr:hover td { background: var(--surface-300); }
table:not(.td-table) th.num, table:not(.td-table) td.num { text-align: right; }
td.num, span.num { font-family: var(--font-mono); font-variant-numeric: tabular-nums; font-size: 13px; }
td.ticker { font: 500 12px/16px var(--font-mono); letter-spacing: 0.04em; }
td.muted, .muted { color: var(--ink-200); }
table:not(.td-table) td.is-pos { color: var(--long); } table:not(.td-table) td.is-neg { color: var(--short); }
table:not(.td-table) td.muted { color: var(--ink-200); }
td.ts { font: 400 12px/16px var(--font-mono); color: var(--ink-200) !important; white-space: nowrap; }
td .sub { display: block; color: var(--ink-300); font: 400 12px/16px var(--font-ui); margin-top: 2px; max-width: 60ch; white-space: normal; }

/* ---------- статусы = пилюли ---------- */
.status-badge {
    display: inline-flex; align-items: center; gap: var(--space-1); padding: 3px var(--space-2); border-radius: var(--radius-pill);
    border: 1px solid transparent; background: var(--ink-wash); color: var(--ink-200); white-space: nowrap;
    font: 500 11px/14px var(--font-mono); letter-spacing: 0.06em; text-transform: uppercase;
}
.status-badge.ok { background: var(--long-wash); color: var(--long); border-color: transparent; }
.status-badge.warn { background: var(--warn-wash); color: var(--warn); border-color: transparent; }
.status-badge.danger { background: var(--short-wash); color: var(--short); border-color: transparent; }
.status-badge.pending { background: var(--info-wash); color: var(--info); border-color: transparent; }
.status-badge.plain { background: transparent; border-color: var(--line-hard); color: var(--ink-200); text-transform: none; letter-spacing: 0.02em; }

/* ---------- кнопки ---------- */
.btn, .nav-logout-btn, .action-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2); cursor: pointer; text-decoration: none;
    font: 500 11px/1 var(--font-mono); letter-spacing: 0.08em; text-transform: uppercase; padding: 9px 14px;
    border-radius: var(--radius-md); border: 1px solid var(--line-hard); background: transparent; color: var(--ink-200);
    box-shadow: none; transition: background .12s, color .12s;
}
.btn:hover, .nav-logout-btn:hover, .action-btn:hover { background: var(--ink-wash); color: var(--ink-100); }
.btn-primary { background: var(--info); border-color: var(--info); color: var(--on-info); box-shadow: none; }
.btn-primary:hover { background: var(--info); color: var(--on-info); filter: brightness(1.1); }
.btn-outline { background: transparent; }
.btn-danger, .action-btn.danger { border-color: var(--short); color: var(--short); }
.btn-danger:hover, .action-btn.danger:hover { background: var(--short); color: var(--on-short); }
.btn-sm { padding: 7px 11px; font-size: 10px; }
.action-btn { width: 34px; height: 34px; min-width: 34px; padding: 0; }

/* ---------- формы ---------- */
label, .form-label { display: block; margin-bottom: 6px; color: var(--ink-300); font: 500 11px/14px var(--font-ui); letter-spacing: 0.08em; text-transform: uppercase; }
input[type="text"], input[type="number"], input[type="password"], input[type="url"], textarea, select, .form-input {
    -webkit-appearance: none; appearance: none; width: 100%; padding: 9px 12px; border-radius: var(--radius-md);
    border: 1px solid var(--line-hard); background: var(--surface-200); color: var(--ink-100); font: 400 14px/20px var(--font-ui);
}
input[type="number"], input[type="password"] { font-family: var(--font-mono); font-size: 13px; }
select:not([multiple]) {
    padding-right: 32px; background-repeat: no-repeat; background-position: right 12px center; background-size: 10px 6px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23808b9f' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
}
select option { background: var(--surface-200); color: var(--ink-100); }
input::placeholder, textarea::placeholder { color: var(--ink-300); opacity: .7; }
input:focus, textarea:focus, select:focus, .form-input:focus { outline: none; border-color: var(--focus); box-shadow: 0 0 0 3px var(--info-wash); }
.form-group { margin-bottom: var(--space-4); }
.form-row { display: flex; gap: var(--space-5); flex-wrap: wrap; margin-bottom: 0; }
.form-col { flex: 1; min-width: 220px; }
.form-help { color: var(--ink-300); font: 400 12px/16px var(--font-ui); margin-top: 6px; }
.is-danger-field label { color: var(--short); }
.is-danger-field input { border-color: var(--short); }
.form-actions { display: flex; gap: var(--space-3); justify-content: flex-end; margin-top: var(--space-2); padding-top: var(--space-5); border-top: 1px solid var(--line-soft); }

/* ---------- сообщения ---------- */
.td-note, .notice { padding: 10px 14px; border-radius: var(--radius-md); border: 1px solid var(--line-soft); font: 400 13px/18px var(--font-ui); margin-bottom: var(--space-5); background: var(--info-wash); color: var(--info); }
.td-note.is-ok, .notice.is-ok { background: var(--long-wash); color: var(--long); }
.td-note.is-err, .notice.is-err { background: var(--short-wash); color: var(--short); }
.notice.is-row { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); }

/* ---------- подсказка «i» в подписях полей ---------- */
.tooltip {
    position: relative; display: inline-flex; align-items: center; justify-content: center; width: 14px; height: 14px; margin-left: 4px;
    border: 1px solid var(--line-hard); border-radius: 50%; cursor: help; color: var(--ink-300); vertical-align: -2px;
    font: 500 9px/1 var(--font-mono); text-transform: none; letter-spacing: 0;
}
.tooltip:hover { color: var(--ink-100); border-color: var(--ink-300); }
.tooltip::after {
    content: attr(title); position: absolute; bottom: 130%; left: 50%; transform: translateX(-50%); z-index: 100; width: max-content; max-width: 280px;
    padding: 8px 11px; border-radius: var(--radius-md); background: var(--surface-300); border: 1px solid var(--line-hard); box-shadow: var(--shadow-pop);
    color: var(--ink-100); font: 400 12px/16px var(--font-ui); text-transform: none; letter-spacing: 0; white-space: normal;
    opacity: 0; visibility: hidden; transition: opacity .15s, visibility .15s;
}
.tooltip:hover::after { opacity: 1; visibility: visible; }

/* ---------- вход ---------- */
.login-wrap { display: flex; align-items: center; justify-content: center; min-height: 100vh; padding: var(--space-5); }
.login-card { width: 100%; max-width: 380px; background: var(--surface-100); border: 1px solid var(--line-soft); border-radius: var(--radius-lg); box-shadow: var(--shadow-panel); padding: var(--space-8) var(--space-6); }
.login-card h1 { font: 600 22px/28px var(--font-ui); margin: var(--space-3) 0 var(--space-1); }
.login-subtitle { color: var(--ink-300); font: 400 13px/18px var(--font-ui); margin: 0 0 var(--space-6); }
.login-card .form-field { margin-bottom: var(--space-4); }
.login-card .btn { width: 100%; padding: 12px 14px; margin-top: var(--space-2); }
.login-footer { margin: var(--space-5) 0 0; color: var(--ink-300); font: 400 11px/16px var(--font-mono); }
