diff --git a/app/analysis/page.tsx b/app/analysis/page.tsx index 813b1ab..d912d7f 100644 --- a/app/analysis/page.tsx +++ b/app/analysis/page.tsx @@ -456,7 +456,7 @@ function AnalysisPageContent() { {error ? ( - +

{error}

) : null} @@ -597,7 +597,7 @@ function AnalysisPageContent() {
- + {loading ? (

Loading price history...

) : priceSeries.length === 0 ? ( @@ -645,6 +645,7 @@ function AnalysisPageContent() {
@@ -712,7 +713,7 @@ function AnalysisPageContent() { ))}
-
+
@@ -750,6 +751,7 @@ function AnalysisPageContent() { {loading ? (

Loading filings...

@@ -789,7 +791,7 @@ function AnalysisPageContent() { ))} -
+
@@ -829,7 +831,7 @@ function AnalysisPageContent() { )} - + {loading ? (

Loading AI reports...

) : !analysis || analysis.recentAiReports.length === 0 ? ( @@ -901,7 +903,7 @@ function AnalysisPageContent() {
- + {journalLoading ? (

Loading research entries...

) : journalEntries.length === 0 ? ( diff --git a/app/filings/page.tsx b/app/filings/page.tsx index 3a7432c..782e155 100644 --- a/app/filings/page.tsx +++ b/app/filings/page.tsx @@ -354,6 +354,7 @@ function FilingsPageContent() { {FINANCIAL_VALUE_SCALE_OPTIONS.map((option) => ( @@ -454,7 +455,7 @@ function FilingsPageContent() { })} -
+
diff --git a/app/financials/page.tsx b/app/financials/page.tsx index 48d27cf..4426d6e 100644 --- a/app/financials/page.tsx +++ b/app/financials/page.tsx @@ -654,7 +654,7 @@ function FinancialsPageContent() { {error ? ( - +

{error}

) : null} @@ -680,7 +680,7 @@ function FinancialsPageContent() {
- + {loading ? (

Loading trend chart...

) : chartData.length === 0 || trendSeries.length === 0 ? ( @@ -725,7 +725,7 @@ function FinancialsPageContent() { )}
- + {loading ? (

Loading financial matrix...

) : surfaceKind === 'adjusted' || surfaceKind === 'custom_metrics' ? ( @@ -736,7 +736,7 @@ function FinancialsPageContent() { ) : periods.length === 0 || filteredRows.length === 0 ? (

No rows available for the selected filters yet.

) : ( -
+
@@ -804,7 +804,7 @@ function FinancialsPageContent() { )} - + {!selectedRow ? (

Select a row to inspect details.

) : ( @@ -854,7 +854,7 @@ function FinancialsPageContent() { ) : dimensionRows.length === 0 ? (

No dimensional facts were returned for the selected row.

) : ( -
+
@@ -882,7 +882,7 @@ function FinancialsPageContent() { {(surfaceKind === 'income_statement' || surfaceKind === 'balance_sheet' || surfaceKind === 'cash_flow_statement') && financials ? ( - +
Overall status: {financials.metrics.validation?.status ?? 'not_run'} @@ -890,7 +890,7 @@ function FinancialsPageContent() { {(financials.metrics.validation?.checks.length ?? 0) === 0 ? (

No validation checks available yet.

) : ( -
+
diff --git a/app/globals.css b/app/globals.css index a67a103..969b44a 100644 --- a/app/globals.css +++ b/app/globals.css @@ -3,13 +3,13 @@ :root { --font-display: "Avenir Next", "Segoe UI", "Helvetica Neue", Arial, sans-serif; --font-mono: "Menlo", "SFMono-Regular", "Consolas", "Liberation Mono", monospace; - --bg-0: #05080d; - --bg-1: #08121a; - --bg-2: #0b1f28; - --panel: rgba(6, 17, 24, 0.8); - --panel-soft: rgba(7, 22, 31, 0.62); - --panel-bright: rgba(10, 33, 45, 0.9); - --line-weak: rgba(126, 217, 255, 0.22); + --bg-0: #071018; + --bg-1: #0a1720; + --bg-2: #0e2028; + --panel: rgba(8, 20, 28, 0.72); + --panel-soft: rgba(9, 22, 30, 0.46); + --panel-bright: rgba(12, 30, 38, 0.84); + --line-weak: rgba(126, 217, 255, 0.18); --line-strong: rgba(123, 255, 217, 0.75); --accent: #68ffd5; --accent-strong: #8cffeb; @@ -56,9 +56,9 @@ body { font-family: var(--font-display), sans-serif; color: var(--terminal-bright); background: - radial-gradient(circle at 18% -10%, rgba(126, 217, 255, 0.25), transparent 35%), - radial-gradient(circle at 84% 0%, rgba(104, 255, 213, 0.2), transparent 30%), - linear-gradient(140deg, var(--bg-0), var(--bg-1) 50%, var(--bg-2)); + radial-gradient(circle at 14% -12%, rgba(126, 217, 255, 0.16), transparent 34%), + radial-gradient(circle at 88% 0%, rgba(104, 255, 213, 0.11), transparent 28%), + linear-gradient(160deg, var(--bg-0), var(--bg-1) 48%, var(--bg-2)); } .app-surface, @@ -72,10 +72,10 @@ body { position: absolute; inset: 0; background-image: - linear-gradient(rgba(126, 217, 255, 0.08) 1px, transparent 1px), - linear-gradient(90deg, rgba(126, 217, 255, 0.07) 1px, transparent 1px); - background-size: 34px 34px; - mask-image: radial-gradient(ellipse at center, black 20%, transparent 75%); + linear-gradient(rgba(126, 217, 255, 0.04) 1px, transparent 1px), + linear-gradient(90deg, rgba(126, 217, 255, 0.035) 1px, transparent 1px); + background-size: 38px 38px; + mask-image: radial-gradient(ellipse at center, black 28%, transparent 78%); pointer-events: none; } @@ -83,7 +83,7 @@ body { position: absolute; inset: 0; pointer-events: none; - opacity: 0.3; + opacity: 0.14; background-image: radial-gradient(rgba(160, 255, 227, 0.15) 0.7px, transparent 0.7px); background-size: 4px 4px; } @@ -110,12 +110,26 @@ textarea { border-collapse: collapse; } +.data-surface { + border: 1px solid var(--line-weak); + border-radius: 1rem; + background: linear-gradient(180deg, rgba(10, 25, 33, 0.9), rgba(8, 19, 26, 0.72)); +} + +.data-table-wrap { + overflow-x: auto; + border: 1px solid var(--line-weak); + border-radius: 1rem; + background: linear-gradient(180deg, rgba(9, 23, 30, 0.9), rgba(7, 18, 24, 0.74)); +} + .data-table th, .data-table td { border-bottom: 1px solid var(--line-weak); - padding: 0.75rem 0.65rem; + padding: 0.8rem 0.8rem; text-align: left; font-size: 0.875rem; + vertical-align: top; } .data-table th { @@ -127,7 +141,7 @@ textarea { } .data-table tbody tr:hover { - background-color: rgba(17, 47, 61, 0.45); + background-color: rgba(17, 47, 61, 0.28); } @media (prefers-reduced-motion: no-preference) { @@ -157,8 +171,8 @@ textarea { @media (max-width: 640px) { body { background: - radial-gradient(circle at 24% -4%, rgba(126, 217, 255, 0.2), transparent 36%), - radial-gradient(circle at 82% 2%, rgba(104, 255, 213, 0.16), transparent 30%), + radial-gradient(circle at 24% -4%, rgba(126, 217, 255, 0.14), transparent 36%), + radial-gradient(circle at 82% 2%, rgba(104, 255, 213, 0.11), transparent 30%), linear-gradient(155deg, var(--bg-0), var(--bg-1) 54%, var(--bg-2)); } diff --git a/app/graphing/page.tsx b/app/graphing/page.tsx index 5819bb6..ef567d1 100644 --- a/app/graphing/page.tsx +++ b/app/graphing/page.tsx @@ -454,7 +454,7 @@ function GraphingPageContent() { - +
- + {loading ? (

Loading comparison chart...

) : !selectedMetric || !comparison.hasAnyData ? ( @@ -607,8 +607,8 @@ function GraphingPageContent() { )}
- -
+ +
diff --git a/app/page.tsx b/app/page.tsx index ada3304..ab87875 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -151,7 +151,7 @@ export default function CommandCenterPage() { actions={headerActions} > {error ? ( - +

{error}

) : null} @@ -169,7 +169,7 @@ export default function CommandCenterPage() {
- + {loading ? (

Loading tasks...

) : ( @@ -177,7 +177,7 @@ export default function CommandCenterPage() { )}
- + {loading ? (

Loading intelligence output...

) : state.latestInsight ? ( @@ -195,21 +195,21 @@ export default function CommandCenterPage() {
-
- +
+

Analysis

Inspect one company across prices, filings, financials, and AI reports.

- +

Financials

Focus on multi-period filing metrics, margins, leverage, and balance sheet composition.

- +

Graphing

Compare one normalized metric across multiple companies with shareable chart state.

{ void queryClient.prefetchQuery(filingsQueryOptions({ limit: 120 })); @@ -222,7 +222,7 @@ export default function CommandCenterPage() {

Sync SEC filings and trigger AI memo analysis.

prefetchPortfolioSurfaces()} onFocus={() => prefetchPortfolioSurfaces()} @@ -231,7 +231,7 @@ export default function CommandCenterPage() {

Manage the active private portfolio and mark positions to market.

prefetchPortfolioSurfaces()} onFocus={() => prefetchPortfolioSurfaces()} diff --git a/app/portfolio/page.tsx b/app/portfolio/page.tsx index bb7f375..36a8f3a 100644 --- a/app/portfolio/page.tsx +++ b/app/portfolio/page.tsx @@ -192,7 +192,7 @@ export default function PortfolioPage() { )} > {error ? ( - +

{error}

) : null} @@ -215,7 +215,7 @@ export default function PortfolioPage() {
- + {loading ? (

Loading chart...

) : allocationData.length > 0 ? ( @@ -251,7 +251,7 @@ export default function PortfolioPage() { )}
- + {loading ? (

Loading chart...

) : performanceData.length > 0 ? ( @@ -296,7 +296,7 @@ export default function PortfolioPage() {
- + {loading ? (

Loading holdings...

) : holdings.length === 0 ? ( @@ -409,7 +409,7 @@ export default function PortfolioPage() { ))}
-
+
@@ -514,7 +514,7 @@ export default function PortfolioPage() { )} - +
diff --git a/app/search/page.tsx b/app/search/page.tsx index 0efc8fe..2b7d9b2 100644 --- a/app/search/page.tsx +++ b/app/search/page.tsx @@ -196,7 +196,7 @@ function SearchPageContent() { - + {answer ? (

{answer.answer}

@@ -226,6 +226,7 @@ function SearchPageContent() { {error ?

{error}

: null} {loading ? ( diff --git a/app/watchlist/page.tsx b/app/watchlist/page.tsx index 5cc3d89..d19f177 100644 --- a/app/watchlist/page.tsx +++ b/app/watchlist/page.tsx @@ -274,6 +274,7 @@ export default function WatchlistPage() { -
+
@@ -621,6 +622,7 @@ export default function WatchlistPage() {
diff --git a/components/dashboard/metric-card.tsx b/components/dashboard/metric-card.tsx index df9c280..984d534 100644 --- a/components/dashboard/metric-card.tsx +++ b/components/dashboard/metric-card.tsx @@ -10,9 +10,9 @@ type MetricCardProps = { export function MetricCard({ label, value, delta, positive = true, className }: MetricCardProps) { return ( -
-

{label}

-

{value}

+
+

{label}

+

{value}

{delta ? (

{delta} diff --git a/components/dashboard/task-feed.tsx b/components/dashboard/task-feed.tsx index 281222c..0a8c974 100644 --- a/components/dashboard/task-feed.tsx +++ b/components/dashboard/task-feed.tsx @@ -20,9 +20,9 @@ export function TaskFeed({ tasks }: TaskFeedProps) { } return ( -

    +
      {tasks.slice(0, 8).map((task) => ( -
    • +
    • {taskLabels[task.task_type]}

      diff --git a/components/financials/control-bar.tsx b/components/financials/control-bar.tsx index 17b5fdd..b5cbbd0 100644 --- a/components/financials/control-bar.tsx +++ b/components/financials/control-bar.tsx @@ -41,12 +41,12 @@ export function FinancialControlBar({ className }: FinancialControlBarProps) { return ( -

      +
      -

      {title}

      +

      {title}

      {subtitle ? ( -

      {subtitle}

      +

      {subtitle}

      ) : null}
      @@ -68,29 +68,29 @@ export function FinancialControlBar({ ) : null}
      -
      - {sections.map((section) => ( -
      - {section.label} -
      - {section.options.map((option) => ( - - ))} -
      +
      + {sections.map((section) => ( +
      + {section.label} +
      + {section.options.map((option) => ( + + ))}
      - ))} +
      + ))}
      ); diff --git a/components/shell/app-shell.tsx b/components/shell/app-shell.tsx index 6be20bc..11cb76f 100644 --- a/components/shell/app-shell.tsx +++ b/components/shell/app-shell.tsx @@ -447,8 +447,8 @@ export function AppShell({ title, subtitle, actions, activeTicker, breadcrumbs,