/* Signal Desk — Slate & Azure.
   Cool slate surfaces, azure accent, IBM Plex Mono for every number.
   Note: --gold/--gold-dim are kept as legacy aliases of the accent so every
   existing component and app.js reference follows the new palette. */
:root{
  --ink:#0f1420;          /* app background — deep slate */
  --ink-2:#161c2a;        /* card */
  --ink-3:#1d2433;        /* raised */
  --line:#273044;
  --text:#e6eaf2;
  --mut:#93a0b8;
  --accent:#4d8dff;       /* azure — actions, focus, highlights */
  --accent-2:#78aaff;     /* hover / bright edge */
  --accent-dim:#31548f;   /* borders, quiet accents */
  --gold:var(--accent);       /* legacy alias */
  --gold-dim:var(--accent-dim);
  --win:#34d399;
  --loss:#f4567a;
  --amber:#e8b352;
  --shadow-1:0 1px 2px rgba(4,8,18,.5),0 6px 22px rgba(4,8,18,.28);
  --shadow-2:0 2px 4px rgba(4,8,18,.5),0 14px 34px rgba(4,8,18,.38);
  --ease:cubic-bezier(.22,.72,.24,1);
  --disp:"Space Grotesk",system-ui,sans-serif;
  --body:"Inter",system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{
  font-family:var(--body);color:var(--text);
  background:
    radial-gradient(1100px 500px at 85% -10%,rgba(77,141,255,.07),transparent 60%),
    radial-gradient(900px 600px at -10% 110%,rgba(77,141,255,.045),transparent 55%),
    var(--ink);
  background-attachment:fixed;
  display:grid;grid-template-columns:232px 1fr;min-height:100vh;
}
::selection{background:rgba(77,141,255,.32)}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--ink-3);border-radius:8px;border:2px solid var(--ink)}
::-webkit-scrollbar-thumb:hover{background:var(--accent-dim)}
::-webkit-scrollbar-track{background:transparent}
.hidden{display:none!important}
.muted{color:var(--mut)} .pad{padding:16px}
b{font-weight:600}

/* ---------- rail ---------- */
.rail{
  border-right:1px solid var(--line);padding:22px 16px;display:flex;
  flex-direction:column;gap:26px;position:sticky;top:0;height:100vh;
  background:linear-gradient(180deg,rgba(22,28,42,.55),rgba(22,28,42,0) 40%);
  backdrop-filter:blur(2px);
}
.brand{display:flex;gap:10px;align-items:center}
.brand-mark{
  width:36px;height:36px;border:1px solid var(--accent-dim);color:var(--accent-2);
  background:linear-gradient(160deg,rgba(77,141,255,.18),rgba(77,141,255,.04));
  display:grid;place-items:center;font-size:18px;border-radius:9px;
  box-shadow:0 0 0 1px rgba(77,141,255,.08),0 4px 14px rgba(4,8,18,.4);
}
.brand-name{font-family:var(--disp);font-weight:700;letter-spacing:.02em}
.brand-sub{font-size:11px;color:var(--mut)}
nav{display:flex;flex-direction:column;gap:4px}
.step{
  display:flex;align-items:center;gap:10px;padding:10px 12px;border:0;
  background:none;color:var(--mut);font:500 14px var(--body);cursor:pointer;
  border-radius:9px;text-align:left;position:relative;
  transition:background .18s var(--ease),color .18s var(--ease),transform .18s var(--ease);
}
.step:hover{background:var(--ink-2);color:var(--text);transform:translateX(2px)}
.step.active{background:var(--ink-3);color:var(--text)}
.step.active::before{
  content:"";position:absolute;left:-1px;top:9px;bottom:9px;width:3px;
  border-radius:3px;background:linear-gradient(180deg,var(--accent-2),var(--accent));
}
.step-k{font-family:var(--mono);font-size:11px;color:var(--gold-dim)}
.step.active .step-k{color:var(--gold)}
.step-state{margin-left:auto;font-family:var(--mono);font-size:12px;color:var(--mut)}
.step-state.ok{color:var(--win)}
.rail-foot{margin-top:auto;display:flex;flex-direction:column;gap:10px}
.foot-note{font-size:11px;color:var(--mut);line-height:1.5}
.pill{
  font:600 11px var(--mono);letter-spacing:.06em;text-transform:uppercase;
  border:1px solid var(--line);border-radius:999px;padding:4px 10px;color:var(--mut);
  width:max-content;
}
.pill.armed{border-color:var(--loss);color:var(--loss)}
.pill.dry{border-color:var(--amber);color:var(--amber)}

/* ---------- main / views ---------- */
main{padding:34px 42px;width:100%;min-width:0;max-width:none}
.view-head h1{font:700 30px/1.15 var(--disp);margin:0 0 8px;letter-spacing:.01em}
.view-head p{color:var(--mut);margin:0 0 26px;max-width:64ch}

.card{
  background:linear-gradient(180deg,rgba(255,255,255,.015),rgba(255,255,255,0) 30%),var(--ink-2);
  border:1px solid var(--line);border-radius:12px;
  padding:20px;margin-bottom:22px;box-shadow:var(--shadow-1);
  transition:border-color .22s var(--ease),box-shadow .22s var(--ease),transform .22s var(--ease);
}
.card:hover{border-color:color-mix(in srgb,var(--accent) 22%,var(--line));box-shadow:var(--shadow-2)}
.card.narrow{max-width:480px}
.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;gap:12px}
.card-head h2{font:600 15px var(--disp);margin:0;letter-spacing:.03em}
.dialog-tools{align-items:center;flex-wrap:nowrap}
.dialog-tools .search{min-width:140px}
.split{display:grid;grid-template-columns:1fr 1fr;gap:20px}

