CSS improvements and fixes
- Add missing CSS variables (--terminal-green-dim, --terminal-red) - Add global box-sizing: border-box for consistent layouts - Fix duplicate keyframe animations (blink-cursor, pulse-glow) - Replace hardcoded hex colors with CSS variables - Fix textarea width calculations (remove calc workarounds) - Add responsive thread depth for mobile - Add accessibility improvements: - Visible focus outlines for keyboard navigation - prefers-reduced-motion support - Fix duplicate transition property in .tab-btn - Update slider checked color to use terminal-green Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -7,8 +7,10 @@
|
|||||||
|
|
||||||
/* Terminal Colors */
|
/* Terminal Colors */
|
||||||
--terminal-green: #00ff41;
|
--terminal-green: #00ff41;
|
||||||
|
--terminal-green-dim: #00aa2a;
|
||||||
--terminal-amber: #ffb000;
|
--terminal-amber: #ffb000;
|
||||||
--terminal-cyan: #00ffff;
|
--terminal-cyan: #00ffff;
|
||||||
|
--terminal-red: #ff4444;
|
||||||
--text-primary: #00ff41;
|
--text-primary: #00ff41;
|
||||||
--text-secondary: #00cc33;
|
--text-secondary: #00cc33;
|
||||||
--text-muted: #008822;
|
--text-muted: #008822;
|
||||||
@@ -71,6 +73,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* ===== BASE ELEMENTS - TERMINAL STYLE ===== */
|
/* ===== BASE ELEMENTS - TERMINAL STYLE ===== */
|
||||||
|
|
||||||
|
/* Global box-sizing for consistent layouts */
|
||||||
|
*, *::before, *::after {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: var(--font-mono);
|
font-family: var(--font-mono);
|
||||||
margin: 0;
|
margin: 0;
|
||||||
@@ -177,6 +185,8 @@ textarea:focus::placeholder {
|
|||||||
input:focus,
|
input:focus,
|
||||||
textarea:focus,
|
textarea:focus,
|
||||||
select:focus {
|
select:focus {
|
||||||
|
outline: 2px solid var(--terminal-amber);
|
||||||
|
outline-offset: 2px;
|
||||||
animation: focus-pulse 2s ease-in-out infinite;
|
animation: focus-pulse 2s ease-in-out infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -185,6 +195,27 @@ select:focus {
|
|||||||
50% { box-shadow: var(--glow-amber-intense), inset 0 0 10px rgba(0, 0, 0, 0.5); }
|
50% { box-shadow: var(--glow-amber-intense), inset 0 0 10px rgba(0, 0, 0, 0.5); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Focus visible for keyboard navigation */
|
||||||
|
:focus-visible {
|
||||||
|
outline: 2px solid var(--terminal-amber);
|
||||||
|
outline-offset: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reduced motion for accessibility */
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
*,
|
||||||
|
*::before,
|
||||||
|
*::after {
|
||||||
|
animation-duration: 0.01ms !important;
|
||||||
|
animation-iteration-count: 1 !important;
|
||||||
|
transition-duration: 0.01ms !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
body::before {
|
||||||
|
animation: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Boot-up fade in effect */
|
/* Boot-up fade in effect */
|
||||||
@keyframes boot-up {
|
@keyframes boot-up {
|
||||||
0% {
|
0% {
|
||||||
@@ -1195,7 +1226,7 @@ button:hover {
|
|||||||
text-shadow: var(--glow-amber-intense);
|
text-shadow: var(--glow-amber-intense);
|
||||||
box-shadow: var(--glow-amber-intense);
|
box-shadow: var(--glow-amber-intense);
|
||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
animation: pulse-glow 1.5s ease-in-out infinite;
|
animation: pulse-glow-box 1.5s ease-in-out infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn:active,
|
.btn:active,
|
||||||
@@ -1205,7 +1236,7 @@ button:active {
|
|||||||
box-shadow: var(--glow-green-intense);
|
box-shadow: var(--glow-green-intense);
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes pulse-glow {
|
@keyframes pulse-glow-box {
|
||||||
0%, 100% { box-shadow: 0 0 8px currentColor, 0 0 16px currentColor; }
|
0%, 100% { box-shadow: 0 0 8px currentColor, 0 0 16px currentColor; }
|
||||||
50% { box-shadow: 0 0 12px currentColor, 0 0 24px currentColor, 0 0 32px currentColor; }
|
50% { box-shadow: 0 0 12px currentColor, 0 0 24px currentColor, 0 0 32px currentColor; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -295,14 +295,7 @@ textarea[data-field="description"]:not(:disabled)::after {
|
|||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes blink-cursor {
|
/* blink-cursor keyframes defined in dashboard.css */
|
||||||
0%, 50% {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
51%, 100% {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Mobile: Stack metadata fields */
|
/* Mobile: Stack metadata fields */
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
@@ -458,7 +451,7 @@ textarea[data-field="description"]:not(:disabled)::after {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.title-input[contenteditable="true"]:hover {
|
.title-input[contenteditable="true"]:hover {
|
||||||
border-color: #3b82f6;
|
border-color: var(--terminal-amber);
|
||||||
}
|
}
|
||||||
|
|
||||||
.title-input[contenteditable="false"] {
|
.title-input[contenteditable="false"] {
|
||||||
@@ -518,17 +511,15 @@ textarea[data-field="description"]:not(:disabled)::after {
|
|||||||
}
|
}
|
||||||
|
|
||||||
input.editable {
|
input.editable {
|
||||||
width: calc(100% - 20px);
|
width: 100%;
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
textarea.editable {
|
textarea.editable {
|
||||||
width: calc(100% - 20px);
|
width: 100%;
|
||||||
min-height: 800px !important;
|
min-height: 800px !important;
|
||||||
height: auto !important;
|
height: auto !important;
|
||||||
box-sizing: border-box;
|
|
||||||
white-space: pre;
|
white-space: pre;
|
||||||
font-family: monospace;
|
font-family: var(--font-mono);
|
||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -557,13 +548,15 @@ textarea.editable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.btn.primary {
|
.btn.primary {
|
||||||
background: #3b82f6;
|
background: var(--terminal-amber);
|
||||||
color: white;
|
color: var(--bg-primary);
|
||||||
|
border-color: var(--terminal-amber);
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn.active {
|
.btn.active {
|
||||||
background: #3b82f6;
|
background: var(--terminal-green);
|
||||||
color: white;
|
color: var(--bg-primary);
|
||||||
|
border-color: var(--terminal-green);
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn:hover {
|
.btn:hover {
|
||||||
@@ -608,7 +601,7 @@ textarea.editable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.comment-form textarea {
|
.comment-form textarea {
|
||||||
width: calc(100% - 20px);
|
width: 100%;
|
||||||
min-height: 100px;
|
min-height: 100px;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
@@ -617,6 +610,7 @@ textarea.editable {
|
|||||||
background: var(--bg-primary);
|
background: var(--bg-primary);
|
||||||
color: var(--terminal-green);
|
color: var(--terminal-green);
|
||||||
font-family: var(--font-mono);
|
font-family: var(--font-mono);
|
||||||
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
.comment-form textarea::placeholder {
|
.comment-form textarea::placeholder {
|
||||||
@@ -807,6 +801,7 @@ textarea.editable {
|
|||||||
font-family: var(--font-mono);
|
font-family: var(--font-mono);
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
resize: vertical;
|
resize: vertical;
|
||||||
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
.comment-edit-textarea:focus {
|
.comment-edit-textarea:focus {
|
||||||
@@ -864,6 +859,21 @@ textarea.editable {
|
|||||||
margin-left: 6rem;
|
margin-left: 6rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Reduce thread indentation on mobile */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.comment.thread-depth-1 {
|
||||||
|
margin-left: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.comment.thread-depth-2 {
|
||||||
|
margin-left: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.comment.thread-depth-3 {
|
||||||
|
margin-left: 2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Reply styling */
|
/* Reply styling */
|
||||||
.comment.comment-reply {
|
.comment.comment-reply {
|
||||||
position: relative;
|
position: relative;
|
||||||
@@ -967,6 +977,7 @@ textarea.editable {
|
|||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
resize: vertical;
|
resize: vertical;
|
||||||
margin-bottom: 0.75rem;
|
margin-bottom: 0.75rem;
|
||||||
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
.reply-form-container textarea:focus {
|
.reply-form-container textarea:focus {
|
||||||
@@ -1047,7 +1058,6 @@ textarea.editable {
|
|||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-right: -2px;
|
margin-right: -2px;
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-btn::before {
|
.tab-btn::before {
|
||||||
@@ -1168,7 +1178,7 @@ textarea.editable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
input:checked + .slider {
|
input:checked + .slider {
|
||||||
background-color: #3b82f6;
|
background-color: var(--terminal-green);
|
||||||
}
|
}
|
||||||
|
|
||||||
input:checked + .slider:before {
|
input:checked + .slider:before {
|
||||||
|
|||||||
Reference in New Issue
Block a user