:root{color-scheme:dark;--bg:#0b1017;--panel:#111a24;--line:#26333f;--muted:#9aaaba;--text:#eaf1f6;--green:#7be5c0;--red:#f092a0;--amber:#d9ad63}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 85% 0,#172833 0,transparent 42%),var(--bg);color:var(--text);font:15px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.shell{max-width:1400px;margin:auto;padding:0 48px}header{height:94px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.brand{color:var(--text);text-decoration:none;font-size:15px;font-weight:750;letter-spacing:2px;display:flex;align-items:center;gap:12px}.brand-icon{background:var(--green);color:var(--bg);width:32px;height:32px;text-align:center;font-size:24px;border-radius:8px;line-height:29px}.version{color:var(--muted);font-size:9px;letter-spacing:1px;border:1px solid var(--line);padding:4px 7px;border-radius:4px;margin-left:6px}.offline{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:8px}.offline i{width:6px;height:6px;background:var(--green);border-radius:50%}.page-heading{display:flex;justify-content:space-between;align-items:center;padding:42px 0 30px}.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:700;color:var(--muted);margin:0 0 10px}h1{font-size:46px;font-weight:550;line-height:1.14;letter-spacing:-1.7px;margin:0}h1 span{color:var(--green)}.intro{color:var(--muted);font-size:14px;margin-right:38px}.data-banner{border:1px solid #665338;background:#282418;border-radius:8px;padding:12px 17px;display:flex;align-items:center;gap:18px;color:#d7c397;font-size:12px}.data-banner strong{font-size:10px;letter-spacing:1.4px;white-space:nowrap}.toolbar{display:flex;align-items:center;gap:22px;padding:25px 0}.control{display:flex;align-items:center;gap:14px}.control label{font-size:12px;color:var(--muted)}select,button,input{font:inherit}select{background:var(--panel);color:var(--text);border:1px solid #3b4a57;border-radius:6px;padding:10px 30px 10px 12px;font-size:12px}.contract-label{font-size:10px;letter-spacing:1px;color:var(--muted)}.contract-label span{margin:0 10px;color:#506170}.button,.icon-button{border:0;border-radius:6px;background:var(--green);color:#0b2420;padding:9px 17px;font-size:12px;font-weight:650;cursor:pointer}.button.secondary{background:transparent;border:1px solid #455462;color:var(--text)}#import-open{margin-left:auto}.dashboard{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden}.panel-heading{display:flex;justify-content:space-between;align-items:center;padding:23px 25px 14px}.panel-heading h2{font-size:18px;margin:0;font-weight:550}.last-price{text-align:right}.last-price strong{font-size:24px;letter-spacing:-1px;display:block}.last-price span{font-size:10px;color:var(--muted)}.legend{display:flex;gap:16px;padding:0 25px;font-size:10px;color:var(--muted);flex-wrap:wrap}.legend span{display:flex;align-items:center;gap:5px}.legend i{display:inline-block;width:12px;height:2px}.legend .fast{background:#8bd8e8}.legend .slow{background:#c7b8ff}.legend .zone{height:8px;background:#82632e}#chart-wrap{height:326px;padding:6px 12px 0;position:relative}#chart{width:100%;height:100%;overflow:visible}.chart-caption{font-size:10px;padding:0 25px 15px;color:var(--muted)}.replay{padding:17px 25px 20px;border-top:1px solid var(--line);background:#101923}.replay-top,.replay-bottom{display:flex;align-items:center;justify-content:space-between}.replay-top .eyebrow{margin:0}.replay-top span:last-child,.replay-bottom>span{font-size:10px;color:var(--muted)}input[type=range]{width:100%;accent-color:var(--green);margin:14px 0 15px;cursor:pointer}.replay-bottom>div{display:flex;gap:8px}.icon-button{background:#233340;color:var(--text);font-size:16px;padding:5px 13px}.signal-panel{padding:24px}.signal{display:flex;align-items:center;gap:10px;color:var(--amber);margin-top:23px}.signal h2{font-size:28px;letter-spacing:-1px;margin:0;font-weight:600}.signal>span{width:34px;height:34px;border:1px solid currentColor;border-radius:9px;display:grid;place-items:center;font-size:24px}.signal.buy,.signal.weak-buy{color:var(--green)}.signal.sell,.signal.weak-sell{color:var(--red)}.signal.insufficient{color:#a7b7c8}.signal-summary{color:var(--muted);font-size:12px;min-height:56px;margin-top:12px}.divider{height:1px;background:var(--line);margin:20px 0}h3{font-size:12px;font-weight:600;margin:0 0 10px}.reasons{list-style:none;padding:0;margin:0 0 23px;font-size:12px}.reasons li{padding-left:16px;position:relative;margin:9px 0;color:#c5d1dd}.reasons li:before{content:"·";position:absolute;left:0;color:var(--green)}.metrics{border-top:1px solid var(--line);padding-top:9px}.metrics>div{display:flex;justify-content:space-between;gap:10px;margin:11px 0;font-size:10px}.metrics span{color:var(--muted)}.metrics strong{font-weight:550;white-space:nowrap}.small-note{font-size:10px;color:var(--muted);line-height:1.7;margin:18px 0 0}.principles{display:grid;grid-template-columns:repeat(3,1fr);gap:34px;padding:33px 0}.principles article{position:relative;padding-left:37px}.principles article>span{position:absolute;left:0;top:0;color:#587180;font-size:12px}.principles h3{font-size:13px;margin-bottom:6px}.principles p{color:var(--muted);font-size:12px;margin:0}.rules{margin:0 0 24px}.rules summary{padding:17px 22px;font-size:12px;cursor:pointer;list-style:none}.rules summary span{float:right;color:var(--green)}#rules-content{padding:0 24px 22px;font-size:12px;color:#b8c8d5}#rules-content h3{margin-top:20px;color:var(--text)}#rules-content li{margin:7px 0}footer{padding:12px 0 36px;color:var(--muted);font-size:10px;max-width:930px}footer strong{color:#b1c1cd;font-weight:500}footer p{margin:6px 0}dialog{background:var(--panel);color:var(--text);border:1px solid #455665;border-radius:14px;max-width:530px;width:calc(100% - 30px);padding:30px}dialog::backdrop{background:#000b;backdrop-filter:blur(3px)}dialog h2{font-size:25px;letter-spacing:-.8px}dialog p{font-size:13px;color:var(--muted)}.close{position:absolute;right:16px;top:10px;background:none;color:var(--muted);border:0;font-size:25px;cursor:pointer}.format{font-family:monospace;font-size:10px;padding:14px;background:#0b1119;border-radius:7px;overflow:auto;white-space:nowrap}.checkbox{display:flex;gap:10px;font-size:12px;margin:20px 0}.checkbox input{align-self:flex-start;margin-top:5px;accent-color:var(--green)}.file-label{font-size:12px;display:block;margin-bottom:8px}input[type=file]{max-width:100%;font-size:11px}#import-message{color:var(--amber);font-size:12px}button:hover{filter:brightness(1.13)}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible,a:focus-visible{outline:2px solid var(--green);outline-offset:4px}[hidden]{display:none!important}
@media(max-width:1050px){.shell{padding:0 25px}.dashboard{grid-template-columns:minmax(0,1fr) 280px}.signal-panel{padding:20px}.signal h2{font-size:24px}.contract-label{display:none}.intro{margin-right:0}.legend{gap:10px}}
@media(max-width:760px){.shell{padding:0 16px}header{height:73px}.brand{font-size:12px;letter-spacing:1px;gap:8px}.version{display:none}.offline{font-size:10px}.page-heading{padding:28px 0 22px;display:block}h1{font-size:38px}.intro{font-size:12px;line-height:1.6;margin:18px 0 0}.intro br{display:none}.data-banner{align-items:flex-start;flex-direction:column;gap:4px;font-size:11px;padding:11px 13px}.toolbar{padding:18px 0;align-items:flex-end;gap:10px}.control{display:block;min-width:0;flex:1}.control label{display:block;font-size:10px;margin-bottom:5px}select{font-size:11px;width:100%;padding-left:9px}#import-open{font-size:10px;padding:11px 10px;white-space:nowrap}.dashboard{grid-template-columns:1fr;gap:16px}.panel-heading{padding:18px 17px 12px}.panel-heading h2{font-size:15px}.last-price strong{font-size:21px}.last-price span{font-size:8px}.eyebrow{font-size:9px}.legend{padding:0 17px;font-size:9px;gap:10px}.legend span:last-child{display:none}#chart-wrap{height:278px;padding:5px 8px 0}.chart-caption{padding:0 17px 14px;font-size:9px}.replay{padding:16px 17px}.replay-bottom>span{font-size:9px}.signal-panel{padding:21px}.signal{margin-top:13px}.signal h2{font-size:28px}.signal-summary{min-height:0}.metrics>div{font-size:12px}.reasons{margin-bottom:17px}.principles{gap:20px;grid-template-columns:1fr;padding:27px 0}.principles article{padding-left:34px}.rules summary{font-size:11px;padding:17px}.signal-panel .small-note{font-size:11px}.rules{margin-bottom:18px}}

.projection{padding:15px 25px;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}.projection-controls{display:flex;flex-wrap:wrap;gap:12px;align-items:center;color:var(--text)}.projection-controls label{display:flex;align-items:center;gap:6px}.projection-controls input{accent-color:var(--green)}.projection-controls select{font-size:11px;padding:5px 20px 5px 8px}.projection-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px}.buy-key,#projection-bands .buy,#projection-bands .weak-buy{color:var(--green)}.sell-key,#projection-bands .sell,#projection-bands .weak-sell{color:var(--red)}#projection-bands{max-height:135px;overflow:auto;padding-left:18px}#projection-bands li{margin:5px 0}#projection-bands .weak-buy,#projection-bands .weak-sell{list-style-type:circle}.projection-note{font-size:10px;margin-bottom:0}#projection-status{color:#d7c397}@media(max-width:760px){.projection{padding:14px 17px}.projection-controls{gap:10px}}

/* Muted, opaque time-cell fills keep historical states separate from outlined price bands. */
:root{--zone-weak-buy:#254f40;--zone-buy:#173d2e;--zone-weak-sell:#55323a;--zone-sell:#431f2a;--zone-chop:#2a281f}
.state-legend{margin-top:10px;gap:8px 14px}.state-legend strong{font-weight:600}.state-legend i{height:10px;width:14px;border:1px solid #71838d;border-radius:2px}.state-legend .weak-buy{background:var(--zone-weak-buy)}.state-legend .buy{background:var(--zone-buy)}.state-legend .weak-sell{background:var(--zone-weak-sell)}.state-legend .sell{background:var(--zone-sell)}.state-legend .chop{background:var(--zone-chop)}.state-legend .neutral{background:var(--panel)}.state-legend span:last-child{display:flex}

/* Added for Live Mode */
.status-tag {
    font-size: 0.75rem;
    padding: 3px 8px;
    border-radius: 4px;
    font-weight: 600;
}
.status-tag.demo {
    background: #e2e8f0;
    color: #475569;
}
.status-tag.connected {
    background: #e0e7ff;
    color: #4338ca;
}
.status-tag.live {
    background: #dcfce7;
    color: #15803d;
    animation: pulse 2s infinite;
}
@keyframes pulse {
    0% { opacity: 1; }
    50% { opacity: 0.7; }
    100% { opacity: 1; }
}

/* Research controls */
.risk-panel{margin-top:24px;border-top:1px solid #304251;padding-top:16px}.risk-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0}.risk-grid label{font-size:12px;color:#a8bac8}.risk-grid input{display:block;width:100%;min-width:0;margin-top:5px;padding:7px;background:#111e29;color:#e5eff5;border:1px solid #405566;border-radius:5px}.research-output{white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.6 monospace;margin:12px 0 20px;color:#c8dbe8}.toolbar{flex-wrap:wrap}.signal-panel{min-width:0}

.context-panel{padding:18px;margin:16px 0}.context-controls{display:flex;gap:16px;flex-wrap:wrap;margin:12px 0}.context-controls label{font-size:12px}.context-panel p{font-size:12px;color:#a8bac8}.context-panel details{margin:10px 0}

.orderbook{padding:20px 24px;margin:20px 0}.orderbook-head,.orderbook-actions,.orderbook-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.orderbook-head h2{font-size:17px;font-weight:550;margin:0}.orderbook-actions{font-size:11px;color:var(--muted)}.orderbook-note,.orderbook details p{font-size:11px;color:var(--muted);margin:12px 0}.orderbook-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:18px 0}.orderbook-grid>div{padding:12px;border:1px solid var(--line);border-radius:7px;background:#0e1720;min-width:0}.orderbook-grid span,.orderbook-grid small{display:block;color:var(--muted);font-size:10px}.orderbook-grid strong{display:block;font-size:20px;font-weight:550;margin:4px 0;overflow-wrap:anywhere}.orderbook-foot{font-size:11px;color:#d6c18f;border-top:1px solid var(--line);padding-top:12px}.orderbook details{margin-top:12px;font-size:11px;color:var(--muted)}.orderbook details summary{cursor:pointer}.orderbook button:disabled{opacity:.5;cursor:not-allowed}@media(max-width:760px){.orderbook{padding:16px}.orderbook-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

.ob-chart-visual{margin:0 20px 14px;padding:10px 14px;background:#0d1720;border:1px solid #263640;border-radius:8px}.ob-chart-title{display:flex;justify-content:space-between;align-items:center;gap:12px;color:var(--muted);font-size:9px;letter-spacing:.8px}.ob-chart-title span:last-child{letter-spacing:0;text-align:right}.ob-viz-row{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:14px;margin-top:8px}.ob-viz-side{min-width:0}.ob-viz-side>span{display:block;font-size:9px;color:var(--muted);letter-spacing:.8px}.ob-viz-side>strong{display:block;font-size:17px;font-variant-numeric:tabular-nums;line-height:1.4}.ob-viz-side.bid>strong,.ob-viz-side.bid small b{color:var(--green)}.ob-viz-side.ask>strong,.ob-viz-side.ask small b{color:var(--red)}.ob-viz-side.ask{text-align:right}.ob-viz-meter{height:5px;background:#27343e;border-radius:8px;overflow:hidden;margin:3px 0}.ob-viz-meter i{display:block;width:0;height:100%;transition:width .2s ease;border-radius:8px}.ob-viz-side.bid .ob-viz-meter i{background:var(--green)}.ob-viz-side.ask .ob-viz-meter i{background:var(--red);margin-left:auto}.ob-viz-side small{font-size:9px;color:var(--muted)}.ob-viz-side small b{font-weight:650}.ob-viz-gap{text-align:center;min-width:68px;border-left:1px solid #34424c;border-right:1px solid #34424c;padding:0 10px}.ob-viz-gap span{display:block;font-size:8px;letter-spacing:1px;color:var(--muted)}.ob-viz-gap strong{font-size:12px;white-space:nowrap;color:#e5d09b}@media(max-width:480px){.ob-chart-visual{margin:0 9px 12px;padding:9px}.ob-viz-row{gap:6px}.ob-viz-gap{min-width:55px;padding:0 4px}.ob-viz-side>strong{font-size:14px}.ob-chart-title{font-size:8px}}
.ob-viz-price-rail{height:15px;position:relative;margin:9px 6px 2px}.ob-viz-price-line{position:absolute;left:0;right:0;top:7px;height:1px;background:#44545f}.ob-viz-price-dot{position:absolute;top:2px;width:10px;height:10px;border-radius:50%;transform:translateX(-50%);transition:left .2s ease;border:2px solid #0d1720}.ob-viz-price-dot.bid{background:var(--green)}.ob-viz-price-dot.ask{background:var(--red)}
.flow-viz{margin-top:13px;padding-top:10px;border-top:1px solid #263640}.flow-viz-title{display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-size:9px;letter-spacing:.75px}.flow-viz-title span:last-child{text-align:right;letter-spacing:0}.flow-viz-bars{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:9px}.flow-viz-item{display:grid;grid-template-columns:minmax(70px,1fr) minmax(48px,1fr) auto;align-items:center;gap:8px;font-size:9px}.flow-viz-item>span{color:var(--muted);letter-spacing:.55px}.flow-viz-item>b{font-size:10px;font-weight:600;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.flow-viz-track{height:52px;background:#26343e;border-radius:6px;overflow:hidden;display:flex;align-items:flex-end}.flow-viz-track i{display:block;width:100%;height:0;min-height:0;transition:height .2s ease;border-radius:5px 5px 0 0}.flow-viz-item.buy b{color:var(--green)}.flow-viz-item.buy .flow-viz-track i{background:var(--green)}.flow-viz-item.sell b{color:var(--red)}.flow-viz-item.sell .flow-viz-track i{background:var(--red)}.flow-viz-item.atr b{color:#f2cf68}.flow-viz-item.atr .flow-viz-track i{background:#f2cf68}@media(max-width:520px){.ob-chart-visual{margin:0 9px 12px;padding:9px}.flow-viz-bars{grid-template-columns:1fr;gap:7px}.flow-viz-item{grid-template-columns:82px minmax(40px,1fr) 90px}.flow-viz-title{font-size:8px}}
