Jofthomas's picture
Create static/style.css
b95828a verified
raw
history blame contribute delete
6.42 kB
:root {
--background-color: #121212;
--card-background: #1e1e1e;
--text-color: #e0e0e0;
--primary-color: #03dac6; /* Teal accent */
--secondary-color: #bb86fc; /* Purple accent */
--border-color: #333333;
--rank1-color: #ffd700; /* Gold */
--rank2-color: #c0c0c0; /* Silver */
--rank3-color: #cd7f32; /* Bronze */
--hover-background: #2a2a2a;
}
body {
font-family: 'Inter', sans-serif;
background-color: var(--background-color);
color: var(--text-color);
margin: 0;
padding: 20px;
line-height: 1.6;
}
.container {
max-width: 1000px;
margin: 20px auto;
background-color: var(--card-background);
border-radius: 12px;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);
overflow: hidden; /* Ensures footer stays inside rounded corners */
}
header {
background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
color: #000; /* Dark text on light gradient */
padding: 25px 30px;
text-align: center;
border-bottom: 1px solid var(--border-color);
}
header h1 {
margin: 0 0 10px 0;
font-size: 2.2rem;
font-weight: 700;
}
header p {
margin: 0;
font-size: 1rem;
opacity: 0.9;
}
#last-updated {
font-size: 0.8rem;
color: #333;
margin-top: 8px;
}
.leaderboard-header,
.leaderboard-row {
display: grid;
grid-template-columns: 60px 1fr 100px 170px 100px; /* Rank, User, Score, Time, Code */
align-items: center;
padding: 12px 30px;
border-bottom: 1px solid var(--border-color);
gap: 15px;
font-size: 0.95rem;
}
.leaderboard-header {
font-weight: 600;
background-color: rgba(255, 255, 255, 0.05); /* Slightly lighter header */
position: sticky; /* Make header sticky if leaderboard scrolls */
top: 0;
z-index: 10;
}
.leaderboard-row {
transition: background-color 0.2s ease-in-out, transform 0.2s ease;
}
.leaderboard-row:hover {
background-color: var(--hover-background);
transform: scale(1.01); /* Subtle zoom effect */
cursor: default;
}
.leaderboard-row:last-child {
border-bottom: none;
}
.rank {
font-weight: 700;
text-align: center;
font-size: 1.1em;
min-width: 40px; /* Ensure rank number doesn't wrap */
}
.username {
font-weight: 600;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.score {
text-align: right;
font-weight: 600;
color: var(--primary-color);
}
.timestamp {
font-size: 0.85em;
color: #aaa;
text-align: right;
}
.code-action {
text-align: center;
}
.view-code-btn {
background-color: var(--secondary-color);
color: var(--background-color);
border: none;
padding: 5px 12px;
border-radius: 5px;
cursor: pointer;
font-size: 0.8rem;
font-weight: 600;
transition: background-color 0.2s ease;
text-align: center;
}
.view-code-btn:hover {
background-color: #a06ef8; /* Slightly lighter purple */
}
/* Special ranks */
.leaderboard-row[data-rank="1"] .rank { color: var(--rank1-color); }
.leaderboard-row[data-rank="2"] .rank { color: var(--rank2-color); }
.leaderboard-row[data-rank="3"] .rank { color: var(--rank3-color); }
.leaderboard-row[data-rank="1"] { border-left: 4px solid var(--rank1-color); padding-left: 26px; }
.leaderboard-row[data-rank="2"] { border-left: 4px solid var(--rank2-color); padding-left: 26px; }
.leaderboard-row[data-rank="3"] { border-left: 4px solid var(--rank3-color); padding-left: 26px; }
#loading-indicator {
display: flex;
justify-content: center;
align-items: center;
padding: 50px;
font-size: 1.1rem;
color: #aaa;
gap: 10px;
}
.spinner {
border: 4px solid rgba(255, 255, 255, 0.1);
border-left-color: var(--primary-color);
border-radius: 50%;
width: 24px;
height: 24px;
animation: spin 1s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
footer {
text-align: center;
padding: 15px;
font-size: 0.9rem;
color: #888;
border-top: 1px solid var(--border-color);
background-color: rgba(0, 0, 0, 0.1);
}
/* Modal Styles */
.modal {
display: none; /* Hidden by default */
position: fixed; /* Stay in place */
z-index: 100; /* Sit on top */
left: 0;
top: 0;
width: 100%; /* Full width */
height: 100%; /* Full height */
overflow: auto; /* Enable scroll if needed */
background-color: rgba(0, 0, 0, 0.7); /* Black w/ opacity */
padding-top: 60px; /* Location of the box */
}
.modal-content {
background-color: var(--card-background);
margin: 5% auto; /* 5% from the top and centered */
padding: 25px;
border: 1px solid var(--border-color);
border-radius: 8px;
width: 80%; /* Could be more or less, depending on screen size */
max-width: 900px;
position: relative;
box-shadow: 0 5px 15px rgba(0,0,0,0.5);
}
.close-button {
color: #aaa;
position: absolute;
top: 10px;
right: 20px;
font-size: 28px;
font-weight: bold;
cursor: pointer;
}
.close-button:hover,
.close-button:focus {
color: #fff;
text-decoration: none;
}
#modal-username {
margin-top: 0;
margin-bottom: 20px;
color: var(--primary-color);
}
#modal-code {
background-color: #282c34; /* Match highlight.js theme background */
color: #abb2bf;
padding: 15px;
border-radius: 5px;
max-height: 60vh; /* Limit height and allow scroll */
overflow: auto;
display: block; /* Needed for <pre> */
white-space: pre-wrap; /* Wrap long lines */
word-break: break-all; /* Break words if needed */
}
/* Responsive adjustments (optional) */
@media (max-width: 768px) {
.leaderboard-header,
.leaderboard-row {
grid-template-columns: 40px 1fr 80px 80px; /* Adjust for smaller screens, hide timestamp maybe */
padding: 10px 15px;
gap: 10px;
font-size: 0.9rem;
}
.timestamp {
/* Hide timestamp column on small screens */
display: none;
}
.leaderboard-header .timestamp {
display: none;
}
.code-action {
/* Adjust button text or just show icon if needed */
grid-column: 4 / 5; /* Span correctly if timestamp is hidden */
}
.view-code-btn {
padding: 4px 8px;
font-size: 0.75rem;
}
header h1 {
font-size: 1.8rem;
}
.modal-content {
width: 95%;
}
}