:root{--bg: #0a0c0f;--panel: #101317;--panel-nested: #14181d;--border: #1e242b;--text: #e6e8eb;--muted: #7d8590;--orange: #f59e2b;--green: #22c55e;--red: #ef4444;--alert-bg: #2a0f0f;--blue: #60a5fa;--purple: #a78bfa;--gray-band: #5b6470;--radius: 4px;--font-sans: "IBM Plex Sans", "Segoe UI", system-ui, -apple-system, sans-serif;--font-mono: "IBM Plex Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;--rail-w: 76px;--header-h: 52px;--footer-h: 30px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:13px;line-height:1.4;-webkit-font-smoothing:antialiased}button,input,select{font:inherit;color:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--orange);outline-offset:1px}a{color:var(--orange)}.label{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.mono,.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.green{color:var(--green)}.red{color:var(--red)}.orange{color:var(--orange)}.small{font-size:11px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;position:relative;min-width:0}.panel.nested{background:var(--panel-nested)}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.panel-title h3{margin:0;font-family:var(--font-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;font-weight:600}.bracket:before,.bracket:after{content:"";position:absolute;width:10px;height:10px;border-color:var(--orange);border-style:solid}.bracket:before{top:-1px;left:-1px;border-width:1px 0 0 1px}.bracket:after{bottom:-1px;right:-1px;border-width:0 1px 1px 0}.tag{display:inline-block;font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:2px 6px;border:1px solid var(--border);border-radius:var(--radius);color:var(--muted);white-space:nowrap}.tag.orange{color:var(--orange);border-color:var(--orange)}.tag.green{color:var(--green);border-color:var(--green)}.tag.red{color:var(--red);border-color:var(--red)}.tag.solid{background:var(--orange);color:#0a0c0f;border-color:var(--orange);font-weight:600}.btn{background:var(--panel-nested);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:6px 10px;font-size:12px}.btn:hover{border-color:var(--muted)}.btn.primary{background:var(--orange);border-color:var(--orange);color:#0a0c0f;font-weight:600}.btn.danger{border-color:var(--red);color:var(--red)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.sm{padding:3px 7px;font-size:11px}.input{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:6px 8px;color:var(--text);width:100%}.input.mono{font-family:var(--font-mono)}select.input{width:auto}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}table{border-collapse:collapse;width:100%}th{text-align:left;font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:500;padding:6px;border-bottom:1px solid var(--border)}td{padding:6px;border-bottom:1px solid var(--border);vertical-align:middle}tr:last-child td{border-bottom:0}td.num,th.num{text-align:right}.shell{display:grid;grid-template-columns:var(--rail-w) 1fr;grid-template-rows:var(--header-h) 1fr var(--footer-h);height:100vh}.rail{grid-row:1 / span 3;background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;align-items:stretch}.rail .logo{height:var(--header-h);display:flex;align-items:center;justify-content:center;color:var(--orange);font-family:var(--font-mono);font-weight:600;border-bottom:1px solid var(--border)}.rail button{background:none;border:0;border-left:2px solid transparent;color:var(--muted);padding:14px 4px;font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;display:flex;flex-direction:column;align-items:center;gap:6px}.rail button .glyph{font-size:16px;line-height:1}.rail button.active{color:var(--orange);border-left-color:var(--orange);background:var(--panel-nested)}.rail .spacer{flex:1}.header{grid-column:2;display:flex;align-items:center;gap:18px;padding:0 16px;border-bottom:1px solid var(--border);background:var(--panel)}.header .brand{font-family:var(--font-mono);font-size:18px;letter-spacing:.2em;font-weight:600}.header .brand .thin{color:var(--muted);font-weight:400;margin-right:10px}.header .sub{display:flex;flex-direction:column;gap:1px}.header .right{margin-left:auto;display:flex;align-items:center;gap:10px}.header .clock{font-family:var(--font-mono);font-size:12px;color:var(--muted)}.main{grid-column:2;overflow:auto;padding:12px 16px;display:flex;flex-direction:column;gap:10px}.footer{grid-column:2;display:flex;align-items:center;gap:0;border-top:1px solid var(--border);background:var(--panel);overflow-x:auto}.footer .cell{padding:0 12px;height:100%;display:flex;align-items:center;gap:6px;border-right:1px solid var(--border);font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);white-space:nowrap}.dot{width:6px;height:6px;border-radius:50%;background:var(--muted);display:inline-block}.dot.green{background:var(--green)}.dot.red{background:var(--red)}.dot.orange{background:var(--orange)}.session-row{display:grid;grid-template-columns:1fr auto;gap:10px}.session-row .headline{font-size:22px;font-weight:600;margin:2px 0}.session-row .crumbs{color:var(--muted)}.session-row .crumbs b{color:var(--text);font-weight:500}.session-row .actions{display:flex;align-items:center;gap:10px}.alert-strip{border:1px solid var(--red);background:var(--alert-bg);color:#fca5a5;padding:8px 12px;border-radius:var(--radius)}.alert-strip.warn{border-color:var(--orange);background:#2a1c0a;color:#fcd9a6}.alert-strip.ok{border-color:var(--border);background:var(--panel);color:var(--muted)}.kpi-strip{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel)}.kpi{padding:10px 14px;border-right:1px solid var(--border);min-width:0}.kpi:last-child{border-right:0}.kpi .value{font-family:var(--font-mono);font-size:22px;font-weight:600;margin:4px 0 2px;font-variant-numeric:tabular-nums}.kpi .value.unset{color:var(--orange);font-size:16px}.kpi .sub{color:var(--muted);font-size:11px}.grid-main{display:grid;grid-template-columns:340px minmax(0,1fr) 360px;gap:10px;align-items:start}.center{display:flex;flex-direction:column;gap:10px;min-width:0}.right{display:flex;flex-direction:column;gap:10px}.chart-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.chart-head .sym{font-size:20px;font-weight:600}.chart-head .price{margin-left:auto;font-family:var(--font-mono);font-size:20px;color:var(--orange);font-weight:600}.chart-legend{display:flex;gap:12px;flex-wrap:wrap;font-family:var(--font-mono);font-size:10px;color:var(--muted);letter-spacing:.06em}.chart-legend .sw{display:inline-block;width:14px;height:2px;vertical-align:middle;margin-right:4px}.chart-box{position:relative;width:100%;height:320px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg)}.chart-box.macd{height:110px}.chart-box .overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:flex;align-items:center;justify-content:center;color:var(--muted);font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;background:#0a0c0fb3;pointer-events:none;text-align:center;padding:20px}.chart-foot{display:flex;gap:14px;font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);flex-wrap:wrap}.empty{display:flex;flex-direction:column;align-items:center;gap:6px;padding:26px 10px;text-align:center;color:var(--muted)}.empty .icon{width:28px;height:28px;border:1px dashed var(--muted);border-radius:50%}.empty b{color:var(--text);font-weight:600}.wl-row{cursor:pointer}.wl-row.selected td{background:var(--panel-nested)}.wl-row .sym{font-weight:600}.wl-form{display:flex;gap:6px;margin-bottom:8px}.wl-form .input{width:110px;text-transform:uppercase}.err{color:var(--red);font-size:12px;margin:4px 0}.ok-msg{color:var(--green);font-size:12px;margin:4px 0}.center-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.card{width:100%;max-width:440px}.card h1{font-family:var(--font-mono);letter-spacing:.2em;font-size:18px;margin:0 0 4px}.card p{color:var(--muted);margin:0 0 14px}.page{display:flex;flex-direction:column;gap:10px}.page h2{margin:0;font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;font-size:14px}.kv{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px}.kv .label{align-self:center}pre{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:10px;overflow:auto;font-family:var(--font-mono);font-size:11px;max-height:320px}.status-ok{color:var(--green)}.status-fail{color:var(--orange)}.status-error{color:var(--red)}.status-skipped{color:var(--muted)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}.modal{width:100%;max-width:760px;max-height:90vh;overflow:auto}.drawer-toggle{display:none}@media (max-width: 1280px){.grid-main{grid-template-columns:300px minmax(0,1fr)}.right{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr 1fr}.kpi-strip{grid-template-columns:repeat(3,minmax(0,1fr))}.kpi:nth-child(3){border-right:0}}@media (max-width: 900px){.shell{grid-template-columns:1fr;grid-template-rows:var(--header-h) 1fr auto var(--footer-h)}.rail{grid-row:3;grid-column:1;flex-direction:row;border-right:0;border-top:1px solid var(--border);overflow-x:auto}.rail .logo{display:none}.rail button{flex:1;border-left:0;border-top:2px solid transparent;padding:8px 2px}.rail button.active{border-top-color:var(--orange)}.rail .spacer{display:none}.header,.main,.footer{grid-column:1}.header .sub,.header .clock{display:none}.grid-main,.right{grid-template-columns:1fr}.kpi-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.session-row{grid-template-columns:1fr}.chart-box{height:240px}}
