@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700&display=swap');
/* Ruvo Rev 16 soft monochrome tokens. No pure #000/#fff anywhere. */
:root{--r-sidebar:#EAEAE6;--r-sidebar-hi:#DCDCD7;--r-bg:#F4F4F1;--r-panel:#EAEAE6;--r-text:#1C1C1C;--r-text-2:#62625D;--r-text-2p:#62625D;--r-grid:#DCDCD7;--r-line-1:#2A2A2A;--r-line-2:#8A8A85;--r-on-ink:#F4F4F1;
 --r-ease-out:cubic-bezier(.22,1,.36,1);--r-ease-io:cubic-bezier(.32,.72,0,1);--r-ease-spring:cubic-bezier(.24,1.34,.38,1);--r-t-fast:160ms;--r-t-base:220ms;--r-t-slow:420ms;
 --g-mono:ui-monospace,'SFMono-Regular',Menlo,Consolas,monospace;color-scheme:light}
:root[data-theme=dark]{--r-sidebar:#262624;--r-sidebar-hi:#34342F;--r-bg:#141414;--r-panel:#1F1F1E;--r-text:#E8E8E4;--r-text-2:#9A9A95;--r-text-2p:#9A9A95;--r-grid:#2E2E2C;--r-line-1:#D6D6D2;--r-line-2:#8A8A85;--r-on-ink:#141414;color-scheme:dark}
:root{--plum:var(--r-text);--paper:var(--r-bg);--surface:var(--r-bg);--ink:var(--r-text);--muted:var(--r-text-2);--lime:var(--r-text);--line:var(--r-grid);--copper:var(--r-text)}
body,.app-body{font-family:Manrope,system-ui,sans-serif;background:var(--r-bg);color:var(--r-text)}
.app-body h1,.app-body h2,.app-body h3,.app-body .signature p,.app-body .result-total{font-family:Manrope,sans-serif;letter-spacing:-.035em}
.heading h1{font-size:38px;font-weight:500}.heading{padding:40px 0 28px}
::selection{background:var(--r-text);color:var(--r-on-ink)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--r-text);outline-offset:3px}
/* sidebar: panel, active item inverted */
.sidebar{background:var(--r-panel);color:var(--r-text);border-right:1px solid var(--r-grid)}
.sidebar .brand{font-weight:700;color:var(--r-text)}
.sidebar nav a{color:var(--r-text)}.sidebar nav a:hover{background:var(--r-grid)}
.sidebar nav a[aria-current=page]{background:var(--r-text);color:var(--r-on-ink)}
.signature{color:var(--r-text-2p)}.signature p{font-size:24px;color:var(--r-text)}.signature a{color:var(--r-text)}
.app-main{padding-left:40px;padding-right:40px}.topbar{height:80px;border-color:var(--r-grid);color:var(--r-text-2)}
.label{border-color:var(--r-line-2);color:var(--r-text)}
.board{background:var(--r-bg);border:1px solid var(--r-grid);border-radius:14px;padding:30px}
.board-heading h2{font-size:15px}.value{font-size:48px;letter-spacing:-.045em;font-variant-numeric:tabular-nums}.value>span:not(.r-roll-host){color:var(--r-text-2)}.value .r-roll-host,.value .r-roll-host span{color:var(--r-text)}
.chart .grid,.grid{stroke:var(--r-grid)}#chart-line{stroke:var(--r-line-1)}
.periods button{color:var(--r-text);background:transparent}
.periods button[aria-pressed=true]{background:var(--r-text);color:var(--r-on-ink)}.periods button:hover{background:var(--r-panel);color:var(--r-text)}
.button{border-radius:7px;font-weight:600;background:var(--r-text);color:var(--r-on-ink)}.button:hover{background:var(--r-line-1)}
.button.outline,.outline{background:transparent;color:var(--r-text);border-color:var(--r-line-2)}.outline:hover{background:var(--r-panel)}
.assistant,.result{background:var(--r-panel);color:var(--r-text);border:1px solid var(--r-grid);border-radius:14px}
.assistant img{content:url('assets/ruvo-creature.png');background:var(--r-panel);width:100%;height:auto;object-fit:contain;filter:grayscale(1)}
.assistant h2{font-size:26px;line-height:1.2;font-weight:500}.assistant>div>span{color:var(--r-text-2p)}
.assistant p,.assistant details p,.result p{color:var(--r-text-2p)}.assistant details{border-color:var(--r-grid)}
.result-total{font-size:45px;font-weight:500;color:var(--r-text);font-variant-numeric:tabular-nums}.result dl div,dl div{border-color:var(--r-grid)}
/* allocation swatches: tones + patterns, never hue */
.asset,.allocation-strip i{border:1px solid var(--r-line-1)}
.usdc{background:var(--r-line-1)}.eth{background:var(--r-line-2)}.btc{background:repeating-linear-gradient(135deg,var(--r-line-1) 0 2px,transparent 2px 5px)}
.bars i{background:var(--r-line-1);opacity:1}
.board label{font-size:13px}
input,select,.board input,.board select{border-color:var(--r-line-2);background:var(--r-bg);color:var(--r-text);caret-color:var(--r-text)}
.footnote,.note,.caption,th,.heading p,.muted,.app-foot{color:var(--r-text-2)}
td,th{border-color:var(--r-grid)}caption{border-color:var(--r-grid)}
.status{color:var(--r-text)}.error{color:var(--r-text);font-weight:600}
#toast{background:var(--r-text);color:var(--r-on-ink)}
.delete-plan{border-color:var(--r-line-2);color:var(--r-text);background:transparent}
.r-theme{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:transparent;color:var(--r-text);border:0;border-radius:6px;cursor:pointer}.r-theme svg{width:20px;height:20px;display:block}.r-theme:hover{background:var(--r-line-2)}
@media(max-width:1200px){.assistant{grid-template-columns:220px 1fr}.assistant img{padding:15px}.app-main{padding:0 25px 30px}}
@media(max-width:600px){.app-main{padding:0 16px 30px}.heading h1{font-size:33px}.board{padding:22px 16px}.value{font-size:38px}.assistant{grid-template-columns:1fr}.assistant img{max-height:250px;padding:15px}.assistant h2{font-size:28px}.result-total{font-size:40px}.signature{display:none}.topbar{height:65px}.heading{padding:26px 0}.sidebar nav a{font-size:12px}}
.app-body .sidebar .brand,.app-body .sidebar .brand svg.ruvo-mark{color:var(--r-text)}.app-body .wm-cursor{background:var(--r-text);border-color:var(--r-text)}