From 68ff89b48c16638f1bcdceada8900ac3ee240295 Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Thu, 19 Mar 2026 12:12:44 -0400 Subject: [PATCH] Fix persistent blink: scanline animation still active via base.css cascade MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root cause: removing 'animation' from dashboard.css body::before did NOT disable the scanline — it just stopped overriding base.css which still had 'animation: scanline 8s linear infinite'. CSS cascade means the base.css value remained active. Fixed by setting 'animation: none' explicitly in dashboard.css. Also fix base.css (used by all pages including ticket page): - Set body::before animation: none (removes GPU compositing layer from scanline) - Change corner-pulse/subtle-pulse/pulse-glow/pulse-red keyframes from text-shadow and box-shadow animations to opacity (GPU composited, zero CPU repaint overhead) - Change exec-running-pulse from box-shadow to opacity - Remove box-shadow from .lt-table tr:hover, .lt-card:hover, .lt-stat-card:hover - Remove text-shadow/box-shadow/transform from .lt-btn:hover and variants - Remove text-shadow from a:hover Co-Authored-By: Claude Sonnet 4.6 --- assets/css/base.css | 36 ++++++++++++------------------------ assets/css/dashboard.css | 1 + 2 files changed, 13 insertions(+), 24 deletions(-) diff --git a/assets/css/base.css b/assets/css/base.css index 50f6b63..547dd1c 100644 --- a/assets/css/base.css +++ b/assets/css/base.css @@ -175,7 +175,6 @@ a { } a:hover { color: var(--terminal-amber); - text-shadow: var(--glow-amber); } ul, ol { list-style: none; } @@ -200,7 +199,7 @@ body::before { ); pointer-events: none; z-index: var(--z-overlay); - animation: scanline 8s linear infinite; + animation: none; } /* Binary data-stream watermark — bottom-right corner */ @@ -650,7 +649,6 @@ pre { } .lt-card:hover { border-color: var(--terminal-green); - box-shadow: var(--box-glow-green); } .lt-card-title { @@ -701,13 +699,9 @@ pre { background: var(--terminal-green-dim); color: var(--terminal-amber); border-color: var(--terminal-amber); - text-shadow: var(--glow-amber-intense); - box-shadow: var(--box-glow-amber); - transform: translateY(-2px); } .lt-btn:active { - transform: translateY(0); - box-shadow: var(--box-glow-green); + opacity: 0.85; } .lt-btn:disabled { opacity: 0.4; @@ -725,7 +719,6 @@ pre { .lt-btn-primary::before { content: '> '; } .lt-btn-primary:hover { background: var(--terminal-amber-dim); - box-shadow: var(--box-glow-amber); } /* Red (destructive / danger) */ @@ -737,8 +730,6 @@ pre { background: var(--terminal-red-dim); color: var(--terminal-red); border-color: var(--terminal-red); - text-shadow: var(--glow-red); - box-shadow: var(--box-glow-red); } /* Small variant */ @@ -899,7 +890,6 @@ pre { } .lt-table tbody tr:hover { background: rgba(0, 255, 65, 0.06); - box-shadow: inset 0 0 20px rgba(0, 255, 65, 0.05); } /* Data table — compact, row-only separators, good for dense data */ @@ -1357,8 +1347,6 @@ pre { } .lt-stat-card:hover { border-color: var(--terminal-amber); - box-shadow: var(--box-glow-amber); - transform: translateY(-2px); } .lt-stat-card.active { background: var(--terminal-amber-dim); @@ -1560,23 +1548,23 @@ pre { } @keyframes corner-pulse { - 0%, 100% { text-shadow: var(--glow-green); } - 50% { text-shadow: var(--glow-green-intense); } + 0%, 100% { opacity: 0.7; } + 50% { opacity: 1; } } @keyframes subtle-pulse { - 0%, 100% { text-shadow: var(--glow-amber); } - 50% { text-shadow: var(--glow-amber-intense); } + 0%, 100% { opacity: 0.75; } + 50% { opacity: 1; } } @keyframes pulse-glow { - 0%, 100% { text-shadow: 0 0 5px currentColor, 0 0 10px currentColor; } - 50% { text-shadow: 0 0 10px currentColor, 0 0 20px currentColor, 0 0 30px currentColor; } + 0%, 100% { opacity: 0.7; } + 50% { opacity: 1; } } @keyframes pulse-red { - 0%, 100% { box-shadow: 0 0 0 0 rgba(255, 68, 68, 0.5); } - 50% { box-shadow: 0 0 6px 3px rgba(255, 68, 68, 0.2); } + 0%, 100% { opacity: 0.6; } + 50% { opacity: 1; } } @keyframes focus-pulse { @@ -1615,8 +1603,8 @@ pre { /* Item pulse for actively running tasks */ @keyframes exec-running-pulse { - 0%, 100% { border-color: var(--terminal-green); } - 50% { border-color: var(--status-running); box-shadow: 0 0 8px rgba(255, 193, 7, 0.35); } + 0%, 100% { border-color: var(--terminal-green); opacity: 0.7; } + 50% { border-color: var(--status-running); opacity: 1; } } .lt-item-running { animation: exec-running-pulse 2s ease-in-out infinite; } diff --git a/assets/css/dashboard.css b/assets/css/dashboard.css index ef6b7ab..9c9a1f8 100644 --- a/assets/css/dashboard.css +++ b/assets/css/dashboard.css @@ -117,6 +117,7 @@ body::before { ); pointer-events: none; z-index: var(--z-overlay); + animation: none; } /* Screen Flicker Effect */