/* ---------- forms ---------- */
label{display:block;font:600 12px var(--body);color:var(--mut);margin-bottom:6px;letter-spacing:.03em}
.hint{font-weight:400;text-transform:none;letter-spacing:0;font-size:9px;line-height:1.3;color:var(--mut)}
.field>span.hint{display:block;margin-top:4px}
.field.setting-inactive{opacity:.58}.field.setting-inactive .hint{color:var(--mut)}
.lot-preview input{background:var(--ink-3);color:var(--mut);border-style:dashed;cursor:default}
.sizing-guard{margin-top:7px;padding:6px 8px;border-radius:6px;font:600 10px/1.35 var(--mono)}
.sizing-guard.valid{color:var(--win);background:color-mix(in srgb,var(--win) 8%,transparent)}
.sizing-guard.invalid{color:var(--loss);background:color-mix(in srgb,var(--loss) 9%,transparent)}
.risk-guidance{margin-top:10px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--ink-2);font:12px/1.55 var(--body);color:var(--text)}
.risk-guidance span{color:var(--mut)}
.row{display:flex;gap:8px}
input,select{
  background:var(--ink);border:1px solid var(--line);color:var(--text);
  border-radius:8px;padding:10px 12px;font:400 14px var(--mono);flex:1;min-width:0;
}
input,select{transition:border-color .16s var(--ease),box-shadow .16s var(--ease)}
input:focus,select:focus{
  outline:none;border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(77,141,255,.18);
}
button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.btn{
  background:linear-gradient(180deg,var(--accent-2),var(--accent));
  color:#fff;border:0;border-radius:9px;
  padding:10px 16px;font:600 13px var(--body);cursor:pointer;white-space:nowrap;
  box-shadow:0 1px 2px rgba(4,8,18,.45),0 4px 14px rgba(77,141,255,.22),inset 0 1px 0 rgba(255,255,255,.14);
  transition:transform .16s var(--ease),box-shadow .16s var(--ease),filter .16s var(--ease);
}
.btn:hover{transform:translateY(-1px);box-shadow:0 2px 4px rgba(4,8,18,.45),0 8px 22px rgba(77,141,255,.32),inset 0 1px 0 rgba(255,255,255,.14)}
.btn:active{transform:translateY(0) scale(.985);filter:brightness(.96)}
.btn.big{padding:12px 22px;font-size:14px}
.btn.ghost{background:none;border:1px solid var(--line);color:var(--text);box-shadow:none}
.btn.ghost:hover{border-color:var(--accent-dim);background:rgba(77,141,255,.06);box-shadow:none}
.btn.stop{background:linear-gradient(180deg,#ff6f92,var(--loss));color:#fff}
.fstep{margin-bottom:16px}
.err{color:var(--loss);font:400 13px var(--mono);margin-top:8px}
.ok-row{display:flex;align-items:center;gap:8px;font-weight:600;margin-bottom:8px}
.dot{width:9px;height:9px;border-radius:50%;background:var(--mut)}
.dot.ok{background:var(--win)}

/* ---------- lists ---------- */
.search{max-width:200px}
.list{max-height:420px;overflow:auto;border-top:1px solid var(--line)}
.dialog{
  display:flex;align-items:center;gap:10px;padding:10px 6px;
  border-bottom:1px solid var(--line);font-size:14px;
}
.dialog .id{font:400 11px var(--mono);color:var(--mut)}
.dialog .title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dialog button{padding:5px 12px;font-size:12px}
.dialog .added{font:600 11px var(--mono);color:var(--win)}

/* ---------- audit ---------- */
.audit-controls{display:flex;gap:14px;align-items:end;flex-wrap:wrap}
.audit-risk-setup{margin-top:16px;border:1px solid var(--line);background:var(--ink);padding:0 14px 14px}
.audit-risk-setup summary{cursor:pointer;padding:12px 0;font:600 13px var(--disp);color:var(--text)}
.audit-risk-setup>p{margin:0 0 12px}
.combined-lab-result{margin-top:16px;border-top:1px solid var(--gold-dim);padding-top:16px}
.combined-result-title{font:600 13px var(--disp);color:var(--gold);letter-spacing:.06em;text-transform:uppercase}
.field{display:flex;flex-direction:column;min-width:150px}
.field select,.field input{width:100%}
.stage-line{display:flex;gap:10px;align-items:center;margin:18px 0 8px;font:500 13px var(--mono);color:var(--amber)}
.spinner{
  width:12px;height:12px;border:2px solid var(--gold-dim);border-top-color:var(--gold);
  border-radius:50%;animation:spin .8s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion: reduce){.spinner{animation:none}}
.joblog{
  background:var(--ink);border:1px solid var(--line);border-radius:8px;padding:12px;
  font:400 12px/1.7 var(--mono);color:var(--mut);max-height:200px;overflow:auto;
  white-space:pre-wrap;margin:0;
}
.joblog.tall{max-height:420px;color:var(--text)}

/* ---------- verdict strip (signature) ---------- */
.verdict{
  border:1px solid var(--accent-dim);border-radius:12px;background:
  linear-gradient(180deg,rgba(77,141,255,.08),rgba(77,141,255,0) 55%),var(--ink-2);
  padding:24px 24px 14px;margin-bottom:22px;box-shadow:var(--shadow-1);
}
.verdict-word{
  font:700 36px/1 var(--disp);letter-spacing:.01em;margin-bottom:16px;
}
.verdict-word .vp{color:var(--win)} .verdict-word .vn{color:var(--loss)} .verdict-word .vq{color:var(--amber)}
.v-metrics{display:flex;gap:34px;flex-wrap:wrap;margin-bottom:16px}
.vm b{display:block;font:600 22px var(--mono)}
.vm span{font:500 11px var(--body);color:var(--mut);letter-spacing:.05em;text-transform:uppercase}
.equity{width:100%;height:150px;display:block;background:var(--ink);border:1px solid var(--line);border-radius:8px}
.ledger-note{
  font:400 11.5px/1.7 var(--mono);color:var(--mut);border-top:1px dashed var(--line);
  margin-top:14px;padding-top:10px;
}

/* ---------- trades table ---------- */
.table-wrap{overflow:auto}
table{width:100%;border-collapse:collapse;font:400 12.5px var(--mono)}
th{
  text-align:left;font:600 11px var(--body);color:var(--mut);letter-spacing:.06em;
  text-transform:uppercase;border-bottom:1px solid var(--line);padding:8px 10px;
}
td{border-bottom:1px solid var(--line);padding:8px 10px;white-space:nowrap}
td.num,th.num{text-align:right}
tr.win td.oc{color:var(--win)} tr.loss td.oc{color:var(--loss)}
tr.neut td.oc{color:var(--mut)}
td .r-pos{color:var(--win)} td .r-neg{color:var(--loss)}
.flag{
  font:600 9.5px var(--mono);color:var(--amber);border:1px solid var(--amber);
  border-radius:4px;padding:1px 5px;letter-spacing:.06em;
}
.legend{display:flex;gap:14px;align-items:center;font:400 11.5px var(--mono);color:var(--mut)}
.breakdown-basis{font:500 10.5px var(--mono);color:var(--amber);border:1px solid color-mix(in srgb,var(--amber) 45%,transparent);border-radius:999px;padding:4px 8px}
.breakdown-head-actions{display:flex;align-items:center;gap:8px;margin-left:auto}
.btn.calc-all{padding:5px 8px;font-size:10px}
.calc-toggle{border:0;background:none;color:var(--gold);padding:0;font:600 10.5px var(--body);cursor:pointer;text-decoration:underline;text-underline-offset:2px;white-space:nowrap}
.sw{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;vertical-align:-1px}
.sw.win{background:var(--win)} .sw.loss{background:var(--loss)} .sw.neut{background:var(--mut)}
tr.detail-row>td{white-space:normal;color:var(--mut);font-size:11.5px;background:var(--ink);padding:14px}
.trade-calc{border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--ink-2)}
.trade-calc-head{display:flex;align-items:center;gap:28px;padding:12px 14px;border-bottom:1px solid var(--line)}
.trade-calc-head>span:first-child{margin-right:auto}
.trade-calc-head b,.trade-calc-head small{display:block}
.trade-calc-head b{color:var(--text);font-size:13px}.trade-calc-head small{color:var(--mut);margin-top:3px}
.calc-table{font-size:11.5px}.calc-table td{background:transparent;white-space:nowrap}.calc-table tfoot td{border-top:1px solid var(--line);border-bottom:0}
.calc-table .r-pos,.trade-calc-head .r-pos{color:var(--win)}.calc-table .r-neg,.trade-calc-head .r-neg{color:var(--loss)}
.trade-evidence{margin-top:12px}.trade-evidence pre{margin:0;white-space:pre-wrap;color:var(--mut);font:400 11.5px/1.6 var(--mono)}
.calc-unavailable{padding:10px 12px;margin-bottom:10px;border:1px solid var(--amber);border-radius:8px;color:var(--amber);background:color-mix(in srgb,var(--amber) 8%,transparent)}
.calc-warning,.calc-be-note{padding:9px 12px;margin-bottom:10px;border:1px solid var(--line);border-radius:8px;font:400 11px/1.5 var(--mono)}
.calc-warning{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 55%,var(--line));background:color-mix(in srgb,var(--amber) 7%,transparent)}
.calc-be-note{color:var(--mut);background:var(--ink-2)}
tbody tr:not(.detail-row){cursor:pointer;transition:background .14s var(--ease)}
tbody tr:not(.detail-row):hover{background:var(--ink-3)}

