/* Base styles */ body { font-family: Arial, sans-serif; background: #1b1b1b; color: #d4d4d4; margin: 0; padding: 0; } /* Loader spinner for dashboard and tables */ .loader { border: 4px solid #333 !important; border-top: 4px solid #00ffcc !important; border-radius: 50% !important; width: 20px !important; height: 20px !important; animation: spin 1s linear infinite !important; display: inline-block !important; margin-left: 10px !important; vertical-align: middle !important; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } footer { text-align: center; margin-top: 20px; padding: 10px 0; font-size: 0.9em; color: #888; } footer .fa, footer .fab, footer .fas { margin: 0 10px; color: #00aaff; transition: color 0.3s ease, transform 0.3s ease; } footer .fa:hover, footer .fab:hover, footer .fas:hover { color: #00ccff; transform: scale(1.2); } a { color: #00aaff; text-decoration: none; } a:hover { color: #00ccff; } .container { max-width: 1200px; margin: 0 auto; padding: 20px; } button { background-color: #333; color: #fff; padding: 10px 20px; border: none; cursor: pointer; margin: 5px; border-radius: 5px; transition: background-color 0.2s ease, box-shadow 0.2s ease; } .dashboard-toggle button { background-color: #333; color: #fff; padding: 10px 20px; border: none; cursor: pointer; margin: 5px; border-radius: 5px; transition: background-color 0.2s ease, box-shadow 0.2s ease; } .dashboard-toggle button.active { background-color: #00ffcc; color: #000; } button:hover { background-color: #444; box-shadow: 0 0 8px rgba(0, 255, 255, 0.1); } /* Job cards */ .job { background: #222; margin: 10px; padding: 10px; border-radius: 8px; } .job-header { font-weight: bold; } .job-details { font-size: 0.9em; color: #aaa; } /* Dashboard Table */ #jobsTable { width: 100%; border-collapse: collapse; margin-top: 20px; table-layout: auto; /* Let columns adjust based on content */ } #jobsTable th, #jobsTable td, .jobsTable th, .jobsTable td { padding: 10px; text-align: left; border-bottom: 1px solid #333; white-space: nowrap; /* Prevent text wrapping */ overflow: hidden; /* Ensure text stays within the cell */ text-overflow: ellipsis; /* Shorten overflow text with "..." */ min-width: 100px; /* Ensure minimum width for columns */ } #jobsTable th, .jobsTable th { background-color: #2a2a2a; color: #00ffcc; cursor: pointer; position: sticky; top: 0; z-index: 1; } #jobsTable tr:nth-child(even), .jobsTable tr:nth-child(even) { background-color: #1e1e1e; } #jobsTable tr:hover, .jobsTable tr:hover { background-color: #2c2c2c; } /* Top Button Row */ .buttons { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 20px; position: relative; } /* Import Form Styling */ .import-form { display: flex; flex-direction: column; align-items: center; margin-top: 10px; } .import-form input[type="file"] { margin-bottom: 10px; padding: 8px; background-color: #333; color: #ddd; border: 1px solid #444; border-radius: 5px; } .import-form button { background-color: #00ff9d; color: #000; padding: 10px 20px; border: none; border-radius: 5px; font-weight: bold; transition: background-color 0.2s ease; } .import-form button:hover { background-color: #00b379; } /* Section Block Styles (Login/Import panels) */ .section { max-width: 500px; margin: 2em auto; padding: 2em; border: 1px solid #2a2a2a; border-radius: 10px; background: linear-gradient(145deg, #1e1e1e, #2a2a2a); box-shadow: 0 0 20px rgba(0, 255, 200, 0.08), 0 0 40px rgba(0, 150, 255, 0.05); transition: background 0.3s ease, box-shadow 0.3s ease; } .section:hover { background: linear-gradient(145deg, #222, #333); box-shadow: 0 0 25px rgba(0, 200, 255, 0.15); } /* Divider Styling */ .divider { margin: 3em auto; text-align: center; position: relative; } .divider::before, .divider::after { content: ""; display: inline-block; width: 30%; height: 1px; background: #444; vertical-align: middle; margin: 0 1em; } .divider span { color: #888; font-size: 0.8em; text-transform: uppercase; letter-spacing: 1px; } /* Button flash animation */ @keyframes flashButton { 0%, 100% { background-color: #333; } 50% { background-color: #00ffcc; color: #000; } } .export-flash { animation: flashButton 0.8s ease-in-out 3; } /* Responsive tweaks */ .no-jobs-message { color: #d4d4d4; background-color: #222; border-left: 3px solid #00ffcc; padding: 10px; margin: 20px 0; font-style: italic; text-align: center; } @media (max-width: 768px) { .buttons { flex-direction: column; align-items: flex-start; } #jobsTable th, #jobsTable td { font-size: 0.9em; } } th.sorted-asc::after { content: " ▲"; } th.sorted-desc::after { content: " ▼"; } .soon { background-color: #1e2b38 !important; /* Darker blue-gray for dark theme */ color: #00ffcc !important; /* Make text pop */ font-weight: bold !important; border-left: 2px solid #00ffcc !important; /* Accent highlight */ } .character-list { margin-top: 20px; } .character-list ul { list-style-type: none; padding: 0; } .character-list li { font-size: 1.1em; margin: 5px 0; } /* Stats Table Styles */ .jobsTable { width: 100%; margin-top: 20px; border-collapse: collapse; } .jobsTable th, .jobsTable td { padding: 12px 15px; text-align: left; border-bottom: 1px solid #444; } .jobsTable th { background-color: #2a2a2a; color: #00ffcc; cursor: pointer; position: relative; } .jobsTable th.sorted-asc::after { content: " ▲"; } .jobsTable th.sorted-desc::after { content: " ▼"; } .jobsTable tr:nth-child(even) { background-color: #1e1e1e; } .jobsTable tr:hover { background-color: #2c2c2c; } /* Responsive tables */ @media (max-width: 768px) { .jobsTable, .jobsTable thead, .jobsTable tbody, .jobsTable th, .jobsTable td, .jobsTable tr { display: block; } .jobsTable thead tr { position: absolute; top: -9999px; left: -9999px; } .jobsTable tr { border: 1px solid #444; margin-bottom: 1em; } .jobsTable td { border: none; position: relative; padding-left: 50%; } .jobsTable td:before { position: absolute; left: 6px; width: 45%; white-space: nowrap; font-weight: bold; } }