/* ===== 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 (Keep existing) */ --status-open: #28a745; --status-in-progress: #ffc107; --status-closed: #dc3545; /* Terminal Font Stack */ --font-mono: 'Courier New', 'Consolas', 'Monaco', 'Menlo', monospace; /* Glow Effects */ --glow-green: 0 0 5px #00ff41, 0 0 10px #00ff41; --glow-red: 0 0 5px #ff4d4d, 0 0 10px #ff4d4d; --glow-blue: 0 0 5px #42a5f5, 0 0 10px #42a5f5; --glow-amber: 0 0 5px #ffb000, 0 0 10px #ffb000; --glow-priority-1: 0 0 5px #ff4d4d, 0 0 10px #ff4d4d; --glow-priority-2: 0 0 5px #ffa726, 0 0 10px #ffa726; --glow-priority-3: 0 0 5px #42a5f5, 0 0 10px #42a5f5; --glow-priority-4: 0 0 5px #66bb6a, 0 0 10px #66bb6a; --glow-priority-5: 0 0 5px #9e9e9e, 0 0 10px #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); } body.menu-open { padding-left: 260px; } h1 { color: var(--text-primary); margin: 0; } /* ===== 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 */ .bottom-left-corner, .bottom-right-corner { position: absolute; bottom: -3px; font-size: 1.5rem; color: var(--terminal-green); line-height: 1; z-index: 10; } .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); text-transform: uppercase; letter-spacing: 0.1em; } .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; } .ascii-divider::after { content: '╡'; position: absolute; right: -2px; top: -11px; color: var(--terminal-green); font-size: 1.2rem; } /* 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: 8px; 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.1); color: var(--terminal-amber); border-color: var(--terminal-amber); text-shadow: var(--glow-amber); transform: translateY(-2px); } .btn:active, .btn-base:active, button:active { transform: translateY(0); box-shadow: 0 0 20px rgba(0, 255, 65, 0.5); } .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 */ table::before { content: '┌'; position: absolute; top: -2px; left: -2px; font-size: 1.2rem; color: var(--terminal-green); line-height: 1; z-index: 10; } table::after { content: '┐'; position: absolute; top: -2px; right: -2px; font-size: 1.2rem; color: var(--terminal-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); } /* Add terminal prompt to headers */ th::before { content: '> '; color: var(--terminal-green); margin-right: 4px; } tr:hover { background-color: rgba(0, 255, 65, 0.05); } 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); } .priority-2 td:nth-child(2) { color: var(--priority-2); text-shadow: var(--glow-priority-2); } .priority-3 td:nth-child(2) { color: var(--priority-3); text-shadow: var(--glow-priority-3); } .priority-4 td:nth-child(2) { color: var(--priority-4); text-shadow: var(--glow-priority-4); } .priority-5 td:nth-child(2) { color: var(--priority-5); text-shadow: var(--glow-priority-5); } /* ===== 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: 100px; 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; } .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-Resolved { 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-Resolved::before { content: '['; margin-right: 4px; } .status-Resolved::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; } .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: 5px; 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: 5px; 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: 4px; } /* 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: 4px; 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: 4px; 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: 4px; cursor: pointer; } /* ===== HAMBURGER MENU STYLES - TERMINAL EDITION ===== */ .hamburger-menu { position: absolute; top: 20px; left: 20px; z-index: 100; } .hamburger-icon { cursor: pointer; font-size: 24px; background: var(--bg-secondary); padding: 12px; border: 2px solid var(--terminal-green); border-radius: 0; box-shadow: none; font-family: var(--font-mono); color: var(--terminal-green); } .hamburger-icon::before { content: '['; margin-right: 4px; } .hamburger-icon::after { content: ']'; margin-left: 4px; } .hamburger-content { position: fixed; top: 0; left: -300px; width: 250px; height: 100%; background: var(--bg-primary); border-right: 3px double var(--terminal-green); transition: left 0.3s ease; padding: 20px; overflow-y: auto; z-index: 99; font-family: var(--font-mono); box-shadow: 0 0 30px rgba(0, 255, 65, 0.3); } /* ASCII decoration at top */ .hamburger-content::before { content: '╔═══════════════════╗\A║ MENU SYSTEM ║\A╚═══════════════════╝'; white-space: pre; display: block; color: var(--terminal-green); font-family: var(--font-mono); font-size: 0.8rem; margin-bottom: 20px; line-height: 1.2; } .hamburger-content.open { left: 0; } .hamburger-content h3 { color: var(--terminal-amber); text-shadow: var(--glow-amber); font-family: var(--font-mono); text-transform: uppercase; margin-top: 20px; margin-bottom: 10px; } .hamburger-content h3::before { content: '> '; color: var(--terminal-green); } .close-hamburger { position: absolute; top: 10px; right: 10px; cursor: pointer; font-size: 24px; background: transparent; padding: 10px; border: 2px solid var(--terminal-green); border-radius: 0; box-shadow: none; color: var(--terminal-green); font-family: var(--font-mono); } .close-hamburger::before { content: '['; } .close-hamburger::after { content: ']'; } .close-hamburger:hover { color: var(--priority-1); border-color: var(--priority-1); text-shadow: var(--glow-red); } /* Hamburger menu inline editing styles - TERMINAL */ .ticket-info-editable { padding: 10px 0; } .editable-field, .info-field { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; position: relative; padding: 10px; border: 1px solid var(--terminal-green); background: rgba(0, 255, 65, 0.03); } .editable-field label, .info-field label { flex: 0 0 auto; margin-right: 10px; color: var(--terminal-green); font-family: var(--font-mono); } .editable-value { flex: 1; text-align: right; min-height: 20px; display: inline-block; cursor: pointer; padding: 4px 8px; border-radius: 0; transition: all 0.2s; color: var(--terminal-amber); } .editable-value::before { content: '[ '; color: var(--terminal-green); } .editable-value::after { content: ' ]'; color: var(--terminal-green); } .editable-value:hover { background-color: rgba(0, 255, 65, 0.1) !important; text-shadow: var(--glow-amber); } .edit-dropdown { position: absolute; top: 100%; right: 0; background: var(--bg-primary); border: 2px solid var(--terminal-green); border-radius: 0; padding: 8px; box-shadow: 0 0 20px rgba(0, 255, 65, 0.3); z-index: 1000; min-width: 150px; } .field-select { width: 100%; padding: 4px 8px; border: 2px solid var(--terminal-green); border-radius: 0; margin-bottom: 8px; background: var(--bg-primary); color: var(--terminal-green); font-family: var(--font-mono); color: var(--text-primary); } .edit-actions { display: flex; gap: 4px; justify-content: flex-end; } .save-btn, .cancel-btn { padding: 4px 8px; border: none; border-radius: 3px; cursor: pointer; font-size: 12px; min-width: 24px; } .save-btn { background: #28a745; color: white; } .save-btn:hover { background: #218838; } .cancel-btn { background: #dc3545; color: white; } .cancel-btn:hover { background: #c82333; } .info-field span { flex: 1; text-align: right; color: var(--text-secondary); } /* ===== UTILITY STYLES ===== */ .theme-toggle { position: absolute; top: 20px; right: 20px; z-index: 100; padding: 12px; border-radius: 50%; background: var(--bg-secondary); border: 1px solid var(--border-color); cursor: pointer; box-shadow: var(--shadow); font-size: 1.2em; transition: transform 0.3s ease; } .theme-toggle:hover { transform: scale(1.1); } .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: 4px; display: inline-block; } .ticket-link:hover { background: var(--border-color); } /* ===== PAGINATION STYLES ===== */ .pagination { display: flex; gap: 0.5rem; align-items: center; } .pagination button { padding: 0.5rem 0.75rem; border: 1px solid var(--border-color); background: var(--bg-secondary); color: var(--text-primary); border-radius: 0.375rem; cursor: pointer; transition: all 0.2s ease; } .pagination button:hover { background: var(--hover-bg); } .pagination button.active { background: #3b82f6; color: white; border-color: #3b82f6; } /* ===== 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; } /* ===== SETTINGS MODAL STYLES - TERMINAL EDITION ===== */ .settings-modal-backdrop { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.85); display: flex; justify-content: center; align-items: center; z-index: 1000; } .settings-modal { background: var(--bg-primary); border: 3px double var(--terminal-green); border-radius: 0; width: 500px; max-width: 90%; box-shadow: 0 0 30px rgba(0, 255, 65, 0.3); padding: 0; position: relative; font-family: var(--font-mono); } /* ASCII corners for modal */ .settings-modal::before { content: '╔'; position: absolute; top: -3px; left: -3px; font-size: 1.5rem; color: var(--terminal-green); line-height: 1; } .settings-modal::after { content: '╗'; position: absolute; top: -3px; right: -3px; font-size: 1.5rem; color: var(--terminal-green); line-height: 1; } .settings-modal-header { display: flex; justify-content: space-between; align-items: center; border-bottom: 2px solid var(--terminal-green); padding: 15px 20px; margin: 0; background: var(--bg-secondary); } .settings-modal-header h2 { margin: 0; color: var(--terminal-amber); text-shadow: var(--glow-amber); font-family: var(--font-mono); text-transform: uppercase; } .settings-modal-header h2::before { content: '═══ '; color: var(--terminal-green); } .settings-modal-header h2::after { content: ' ═══'; color: var(--terminal-green); } .close-modal { background: none; border: none; font-size: 24px; cursor: pointer; color: var(--terminal-green); font-family: var(--font-mono); } .close-modal::before { content: '['; } .close-modal::after { content: ']'; } .close-modal:hover { color: var(--priority-1); text-shadow: var(--glow-red); } .setting-group { margin-bottom: 15px; padding: 0 20px; } .setting-group label { display: block; margin-bottom: 8px; color: var(--terminal-green); font-family: var(--font-mono); } .setting-group label::before { content: '> '; color: var(--terminal-amber); } .setting-group select { width: 100%; padding: 10px; border: 2px solid var(--terminal-green); border-radius: 0; background: var(--bg-primary); color: var(--terminal-green); font-family: var(--font-mono); } .settings-modal-footer { display: flex; justify-content: flex-end; gap: 10px; border-top: 2px solid var(--terminal-green); padding: 15px 20px; background: var(--bg-secondary); } .save-settings, .cancel-settings { padding: 10px 20px; border-radius: 0; border: 2px solid var(--terminal-green); background: transparent; color: var(--terminal-green); cursor: pointer; transition: all 0.3s ease; font-family: var(--font-mono); font-weight: bold; text-transform: uppercase; } .save-settings::before, .cancel-settings::before { content: '[ '; } .save-settings::after, .cancel-settings::after { content: ' ]'; } .save-settings { color: var(--terminal-amber); border-color: var(--terminal-amber); } .save-settings:hover, .cancel-settings:hover { background: rgba(0, 255, 65, 0.1); text-shadow: var(--glow-green); } .save-settings { background: #3b82f6; color: white; } .cancel-settings { background: var(--hover-bg); color: var(--text-primary); } /* Bulk Actions Styles (Admin only) */ .bulk-actions-toolbar { display: none; justify-content: space-between; align-items: center; padding: 1rem; background: var(--toolbar-bg, #1a202c); border: 1px solid var(--toolbar-border, #ffc107); border-radius: 8px; margin: 1rem 0; } .bulk-actions-info { font-weight: bold; color: var(--text-primary, #333); } .bulk-actions-buttons { display: flex; gap: 0.5rem; flex-wrap: wrap; } .btn-bulk { padding: 0.5rem 1rem; background: var(--btn-bulk-bg, #007bff); color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 0.9rem; transition: background 0.2s ease; } .btn-bulk:hover { background: var(--btn-bulk-hover, #0056b3); } .btn-secondary { padding: 0.5rem 1rem; background: var(--btn-secondary-bg, #6c757d); color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 0.9rem; transition: background 0.2s ease; } .btn-secondary:hover { background: var(--btn-secondary-hover, #5a6268); } /* 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: 8px; 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: 4px; 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; } /* 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; } } /* Mobile */ @media (max-width: 768px) { /* Use compact ASCII banner */ .ascii-banner { font-size: 0.5rem !important; } /* Hide decorative ASCII corners on small screens */ 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 */ *::before, *::after { content: none !important; } /* 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; } }