/* ---------- live ---------- */
.live-controls{display:flex;align-items:center;gap:16px;margin-bottom:14px}
.spacer{flex:1}
.switch{display:flex;align-items:center;gap:10px;cursor:pointer}
.switch input{display:none}
.track{
  width:40px;height:22px;border-radius:999px;background:var(--ink-3);
  border:1px solid var(--line);position:relative;transition:.15s;
}
.track::after{
  content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;
  border-radius:50%;background:var(--mut);transition:.15s;
}
.switch input:checked + .track{background:var(--loss);border-color:var(--loss)}
.switch input:checked + .track::after{left:20px;background:#fff}
.switch-label{font:600 13px var(--body)}

@media (max-width:900px){
  html,body{width:100%;overflow-x:hidden}
  body{grid-template-columns:minmax(0,1fr)}
  .rail{position:static;height:auto;width:100%;flex-direction:row;align-items:center;flex-wrap:wrap;padding:14px 16px}
  nav{flex-direction:row;width:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:3px}
  .step{flex:0 0 auto}
  .rail-foot{display:none}
  .trade-calc-head{align-items:flex-start;flex-wrap:wrap;gap:12px 22px}
  main{padding:18px;width:100%;min-width:0;overflow:hidden}
  .view,.card,.verdict{width:100%;min-width:0}
  .split{grid-template-columns:1fr}
  .v-metrics{gap:20px}
  .live-controls{flex-wrap:wrap}
  .lab-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:end}
  .lab-grid .field{max-width:none;min-width:0}
  input,select{max-width:100%}
}

/* ---------- additions: toggles in lists, lab, risk panel, tp bars ---------- */
.small{font-size:12.5px;margin-top:-4px}
.mono{font-family:var(--mono)}
.dialog .mini{display:flex;gap:12px;align-items:center}
.mini label{display:flex;gap:5px;align-items:center;font:500 11px var(--body);color:var(--mut);margin:0;cursor:pointer}
.mini input[type=checkbox]{accent-color:var(--gold);width:14px;height:14px;flex:none}
.mini input[type=number]{width:58px;padding:4px 6px;font-size:11px}
.lab-grid{display:flex;gap:16px;flex-wrap:wrap;align-items:end}
.lab-grid .field{min-width:130px;max-width:190px}
.field.check{display:flex;align-items:center;min-height:42px}
.row.tight{gap:4px}
.row.tight input{padding:8px 6px;font-size:12px}
.lab-metrics{margin-top:18px}
.tpbar{display:grid;grid-template-columns:52px 1fr 1fr 90px;gap:10px;align-items:center;margin:8px 0;font:500 12px var(--mono)}
.tpbar .lane{background:var(--ink);border:1px solid var(--line);border-radius:5px;height:20px;position:relative;overflow:hidden}
.tpbar .fill{position:absolute;inset:0 auto 0 0;border-radius:4px}
.tpbar .fill.claim{background:var(--amber)}
.tpbar .fill.valid{background:var(--win)}
.tpbar .pct{position:absolute;right:6px;top:1px;font-size:11px;color:var(--text)}
.tpbar .gap{color:var(--loss)}
.tp-legend{font:400 11.5px var(--mono);color:var(--mut);margin-top:6px}
.ttable td{max-width:340px;overflow:hidden;text-overflow:ellipsis}

