:root{
  --bg:#0e0d0c;--surface:#171513;--surface-2:#1f1c19;--line:#2c2723;--text:#f1ebe4;--muted:#9a8f84;
  --ember:#ff7a1a;--ember-2:#ffb347;--up:#5fd08a;--down:#ff5a4e;--warn:#f3c64b;
  --r:10px;--font:'Satoshi',system-ui,sans-serif;--mono:'JetBrains Mono',ui-monospace,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font:15px/1.45 var(--font);-webkit-font-smoothing:antialiased}
body{background:radial-gradient(1200px 500px at 10% -10%,rgba(255,122,26,.10),transparent 60%),var(--bg);min-height:100vh}
h1,h2,h3{margin:0;font-weight:700;letter-spacing:-.01em}
h1{font-size:20px}h2{font-size:14px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:500}
.top{display:flex;align-items:center;gap:16px;padding:14px 20px;border-bottom:1px solid var(--line);position:sticky;top:0;background:rgba(14,13,12,.9);backdrop-filter:blur(8px);z-index:5;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:12px}
.brand img{border-radius:9px;box-shadow:0 0 0 1px var(--line),0 0 24px rgba(255,122,26,.25)}
.sub{margin:0;color:var(--muted);font-size:12px}
.chips{display:flex;gap:6px;flex-wrap:wrap;flex:1}
.chip{font:500 11px/1 var(--mono);padding:6px 8px;border-radius:999px;border:1px solid var(--line);color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.chip.ok{color:var(--up);border-color:rgba(95,208,138,.35)}.chip.warn{color:var(--warn);border-color:rgba(243,198,75,.4)}.chip.bad{color:var(--down);border-color:rgba(255,90,78,.45)}
.btn{font:500 13px var(--font);color:var(--text);background:var(--surface-2);border:1px solid var(--line);padding:9px 14px;border-radius:8px;cursor:pointer;transition:background .15s,border-color .15s}
.btn:hover{border-color:#4a4038}.btn:focus-visible{outline:2px solid var(--ember);outline-offset:2px}
.btn.danger{background:#3a1512;border-color:#6b2a22;color:#ffd6d0}.btn.danger:hover{background:#4a1b16}
.btn.calm{background:#13301f;border-color:#245c3b;color:#c9f3d9}
.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding:18px 20px;max-width:1440px;margin:0 auto}
.kpis{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.kpi span{display:block;color:var(--muted);font-size:12px}
.kpi b{display:block;font:500 22px/1.2 var(--mono);margin-top:4px;font-variant-numeric:tabular-nums}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;min-width:0}
.span2{grid-column:span 2}
.card-h{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:10px}.card-h.mt{margin-top:16px}
.muted{color:var(--muted);font-size:12px}
#equity{width:100%;height:140px;display:block}
.ccy{display:grid;gap:8px}
.ccy-row{display:grid;grid-template-columns:42px 1fr 52px;align-items:center;gap:10px;font-family:var(--mono);font-size:13px}
.bar{position:relative;height:10px;background:var(--surface-2);border-radius:5px;overflow:hidden}
.bar::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--line)}
.bar i{position:absolute;top:0;bottom:0;border-radius:5px}
.tbl-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;color:var(--muted);font-weight:500;padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:8px;border-bottom:1px solid #221e1b;vertical-align:top}
td.num{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
td.why{color:var(--muted);font-size:12px;max-width:420px}
.pill{font:500 11px var(--mono);padding:3px 7px;border-radius:5px;text-transform:uppercase}
.pill.long{background:rgba(95,208,138,.12);color:var(--up)}.pill.short{background:rgba(255,90,78,.12);color:var(--down)}.pill.flat{color:var(--muted)}
.up{color:var(--up)}.down{color:var(--down)}
.list{list-style:none;margin:0;padding:0;display:grid;gap:2px;max-height:420px;overflow:auto}
.list li{padding:8px 0;border-bottom:1px solid #221e1b;font-size:13px}
.list li:last-child{border-bottom:0}
.news li{display:grid;grid-template-columns:52px 1fr;gap:10px}
.news .t{font-family:var(--mono);color:var(--muted);font-size:12px}
.news a{color:var(--text);text-decoration:none}.news a:hover{color:var(--ember-2)}
.news .meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px;font:12px var(--mono);color:var(--muted)}
.tag{padding:1px 6px;border-radius:4px;background:var(--surface-2)}
.mono{font-family:var(--mono)}.small{font-size:12px}
.cal-hi{color:var(--down)}.cal-med{color:var(--warn)}
.empty{color:var(--muted);font-size:13px;padding:12px 0}
dialog{background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:12px;padding:20px;width:min(420px,92vw)}
dialog::backdrop{background:rgba(0,0,0,.6)}
dialog input{width:100%;padding:10px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--text);font:14px var(--mono);margin:8px 0}
dialog .row{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}
.err{color:var(--down);font-size:13px;margin:4px 0}
.foot{color:var(--muted);font-size:12px;text-align:center;padding:10px 20px 24px}
.tabs{display:flex;gap:4px;flex-wrap:wrap}
.tab{font:500 12px var(--mono);padding:5px 9px;border-radius:6px;border:1px solid var(--line);background:transparent;color:var(--muted);cursor:pointer}
.tab[aria-selected=true]{color:var(--text);border-color:var(--ember);background:rgba(255,122,26,.12)}
.tab:focus-visible{outline:2px solid var(--ember);outline-offset:2px}
.chart{height:380px;width:100%;position:relative}
.legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px;font:12px var(--mono);color:var(--muted)}
.legend span{display:inline-flex;align-items:center;gap:6px}
.sw{display:inline-block;width:14px;height:3px;border-radius:2px}.sw.dash{height:0;border-top:2px dashed;background:none}
.pair-strat{margin-top:10px;padding:10px 12px;background:var(--surface-2);border-radius:8px;font-size:13px;display:grid;gap:4px}
.pair-strat b{font-family:var(--mono)}
.heat{display:grid;grid-template-columns:38px repeat(8,1fr);gap:2px;font:11px var(--mono)}
.heat .h{color:var(--muted);display:flex;align-items:center;justify-content:center;padding:4px 0}
.heat .c{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:4px;color:var(--text);font-variant-numeric:tabular-nums;min-width:0}
.heat .c.self{background:var(--surface-2);color:var(--line)}
.mt-s{margin:10px 0 0}
.desc{margin:0 0 10px;font-size:14px;color:var(--text);max-width:75ch}
.gates{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.gate{font:12px var(--mono);padding:4px 8px;border-radius:6px;background:var(--surface-2);color:var(--muted)}.gate b{color:var(--text);font-weight:500}
.model{margin-top:12px;font-size:12px;color:var(--muted);display:grid;gap:4px}.model b{color:var(--text)}
.md{font-size:13px;max-height:760px;overflow:auto}
.md h1{font-size:16px;margin:0 0 6px}.md h2{margin:14px 0 6px;font-size:12px}
.md p{margin:4px 0}.md ul{margin:4px 0;padding-left:18px}.md table{margin:4px 0 8px}
.md td,.md th{padding:5px 8px;font-family:var(--mono);font-size:12px}
.lesson-st{font:500 10px var(--mono);text-transform:uppercase;padding:2px 6px;border-radius:4px;margin-right:6px;background:var(--surface-2)}
.lesson-st.adopted{color:var(--up)}.lesson-st.testing{color:var(--warn)}.lesson-st.rejected{color:var(--down)}
@media (max-width:1000px){.grid{grid-template-columns:1fr 1fr}.span2{grid-column:1/-1}}
@media (max-width:640px){.grid{grid-template-columns:1fr;padding:12px}.kpis{grid-template-columns:1fr 1fr}.top{padding:12px}.chips{order:3;flex-basis:100%}.kpi b{font-size:18px}td.why{display:none}.chart{height:300px}.card-h{flex-wrap:wrap}.card-h h2{white-space:nowrap}.tabs{flex-wrap:nowrap;overflow-x:auto;width:100%;padding-bottom:2px}.tab{flex:none}#profiles td,#profiles th,#decisions td,#decisions th{padding:6px 5px}#profiles th:nth-child(5),#profiles td:nth-child(5),#decisions th:nth-child(5),#decisions td:nth-child(5){display:none}.heat{font-size:10px}.heat .c{font-size:9px}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

.banner{margin:12px 20px 0;padding:10px 14px;border:1px solid rgba(243,198,75,.4);color:var(--warn);border-radius:8px;font-size:13px;max-width:1400px}
/* v0.2: status orb, families, correlation */
.brand thinking-orb{width:32px;height:32px;flex:none;margin-left:6px}
.orb-lbl{white-space:nowrap}
.corr table.heat-t{border-collapse:separate;border-spacing:2px;width:100%;font:11px var(--mono)}
.corr th{color:var(--muted);font-weight:500;padding:4px;text-align:center;white-space:nowrap}
.corr td{text-align:center;padding:8px 4px;border-radius:4px;font-variant-numeric:tabular-nums;color:var(--text)}
#families td.why{max-width:280px}
@media (max-width:640px){.orb-lbl{display:none}#families th:nth-child(4),#families td:nth-child(4),#families th:nth-child(7),#families td:nth-child(7){display:none}}
.card.self-start{align-self:start}
.kpi b span{font:inherit;text-transform:none;letter-spacing:normal;margin:0}.kpi b .up{color:var(--up)}.kpi b .down{color:var(--down)}
/* v0.3: goals, change log, weekly review, RSI */
.span3{grid-column:1/-1}
.chart-ctl{display:flex;gap:8px;align-items:center;min-width:0}
#rsiBtn[aria-pressed=true]{color:var(--text);border-color:#c58cff;background:rgba(197,140,255,.12)}
.rsi{height:110px;width:100%;margin-top:6px;border-top:1px solid var(--line)}
.pill.warnp{background:rgba(243,198,75,.12);color:var(--warn)}
.chg-multi{color:var(--warn)}
#goals td.why{max-width:300px}
@media (max-width:640px){.chart-ctl{width:100%}.rsi{height:90px}#goals th:nth-child(5),#goals td:nth-child(5){display:none}#goals td,#goals th{padding:6px 5px}#goals th:nth-child(7){display:none}}
.btn:disabled{opacity:.55;cursor:not-allowed}
/* v0.4: login + crypto */
body.login{min-height:100vh;display:grid;place-items:center}
.login-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:28px;width:min(360px,92vw);display:grid;gap:12px;justify-items:start}
.login-card h1{margin:0}.login-card form{display:grid;gap:10px;width:100%}
.login-card input{font:500 15px var(--mono);padding:10px 12px;border-radius:8px;border:1px solid var(--line);background:var(--surface-2);color:var(--text);width:100%;box-sizing:border-box}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.navlinks{display:flex;gap:6px}.navlinks a{font:500 12px var(--mono);color:var(--muted);text-decoration:none;padding:6px 10px;border:1px solid var(--line);border-radius:999px}
.navlinks a[aria-current=page]{color:var(--text);border-color:var(--ember)}
.lock{min-height:100vh;display:grid;place-items:center}
.plain{list-style:none;padding:0;margin:6px 0;display:grid;gap:4px;font-size:13px}
html.locked body > :not(.lockscreen){visibility:hidden}
.lockscreen{position:fixed;inset:0;display:grid;place-items:center;background:var(--bg,#0e0d0c);z-index:50}
/* settings */
.settings{max-width:560px;margin:20px auto;padding:0 16px}
.pwform{display:grid;gap:8px;margin-top:8px}
.pwform label{font-size:13px;color:var(--muted)}
.pwform input{font:500 15px var(--mono);padding:10px 12px;border-radius:8px;border:1px solid var(--line);background:var(--surface-2);color:var(--text);width:100%;box-sizing:border-box}
.pwform input:focus-visible{outline:2px solid var(--ember);outline-offset:1px}
.pwform .btn{justify-self:start;margin-top:4px}
.ok{color:var(--up);font-size:13px;margin:4px 0}
.notes{margin:14px 0 0;padding-left:18px;display:grid;gap:4px}
.notes code{white-space:nowrap}.pwform p{margin:0 0 4px}
.nowrap{white-space:nowrap}.btn.calm:hover{background:#18402a}
.qs-link{font-size:12px;color:var(--ember);text-decoration:none;margin-left:auto}.qs-link:hover{text-decoration:underline}.qs-link[hidden]{display:none}
.warnp-t{color:var(--warn)}
/* v0.5.5: calendar + news event view */
.small-b{font-size:13px!important}
.kpi b.small-b{font-size:15px!important}
.tab[aria-pressed=true]{color:var(--text);border-color:var(--ember);background:rgba(255,122,26,.12)}
.ev-h{flex-wrap:wrap;gap:10px}.seg{display:flex;gap:6px}
.tgl{font:500 12px var(--mono);color:var(--muted);display:flex;gap:6px;align-items:center;cursor:pointer}
.tgl input{accent-color:var(--ember)}
.ccy-f{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}
.cchip{font:500 12px var(--mono);padding:4px 10px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--muted);cursor:pointer;min-height:30px}
.cchip[aria-pressed=true]{color:var(--text);border-color:var(--ember);background:rgba(255,122,26,.12)}.cchip.clr{border-style:dashed}
.day{margin-top:14px}.day h3{font:600 13px var(--font);margin:0 0 8px;letter-spacing:.02em}
.ev{display:grid;grid-template-columns:78px 1fr;gap:12px;padding:10px 12px;border:1px solid var(--line);border-left:3px solid var(--line);border-radius:8px;margin-bottom:6px;background:var(--surface-2)}
.ev.imp-high{border-left-color:var(--down)}.ev.imp-medium{border-left-color:var(--warn)}.ev.imp-low{border-left-color:var(--muted)}
.ev.past{opacity:.6}.ev.blackout{border-color:rgba(255,90,78,.55);background:rgba(255,90,78,.08)}.ev.soon{border-color:rgba(243,198,75,.45)}
.ev-t{display:grid;gap:2px;align-content:start}.ev-t b{font-size:16px}
.ev-l1{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center}
.ccy-c{font:600 12px var(--mono);padding:2px 7px;border-radius:5px;background:var(--surface);border:1px solid var(--line)}
.imp{font:500 10px var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.imp-high .imp{color:var(--down)}.imp-medium .imp{color:var(--warn)}
.ev-title{font-weight:600;font-size:14px}
.ev-st,.ev-x{font:600 10px var(--mono);letter-spacing:.06em;padding:2px 6px;border-radius:4px}
.ev.blackout .ev-st{background:var(--down);color:#0e0d0c}.ev.soon .ev-st{background:rgba(243,198,75,.18);color:var(--warn)}.ev.past .ev-st{color:var(--muted);background:var(--surface)}
.ev-x{background:rgba(255,122,26,.16);color:var(--ember-2)}
.ev-v{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;margin-top:4px}.ev-v i{font-style:normal;color:var(--muted);margin-right:3px}
.ev-a{font-size:13px;color:var(--muted);margin-top:4px}
.ev-news{margin-top:6px;font-size:13px}.ev-news summary{cursor:pointer;color:var(--ember-2);font:500 12px var(--mono)}
.ev-news ul{list-style:none;padding:0;margin:6px 0 0;display:grid;gap:6px}.ev-news li{display:flex;flex-wrap:wrap;gap:4px 8px}
.ev-news a{color:var(--text)}
table.wk{border-collapse:separate;border-spacing:3px;width:100%;font:12px var(--mono)}
.wk th{color:var(--muted);font-weight:500;padding:4px 6px;white-space:nowrap;text-align:center}.wk tbody th{text-align:left}
.wk td{background:var(--surface-2);border-radius:5px;height:30px;text-align:center;padding:2px 4px;white-space:nowrap}
.wk .today{outline:1px solid var(--ember);outline-offset:-1px}.wk th.today{color:var(--text);outline:none}
.dot{display:inline-block;min-width:18px;padding:1px 4px;border-radius:9px;font-size:11px;margin:0 1px}
.dot.hi{background:var(--down);color:#0e0d0c;font-weight:600}.dot.med{background:rgba(243,198,75,.22);color:var(--warn)}
@media (max-width:640px){.ev{grid-template-columns:58px 1fr;gap:8px;padding:9px}.ev-t b{font-size:14px}.seg{width:100%}.seg .tab{flex:1}}
.kpi b.mid-b{font-size:17px}
.ev-t span{white-space:nowrap}.ev{grid-template-columns:96px 1fr}
@media (max-width:640px){.ev{grid-template-columns:70px 1fr}.kpi b.mid-b{font-size:14px}.ev-t span{font-size:11px!important}}

/* v0.5.6 decision records */
.dr-bar { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; justify-content: space-between; margin: .5rem 0; }
.dr-tabs { display: flex; flex-wrap: wrap; gap: .25rem; }
.dr-tabs button { font: inherit; font-size: .8rem; padding: .3rem .65rem; border-radius: 999px; border: 1px solid var(--line); background: transparent; color: inherit; cursor: pointer; }
.dr-tabs button[aria-selected="true"] { background: var(--ember); color: #111; border-color: transparent; }
#drPair { font: inherit; font-size: .8rem; padding: .3rem .5rem; border-radius: 6px; background: transparent; color: inherit; border: 1px solid var(--line); }
.dr-list { list-style: none; margin: 0; padding: 0; max-height: 34rem; overflow: auto; }
.dr-rec { border-top: 1px solid var(--line); border-left: 3px solid transparent; }
.dr-rec.o-TRADED { border-left-color: var(--up); } .dr-rec.o-BLOCKED { border-left-color: var(--down); }
.dr-rec.o-SHADOW { border-left-color: #8a8fd8; } .dr-rec.o-SKIPPED { border-left-color: #6b7280; }
.dr-head { all: unset; box-sizing: border-box; width: 100%; cursor: pointer; display: grid; align-items: center; gap: .5rem;
  grid-template-columns: 3.2rem 4.6rem 3.4rem minmax(6rem, 1fr) 7rem 14rem 5.2rem; padding: .45rem .5rem; font-size: .85rem; }
.dr-head:focus-visible { outline: 2px solid var(--ember); outline-offset: -2px; }
.dr-head:hover { background: rgba(255,255,255,.03); }
.dr-strat { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--muted); }
.dr-strip { display: inline-flex; gap: 3px; }
.dr-dot { width: 9px; height: 9px; border-radius: 2px; background: #4b5563; display: inline-block; }
.dr-dot.s-pass { background: var(--up); } .dr-dot.s-block { background: var(--down); } .dr-dot.s-warn { background: var(--warn); } .dr-dot.s-info { background: #5b8def; }
.dr-out { font-weight: 600; font-size: .78rem; white-space: nowrap; }
.o-TRADED .dr-out { color: var(--up); } .o-BLOCKED .dr-out { color: var(--down); } .o-SHADOW .dr-out { color: #8a8fd8; }
.dr-r { text-align: right; font-variant-numeric: tabular-nums; }
.dr-body { padding: .25rem .75rem .75rem 1rem; font-size: .84rem; }
.dr-body p { margin: .35rem 0; }
.dr-checks { list-style: none; margin: 0; padding: 0; }
.dr-checks li { display: grid; grid-template-columns: 1.2rem 7.5rem 1fr; gap: .4rem; padding: .2rem 0; align-items: baseline; }
.dr-ic { font-weight: 700; text-align: center; }
.dr-checks .s-pass .dr-ic { color: var(--up); } .dr-checks .s-block .dr-ic { color: var(--down); } .dr-checks .s-warn .dr-ic { color: var(--warn); }
.dr-checks .s-info .dr-ic { color: #5b8def; } .dr-checks .s-skip { color: var(--muted); }
.dr-checks .s-block { background: rgba(255,90,78,.08); }
@media (max-width: 720px) {
  .dr-head { grid-template-columns: 2.8rem 4.2rem 1fr auto; row-gap: .2rem; }
  .dr-strat { grid-column: 1 / -1; order: 9; } .dr-strip { grid-column: 1 / 3; order: 10; } .dr-out { grid-column: 3 / 4; order: 11; } .dr-r { order: 12; }
  .dr-head .pill { justify-self: start; }
  .dr-checks li { grid-template-columns: 1.2rem 1fr; } .dr-checks li span:last-child { grid-column: 2; }
}

/* v0.5.7 losing-trade post-mortem */
.dr-pats { border: 1px solid var(--line); border-left: 3px solid var(--warn); border-radius: 6px; padding: .5rem .75rem; margin: .25rem 0 .5rem; font-size: .84rem; }
.dr-pats ul { margin: .3rem 0 0; padding-left: 1.1rem; } .dr-pats li { margin: .15rem 0; }
.dr-pats code, .dr-pm code { font-family: var(--mono); font-size: .78rem; }
.dr-pm { margin-top: .5rem; padding: .5rem .65rem; border-radius: 6px; background: rgba(255,90,78,.06); border: 1px solid rgba(255,90,78,.18); }
.dr-pm-tags { list-style: none; margin: .25rem 0; padding: 0; }
.dr-pm-tags li { padding: .2rem 0; display: grid; grid-template-columns: 6.5rem 1fr; gap: .5rem; align-items: baseline; }
.dr-pm-tags li > span:first-child { font: 500 10px var(--mono); text-transform: uppercase; color: var(--muted); }
.dr-pm-tags li > span.muted { grid-column: 2; }
.dr-r { white-space: nowrap; }
@media (max-width: 720px) { .dr-pm-tags li { grid-template-columns: 1fr; gap: .1rem; } .dr-pm-tags li > span.muted { grid-column: 1; } }
.dr-pm-tags li.cause { font-weight: 600; } .dr-pm-tags li.cause > span:first-child { color: var(--down); }
.dr-pm-flag { font: 500 10px var(--mono); padding: 1px 4px; border-radius: 4px; background: rgba(255,90,78,.14); color: var(--down); margin-left: .25rem; }
.dr-pm-tags .pm-l { font-weight: 400; } .dr-pm-tags li.cause .pm-l { font-weight: 600; }
