@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&display=swap";:root{--bg:#f2f1ed;--panel:#fff;--ink:#111;--line:#111;--line-soft:#dedcd5;--text-dim:#8a8a82;--text-mid:#55554e;--accent:#4a6fa1;--up:#1f8f4e;--down:#d43f3f;--shadow:#11111124;--mono:"IBM Plex Mono", "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace}[data-theme=dark]{--bg:#050505;--panel:#0b0c0d;--ink:#f5a623;--line:#6b4f14;--line-soft:#262115;--text-dim:#8a7a4f;--text-mid:#c99a2e;--accent:#d4af37;--up:#2ecc71;--down:#ff4d4d;--shadow:#f5a6231a}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--mono);-webkit-font-smoothing:antialiased;transition:background .15s,color .15s}#root{min-height:100vh}a{color:var(--accent)}.mono{font-family:var(--mono)}.uc{text-transform:uppercase;letter-spacing:1.5px}button{font-family:var(--mono);cursor:pointer}.wrap{max-width:1560px;margin:0 auto;padding:0 18px 40px}.topbar{border-bottom:2px solid var(--line);background:var(--bg);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.brand{align-items:center;gap:10px;display:flex}.brand-mark{border:1.5px solid var(--ink);justify-content:center;align-items:center;width:26px;height:26px;font-size:11px;font-weight:700;display:flex;transform:rotate(45deg)}.brand-mark span{transform:rotate(-45deg)}.brand-text{letter-spacing:3px;font-size:13px;font-weight:600}.brand-text b{color:var(--accent)}.top-right{color:var(--text-dim);align-items:center;gap:18px;font-size:11px;display:flex}.mode-pill{border:1px solid var(--line-soft);text-transform:uppercase;letter-spacing:1px;border-radius:12px;align-items:center;gap:6px;padding:3px 9px;font-size:9.5px;display:inline-flex}.mode-pill .dot{background:#b5851f;border-radius:50%;width:6px;height:6px}.mode-pill.mock{color:#8a6a1f;background:#fbf6e8;border-color:#d8c48f}.mode-pill.mock .dot{background:#c99a2e;box-shadow:0 0 5px #c99a2e}.mode-pill.live{color:#1f8f4e;background:#eef8f1;border-color:#b3ddc3}.mode-pill.live .dot{background:#22b45f;box-shadow:0 0 5px #22b45f}.clock{color:var(--text-dim);font-size:12px}.theme-toggle{border:1px solid var(--line-soft);color:var(--text-mid);letter-spacing:1px;text-transform:uppercase;background:0 0;border-radius:12px;padding:5px 10px;font-size:10px}.theme-toggle:hover{border-color:var(--ink);color:var(--ink)}[data-theme=dark] .mode-pill.mock{color:#e8c073;background:#16130a;border-color:#6b4f14}[data-theme=dark] .mode-pill.mock .dot{background:#f5a623;box-shadow:0 0 5px #f5a623}[data-theme=dark] .mode-pill.live{color:#2ecc71;background:#0a1710;border-color:#1c4d31}[data-theme=dark] .mode-pill.live .dot{background:#2ecc71;box-shadow:0 0 5px #2ecc71}.tape-outer{border-bottom:1px solid var(--line-soft);white-space:nowrap;background:#000;padding:7px 0;overflow:hidden}.tape{color:#eee;padding-left:100%;font-size:12px;animation:46s linear infinite scroll;display:inline-block}.tape:hover{animation-play-state:paused}@keyframes scroll{0%{transform:translate(0)}to{transform:translate(-100%)}}.tape-item{margin-right:34px;display:inline-block}.tape-item b{margin-right:6px}.tape-up{color:#4fd07a}.tape-down{color:#ff7a72}.notice{color:var(--text-mid);background:#fbf7ea;border:1px dashed #b7a262;margin:14px 0 0;padding:10px 14px;font-size:11px}.notice b{color:#8a6a1f}[data-theme=dark] .notice{background:#12100a;border-color:#6b4f14}[data-theme=dark] .notice b{color:#f5a623}.grid2{grid-template-columns:1fr 1fr;gap:16px;margin-top:16px;display:grid}@media (width<=980px){.grid2{grid-template-columns:1fr}}.stack{flex-direction:column;gap:16px;margin-top:16px;display:flex}.panel{background:var(--panel);border:2px solid var(--line);box-shadow:5px 5px 0 var(--shadow)}.panel-head{border-bottom:2px solid var(--line);justify-content:space-between;align-items:baseline;padding:11px 16px;display:flex}.panel-title{letter-spacing:3px;font-size:12px;font-weight:700}.panel-head-right{letter-spacing:1px;color:var(--accent);text-transform:uppercase;font-size:10px}.panel-tabs{letter-spacing:1px;color:var(--text-dim);text-transform:uppercase;gap:16px;font-size:10px;display:flex}.panel-tabs span:first-child{color:var(--ink)}table{border-collapse:collapse;width:100%;font-size:12.5px}thead th{text-align:right;color:var(--text-dim);letter-spacing:1px;text-transform:uppercase;border-bottom:1px solid var(--line-soft);padding:8px 16px;font-size:10px;font-weight:400}thead th:first-child{text-align:left}tbody td{text-align:right;vertical-align:middle;border-bottom:1px solid #efeee9;padding:8px 16px}tbody td:first-child{text-align:left}tbody tr{cursor:pointer}tbody tr:hover{background:#f7f6f2}tbody tr:last-child td{border-bottom:none}tbody tr.expanded td:first-child .sym-pill{background:var(--ink);color:#fff}[data-theme=dark] tbody td{border-bottom-color:#1c1808}[data-theme=dark] tbody tr:hover{background:#14110a}[data-theme=dark] tbody tr.expanded td:first-child .sym-pill{color:#050505}.sym-pill{padding:1px 6px;font-weight:700;display:inline-block}.name-sub{color:var(--text-dim);letter-spacing:.5px;margin-top:1px;font-size:10px;display:block}.val{font-weight:500}.chg-pos{color:var(--up)}.chg-neg{color:var(--down)}.arrow{margin-right:3px;font-size:9px}.bucket-tag{color:var(--text-dim);letter-spacing:.5px;margin-left:8px;font-size:9px}.panel-foot{color:var(--text-dim);border-top:1px solid var(--line-soft);flex-wrap:wrap;justify-content:space-between;gap:10px;padding:8px 16px;font-size:10px;display:flex}.spark-cell{width:130px}.spark{display:block}.spark-line{fill:none;stroke:var(--ink);stroke-width:1.3px}.spark-dot{fill:var(--ink)}.spark-ref{stroke:var(--line-soft);stroke-width:1px;stroke-dasharray:2 2}.expand-row td{cursor:default;background:#fbfbf9;padding:0}[data-theme=dark] .expand-row td{background:#0a0804}.expand-wrap{border-bottom:1px solid var(--line-soft);padding:18px 20px 20px}.expand-head{justify-content:space-between;align-items:baseline;margin-bottom:4px;display:flex}.expand-head .name{font-size:13px;font-weight:700}.expand-chart-svg{width:100%;height:180px;display:block}.price-line{fill:none;stroke:var(--ink);stroke-width:1.6px}.hi-ref{stroke:var(--line-soft);stroke-width:1px;stroke-dasharray:3 3}.chart-label{fill:var(--text-mid);font-size:12px;font-family:var(--mono)}.chart-endpoint{fill:var(--ink)}.session-label{color:var(--text-mid);text-transform:uppercase;letter-spacing:1px;margin:14px 0 8px;font-size:10.5px}.stat-row{flex-wrap:wrap;gap:30px;margin-bottom:14px;display:flex}.stat{flex-direction:column;gap:3px;display:flex}.stat label{color:var(--text-dim);text-transform:uppercase;letter-spacing:1px;font-size:9.5px}.stat b{font-size:13px}.range-wrap{margin-bottom:14px}.range-track{background:var(--ink);height:3px;margin:6px 0;position:relative}.range-tick{background:var(--ink);width:2px;height:11px;position:absolute;top:-4px}.range-ends{justify-content:space-between;font-size:11px;font-weight:600;display:flex}.collapse-hint{color:var(--text-mid);font-size:10.5px}.collapse-hint b{color:var(--accent);text-transform:uppercase;letter-spacing:.5px;cursor:pointer}.ta-block{border-top:1px dashed var(--line-soft);margin-top:6px;padding-top:14px}.ta-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;display:flex}.ta-ranges{gap:4px;display:flex}.ta-range-btn{border:1px solid var(--line-soft);color:var(--text-mid);letter-spacing:1px;text-transform:uppercase;background:0 0;padding:4px 9px;font-size:10px}.ta-range-btn.active{background:var(--ink);color:#fff;border-color:var(--ink)}[data-theme=dark] .ta-range-btn.active{color:#050505}.ta-legend{flex-wrap:wrap;gap:14px;font-size:10.5px;display:flex}.ta-legend .swatch{vertical-align:-1px;width:9px;height:9px;margin-right:5px;display:inline-block}.ta-price-line{fill:none;stroke:var(--ink);stroke-width:1.5px}.ta-sma50{fill:none;stroke:#b5851f;stroke-width:1.3px}.ta-sma200{fill:none;stroke:var(--accent);stroke-width:1.3px}.ta-rsi-line{fill:none;stroke:var(--ink);stroke-width:1.2px}.ta-rsi-ref{stroke:var(--line-soft);stroke-width:1px;stroke-dasharray:2 2}.ta-rsi-label{fill:var(--text-dim);font-size:11px;font-family:var(--mono)}.add-symbol{border:2px solid var(--line);background:var(--panel);box-shadow:5px 5px 0 var(--shadow);margin-top:16px;padding:12px 16px}.add-symbol-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.add-symbol input{font-family:var(--mono);border:1px solid var(--line-soft);min-width:260px;color:var(--ink);background:#fff;outline:none;padding:7px 10px;font-size:12px}.add-symbol input:focus{border-color:var(--ink)}.add-symbol-btn{border:1px solid var(--ink);color:var(--ink);letter-spacing:1px;text-transform:uppercase;background:0 0;padding:7px 14px;font-size:11px}.add-symbol-btn:hover{background:var(--ink);color:#fff}.add-symbol-btn:disabled{opacity:.35;cursor:not-allowed}.file-input-hidden{display:none}.file-picker-name{font-family:var(--mono);color:var(--text-dim);flex:1;min-width:100px;font-size:11px}.add-symbol-results{border-top:1px solid var(--line-soft);margin-top:8px}.add-symbol-result{border-bottom:1px solid #efeee9;justify-content:space-between;padding:7px 2px;font-size:12px;display:flex}.add-symbol-result button{border:1px solid var(--line-soft);text-transform:uppercase;letter-spacing:1px;background:0 0;padding:3px 8px;font-size:10px}.add-symbol-result button:hover{background:var(--ink);color:#fff;border-color:var(--ink)}.remove-x{color:var(--down);cursor:pointer;margin-left:8px;font-size:11px}.ccy-switch{gap:3px;display:inline-flex}.ccy-switch button{border:1px solid var(--line-soft);color:var(--text-dim);font-family:var(--mono);letter-spacing:.5px;cursor:pointer;background:0 0;padding:2px 6px;font-size:9.5px}.ccy-switch button.active{background:var(--ink);color:#fff;border-color:var(--ink)}[data-theme=dark] .ccy-switch button.active{color:#050505}.share-classes{border-top:1px dashed var(--line-soft);margin-top:14px;padding-top:4px}.share-class-row{border-bottom:1px solid #efeee9;grid-template-columns:44px 1fr auto auto;align-items:baseline;gap:14px;padding:4px 0;font-size:12px;display:grid}[data-theme=dark] .share-class-row{border-bottom-color:#1c1808}.share-class-ccy{letter-spacing:1px;font-weight:700}.share-class-isin{color:var(--text-dim);font-size:11px}[data-theme=dark] .add-symbol input{background:#0c0a06}[data-theme=dark] .add-symbol-btn:hover{color:#050505}[data-theme=dark] .add-symbol-result{border-bottom-color:#1c1808}[data-theme=dark] .add-symbol-result button:hover{color:#050505}.footer{border-top:2px solid var(--line);color:var(--text-dim);flex-wrap:wrap;justify-content:space-between;gap:8px;margin-top:22px;padding-top:14px;font-size:10.5px;display:flex}.footer b{color:var(--ink)}.table-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}@media (width<=640px){.wrap{padding:0 10px 24px}.topbar{flex-direction:column;align-items:flex-start;gap:10px;padding:12px}.top-right{flex-wrap:wrap;gap:8px;width:100%}.clock{display:none}.grid2{gap:12px}.panel-head{flex-wrap:wrap;gap:6px;padding:10px 12px}.panel-tabs{display:none}table{font-size:11.5px}thead th,tbody td{padding:7px 9px}.hide-mobile{display:none}.name-sub{font-size:9px}.stat-row{gap:16px 24px}.add-symbol input{width:100%;min-width:0}.add-symbol-row{flex-direction:column;align-items:stretch}.footer{flex-direction:column}}.login-wrap{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-panel{background:var(--panel);border:2px solid var(--line);width:100%;max-width:340px;box-shadow:6px 6px 0 var(--shadow);padding:26px 24px}.login-brand{align-items:center;gap:10px;margin-bottom:4px;display:flex}.login-brand .brand-mark{width:26px;height:26px}.login-brand .brand-text{letter-spacing:3px;font-size:13px;font-weight:600}.login-brand .brand-text b{color:var(--accent)}.login-sub{color:var(--text-dim);letter-spacing:1px;margin-bottom:22px;font-size:9.5px}.login-field{margin-bottom:14px;display:block}.login-field span{color:var(--text-dim);text-transform:uppercase;letter-spacing:1px;margin-bottom:5px;font-size:9.5px;display:block}.login-field input{width:100%;font-family:var(--mono);border:1px solid var(--line-soft);color:var(--ink);background:#fff;outline:none;padding:9px 10px;font-size:13px}[data-theme=dark] .login-field input{background:#0c0a06}.login-field input:focus{border-color:var(--ink)}.login-error{color:var(--down);margin-bottom:14px;font-size:11px}.login-submit{text-align:center;width:100%;margin-top:4px;padding:10px 14px}.upload-status-ok{color:var(--up);width:100%;margin-top:8px;font-size:11px}.logout-btn{border:1px solid var(--line-soft);color:var(--text-mid);letter-spacing:1px;text-transform:uppercase;background:0 0;border-radius:12px;padding:5px 10px;font-size:10px}.logout-btn:hover{border-color:var(--down);color:var(--down)}