/* ---------- health, recommendations, symbol profiles ---------- */
.watch-row{align-items:flex-start;flex-wrap:wrap}
.watch-main{flex:1;min-width:220px}
.watch-health{font:400 10.5px/1.5 var(--mono);color:var(--mut);margin-top:4px}
.watch-actions{display:flex;gap:6px;align-items:center}
.watch-actions .btn{padding:6px 9px;font-size:11px}
.watch-live-state{display:inline-flex;align-items:center;padding:4px 7px;border:1px solid var(--line);border-radius:999px;font:600 8px var(--mono);letter-spacing:.05em;white-space:nowrap}
.watch-live-state.monitor{color:var(--mut)}
.watch-live-state.live{color:var(--win);border-color:color-mix(in srgb,var(--win) 55%,var(--line));background:color-mix(in srgb,var(--win) 9%,transparent)}
.btn.danger{color:var(--loss);border-color:color-mix(in srgb,var(--loss) 55%,var(--line))}
.health-ok{color:var(--win)}
.health-warn{color:var(--amber)}
.strategy-grid{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:6px;overflow:hidden}
.strategy-metric{background:var(--ink);padding:12px;min-height:72px}
.strategy-metric b{display:block;font:600 18px var(--mono);margin-bottom:4px}
.strategy-metric span{font:500 10.5px var(--body);color:var(--mut);text-transform:uppercase}
.coverage-state{margin-top:8px;padding:8px 10px;border:1px solid var(--line);border-radius:5px;font:500 11px var(--mono)}
.coverage-state.complete{color:var(--win);border-color:color-mix(in srgb,var(--win) 45%,var(--line))}
.coverage-state.incomplete{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 55%,var(--line))}
.profile-section{border-top:1px solid var(--line);margin-top:20px;padding-top:18px}
.profile-list{display:grid;gap:10px}
.risk-profile{border:1px solid var(--line);border-radius:6px;padding:12px;background:var(--ink)}
.risk-profile.profile-live{border-color:color-mix(in srgb,var(--win) 65%,var(--line));box-shadow:inset 3px 0 0 var(--win);background:color-mix(in srgb,var(--win) 4%,var(--ink))}
.profile-live-switch:has(input:checked) .switch-label{color:var(--win);font-weight:700}
.default-profile{margin-top:4px}
.profile-head{display:flex;gap:12px;align-items:center;margin-bottom:10px}
.profile-title,.profile-name{flex:1;min-width:180px}
.profile-title strong{display:block;font:600 15px var(--disp)}
.profile-title span{display:block;color:var(--mut);font-size:9px;line-height:1.35;margin-top:3px}
.profile-name{margin:0}
.profile-name input{padding:8px;font-size:12px}
.profile-scope{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:12px;padding:10px;background:var(--ink-2);border:1px solid var(--line);border-radius:6px}
.scope-summary span{display:block;color:var(--mut);font:500 10px var(--body);text-transform:uppercase;margin-bottom:4px}
.scope-summary b{font:500 12px var(--mono)}
.all-groups{display:flex;align-items:center;gap:7px;margin:0 0 6px;padding:6px 8px;border:1px solid var(--line);border-radius:5px;font:600 11px var(--body);cursor:pointer}
.all-groups:has(input:checked){border-color:var(--amber);background:color-mix(in srgb,var(--amber) 9%,transparent);color:var(--amber)}
.group-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;max-height:128px;overflow:auto;padding:7px;border:1px solid var(--line);border-radius:5px;background:var(--ink)}
.group-choice{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:6px;align-items:center;padding:4px 5px;font-size:11px;cursor:pointer}
.group-choice:has(input:checked){background:color-mix(in srgb,var(--win) 10%,transparent);color:var(--text);outline:1px solid color-mix(in srgb,var(--win) 45%,transparent);border-radius:4px}
.group-choice span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.group-choice small{color:var(--mut);font:400 9px var(--mono)}
.profile-unscoped .profile-scope{border-color:color-mix(in srgb,var(--amber) 65%,var(--line))}
.profile-unscoped .profile-scope::after{content:"No active groups. This profile will not match signals.";grid-column:1/-1;color:var(--amber);font:500 9px/1.35 var(--body)}
.profile-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(70px,auto);gap:10px;align-items:stretch}
.profile-grid>.field{min-width:0;min-height:70px;height:100%;padding:10px;border:1px solid var(--line);border-radius:7px;background:var(--ink-2);display:flex;flex-direction:column;justify-content:flex-start}
.profile-grid>.field.check{justify-content:center;margin:0}
.profile-grid>.field>label:first-child{min-height:16px}
.profile-grid>.field .row.tight{width:100%;margin-top:auto}
.profile-grid>.field .row.tight input{width:0;min-width:0}
.profile-grid input,.profile-grid select{width:100%;min-height:36px;padding:8px;font-size:12px}
.profile-sizing-preview{grid-column:1/-1;min-width:0;margin-top:2px}
.profile-sizing-preview [data-profile-preview-table]{max-height:360px;overflow:auto;padding-right:2px}
.profile-sizing-preview .sizing-guard{margin-bottom:0}
.lab-symbol-sizing.sizing-rejected{border-color:color-mix(in srgb,var(--loss) 65%,var(--line));background:color-mix(in srgb,var(--loss) 7%,var(--ink-3))}
.lab-symbol-sizing.sizing-rejected .risk-output{color:var(--loss)}
.icon-btn{width:34px;height:34px;padding:0;display:grid;place-items:center;font:600 20px var(--mono)}
.icon-btn.danger{background:none;border:1px solid var(--line);color:var(--loss)}
.profile-actions{margin-top:12px;align-items:center}
.account-dashboard{display:grid;grid-template-columns:repeat(5,minmax(140px,1fr));gap:1px;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--line)}
.account-metric{min-width:0;min-height:92px;padding:13px 14px;background:var(--ink-2)}
.account-metric.primary{background:color-mix(in srgb,var(--gold) 7%,var(--ink-2));box-shadow:inset 0 3px 0 var(--gold)}
.account-metric span{display:block;color:var(--mut);font:600 9px var(--body);letter-spacing:.05em;text-transform:uppercase;margin-bottom:7px}
.account-metric b{display:block;font:600 15px var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.account-metric small{display:block;color:var(--mut);font:500 9px/1.35 var(--body);margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.account-metric b.positive,.account-metric .positive{color:var(--win)}
.account-metric b.negative,.account-metric .negative{color:var(--loss)}
.account-sizing-note{margin-top:10px;padding:10px 12px;border:1px solid var(--line);border-radius:7px;background:var(--ink);color:var(--mut);font:500 11px/1.45 var(--body)}
.channel-feed{max-height:360px;overflow:auto;border:1px solid var(--line);border-radius:6px}
.channel-feed thead{position:sticky;top:0;background:var(--ink-2);z-index:1}
.channel-feed .message-cell{white-space:normal;min-width:320px;max-width:620px;line-height:1.45}
#profile-status{color:var(--amber);min-height:18px}
.variant-title{display:flex;justify-content:space-between;gap:12px;margin:18px 0 8px;font:600 13px var(--disp)}
.variant-title span{font:400 11px var(--mono);color:var(--mut)}
.variant-table .r-pos{color:var(--win)}
.variant-table .r-neg{color:var(--loss)}

/* ---------- broker-fed strategies ---------- */
.strategy-market{
  display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));
  border:1px solid var(--line);border-radius:6px;margin-bottom:22px;background:var(--line);gap:1px;
  overflow:hidden;
}
.strategy-market>div{background:var(--ink-2);padding:13px 16px;min-width:0}
.strategy-market span{display:block;color:var(--mut);font:600 10px var(--body);text-transform:uppercase;margin-bottom:5px}
.strategy-market b{display:block;font:600 14px var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#strategy-trades{min-width:1380px}
#strategy-decisions{min-width:1040px}
#strategy-trades td,#strategy-decisions td{font-size:11px}
.strategy-ledger-summary{display:grid;grid-template-columns:repeat(9,minmax(84px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);margin:14px 0}
.strategy-ledger-summary>div{background:var(--ink-2);padding:11px 12px;min-width:0}
.strategy-ledger-summary span{display:block;color:var(--mut);font-size:8px;text-transform:uppercase;margin-bottom:5px}
.strategy-ledger-summary b{display:block;font:600 13px var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.strategy-ledger-summary small{display:block;color:var(--mut);font-size:8px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.strategy-ledger-pnl-section{margin:0 0 14px}
.strategy-ledger-pnl-section>span{display:block;color:var(--mut);font-size:9px;text-transform:uppercase;margin-bottom:7px}
.strategy-ledger-pnl-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px}
.strategy-ledger-pnl-list>div{border:1px solid var(--line);background:var(--ink-2);padding:10px 11px;min-width:0}
.strategy-ledger-pnl-list span,.strategy-ledger-pnl-list small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.strategy-ledger-pnl-list span{color:var(--mut);font-size:9px;margin-bottom:5px}
.strategy-ledger-pnl-list b{display:block;font:700 13px var(--mono);margin-bottom:4px}
.strategy-ledger-pnl-list small{color:var(--mut);font-size:8px}
.strategy-ledger-pnl-list .strategy-ledger-empty{color:var(--mut);font-size:10px;grid-column:1/-1}
.strategy-ledger-filters{display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.strategy-ledger-filters .field{min-width:150px}
.strategy-ledger-filters>span{margin-left:auto;padding-bottom:9px}
.strategy-metric-positive{color:var(--win)!important;font-weight:700!important}
.strategy-metric-negative{color:var(--loss)!important;font-weight:700!important}
.bot-reason{white-space:normal;min-width:200px;line-height:1.4}
.strategy-lab-controls{display:flex;align-items:end;gap:12px;flex-wrap:wrap}
.strategy-lab-controls .switch{min-height:38px}
.strategy-progress{display:grid;grid-template-columns:1fr 48px;gap:10px;align-items:center;margin:12px 0 4px}
.strategy-progress>div{height:8px;background:var(--ink);border:1px solid var(--line);overflow:hidden}
.strategy-progress span{display:block;width:0;height:100%;background:var(--gold);transition:width .25s ease}
.strategy-progress b{font:600 10px var(--mono);text-align:right}
.strategy-bt-config{margin-top:16px;border:1px solid var(--line);background:var(--ink);padding:0 14px 12px}
.strategy-bt-config summary{cursor:pointer;padding:12px 0;font:600 12px var(--disp);color:var(--text)}
.strategy-input-note{color:var(--mut);font-size:10px;margin-bottom:8px}
.strategy-opt-limit{max-width:220px;margin-bottom:10px}
.strategy-input-list{border:1px solid var(--line)}
.strategy-param-row{display:grid;grid-template-columns:minmax(190px,1.4fr) minmax(90px,.7fr) auto repeat(3,minmax(80px,.6fr));gap:8px;align-items:end;padding:9px;background:var(--ink-2);border-bottom:1px solid var(--line)}
.strategy-param-row:last-child{border-bottom:0}
.strategy-param-row.param-inactive{opacity:.48;background:var(--ink)}
.strategy-param-row.param-inactive label:first-child::after{content:" · inactive";color:var(--amber);font-size:8px}
.strategy-param-row .switch{min-height:38px}
.strategy-param-row .field{min-width:0}
.strategy-param-row input{padding:7px 6px;font-size:11px}
.strategy-bt-grid{display:grid;grid-template-columns:repeat(7,minmax(105px,1fr));gap:10px;align-items:end}
.strategy-bt-grid .switch{min-height:38px}
.strategy-bt-tps{display:grid;grid-template-columns:repeat(3,minmax(250px,1fr));gap:10px;margin-top:12px}
.strategy-bt-tps>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;align-items:end;background:var(--ink-2);border:1px solid var(--line);border-radius:8px;padding:11px}
.strategy-bt-tps>div>b{grid-column:1/-1;padding-bottom:7px;border-bottom:1px solid var(--line);font:600 11px var(--mono);color:var(--gold)}
.strategy-bt-tps>div .field{min-width:0}
.strategy-bt-tps>div input{width:100%}
.strategy-run-mode{min-width:92px;padding:6px;font-size:10px}
.strategy-run-status{display:block;min-height:13px;margin-top:4px;font:500 9px var(--mono);color:var(--win)}
.strategy-backtest-results{margin-top:18px;border-top:1px solid var(--line)}
.strategy-method{padding:14px 0;color:var(--mut);font-size:11px;line-height:1.65}
.strategy-report{border-top:1px solid var(--line);padding:20px 0}
.strategy-report-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}
.strategy-report-head h3{font:600 17px var(--disp);margin:0 0 4px}
.strategy-report-head p{color:var(--mut);font-size:11px;margin:0}
.strategy-report-actions{display:flex;gap:8px;flex-shrink:0}
.strategy-selected{background:var(--ink-3);border-left:3px solid var(--gold);padding:11px 13px;margin-bottom:14px;font-size:11px;line-height:1.55}
.strategy-backtest-only{color:var(--amber)}
.strategy-optimization-diff{border:1px solid color-mix(in srgb,var(--gold) 55%,var(--line));background:color-mix(in srgb,var(--gold) 3%,var(--ink));padding:14px;margin:16px 0 22px}
.strategy-optimization-diff-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:11px}
.strategy-optimization-diff-head h4{font:600 14px var(--disp);margin:0 0 4px}
.strategy-optimization-diff-head p{color:var(--mut);font-size:10px;margin:0}
.strategy-optimization-diff-head>span{flex:0 0 auto;border:1px solid var(--gold);color:var(--gold);padding:4px 7px;border-radius:999px;font:600 8px var(--mono);text-transform:uppercase}
.strategy-setting-diff{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.strategy-setting-diff>div{background:var(--ink-2);border:1px solid var(--line);padding:7px 9px}
.strategy-setting-diff span{display:block;color:var(--mut);font-size:8px;text-transform:uppercase;margin-bottom:3px}
.strategy-setting-diff b{font:500 10px var(--mono)}
.strategy-setting-diff i{color:var(--gold);font-style:normal;padding:0 4px}
.strategy-optimization-diff table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:10px}
.strategy-optimization-diff th,.strategy-optimization-diff td{border:1px solid var(--line);padding:8px 9px;text-align:right}
.strategy-optimization-diff th:first-child{text-align:left}
.strategy-optimization-diff thead th{background:var(--ink-3);color:var(--text)}
.strategy-optimization-diff tbody th{color:var(--mut);font-weight:500}
.strategy-result-section{margin-top:16px}
.strategy-result-section>h4{font:600 12px var(--disp);margin:0 0 8px;color:var(--mut);text-transform:uppercase}
.strategy-key-metrics{display:grid;grid-template-columns:repeat(7,minmax(90px,1fr));border-block:1px solid var(--line);margin:14px 0}
.strategy-key-metrics>div{padding:11px 10px;border-right:1px solid var(--line);min-width:0}
.strategy-key-metrics>div:last-child{border-right:0}
.strategy-key-metrics span{display:block;color:var(--mut);font-size:9px;margin-bottom:5px}
.strategy-key-metrics b{display:block;font:600 14px var(--mono);overflow:hidden;text-overflow:ellipsis}
.strategy-equity-chart{width:100%;height:clamp(210px,28vw,310px);background:var(--ink);border:1px solid var(--line)}
.strategy-equity-chart svg{display:block;width:100%;height:100%}
.strategy-equity-chart .chart-grid line{stroke:var(--line);stroke-width:1}
.strategy-equity-chart .chart-grid text,.strategy-equity-chart .chart-date{fill:var(--mut);font:10px var(--mono)}
.strategy-equity-chart .chart-area{fill:rgba(77,141,255,.10)}
.strategy-equity-chart .chart-line{fill:none;stroke:var(--gold);stroke-width:2.5;vector-effect:non-scaling-stroke}
.strategy-equity-chart .chart-baseline{stroke:var(--mut);stroke-width:1;stroke-dasharray:5 4}
.strategy-equity-chart .chart-start-label{fill:var(--text);font:600 10px var(--mono)}
.strategy-equity-chart .chart-start{fill:var(--text);stroke:var(--ink);stroke-width:2}
.strategy-equity-chart circle{fill:transparent;stroke:transparent;cursor:crosshair}
.strategy-equity-chart circle:hover{fill:var(--gold);stroke:var(--ink);stroke-width:2}
.strategy-chart-empty{display:grid;place-items:center;min-height:180px;border:1px solid var(--line);color:var(--mut);font-size:11px}
.strategy-detail-metrics{margin-top:16px;border-top:1px solid var(--line);padding-top:12px}
.strategy-detail-metrics summary{cursor:pointer;color:var(--mut);font:600 11px var(--disp);margin-bottom:10px}
.strategy-trade-ledger{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}
.strategy-trade-ledger summary{cursor:pointer;color:var(--text);font:600 11px var(--disp);margin-bottom:10px}
.strategy-trade-list{border:1px solid var(--line)}
.strategy-trade-row{display:grid;grid-template-columns:1.1fr 1fr 1fr 1.5fr 1fr 1.5fr;gap:1px;background:var(--line);border-bottom:1px solid var(--line)}
.strategy-trade-row:last-child{border-bottom:0}
.strategy-trade-row>div{background:var(--ink);padding:9px;min-width:0}
.strategy-trade-row span,.strategy-trade-row small{display:block;color:var(--mut);font-size:8.5px;line-height:1.4}
.strategy-trade-row b{display:block;font:500 9.5px var(--mono);margin:4px 0;white-space:normal;overflow-wrap:anywhere}
.strategy-comparison{width:100%;table-layout:fixed;border-collapse:collapse;font-size:9.5px}
.strategy-comparison th,.strategy-comparison td{border:1px solid var(--line);padding:7px 6px;text-align:right;white-space:normal;overflow-wrap:anywhere}
.strategy-comparison th:first-child{text-align:left;color:var(--mut)}
.strategy-comparison thead th{color:var(--text);background:var(--ink-3)}
.strategy-period-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:11px}
.strategy-period-table th,.strategy-period-table td{border:1px solid var(--line);padding:9px 10px;text-align:left;white-space:normal;overflow-wrap:anywhere}
.strategy-period-table thead th{background:var(--ink-3);color:var(--text)}
.strategy-period-table tbody th{color:var(--mut);width:18%}
.strategy-period-table td{font-family:var(--mono)}
.strategy-period-note{margin-top:8px;color:var(--mut);font-size:10px;line-height:1.55}
.strategy-validation-banner{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));border:1px solid var(--amber);margin:14px 0;background:color-mix(in srgb,var(--amber) 7%,transparent)}
.strategy-validation-banner.passed{border-color:var(--win);background:color-mix(in srgb,var(--win) 7%,transparent)}
.strategy-validation-banner>div{padding:11px 12px;border-right:1px solid var(--line);min-width:0}
.strategy-validation-banner>div:last-child{border-right:0}
.strategy-validation-banner span{display:block;color:var(--mut);font-size:9px;margin-bottom:5px}
.strategy-validation-banner b{display:block;font:600 12px var(--mono);white-space:normal;overflow-wrap:anywhere}
.strategy-qualification{margin:8px 0 22px;border-block:1px solid var(--line);padding:16px 0}
.strategy-qualification table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:10px}
.strategy-qualification th,.strategy-qualification td{padding:8px 6px;border:1px solid var(--line);text-align:right;white-space:normal;overflow-wrap:anywhere}
.strategy-qualification th:first-child,.strategy-qualification td:first-child{text-align:left;width:17%}
.strategy-qualification td:nth-child(2){text-align:left;width:17%}
.strategy-qualification td small{display:block;color:var(--mut);margin-top:3px}
.strategy-qualification tr.qualified td:nth-child(2){color:var(--win)}
.strategy-qualification tr.not-qualified td:nth-child(2){color:var(--amber)}
.strategy-metric-groups{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.strategy-metric-group{background:var(--ink);padding:12px;min-width:0}
.strategy-metric-group h5{font:600 12px var(--disp);margin:0 0 9px}
.strategy-metric-list{display:grid;grid-template-columns:1fr auto;gap:6px 12px;margin:0}
.strategy-metric-list dt{color:var(--mut);font-size:10px}
.strategy-metric-list dd{font:500 10px var(--mono);margin:0;text-align:right}
.strategy-diagnosis{display:grid;grid-template-columns:1fr 1fr;gap:18px;border-top:1px solid var(--line);padding-top:12px}
.strategy-diagnosis h5{font:600 11px var(--disp);margin:0 0 7px}
.strategy-diagnosis ul{margin:0;padding-left:18px;color:var(--mut);font-size:11px;line-height:1.55}
.strategy-ai-output{white-space:pre-wrap;background:var(--ink);border-left:3px solid var(--win);padding:13px;margin-top:12px;font-size:11px;line-height:1.6;color:var(--text)}
.strategy-control-note{margin:-3px 0 14px}
.strategy-panel-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}
.strategy-panel-actions .btn{padding:6px 9px;font-size:9px}
.strategy-live-pill{color:var(--win);border-color:color-mix(in srgb,var(--win) 55%,var(--line));background:color-mix(in srgb,var(--win) 10%,transparent)}
.strategy-risk-list{display:grid;gap:12px}
.strategy-control-empty{padding:28px;border:1px dashed var(--line);color:var(--mut);text-align:center;font-size:11px}
.strategy-control-panel{border:1px solid var(--line);border-left:4px solid var(--mut);background:var(--ink);padding:14px;transition:border-color .2s,box-shadow .2s,background .2s}
.strategy-control-panel.strategy-shadow{border-left-color:var(--amber)}
.strategy-control-panel.strategy-live{border-color:color-mix(in srgb,var(--win) 65%,var(--line));border-left:4px solid var(--win);background:color-mix(in srgb,var(--win) 6%,var(--ink));box-shadow:0 0 0 1px color-mix(in srgb,var(--win) 12%,transparent),0 8px 28px rgba(63,182,139,.08)}
.strategy-control-head{display:grid;grid-template-columns:minmax(200px,.7fr) minmax(220px,1.2fr) auto auto;gap:14px;align-items:center;margin-bottom:12px}
.strategy-head-pnl{display:grid;grid-template-columns:auto auto auto;gap:8px;align-items:baseline;justify-self:end;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:var(--ink-2);white-space:nowrap}
.strategy-head-pnl span{color:var(--mut);font:600 8px var(--body);letter-spacing:.07em;text-transform:uppercase}
.strategy-head-pnl b{font:700 13px var(--mono)}
.strategy-head-pnl small{color:var(--mut);font:500 10px var(--mono)}
.strategy-head-actions{display:flex;gap:6px;align-items:center}
.strategy-delete{color:var(--loss);font-size:16px;line-height:1}
.strategy-delete:hover{border-color:color-mix(in srgb,var(--loss) 55%,var(--line));background:color-mix(in srgb,var(--loss) 8%,transparent)}
.strategy-collapse-toggle{padding:6px 9px!important;min-width:66px;font-size:9px!important}
.strategy-control-panel.is-collapsed{padding-block:10px}
.strategy-control-panel.is-collapsed .strategy-control-head{margin-bottom:0}
.strategy-control-panel.is-collapsed .strategy-control-body{display:none}
.strategy-risk-title{align-self:center;min-width:0}
.strategy-risk-title b,.strategy-risk-title span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.strategy-risk-title span{color:var(--mut);font-size:10px;margin-top:3px}
.strategy-name-line{display:flex!important;align-items:center;gap:8px}
.strategy-name-line b{font:600 15px var(--disp);color:var(--text)}
.strategy-mode-badge{display:inline-flex!important;align-items:center;width:max-content;margin:0!important;padding:3px 7px;border:1px solid var(--line);border-radius:999px;color:var(--mut)!important;font:600 8px var(--mono)!important;letter-spacing:.08em}
.strategy-shadow .strategy-mode-badge{color:var(--amber)!important;border-color:color-mix(in srgb,var(--amber) 60%,var(--line));background:color-mix(in srgb,var(--amber) 9%,transparent)}
.strategy-off .strategy-mode-badge{color:var(--mut)!important;background:var(--ink-3)}
.strategy-live .strategy-mode-badge{color:var(--win)!important;border-color:color-mix(in srgb,var(--win) 60%,var(--line));background:color-mix(in srgb,var(--win) 10%,transparent)}
.strategy-live-dot{display:inline-block!important;width:8px;height:8px;flex:0 0 8px;border-radius:50%;background:var(--mut);margin:0!important;overflow:visible!important}
.strategy-shadow .strategy-live-dot{background:var(--amber)}
.strategy-live .strategy-live-dot{background:var(--win);box-shadow:0 0 0 4px color-mix(in srgb,var(--win) 17%,transparent);animation:strategy-live-pulse 2s ease-in-out infinite}
@keyframes strategy-live-pulse{50%{box-shadow:0 0 0 7px color-mix(in srgb,var(--win) 3%,transparent)}}
.strategy-latest-reason{display:grid;grid-template-columns:auto auto 1fr;gap:9px;align-items:center;min-width:0}
.strategy-latest-reason>span{color:var(--mut);font-size:9px;text-transform:uppercase}
.strategy-latest-reason>b{font:600 10px var(--mono)}
.strategy-latest-reason>small{color:var(--mut);font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.strategy-analytics-grid{display:grid;grid-template-columns:1.8fr repeat(4,minmax(90px,1fr));border:1px solid var(--line);background:var(--line);gap:1px;margin-bottom:12px}
.strategy-analytics-grid>div{background:var(--ink-2);padding:9px 10px;min-width:0}
.strategy-live .strategy-analytics-grid>div{background:color-mix(in srgb,var(--win) 3%,var(--ink-2))}
.strategy-analytics-grid span{display:block;color:var(--mut);font-size:8px;text-transform:uppercase;margin-bottom:5px}
.strategy-analytics-grid b{display:block;font:500 10px var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.strategy-saved-params{border:1px solid var(--line);background:var(--ink-2);margin-bottom:12px}
.strategy-saved-params summary{display:flex;justify-content:space-between;gap:12px;cursor:pointer;padding:9px 10px;color:var(--text);font:600 10px var(--disp)}
.strategy-saved-params summary span{color:var(--mut);font:500 9px var(--mono)}
.strategy-saved-param-grid{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:1px;background:var(--line);border-top:1px solid var(--line)}
.strategy-saved-param-grid>div{background:var(--ink);padding:8px 9px;min-width:0}
.strategy-saved-param-grid span,.strategy-saved-param-grid small{display:block;color:var(--mut);font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.strategy-saved-param-grid input{width:100%;margin:5px 0 4px}
.strategy-entry-save-note{padding:8px 10px;border-top:1px solid var(--line);color:var(--mut);font-size:9px}
.strategy-entry-save-note b{color:var(--text)}
.strategy-risk-controls{display:grid;grid-template-columns:repeat(8,minmax(82px,1fr)) auto auto minmax(70px,.7fr);gap:8px;align-items:end;border-top:1px solid var(--line);padding-top:12px}
.strategy-control-panel .field{min-width:0}
.strategy-control-panel input,.strategy-control-panel select{padding:7px 6px;font-size:11px}
.strategy-control-panel label{font-size:9px}
.input-with-unit{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:stretch}
.input-with-unit input{border-radius:8px 0 0 8px}
.input-with-unit span{display:flex;align-items:center;padding:0 8px;border:1px solid var(--line);border-left:0;border-radius:0 8px 8px 0;background:var(--ink-3);color:var(--mut);font:600 9px var(--mono);white-space:nowrap}
.strategy-bt-grid .hint{display:block;margin-top:3px;color:var(--mut);font-size:8px;line-height:1.25}
.strategy-risk-save,.strategy-test-signal{padding:8px 11px;white-space:nowrap}
.strategy-risk-status{color:var(--win);font:500 10px var(--mono);align-self:center;min-width:0;overflow:hidden;text-overflow:ellipsis}
.strategy-tp-config{display:flex;align-items:end;gap:8px;border-top:1px solid var(--line);padding-top:10px;margin-top:10px;flex-wrap:wrap}
.strategy-tp-leg{display:grid;grid-template-columns:auto repeat(3,minmax(88px,120px));align-items:end;gap:7px;padding-right:10px;border-right:1px solid var(--line)}
.strategy-tp-leg>b{align-self:center;font:600 11px var(--mono);color:var(--gold)}
.strategy-tp-note{color:var(--mut);font-size:9px;align-self:center;max-width:180px;line-height:1.4}
@media (max-width:900px){
  .strategy-grid{grid-template-columns:repeat(2,minmax(120px,1fr))}
  .profile-grid{grid-template-columns:1fr 1fr}
  .account-dashboard{grid-template-columns:repeat(2,minmax(140px,1fr))}
  .strategy-market{grid-template-columns:repeat(2,minmax(120px,1fr))}
  .strategy-control-head{grid-template-columns:1fr;gap:8px}
  .strategy-head-pnl{justify-self:start}
  .strategy-latest-reason{grid-template-columns:auto auto 1fr}
  .strategy-analytics-grid{grid-template-columns:repeat(2,minmax(120px,1fr))}
  .strategy-saved-param-grid{grid-template-columns:repeat(2,minmax(120px,1fr))}
  .strategy-risk-controls{grid-template-columns:repeat(2,minmax(120px,1fr))}
  .strategy-tp-leg{grid-template-columns:36px repeat(3,minmax(80px,1fr));width:100%;border-right:0}
  .strategy-metric-groups{grid-template-columns:1fr}
  .strategy-diagnosis{grid-template-columns:1fr}
  .strategy-bt-grid{grid-template-columns:repeat(2,minmax(120px,1fr))}
  .strategy-bt-tps{grid-template-columns:1fr}
  .strategy-param-row{grid-template-columns:repeat(2,minmax(120px,1fr))}
  .strategy-key-metrics{grid-template-columns:repeat(4,minmax(90px,1fr))}
  .strategy-key-metrics>div{border-bottom:1px solid var(--line)}
  .strategy-comparison{font-size:8px}
  .strategy-comparison th,.strategy-comparison td{padding:6px 3px}
  .strategy-validation-banner{grid-template-columns:repeat(2,minmax(120px,1fr))}
  .strategy-trade-row{grid-template-columns:repeat(3,minmax(120px,1fr))}
  .strategy-ledger-summary{grid-template-columns:repeat(3,minmax(100px,1fr))}
}
@media (max-width:520px){
  .profile-head{align-items:flex-start;flex-wrap:wrap}
  .profile-scope,.profile-grid,.group-picker{grid-template-columns:1fr}
  .account-dashboard{grid-template-columns:1fr}
  .profile-sizing-preview{grid-column:auto}
  .tpbar{grid-template-columns:42px minmax(90px,1fr) minmax(90px,1fr) 58px;gap:5px}
  .strategy-key-metrics{grid-template-columns:repeat(2,minmax(100px,1fr))}
  .strategy-validation-banner{grid-template-columns:1fr}
  .strategy-report-head{display:block}
  .strategy-report-actions{margin-top:10px}
  .strategy-trade-row{grid-template-columns:repeat(2,minmax(120px,1fr))}
  .strategy-ledger-summary{grid-template-columns:repeat(2,minmax(110px,1fr))}
  .strategy-ledger-filters .field{width:100%}
  .strategy-ledger-filters>span{margin-left:0}
}

/* Backtest Lab: stable aligned rows instead of wrapping fields of mixed height. */
.audit-risk-setup .lab-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:14px;align-items:start}
.audit-risk-setup .lab-grid>.field{min-width:0;max-width:none;width:auto}
.audit-risk-setup .lab-span-2{grid-column:span 2}
.audit-risk-setup .lab-span-4{grid-column:1/-1}
.lab-symbol-sizing{display:grid;grid-template-columns:minmax(90px,1fr) minmax(120px,1.2fr) repeat(3,minmax(72px,.8fr)) minmax(105px,1fr);gap:6px;align-items:center}
.lab-symbol-sizing+.lab-symbol-sizing{margin-top:6px}
.lab-symbol-sizing.header{color:var(--mut);font:600 9px var(--body);letter-spacing:.04em;text-transform:uppercase;padding:0 6px}
.lab-symbol-sizing:not(.header){padding:7px 6px;border:1px solid var(--line);border-radius:7px;background:var(--ink-3)}
.lab-symbol-sizing b{font:600 12px var(--mono);color:var(--text)}
.lab-symbol-sizing input{padding:7px 8px;font-size:11px;background:var(--ink)}
.lab-symbol-sizing output{font:600 11px var(--mono);color:var(--text)}
.lab-symbol-sizing output small{display:block;margin-top:2px;color:var(--mut);font:500 8px var(--mono)}
.lab-symbol-sizing .risk-output{color:var(--gold)}
.lab-symbol-details{display:block;border:1px solid var(--line);border-radius:8px;padding:0 10px 10px;background:color-mix(in srgb,var(--ink-3) 45%,transparent)}
.lab-symbol-details>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;padding:10px 2px;color:var(--text);font:600 12px var(--body);list-style:none}
.lab-symbol-details>summary::-webkit-details-marker{display:none}
.lab-symbol-details>summary::before{content:"▾";color:var(--gold);font:700 12px var(--mono);transition:transform .15s}
.lab-symbol-details:not([open])>summary::before{transform:rotate(-90deg)}
.lab-symbol-details>summary span{margin-right:auto}
.lab-symbol-details>summary small{color:var(--mut);font:500 10px var(--mono)}
.audit-risk-setup .field.check{justify-content:flex-end;min-height:64px;padding-bottom:9px}
.audit-risk-setup .lab-run-row{grid-column:1/-1;display:flex;align-items:center;gap:14px;padding-top:2px}
.audit-risk-setup .lab-run-row .small{margin:0}
@media (max-width:1100px){.audit-risk-setup .lab-grid{grid-template-columns:repeat(2,minmax(150px,1fr))}}
@media (max-width:600px){
  .audit-risk-setup .lab-grid{grid-template-columns:1fr}
  .audit-risk-setup .lab-span-2{grid-column:auto}
  .audit-risk-setup .lab-span-4{grid-column:auto}
  .audit-risk-setup .lab-run-row{display:grid;grid-template-columns:1fr}
  .lab-symbol-sizing{grid-template-columns:repeat(3,minmax(72px,1fr))}
  .lab-symbol-sizing.header{display:none}
  .lab-symbol-sizing b,.lab-symbol-sizing .symbol-stop,.lab-symbol-sizing .risk-output{grid-column:span 1}
}
.broker-result {
  display: block;
  font-weight: 800;
  white-space: nowrap;
}

.ttable td small {
  display: block;
  margin-top: 0.2rem;
  color: var(--mut);
  font-size: 0.72rem;
  white-space: nowrap;
}

.broker-calc {
  margin-bottom: 1rem;
  border: 1px solid color-mix(in srgb, var(--win) 45%, transparent);
  border-radius: 10px;
  overflow: hidden;
}

.broker-calc .trade-calc-head {
  background: color-mix(in srgb, var(--win) 9%, var(--ink-2));
}

.model-separator {
  display: flex;
  align-items: baseline;
  gap: 0.65rem;
  margin: 0.85rem 0 0.5rem;
  color: var(--mut);
}

.model-separator b {
  color: var(--text);
}

/* ================= Slate & Azure — motion layer =================
   Polished & subtle: view transitions, hover lifts, eased progress,
   stat value pop paired with the JS count-up. All motion is disabled
   under prefers-reduced-motion. */

.view{animation:viewIn .28s var(--ease) both}
@keyframes viewIn{
  from{opacity:0;transform:translateY(7px)}
  to{opacity:1;transform:none}
}
.view.hidden{animation:none}

/* verdict + stat values: gentle settle when (re)rendered */
.vm b{will-change:transform;font-variant-numeric:tabular-nums}
.vm b.stat-updated{animation:statPop .5s var(--ease)}
@keyframes statPop{
  0%{opacity:.2;transform:translateY(5px)}
  60%{opacity:1}
  100%{transform:none}
}
.verdict-word span{display:inline-block;animation:statPop .55s var(--ease)}

/* audit/lab equity curves drawn by app.js drawCurve() */
.eq-zero{stroke:var(--line);stroke-dasharray:4}
.eq-line{stroke:var(--accent);stroke-width:2;fill:none}
.equity polyline,.equity line{animation:eqFade .5s var(--ease)}
@keyframes eqFade{from{opacity:0}to{opacity:1}}

/* progress bars ease instead of stepping */
.strategy-progress span{transition:width .45s var(--ease)}

/* armed-live pill breathes; monitor/dry pills stay still */
.pill.armed{animation:armedPulse 2.6s ease-in-out infinite}
@keyframes armedPulse{
  0%,100%{box-shadow:0 0 0 0 rgba(244,86,122,0)}
  50%{box-shadow:0 0 0 5px rgba(244,86,122,.12)}
}

/* status dot when connected */
.dot.ok{box-shadow:0 0 0 0 rgba(52,211,153,.35);animation:dotBreathe 3s ease-in-out infinite}
@keyframes dotBreathe{
  0%,100%{box-shadow:0 0 0 0 rgba(52,211,153,0)}
  50%{box-shadow:0 0 0 4px rgba(52,211,153,.14)}
}

/* detail rows unfold softly */
tr.detail-row>td{animation:detailIn .22s var(--ease)}
@keyframes detailIn{from{opacity:0}to{opacity:1}}

/* switches get the springier curve */
.track,.track::after{transition:.2s var(--ease)}

/* toasts/status lines fade in */
.err,#profile-status,.strategy-run-status{animation:eqFade .3s var(--ease)}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
}
