:root{--bg:#f6f5f2;--panel:#fff;--border:#e6e8ec;--text:#28323c;--heading:#0e1c2b;--muted:#5b6b7a;--accent:#12263d;--mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;color:var(--text);background:var(--bg);letter-spacing:0;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;line-height:1.5}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input{letter-spacing:0}button{font:inherit}.app-shell{min-height:100svh;color:var(--text);background:linear-gradient(180deg, #ffffffe6, #fff3 44%, #fff0), var(--bg);padding:clamp(16px,2.3vw,32px)}.topbar{background:#0a1b2e;border:1px solid #0a1b2e;border-radius:12px;justify-content:space-between;align-items:center;gap:16px;width:min(100%,1360px);margin:0 auto 20px;padding:18px 22px;display:flex}.brand-logo{flex:none;width:auto;height:30px}.topbar .brand h1{color:#fff}.topbar .brand p{color:#f5f1e8b3}.topbar .freshness{color:#f5f1e8d9;background:#ffffff0f;border-color:#f5f1e82e}.topbar .icon-button{color:#fff;background:#ffffff14;border-color:#f5f1e82e}.topbar .icon-button:hover{color:#fff;border-color:#f5f1e866}.brand,.top-actions,.freshness,.badge-row,.source-row,.source-row span,.link-row,.panel-title{align-items:center;display:flex}.brand{gap:13px;min-width:0}.brand-mark{color:#fafbfd;background:#12263d;border:1px solid #0a1b2e;border-radius:8px;flex:0 0 42px;justify-content:center;align-items:center;width:42px;height:42px;display:inline-flex}.brand h1,.section-heading h2,.panel-title h2{color:var(--heading);letter-spacing:0;margin:0}.brand h1{font-size:clamp(24px,2vw,31px);line-height:1.1}.brand p,.section-heading p{color:var(--muted);margin:4px 0 0;font-size:14px}.top-actions{flex:none;gap:10px}.freshness{min-height:36px;color:var(--muted);background:var(--panel);border:1px solid var(--border);white-space:nowrap;border-radius:8px;gap:7px;padding:0 12px;font-size:13px}.icon-button{width:38px;height:38px;color:var(--heading);background:var(--panel);border:1px solid var(--border);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.icon-button:hover,.position-card a:hover{color:#0a1b2e;border-color:#12263d}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.notice{border:1px solid var(--border);background:var(--panel);border-radius:8px;align-items:center;gap:10px;width:min(100%,1360px);margin:0 auto 16px;padding:12px 14px;display:flex}.notice.danger{color:#9d2d35;background:#fff6f6;border-color:#efc3c7}.page-tabs{gap:8px;width:min(100%,1360px);margin:0 auto 16px;display:flex}.page-tabs button{min-height:38px;color:var(--muted);background:var(--panel);border:1px solid var(--border);font:inherit;cursor:pointer;border-radius:8px;align-items:center;gap:7px;padding:0 13px;font-size:14px;font-weight:700;display:inline-flex}.page-tabs button:hover,.page-tabs button.active{color:#0a1b2e;background:#f1f4f8;border-color:#aab7c6}.summary-grid,.workspace,.dashboard-page,.movements-page,.tester-positions-page,.closed-positions-page,.sources-page{width:min(100%,1360px);margin:0 auto;display:grid}.summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px}.summary-tile,.dashboard-panel,.position-card,.tester-position-card,.closed-position-card,.movement-card,.panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 14px 34px #212c270e}.summary-tile{min-height:120px;padding:16px;overflow:hidden}.tile-icon{color:#244d8f;background:#eef1f7;border:1px solid #dde4ef;border-radius:8px;justify-content:center;align-items:center;width:34px;height:34px;margin-bottom:13px;display:inline-flex}.summary-tile span,.metric span,.wallet-row span,.allocation-row span,.position-card p,.summary-tile small,.metric small,.wallet-row small,.allocation-row small{color:var(--muted)}.summary-tile span,.summary-tile small,.metric span,.metric small{display:block}.summary-tile strong{color:var(--heading);overflow-wrap:anywhere;margin:4px 0 2px;font-size:clamp(24px,2vw,30px);line-height:1.08;display:block}.available-balance-band{border:1px solid var(--border);background:#fbfcfb;border-radius:8px;width:min(100%,1360px);margin:0 auto 16px;padding:16px;box-shadow:0 12px 28px #212c270b}.available-balance-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.available-balance-card{background:var(--panel);border:1px solid var(--border);border-radius:8px;min-width:0;padding:14px}.available-balance-card>div:first-child,.available-token-list div{justify-content:space-between;gap:10px;min-width:0;display:flex}.available-balance-card>div:first-child span,.available-balance-card p,.available-token-list span{color:var(--muted)}.available-balance-card>div:first-child strong,.available-token-list strong{color:var(--heading);text-align:right}.available-balance-card h3{color:var(--heading);margin:10px 0 2px;font-size:20px;line-height:1.15}.available-balance-card p{margin:0;font-size:13px}.available-token-list{border-top:1px solid var(--border);gap:8px;margin-top:12px;padding-top:12px;font-size:13px;display:grid}.dashboard-page,.movements-page,.tester-positions-page,.closed-positions-page,.sources-page{gap:12px}.dashboard-metric-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;display:grid}.dashboard-main-grid{grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);grid-template-areas:"categories chart""categories method";align-items:start;gap:12px;display:grid}.dashboard-panel{min-width:0;padding:16px;overflow:hidden}.category-panel{grid-area:categories}.dashboard-chart-panel{grid-area:chart}.dashboard-method-panel{grid-area:method}.dashboard-method-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin:0 -16px -16px;display:grid}.category-chip{min-height:24px;color:var(--heading);background:color-mix(in srgb, var(--chip-color) 12%, white);border:1px solid color-mix(in srgb, var(--chip-color) 34%, white);border-radius:999px;align-items:center;gap:6px;padding:0 8px;font-size:12px;font-weight:800;display:inline-flex}.category-chip:before{background:var(--chip-color);content:"";border-radius:50%;width:7px;height:7px}.dashboard-record-table{margin-top:4px}.sources-panel{padding:16px}.sources-toolbar{justify-content:flex-end;margin-bottom:12px;display:flex}.sources-toolbar input{width:min(100%,320px);min-height:38px;color:var(--heading);border:1px solid var(--border);font:inherit;background:#fbfcfb;border-radius:6px;padding:8px 11px;font-size:13px}.sources-toolbar input:focus{border-color:#12263d;outline:2px solid #177f632e}.track-record-panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;min-width:0;padding:16px;overflow:hidden}.track-summary{border-top:1px solid var(--border);grid-template-columns:repeat(3,minmax(0,1fr));margin:10px -16px 0;display:grid}.track-record-table{margin-top:12px}.track-record-table td:nth-child(4) span{margin-top:4px}.movement-list,.tester-position-list{gap:12px;display:grid}.tester-position-card{padding:18px;overflow:hidden}.tester-core-metrics{margin-top:2px}.tester-metrics-grid{border-bottom:1px solid var(--border);grid-template-columns:repeat(4,minmax(0,1fr));margin:0 -18px;display:grid}.tester-metrics-grid .metric:nth-child(4n){border-right:none}.tester-position-detail{color:var(--muted);margin:14px 0 0;font-size:14px;line-height:1.45}.tester-position-links{margin-top:12px}.closed-position-list{gap:12px;display:grid}.closed-position-card{padding:18px;overflow:hidden}.closed-core-metrics{margin-top:2px}.closed-position-detail{color:var(--muted);margin:14px 0 0;font-size:14px;line-height:1.45}.closed-position-links{margin-top:12px}.movement-card{padding:16px}.movement-main{border-bottom:1px solid var(--border);grid-template-columns:140px minmax(0,1fr);gap:16px;padding-bottom:14px;display:grid}.movement-status span{color:#0a1b2e;background:#eef1f5;border-radius:999px;align-items:center;min-height:24px;padding:0 8px;font-size:12px;font-weight:700;display:inline-flex}.movement-status strong{color:var(--heading);overflow-wrap:anywhere;margin-top:8px;display:block}.movement-card h3{color:var(--heading);margin:0;font-size:20px;line-height:1.2}.movement-card p{color:var(--muted);margin:6px 0 0;font-size:14px;line-height:1.45}.movement-grid{grid-template-columns:repeat(6,minmax(0,1fr));margin:0 -16px;display:grid}.movement-links{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:flex-end;gap:10px;padding-top:12px;display:flex}.movement-links a{color:#244d8f;align-items:center;gap:6px;font-size:13px;font-weight:700;text-decoration:none;display:inline-flex}.overview-band{grid-template-columns:minmax(0,.85fr) repeat(2,minmax(0,1fr));grid-template-areas:"table table table""allocation apy aum";align-items:start;gap:14px;width:min(100%,1360px);margin:0 auto 18px;display:grid}.overview-table-wrap,.overview-chart{background:var(--panel);border:1px solid var(--border);border-radius:8px;min-width:0;padding:16px;overflow:hidden;box-shadow:0 12px 36px #212c270f}.overview-table-wrap{grid-area:table;align-self:start}.allocation-chart{grid-area:allocation}.apy-chart{grid-area:apy}.aum-chart{grid-area:aum}.overview-heading{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:12px;display:flex}.overview-heading h2{color:var(--heading);letter-spacing:0;margin:0;font-size:17px}.overview-heading span{color:var(--muted);text-align:right;font-size:13px}.overview-table{border-collapse:collapse;table-layout:auto;width:100%}.overview-table th,.overview-table td{border-top:1px solid var(--border);color:var(--heading);text-align:left;vertical-align:middle;padding:11px 8px;font-size:13px}.overview-table th:first-child,.overview-table td:first-child{padding-left:0}.overview-table th:last-child,.overview-table td:last-child{padding-right:0}.overview-table th{color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:800}.overview-table td{overflow-wrap:anywhere}.overview-table th:nth-child(n+2),.overview-table td:nth-child(n+2){white-space:nowrap}.overview-table td strong,.overview-table td span{display:block}.overview-table td span{color:var(--muted);margin-top:2px;font-size:12px}.overview-table .negative{color:#a33b35}.sources-table{table-layout:fixed}.sources-table th:first-child,.sources-table td:first-child{width:36%}.sources-table th:nth-child(2),.sources-table td:nth-child(2){width:18%}.sources-table th:nth-child(3),.sources-table td:nth-child(3){width:46%}.sources-table th:nth-child(n+2),.sources-table td:nth-child(n+2){white-space:normal}.sources-table td:nth-child(2){color:var(--heading);font-weight:800}.sources-table td:nth-child(3){color:var(--muted);line-height:1.45}.source-calculation{margin:0}.source-links{flex-wrap:wrap;gap:6px 10px;margin-top:8px;display:flex}.source-links a{color:#244d8f;align-items:center;gap:4px;font-size:12px;font-weight:700;text-decoration:none;display:inline-flex}.source-links a:hover{color:#0a1b2e}.pie-layout{grid-template-columns:minmax(116px,.74fr) minmax(0,1fr);align-items:center;gap:14px;display:grid}.allocation-pie{aspect-ratio:1;border-radius:50%;place-items:center;width:min(100%,184px);margin:0 auto;display:grid;position:relative;box-shadow:inset 0 0 0 1px #212c2714}.pie-legend{gap:8px;display:grid}.pie-legend-row{color:var(--muted);grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:8px;font-size:12px;display:grid}.pie-legend-row i{border-radius:3px;width:10px;height:10px}.pie-legend-row span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pie-legend-row strong{color:var(--heading)}.line-chart svg{width:100%;height:auto;display:block}.line-chart-viewport{position:relative}.line-chart line{stroke:#dfe7e2;stroke-width:1px}.line-chart .axis-line{stroke:#aebdb5;stroke-width:1.2px}.line-chart .axis-grid{stroke:#edf2ef;stroke-width:1px}.line-chart .axis-tick{stroke:#aebdb5;stroke-width:1px}.line-chart .axis-label{fill:var(--muted);font-size:10px;font-weight:700}.line-chart .y-axis-label{dominant-baseline:middle}.line-chart polygon{fill:#177f631a}.line-chart polyline{fill:none;stroke:#12263d;stroke-linecap:round;stroke-linejoin:round;stroke-width:4px}.line-chart .chart-point{fill:#fafbfd;stroke:#12263d;stroke-width:3px;pointer-events:none}.aum-chart .line-chart polygon{fill:#244d8f1a}.aum-chart .line-chart polyline,.aum-chart .line-chart .chart-point{stroke:#244d8f}.line-chart .chart-hit-area{cursor:pointer;fill:#0000;stroke:#0000}.line-chart g:focus{outline:none}.line-chart g:focus .chart-point{stroke:#244d8f}.line-chart-tooltip{z-index:2;color:#fafbfd;pointer-events:none;text-align:center;background:#20332c;border:1px solid #ffffff29;border-radius:8px;min-width:116px;padding:8px 10px;position:absolute;transform:translate(-50%,calc(-100% - 8px));box-shadow:0 14px 26px #212c2733}.line-chart-tooltip span,.line-chart-tooltip strong{display:block}.line-chart-tooltip span{color:#f8fffcbd;font-size:11px}.line-chart-tooltip strong{margin-top:2px;font-size:14px}.workspace{grid-template-columns:minmax(0,1fr) 360px;align-items:start;gap:18px}.section-heading{justify-content:space-between;align-items:end;margin-bottom:12px;display:flex}.section-heading h2,.panel-title h2{font-size:18px}.position-stack,.side-rail,.allocation-list,.wallet-list,.signal-list{gap:12px;display:grid}.position-card{padding:18px;overflow:hidden}.position-head{border-bottom:1px solid var(--border);justify-content:space-between;gap:18px;padding-bottom:16px;display:flex}.position-head>div:first-child{min-width:0}.badge-row{flex-wrap:wrap;gap:7px;margin-bottom:10px}.status,.chain-badge{border-radius:999px;align-items:center;min-height:24px;padding:0 8px;font-size:12px;font-weight:700;display:inline-flex}.status.good{color:#0a1b2e;background:#eef1f5}.status.watch{color:#8b5800;background:#fff4dc}.status.manual{color:#244d8f;background:#eef1f7}.status.muted{color:#65716c;background:#f1f3f1}.chain-badge{color:#3e4844;border:1px solid var(--border);background:#f4f7f4}.position-card h3{color:var(--heading);letter-spacing:0;overflow-wrap:anywhere;margin:0;font-size:22px;line-height:1.18}.position-card p{margin:5px 0 0;font-size:13px}.position-value{text-align:right;min-width:180px}.position-value strong{color:var(--heading);font-size:28px;line-height:1.1;display:block}.position-value span{color:var(--muted);font-size:13px}.core-metrics,.metrics-list{display:grid}.core-metrics{border-bottom:1px solid var(--border);grid-template-columns:repeat(5,minmax(0,1fr));margin:2px -18px 0}.position-apy-chart{border-bottom:1px solid var(--border);margin:0 -18px;padding:16px 18px 10px}.position-chart-heading{justify-content:space-between;align-items:baseline;gap:14px;margin-bottom:6px;display:flex}.position-chart-heading h4{color:var(--heading);letter-spacing:0;margin:0;font-size:15px}.position-chart-heading span{color:var(--muted);margin-top:2px;font-size:12px;display:block}.position-chart-heading strong{color:var(--heading);font-size:16px}.position-apy-chart .line-chart{max-width:620px}.metrics-list{border-bottom:1px solid var(--border);grid-template-columns:repeat(4,minmax(0,1fr));margin:0 -18px}.metric{border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-width:0;padding:13px 12px}.metrics-list .metric:nth-child(4n),.core-metrics .metric:nth-child(5n){border-right:none}.metric strong{color:var(--heading);overflow-wrap:anywhere;margin-top:3px;font-size:17px;line-height:1.2;display:block}.metric.bad strong{color:#a33b35}.assumptions{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:14px;display:grid}.assumptions label{min-width:0}.assumptions span{color:var(--muted);margin-bottom:5px;font-size:12px;font-weight:700;display:block}.assumptions input{box-sizing:border-box;width:100%;min-height:38px;color:var(--heading);border:1px solid var(--border);font:inherit;background:#fbfcfb;border-radius:6px;padding:8px 10px;font-size:14px}.assumptions input:focus{border-color:#12263d;outline:2px solid #177f6338}.source-row{border-top:1px solid var(--border);color:var(--muted);justify-content:space-between;gap:12px;margin:14px -18px 0;padding:12px 18px 0;font-size:13px}.source-row span{overflow-wrap:anywhere;gap:6px;min-width:0}.source-row svg{flex:none}.link-row{flex-wrap:wrap;justify-content:flex-end;gap:8px}.position-card a{color:#244d8f;border:1px solid var(--border);white-space:nowrap;border-radius:6px;align-items:center;gap:5px;min-height:28px;padding:0 8px;text-decoration:none;display:inline-flex}.notes{margin:8px 0 0}.notes p{color:#53615b}.panel{padding:16px}.panel-title{color:#244d8f;gap:8px;margin-bottom:14px}.allocation-row{gap:8px;display:grid}.allocation-row div:first-child,.wallet-row>div:first-child,.token-row{justify-content:space-between;gap:10px;min-width:0;display:flex}.allocation-row strong,.wallet-row strong{color:var(--heading);text-align:right}.bar-track{background:#edf1ed;border-radius:999px;height:8px;overflow:hidden}.bar-track span{background:linear-gradient(90deg,#12263d,#244d8f);height:100%;display:block}.wallet-row{border-top:1px solid var(--border);gap:5px;padding-top:12px;display:grid}.wallet-row:first-child{border-top:none;padding-top:0}code{color:var(--heading);font-family:var(--mono);overflow-wrap:anywhere;font-size:12px}.token-row{padding-top:5px}.wallet-link{color:#244d8f;align-items:center;gap:4px;text-decoration:none;display:inline-flex}.wallet-link:hover{color:#0a1b2e}.signal{border-top:1px solid var(--border);color:var(--muted);justify-content:space-between;gap:10px;margin:0;padding:9px 0;font-size:13px;display:flex}.signal:first-child{border-top:none}.signal span{color:var(--heading)}.signal.warning{color:#9d2d35}.signal.calm{color:#0a1b2e}.empty{color:var(--muted);margin:0;font-size:13px}.skeleton span{background:linear-gradient(90deg,#eef1ee,#f8faf8,#eef1ee);border-radius:6px;height:16px;margin-bottom:12px;display:block}@media (width<=1180px){.summary-grid,.dashboard-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-main-grid{grid-template-columns:1fr;grid-template-areas:"categories""chart""method"}.overview-band{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"table table""allocation allocation""apy aum"}.overview-table-wrap{grid-area:table}.workspace{grid-template-columns:1fr}.side-rail{grid-template-columns:repeat(3,minmax(0,1fr))}.movement-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.available-balance-grid{grid-template-columns:1fr}}@media (width<=820px){.app-shell{padding:16px}.topbar,.position-head,.source-row{flex-direction:column;align-items:flex-start}.top-actions{justify-content:space-between;width:100%}.freshness{white-space:normal;flex:auto}.position-value{text-align:left;min-width:0}.core-metrics,.metrics-list,.tester-metrics-grid,.assumptions,.side-rail,.summary-grid,.dashboard-metric-grid,.dashboard-method-grid,.available-balance-grid,.overview-band{grid-template-columns:1fr}.overview-table-wrap{overflow:hidden}.overview-band{grid-template-areas:"table""allocation""apy""aum"}.page-tabs{overflow-x:auto}.movement-main,.movement-grid,.track-summary{grid-template-columns:1fr}.movement-links{justify-content:flex-start}.pie-layout{grid-template-columns:1fr}.allocation-pie{width:min(74vw,190px)}.overview-table{min-width:0}.overview-table,.overview-table tbody,.overview-table tr,.overview-table td{width:100%;display:block}.overview-table thead{display:none}.overview-table tr{border-top:1px solid var(--border);padding:12px 0}.overview-table tr:first-child{padding-top:0}.overview-table td{text-align:right;white-space:normal;border-top:none;justify-content:space-between;gap:16px;padding:5px 0;display:flex}.overview-table td:nth-child(n+2){white-space:normal}.overview-table td:before{content:attr(data-label);color:var(--muted);text-align:left;text-transform:uppercase;flex:none;font-size:11px;font-weight:800}.overview-table td:first-child{text-align:left;padding-top:0;display:block}.overview-table td:first-child:before{display:none}.metric,.metric:nth-child(4n),.tester-metrics-grid .metric:nth-child(4n){border-right:none;border-bottom:1px solid var(--border)}.metric:last-child{border-bottom:none}.link-row{justify-content:flex-start}}.app-shell h1,.panel-title,.overview-heading,.summary-tile .value{letter-spacing:-.01em;color:var(--heading);font-family:Newsreader,Georgia,serif}.app-shell h1,.panel-title{font-weight:500}.summary-tile .value,.overview-table td,td.num,.num{font-variant-numeric:tabular-nums}.brand-mark{color:var(--accent)}@media (width<=640px){.app-shell{padding:16px 14px 48px}.panel{padding:16px}.summary-grid{grid-template-columns:1fr 1fr;gap:10px}.overview-band{grid-template-columns:1fr}.overview-table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.overview-table{min-width:560px}.page-tabs{-webkit-overflow-scrolling:touch;white-space:nowrap;overflow-x:auto}.app-shell h1{font-size:1.5rem}}
