Files
cursor_rush/frontend/src/components/content_modules/Cursors.css
T
2025-05-16 17:38:33 +02:00

359 lines
6.8 KiB
CSS

/* Cursors Module Styles */
.cursors-container {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
overflow: hidden;
}
/* Equipped cursor banner */
.equipped-cursor-banner {
height: 25%;
min-height: 120px;
max-height: 150px;
display: flex;
background-color: rgba(30, 30, 46, 0.3);
border-bottom: 2px solid rgba(49, 50, 68, 0.6);
padding: 10px;
margin-bottom: 10px;
}
.current-preview {
max-width: 80%;
max-height: 80%;
object-fit: contain;
filter: drop-shadow(0 0 5px rgba(0, 0, 0, 0.3));
transition: all 0.3s ease;
}
.current-preview.legendary {
animation: float 3s ease-in-out infinite;
filter: drop-shadow(0 0 8px rgba(249, 226, 175, 0.4));
}
@keyframes float {
0% { transform: translateY(0px); }
50% { transform: translateY(-5px); }
100% { transform: translateY(0px); }
}
.equipped-cursor-details {
display: flex;
flex-direction: column;
justify-content: space-between;
flex: 1;
}
.equipped-cursor-info {
display: flex;
flex-direction: column;
}
.equipped-label {
font-size: 12px;
font-weight: 600;
color: rgba(205, 214, 244, 0.6);
letter-spacing: 1px;
margin-bottom: 4px;
}
.equipped-name {
font-size: 20px;
font-weight: 600;
margin-bottom: 5px;
}
.equipped-rarity {
font-size: 14px;
font-weight: 500;
opacity: 0.8;
}
.next-button {
align-self: flex-start;
background-color: rgba(65, 66, 88, 0.8);
border: none;
border-radius: 4px;
padding: 8px 15px;
color: var(--text-color);
font-size: 13px;
font-weight: 500;
cursor: pointer;
transition: all 0.2s;
}
.next-button:hover {
background-color: var(--accent-color);
color: #1e1e2e;
transform: translateY(-2px);
}
/* Library controls section */
.cursors-controls {
display: flex;
flex-direction: column;
gap: 10px;
padding: 5px 10px 15px 10px;
border-bottom: 1px solid rgba(49, 50, 68, 0.4);
}
.search-box {
position: relative;
margin-bottom: 8px;
}
.search-icon {
position: absolute;
left: 10px;
top: 50%;
transform: translateY(-50%);
color: rgba(205, 214, 244, 0.5);
pointer-events: none;
}
.search-input {
width: 100%;
background-color: rgba(49, 50, 68, 0.3);
border: 1px solid rgba(49, 50, 68, 0.6);
border-radius: 4px;
color: var(--text-color);
padding: 8px 10px 8px 32px;
font-size: 14px;
outline: none;
transition: all 0.2s;
}
.search-input:focus {
border-color: var(--accent-color);
box-shadow: 0 0 5px rgba(137, 180, 250, 0.3);
}
.filter-controls {
display: flex;
gap: 8px;
flex-wrap: wrap;
overflow-x: auto;
padding-bottom: 5px;
}
.filter-button {
background-color: rgba(49, 50, 68, 0.4);
border: none;
border-radius: 4px;
padding: 5px 10px;
font-size: 12px;
cursor: pointer;
transition: all 0.2s ease;
white-space: nowrap;
border-left: 3px solid transparent;
}
.filter-button:hover {
background-color: rgba(65, 66, 88, 0.6);
}
.filter-button.active {
background-color: rgba(65, 66, 88, 0.8);
color: var(--accent-color);
}
/* Rarity-based styling for filter buttons */
.filter-button.common {
border-left-color: #a6adc8;
}
.filter-button.uncommon {
border-left-color: #a6e3a1;
}
.filter-button.rare {
border-left-color: #89b4fa;
}
.filter-button.epic {
border-left-color: #cba6f7;
}
.filter-button.legendary {
border-left-color: #f9e2af;
}
/* Main cursor library */
.cursor-library {
flex: 1;
display: flex;
flex-direction: column;
overflow-y: auto;
padding: 0 10px;
scrollbar-width: thin;
margin-top: 5px;
}
.rarity-section {
display: flex;
flex-direction: column;
margin-bottom: 20px;
}
.rarity-header {
display: flex;
align-items: center;
margin-bottom: 10px;
flex-wrap: nowrap;
}
.rarity-title {
font-size: 14px;
font-weight: 600;
margin: 0;
white-space: nowrap;
margin-right: 10px;
}
.rarity-line {
flex: 1;
height: 1px;
opacity: 0.3;
}
/* Rarity colors */
.equipped-name.common, .equipped-rarity.common, .rarity-line.common { background-color: #a6adc8; }
.equipped-name.uncommon, .equipped-rarity.uncommon, .rarity-line.uncommon { background-color: #a6e3a1; }
.equipped-name.rare, .equipped-rarity.rare, .rarity-line.rare { background-color: #89b4fa; }
.equipped-name.epic, .equipped-rarity.epic, .rarity-line.epic { background-color: #cba6f7; }
.equipped-name.legendary, .equipped-rarity.legendary, .rarity-line.legendary { background-color: #f9e2af; }
/* Horizontal scrolling cursor list */
.cursor-list {
display: flex;
gap: 12px;
overflow-x: auto;
padding: 5px 0 15px 0;
scrollbar-width: thin;
margin-bottom: 5px;
}
.cursor-card {
min-width: 150px;
max-width: 180px;
background-color: rgba(49, 50, 68, 0.4);
border-radius: 8px;
overflow: hidden;
transition: all 0.2s ease;
cursor: pointer;
border: 1px solid rgba(49, 50, 68, 0.4);
position: relative;
flex: 0 0 auto;
}
/* Circular rarity indicator in top right */
.cursor-card::before {
content: '';
position: absolute;
top: 8px;
right: 8px;
width: 12px;
height: 12px;
border-radius: 50%;
z-index: 5;
background-color: currentColor;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);
}
/* Rarity colors */
.cursor-card.common { color: #a6adc8; }
.cursor-card.uncommon { color: #a6e3a1; }
.cursor-card.rare { color: #89b4fa; }
.cursor-card.epic { color: #cba6f7; }
.cursor-card.legendary { color: #f9e2af; }
/* Hover and active states */
.cursor-card:hover {
transform: translateY(-3px) scale(1.02);
box-shadow: 0 8px 15px rgba(0, 0, 0, 0.15);
border-color: currentColor;
z-index: 5;
}
.cursor-card:active {
transform: translateY(0) scale(0.98);
}
.cursor-card.active {
border-color: currentColor;
box-shadow: 0 0 12px currentColor;
}
/* Preview container */
.cursor-preview-container {
height: 100px;
display: flex;
align-items: center;
justify-content: center;
background-color: rgba(30, 30, 46, 0.5);
padding: 12px;
}
.cursor-preview-img {
max-width: 80%;
max-height: 80%;
object-fit: contain;
transition: transform 0.3s ease;
}
.cursor-card:hover .cursor-preview-img {
transform: scale(1.1);
}
/* Cursor details */
.cursor-details {
padding: 10px;
display: flex;
flex-direction: column;
gap: 3px;
}
.cursor-name {
font-weight: 500;
font-size: 13px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.cursor-rarity-badge {
display: inline-block;
font-size: 11px;
text-transform: capitalize;
opacity: 0.7;
}
/* Animation for legendary items */
.cursor-card.legendary::before {
animation: legendaryGlow 2s infinite;
}
@keyframes legendaryGlow {
0% { opacity: 0.4; }
50% { opacity: 0.9; }
100% { opacity: 0.4; }
}
/* Empty states */
.no-cursors, .no-results {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
background-color: rgba(49, 50, 68, 0.2);
border-radius: 8px;
padding: 20px;
text-align: center;
color: var(--text-color);
opacity: 0.7;
font-size: 14px;
}