:root{--border: #e3e3e8;--bg: #fafafb;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:#1c1c1e}.app{display:flex;flex-direction:column;height:100vh}.toolbar{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;background:#fff;border-bottom:1px solid var(--border)}.brand{display:flex;align-items:baseline;gap:12px}.brand .ticker{font-weight:700;font-size:14px}.brand .title{color:#5b6bd6;font-size:13px}.toolbar-nav{display:flex;gap:4px}.view-tabs{display:flex;gap:2px;margin-left:10px;padding:2px;background:#f0f1f5;border-radius:7px}.view-tab{border:none;background:none;padding:4px 12px;font-size:12px;color:#44454a;cursor:pointer;border-radius:5px;font-weight:600}.view-tab.active{background:#fff;color:#2962ff;box-shadow:0 1px 2px #00000014}.view-tab.overview-tab{display:inline-flex;align-items:center;gap:5px}.view-tab.overview-tab svg{opacity:.7}.view-tab.overview-tab.active svg{opacity:1}.toolbar-item{background:none;border:none;padding:6px 10px;font-size:13px;color:#44454a;cursor:pointer;border-radius:6px}.toolbar-item:hover{background:#f0f1f5}.connect-menu{position:relative;display:inline-flex;align-items:center;gap:8px;margin-right:6px}.connect-btn{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;font:inherit;font-size:12px;font-weight:600;color:#fff;background:#2962ff;border:1px solid #2962ff;border-radius:6px;cursor:pointer}.connect-btn:hover{background:#1e4fd6}.connect-note{color:#2e7d32;font-size:12px;max-width:420px}.connect-pop{position:absolute;right:0;top:calc(100% + 4px);z-index:50;width:320px;background:#fff;border:1px solid var(--border);border-radius:6px;box-shadow:0 6px 20px #0000001f;padding:4px}.connect-pop button[role=menuitem]{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:8px 9px;font:inherit;background:none;border:0;border-radius:4px;cursor:pointer}.connect-pop button[role=menuitem]:hover{background:#f3f4f6}.connect-pop svg{flex:none}.connect-text{display:flex;flex-direction:column;gap:2px}.connect-text strong{font-size:12px;color:#1f2024}.connect-text span{font-size:11px;color:#6b6c72}.connect-foot{padding:6px 9px 4px;font-size:11px;color:#8a8b90;border-top:1px solid var(--border);margin-top:2px}.connect-foot code{font-size:10px}.picker{position:relative}.picker-trigger{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--border);background:#fff;border-radius:7px;padding:4px 9px;cursor:pointer;color:#44454a;font:inherit}.picker-trigger:hover,.picker-trigger.open{border-color:#b9c6f5;background:#f7f9ff}.picker-ticker{font-size:12px;font-weight:700;color:#1c1c1e}.picker-name{font-size:12px;color:#8a8b90}.picker-trigger svg{color:#9a9ba0}.picker-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:40;width:460px;max-width:92vw;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 32px #10111a29;overflow:hidden}.picker-search{display:flex;align-items:center;gap:8px;padding:9px 11px;border-bottom:1px solid var(--border);color:#9a9ba0}.picker-search input{flex:1;border:none;outline:none;font:inherit;font-size:13px;color:#1c1c1e;background:none}.picker-search kbd{font:inherit;font-size:10px;color:#9a9ba0;border:1px solid var(--border);border-radius:4px;padding:1px 5px;background:#fafafb}.picker-list{max-height:min(460px,62vh);overflow-y:auto;padding:4px}.picker-group-label{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#a0a1a6;padding:8px 9px 4px}.picker-row{display:flex;align-items:baseline;gap:9px;width:100%;border:none;background:none;text-align:left;cursor:pointer;padding:6px 9px;border-radius:6px;color:#1c1c1e}.picker-row.active{background:#eef2ff}.picker-row.current .row-ticker{color:#2962ff}.picker-row .row-ticker{font-size:12px;font-weight:700;min-width:68px;flex:none}.picker-row .row-name{font-size:12px;color:#45464b;flex:none}.picker-row .row-hint{font-size:11px;color:#a0a1a6;margin-left:auto;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:55%}.picker-row.all-row{border-bottom:1px solid var(--border);border-radius:6px 6px 0 0}.picker-empty{padding:20px 12px;font-size:12px;color:#8a8b90;text-align:center}.legend{display:flex;flex-wrap:wrap;gap:14px;padding:8px 14px;background:#fff;border-bottom:1px solid var(--border);font-size:12px}.legend-item{display:inline-flex;align-items:center;gap:6px;color:#45464b}.swatch{width:14px;height:12px;border-radius:2px;opacity:.85}.swatch.line{height:3px;border-radius:2px}.swatch.dot{width:10px;height:10px;border-radius:50%}.swatch.line.dashed{background-image:none;opacity:.9}.legend-item.est{font-style:italic;color:#6a6b70}.controls{display:flex;gap:16px;padding:6px 14px;background:#fff;border-bottom:1px solid var(--border);font-size:12px}.control{display:inline-flex;align-items:center;gap:6px;color:#45464b;cursor:pointer}.control input{cursor:pointer}.export-menu{position:relative;margin-left:auto;display:inline-flex;align-items:center;gap:8px}.export-btn{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;font:inherit;font-size:12px;color:#45464b;background:#fff;border:1px solid var(--border);border-radius:4px;cursor:pointer}.export-btn:hover{background:#f3f4f6}.export-note{color:#2e7d32;font-size:12px}.export-pop{position:absolute;right:0;top:calc(100% + 4px);z-index:50;width:300px;background:#fff;border:1px solid var(--border);border-radius:6px;box-shadow:0 6px 20px #0000001f;padding:4px}.export-pop button{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;padding:7px 9px;font:inherit;background:none;border:0;border-radius:4px;cursor:pointer}.export-pop button:hover{background:#f3f4f6}.export-pop strong{font-size:12px;color:#1f2024}.export-pop span{font-size:11px;color:#6b6c72}.export-foot{padding:6px 9px 4px;font-size:11px;color:#8a8b90;border-top:1px solid var(--border);margin-top:2px}.content{position:relative;flex:1;min-height:0;padding:8px}.content-scroll{overflow-y:auto;padding:0}.chart-wrap{position:relative;width:100%;height:100%}.chart-container{position:absolute;top:0;right:0;bottom:0;left:0}.overview{display:flex;flex-direction:column;gap:10px;padding:10px 12px 16px}.overview-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12px;color:#6b6c72}.overview-count{font-weight:600;color:#45464b}.overview-search{display:flex;align-items:center;gap:6px;color:#9a9ba0;background:#fff;border:1px solid var(--border);border-radius:7px;padding:4px 8px;min-width:190px}.overview-search input{border:none;outline:none;background:none;font:inherit;font-size:12px;color:#1c1c1e;width:100%}.clear-btn{border:none;background:none;color:#9a9ba0;cursor:pointer;font-size:15px;line-height:1;padding:0 2px}.clear-btn:hover{color:#1c1c1e}.cat-filters{display:flex;gap:4px;flex-wrap:wrap}.chip.on{background:#eef2ff;border-color:#b9c6f5;color:#2962ff}.empty-actions{display:flex;gap:8px}.phase-pill.none{border-color:var(--border);color:#a0a1a6;font-style:italic;font-weight:600}.hidden-chips{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.chip{border:1px solid var(--border);background:#fff;color:#45464b;border-radius:999px;padding:3px 10px;font-size:11px;font-weight:600;cursor:pointer;transition:background .12s ease,border-color .12s ease}.chip:hover{background:#f0f1f5;border-color:#cfd0d8}.chip.strong{background:#2962ff;border-color:#2962ff;color:#fff}.chip.strong:hover{background:#1e50e0;border-color:#1e50e0}.chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}@media (max-width: 980px){.chart-grid{grid-template-columns:minmax(0,1fr)}}.chart-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--border);border-radius:10px;overflow:hidden;box-shadow:0 1px 2px #10111a0a;transition:box-shadow .15s ease,border-color .15s ease}.chart-card:hover{box-shadow:0 4px 14px #10111a14;border-color:#d6d7de}.card-head{display:flex;align-items:center;gap:10px;padding:8px 8px 8px 10px;border-bottom:1px solid var(--border)}.card-id{display:flex;align-items:baseline;gap:7px;min-width:0;border:none;background:none;padding:0;cursor:pointer;text-align:left}.card-ticker{font-size:12px;font-weight:700;color:#1c1c1e;white-space:nowrap}.card-name{font-size:11px;color:#8a8b90;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-id:hover .card-ticker{color:#2962ff}.card-quote{display:flex;align-items:baseline;gap:8px;margin-left:auto}.card-price{font-size:13px;font-weight:700;color:#1c1c1e;white-space:nowrap}.card-unit{font-size:10px;font-weight:500;color:#8a8b90;margin-left:1px}.card-change{display:inline-flex;align-items:baseline;gap:4px;font-size:11px;font-weight:600;white-space:nowrap}.card-change.up{color:#1b8a72}.card-change.down{color:#d1453b}.card-window{font-size:9px;font-weight:600;color:#a0a1a6}.card-actions{display:flex;align-items:center;gap:4px}.phase-pill{font-size:10px;font-weight:700;padding:2px 7px;border-radius:999px;border:1px solid currentColor;background:#fff;white-space:nowrap}.phase-pill.provisional,.phase-pill.projected{font-style:italic;opacity:.7}.phase-pill.projected{border-style:dashed}.icon-btn{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border:none;background:none;color:#8a8b90;border-radius:5px;cursor:pointer}.icon-btn:hover{background:#f0f1f5;color:#1c1c1e}.icon-btn.danger:hover{background:#fdecea;color:#c62828}.card-body{position:relative;height:300px}@media (max-width: 980px){.card-body{height:260px}}.card-skeleton{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:12px;color:#a0a1a6;background:repeating-linear-gradient(-45deg,#fafafb 0,#fafafb 10px,#f4f4f7 10px,#f4f4f7 20px)}.card-body .phase-label,.card-body .halving-tag{display:none}.overview-empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:64px 16px;color:#6b6c72;font-size:13px;border:1px dashed var(--border);border-radius:10px;background:#fff}.overview-empty p{margin:0}.drawing-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3}.left-toolbar{position:absolute;left:0;top:0;z-index:5;display:flex;flex-direction:column;gap:2px;padding:4px;background:#ffffffeb;border:1px solid var(--border);border-left:none;border-top-right-radius:6px;border-bottom-right-radius:6px}.tool-btn{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border:none;background:none;color:#44454a;border-radius:5px;cursor:pointer}.tool-btn:hover:not(:disabled){background:#eef0f6;color:#1c1c1e}.tool-btn.active{background:#e3e9ff;color:#2962ff}.tool-btn:disabled{opacity:.32;cursor:default}.tool-sep{height:1px;background:var(--border);margin:3px 4px}.phase-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:2}.phase-region{position:absolute;top:0;bottom:0}.phase-region.provisional{background-image:repeating-linear-gradient(45deg,rgba(0,0,0,.035) 0 3px,transparent 3px 10px)}.phase-region.projected{background-image:repeating-linear-gradient(45deg,rgba(0,0,0,.07) 0 6px,transparent 6px 12px)}.phase-label{position:absolute;top:4px;left:50%;transform:translate(-50%);font-size:11px;font-weight:700;white-space:nowrap;color:#000000b3}.phase-region.provisional .phase-label{opacity:.75;font-style:italic}.phase-region.projected .phase-label{opacity:.5;font-style:italic}.phase-divider{position:absolute;top:0;bottom:0;width:1px;background:#00000040}.halving-line{position:absolute;top:0;bottom:0;width:2px;opacity:.85}.halving-tag{position:absolute;top:22px;left:3px;font-size:10px;font-weight:700;white-space:nowrap}.status{padding:24px;color:#6b6c72}.status.error{color:#c62828}.footer{padding:6px 14px;font-size:11px;color:#8a8b90;background:#fff;border-top:1px solid var(--border)}
