:root{--bg-primary:#0d0d0d;--bg-secondary:#1a1a1a;--bg-tertiary:#242424;--text-primary:#e0e0e0;--text-secondary:#a0a0a0;--text-muted:#8a8a8a;--border-color:#2a2a2a;--accent-positive:#22c55e;--accent-negative:#ef4444;--accent-neutral:#666;--accent:#8b5cf6;--accent-dim:#8b5cf626}:root[data-theme=light]{--bg-primary:#fff;--bg-secondary:#f6f6f8;--bg-tertiary:#ececef;--text-primary:#1a1a1a;--text-secondary:#4b4b52;--text-muted:#6b6b73;--border-color:#dcdce1;--accent-positive:#16a34a;--accent-negative:#dc2626;--accent-neutral:#9a9aa2;--accent:#7c3aed;--accent-dim:#7c3aed1f}*{box-sizing:border-box}html,body,#app{height:100%}body{background:var(--bg-primary);color:var(--text-primary);margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;line-height:1.5}a{color:inherit;text-decoration:none}button{font:inherit;color:var(--text-primary);background:var(--bg-tertiary);border:1px solid var(--border-color);cursor:pointer;border-radius:6px;padding:6px 12px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}input,select{font:inherit;color:var(--text-primary);background:var(--bg-primary);border:1px solid var(--border-color);border-radius:6px;padding:6px 10px}input:focus,select:focus{border-color:var(--accent);outline:none}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.spinner{border:2px solid var(--border-color);border-top-color:var(--accent);vertical-align:-2px;border-radius:50%;width:14px;height:14px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.loading{color:var(--text-muted);align-items:center;gap:8px;display:flex}.empty-card{text-align:center}.empty-card .form-actions{justify-content:center}.shell{height:100%;display:flex}.sidebar{background:var(--bg-secondary);border-right:1px solid var(--border-color);flex-direction:column;flex:none;gap:8px;width:220px;padding:16px 12px;display:flex}.wordmark{letter-spacing:.04em;color:var(--accent);padding:4px 8px 12px;font-size:18px;font-weight:700}.nav-item{color:var(--text-secondary);border-radius:6px;padding:6px 8px;display:block}.nav-item:hover{background:var(--bg-tertiary);color:var(--text-primary)}.nav-item.active{background:var(--accent-dim);color:var(--text-primary)}.nav-item.portfolio{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.nav-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.nav-value{color:var(--text-muted);font-variant-numeric:tabular-nums;flex:none;font-size:11px}.sidebar .spacer{flex:1}.sidebar-bottom{flex-direction:column;gap:8px;display:flex}.who{color:var(--text-muted);padding:0 8px;font-size:12px}.content{flex:1;padding:24px;overflow-y:auto}.auth-wrap{place-items:center;height:100%;display:grid}.auth-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:10px;flex-direction:column;gap:12px;width:320px;padding:24px;display:flex}.auth-card h1{color:var(--accent);margin:0 0 8px;font-size:20px}.auth-card label{color:var(--text-secondary);flex-direction:column;gap:4px;font-size:12px;display:flex}.error{color:var(--accent-negative);font-size:13px}.muted{color:var(--text-muted)}.boot{height:100%;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}.empty{text-align:center;max-width:480px;color:var(--text-secondary);margin:10vh auto 0}.empty h1{color:var(--text-primary)}.row{justify-content:center;gap:8px;display:flex}.dashboard{flex-direction:column;gap:20px;max-width:1200px;margin:0 auto;display:flex}.dash-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.dash-header h1{margin:0 0 4px;font-size:22px}.dash-total{flex-direction:column;align-items:flex-end;gap:8px;display:flex}.total{font-variant-numeric:tabular-nums;font-size:24px}.card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:10px;padding:16px}.card h2,.card h3{letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary);margin:0 0 12px;font-size:12px}.card-header{justify-content:space-between;align-items:baseline;margin-bottom:12px;display:flex}.card-header h2{margin:0}.collapsible summary{cursor:pointer;align-items:baseline;gap:8px;list-style:none;display:flex}.collapsible summary::-webkit-details-marker{display:none}.collapsible summary:before{content:"▸";color:var(--text-muted);font-size:10px;transition:transform .15s}.collapsible[open] summary:before{transform:rotate(90deg)}.collapsible summary :is(h2,h3){margin:0 auto 0 0}.collapsible[open] summary{margin-bottom:12px}.collapsible summary:hover :is(h2,h3){color:var(--text-primary)}.tabs{gap:6px;display:flex}.tabs button{color:var(--text-secondary);background:0 0;border-radius:999px;padding:3px 14px;font-size:12px}.tabs button.active{background:var(--accent-dim);border-color:var(--accent);color:var(--text-primary)}.token-filters{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.token-filters input{width:170px}.token-group{margin-bottom:12px}.token-group:last-child{margin-bottom:0}.danger{color:var(--accent-negative)}.success{color:var(--accent-positive)}button.success{border-color:var(--accent-positive);color:var(--accent-positive)}button.danger{border-color:var(--accent-negative);color:var(--accent-negative)}.group-side{align-items:baseline;gap:10px;display:flex}.group-side .change{font-size:12px}.changes{font-variant-numeric:tabular-nums;flex-wrap:wrap;justify-content:flex-end;gap:10px;font-size:12px;display:flex}.change{color:var(--text-muted)}.change.up{color:var(--accent-positive)}.change.down{color:var(--accent-negative)}.group-value{font-variant-numeric:tabular-nums}.wallet-chips{flex-wrap:wrap;gap:8px;display:flex}.chip{color:var(--text-secondary);border:1px solid var(--border-color);border-radius:999px;padding:4px 12px;font-size:13px}.chip:hover{border-color:var(--accent);color:var(--text-primary)}.chip.active{background:var(--accent-dim);border-color:var(--accent);color:var(--text-primary)}.charts{grid-template-columns:2fr 1fr;gap:20px;display:grid}.chart-box{width:100%}.area-chart{cursor:crosshair;width:100%;height:auto;display:block}.chart-grid{stroke:var(--border-color);stroke-width:1px}.chart-label{fill:var(--text-muted);font-size:10px}.chart-dot{fill:var(--accent);fill-opacity:.5;pointer-events:none}.chart-dot.active{fill-opacity:1}.chart-guide{stroke:var(--text-muted);stroke-width:1px;stroke-dasharray:3 3;pointer-events:none}.chart-tooltip{pointer-events:none}.chart-tooltip rect{fill:var(--bg-tertiary);stroke:var(--border-color);stroke-width:1px}.chart-tooltip-value{fill:var(--text-primary);font-size:11px;font-weight:600}.chart-tooltip-time{fill:var(--text-muted);font-size:10px}.donut-wrap{flex-direction:column;align-items:center;gap:12px;display:flex}.donut{width:160px;height:160px}.donut-legend{flex-direction:column;gap:6px;width:100%;margin:0;padding:0;list-style:none;display:flex}.donut-legend li{align-items:center;gap:8px;font-size:13px;display:flex}.swatch{border-radius:2px;flex:none;width:10px;height:10px}.legend-label{flex:1}.rename-form{align-items:center;gap:8px;display:flex}.rename-form input{min-width:200px}.header-actions{gap:8px;display:flex}.stack{flex-direction:column;gap:12px;max-width:360px;display:flex}.stack label,.token-form label{color:var(--text-secondary);flex-direction:column;gap:4px;font-size:12px;display:flex}.checkbox{flex-direction:row;align-items:center;gap:8px}.token-form{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end;gap:10px;display:grid}.form-actions{gap:8px;display:flex}.mt{margin-top:12px}.assets tr.disabled{opacity:.5}.toasts{z-index:50;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:16px;right:16px}.toast{background:var(--bg-tertiary);border:1px solid var(--border-color);border-left:3px solid var(--accent);border-radius:6px;max-width:320px;padding:10px 14px}.toast.error{border-left-color:var(--accent-negative)}.modal-backdrop{z-index:40;background:#0009;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:10px;width:min(420px,100vw - 32px);max-height:calc(100vh - 64px);padding:20px;overflow-y:auto}.modal:focus{outline:none}.modal-head{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.modal-head h2{margin:0}.modal-close{color:var(--text-muted);background:0 0;border-color:#0000;justify-content:center;align-items:center;padding:4px;line-height:0;display:inline-flex}.modal-close:hover:not(:disabled){color:var(--text-primary);border-color:#0000}@media (width<=900px){.charts{grid-template-columns:1fr}}.inline-form{gap:8px;margin-bottom:12px;display:flex}.inline-form input:first-child{flex:1}.assets{border-collapse:collapse;width:100%}.table-wrap{overflow-x:auto}.assets th{text-align:left;color:var(--text-muted);border-bottom:1px solid var(--border-color);padding:6px 8px;font-size:12px;font-weight:500}.assets td{border-bottom:1px solid var(--border-color);font-variant-numeric:tabular-nums;padding:8px}.assets tr:last-child td{border-bottom:none}.assets .num{text-align:right}.addr{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;gap:12px;padding:8px 0;display:flex}.addr:last-child{border-bottom:none}.addr-value{font-family:ui-monospace,monospace;font-size:13px}.addr-total{color:var(--text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap}.copy-address{color:inherit;cursor:pointer;background:0 0;border:none;border-radius:0;padding:0}.copy-address:hover{color:var(--text-primary)}.token-meta{word-break:break-all;flex-direction:column;gap:4px;margin-bottom:12px;font-size:12px;display:flex}.addr-side{align-items:center;gap:10px;display:flex}.warn{color:var(--accent-negative)}.error-list{max-height:240px;margin:8px 0 0;padding-left:18px;font-size:13px;overflow-y:auto}.error-list li{word-break:break-word;margin-bottom:4px}@media (width<=900px){.shell{flex-direction:column}.sidebar{flex-direction:row;align-items:center;width:100%}.sidebar nav{display:flex;overflow-x:auto}.nav-value{display:none}.sidebar-bottom{flex-direction:row;margin-left:auto}.sidebar .spacer{display:none}.wordmark{padding:4px 8px}}@media (width<=640px){.content{padding:16px}.dash-header{flex-direction:column}.dash-total{align-items:flex-start}.card-header{flex-wrap:wrap;gap:8px}.inline-form,.addr,.addr-side{flex-wrap:wrap}.sidebar{flex-wrap:wrap;padding:12px 10px}.sidebar-bottom{flex-wrap:wrap;justify-content:flex-end}}
