Add history window controls and expand taxonomy pack support

- add 3Y/5Y/10Y financial history filtering and reorganize normalization details UI
- add new fiscal taxonomy surface/income bridge/KPI packs and update Rust taxonomy loading
- auto-detect Homebrew SQLite for native `sqlite-vec` in local dev/e2e with docs and env guidance
This commit is contained in:
2026-03-18 23:40:28 -04:00
parent f8426c4dde
commit 17de3dd72d
102 changed files with 14978 additions and 1316 deletions

View File

@@ -1,25 +1,23 @@
@import "tailwindcss";
:root {
--font-display:
"Avenir Next", "Segoe UI", "Helvetica Neue", Arial, sans-serif;
--font-mono:
"Menlo", "SFMono-Regular", "Consolas", "Liberation Mono", monospace;
--bg-0: #121417;
--bg-1: #181b20;
--bg-2: #21252b;
--panel: rgba(28, 31, 36, 0.84);
--panel-soft: rgba(36, 39, 45, 0.72);
--panel-bright: rgba(49, 53, 60, 0.94);
--line-weak: rgba(196, 202, 211, 0.18);
--line-strong: rgba(220, 226, 234, 0.34);
--accent: #d9dee5;
--accent-strong: #f4f7fb;
--danger: #ff8e8e;
--danger-soft: rgba(111, 46, 46, 0.42);
--terminal-bright: #f3f5f7;
--terminal-muted: #a1a9b3;
--focus-ring: rgba(229, 231, 235, 0.14);
--font-display: system-ui, -apple-system, sans-serif;
--font-mono: "SF Mono", "Fira Code", monospace;
--bg-0: #0f0f0f;
--bg-1: #161616;
--bg-2: #1c1c1c;
--panel: #1a1a1a;
--panel-soft: #222222;
--panel-bright: #2a2a2a;
--line-weak: rgba(255, 255, 255, 0.08);
--line-strong: rgba(255, 255, 255, 0.16);
--accent: #e0e0e0;
--accent-strong: #ffffff;
--danger: #ff6b6b;
--danger-soft: rgba(255, 107, 107, 0.15);
--terminal-bright: #f0f0f0;
--terminal-muted: #888888;
--focus-ring: rgba(255, 255, 255, 0.1);
}
* {
@@ -58,18 +56,7 @@ body {
overflow-x: hidden;
font-family: var(--font-display), sans-serif;
color: var(--terminal-bright);
background:
radial-gradient(
circle at 18% -10%,
rgba(170, 178, 188, 0.16),
transparent 35%
),
radial-gradient(
circle at 84% 0%,
rgba(121, 128, 138, 0.14),
transparent 30%
),
linear-gradient(140deg, var(--bg-0), var(--bg-1) 50%, var(--bg-2));
background: var(--bg-0);
}
.app-surface,
@@ -79,36 +66,12 @@ body {
overflow: hidden;
}
.ambient-grid {
position: absolute;
inset: 0;
background-image:
linear-gradient(rgba(204, 210, 218, 0.06) 1px, transparent 1px),
linear-gradient(90deg, rgba(204, 210, 218, 0.05) 1px, transparent 1px);
background-size: 34px 34px;
mask-image: radial-gradient(ellipse at center, black 20%, transparent 75%);
pointer-events: none;
}
.noise-layer {
position: absolute;
inset: 0;
pointer-events: none;
opacity: 0.24;
background-image: radial-gradient(
rgba(220, 226, 234, 0.1) 0.7px,
transparent 0.7px
);
background-size: 4px 4px;
}
.terminal-caption {
font-family: var(--font-mono), monospace;
}
.panel-heading {
font-family: var(--font-mono), monospace;
letter-spacing: 0.08em;
}
a,
@@ -126,23 +89,15 @@ textarea {
.data-surface {
border: 1px solid var(--line-weak);
border-radius: 1rem;
background: linear-gradient(
180deg,
rgba(40, 43, 49, 0.92),
rgba(24, 27, 32, 0.78)
);
border-radius: 0.5rem;
background: var(--panel);
}
.data-table-wrap {
overflow-x: auto;
border: 1px solid var(--line-weak);
border-radius: 1rem;
background: linear-gradient(
180deg,
rgba(34, 37, 42, 0.9),
rgba(20, 23, 27, 0.76)
);
border-radius: 0.5rem;
background: var(--panel);
}
.data-table th,
@@ -163,54 +118,31 @@ textarea {
}
.data-table tbody tr:hover {
background-color: rgba(63, 68, 76, 0.32);
}
@media (prefers-reduced-motion: no-preference) {
.ambient-grid {
animation: subtle-grid-shift 18s linear infinite;
}
@keyframes subtle-grid-shift {
0% {
transform: translateY(0px);
}
50% {
transform: translateY(-8px);
}
100% {
transform: translateY(0px);
}
}
}
@media (max-width: 1024px) {
.ambient-grid {
background-size: 26px 26px;
}
background-color: rgba(255, 255, 255, 0.04);
}
@media (max-width: 640px) {
body {
background:
radial-gradient(
circle at 24% -4%,
rgba(170, 178, 188, 0.14),
transparent 36%
),
radial-gradient(
circle at 82% 2%,
rgba(121, 128, 138, 0.12),
transparent 30%
),
linear-gradient(155deg, var(--bg-0), var(--bg-1) 54%, var(--bg-2));
}
.data-table th,
.data-table td {
padding: 0.65rem 0.55rem;
font-size: 0.8125rem;
}
.financial-matrix-metric-col {
width: 18rem;
}
.financial-matrix-period-col {
width: 8rem;
}
.financial-matrix-header,
.financial-matrix-section-cell,
.financial-matrix-sticky-cell,
.financial-matrix-value-cell {
padding-left: 0.65rem;
padding-right: 0.65rem;
}
}
.panel-compact {
@@ -244,7 +176,87 @@ textarea {
}
.data-table-dense tbody tr:hover {
background-color: rgba(63, 68, 76, 0.32);
background-color: rgba(255, 255, 255, 0.04);
}
.financials-table tbody tr:hover {
background-color: transparent;
}
.financial-matrix-wrap {
overflow: auto;
border: 1px solid var(--line-weak);
border-radius: 0.75rem;
background: var(--panel);
}
.financial-matrix {
width: max-content;
min-width: 100%;
border-collapse: separate;
border-spacing: 0;
table-layout: fixed;
}
.financial-matrix-metric-col {
width: 24rem;
}
.financial-matrix-period-col {
width: 9rem;
}
.financial-matrix-header {
position: sticky;
top: 0;
z-index: 10;
padding: 0.85rem 0.9rem;
border-bottom: 1px solid var(--line-strong);
background: color-mix(in srgb, var(--panel) 92%, black 8%);
text-align: right;
white-space: nowrap;
font-family: var(--font-mono), monospace;
}
.financial-matrix-section-row td {
border-bottom: 1px solid var(--line-strong);
}
.financial-matrix-section-cell {
padding: 0.7rem 0.9rem;
background: rgba(255, 255, 255, 0.04);
font-size: 0.75rem;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--terminal-muted);
}
.financial-matrix-row-detail td {
background: rgba(255, 255, 255, 0.015);
}
.financial-matrix-sticky-cell,
.financial-matrix-value-cell {
padding: 0.45rem 0.9rem;
border-bottom: 1px solid var(--line-weak);
white-space: nowrap;
vertical-align: top;
}
.financial-matrix-sticky-cell {
border-right: 1px solid var(--line-weak);
background: var(--panel);
}
.financial-matrix-sticky-cell-detail {
background: color-mix(in srgb, var(--panel) 92%, white 8%);
}
.financial-matrix-value-cell {
text-align: right;
font-variant-numeric: tabular-nums;
color: var(--terminal-bright);
}
.metric-compact {
@@ -382,12 +394,8 @@ textarea {
.screener-table-wrap {
overflow-x: auto;
border: 1px solid var(--line-weak);
border-radius: 0.75rem;
background: linear-gradient(
180deg,
rgba(34, 37, 42, 0.9),
rgba(20, 23, 27, 0.76)
);
border-radius: 0.5rem;
background: var(--panel);
}
.screener-table-wrap thead {