Fix persistent blink: scanline animation still active via base.css cascade
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 <noreply@anthropic.com>
This commit is contained in:
@@ -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; }
|
||||
|
||||
|
||||
@@ -117,6 +117,7 @@ body::before {
|
||||
);
|
||||
pointer-events: none;
|
||||
z-index: var(--z-overlay);
|
||||
animation: none;
|
||||
}
|
||||
|
||||
/* Screen Flicker Effect */
|
||||
|
||||
Reference in New Issue
Block a user