:root{--bg:#f6f7f9;--surface:#fff;--surface-soft:#f0f3f5;--surface-strong:#e6eaee;--text:#171717;--muted:#667085;--faint:#98a2b3;--border:#d9dee5;--accent:#246bfe;--accent-soft:#e8efff;--green:#168a6a;--green-soft:#e4f5ef;--orange:#c25b2a;--orange-soft:#fce9df;--red:#b42318;--red-soft:#fee4e2;--shadow:0 8px 24px #11182712;--radius:8px;--font:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-family:var(--font);color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:0}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}button{cursor:pointer}a{color:inherit}#root{min-height:100vh}.app-shell{width:100%;max-width:none;margin:0;padding:24px clamp(20px,2vw,40px) 32px}.topbar{justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;display:flex}.identity{align-items:center;gap:14px;min-width:0;display:flex}.brand-mark{color:#fff;background:var(--text);border-radius:8px;flex:none;place-items:center;width:42px;height:42px;font-weight:760;display:grid}h1,h2,p{margin:0}h1{font-size:28px;font-weight:760;line-height:1.05}h2{font-size:17px;font-weight:720;line-height:1.2}.status-row{flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;display:flex}.status-chip{border:1px solid var(--border);min-height:24px;color:var(--muted);background:var(--surface);border-radius:999px;align-items:center;gap:6px;padding:3px 8px;font-size:12px;display:inline-flex}.header-actions{flex:none;align-items:center;gap:10px;display:flex}.icon-button{border:1px solid var(--border);width:40px;height:40px;color:var(--text);background:var(--surface);border-radius:8px;place-items:center;display:inline-grid}.icon-button:hover{border-color:var(--accent);color:var(--accent)}.switch-control{border:1px solid var(--border);height:40px;color:var(--muted);background:var(--surface);-webkit-user-select:none;user-select:none;border-radius:8px;align-items:center;gap:8px;padding:0 10px;font-size:13px;display:inline-flex}.switch-control input{opacity:0;pointer-events:none;position:absolute}.switch-track{background:var(--surface-strong);border-radius:999px;align-items:center;width:38px;height:20px;padding:2px;display:inline-flex}.switch-control input:checked+.switch-track{background:var(--accent)}.switch-thumb{width:16px;height:16px;color:var(--muted);background:var(--surface);border-radius:50%;place-items:center;transition:transform .16s;display:grid;transform:translate(0)}.switch-control input:checked+.switch-track .switch-thumb{color:var(--accent);transform:translate(18px)}.metrics-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:14px;display:grid}.metric-card{border:1px solid var(--border);background:var(--surface);min-height:132px;box-shadow:var(--shadow);border-radius:8px;align-items:flex-start;gap:12px;padding:16px;display:flex}.metric-icon{width:34px;height:34px;color:var(--accent);background:var(--accent-soft);border-radius:8px;flex:none;place-items:center;display:grid}.metric-card span,.metric-card small{color:var(--muted);font-size:12px;display:block}.metric-card strong{color:var(--text);overflow-wrap:anywhere;margin:8px 0 4px;font-size:25px;font-weight:760;line-height:1.05;display:block}.metric-card.tone-positive small{color:var(--green)}.metric-card.tone-negative small{color:var(--red)}.protocol-scale-panel,.trading-demand-panel,.boros-panel,.boros-revenue-panel,.revenue-panel,.valuation-panel,.spendle-panel{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:8px;margin-bottom:14px;overflow:hidden}.demand-chart-layout{grid-template-columns:minmax(260px,.42fr) minmax(0,1fr);gap:14px;padding:14px;display:grid}.demand-summary-list{gap:10px;display:grid}.demand-summary-row{border:1px solid var(--border);background:var(--bg);border-radius:8px;align-content:center;gap:6px;min-height:86px;padding:14px;display:grid}.demand-summary-row strong,.demand-summary-row span,.demand-summary-row small{display:block}.demand-summary-row strong{color:var(--muted);font-size:12px}.demand-summary-row span{color:var(--text);overflow-wrap:anywhere;font-size:22px;font-weight:760;line-height:1.05}.demand-summary-row small{color:var(--muted);font-size:12px}.demand-chart{border:1px solid var(--border);background:var(--bg);border-radius:8px;height:278px;padding:10px 10px 12px 0}.demand-footnote{border-top:1px solid var(--border);color:var(--muted);justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;font-size:12px;display:flex}.boros-content{grid-template-columns:minmax(260px,.42fr) minmax(0,1fr);gap:14px;padding:14px;display:grid}.boros-chart{border:1px solid var(--border);background:var(--bg);border-radius:8px;height:278px;padding:10px 10px 12px 0}.revenue-content{grid-template-columns:minmax(280px,.42fr) minmax(0,1fr);gap:14px;padding:14px;display:grid}.revenue-kpis{gap:10px;display:grid}.revenue-chart{border:1px solid var(--border);background:var(--bg);border-radius:8px;height:300px;padding:10px 10px 12px 0}.valuation-kpis{grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;padding:14px;display:grid}.protocol-scale-content{grid-template-columns:minmax(420px,.75fr) minmax(0,1.25fr);gap:14px;padding:14px;display:grid}.scale-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.chain-tvl-panel{border:1px solid var(--border);background:var(--bg);border-radius:8px;padding:14px}.mini-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.mini-heading h3{margin:0;font-size:15px;line-height:1.2}.mini-heading span{color:var(--muted);font-size:12px}.chain-tvl-list{gap:10px;display:grid}.chain-tvl-row{grid-template-columns:minmax(160px,1fr) minmax(120px,2fr) 58px;align-items:center;gap:10px;display:grid}.chain-tvl-main{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.chain-tvl-main span{min-width:0;color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:680;overflow:hidden}.chain-tvl-main strong,.chain-tvl-row small{color:var(--muted);flex:none;font-size:12px;font-weight:640}.chain-tvl-track{background:var(--surface-strong);border-radius:999px;height:8px;overflow:hidden}.chain-tvl-track span{border-radius:inherit;background:var(--accent);height:100%;display:block}.spendle-content{grid-template-columns:minmax(460px,.9fr) minmax(0,1.4fr);gap:14px;padding:14px;display:grid}.spendle-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.protocol-kpi{border:1px solid var(--border);background:var(--bg);border-radius:8px;align-items:flex-start;gap:12px;min-height:112px;padding:14px;display:flex}.protocol-kpi span,.protocol-kpi small{color:var(--muted);font-size:12px;display:block}.protocol-kpi strong{color:var(--text);overflow-wrap:anywhere;margin:8px 0 4px;font-size:22px;font-weight:760;line-height:1.05;display:block}.spendle-breakdown{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.spendle-chart{border:1px solid var(--border);background:var(--bg);border-radius:8px;grid-area:1/2/span 2;height:342px;min-height:100%;padding:10px 10px 12px 0}.control-band{border:1px solid var(--border);background:var(--surface);border-radius:8px;grid-template-columns:minmax(240px,1fr) repeat(3,minmax(150px,190px));align-items:end;gap:10px;margin-bottom:14px;padding:12px;display:grid}.search-box,.select-control{min-height:42px;color:var(--muted);align-items:center;gap:8px;display:flex}.search-box{border:1px solid var(--border);background:var(--bg);border-radius:8px;padding:0 12px}.search-box input{width:100%;min-width:0;color:var(--text);background:0 0;border:0;outline:0}.select-control{flex-direction:column;align-items:stretch;gap:4px}.select-control span{color:var(--muted);font-size:11px}.select-control select{border:1px solid var(--border);width:100%;height:42px;color:var(--text);background:var(--bg);border-radius:8px;padding:0 10px}.dashboard-grid{grid-template-columns:minmax(0,1.55fr) minmax(460px,.9fr);gap:14px;display:grid}.market-panel,.chart-panel,.transaction-panel,.selected-panel,.risk-panel{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:8px}.market-panel{min-width:0;overflow:hidden}.analysis-stack{gap:14px;min-width:0;display:grid}.section-heading{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;min-height:64px;padding:14px 16px;display:flex}.section-heading p{color:var(--muted);margin-top:4px;font-size:12px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;min-width:1180px}th,td{border-bottom:1px solid var(--border);text-align:right;vertical-align:middle;white-space:nowrap;padding:11px 12px}th{color:var(--muted);background:var(--surface-soft);font-size:12px;font-weight:680}th:first-child,td:first-child{text-align:left}tbody tr{transition:background .12s,box-shadow .12s}tbody tr:hover{background:var(--accent-soft)}tbody tr.is-selected{background:var(--green-soft);box-shadow:inset 3px 0 0 var(--green)}.market-name-cell{align-items:center;gap:10px;min-width:240px;display:flex}.market-name-cell img,.market-title-row img{object-fit:cover;border-radius:50%;flex:none;width:28px;height:28px}.market-name-cell strong,.market-name-cell small,td small{display:block}.market-name-cell strong{color:var(--text);font-size:13px}.market-name-cell small,td small{color:var(--muted);font-size:11px}.date-cell{color:var(--text);display:block}.selected-panel{padding:16px}.selected-title{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.market-title-row{align-items:center;gap:10px;min-width:0;display:flex}.market-title-row a{color:var(--muted);align-items:center;gap:5px;margin-top:4px;font-size:12px;text-decoration:none;display:inline-flex}.market-title-row a:hover{color:var(--accent)}.expiry-pill{color:var(--orange);background:var(--orange-soft);border-radius:999px;flex:none;align-items:center;gap:6px;padding:5px 8px;font-size:12px;font-weight:700;display:inline-flex}.market-kpis{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:10px;display:grid}.kpi{border:1px solid var(--border);background:var(--bg);border-radius:8px;min-height:62px;padding:10px}.kpi span{color:var(--muted);margin-bottom:6px;font-size:11px;display:block}.kpi strong{color:var(--text);font-size:15px;display:block}.token-strip{flex-wrap:wrap;gap:6px;display:flex}.token-strip span{border:1px solid var(--border);color:var(--muted);background:var(--surface-soft);border-radius:999px;padding:5px 8px;font-size:12px}.segmented-control{border:1px solid var(--border);background:var(--surface-soft);border-radius:8px;gap:4px;padding:3px;display:inline-flex}.segmented-control button{min-height:32px;color:var(--muted);background:0 0;border:0;border-radius:6px;align-items:center;gap:5px;padding:0 9px;font-size:12px;display:inline-flex}.segmented-control button.is-active{color:var(--accent);background:var(--surface);box-shadow:0 1px 4px #11182714}.chart-frame{height:320px;padding:12px 12px 16px 4px}.recharts-cartesian-grid line{stroke:var(--border)}.recharts-text{fill:var(--muted);font-size:12px}.transaction-list{max-height:430px;overflow:auto}.transaction-row{border-bottom:1px solid var(--border);grid-template-columns:118px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:62px;padding:12px 16px;display:grid}.transaction-row strong,.transaction-row small{display:block}.transaction-row small{color:var(--muted);margin-top:3px;font-size:11px}.transaction-row a{color:var(--muted);align-items:center;gap:5px;font-size:12px;text-decoration:none;display:inline-flex}.transaction-row a:hover{color:var(--accent)}.action-badge{border-radius:999px;justify-content:center;align-items:center;min-height:28px;padding:4px 8px;font-size:11px;font-weight:760;display:inline-flex}.action-badge.is-buy{color:var(--green);background:var(--green-soft)}.action-badge.is-sell{color:var(--red);background:var(--red-soft)}.action-badge.is-liquidity{color:var(--accent);background:var(--accent-soft)}.risk-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:14px;display:grid}.risk-list{display:grid}.risk-row{border:0;border-bottom:1px solid var(--border);min-height:48px;color:var(--text);text-align:left;background:0 0;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex}.risk-row:hover{background:var(--surface-soft)}.risk-row span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.risk-row strong{color:var(--muted);flex:none;font-size:12px}.empty-state{min-height:120px;color:var(--muted);place-items:center;font-size:13px;display:grid}.chart-empty{height:320px}.data-notice{border:1px solid var(--orange);color:var(--orange);background:var(--orange-soft);border-radius:8px;align-items:center;gap:8px;margin-bottom:14px;padding:10px 12px;font-size:13px;display:flex}.is-spinning{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width>=1600px){.app-shell{padding-inline:40px}.metrics-grid{gap:16px}.dashboard-grid{grid-template-columns:minmax(0,1.8fr) minmax(520px,.85fr);gap:16px}.risk-grid{gap:16px}.chart-frame,.chart-empty,.spendle-chart{height:390px}.revenue-chart,.boros-chart{height:360px}.transaction-list{max-height:500px}table{min-width:1320px}}@media (width>=2100px){.dashboard-grid{grid-template-columns:minmax(0,2fr) minmax(620px,.8fr)}.chart-frame,.chart-empty,.spendle-chart{height:440px}.revenue-chart,.boros-chart{height:410px}th,td{padding-inline:16px}}@media (width<=1280px){.metrics-grid,.valuation-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-grid,.protocol-scale-content,.boros-content,.revenue-content,.spendle-content{grid-template-columns:1fr}.spendle-chart{grid-area:auto}}@media (width<=820px){.app-shell{padding:16px}.topbar{flex-direction:column;align-items:flex-start}.header-actions{justify-content:space-between;width:100%}.metrics-grid,.risk-grid,.demand-chart-layout,.boros-content,.revenue-content,.valuation-kpis,.market-kpis,.scale-kpis,.spendle-metrics,.spendle-breakdown,.chain-tvl-row{grid-template-columns:1fr}.demand-footnote{flex-direction:column;align-items:flex-start}.control-band{grid-template-columns:1fr}.section-heading{flex-direction:column;align-items:flex-start}.transaction-row{grid-template-columns:1fr}.segmented-control{width:100%}.segmented-control button{flex:1 1 0;justify-content:center}}
