Spaces:
Running
Running
body { | |
padding: 2rem; | |
font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif; | |
} | |
h1 { | |
font-size: 16px; | |
margin-top: 0; | |
} | |
p { | |
color: rgb(107, 114, 128); | |
font-size: 15px; | |
margin-bottom: 10px; | |
margin-top: 5px; | |
} | |
.card { | |
max-width: 620px; | |
margin: 0 auto; | |
padding: 16px; | |
border: 1px solid lightgray; | |
border-radius: 16px; | |
} | |
.card p:last-child { | |
margin-bottom: 0; | |
} | |
/* Sortable Table Header Styles */ | |
.sortable-header { | |
cursor: pointer; | |
position: relative; /* Needed for pseudo-element positioning */ | |
padding-right: 20px; /* Make space for the arrow */ | |
} | |
.sortable-header::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.4; /* Dim by default */ | |
} | |
.sortable-header:hover::after { | |
opacity: 0.7; /* Slightly brighter on hover */ | |
} | |
.sortable-header.sort-asc::after { | |
border-bottom: 5px solid var(--text-color); /* Arrow pointing up */ | |
opacity: 1; | |
} | |
.sortable-header.sort-desc::after { | |
border-top: 5px solid var(--text-color); /* Arrow pointing down */ | |
opacity: 1; | |
} | |
/* Spinner Styles */ | |
#loading { | |
display: flex; | |
flex-direction: column; /* Stack spinner and message */ | |
align-items: center; | |
justify-content: center; | |
min-height: 150px; /* Give it some space */ | |
text-align: center; | |
font-size: 1.2em; | |
color: var(--muted-text-color); | |
} | |
.spinner { | |
border: 3px solid transparent; | |
width: 40px; | |
height: 40px; | |
border-radius: 50%; | |
border-top-color: var(--primary-color); | |
border-left-color: var(--primary-color); | |
margin-bottom: 20px; | |
animation: spin 1s cubic-bezier(0.68, -0.55, 0.27, 1.55) infinite; | |
position: relative; | |
will-change: transform; | |
} | |
.skeleton { | |
background: linear-gradient(90deg, rgba(22, 27, 34, 0.2) 25%, rgba(22, 27, 34, 0.3) 50%, rgba(22, 27, 34, 0.2) 75%); | |
background-size: 200% 100%; | |
animation: skeleton-loading 1.5s infinite; | |
border-radius: 8px; | |
min-height: 100px; | |
} | |
@keyframes skeleton-loading { | |
0% { background-position: 200% 0; } | |
100% { background-position: -200% 0; } | |
} | |
.spinner::after { | |
content: ''; | |
position: absolute; | |
top: -6px; | |
left: -6px; | |
right: -6px; | |
bottom: -6px; | |
border: 3px solid transparent; | |
border-radius: 50%; | |
border-top-color: rgba(88, 166, 255, 0.3); | |
border-left-color: rgba(88, 166, 255, 0.3); | |
animation: spin 1.5s cubic-bezier(0.68, -0.55, 0.27, 1.55) infinite reverse; | |
} | |
#loading-message { | |
font-size: 1rem; /* Slightly smaller message */ | |
} | |
@keyframes spin { | |
0% { | |
transform: rotate(0deg); | |
opacity: 1; | |
} | |
50% { | |
opacity: 0.7; | |
} | |
100% { | |
transform: rotate(360deg); | |
opacity: 1; | |
} | |
} | |