:root{--vsc-bg: #1e1e1e;--vsc-panel: #252526;--vsc-bar: #333333;--vsc-topbar: #3c3c3c;--vsc-border: #2d2d2d;--vsc-text: #cccccc;--vsc-text-dim: #8a8a8a;--vsc-accent: #007acc;--vsc-hover: #2a2d2e;--vsc-active: #094771;--sig-green-fill: rgba(35, 134, 54, .18);--sig-red-fill: rgba(176, 42, 42, .18);--sig-green: #238636;--sig-red: #b02a2a;--delta-up: #3fb950;--delta-down: #f85149;--stale-warning: #e9a84c}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--vsc-bg);color:var(--vsc-text);font-family:-apple-system,Segoe UI,system-ui,sans-serif;font-size:13px}.app{display:flex;flex-direction:column;height:100vh}.topbar{display:flex;align-items:center;gap:8px;height:36px;min-height:36px;padding:0 10px;background:var(--vsc-topbar);border-bottom:1px solid var(--vsc-border);flex-shrink:0}.topbar .brand{font-weight:600;letter-spacing:.3px;color:#fff;margin-right:4px}.topbar .spacer{flex:1}.body{display:flex;flex:1;min-height:0;position:relative}.sidebar{width:200px;min-width:200px;background:var(--vsc-panel);border-right:1px solid var(--vsc-border);overflow-y:auto;flex-shrink:0}.sidebar.right{border-right:none;border-left:1px solid var(--vsc-border)}.sidebar::-webkit-scrollbar,.center::-webkit-scrollbar,.chart-scroll::-webkit-scrollbar{width:5px;height:5px}.sidebar::-webkit-scrollbar-track,.center::-webkit-scrollbar-track,.chart-scroll::-webkit-scrollbar-track{background:transparent}.sidebar::-webkit-scrollbar-thumb,.center::-webkit-scrollbar-thumb,.chart-scroll::-webkit-scrollbar-thumb{background:var(--vsc-bar);border-radius:3px}.sidebar::-webkit-scrollbar-thumb:hover,.center::-webkit-scrollbar-thumb:hover,.chart-scroll::-webkit-scrollbar-thumb:hover{background:var(--vsc-text-dim)}.sidebar h3{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--vsc-text-dim);padding:12px 14px 6px;margin:0}.sidebar-section{display:flex;flex-direction:column}.sidebar-config{border-top:1px solid var(--vsc-border);padding-bottom:10px}.config-row{display:flex;align-items:center;justify-content:space-between;padding:5px 14px;gap:8px}.config-label{font-size:12px;color:var(--vsc-text);white-space:nowrap;flex:1;cursor:help}.config-hint-icon{font-size:10px;color:var(--vsc-text-dim);cursor:help}.config-input{width:62px;padding:3px 6px;background:var(--vsc-bg);border:1px solid var(--vsc-bar);border-radius:3px;color:var(--vsc-text);font-size:12px;text-align:right;transition:border-color .12s}.config-input:focus,.config-input:focus-visible{outline:none;border-color:var(--vsc-accent);box-shadow:0 0 0 2px #007acc33}.config-input::-webkit-outer-spin-button,.config-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.config-input[type=number]{-moz-appearance:textfield}.config-apply{margin:8px 14px 0;width:calc(100% - 28px);padding:5px;font-size:12px}.config-apply.dirty{background:var(--vsc-accent);box-shadow:0 0 0 1px #007acc66}.center{flex:1;min-width:0;height:100%;overflow-x:auto;overflow-y:hidden;background:var(--vsc-bg)}.item{display:flex;align-items:center;gap:8px;padding:6px 14px;cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--vsc-text);transition:background .1s,color .1s;outline:none}.item:hover{background:var(--vsc-hover)}.item.active{background:var(--vsc-active)}.item:focus-visible{outline:2px solid var(--vsc-accent);outline-offset:-2px}.item .dot{width:14px;text-align:center;color:var(--vsc-text-dim)}.item.active .dot{color:#fff}.tf-row{display:flex;align-items:center;gap:6px;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.tf-row::-webkit-scrollbar{height:4px}.tf-row::-webkit-scrollbar-track{background:transparent}.tf-row::-webkit-scrollbar-thumb{background:var(--vsc-bar);border-radius:2px}.tf{flex-shrink:0;padding:3px 10px;border:1px solid var(--vsc-bar);border-radius:3px;background:transparent;color:var(--vsc-text-dim);cursor:pointer;font-size:12px;transition:background .1s,border-color .1s,color .1s}.tf:hover{border-color:var(--vsc-accent);color:var(--vsc-text)}.tf.active{background:var(--vsc-accent);border-color:var(--vsc-accent);color:#fff}.tf:focus-visible{outline:2px solid var(--vsc-accent);outline-offset:2px}.topbar-btn{font-size:14px;padding:3px 7px;border-color:var(--vsc-bar)}.topbar-btn.auto-on{color:var(--vsc-accent);border-color:var(--vsc-accent)}.updated-ago{font-size:10px;color:var(--vsc-text-dim);white-space:nowrap}.interval-select{background:transparent;border:1px solid var(--vsc-bar);border-radius:3px;color:var(--vsc-text-dim);font-size:11px;padding:2px 4px;cursor:pointer;transition:border-color .1s,color .1s}.interval-select:hover,.interval-select:focus{border-color:var(--vsc-accent);color:var(--vsc-text);outline:none}.grid{display:grid;gap:1px;height:100%;background:var(--vsc-border);min-width:min-content}.col-head{text-align:center;padding:6px 8px;background:var(--vsc-panel);color:var(--vsc-text-dim);font-size:11px;text-transform:uppercase;letter-spacing:.6px}.col-head-top{display:flex;align-items:center;justify-content:center;gap:6px}.price-readout{display:flex;align-items:baseline;justify-content:center;gap:5px;margin-top:3px;font-size:11px}.price-value{color:var(--vsc-text);font-weight:600;font-size:12px}.delta-up{color:var(--delta-up)}.delta-down{color:var(--delta-down)}@keyframes cellIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.cell{background:var(--vsc-bg);padding:4px;min-width:360px;min-height:0;position:relative;display:flex;flex-direction:column;animation:cellIn .18s ease-out;transition:opacity .25s}.cell-chart{flex:1;min-height:0;overflow:hidden}.chart-scroll{height:100%;overflow-x:auto;overflow-y:hidden}.cell.is-refreshing{opacity:.55}.cell-header{display:flex;align-items:center;justify-content:space-between;min-height:22px;padding:0 4px 2px}.cell-title{font-size:11px;color:var(--vsc-text-dim)}.cell-actions{display:flex;gap:3px;opacity:0;transition:opacity .15s}.cell:hover .cell-actions{opacity:1}@keyframes progress-slide{0%{width:0%;margin-left:0}50%{width:60%;margin-left:20%}to{width:0%;margin-left:100%}}.col-progress{height:2px;background:var(--vsc-accent);animation:progress-slide 1.4s ease-in-out infinite;border-radius:1px;position:absolute;top:0;left:0;right:0}.icon-btn{background:transparent;border:1px solid var(--vsc-border);border-radius:3px;color:var(--vsc-text-dim);cursor:pointer;font-size:10px;padding:2px 5px;transition:background .1s,border-color .1s,color .1s}.icon-btn:hover{background:var(--vsc-hover);border-color:var(--vsc-accent);color:var(--vsc-text)}.icon-btn:focus-visible{outline:2px solid var(--vsc-accent);outline-offset:1px}.badge{display:inline-block;font-size:10px;padding:1px 6px;border-radius:8px}.badge.green{background:var(--sig-green);color:#fff}.badge.red{background:var(--sig-red);color:#fff}.badge.neutral{background:#444;color:#ccc}.badge.signal-badge{color:#fff;font-weight:600;letter-spacing:.2px;margin-left:4px}.badge.signal-badge:first-child{margin-left:0}.signal-legend{border-top:1px solid var(--vsc-border);padding:10px 14px;font-size:10px;color:var(--vsc-text-dim);line-height:1.6;margin-top:4px}.signal-legend-title{text-transform:uppercase;letter-spacing:.5px;font-size:10px;margin-bottom:6px;color:var(--vsc-text-dim)}.leg-row{display:flex;align-items:center;gap:7px;margin-bottom:4px}.leg-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.leg-dot.green{background:var(--sig-green)}.leg-dot.red{background:var(--sig-red)}.leg-dot.neutral{background:#444}.sidebar-signals{border-top:1px solid var(--vsc-border);padding-top:4px}.sidebar-signals .item .leg-dot{margin-right:-2px}.signal-mode-toggle{display:flex;gap:6px;padding:8px 14px 4px}.btn-toggle{flex:1;padding:4px 0;font-size:11px;font-weight:600;letter-spacing:.4px;background:transparent;border:1px solid var(--vsc-bar);border-radius:3px;color:var(--vsc-text-dim);cursor:pointer;transition:background .1s,border-color .1s,color .1s}.btn-toggle:hover{border-color:var(--vsc-accent);color:var(--vsc-text)}.btn-toggle.active{background:var(--vsc-accent);border-color:var(--vsc-accent);color:#fff}.btn-toggle:focus-visible{outline:2px solid var(--vsc-accent);outline-offset:1px}.sidebar-rainbow{border-top:1px solid var(--vsc-border);padding-bottom:4px}.sidebar-signal-configs{border-top:1px solid var(--vsc-border);padding-bottom:10px}.signal-config-block{padding-top:6px;padding-bottom:4px;border-bottom:1px solid var(--vsc-border)}.signal-config-block:last-child{border-bottom:none}.signal-config-title{font-size:11px;font-weight:600;color:var(--vsc-text);padding:2px 14px 4px}.config-color{width:32px;height:22px;padding:0;border:1px solid var(--vsc-bar);border-radius:3px;background:transparent;cursor:pointer}.config-color::-webkit-color-swatch-wrapper{padding:2px}.config-color::-webkit-color-swatch{border:none;border-radius:2px}.zoom-row{background:var(--vsc-panel);border-top:1px solid var(--vsc-border);padding:4px 12px 6px;display:flex;align-items:center;gap:8px}.zoom-row input[type=range]{flex:1;accent-color:var(--vsc-accent);cursor:pointer;height:3px}.zoom-label{font-size:10px;color:var(--vsc-text-dim);white-space:nowrap}.freshness{font-size:10px;color:var(--vsc-text-dim);margin-top:2px;font-weight:400}.stale-warning{color:var(--stale-warning)}.provider-tag{opacity:.7;text-transform:lowercase}.notice{padding:24px 10px;text-align:center;color:var(--vsc-text-dim);font-size:12px}.error-notice{display:flex;flex-direction:column;align-items:center;gap:10px;padding:32px 16px}.notice-icon{font-size:22px;color:var(--stale-warning)}.notice-msg{color:var(--vsc-text-dim);font-size:12px;text-align:center;max-width:240px}.retry-btn{padding:4px 14px;font-size:11px;background:var(--vsc-bar);border:1px solid var(--vsc-border);border-radius:3px;color:var(--vsc-text);cursor:pointer;transition:background .1s,border-color .1s}.retry-btn:hover{background:var(--vsc-hover);border-color:var(--vsc-accent)}.empty-state{display:flex;align-items:center;justify-content:center;height:100%;color:var(--vsc-text-dim);text-align:center;padding:40px}@keyframes shimmer{0%{background-position:200% center}to{background-position:-200% center}}.skeleton{background:linear-gradient(90deg,var(--vsc-panel) 25%,var(--vsc-bar) 50%,var(--vsc-panel) 75%);background-size:200% 100%;animation:shimmer 1.6s infinite linear;border-radius:3px;min-height:80px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000c7;display:flex;align-items:center;justify-content:center;z-index:100;animation:fadeIn .15s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--vsc-bg);border:1px solid var(--vsc-border);border-radius:6px;width:92vw;max-width:1300px;overflow:hidden;display:flex;flex-direction:column}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--vsc-border);background:var(--vsc-panel);flex-shrink:0}.modal-title{font-size:11px;color:var(--vsc-text-dim);text-transform:uppercase;letter-spacing:.5px}.modal-actions{display:flex;gap:6px;align-items:center}.modal-body{flex:1;overflow:hidden}.login{display:flex;align-items:center;justify-content:center;height:100vh}.login-card{background:var(--vsc-panel);border:1px solid var(--vsc-border);border-radius:6px;padding:28px 32px;width:320px}.login-card h1{font-size:18px;margin:0 0 4px;color:#fff}.login-card p{margin:0 0 18px;color:var(--vsc-text-dim);font-size:12px}.login-card input{width:100%;padding:8px 10px;background:var(--vsc-bg);border:1px solid var(--vsc-bar);border-radius:3px;color:var(--vsc-text);font-size:13px;transition:border-color .12s}.login-card input:focus,.login-card input:focus-visible{outline:none;border-color:var(--vsc-accent);box-shadow:0 0 0 2px #007acc33}.btn{margin-top:14px;width:100%;padding:8px;background:var(--vsc-accent);border:none;border-radius:3px;color:#fff;font-size:13px;cursor:pointer;transition:background .1s}.btn:hover{background:#0a84d8}.btn:focus-visible{outline:2px solid var(--vsc-accent);outline-offset:2px}.btn.link{width:auto;background:transparent;color:var(--vsc-text-dim);padding:2px 6px;margin:0}.btn.link:hover{color:var(--vsc-text);background:transparent}.error{color:#f48771;font-size:12px;margin-top:10px}.drawer-backdrop{display:none}@media (max-width: 900px){.mobile-only{display:flex!important}.desktop-only{display:none!important}.sidebar{position:fixed;top:36px;bottom:0;left:0;z-index:50;transform:translate(-100%);transition:transform .22s ease-out;box-shadow:2px 0 12px #0006}.sidebar.open{transform:translate(0)}.sidebar.right{left:auto;right:0;transform:translate(100%);box-shadow:-2px 0 12px #0006}.sidebar.right.open{transform:translate(0)}.drawer-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:49}.grid{grid-template-columns:1fr!important}.cell{min-width:0!important}.topbar{padding:0 8px;gap:5px}.updated-ago,.interval-select{display:none}.zoom-row input[type=range]{height:28px}.login-card{max-width:calc(100vw - 32px);box-sizing:border-box}.modal-content{width:96vw;max-width:96vw;height:96vh;border-radius:0}.modal-body{overflow:hidden;display:flex;flex-direction:column}.icon-btn{min-height:32px;padding:6px 8px}.btn-toggle{min-height:30px}.config-color{width:40px;height:28px}}.mobile-only{display:none}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
