/* ===== CSS VARIABLES - TERMINAL EDITION ===== */ :root { /* Terminal Dark Backgrounds */ --bg-primary: #0a0a0a; --bg-secondary: #1a1a1a; --bg-tertiary: #2a2a2a; /* Terminal Colors */ --terminal-green: #00ff41; --terminal-amber: #ffb000; --terminal-cyan: #00ffff; --text-primary: #00ff41; --text-secondary: #00cc33; --text-muted: #008822; /* Border & UI */ --border-color: #00ff41; --shadow: none; --hover-bg: rgba(0, 255, 65, 0.1); --border-radius: 0; /* Priority Colors (Keep existing) */ --priority-1: #ff4d4d; --priority-2: #ffa726; --priority-3: #42a5f5; --priority-4: #66bb6a; --priority-5: #9e9e9e; /* Status Colors */ --status-open: #28a745; --status-pending: #9c27b0; --status-in-progress: #ffc107; --status-closed: #dc3545; /* Terminal Font Stack */ --font-mono: 'Courier New', 'Consolas', 'Monaco', 'Menlo', monospace; /* Glow Effects - Enhanced for stronger phosphor effect */ --glow-green: 0 0 5px #00ff41, 0 0 10px #00ff41, 0 0 15px #00ff41; --glow-green-intense: 0 0 8px #00ff41, 0 0 16px #00ff41, 0 0 24px #00ff41, 0 0 32px rgba(0, 255, 65, 0.5); --glow-red: 0 0 5px #ff4d4d, 0 0 10px #ff4d4d, 0 0 15px #ff4d4d; --glow-blue: 0 0 5px #42a5f5, 0 0 10px #42a5f5, 0 0 15px #42a5f5; --glow-amber: 0 0 5px #ffb000, 0 0 10px #ffb000, 0 0 15px #ffb000; --glow-amber-intense: 0 0 8px #ffb000, 0 0 16px #ffb000, 0 0 24px #ffb000; --glow-priority-1: 0 0 5px #ff4d4d, 0 0 10px #ff4d4d, 0 0 15px #ff4d4d; --glow-priority-2: 0 0 5px #ffa726, 0 0 10px #ffa726, 0 0 15px #ffa726; --glow-priority-3: 0 0 5px #42a5f5, 0 0 10px #42a5f5, 0 0 15px #42a5f5; --glow-priority-4: 0 0 5px #66bb6a, 0 0 10px #66bb6a, 0 0 15px #66bb6a; --glow-priority-5: 0 0 5px #9e9e9e, 0 0 10px #9e9e9e, 0 0 15px #9e9e9e; /* Spacing */ --spacing-xs: 0.5rem; --spacing-sm: 1rem; --spacing-md: 1.5rem; --spacing-lg: 2rem; /* Transitions */ --transition-default: all 0.3s ease; } /* Dark theme (now same as light for terminal aesthetic) */ [data-theme="dark"] { --bg-primary: #0a0a0a; --bg-secondary: #1a1a1a; --bg-tertiary: #2a2a2a; --text-primary: #00ff41; --text-secondary: #00cc33; --border-color: #00ff41; --shadow: none; --hover-bg: rgba(0, 255, 65, 0.1); } /* ===== BASE ELEMENTS - TERMINAL STYLE ===== */ body { font-family: var(--font-mono); margin: 0; padding: var(--spacing-md); background-color: var(--bg-primary); color: var(--text-primary); transition: var(--transition-default); position: relative; } /* CRT Scanline Effect - Subtle retro terminal look */ body::before { content: ''; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: repeating-linear-gradient( 0deg, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.15) 1px, transparent 1px, transparent 2px ); pointer-events: none; z-index: 9999; animation: scanline 8s linear infinite; } @keyframes scanline { 0% { transform: translateY(0); } 100% { transform: translateY(4px); } } /* Screen Flicker Effect */ @keyframes flicker { 0% { opacity: 1; } 10% { opacity: 0.95; } 20% { opacity: 1; } 30% { opacity: 0.97; } 40% { opacity: 1; } } @keyframes glitch { 0% { transform: translate(0); } 20% { transform: translate(-2px, 2px); } 40% { transform: translate(-2px, -2px); } 60% { transform: translate(2px, 2px); } 80% { transform: translate(2px, -2px); } 100% { transform: translate(0); } } .ascii-frame-outer:hover { animation: flicker 0.15s ease-in-out 1; } /* Random screen glitch every 30 seconds */ body { animation: flicker 0.2s ease-in-out 30s infinite; } /* Subtle data stream effect in corner */ body::after { content: '10101010'; position: fixed; bottom: 10px; right: 10px; font-family: var(--font-mono); font-size: 0.6rem; color: var(--terminal-green); opacity: 0.1; pointer-events: none; letter-spacing: 2px; animation: data-stream 3s linear infinite; } @keyframes data-stream { 0% { content: '10101010'; opacity: 0.1; } 25% { content: '01010101'; opacity: 0.15; } 50% { content: '11001100'; opacity: 0.1; } 75% { content: '00110011'; opacity: 0.15; } 100% { content: '10101010'; opacity: 0.1; } } body.menu-open { padding-left: 260px; } h1 { color: var(--text-primary); margin: 0; } /* ===== USER HEADER - TERMINAL STYLE ===== */ .user-header { background: var(--bg-secondary); padding: 0.5rem 1rem; color: var(--terminal-green); display: flex; justify-content: space-between; align-items: center; border-bottom: 2px solid var(--terminal-green); box-shadow: 0 2px 20px rgba(0, 255, 65, 0.2); box-sizing: border-box; font-family: var(--font-mono); position: relative; } .user-header::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent 0%, var(--terminal-green) 20%, var(--terminal-green) 80%, transparent 100%); box-shadow: var(--glow-green); } .user-header-left, .user-header-right { display: flex; align-items: center; gap: 0.75rem; flex-shrink: 1; min-width: 0; } .app-title { font-weight: bold; font-size: 1rem; color: var(--terminal-amber); text-shadow: var(--glow-amber-intense); white-space: nowrap; animation: subtle-pulse 3s ease-in-out infinite; } .app-title::before { content: '>> '; color: var(--terminal-green); text-shadow: var(--glow-green); } .back-link { color: var(--terminal-green); text-decoration: none; font-weight: bold; font-size: 1rem; white-space: nowrap; text-shadow: var(--glow-green); } .back-link:hover { color: var(--terminal-amber); text-shadow: var(--glow-amber); } .user-name { color: var(--terminal-green); font-size: 0.9rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .admin-badge { background: transparent; color: var(--priority-1); padding: 0.2rem 0.5rem; border: 2px solid var(--priority-1); border-radius: 0; /* Terminal aesthetic - no rounded corners */ font-size: 0.75rem; font-weight: bold; white-space: nowrap; text-shadow: var(--glow-priority-1); font-family: var(--font-mono); } .admin-badge::before { content: '['; margin-right: 3px; } .admin-badge::after { content: ']'; margin-left: 3px; } /* Responsive design for smaller screens */ @media (max-width: 768px) { .user-header { padding: 0.5rem 0.75rem; margin-left: 0; /* Remove margin on mobile */ } .app-title, .back-link { font-size: 0.9rem; } .user-name { font-size: 0.85rem; } } /* ===== ASCII BORDER SYSTEM ===== */ .ascii-box { position: relative; border: 2px solid var(--terminal-green); border-radius: 0; padding: 1rem; background: var(--bg-secondary); font-family: var(--font-mono); } .ascii-box-heavy { border: 3px double var(--terminal-green); } .ascii-title { position: relative; padding: 0.5rem 1rem; background: var(--bg-primary); border-bottom: 2px solid var(--terminal-green); font-family: var(--font-mono); font-weight: bold; color: var(--terminal-green); text-shadow: var(--glow-green); } .ascii-title::before { content: '═══ '; } .ascii-title::after { content: ' ═══'; } /* Priority-specific border colors */ .ascii-box[data-priority="1"] { border-color: var(--priority-1); } .ascii-box[data-priority="2"] { border-color: var(--priority-2); } .ascii-box[data-priority="3"] { border-color: var(--priority-3); } .ascii-box[data-priority="4"] { border-color: var(--priority-4); } .ascii-box[data-priority="5"] { border-color: var(--priority-5); } /* ===== NESTED ASCII FRAME SYSTEM ===== */ /* Main outer container - Heavy double border */ .ascii-frame-outer { position: relative; border: 3px double var(--terminal-green); padding: 0; background: var(--bg-primary); margin-bottom: 2rem; } .ascii-frame-outer::before { content: '╔'; position: absolute; top: -3px; left: -3px; font-size: 1.5rem; color: var(--terminal-green); line-height: 1; z-index: 10; } .ascii-frame-outer::after { content: '╗'; position: absolute; top: -3px; right: -3px; font-size: 1.5rem; color: var(--terminal-green); line-height: 1; z-index: 10; } /* Bottom corners as separate elements with enhanced glow */ .bottom-left-corner, .bottom-right-corner { position: absolute; bottom: -3px; font-size: 1.5rem; color: var(--terminal-green); text-shadow: var(--glow-green); line-height: 1; z-index: 10; animation: corner-pulse 4s ease-in-out infinite; } @keyframes corner-pulse { 0%, 100% { text-shadow: var(--glow-green); } 50% { text-shadow: var(--glow-green-intense); } } .bottom-left-corner { left: -3px; } .bottom-right-corner { right: -3px; } /* Inner section frame - Single border */ .ascii-frame-inner { position: relative; border: 2px solid var(--terminal-green); padding: 1rem; background: var(--bg-secondary); margin: 1rem; } .ascii-frame-inner::before { content: '┌'; position: absolute; top: -2px; left: -2px; font-size: 1.2rem; color: var(--terminal-green); line-height: 1; } .ascii-frame-inner::after { content: '┐'; position: absolute; top: -2px; right: -2px; font-size: 1.2rem; color: var(--terminal-green); line-height: 1; } /* Section headers with ASCII decoration */ .ascii-section-header { position: relative; padding: 0.75rem 1.5rem; background: var(--bg-primary); border-bottom: 2px solid var(--terminal-green); font-family: var(--font-mono); font-weight: bold; color: var(--terminal-amber); text-shadow: var(--glow-amber-intense); text-transform: uppercase; letter-spacing: 0.1em; animation: subtle-pulse 3s ease-in-out infinite; } @keyframes subtle-pulse { 0%, 100% { text-shadow: var(--glow-amber); } 50% { text-shadow: var(--glow-amber-intense); } } .ascii-section-header::before { content: '╠═══ '; color: var(--terminal-green); margin-right: 0.5rem; } .ascii-section-header::after { content: ' ═══╣'; color: var(--terminal-green); margin-left: 0.5rem; } /* Subsection headers for nested areas */ .ascii-subsection-header { position: relative; padding: 0.5rem 1rem; background: var(--bg-secondary); border-bottom: 1px solid var(--terminal-green); font-family: var(--font-mono); font-weight: bold; color: var(--terminal-green); text-transform: uppercase; font-size: 0.9em; } .ascii-subsection-header::before { content: '├─── '; color: var(--terminal-green); } .ascii-subsection-header::after { content: ' ───┤'; color: var(--terminal-green); } /* Section dividers */ .ascii-divider { height: 2px; background: linear-gradient(90deg, var(--terminal-green) 0%, var(--terminal-green) 48%, transparent 48%, transparent 52%, var(--terminal-green) 52%, var(--terminal-green) 100%); margin: 1.5rem 0; position: relative; } .ascii-divider::before { content: '╞═══'; position: absolute; left: -2px; top: -11px; color: var(--terminal-green); font-size: 1.2rem; text-shadow: var(--glow-green); letter-spacing: -2px; } .ascii-divider::after { content: '═══╡'; position: absolute; right: -2px; top: -11px; color: var(--terminal-green); font-size: 1.2rem; text-shadow: var(--glow-green); letter-spacing: -2px; } /* Content wrapper inside frames */ .ascii-content { padding: 1rem; background: var(--bg-secondary); } /* Priority-based color variants for outer frames */ .ascii-frame-outer[data-priority="1"], .ascii-frame-outer[data-priority="1"]::before, .ascii-frame-outer[data-priority="1"]::after { border-color: var(--priority-1); color: var(--priority-1); } .ascii-frame-outer[data-priority="1"] .bottom-left-corner, .ascii-frame-outer[data-priority="1"] .bottom-right-corner { color: var(--priority-1); } .ascii-frame-outer[data-priority="2"], .ascii-frame-outer[data-priority="2"]::before, .ascii-frame-outer[data-priority="2"]::after { border-color: var(--priority-2); color: var(--priority-2); } .ascii-frame-outer[data-priority="2"] .bottom-left-corner, .ascii-frame-outer[data-priority="2"] .bottom-right-corner { color: var(--priority-2); } .ascii-frame-outer[data-priority="3"], .ascii-frame-outer[data-priority="3"]::before, .ascii-frame-outer[data-priority="3"]::after { border-color: var(--priority-3); color: var(--priority-3); } .ascii-frame-outer[data-priority="3"] .bottom-left-corner, .ascii-frame-outer[data-priority="3"] .bottom-right-corner { color: var(--priority-3); } .ascii-frame-outer[data-priority="4"], .ascii-frame-outer[data-priority="4"]::before, .ascii-frame-outer[data-priority="4"]::after { border-color: var(--priority-4); color: var(--priority-4); } .ascii-frame-outer[data-priority="4"] .bottom-left-corner, .ascii-frame-outer[data-priority="4"] .bottom-right-corner { color: var(--priority-4); } .ascii-frame-outer[data-priority="5"], .ascii-frame-outer[data-priority="5"]::before, .ascii-frame-outer[data-priority="5"]::after { border-color: var(--priority-5); color: var(--priority-5); } .ascii-frame-outer[data-priority="5"] .bottom-left-corner, .ascii-frame-outer[data-priority="5"] .bottom-right-corner { color: var(--priority-5); } /* ===== TERMINAL PROMPT STYLES ===== */ .terminal-prompt::before { content: '> '; color: var(--terminal-green); font-weight: bold; } .terminal-command::before { content: '$ '; color: var(--terminal-amber); font-weight: bold; } .terminal-checkbox-checked::before { content: '[✓] '; color: var(--terminal-green); } .terminal-checkbox-unchecked::before { content: '[ ] '; color: var(--text-secondary); } .terminal-status-active::before { content: '[●] '; color: var(--status-open); } .terminal-status-inactive::before { content: '[○] '; color: var(--text-secondary); } /* ===== TEXT GLOW EFFECTS ===== */ .glow-text { text-shadow: var(--glow-green); } .glow-priority-1 { text-shadow: var(--glow-priority-1); } .glow-priority-2 { text-shadow: var(--glow-priority-2); } .glow-priority-3 { text-shadow: var(--glow-priority-3); } .glow-priority-4 { text-shadow: var(--glow-priority-4); } .glow-priority-5 { text-shadow: var(--glow-priority-5); } .glow-status-open { text-shadow: 0 0 5px var(--status-open), 0 0 10px var(--status-open); } .glow-status-progress { text-shadow: 0 0 5px var(--status-in-progress), 0 0 10px var(--status-in-progress); } .glow-status-closed { text-shadow: 0 0 5px var(--status-closed), 0 0 10px var(--status-closed); } @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; } } .pulse-glow { animation: pulse-glow 2s ease-in-out infinite; } /* ===== TYPEWRITER ANIMATION ===== */ @keyframes typewriter { from { width: 0; } to { width: 100%; } } @keyframes blink-caret { from, to { border-color: transparent; } 50% { border-color: var(--terminal-green); } } .typewriter { overflow: hidden; white-space: nowrap; border-right: 3px solid var(--terminal-green); animation: typewriter 2s steps(40, end), blink-caret 0.75s step-end infinite; } .typewriter-slow { animation-duration: 4s; } .typewriter-fast { animation-duration: 1s; } .typewriter-multi-line { overflow: hidden; animation: reveal-lines 3s steps(20, end) forwards; } @keyframes reveal-lines { from { max-height: 0; } to { max-height: 500px; } } /* ===== LOADING STATES ===== */ .loading-terminal { display: inline-block; font-family: var(--font-mono); color: var(--terminal-green); } .loading-terminal::after { content: '...'; animation: loading-dots 1.5s steps(4, end) infinite; } @keyframes loading-dots { 0%, 20% { content: '.'; } 40% { content: '..'; } 60%, 100% { content: '...'; } } .spinner-terminal { display: inline-block; font-family: var(--font-mono); color: var(--terminal-green); } .spinner-terminal::before { content: '['; } .spinner-terminal::after { content: ']'; animation: spinner-rotate 1s linear infinite; } @keyframes spinner-rotate { 0% { content: '|]'; } 25% { content: '/]'; } 50% { content: '─]'; } 75% { content: '\\]'; } 100% { content: '|]'; } } /* ===== MESSAGE STYLES ===== */ .error-message { padding: 15px 20px; background: rgba(255, 77, 77, 0.1); border: 2px solid var(--priority-1); border-radius: 0; font-family: var(--font-mono); color: var(--priority-1); margin: 20px 0; } .error-message::before { content: '[!] ERROR: '; font-weight: bold; } .success-message { padding: 15px 20px; background: rgba(40, 167, 69, 0.1); border: 2px solid var(--status-open); border-radius: 0; font-family: var(--font-mono); color: var(--status-open); margin: 20px 0; } .success-message::before { content: '[✓] SUCCESS: '; font-weight: bold; } .info-message { padding: 15px 20px; background: rgba(66, 165, 245, 0.1); border: 2px solid var(--priority-3); border-radius: 0; font-family: var(--font-mono); color: var(--priority-3); margin: 20px 0; } .info-message::before { content: '[i] INFO: '; font-weight: bold; } /* ===== EMPTY STATES ===== */ .empty-state { text-align: center; padding: 60px 20px; font-family: var(--font-mono); color: var(--terminal-green); } .empty-state::before { content: '\A╔════════════════════════════╗\A║ ║\A║ NO DATA FOUND ║\A║ ║\A╚════════════════════════════╝\A'; white-space: pre; display: block; font-size: 0.9rem; line-height: 1.2; margin-bottom: 20px; opacity: 0.7; } /* ===== LAYOUT COMPONENTS ===== */ .dashboard-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-md); margin-left: 3.75rem; } .table-controls { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; padding: 10px; background: var(--bg-secondary); border-radius: 0; box-shadow: var(--shadow); } .ticket-count { font-weight: 500; color: var(--text-secondary); } .table-actions { display: flex; gap: 15px; align-items: center; } /* ===== BUTTON STYLES - TERMINAL EDITION ===== */ .btn, .btn-base, button { font-family: var(--font-mono); background: transparent; color: var(--terminal-green); border: 2px solid var(--terminal-green); border-radius: 0; padding: 10px 20px; cursor: pointer; text-transform: uppercase; font-weight: bold; position: relative; transition: all 0.3s ease; } .btn::before, .btn-base::before, button::before { content: '[ '; } .btn::after, .btn-base::after, button::after { content: ' ]'; } .btn:hover, .btn-base:hover, button:hover { background: rgba(0, 255, 65, 0.15); color: var(--terminal-amber); border-color: var(--terminal-amber); text-shadow: var(--glow-amber-intense); box-shadow: var(--glow-amber-intense); transform: translateY(-2px); animation: pulse-glow 1.5s ease-in-out infinite; } .btn:active, .btn-base:active, button:active { transform: translateY(0); box-shadow: var(--glow-green-intense); } @keyframes pulse-glow { 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; } } /* Terminal prompt for primary action buttons */ .btn.create-ticket::before, .btn.primary::before { content: '> '; margin-right: 4px; } .btn.create-ticket::after, .btn.primary::after { content: ''; } .btn-primary, .create-ticket { background: transparent; color: var(--terminal-amber); border: 2px solid var(--terminal-amber); padding: 0.625rem 1.25rem; border-radius: 0; cursor: pointer; font-weight: bold; font-family: var(--font-mono); text-transform: uppercase; transition: all 0.3s ease; margin-right: 3.75rem; text-shadow: var(--glow-amber); } .btn-primary::before, .create-ticket::before { content: '[ '; } .btn-primary::after, .create-ticket::after { content: ' ]'; } .btn-primary:hover, .create-ticket:hover { background: rgba(255, 176, 0, 0.1); color: var(--terminal-green); border-color: var(--terminal-green); text-shadow: var(--glow-green); transform: translateY(-2px); } /* ===== TABLE STYLES - TERMINAL EDITION ===== */ table { width: 100%; border-collapse: collapse; background: var(--bg-secondary); border: 2px solid var(--terminal-green); border-radius: 0; box-shadow: none; font-family: var(--font-mono); position: relative; } /* ASCII corner decorations with glow */ table::before { content: '┌'; position: absolute; top: -2px; left: -2px; font-size: 1.2rem; color: var(--terminal-green); text-shadow: var(--glow-green); line-height: 1; z-index: 10; } table::after { content: '┐'; position: absolute; top: -2px; right: -2px; font-size: 1.2rem; color: var(--terminal-green); text-shadow: var(--glow-green); line-height: 1; z-index: 10; } th, td { padding: 12px 16px; text-align: left; border: 1px solid var(--terminal-green); color: var(--terminal-green); font-family: var(--font-mono); } th { background-color: var(--bg-primary); font-weight: bold; text-transform: uppercase; font-size: 0.85em; letter-spacing: 0.1em; position: relative; cursor: pointer; color: var(--terminal-amber); text-shadow: var(--glow-amber); transition: all 0.3s ease; } th:hover { text-shadow: var(--glow-amber-intense); background-color: rgba(255, 176, 0, 0.05); } /* Add terminal prompt to headers */ th::before { content: '> '; color: var(--terminal-green); margin-right: 4px; } tr:hover { background-color: rgba(0, 255, 65, 0.08); box-shadow: inset 0 0 20px rgba(0, 255, 65, 0.1); } tbody tr td:first-child { border-left: 6px solid; } /* Priority row colors */ tbody tr.priority-1 td:first-child { border-left-color: var(--priority-1); } tbody tr.priority-2 td:first-child { border-left-color: var(--priority-2); } tbody tr.priority-3 td:first-child { border-left-color: var(--priority-3); } tbody tr.priority-4 td:first-child { border-left-color: var(--priority-4); } tbody tr.priority-5 td:first-child { border-left-color: var(--priority-5); } /* Priority number styling - TERMINAL STYLE */ td:nth-child(2) { text-align: center; } td:nth-child(2) span { font-weight: bold; font-family: var(--font-mono); padding: 4px 8px; border-radius: 0; display: inline-block; background: transparent; } /* Add brackets to priority badges */ td:nth-child(2) span::before { content: '['; color: var(--terminal-green); margin-right: 2px; } td:nth-child(2) span::after { content: ']'; color: var(--terminal-green); margin-left: 2px; } .priority-1 td:nth-child(2) { color: var(--priority-1); text-shadow: var(--glow-priority-1); font-weight: bold; } .priority-1 td:nth-child(2)::after { content: ' ▲▲'; font-size: 0.7em; } .priority-2 td:nth-child(2) { color: var(--priority-2); text-shadow: var(--glow-priority-2); font-weight: bold; } .priority-2 td:nth-child(2)::after { content: ' ▲'; font-size: 0.7em; } .priority-3 td:nth-child(2) { color: var(--priority-3); text-shadow: var(--glow-priority-3); } .priority-3 td:nth-child(2)::after { content: ' ●'; font-size: 0.7em; } .priority-4 td:nth-child(2) { color: var(--priority-4); text-shadow: var(--glow-priority-4); } .priority-4 td:nth-child(2)::after { content: ' ▼'; font-size: 0.7em; } .priority-5 td:nth-child(2) { color: var(--priority-5); text-shadow: var(--glow-priority-5); } .priority-5 td:nth-child(2)::after { content: ' ▼▼'; font-size: 0.7em; } /* ===== STATUS STYLES - TERMINAL EDITION ===== */ .status-Open { background-color: transparent !important; color: var(--status-open) !important; padding: 4px 12px; border-radius: 0 !important; border: 2px solid var(--status-open) !important; font-size: 0.875rem; font-weight: 500; font-family: var(--font-mono); text-shadow: 0 0 5px var(--status-open), 0 0 10px var(--status-open); } .status-Open::before { content: '[●'; margin-right: 4px; } .status-Open::after { content: ']'; margin-left: 4px; } .status-In-Progress { background-color: transparent !important; color: var(--status-in-progress) !important; padding: 4px 12px; border-radius: 0 !important; border: 2px solid var(--status-in-progress) !important; font-size: 0.875rem; font-weight: 500; min-width: 140px; white-space: nowrap; display: inline-block; font-family: var(--font-mono); text-shadow: 0 0 5px var(--status-in-progress), 0 0 10px var(--status-in-progress); } .status-In-Progress::before { content: '[◐'; margin-right: 4px; animation: spin-status 2s linear infinite; } @keyframes spin-status { 0% { content: '[◐'; } 25% { content: '[◓'; } 50% { content: '[◑'; } 75% { content: '[◒'; } 100% { content: '[◐'; } } .status-In-Progress::after { content: ']'; margin-left: 4px; } .status-Closed { background-color: transparent !important; color: var(--status-closed) !important; padding: 4px 12px; border-radius: 0 !important; border: 2px solid var(--status-closed) !important; font-size: 0.875rem; font-weight: 500; font-family: var(--font-mono); text-shadow: 0 0 5px var(--status-closed), 0 0 10px var(--status-closed); } .status-Closed::before { content: '[✓'; margin-right: 4px; } .status-Closed::after { content: ']'; margin-left: 4px; } .status-Pending { background-color: transparent !important; color: var(--status-pending) !important; padding: 4px 12px; border-radius: 0 !important; border: 2px solid var(--status-pending) !important; font-size: 0.875rem; font-weight: 500; font-family: var(--font-mono); text-shadow: 0 0 5px var(--status-pending), 0 0 10px var(--status-pending); } .status-Pending::before { content: '[⏸'; margin-right: 4px; } .status-Pending::after { content: ']'; margin-left: 4px; } /* ===== SEARCH AND FILTER STYLES - TERMINAL EDITION ===== */ .search-box, input[type="text"], input[type="search"], textarea, select { font-family: var(--font-mono); background: var(--bg-primary); color: var(--terminal-green); border: 2px solid var(--terminal-green); border-radius: 0; padding: 8px 12px; transition: all 0.3s ease; box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.5); } .search-box:focus, input[type="text"]:focus, input[type="search"]:focus, textarea:focus, select:focus { outline: none; border-color: var(--terminal-amber); box-shadow: var(--glow-amber), inset 0 0 10px rgba(0, 0, 0, 0.5); background: rgba(0, 255, 65, 0.05); } .search-box { margin-left: 1.25rem; width: 40%; } input:focus, textarea:focus, select:focus, .search-box:focus { outline: none; border-color: var(--terminal-amber); box-shadow: 0 0 10px rgba(255, 176, 0, 0.3); text-shadow: var(--glow-green); } .search-container { margin: 20px 0; padding: 0 20px; } .search-form { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; } /* Terminal prompt before search box */ .search-form::before { content: '$ SEARCH'; font-family: var(--font-mono); color: var(--terminal-amber); font-weight: bold; text-shadow: var(--glow-amber); } /* Checkbox styling */ input[type="checkbox"] { appearance: none; width: 18px; height: 18px; border: 2px solid var(--terminal-green); background: var(--bg-primary); position: relative; cursor: pointer; border-radius: 0; } input[type="checkbox"]:checked::before { content: '✓'; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: var(--terminal-green); font-size: 14px; font-weight: bold; } input[type="checkbox"]:checked { background: rgba(0, 255, 65, 0.1); } .search-box:focus { outline: none; border-color: #007cba; } .search-btn { padding: 10px 20px; background-color: #007cba; color: white; border: none; border-radius: 0; cursor: pointer; font-size: 16px; transition: background-color 0.3s; } .search-btn:hover { background-color: #005a87; } .clear-search-btn { padding: 10px 15px; background-color: #6c757d; color: white; text-decoration: none; border-radius: 0; font-size: 14px; transition: background-color 0.3s; } .clear-search-btn:hover { background-color: #545b62; } /* Show search results info */ .search-results-info { margin: 10px 0; padding: 10px; background-color: #e7f3ff; border-left: 4px solid #007cba; border-radius: 0; } /* Status Filter Dropdown */ .status-filter-container { position: relative; display: inline-block; margin-right: 15px; } .status-dropdown { position: relative; display: inline-block; } .dropdown-header { padding: 8px 15px; background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 0; cursor: pointer; min-width: 120px; } .dropdown-content { display: none; position: absolute; top: 100%; left: 0; background: var(--bg-secondary); min-width: 160px; box-shadow: var(--shadow); border-radius: 0; padding: 10px; z-index: 100; border: 1px solid var(--border-color); } .status-dropdown.active .dropdown-content { display: block; } .dropdown-content label { display: block; padding: 8px; cursor: pointer; transition: background 0.2s; } .dropdown-content label:hover { background: var(--hover-bg); } .dropdown-content .save-filter { margin-top: 10px; width: 100%; padding: 8px; background: #3b82f6; color: white; border: none; border-radius: 0; cursor: pointer; } /* ===== COLLAPSIBLE ASCII BANNER ===== */ .ascii-banner-wrapper { max-width: 100%; margin: 0 1rem 1rem 1rem; border: 2px solid var(--terminal-green); background: var(--bg-secondary); } .ascii-banner-wrapper.collapsed .banner-content { display: none; } .banner-toggle { width: 100%; background: var(--bg-secondary); border: none; color: var(--terminal-amber); padding: 0.5rem 1rem; cursor: pointer; font-family: var(--font-mono); text-align: left; font-size: 0.9rem; text-shadow: var(--glow-amber); transition: all 0.2s ease; } .banner-toggle:hover { background: var(--hover-bg); box-shadow: inset 0 0 20px rgba(255, 176, 0, 0.2); } .toggle-icon { display: inline-block; width: 1rem; text-align: center; color: var(--terminal-green); transition: transform 0.3s ease; } .banner-content { padding: 1rem; text-align: center; } /* ===== CONDENSED TOOLBAR ===== */ .dashboard-toolbar { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; justify-content: space-between; padding: 1rem; background: var(--bg-secondary); border: 2px solid var(--terminal-green); margin-bottom: 1rem; box-shadow: var(--glow-green); } .toolbar-left { display: flex; align-items: center; gap: 1rem; flex: 1; min-width: 300px; } .dashboard-title { font-family: var(--font-mono); color: var(--terminal-green); text-shadow: var(--glow-green); font-size: 1.5rem; margin: 0; white-space: nowrap; } .toolbar-search { display: flex; gap: 0.5rem; flex: 1; } .toolbar-center { display: flex; align-items: center; gap: 1rem; } .toolbar-right { display: flex; align-items: center; } .ticket-count { font-family: var(--font-mono); color: var(--terminal-amber); text-shadow: var(--glow-amber); font-size: 0.9rem; white-space: nowrap; } .clear-search-btn { background: var(--bg-primary); color: var(--priority-1); border: 2px solid var(--priority-1); padding: 0.5rem 0.75rem; font-family: var(--font-mono); text-decoration: none; cursor: pointer; transition: all 0.2s ease; } .clear-search-btn:hover { background: var(--priority-1); color: var(--bg-primary); box-shadow: var(--glow-red); } .search-results-info { background: var(--bg-secondary); border: 2px solid var(--terminal-amber); padding: 0.75rem 1rem; margin-bottom: 1rem; font-family: var(--font-mono); color: var(--terminal-amber); text-shadow: var(--glow-amber); } /* Inline Bulk Actions */ .bulk-actions-inline { padding: 0.75rem 1rem; background: var(--bg-primary); border: 2px solid var(--terminal-amber); border-radius: 0; margin-bottom: 1rem; display: flex; gap: 1rem; align-items: center; font-family: var(--font-mono); color: var(--terminal-amber); text-shadow: var(--glow-amber); box-shadow: inset 0 0 20px rgba(255, 176, 0, 0.2); } .bulk-actions-inline .btn { padding: 0.4rem 0.8rem; font-size: 0.85rem; } /* Mobile: Stack toolbar items */ @media (max-width: 1024px) { .dashboard-toolbar { flex-direction: column; align-items: stretch; } .toolbar-left, .toolbar-center, .toolbar-right { width: 100%; justify-content: space-between; } .toolbar-search { min-width: 100%; } .dashboard-title { font-size: 1.2rem; } } @media (max-width: 768px) { .toolbar-left { flex-direction: column; align-items: stretch; } .dashboard-title { text-align: center; } } /* ===== DASHBOARD SIDEBAR LAYOUT ===== */ .dashboard-layout { display: flex; gap: 1.5rem; max-width: 100%; margin: 0 auto; padding: 0 1rem; } .dashboard-sidebar { width: 250px; flex-shrink: 0; position: sticky; top: 1rem; max-height: calc(100vh - 2rem); overflow-y: auto; } .dashboard-sidebar .ascii-frame-inner { background: var(--bg-secondary); padding: 1rem; border: 2px solid var(--terminal-green); box-shadow: var(--glow-green); position: relative; overflow: hidden; } .dashboard-sidebar .ascii-frame-inner::before { content: '│'; position: absolute; left: 5px; top: 0; height: 100%; color: var(--terminal-green); opacity: 0.3; font-size: 1.5rem; line-height: 1.2; pointer-events: none; } .dashboard-sidebar .ascii-subsection-header { color: var(--terminal-amber); text-shadow: var(--glow-amber-intense); font-family: var(--font-mono); font-size: 0.95rem; text-transform: uppercase; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--terminal-green); position: relative; white-space: nowrap; overflow: hidden; } .dashboard-sidebar .ascii-subsection-header::before { content: '╔══ '; color: var(--terminal-green); text-shadow: var(--glow-green); } .dashboard-sidebar .ascii-subsection-header::after { content: ' ══╗'; color: var(--terminal-green); text-shadow: var(--glow-green); } .filter-group { margin-bottom: 1.5rem; } .filter-group h4 { color: var(--terminal-amber); text-shadow: var(--glow-amber); margin: 0 0 0.5rem 0; font-size: 0.9rem; text-transform: uppercase; font-family: var(--font-mono); } .filter-group label { display: block; margin: 0.4rem 0; color: var(--terminal-green); cursor: pointer; font-size: 0.85rem; font-family: var(--font-mono); transition: all 0.2s ease; } .filter-group label:hover { color: var(--terminal-amber); text-shadow: var(--glow-amber); padding-left: 4px; } .filter-group input[type="checkbox"] { margin-right: 0.5rem; cursor: pointer; accent-color: var(--terminal-green); width: 16px; height: 16px; border: 2px solid var(--terminal-green); transition: all 0.2s ease; } .filter-group input[type="checkbox"]:checked { box-shadow: var(--glow-green); } .filter-group input[type="checkbox"]:hover { filter: brightness(1.3); } .dashboard-sidebar .btn { width: 100%; margin-top: 0.5rem; padding: 0.5rem; background: var(--bg-primary); color: var(--terminal-green); border: 2px solid var(--terminal-green); font-family: var(--font-mono); cursor: pointer; transition: all 0.2s ease; } .dashboard-sidebar .btn:hover { background: var(--terminal-green); color: var(--bg-primary); box-shadow: var(--glow-green); } .dashboard-sidebar .btn-secondary { background: transparent; color: var(--terminal-amber); border-color: var(--terminal-amber); } .dashboard-sidebar .btn-secondary:hover { background: var(--terminal-amber); color: var(--bg-primary); box-shadow: var(--glow-amber); } /* Collapsible Sidebar */ .dashboard-sidebar { position: relative; transition: width 0.3s ease, min-width 0.3s ease; overflow: hidden; } .sidebar-content { transition: opacity 0.2s ease; width: 250px; } /* Collapse button inside sidebar */ .sidebar-collapse-btn { display: block; width: 100%; padding: 0.5rem 1rem; background: var(--bg-secondary); border: none; border-bottom: 2px solid var(--terminal-green); color: var(--terminal-green); font-family: var(--font-mono); font-size: 0.85rem; cursor: pointer; text-align: left; transition: background 0.2s ease; } .sidebar-collapse-btn:hover { background: rgba(0, 255, 65, 0.15); color: var(--terminal-amber); } /* Expand button shown when collapsed */ .sidebar-expand-btn { display: none; padding: 0.5rem 1rem; background: var(--bg-secondary); border: 2px solid var(--terminal-green); color: var(--terminal-green); font-family: var(--font-mono); font-size: 0.85rem; cursor: pointer; white-space: nowrap; transition: background 0.2s ease; margin-right: 1rem; flex-shrink: 0; } .sidebar-expand-btn:hover { background: rgba(0, 255, 65, 0.15); color: var(--terminal-amber); border-color: var(--terminal-amber); } /* Collapsed state */ .dashboard-sidebar.collapsed { width: 0; min-width: 0; } .dashboard-sidebar.collapsed .sidebar-content, .dashboard-sidebar.collapsed .sidebar-collapse-btn { opacity: 0; pointer-events: none; } .dashboard-layout.sidebar-collapsed .sidebar-expand-btn { display: block; } /* Hide collapse controls on mobile */ @media (max-width: 768px) { .sidebar-collapse-btn, .sidebar-expand-btn { display: none !important; } } .dashboard-main { flex: 1; min-width: 0; } /* Mobile: Stack sidebar above content */ @media (max-width: 768px) { .dashboard-layout { flex-direction: column; padding: 0 0.5rem; } .dashboard-sidebar { width: 100%; position: static; max-height: none; margin-bottom: 1rem; } } /* ===== BOOT SEQUENCE ===== */ .boot-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: var(--bg-primary); z-index: 99999; display: flex; align-items: center; justify-content: center; transition: opacity 0.5s; } #boot-text { font-family: var(--font-mono); color: var(--terminal-green); text-shadow: var(--glow-green); font-size: 0.95rem; line-height: 1.6; white-space: pre; padding: 2rem; } /* ===== ASCII LOADING SPINNER ===== */ .loading-spinner { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 10000; background: var(--bg-primary); border: 3px solid var(--terminal-green); padding: 2rem; box-shadow: 0 0 30px rgba(0, 255, 65, 0.5); font-family: var(--font-mono); color: var(--terminal-green); font-size: 1.5rem; text-shadow: var(--glow-green); display: none; } .loading-spinner.active { display: block; } .spinner-text { text-align: center; } .spinner-frames { animation: spin-frames 0.8s steps(8) infinite; } @keyframes spin-frames { 0% { content: '|'; } 12.5% { content: '/'; } 25% { content: '—'; } 37.5% { content: '\\'; } 50% { content: '|'; } 62.5% { content: '/'; } 75% { content: '—'; } 87.5% { content: '\\'; } } .spinner-frames::before { content: '|'; display: inline-block; animation: spin-frames 0.8s steps(8) infinite; } /* ===== UTILITY STYLES ===== */ .ticket-link { font-family: 'Courier New', monospace; font-weight: bold; color: var(--text-primary) !important; text-decoration: none; background: var(--hover-bg); padding: 4px 8px; border-radius: 0; display: inline-block; border: 1px solid transparent; transition: all 0.3s ease; text-shadow: var(--glow-green); } .ticket-link::before { content: '#'; color: var(--terminal-amber); margin-right: 2px; } .ticket-link:hover { background: rgba(0, 255, 65, 0.2); border-color: var(--terminal-green); text-shadow: var(--glow-green-intense); transform: translateX(2px); } /* ===== PAGINATION STYLES ===== */ .pagination { display: flex; gap: 0.5rem; align-items: center; } .pagination button { padding: 0.5rem 0.75rem; border: 2px solid var(--terminal-green); background: var(--bg-secondary); color: var(--terminal-green); border-radius: 0; cursor: pointer; transition: all 0.3s ease; font-family: var(--font-mono); text-shadow: var(--glow-green); } .pagination button:hover { background: rgba(0, 255, 65, 0.15); box-shadow: var(--glow-green); transform: translateY(-1px); } .pagination button.active { background: var(--terminal-green); color: var(--bg-primary); border-color: var(--terminal-green); box-shadow: var(--glow-green-intense); font-weight: bold; } /* ===== SORTING STYLES ===== */ th::after { content: ''; position: absolute; right: 8px; top: 50%; transform: translateY(-50%); width: 0; height: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; opacity: 0.5; } th.sort-asc::after { border-bottom: 7px solid var(--text-primary); opacity: 1; } th.sort-desc::after { border-top: 7px solid var(--text-primary); opacity: 1; } /* Dark mode bulk actions */ body.dark-mode .bulk-actions-toolbar { --toolbar-bg: #2d3748; --toolbar-border: #ffc107; --text-primary: #f8f9fa; background: #2d3748 !important; } body.dark-mode .bulk-actions-info { color: #ffc107; font-weight: bold; } body.dark-mode .btn-bulk { --btn-bulk-bg: #0d6efd; --btn-bulk-hover: #0b5ed7; } body.dark-mode .btn-secondary { --btn-secondary-bg: #495057; --btn-secondary-hover: #343a40; } /* Modal styles */ .modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); display: flex; justify-content: center; align-items: center; z-index: 10000; } .modal-content { background: var(--bg-primary, white); padding: 2rem; border-radius: 0; min-width: 300px; max-width: 500px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } .modal-content h3 { margin-top: 0; margin-bottom: 1rem; color: var(--text-primary, #333); } .modal-body { margin-bottom: 1.5rem; } .modal-body label { display: block; margin-bottom: 0.5rem; font-weight: 500; color: var(--text-primary, #333); } .modal-body select { width: 100%; padding: 0.5rem; border: 1px solid var(--border-color, #ddd); border-radius: 0; background: var(--bg-secondary, #f8f9fa); color: var(--text-primary, #333); } .modal-footer { display: flex; gap: 0.5rem; justify-content: flex-end; } /* Dark mode modal */ body.dark-mode .modal-content { --bg-primary: #2d3748; --bg-secondary: #1a202c; --text-primary: #f7fafc; --border-color: #4a5568; } body.dark-mode .modal-body select { background: #1a202c; color: #f7fafc; border-color: #4a5568; } /* Checkbox styling in table */ .ticket-checkbox { cursor: pointer; width: 18px; height: 18px; } #selectAllCheckbox { cursor: pointer; width: 18px; height: 18px; } /* Checkbox cell - click anywhere to toggle */ .checkbox-cell { cursor: pointer; text-align: center; transition: background-color 0.2s ease; } .checkbox-cell:hover { background-color: rgba(0, 255, 65, 0.15); } /* Responsive bulk actions */ @media (max-width: 768px) { .bulk-actions-toolbar { flex-direction: column; align-items: stretch; } .bulk-actions-info { text-align: center; margin-bottom: 0.5rem; } .bulk-actions-buttons { justify-content: center; } } /* Comprehensive Dark Mode Fix - Dashboard */ body.dark-mode { background: #1a202c !important; color: #e2e8f0 !important; } body.dark-mode .dashboard-container, body.dark-mode .dashboard-content { background: #1a202c !important; color: #e2e8f0 !important; } /* Ensure table has dark background */ body.dark-mode table { background: #2d3748 !important; } body.dark-mode table thead { background: #1a202c !important; } body.dark-mode table tbody tr { background: #2d3748 !important; } body.dark-mode table tbody tr:hover { background: #374151 !important; } body.dark-mode table td, body.dark-mode table th { color: #e2e8f0 !important; border-color: #4a5568 !important; } /* Fix search box */ body.dark-mode .search-box, body.dark-mode input[type="search"], body.dark-mode input[type="text"] { background: #2d3748 !important; color: #e2e8f0 !important; border-color: #4a5568 !important; } /* Fix any white backgrounds in modals */ body.dark-mode .modal-content { background: #2d3748 !important; color: #e2e8f0 !important; } /* Fix dropdown menus */ body.dark-mode select option { background: #2d3748 !important; color: #e2e8f0 !important; } /* ===== RESPONSIVE DESIGN - TERMINAL EDITION ===== */ /* Tablet and smaller */ @media (max-width: 1024px) { /* Smaller ASCII banner */ .ascii-banner { font-size: 0.6rem !important; } /* Reduce table padding */ th, td { padding: 8px 12px; } /* Stack bulk actions */ .bulk-actions-buttons { flex-direction: column; } /* Simplify ASCII corners - use single-line chars */ .ascii-frame-outer::before { content: '┌'; font-size: 1.2rem; } .ascii-frame-outer::after { content: '┐'; font-size: 1.2rem; } .bottom-left-corner { content: '└'; font-size: 1.2rem; } .bottom-right-corner { content: '┘'; font-size: 1.2rem; } /* Simplify section headers */ .ascii-section-header::before { content: '├─ '; } .ascii-section-header::after { content: ' ─┤'; } /* Simplify dividers */ .ascii-divider::before { content: '├'; } .ascii-divider::after { content: '┤'; } } /* Mobile */ @media (max-width: 768px) { /* Use compact ASCII banner */ .ascii-banner { font-size: 0.5rem !important; } /* Remove all ASCII corners for mobile */ .ascii-frame-outer::before, .ascii-frame-outer::after, .bottom-left-corner, .bottom-right-corner { display: none !important; } /* Simplify inner frames - remove corners */ .ascii-frame-inner::before, .ascii-frame-inner::after { display: none !important; } /* Keep section headers but simplify */ .ascii-section-header::before { content: '> '; } .ascii-section-header::after { content: ''; } .ascii-section-header { font-size: 0.9rem; padding: 0.5rem 1rem; } /* Simplify subsection headers */ .ascii-subsection-header::before { content: '• '; } .ascii-subsection-header::after { content: ''; } /* Remove dividers on mobile */ .ascii-divider { display: none; } /* Reduce padding in ascii-content */ .ascii-content { padding: 0.5rem; } .ascii-frame-inner { padding: 0.5rem; margin: 0.5rem; border-width: 1px; } /* Hide decorative ASCII corners on small screens (legacy) */ table::before, table::after, .ticket-container::before, .ticket-container::after, .settings-modal::before, .settings-modal::after { display: none; } /* Simplify borders */ .ticket-header::before { display: none; } /* Full-width hamburger menu */ .hamburger-content { width: 100%; left: -100%; } .hamburger-content.open { left: 0; } /* Reduce padding everywhere */ .ascii-box, .terminal-form-group, .comment, .timeline-content { padding: 10px; } /* Smaller glow effects */ .glow-text, [class*="glow-"] { text-shadow: 0 0 3px currentColor; } /* Stack buttons vertically */ .btn, button { width: 100%; margin: 5px 0; } /* Reduce font size slightly */ body { font-size: 14px; } /* Smaller table text */ th, td { font-size: 0.85rem; padding: 6px 8px; } /* Hide some table columns on mobile */ th:nth-child(n+6), td:nth-child(n+6) { display: none; } } /* Very small mobile */ @media (max-width: 480px) { /* Minimal ASCII banner */ .ascii-banner { font-size: 0.4rem !important; } /* Remove all pseudo-element decorations except essential ones */ *::before, *::after { content: none !important; } /* Collapse nested frames - minimal borders */ .ascii-frame-outer, .ascii-frame-inner { border-width: 1px; padding: 0.25rem; margin: 0.25rem; } /* Section headers without decorations */ .ascii-section-header, .ascii-subsection-header { font-size: 0.85rem; padding: 0.4rem 0.5rem; text-transform: none; letter-spacing: normal; } /* Minimal content padding */ .ascii-content { padding: 0.25rem; } /* Re-enable essential pseudo-elements */ .search-form::before { content: '$ ' !important; } /* Simplify modals */ .settings-modal, .modal-content { width: 95%; max-width: 95%; } /* Reduce ticket container size */ .ticket-container { width: 95%; min-width: unset; margin: 20px auto; } /* Stack tabs vertically */ .ticket-tabs { flex-direction: column; } .tab-btn { width: 100%; margin-bottom: 5px; } } /* Print styles - terminal aesthetic */ @media print { body { background: white; color: black; } .ascii-banner, .theme-toggle, .hamburger-menu, .bulk-actions-toolbar { display: none; } table, .ticket-container { border-color: black; } /* Remove glows for print */ * { text-shadow: none !important; box-shadow: none !important; } } /* ===== TERMINAL TOAST NOTIFICATIONS ===== */ .terminal-toast { position: fixed; top: 20px; right: 20px; background: var(--bg-secondary); border: 2px solid var(--terminal-green); padding: 1rem 1.5rem; font-family: var(--font-mono); font-size: 0.9rem; color: var(--terminal-green); text-shadow: var(--glow-green); box-shadow: 0 0 20px rgba(0, 255, 65, 0.3); z-index: 10001; opacity: 0; transform: translateX(400px); transition: all 0.3s ease; max-width: 400px; word-wrap: break-word; } .terminal-toast.show { opacity: 1; transform: translateX(0); } .toast-icon { display: inline-block; margin-right: 0.5rem; font-weight: bold; } .toast-success { border-color: var(--status-open); color: var(--status-open); text-shadow: 0 0 5px var(--status-open); } .toast-error { border-color: var(--status-closed); color: var(--status-closed); text-shadow: 0 0 5px var(--status-closed); } .toast-warning { border-color: var(--status-in-progress); color: var(--status-in-progress); text-shadow: 0 0 5px var(--status-in-progress); } .toast-info { border-color: var(--terminal-cyan); color: var(--terminal-cyan); text-shadow: 0 0 5px var(--terminal-cyan); } /* ======================================== SETTINGS MODAL STYLES ======================================== */ /* Settings Icon */ .settings-icon { background: transparent; border: 2px solid var(--terminal-green); color: var(--terminal-green); font-size: 1.2rem; padding: 0.25rem 0.5rem; cursor: pointer; font-family: var(--font-mono); transition: all 0.3s ease; border-radius: 0; margin-left: 1rem; } .settings-icon:hover { background: var(--terminal-green); color: var(--bg-primary); box-shadow: var(--glow-green); } /* Settings Modal Container - acts as backdrop */ .settings-modal { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: 10000; background: rgba(0, 0, 0, 0.85); backdrop-filter: blur(5px); display: flex; align-items: center; justify-content: center; padding: 1rem; overflow-y: auto; } .settings-content { position: relative; background: var(--bg-secondary); border: 2px solid var(--terminal-green); box-shadow: 0 0 30px rgba(0, 255, 65, 0.5); max-width: 800px; width: 100%; max-height: calc(90vh - 2rem); overflow-y: auto; overflow-x: hidden; font-family: var(--font-mono); padding: 2rem; animation: settingsSlideIn 0.3s ease; margin: auto; box-sizing: border-box; } @keyframes settingsSlideIn { from { opacity: 0; transform: translateY(-30px); } to { opacity: 1; transform: translateY(0); } } /* Settings Header */ .settings-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 2rem; padding-bottom: 1rem; border-bottom: 2px solid var(--terminal-green); } .settings-header h3 { color: var(--terminal-amber); text-shadow: var(--glow-amber); font-family: var(--font-mono); font-size: 1.5rem; margin: 0; } .close-settings { background: transparent; border: 2px solid var(--terminal-green); color: var(--terminal-green); font-size: 1.5rem; padding: 0.25rem 0.75rem; cursor: pointer; font-family: var(--font-mono); transition: all 0.3s ease; } .close-settings:hover { background: var(--status-closed); border-color: var(--status-closed); color: var(--bg-primary); box-shadow: 0 0 10px var(--status-closed); } /* Settings Body */ .settings-body { margin-bottom: 2rem; } /* Settings Sections */ .settings-section { margin-bottom: 2rem; border: 2px solid var(--terminal-green); padding: 1rem; } .settings-section h4 { color: var(--terminal-amber); text-shadow: var(--glow-amber); font-family: var(--font-mono); margin-bottom: 1rem; font-size: 1rem; } /* Setting Rows */ .setting-row { margin-bottom: 1rem; display: flex; align-items: center; gap: 1rem; } .setting-row:last-child { margin-bottom: 0; } .setting-row label { color: var(--terminal-green); font-family: var(--font-mono); min-width: 180px; } .setting-select { flex: 1; max-width: 200px; font-family: var(--font-mono); background: var(--bg-primary); color: var(--terminal-green); border: 2px solid var(--terminal-green); padding: 0.5rem; cursor: pointer; } .setting-select:focus { outline: none; border-color: var(--terminal-amber); box-shadow: 0 0 10px rgba(255, 193, 7, 0.3); } /* Checkbox Group */ .checkbox-group { display: flex; gap: 1rem; flex-wrap: wrap; flex: 1; } .checkbox-group label { min-width: auto; display: flex; align-items: center; gap: 0.5rem; cursor: pointer; } .checkbox-group input[type="checkbox"] { cursor: pointer; } /* Keyboard Shortcuts Display */ .shortcuts-list { font-family: var(--font-mono); } .shortcut-item { display: flex; justify-content: space-between; padding: 0.5rem 0; border-bottom: 1px solid var(--terminal-green); } .shortcut-item:last-child { border-bottom: none; } .shortcut-item kbd { background: var(--bg-primary); border: 2px solid var(--terminal-green); padding: 0.25rem 0.5rem; color: var(--terminal-amber); text-shadow: var(--glow-amber); font-family: var(--font-mono); font-size: 0.9rem; } .shortcut-item span { color: var(--terminal-green); } /* User Info Grid */ .user-info-grid { display: grid; grid-template-columns: 150px 1fr; gap: 0.5rem 1rem; font-family: var(--font-mono); color: var(--terminal-green); } .user-info-grid div { padding: 0.25rem 0; } /* Settings Footer */ .settings-footer { display: flex; gap: 1rem; justify-content: flex-end; padding-top: 1rem; border-top: 2px solid var(--terminal-green); } .settings-footer .btn { font-family: var(--font-mono); padding: 0.75rem 1.5rem; border: 2px solid; cursor: pointer; transition: all 0.3s ease; background: transparent; } .settings-footer .btn-primary { color: var(--status-open); border-color: var(--status-open); } .settings-footer .btn-primary:hover { background: var(--status-open); color: var(--bg-primary); box-shadow: 0 0 15px var(--status-open); } .settings-footer .btn-secondary { color: var(--terminal-green); border-color: var(--terminal-green); } .settings-footer .btn-secondary:hover { background: var(--terminal-green); color: var(--bg-primary); box-shadow: var(--glow-green); } /* Table Density Classes */ .table-compact table { font-size: 0.85rem; } .table-compact th, .table-compact td { padding: 6px 10px; } .table-comfortable table { font-size: 1rem; } .table-comfortable th, .table-comfortable td { padding: 16px 20px; } /* Responsive Settings Modal */ @media (max-width: 768px) { .settings-content { max-width: 95%; padding: 1rem; } .setting-row { flex-direction: column; align-items: flex-start; } .setting-row label { min-width: auto; } .setting-select { width: 100%; max-width: 100%; } .user-info-grid { grid-template-columns: 1fr; } } /* Prevent body scroll when modal is open */ body.modal-open { overflow: hidden; position: fixed; width: 100%; height: 100%; } /* ======================================== MARKDOWN FORMATTING STYLES ======================================== */ /* Code blocks */ .code-block { background: var(--bg-primary); border: 2px solid var(--terminal-green); border-left: 4px solid var(--terminal-amber); padding: 1rem; margin: 1rem 0; overflow-x: auto; font-family: var(--font-mono); color: var(--terminal-green); text-shadow: var(--glow-green); } .code-block code { background: transparent; border: none; padding: 0; } /* Inline code */ code.inline-code { background: var(--bg-secondary); border: 1px solid var(--terminal-green); padding: 0.2rem 0.4rem; font-family: var(--font-mono); color: var(--terminal-amber); text-shadow: var(--glow-amber); border-radius: 0; } /* Markdown headings in content */ [data-markdown] h1, [data-markdown] h2, [data-markdown] h3 { color: var(--terminal-amber); text-shadow: var(--glow-amber); font-family: var(--font-mono); margin: 1.5rem 0 0.5rem 0; border-bottom: 2px solid var(--terminal-green); padding-bottom: 0.5rem; } [data-markdown] h1 { font-size: 1.8rem; } [data-markdown] h2 { font-size: 1.5rem; } [data-markdown] h3 { font-size: 1.2rem; } /* Markdown lists */ [data-markdown] ul, [data-markdown] ol { margin: 1rem 0; padding-left: 2rem; } [data-markdown] li { color: var(--terminal-green); margin: 0.5rem 0; } [data-markdown] li::marker { color: var(--terminal-amber); } /* Markdown blockquotes */ [data-markdown] blockquote { border-left: 4px solid var(--terminal-amber); background: var(--bg-secondary); padding: 1rem; margin: 1rem 0; color: var(--terminal-green); font-style: italic; } /* Markdown links */ [data-markdown] a { color: var(--terminal-cyan); text-decoration: none; border-bottom: 1px dotted var(--terminal-cyan); transition: all 0.3s ease; } [data-markdown] a:hover { color: var(--terminal-amber); border-bottom-color: var(--terminal-amber); text-shadow: var(--glow-amber); } /* Horizontal rules */ [data-markdown] hr { border: none; border-top: 2px solid var(--terminal-green); margin: 2rem 0; } /* Markdown paragraphs */ [data-markdown] p { margin: 1rem 0; line-height: 1.6; } /* Strong/bold text */ [data-markdown] strong { color: var(--terminal-amber); font-weight: bold; text-shadow: var(--glow-amber); } /* Italic/emphasized text */ [data-markdown] em { color: var(--terminal-cyan); font-style: italic; } /* Advanced Search Modal */ .advanced-search-modal { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: 10000; background: rgba(0, 0, 0, 0.85); backdrop-filter: blur(5px); display: flex; align-items: center; justify-content: center; padding: 1rem; overflow-y: auto; } .advanced-search-content { position: relative; background: var(--bg-secondary); border: 2px solid var(--terminal-green); box-shadow: 0 0 30px rgba(0, 255, 65, 0.5); max-width: 900px; width: 100%; max-height: calc(90vh - 2rem); overflow-y: auto; overflow-x: hidden; font-family: var(--font-mono); padding: 2rem; animation: slideIn 0.3s ease; box-sizing: border-box; } .advanced-search-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 2rem; border-bottom: 2px solid var(--terminal-green); padding-bottom: 1rem; } .advanced-search-header h3 { color: var(--terminal-amber); text-shadow: var(--glow-amber); font-size: 1.5rem; margin: 0; } .close-advanced-search { background: transparent; border: 2px solid var(--terminal-red); color: var(--terminal-red); font-size: 1.5rem; padding: 0.25rem 0.75rem; cursor: pointer; font-family: var(--font-mono); transition: all 0.3s ease; } .close-advanced-search:hover { background: var(--terminal-red); color: var(--bg-primary); box-shadow: 0 0 15px rgba(255, 77, 77, 0.7); } .advanced-search-body { font-family: var(--font-mono); } .search-section { margin-bottom: 2rem; border: 2px solid var(--terminal-green); padding: 1.5rem; } .search-section h4 { color: var(--terminal-amber); text-shadow: var(--glow-amber); margin-bottom: 1rem; font-size: 1.1rem; } .search-field { margin-bottom: 1rem; } .search-field label { display: block; color: var(--terminal-green); margin-bottom: 0.5rem; } .search-field input[type="text"], .search-field input[type="date"], .search-field input[type="number"], .search-field select { width: 100%; background: var(--bg-primary); color: var(--terminal-green); border: 2px solid var(--terminal-green); padding: 0.75rem; font-family: var(--font-mono); font-size: 1rem; box-sizing: border-box; } .search-field input:focus, .search-field select:focus { outline: none; border-color: var(--terminal-amber); box-shadow: 0 0 10px rgba(255, 193, 7, 0.5); } .date-range-group, .priority-range-group { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; } .search-field select[multiple] { min-height: 120px; } .advanced-search-footer { display: flex; justify-content: flex-end; gap: 1rem; margin-top: 2rem; padding-top: 1rem; border-top: 2px solid var(--terminal-green); } .btn-search-primary { background: var(--terminal-green); color: var(--bg-primary); border: 2px solid var(--terminal-green); padding: 0.75rem 2rem; font-family: var(--font-mono); font-size: 1rem; cursor: pointer; transition: all 0.3s ease; font-weight: bold; } .btn-search-primary:hover { background: transparent; color: var(--terminal-green); box-shadow: 0 0 15px rgba(0, 255, 65, 0.7); } .btn-search-secondary { background: transparent; color: var(--terminal-green); border: 2px solid var(--terminal-green); padding: 0.75rem 1.5rem; font-family: var(--font-mono); font-size: 1rem; cursor: pointer; transition: all 0.3s ease; } .btn-search-secondary:hover { background: var(--terminal-green); color: var(--bg-primary); box-shadow: 0 0 15px rgba(0, 255, 65, 0.5); } .btn-search-reset { background: transparent; color: var(--terminal-amber); border: 2px solid var(--terminal-amber); padding: 0.75rem 1.5rem; font-family: var(--font-mono); font-size: 1rem; cursor: pointer; transition: all 0.3s ease; } .btn-search-reset:hover { background: var(--terminal-amber); color: var(--bg-primary); box-shadow: 0 0 15px rgba(255, 193, 7, 0.5); } /* Hint text */ .search-hint { color: var(--terminal-cyan); font-size: 0.85rem; margin-top: 0.25rem; font-style: italic; } /* ===== QUICK ACTIONS ===== */ .quick-actions-cell { text-align: center; white-space: nowrap; } .quick-actions { display: flex; gap: 0.25rem; justify-content: center; opacity: 0.5; transition: opacity 0.2s ease; } tr:hover .quick-actions { opacity: 1; } .quick-action-btn { background: transparent; border: 1px solid var(--terminal-green); color: var(--terminal-green); padding: 0.25rem 0.5rem; font-size: 0.9rem; cursor: pointer; transition: all 0.2s ease; border-radius: 0; } .quick-action-btn:hover { background: var(--terminal-green); color: var(--bg-primary); box-shadow: var(--glow-green); } /* ===== DASHBOARD STATS WIDGETS ===== */ .stats-widgets { margin-bottom: 1.5rem; } .stats-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; } .stat-card { display: flex; align-items: center; gap: 0.75rem; padding: 1rem; background: var(--bg-secondary); border: 2px solid var(--terminal-green); transition: all 0.3s ease; } .stat-card:hover { border-color: var(--terminal-amber); box-shadow: var(--glow-amber); } .stat-icon { font-size: 1.5rem; opacity: 0.9; } .stat-content { flex: 1; } .stat-value { font-size: 1.5rem; font-weight: bold; color: var(--terminal-green); line-height: 1; text-shadow: var(--glow-green); } .stat-label { font-size: 0.8rem; color: var(--terminal-green-dim, #008822); margin-top: 0.25rem; text-transform: uppercase; letter-spacing: 0.05em; } /* Stat card color variations */ .stat-critical .stat-value { color: var(--priority-1); text-shadow: var(--glow-red); } .stat-critical { border-color: var(--priority-1); } .stat-unassigned .stat-value { color: var(--terminal-amber); text-shadow: var(--glow-amber); } .stat-unassigned { border-color: var(--terminal-amber); } /* Mobile responsive stats */ @media (max-width: 768px) { .stats-row { grid-template-columns: repeat(2, 1fr); } .stat-card { padding: 0.75rem; } .stat-value { font-size: 1.25rem; } .stat-icon { font-size: 1.25rem; } } @media (max-width: 480px) { .stats-row { grid-template-columns: 1fr; } } /* ===== EXPORT DROPDOWN ===== */ .export-dropdown { position: relative; display: inline-block; } .export-dropdown-content { display: none; position: absolute; top: 100%; right: 0; background: var(--bg-primary); border: 2px solid var(--terminal-green); min-width: 120px; z-index: 100; box-shadow: 0 0 10px rgba(0, 255, 65, 0.3); } .export-dropdown:hover .export-dropdown-content, .export-dropdown.open .export-dropdown-content { display: block; } .export-dropdown-content a { display: block; padding: 0.5rem 1rem; color: var(--terminal-green); text-decoration: none; font-family: var(--font-mono); transition: all 0.2s ease; } .export-dropdown-content a:hover { background: rgba(0, 255, 65, 0.1); color: var(--terminal-amber); } /* ===== ADMIN DROPDOWN ===== */ .admin-dropdown { position: relative; display: inline-block; } .admin-dropdown .admin-badge { cursor: pointer; padding: 0.3rem 0.6rem; } .admin-dropdown-content { display: none; position: absolute; top: 100%; right: 0; background: var(--bg-primary); border: 2px solid var(--priority-1); min-width: 180px; z-index: 1000; box-shadow: 0 0 15px rgba(255, 77, 77, 0.3); } .admin-dropdown-content.show { display: block; } .admin-dropdown-content a { display: block; padding: 0.6rem 1rem; color: var(--terminal-green); text-decoration: none; font-family: var(--font-mono); font-size: 0.85rem; transition: all 0.2s ease; border-bottom: 1px solid var(--bg-tertiary); } .admin-dropdown-content a:last-child { border-bottom: none; } .admin-dropdown-content a:hover { background: rgba(255, 77, 77, 0.1); color: var(--priority-1); text-shadow: var(--glow-red); } /* ===== CLICKABLE STAT CARDS ===== */ .stat-card:hover { transform: translateY(-2px); } .stat-card:active { transform: translateY(0); } /* ===== TABLE OVERFLOW FIX ===== */ .ascii-content { overflow-x: auto; } /* Reduce column widths for better fit */ table th, table td { padding: 8px 10px; font-size: 0.85rem; } /* Make title column wrap if needed */ table td:nth-child(4) { max-width: 180px; overflow: hidden; text-overflow: ellipsis; } /* ===== TICKET LINK REFERENCES IN COMMENTS ===== */ .ticket-link-ref { color: var(--terminal-cyan); text-decoration: none; font-family: var(--font-mono); padding: 0.1rem 0.3rem; border-radius: 0; background: rgba(0, 255, 255, 0.1); transition: all 0.2s ease; } .ticket-link-ref:hover { color: var(--terminal-amber); background: rgba(255, 176, 0, 0.15); text-shadow: var(--glow-amber); } /* ===== USER GROUPS DISPLAY ===== */ .user-groups-list { display: flex; flex-wrap: wrap; gap: 0.5rem; } .group-badge { display: inline-block; padding: 0.2rem 0.6rem; background: rgba(0, 255, 255, 0.1); border: 1px solid var(--terminal-cyan); color: var(--terminal-cyan); font-family: var(--font-mono); font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.05em; } .group-badge:hover { background: rgba(0, 255, 255, 0.2); text-shadow: 0 0 5px var(--terminal-cyan); } /* ===== VISIBILITY SETTINGS ===== */ .visibility-groups-list { display: flex; flex-wrap: wrap; gap: 0.75rem; } .visibility-groups-list label { cursor: pointer; } .visibility-groups-list label:hover .group-badge { background: rgba(0, 255, 255, 0.2); text-shadow: 0 0 5px var(--terminal-cyan); } .visibility-group-checkbox { width: 16px; height: 16px; cursor: pointer; } .visibility-group-checkbox:checked + .group-badge { background: var(--terminal-cyan); color: var(--bg-primary); font-weight: bold; } .ticket-visibility-settings { margin-top: 0.75rem; } .visibility-groups-display { display: flex; flex-wrap: wrap; gap: 0.5rem; } /* ===== INLINE TICKET PREVIEW POPUP ===== */ .ticket-preview-popup { position: absolute; z-index: 10000; width: 320px; background: var(--bg-primary); border: 2px solid var(--terminal-green); box-shadow: 0 0 20px rgba(0, 255, 65, 0.3); font-family: var(--font-mono); padding: 0; pointer-events: auto; } .ticket-preview-popup::before { content: '┌──────────────────────┐'; display: block; color: var(--terminal-green); font-size: 0.7rem; text-align: center; padding: 0.25rem; background: var(--bg-secondary); border-bottom: 1px solid var(--terminal-green); } .preview-header { display: flex; justify-content: space-between; align-items: center; padding: 0.75rem; background: var(--bg-secondary); border-bottom: 1px solid var(--terminal-green); } .preview-id { color: var(--terminal-amber); font-weight: bold; text-shadow: var(--glow-amber); } .preview-status { padding: 0.2rem 0.5rem; font-size: 0.75rem; text-transform: uppercase; } .preview-title { padding: 0.75rem; color: var(--terminal-green); font-size: 0.95rem; line-height: 1.4; border-bottom: 1px solid var(--terminal-green); word-break: break-word; } .preview-meta { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; padding: 0.75rem; font-size: 0.8rem; color: var(--terminal-green); } .preview-meta strong { color: var(--terminal-cyan); } .preview-footer { padding: 0.5rem 0.75rem; font-size: 0.75rem; color: var(--text-muted); background: var(--bg-secondary); border-top: 1px solid var(--terminal-green); } /* ===== ENHANCED MOBILE RESPONSIVE STYLES ===== */ /* Table wrapper for horizontal scrolling */ .table-wrapper { overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 0 -0.5rem; padding: 0 0.5rem; } @media (max-width: 768px) { /* Prevent iOS zoom on input focus */ input[type="text"], input[type="email"], input[type="search"], input[type="password"], input[type="number"], select, textarea { font-size: 16px !important; } /* Minimum touch target size (44px) */ .btn, button, .tab-btn, .checkbox-cell, .quick-action-btn, input[type="checkbox"], select { min-height: 44px; min-width: 44px; } /* Better button spacing */ .btn { padding: 12px 16px; margin: 4px 2px; } /* Stack toolbar elements */ .dashboard-toolbar { flex-direction: column; gap: 1rem; padding: 1rem; } .toolbar-left, .toolbar-center, .toolbar-right { width: 100%; justify-content: center; flex-wrap: wrap; } .toolbar-search { flex-direction: column; width: 100%; } .toolbar-search input, .toolbar-search button { width: 100%; margin: 4px 0; } .search-box { width: 100% !important; max-width: none !important; } /* Improve table readability */ table { font-size: 0.8rem; } th, td { padding: 8px 6px; min-width: 60px; } /* Hide less important columns on mobile */ table th:nth-child(5), table td:nth-child(5), table th:nth-child(10), table td:nth-child(10), table th:nth-child(11), table td:nth-child(11) { display: none; } /* Improve stats widgets */ .stats-row { flex-wrap: wrap; } .stat-card { flex: 1 1 calc(50% - 0.5rem); min-width: 120px; } /* Improve filter groups */ .filter-group label { min-height: 44px; display: flex; align-items: center; padding: 0.5rem 0; } .filter-group input[type="checkbox"] { width: 20px; height: 20px; margin-right: 0.75rem; } /* Improve pagination */ .pagination { flex-wrap: wrap; justify-content: center; } .pagination button { min-width: 44px; min-height: 44px; padding: 8px 12px; } /* Better modal sizing */ .modal-content, .settings-content { width: 95%; max-width: 95%; max-height: 90vh; overflow-y: auto; } /* Hide preview on mobile (not useful with touch) */ .ticket-preview-popup { display: none !important; } /* Improve quick actions */ .quick-actions { flex-direction: row; gap: 4px; } .quick-action-btn { padding: 8px; font-size: 1rem; } } /* ===== VIEW TOGGLE BUTTONS ===== */ .view-toggle { display: flex; gap: 0; border: 2px solid var(--terminal-green); } .view-btn { padding: 0.5rem 1rem; background: var(--bg-primary); color: var(--terminal-green); border: none; cursor: pointer; font-size: 1.2rem; min-width: 44px; min-height: 44px; transition: all 0.2s ease; } .view-btn::before, .view-btn::after { content: ''; } .view-btn:hover { background: rgba(0, 255, 65, 0.15); } .view-btn.active { background: var(--terminal-green); color: var(--bg-primary); } /* ===== KANBAN BOARD STYLES ===== */ .card-view-container { margin-bottom: 2rem; } .kanban-board { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; min-height: 500px; } .kanban-column { background: var(--bg-secondary); border: 2px solid var(--terminal-green); display: flex; flex-direction: column; min-height: 400px; } .kanban-column-header { padding: 1rem; border-bottom: 2px solid var(--terminal-green); display: flex; justify-content: space-between; align-items: center; font-family: var(--font-mono); text-transform: uppercase; letter-spacing: 0.1em; } .kanban-column-header.status-Open { background: rgba(40, 167, 69, 0.1); color: var(--status-open); border-color: var(--status-open); } .kanban-column-header.status-Pending { background: rgba(156, 39, 176, 0.1); color: var(--status-pending); border-color: var(--status-pending); } .kanban-column-header.status-In-Progress { background: rgba(255, 193, 7, 0.1); color: var(--status-in-progress); border-color: var(--status-in-progress); } .kanban-column-header.status-Closed { background: rgba(220, 53, 69, 0.1); color: var(--status-closed); border-color: var(--status-closed); } .column-title { font-weight: bold; } .column-count { background: currentColor; color: var(--bg-primary); padding: 0.2rem 0.6rem; font-size: 0.8rem; font-weight: bold; } .kanban-cards { flex: 1; padding: 0.5rem; overflow-y: auto; display: flex; flex-direction: column; gap: 0.5rem; } .kanban-card { background: var(--bg-primary); border: 1px solid var(--terminal-green); padding: 0.75rem; cursor: pointer; transition: all 0.2s ease; font-family: var(--font-mono); } .kanban-card:hover { border-color: var(--terminal-amber); transform: translateX(4px); box-shadow: -4px 0 0 var(--terminal-amber); } .kanban-card.priority-1 { border-left: 4px solid var(--priority-1); } .kanban-card.priority-2 { border-left: 4px solid var(--priority-2); } .kanban-card.priority-3 { border-left: 4px solid var(--priority-3); } .kanban-card.priority-4 { border-left: 4px solid var(--priority-4); } .kanban-card.priority-5 { border-left: 4px solid var(--priority-5); } .card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.5rem; font-size: 0.8rem; } .card-id { color: var(--terminal-cyan); } .card-priority { padding: 0.1rem 0.4rem; font-size: 0.7rem; font-weight: bold; } .card-priority.p1 { background: var(--priority-1); color: white; } .card-priority.p2 { background: var(--priority-2); color: black; } .card-priority.p3 { background: var(--priority-3); color: white; } .card-priority.p4 { background: var(--priority-4); color: black; } .card-priority.p5 { background: var(--priority-5); color: white; } .card-title { color: var(--terminal-green); font-size: 0.9rem; line-height: 1.3; margin-bottom: 0.5rem; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .card-footer { display: flex; justify-content: space-between; align-items: center; font-size: 0.75rem; color: var(--text-muted); } .card-category { background: rgba(0, 255, 65, 0.1); padding: 0.1rem 0.4rem; } .card-assignee { width: 28px; height: 28px; background: var(--terminal-cyan); color: var(--bg-primary); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: bold; font-size: 0.7rem; } /* Kanban responsive */ @media (max-width: 1200px) { .kanban-board { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 768px) { .kanban-board { grid-template-columns: 1fr; } .kanban-column { min-height: 200px; } } /* ===== COMPREHENSIVE MOBILE IMPROVEMENTS ===== */ @media (max-width: 768px) { /* Prevent iOS zoom on input focus */ input, select, textarea { font-size: 16px !important; } /* Make sidebar a slide-out drawer */ .dashboard-sidebar { position: fixed; top: 0; left: -100%; width: 85%; max-width: 320px; height: 100vh; max-height: 100vh; z-index: 1000; background: var(--bg-primary); transition: left 0.3s ease; padding: 1rem; overflow-y: auto; box-shadow: 4px 0 20px rgba(0, 0, 0, 0.5); } .dashboard-sidebar.mobile-open { left: 0; } /* Mobile sidebar overlay */ .mobile-sidebar-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); z-index: 999; } .mobile-sidebar-overlay.active { display: block; } /* Mobile filter toggle button */ .mobile-filter-toggle { display: flex !important; align-items: center; gap: 0.5rem; padding: 0.75rem 1rem; background: var(--bg-secondary); border: 2px solid var(--terminal-green); color: var(--terminal-green); font-family: var(--font-mono); font-size: 0.9rem; cursor: pointer; margin-bottom: 1rem; width: 100%; } .mobile-filter-toggle:active { background: var(--terminal-green); color: var(--bg-primary); } /* Close button in mobile sidebar */ .mobile-sidebar-close { display: block !important; position: absolute; top: 0.5rem; right: 0.5rem; width: 44px; height: 44px; background: transparent; border: 2px solid var(--terminal-green); color: var(--terminal-green); font-size: 1.5rem; cursor: pointer; z-index: 10; } /* Better header on mobile */ .user-header { flex-wrap: wrap; padding: 0.5rem; gap: 0.5rem; } .header-left { flex: 1; min-width: 0; } .header-right { width: 100%; justify-content: space-between; flex-wrap: wrap; gap: 0.5rem; } .app-title { font-size: 1rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Compact header buttons */ .header-btn, .settings-btn, .new-ticket-btn { padding: 0.5rem 0.75rem; font-size: 0.85rem; min-height: 44px; } /* Table wrapper for horizontal scroll */ .table-wrapper { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; margin-bottom: 1rem; } .table-wrapper table { min-width: 600px; } /* Larger touch targets for table rows */ table td, table th { padding: 12px 8px; } table td a { display: inline-block; padding: 4px 0; } /* Stats widgets - 2 per row */ .stats-row { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; } .stat-card { padding: 0.75rem; min-height: 70px; } .stat-value { font-size: 1.5rem; } .stat-label { font-size: 0.7rem; } /* Better toolbar on mobile */ .toolbar { flex-direction: column; gap: 0.75rem; } .toolbar-search { width: 100%; order: -1; } .toolbar-actions { width: 100%; flex-wrap: wrap; gap: 0.5rem; } .toolbar-actions .btn { flex: 1; min-width: 100px; text-align: center; } /* Full width modals on mobile */ .modal-overlay { padding: 0.5rem; align-items: flex-start; padding-top: 2rem; } .modal-content { width: 100% !important; max-width: 100% !important; max-height: calc(100vh - 4rem); margin: 0; } .modal-body { max-height: calc(100vh - 12rem); overflow-y: auto; } /* Better form elements */ .modal-body input, .modal-body select, .modal-body textarea { width: 100%; min-height: 44px; padding: 0.75rem; margin-bottom: 0.75rem; } .modal-footer { flex-direction: column; gap: 0.5rem; } .modal-footer button { width: 100%; min-height: 48px; } /* Settings modal improvements */ .settings-content { width: 100% !important; max-width: 100% !important; height: auto; max-height: 90vh; } /* Better pagination */ .pagination { flex-wrap: wrap; justify-content: center; gap: 0.25rem; } .pagination button, .pagination a { min-width: 44px; min-height: 44px; padding: 0.5rem; } /* Admin dropdown improvements */ .admin-dropdown { position: static; } .admin-dropdown-content { position: fixed; left: 0; right: 0; top: auto; bottom: 0; width: 100%; max-height: 50vh; overflow-y: auto; border-radius: 0; } .admin-dropdown-content a { padding: 1rem; min-height: 48px; } /* Bulk action bar on mobile */ .bulk-action-bar { position: fixed; bottom: 0; left: 0; right: 0; z-index: 100; flex-wrap: wrap; padding: 0.75rem; gap: 0.5rem; max-height: 50vh; overflow-y: auto; } .bulk-action-bar button { flex: 1 1 calc(50% - 0.5rem); min-height: 44px; } /* View toggle more accessible */ .view-toggle { margin-bottom: 1rem; } .view-btn { flex: 1; min-height: 48px; } /* Better quick actions */ .quick-actions { display: flex; gap: 0.25rem; } .quick-action-btn { min-width: 36px; min-height: 36px; padding: 0.25rem; } } /* Extra small screens */ @media (max-width: 480px) { .app-title { font-size: 0.9rem; } .stats-row { grid-template-columns: 1fr; } .stat-card { padding: 1rem; } /* Hide certain table columns */ table th:nth-child(4), table td:nth-child(4), table th:nth-child(6), table td:nth-child(6) { display: none; } .toolbar-actions .btn span { display: none; } .header-right { justify-content: flex-end; } .new-ticket-btn span { display: none; } .new-ticket-btn::before { content: '+'; font-size: 1.2rem; } }