/* Shared live primitives adapted from Claude's ui.css, design v3, 01.11.2026.
 * The board-only phone/desktop frames and private blob URLs are deliberately not app styles. */
:root{--rv-ink:#16181d;--rv-text:#3d4049;--rv-muted:#6b6f78;--rv-line:rgba(16,24,40,.13);--rv-line-strong:rgba(16,24,40,.22);--rv-canvas:#f3f3f2;--rv-panel:#fff;--rv-brand:#f2b100;--rv-focus:#174ea6;--rv-green:#30a46c;--rv-yellow:#f2b100;--rv-blue:#0090ff;--rv-grey:#a0a3ab;--rv-red:#e5484d;--rv-red-text:#b4232a;--rv-font:Geist,Arial,sans-serif}
.rv-status{display:inline-flex;align-items:center;gap:7px;min-width:0;font:500 13px/18px var(--rv-font);color:var(--rv-text);background:none;border:0;border-radius:0;padding:0;box-shadow:none}
.rv-status::before{content:"";flex:none;width:8px;height:8px;border-radius:50%;background:var(--rv-grey)}
.rv-status[data-tone=connected]::before{background:var(--rv-green)}
.rv-status[data-tone=waiting]::before{background:var(--rv-yellow)}
.rv-status[data-tone=choice]::before{background:var(--rv-blue)}
.rv-status[data-tone=error]{color:var(--rv-red-text)}
.rv-status[data-tone=error]::before{background:var(--rv-red)}
.rv-notice{display:flex;align-items:center;gap:8px;min-height:40px;padding:8px 12px;border-radius:10px;background:var(--rv-panel);color:var(--rv-ink);font:500 14px/20px var(--rv-font);box-shadow:0 0 0 .5px var(--rv-line),0 2px 8px rgba(16,24,40,.06)}
.rv-notice>svg{width:18px;height:18px;flex:none;fill:none;stroke:#0d74ce;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
