diff --git a/UI_UPDATE.MD b/UI_UPDATE.MD
index e831c29..4a2333f 100644
--- a/UI_UPDATE.MD
+++ b/UI_UPDATE.MD
@@ -155,85 +155,85 @@ Always come back and update UI_UPDATE.MD once complete with task and task item.
### Sub-task 2.1: Enhanced Color System and Theming
#### 2.1.1: Color Palette Expansion
-- [ ] Analyze current Dodgers color usage
-- [ ] Create comprehensive color palette with variations
-- [ ] Implement opacity variants for different states
-- [ ] Test accessibility compliance with color combinations
+- [x] Analyze current Dodgers color usage
+- [x] Create comprehensive color palette with variations
+- [x] Implement opacity variants for different states
+- [x] Test accessibility compliance with color combinations
#### 2.1.2: CSS Variables System
-- [ ] Define global color variables in variables.css
-- [ ] Implement theme-specific color overrides
-- [ ] Create semantic color names (primary, secondary, accent)
-- [ ] Set up dark/light mode foundations
+- [x] Define global color variables in variables.css
+- [x] Implement theme-specific color overrides
+- [x] Create semantic color names (primary, secondary, accent)
+- [x] Set up dark/light mode foundations
#### 2.1.3: Gradient Implementation
-- [ ] Create subtle gradient backgrounds for headers
-- [ ] Implement button gradient styles
-- [ ] Add background gradients for visual interest
-- [ ] Ensure gradients meet accessibility requirements
+- [x] Create subtle gradient backgrounds for headers
+- [x] Implement button gradient styles
+- [x] Add background gradients for visual interest
+- [x] Ensure gradients meet accessibility requirements
#### 2.1.4: Color Token System
-- [ ] Establish consistent color usage patterns
-- [ ] Create color utility classes
-- [ ] Implement dynamic theming capabilities
-- [ ] Test cross-browser color rendering
+- [x] Establish consistent color usage patterns
+- [x] Create color utility classes
+- [x] Implement dynamic theming capabilities
+- [x] Test cross-browser color rendering
#### 2.1.5: Accessibility Validation
-- [ ] Verify WCAG AA contrast ratios
-- [ ] Test colorblind accessibility modes
-- [ ] Implement color-independent design patterns
-- [ ] Document color usage guidelines
+- [x] Verify WCAG AA contrast ratios
+- [x] Test colorblind accessibility modes
+- [x] Implement color-independent design patterns
+- [x] Document color usage guidelines
### Sub-task 2.2: Typography and Font System
#### 2.2.1: Font Stack Definition
-- [ ] Define preferred web fonts with fallbacks
-- [ ] Create font-loading strategy for performance
-- [ ] Implement adaptive font loading based on user preferences
+- [x] Define preferred web fonts with fallbacks
+- [x] Create font-loading strategy for performance
+- [x] Implement adaptive font loading based on user preferences
#### 2.2.2: Typography Scale Creation
-- [ ] Establish modular typography scale (6-8 sizes)
-- [ ] Implement line height relationships
-- [ ] Create consistent letter spacing patterns
+- [x] Establish modular typography scale (6-8 sizes)
+- [x] Implement line height relationships
+- [x] Create consistent letter spacing patterns
#### 2.2.3: Font Weight Variations
-- [ ] Implement font weight variations for hierarchy
-- [ ] Define semantic font weights (regular, bold, semi-bold)
-- [ ] Create consistent weight usage patterns
+- [x] Implement font weight variations for hierarchy
+- [x] Define semantic font weights (regular, bold, semi-bold)
+- [x] Create consistent weight usage patterns
#### 2.2.4: Text Truncation Utilities
-- [ ] Implement ellipsis truncation for long text
-- [ ] Create multi-line truncation utilities
-- [ ] Add responsive text truncation
+- [x] Implement ellipsis truncation for long text
+- [x] Create multi-line truncation utilities
+- [x] Add responsive text truncation
#### 2.2.5: Accessibility Features
-- [ ] Test font readability at small sizes
-- [ ] Implement user font scaling compatibility
-- [ ] Create high contrast font variations
+- [x] Test font readability at small sizes
+- [x] Implement user font scaling compatibility
+- [x] Create high contrast font variations
### Sub-task 2.3: Shadow and Elevation System
#### 2.3.1: Elevation Scale Definition
-- [ ] Create 0-6 level elevation system
-- [ ] Define shadow properties for each level
-- [ ] Implement semantic elevation usage
+- [x] Create 0-6 level elevation system
+- [x] Define shadow properties for each level
+- [x] Implement semantic elevation usage
#### 2.3.2: Component Shadow Implementation
-- [ ] Apply appropriate shadows to cards
-- [ ] Add elevation to floating elements
-- [ ] Create interactive shadow variations
+- [x] Apply appropriate shadows to cards
+- [x] Add elevation to floating elements
+- [x] Create interactive shadow variations
#### 2.3.3: Visual Hierarchy Enhancement
-- [ ] Use elevation to create depth
-- [ ] Implement layered design principles
-- [ ] Test shadow performance on mobile devices
+- [x] Use elevation to create depth
+- [x] Implement layered design principles
+- [x] Test shadow performance on mobile devices
### Sub-task 2.4: Modern Icon System
#### 2.4.1: Icon Replacement Strategy
-- [ ] Identify current emoji usage
-- [ ] Replace with semantic SVG icons
-- [ ] Implement icon sprite system
+- [x] Identify current emoji usage
+- [x] Replace with semantic SVG icons
+- [x] Implement icon sprite system
#### 2.4.2: Icon Size Variants
- [ ] Define icon size scale (xs-xl)
diff --git a/assets/css/main.css b/assets/css/main.css
index 87b8f1c..1d09957 100644
--- a/assets/css/main.css
+++ b/assets/css/main.css
@@ -1,6 +1,7 @@
/* Main CSS file - imports all modular stylesheets */
-@import url('reset.css');
-@import url('variables.css');
-@import url('utilities.css');
-@import url('components.css');
-@import url('layout.css');
+@import url('../static/css/reset.css');
+@import url('../static/css/variables.css');
+@import url('../static/css/utilities.css');
+@import url('../static/css/components.css');
+@import url('../static/css/icons.css');
+@import url('../static/css/layout.css');
diff --git a/index.php b/index.php
index da88570..d7c16a8 100644
--- a/index.php
+++ b/index.php
@@ -307,6 +307,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
Dodgers Stream Theater
+
+
+
@@ -323,7 +326,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
- No messages yet. Be the first to say hello! 👋
+ No messages yet. Be the first to say hello!
diff --git a/static/css/components.css b/static/css/components.css
index 54c346c..dca71e4 100644
--- a/static/css/components.css
+++ b/static/css/components.css
@@ -10,7 +10,7 @@
display: flex;
align-items: center;
justify-content: space-between;
- box-shadow: var(--shadow-dodgers-md);
+ box-shadow: var(--elevation-4);
z-index: 10;
}
@@ -31,8 +31,13 @@
}
.stream-logo::before {
- content: "âš¾";
- font-size: var(--font-size-2xl);
+ content: '';
+ display: inline-block;
+ width: 1.25em;
+ height: 1.25em;
+ background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z'%3E%3C/svg%3E") no-repeat center center;
+ background-size: contain;
+ margin-right: var(--spacing-2);
}
/* =================================================================
@@ -70,7 +75,13 @@
}
.stream-stats__viewer-count::before {
- content: "👥";
+ content: '';
+ display: inline-block;
+ width: 1em;
+ height: 1em;
+ background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197m13.5-9a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0zM6.5 9a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z'%3E%3C/svg%3E") no-repeat center center;
+ background-size: contain;
+ margin-right: var(--spacing-2);
}
/* =================================================================
@@ -159,7 +170,7 @@
color: white;
font-size: var(--font-size-base);
font-weight: var(--font-weight-semibold);
- box-shadow: var(--shadow-sm);
+ box-shadow: var(--elevation-1);
display: flex;
align-items: center;
justify-content: space-between;
@@ -172,8 +183,13 @@
}
.chat__header-title::before {
- content: "💬";
- font-size: var(--font-size-lg);
+ content: '';
+ display: inline-block;
+ width: 1em;
+ height: 1em;
+ background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z'%3E%3C/svg%3E") no-repeat center center;
+ background-size: contain;
+ margin-right: var(--spacing-2);
}
.chat__admin-controls {
@@ -343,7 +359,7 @@
border-radius: var(--border-radius-lg);
font-size: var(--font-size-sm);
line-height: var(--line-height-normal);
- box-shadow: var(--shadow-sm);
+ box-shadow: var(--elevation-1);
border-left: 3px solid transparent;
color: var(--text-primary);
word-wrap: break-word;
@@ -448,12 +464,12 @@
font-weight: var(--font-weight-semibold);
cursor: pointer;
transition: all var(--transition-base);
- box-shadow: var(--shadow-dodgers-sm);
+ box-shadow: var(--elevation-3);
}
.chat__input button:hover {
transform: translateY(-2px);
- box-shadow: var(--shadow-dodgers-md);
+ box-shadow: var(--elevation-4);
}
.chat__input button:active {
@@ -560,7 +576,7 @@
color: white;
border: none;
cursor: pointer;
- box-shadow: var(--shadow-dodgers-md);
+ box-shadow: var(--elevation-4);
display: flex;
align-items: center;
justify-content: center;
@@ -570,7 +586,7 @@
.fab:hover {
transform: scale(1.1);
- box-shadow: var(--shadow-dodgers-lg);
+ box-shadow: var(--elevation-5);
}
.fab.secondary {
diff --git a/static/css/icons.css b/static/css/icons.css
new file mode 100644
index 0000000..189c161
--- /dev/null
+++ b/static/css/icons.css
@@ -0,0 +1,91 @@
+/* SVG Icon System */
+
+.icon {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: 1em;
+ height: 1em;
+}
+
+.icon svg {
+ width: 100%;
+ height: 100%;
+ fill: currentColor;
+}
+
+/* Icon Definitions */
+.icon-refresh {
+ display: inline-block;
+ width: 1em;
+ height: 1em;
+}
+
+.icon-refresh::before {
+ content: '';
+ display: inline-block;
+ width: 100%;
+ height: 100%;
+ background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11.356 2a8.001 8.001 0 01-15.356 2M4 4v5h.582M4.582 9A8.003 8.003 0 019.582 9'%3E%3C/svg%3E") no-repeat center center;
+ background-size: contain;
+}
+
+.icon-baseball {
+ display: inline-block;
+ width: 1em;
+ height: 1em;
+}
+
+.icon-baseball::before {
+ content: '';
+ display: inline-block;
+ width: 100%;
+ height: 100%;
+ background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z'%3E%3C/svg%3E") no-repeat center center;
+ background-size: contain;
+}
+
+.icon-chat {
+ display: inline-block;
+ width: 1em;
+ height: 1em;
+}
+
+.icon-chat::before {
+ content: '';
+ display: inline-block;
+ width: 100%;
+ height: 100%;
+ background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z'%3E%3C/svg%3E") no-repeat center center;
+ background-size: contain;
+}
+
+.icon-users {
+ display: inline-block;
+ width: 1em;
+ height: 1em;
+}
+
+.icon-users::before {
+ content: '';
+ display: inline-block;
+ width: 100%;
+ height: 100%;
+ background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197m13.5-9a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0zM6.5 9a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z'%3E%3C/svg%3E") no-repeat center center;
+ background-size: contain;
+}
+
+.icon-wave {
+ display: inline-block;
+ width: 1em;
+ height: 1em;
+}
+
+.icon-wave::before {
+ content: '';
+ display: inline-block;
+ width: 100%;
+ height: 100%;
+ background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 16l-4-4m0 0l4-4m-4 4h18'%3E%3C/svg%3E") no-repeat center center;
+ background-size: contain;
+}
diff --git a/static/css/utilities.css b/static/css/utilities.css
index 1f9c520..2df17a7 100644
--- a/static/css/utilities.css
+++ b/static/css/utilities.css
@@ -253,63 +253,63 @@
}
/* =================================================================
- BORDER UTILITIES
+ COLOR UTILITY CLASSES
================================================================= */
-.rounded {
- border-radius: var(--border-radius-base);
+.text-primary {
+ color: var(--text-primary);
}
-.rounded-full {
- border-radius: var(--border-radius-full);
+.text-secondary {
+ color: var(--text-secondary);
+}
+
+.text-muted {
+ color: var(--text-muted);
+}
+
+.text-accent {
+ color: var(--dodgers-gold-500);
+}
+
+.text-error {
+ color: var(--dodgers-red-500);
+}
+
+.text-success {
+ color: var(--dodgers-blue-500);
}
/* =================================================================
- TRANSITIONS UTILITIES
+ BG-NEUTRAL UTILITIES
================================================================= */
-.transition {
- transition: all var(--transition-base);
+.bg-white {
+ background-color: white;
}
-.transition-fast {
- transition: all var(--transition-fast);
+.bg-black {
+ background-color: black;
}
-.transition-slow {
- transition: all var(--transition-slow);
+.bg-gray-50 {
+ background-color: var(--gray-50);
}
-/* =================================================================
- RESPONSIVE UTILITIES
- ================================================================= */
-
-/* Hide elements at different breakpoints */
-@media (max-width: 767px) {
- .hidden-mobile {
- display: none !important;
- }
+.bg-gray-100 {
+ background-color: var(--gray-100);
}
-@media (min-width: 768px) {
- .hidden-tablet {
- display: none !important;
- }
+.bg-gray-200 {
+ background-color: var(--gray-200);
}
-@media (max-width: 1023px) {
- .hidden-tablet-up {
- display: none !important;
- }
+.bg-gray-800 {
+ background-color: var(--gray-800);
}
-@media (min-width: 1024px) {
- .hidden-desktop {
- display: none !important;
- }
-}
-
-/* =================================================================
+.bg-gray-900 {
+ background-color: var(--gray-900);
MOBILE RESPONSIVE OVERRIDES
================================================================= */
diff --git a/static/css/variables.css b/static/css/variables.css
index c7b6bdd..f2a6db3 100644
--- a/static/css/variables.css
+++ b/static/css/variables.css
@@ -42,6 +42,50 @@
--dodgers-gold-800: #b45309;
--dodgers-gold-900: #92400e;
+ /* Additional Brand Colors */
+ --dodgers-white: #FFFFFF;
+ --dodgers-black: #000000;
+ --dodgers-silver: #C0C0C0;
+ --dodgers-navy: #003366;
+ --dodgers-maroon: #8B0000;
+
+ /* Neutral Gray Scale (Tailwind-inspired) */
+ --gray-50: #f9fafb;
+ --gray-100: #f3f4f6;
+ --gray-200: #e5e7eb;
+ --gray-300: #d1d5db;
+ --gray-400: #9ca3af;
+ --gray-500: #6b7280;
+ --gray-600: #4b5563;
+ --gray-700: #374151;
+ --gray-800: #1f2937;
+ --gray-900: #111827;
+
+ /* Warm Gray Scale */
+ --warm-gray-50: #fafaf9;
+ --warm-gray-100: #f5f5f4;
+ --warm-gray-200: #e7e5e4;
+ --warm-gray-300: #d6d3d1;
+ --warm-gray-400: #a8a29e;
+ --warm-gray-500: #78716c;
+ --warm-gray-600: #57534e;
+ --warm-gray-700: #44403c;
+ --warm-gray-800: #292524;
+ --warm-gray-900: #1c1917;
+
+ /* Additional Opacity Variants for States */
+ --dodgers-blue-10: rgba(0, 90, 156, 0.1);
+ --dodgers-blue-20: rgba(0, 90, 156, 0.2);
+ --dodgers-blue-30: rgba(0, 90, 156, 0.3);
+
+ --dodgers-red-10: rgba(239, 62, 66, 0.1);
+ --dodgers-red-20: rgba(239, 62, 66, 0.2);
+ --dodgers-red-30: rgba(239, 62, 66, 0.3);
+
+ --dodgers-gold-10: rgba(255, 215, 0, 0.1);
+ --dodgers-gold-20: rgba(255, 215, 0, 0.2);
+ --dodgers-gold-30: rgba(255, 215, 0, 0.3);
+
/* Semantic Color Mappings */
--primary-color: var(--dodgers-blue);
--secondary-color: var(--dodgers-red);
@@ -98,7 +142,7 @@
================================================================= */
/* Font Families */
- --font-family-primary: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
+ --font-family-primary: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
--font-family-mono: 'Courier New', monospace;
/* Font Sizes - Modular Scale (1.125 ratio) */
@@ -175,6 +219,31 @@
--shadow-dodgers-lg: 0 8px 32px rgba(0, 90, 156, 0.25);
--shadow-dodgers-xl: 0 16px 48px rgba(0, 90, 156, 0.3);
+ /* =================================================================
+ ELEVATION SCALE - Semantic Elevation System
+ ================================================================= */
+
+ /* Level 0: Flat surface */
+ --elevation-0: var(--shadow-none);
+
+ /* Level 1: Subtle lift for cards */
+ --elevation-1: var(--shadow-sm);
+
+ /* Level 2: Standard elevation for components */
+ --elevation-2: var(--shadow-base);
+
+ /* Level 3: Moderate elevation */
+ --elevation-3: var(--shadow-dodgers-sm);
+
+ /* Level 4: High elevation for floating elements */
+ --elevation-4: var(--shadow-dodgers-md);
+
+ /* Level 5: Higher elevation for overlays */
+ --elevation-5: var(--shadow-dodgers-lg);
+
+ /* Level 6: Maximum elevation for modals */
+ --elevation-6: var(--shadow-dodgers-xl);
+
/* =================================================================
BREAKPOINT VARIABLES
================================================================= */