From f0c6b50fdd884c8d84e0d553fe0c47b956345544 Mon Sep 17 00:00:00 2001 From: neo Date: Sun, 21 Jun 2026 21:30:59 +0500 Subject: [PATCH] =?UTF-8?q?hero-v4:=20orbital=20cards=20=E2=80=94=20KPI=20?= =?UTF-8?q?cards=20rotate=20around=20center=20headline?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Orbital engine: - 8 KPI cards on elliptical orbits (rx:320-380, ry:100-140) - Cards rotate around center — appear on left/right edges - Visibility = |cos(angle)| — brightest at sides, fade toward center - Scale: 0.6–1.0 based on horizontal position - 60 radial lines from center outward (forward motion feel) - Glow pulses & expands with speed - Center: clean headline + CTA (composio.dev style) - Hover = accelerate orbit speed (CRUISE 0.4 → BOOST 3.0) No more dots, no falling snow — coherent orbital dance around the text --- hero-v4.html | 344 +++++++++++++++++---------------------------------- 1 file changed, 116 insertions(+), 228 deletions(-) diff --git a/hero-v4.html b/hero-v4.html index 8ca8ac0..e2f5a89 100644 --- a/hero-v4.html +++ b/hero-v4.html @@ -3,7 +3,7 @@ -ROI24 — Perspective Hero +ROI24 — Orbital Hero @@ -34,30 +34,28 @@ body { } /* ============================================================ - PERSPECTIVE STAGE — the tunnel + STAGE ============================================================ */ .stage { position: relative; width: 100%; height: 100vh; overflow: hidden; - perspective: 1000px; - perspective-origin: 50% 50%; } /* ============================================================ - VISUAL EFFECTS LAYER + FX LAYER ============================================================ */ .fx-layer { position: absolute; inset: 0; pointer-events: none; z-index: 1; } -/* Noise texture */ +/* Noise */ .fx-layer::before { content: ''; position: absolute; inset: 0; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.02'/%3E%3C/svg%3E"); opacity: 0.5; } -/* Goo — ambient light ahead */ +/* ── Glow at center ── */ .goo { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); @@ -70,58 +68,7 @@ body { transition: transform 0.5s ease, opacity 0.5s ease; } -/* ============================================================ - TUNNEL WALLS — cards on left & right with 3D perspective - ============================================================ */ -.wall { - position: absolute; top: 50%; z-index: 20; - transform-style: preserve-3d; - pointer-events: none; -} -.wall-left { - left: 4%; - transform: translateY(-50%) rotateY(12deg); - transform-origin: right center; -} -.wall-right { - right: 4%; - transform: translateY(-50%) rotateY(-12deg); - transform-origin: left center; -} - -/* Each card is a "panel" on the tunnel wall */ -.tunnel-card { - background: rgba(22,22,24,0.88); - backdrop-filter: blur(6px); - border: 1px solid rgba(255,255,255,0.07); - border-radius: 10px; - padding: 12px 14px; - width: 170px; - margin-bottom: 16px; - transition: opacity 0.4s ease, filter 0.4s ease; -} - -.tunnel-card .tl { - font-size: 9px; text-transform: uppercase; letter-spacing: 0.07em; - color: var(--text-dim); font-weight: 600; margin-bottom: 3px; -} -.tunnel-card .tv { - font-family: var(--mono); font-size: 17px; font-weight: 700; - line-height: 1.15; margin-bottom: 2px; -} -.tunnel-card .tv.g { color: var(--accent); } -.tunnel-card .tv.b { color: var(--blue); } -.tunnel-card .tv.a { color: var(--amber); } - -.tunnel-card .td { - display: inline-flex; align-items: center; gap: 2px; - padding: 2px 5px; border-radius: 3px; - font-family: var(--mono); font-weight: 600; font-size: 9px; -} -.tunnel-card .td.up { color: var(--accent); background: var(--accent-dim); } -.tunnel-card .td.down { color: var(--red); background: rgba(239,68,68,0.12); } - -/* ── RADIAL LINES ── lines from center outward */ +/* ── Radial lines from center ── */ .radial-line { position: absolute; top: 50%; left: 50%; height: 1px; @@ -133,26 +80,52 @@ body { ); transform-origin: left center; } - .radial-line.fast { background: linear-gradient(90deg, rgba(255,255,255,0.15) 0%, - rgba(34,197,94,0.35) 25%, + rgba(34,197,94,0.3) 25%, rgba(34,197,94,0.08) 55%, transparent 100% ); height: 1.5px; } -/* ── DOTS — starfield particles ── */ -.dot { - position: absolute; border-radius: 50%; - background: var(--accent); - box-shadow: 0 0 4px var(--accent); +/* ============================================================ + ORBITING CARDS + ============================================================ */ +.orbit-card { + position: absolute; + background: rgba(22,22,24,0.88); + backdrop-filter: blur(6px); + border: 1px solid rgba(255,255,255,0.08); + border-radius: 10px; + padding: 12px 16px; + width: 190px; + pointer-events: none; + transition: opacity 0.2s ease; } +.orbit-card .tl { + font-size: 9px; text-transform: uppercase; letter-spacing: 0.07em; + color: var(--text-dim); font-weight: 600; margin-bottom: 4px; +} +.orbit-card .tv { + font-family: var(--mono); font-size: 18px; font-weight: 700; + line-height: 1.15; margin-bottom: 3px; +} +.orbit-card .tv.g { color: var(--accent); } +.orbit-card .tv.b { color: var(--blue); } +.orbit-card .tv.a { color: var(--amber); } + +.orbit-card .td { + display: inline-flex; align-items: center; gap: 3px; + padding: 2px 6px; border-radius: 4px; + font-family: var(--mono); font-weight: 600; font-size: 10px; +} +.orbit-card .td.up { color: var(--accent); background: var(--accent-dim); } +.orbit-card .td.down { color: var(--red); background: rgba(239,68,68,0.12); } /* ============================================================ - CENTER — clean, no data, just headline + CENTER — clean headline ============================================================ */ .center { position: absolute; top: 50%; left: 50%; @@ -217,15 +190,13 @@ body { RESPONSIVE ============================================================ */ @media (max-width: 768px) { - .wall-left { left: 1%; } - .wall-right { right: 1%; } - .tunnel-card { width: 140px; padding: 10px 12px; } - .tunnel-card .tv { font-size: 15px; } + .orbit-card { width: 150px; padding: 10px 12px; } + .orbit-card .tv { font-size: 15px; } } @media (max-width: 480px) { - .tunnel-card { width: 110px; padding: 8px 10px; } - .tunnel-card .tv { font-size: 13px; } - .tunnel-card .tl { font-size: 8px; } + .orbit-card { width: 120px; padding: 8px 10px; } + .orbit-card .tv { font-size: 13px; } + .orbit-card .tl { font-size: 8px; } } @@ -233,16 +204,12 @@ body {
-
- -
-
+ -
@@ -271,81 +238,64 @@ body {