From c05b185b991ab69b10b5fdf6b6bac97e7aeb9ff2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B5=D0=BD=D0=B8=D1=81=20=D0=97=D0=B5=D1=84=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2?= Date: Sun, 12 Jul 2026 00:13:14 +0400 Subject: [PATCH] feat: crisp HUD charts (drop blur glow) + richer cyber backdrop - Remove the drop-shadow blur from SlippageCurve/DepthHistory/HealthRadial so the segmented meter, depth trace and health dial render crisp. - CyberGrid: add a dotted survey field, two targeting reticles, a katakana lexicon rail, corner brackets and a coordinate header alongside the existing survey lines and decoding labels. Co-Authored-By: Claude Opus 4.8 --- apps/web/src/components/DepthHistory.tsx | 7 +-- apps/web/src/components/HealthRadial.tsx | 2 +- apps/web/src/components/SlippageCurve.tsx | 1 - apps/web/src/components/fx/CyberGrid.tsx | 71 +++++++++++++++++++---- 4 files changed, 62 insertions(+), 19 deletions(-) diff --git a/apps/web/src/components/DepthHistory.tsx b/apps/web/src/components/DepthHistory.tsx index d90b279..ea60f5d 100644 --- a/apps/web/src/components/DepthHistory.tsx +++ b/apps/web/src/components/DepthHistory.tsx @@ -45,12 +45,7 @@ export function DepthHistory({ const gid = `dh-${salt}`; return ( - + diff --git a/apps/web/src/components/HealthRadial.tsx b/apps/web/src/components/HealthRadial.tsx index 594d48d..b66c958 100644 --- a/apps/web/src/components/HealthRadial.tsx +++ b/apps/web/src/components/HealthRadial.tsx @@ -24,7 +24,7 @@ export function HealthRadial({ score }: { score: number }) { {/* dial ticks */} - + {Array.from({ length: TICKS }, (_, i) => { const deg = START + (i / (TICKS - 1)) * SWEEP; const on = i < lit; diff --git a/apps/web/src/components/SlippageCurve.tsx b/apps/web/src/components/SlippageCurve.tsx index f4f8a20..8357af5 100644 --- a/apps/web/src/components/SlippageCurve.tsx +++ b/apps/web/src/components/SlippageCurve.tsx @@ -32,7 +32,6 @@ export function SlippageCurve({ liquidityUsd }: { liquidityUsd: number }) { preserveAspectRatio="none" viewBox={`0 0 ${CELLS * STEP} 12`} aria-hidden - style={{ filter: `drop-shadow(0 0 2.5px ${color})` }} > {Array.from({ length: CELLS }, (_, i) => { const lit = i < on; diff --git a/apps/web/src/components/fx/CyberGrid.tsx b/apps/web/src/components/fx/CyberGrid.tsx index 2265470..e8aabf0 100644 --- a/apps/web/src/components/fx/CyberGrid.tsx +++ b/apps/web/src/components/fx/CyberGrid.tsx @@ -1,9 +1,31 @@ +import type { CSSProperties } from "react"; import { Scramble } from "./Scramble"; +/** A small targeting reticle: dashed halo, ring, crosshair ticks, center dot. */ +function Reticle({ className, style }: { className?: string; style?: CSSProperties }) { + return ( + + + + + + + + + + + + ); +} + +// Romanised DeFi lexicon in katakana/kanji, read top-to-bottom on the rail. +const TERMS = "ハッシュ ・ 流動性 ・ デプス ・ ヴォルト ・ チェーン ・ 報酬 ・ 清算 ・ スプレッド ・ 市場深度"; + /** - * Site-wide cyber backdrop: survey column lines, cross marks, barcode ticks and - * decoding mono/kanji labels. Fixed behind all content, palette-clean, static - * except the two decoding labels. Drop one per non-hero screen. + * Site-wide cyber backdrop: dotted survey field, column lines with cross + * marks, targeting reticles, decoding mono/kanji labels and corner brackets. + * Fixed behind all content, palette-clean, static except the decoding labels. + * Drop one per non-hero screen. */ export function CyberGrid() { return ( @@ -11,6 +33,15 @@ export function CyberGrid() { aria-hidden className="pointer-events-none fixed inset-0 -z-10 overflow-hidden" > + {/* dotted survey field */} +
+ {/* survey column lines with cross marks */}
{[25, 50, 75].map((p) => ( @@ -32,23 +63,41 @@ export function CyberGrid() { ))}
- {/* corner locators */} + {/* corner brackets */} +
+
+ + {/* top coordinate header */} + + チェーン ・ RH-L2 4663 ・ E-2026.07 + + + {/* targeting reticles */} + + + + {/* katakana lexicon rail */} + + {TERMS} + + + {/* corner locators (decoding labels) */}
▚▞▚▚ ▞▚▞▚
- - 流動性デスク // RH-L2 4663 - - // 市場深度 + + + 市場深度 // Surface data +
); }