:root{--color-background:#fff;--color-surface:#f9fafb;--color-surface-hover:#f3f4f6;--color-border:#e5e7eb;--font-family:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", system-ui, sans-serif;--font-xs:11px;--font-sm:13px;--font-md:14px;--font-lg:16px;--color-text-primary:#111827;--color-text-secondary:#6b7280;--color-text-muted:#9ca3af;--color-text-gain:#15803d;--color-text-loss:#b91c1c;--color-violet-50:#f7f3ff;--color-violet-100:#ece5fd;--color-violet-200:#d9cbfb;--color-violet-300:#bea4f7;--color-violet-400:#a07bf2;--color-violet-500:#8c52e5;--color-violet-600:#7c35d9;--color-violet-700:#6a27be;--color-violet-800:#571ca0;--color-violet-900:#3e1278;--color-violet-950:#260b4a;--color-primary:var(--color-violet-600);--color-primary-hover:var(--color-violet-700);--color-primary-active:var(--color-violet-800);--color-primary-subtle:var(--color-violet-50);--color-primary-muted:var(--color-violet-100);--color-primary-border:var(--color-violet-200);--color-primary-focus:var(--color-violet-500);--color-link:var(--color-violet-700);--color-link-hover:var(--color-violet-800);--btn-primary-bg:var(--color-primary);--btn-primary-color:#fff;--btn-primary-bg-hover:var(--color-primary-hover);--btn-primary-bg-active:var(--color-primary-active);--btn-ghost-bg:var(--color-violet-100);--btn-ghost-color:var(--color-violet-700);--btn-ghost-border:var(--color-violet-200);--btn-ghost-bg-hover:var(--color-violet-50);--focus-ring-color:var(--color-violet-500);--focus-ring:0 0 0 3px var(--color-violet-200);--focus-ring-error:0 0 0 3px var(--badge-error-border);--focus-ring-success:0 0 0 3px var(--badge-success-border);--focus-ring-info:0 0 0 3px var(--badge-info-border);--focus-ring-muted:0 0 0 3px var(--color-border);--row-hover-bg:var(--color-violet-50);--modal-overlay:#0009;--modal-shadow:0 20px 60px #00000080;--input-border:var(--color-text-muted);--color-expired-bg:var(--badge-error-bg);--badge-buffer-bg:#f1f5f9;--badge-buffer-color:#334155;--badge-buffer-border:#e2e8f0;--badge-core-bg:#e0f2fe;--badge-core-color:#075985;--badge-core-border:#bae6fd;--badge-dividend-bg:#ede9fe;--badge-dividend-color:#5b21b6;--badge-dividend-border:#ddd6fe;--badge-stocks-bg:#ffe4e6;--badge-stocks-color:#9f1239;--badge-stocks-border:#fecdd3;--badge-buy-bg:#d1fae5;--badge-buy-color:#065f46;--badge-buy-border:#a7f3d0;--badge-sell-bg:#fdf2f8;--badge-sell-color:#9d174d;--badge-sell-border:#fbcfe8;--badge-hold-bg:#fef9c3;--badge-hold-color:#854d0e;--badge-hold-border:#fde68a;--badge-success-bg:#dcfce7;--badge-success-color:#15803d;--badge-success-border:#bbf7d0;--badge-error-bg:#fee2e2;--badge-error-color:#b91c1c;--badge-error-border:#fca5a5;--badge-info-bg:#dbeafe;--badge-info-color:#1d4ed8;--badge-info-border:#bfdbfe;--skeleton-bg-from:var(--color-violet-50);--skeleton-bg-via:#f0ebff}@media (prefers-color-scheme:dark){:root{--color-background:#0f1117;--color-surface:#1a1d27;--color-surface-hover:#22263a;--color-border:#2a2d3d;--color-text-primary:#f0f2f8;--color-text-secondary:#a8adc4;--color-text-muted:#7a7f96;--color-text-gain:#86efac;--color-text-loss:#ff6b6b;--color-primary:var(--color-violet-600);--color-primary-hover:var(--color-violet-500);--color-primary-active:var(--color-violet-400);--color-primary-subtle:var(--color-violet-950);--color-primary-muted:#1e1040;--color-primary-border:#3b1f6e;--color-primary-focus:var(--color-violet-400);--color-link:var(--color-violet-300);--color-link-hover:var(--color-violet-200);--btn-primary-bg:var(--color-primary);--btn-primary-color:#fff;--btn-primary-bg-hover:var(--color-violet-500);--btn-primary-bg-active:var(--color-violet-400);--btn-ghost-bg:#1e1040;--btn-ghost-color:var(--color-violet-300);--btn-ghost-border:#3b1f6e;--btn-ghost-bg-hover:var(--color-violet-950);--focus-ring-color:var(--color-violet-400);--focus-ring:0 0 0 3px #3b1f6e;--row-hover-bg:var(--color-violet-950);--badge-buffer-bg:#1e293b;--badge-buffer-color:#94a3b8;--badge-buffer-border:#334155;--badge-core-bg:#082f49;--badge-core-color:#7dd3fc;--badge-core-border:#0c4a6e;--badge-dividend-bg:#2e1065;--badge-dividend-color:#c4b5fd;--badge-dividend-border:#4c1d95;--badge-stocks-bg:#4c0519;--badge-stocks-color:#fda4af;--badge-stocks-border:#881337;--badge-buy-bg:#052e16;--badge-buy-color:#4ade80;--badge-buy-border:#14532d;--badge-sell-bg:#3d0a2a;--badge-sell-color:#f9a8d4;--badge-sell-border:#831843;--badge-hold-bg:#422006;--badge-hold-color:#fde047;--badge-hold-border:#78350f;--badge-success-bg:#052e16;--badge-success-color:#86efac;--badge-success-border:#14532d;--badge-error-bg:#450a0a;--badge-error-color:#fca5a5;--badge-error-border:#7f1d1d;--badge-info-bg:#1e3a5f;--badge-info-color:#93c5fd;--badge-info-border:#1e40af;--skeleton-bg-from:var(--color-violet-950);--skeleton-bg-via:#1e1040}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--color-background);color:var(--color-text-primary);font-family:var(--font-family);font-size:var(--font-md);-webkit-font-smoothing:antialiased;line-height:1.5}:focus-visible{box-shadow:var(--focus-ring);outline:none}input:focus-visible,textarea:focus-visible{box-shadow:var(--focus-ring);border-color:var(--color-primary);outline:none}a,.link{color:var(--color-link);text-decoration:underline;transition:color .1s}a:hover,.link:hover{color:var(--color-link-hover)}.app{max-width:1400px;margin:0 auto;padding:32px clamp(16px,3vw,48px)}.app-header{margin-bottom:32px}.app-header h1{letter-spacing:-.3px;color:var(--color-text-primary);font-size:22px;font-weight:600}.app-header p{color:var(--color-text-secondary);font-size:var(--font-sm);margin-top:4px}.dashboard-grid{grid-template-columns:70fr 30fr;align-items:start;gap:16px;display:grid}@media (width<=1024px){.dashboard-grid{grid-template-columns:1fr}}.badge{font-size:var(--font-xs);white-space:nowrap;border:.5px solid #0000;border-radius:20px;padding:3px 10px;font-weight:500;display:inline-block}.badge--buffer{background:var(--badge-buffer-bg);color:var(--badge-buffer-color);border-color:var(--badge-buffer-border)}.badge--core{background:var(--badge-core-bg);color:var(--badge-core-color);border-color:var(--badge-core-border)}.badge--dividend{background:var(--badge-dividend-bg);color:var(--badge-dividend-color);border-color:var(--badge-dividend-border)}.badge--stocks{background:var(--badge-stocks-bg);color:var(--badge-stocks-color);border-color:var(--badge-stocks-border)}.badge--buy{background:var(--badge-buy-bg);color:var(--badge-buy-color);border-color:var(--badge-buy-border)}.badge--sell{background:var(--badge-sell-bg);color:var(--badge-sell-color);border-color:var(--badge-sell-border)}.badge--hold{background:var(--badge-hold-bg);color:var(--badge-hold-color);border-color:var(--badge-hold-border)}.badge--success{background:var(--badge-success-bg);color:var(--badge-success-color);border-color:var(--badge-success-border)}.badge--error{background:var(--badge-error-bg);color:var(--badge-error-color);border-color:var(--badge-error-border)}.badge--info{background:var(--badge-info-bg);color:var(--badge-info-color);border-color:var(--badge-info-border)}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skeleton{background:linear-gradient(90deg, var(--skeleton-bg-from) 25%, var(--skeleton-bg-via) 50%, var(--skeleton-bg-from) 75%);background-size:800px 100%;border-radius:6px;animation:1.5s linear infinite shimmer}.skeleton--pill{border-radius:20px}.skeleton--circle{border-radius:50%}
