feat: Update color scheme from green to blue theme

- Change color palette: black→grey→green→red to black→bluegrey→cyan→blue
- Primary text: #00ff00 → #00ffff (green to cyan)
- Headers/accents: #ff6600 → #4488ff (orange to blue)
- Panels/borders: #1a1a1a/#333 → #1a2332/#2a3441 (grey to blue-grey)
- Buttons: #333/#555 → #2a3441/#3a4551 (grey to blue-grey)
- Maintains terminal/hacker aesthetic with cooler color palette
- Requested by Fade for improved visual appeal
This commit is contained in:
Glenn Thompson 2025-10-03 05:27:43 +03:00 committed by Brian O'Reilly
parent a9de5f09f1
commit 62a1a94daa
2 changed files with 253 additions and 311 deletions

View File

@ -3,7 +3,7 @@ body{
font-weight: 400; font-weight: 400;
font-style: normal; font-style: normal;
background: #0a0a0a; background: #0a0a0a;
color: #00ff00; color: #00ffff;
margin: 0; margin: 0;
padding: 20px; padding: 20px;
} }
@ -14,27 +14,27 @@ body .container{
} }
body h1{ body h1{
color: #ff6600; color: #4488ff;
text-align: center; text-align: center;
font-size: 2.5em; font-size: 2.5em;
margin-bottom: 30px; margin-bottom: 30px;
} }
body h2{ body h2{
color: #ff6600; color: #4488ff;
} }
body .status{ body .status{
background: #1a1a1a; background: #1a2332;
padding: 20px; padding: 20px;
border: 1px solid #333; border: 1px solid #2a3441;
margin: 20px 0; margin: 20px 0;
} }
body .panel{ body .panel{
background: #1a1a1a; background: #1a2332;
padding: 20px; padding: 20px;
border: 1px solid #333; border: 1px solid #2a3441;
margin: 20px 0; margin: 20px 0;
} }
@ -43,17 +43,17 @@ body .nav{
} }
body .nav a{ body .nav a{
color: #00ff00; color: #00ffff;
text-decoration: none; text-decoration: none;
margin: 0 15px; margin: 0 15px;
padding: 10px 20px; padding: 10px 20px;
border: 1px solid #333; border: 1px solid #2a3441;
background: #1a1a1a; background: #1a2332;
display: inline-block; display: inline-block;
} }
body .nav a :hover{ body .nav a :hover{
background: #333; background: #2a3441;
} }
body .controls{ body .controls{
@ -61,42 +61,42 @@ body .controls{
} }
body .controls button{ body .controls button{
background: #1a1a1a; background: #1a2332;
color: #00ff00; color: #00ffff;
border: 1px solid #333; border: 1px solid #2a3441;
padding: 10px 20px; padding: 10px 20px;
margin: 5px; margin: 5px;
cursor: pointer; cursor: pointer;
} }
body .controls button :hover{ body .controls button :hover{
background: #333; background: #2a3441;
} }
body button{ body button{
background: #333; background: #2a3441;
color: #00ff00; color: #00ffff;
border: 1px solid #555; border: 1px solid #3a4551;
padding: 10px 20px; padding: 10px 20px;
margin: 5px; margin: 5px;
cursor: pointer; cursor: pointer;
} }
body button :hover{ body button :hover{
background: #555; background: #3a4551;
} }
body .now-playing{ body .now-playing{
background: #1a1a1a; background: #1a2332;
padding: 20px; padding: 20px;
border: 1px solid #333; border: 1px solid #2a3441;
margin: 20px 0; margin: 20px 0;
font-size: 1.5em; font-size: 1.5em;
color: #ff6600; color: #4488ff;
} }
body .back{ body .back{
color: #00ff00; color: #00ffff;
text-decoration: none; text-decoration: none;
margin-bottom: 20px; margin-bottom: 20px;
display: inline-block; display: inline-block;
@ -107,9 +107,9 @@ body .back :hover{
} }
body .player{ body .player{
background: #1a1a1a; background: #1a2332;
padding: 40px; padding: 40px;
border: 1px solid #333; border: 1px solid #2a3441;
margin: 40px auto; margin: 40px auto;
max-width: 600px; max-width: 600px;
} }
@ -123,9 +123,9 @@ body .player .controls button{
} }
body .player-section{ body .player-section{
background: #1a1a1a; background: #1a2332;
padding: 25px; padding: 25px;
border: 1px solid #333; border: 1px solid #2a3441;
margin: 20px 0; margin: 20px 0;
border-radius: 5px; border-radius: 5px;
} }
@ -138,8 +138,8 @@ body .search-input{
width: 100%; width: 100%;
padding: 12px; padding: 12px;
background: #0a0a0a; background: #0a0a0a;
color: #00ff00; color: #00ffff;
border: 1px solid #333; border: 1px solid #2a3441;
font-family: Courier New, monospace; font-family: Courier New, monospace;
font-size: 14px; font-size: 14px;
margin-bottom: 15px; margin-bottom: 15px;
@ -148,7 +148,7 @@ body .search-input{
body .track-list{ body .track-list{
max-height: 400px; max-height: 400px;
overflow-y: auto; overflow-y: auto;
border: 1px solid #333; border: 1px solid #2a3441;
background: #0a0a0a; background: #0a0a0a;
} }
@ -157,7 +157,7 @@ body .track-item{
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
padding: 12px 15px; padding: 12px 15px;
border-bottom: 1px solid #333; border-bottom: 1px solid #2a3441;
-moz-transition: background-color 0.2s; -moz-transition: background-color 0.2s;
-o-transition: background-color 0.2s; -o-transition: background-color 0.2s;
-webkit-transition: background-color 0.2s; -webkit-transition: background-color 0.2s;
@ -166,7 +166,7 @@ body .track-item{
} }
body .track-item :hover{ body .track-item :hover{
background: #1a1a1a; background: #1a2332;
} }
body .track-info{ body .track-info{
@ -174,7 +174,7 @@ body .track-info{
} }
body .track-info .track-title{ body .track-info .track-title{
color: #00ff00; color: #00ffff;
font-weight: bold; font-weight: bold;
margin-bottom: 4px; margin-bottom: 4px;
} }
@ -196,20 +196,20 @@ body .audio-player{
body .track-art{ body .track-art{
font-size: 3em; font-size: 3em;
margin-right: 20px; margin-right: 20px;
color: #ff6600; color: #4488ff;
} }
body .track-details .track-title{ body .track-details .track-title{
font-size: 1.4em; font-size: 1.4em;
color: #00ff00; color: #00ffff;
margin-bottom: 5px; margin-bottom: 5px;
} }
body .track-details .track-artist{ body .track-details .track-artist{
font-size: 1.1em; font-size: 1.1em;
color: #ff6600; color: #4488ff;
margin-bottom: 3px; margin-bottom: 3px;
} }
@ -232,12 +232,12 @@ body .player-info{
margin-top: 15px; margin-top: 15px;
padding: 10px; padding: 10px;
background: #0a0a0a; background: #0a0a0a;
border: 1px solid #333; border: 1px solid #2a3441;
border-radius: 3px; border-radius: 3px;
} }
body .time-display{ body .time-display{
color: #00ff00; color: #00ffff;
font-family: Courier New, monospace; font-family: Courier New, monospace;
} }
@ -248,21 +248,21 @@ body .volume-control{
} }
body .volume-control label{ body .volume-control label{
color: #ff6600; color: #4488ff;
} }
body .volume-slider{ body .volume-slider{
width: 100px; width: 100px;
height: 5px; height: 5px;
background: #333; background: #2a3441;
outline: none; outline: none;
border-radius: 3px; border-radius: 3px;
} }
body .btn{ body .btn{
background: #333; background: #2a3441;
color: #00ff00; color: #00ffff;
border: 1px solid #555; border: 1px solid #3a4551;
padding: 8px 16px; padding: 8px 16px;
margin: 3px; margin: 3px;
cursor: pointer; cursor: pointer;
@ -277,106 +277,70 @@ body .btn{
} }
body .btn :hover{ body .btn :hover{
background: #555; background: #3a4551;
border-color: #777; border-color: #3a4551;
} }
body .btn-primary{ body .btn .btn-primary{
background: #0066cc; background: #0066cc;
border-color: #0088ff; border-color: #0088ff;
} }
body .btn-primary :hover{ body .btn .btn-primary :hover{
background: #0088ff; background: #0088ff;
} }
body .btn-success{ body .btn .btn-secondary{
background: #006600;
border-color: #00aa00;
}
body .btn-success :hover{
background: #00aa00;
}
body .btn-danger{
background: #cc0000;
border-color: #ff0000;
}
body .btn-danger :hover{
background: #ff0000;
}
body .btn-info{
background: #006666;
border-color: #00aaaa;
}
body .btn-info :hover{
background: #00aaaa;
}
body .btn-warning{
background: #cc6600;
border-color: #ff8800;
}
body .btn-warning :hover{
background: #ff8800;
}
body .btn-secondary{
background: #444; background: #444;
border-color: #666; border-color: #2a3441;
} }
body .btn-secondary :hover{ body .btn .btn-secondary :hover{
background: #666; background: #666;
} }
body .btn-sm{ body .btn .btn-sm{
padding: 4px 8px; padding: 4px 8px;
font-size: 12px; font-size: 12px;
} }
body .btn.active{ body .btn .btn.active{
background: #ff6600; background: #4488ff;
border-color: #ff8800; border-color: #5599ff;
color: #000; color: #000;
} }
body .playlist-controls{ body .btn .playlist-controls{
margin-bottom: 15px; margin-bottom: 15px;
display: flex; display: flex;
gap: 10px; gap: 10px;
align-items: center; align-items: center;
} }
body .playlist-input{ body .btn .playlist-input{
flex: 1; flex: 1;
padding: 8px 12px; padding: 8px 12px;
background: #0a0a0a; background: #0a0a0a;
color: #00ff00; color: #00ffff;
border: 1px solid #333; border: 1px solid #2a3441;
font-family: Courier New, monospace; font-family: Courier New, monospace;
} }
body .playlist-list{ body .btn .playlist-list{
border: 1px solid #333; border: 1px solid #2a3441;
background: #0a0a0a; background: #0a0a0a;
min-height: 100px; min-height: 100px;
padding: 10px; padding: 10px;
} }
body .queue-controls{ body .btn .queue-controls{
margin-bottom: 15px; margin-bottom: 15px;
display: flex; display: flex;
gap: 10px; gap: 10px;
} }
body .play-queue{ body .btn .play-queue{
border: 1px solid #333; border: 1px solid #2a3441;
background: #0a0a0a; background: #0a0a0a;
min-height: 150px; min-height: 150px;
max-height: 300px; max-height: 300px;
@ -384,85 +348,85 @@ body .play-queue{
padding: 10px; padding: 10px;
} }
body .queue-item{ body .btn .queue-item{
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
padding: 8px 10px; padding: 8px 10px;
border-bottom: 1px solid #333; border-bottom: 1px solid #2a3441;
margin-bottom: 5px; margin-bottom: 5px;
} }
body .queue-item :last-child{ body .btn .queue-item :last-child{
border-bottom: none; border-bottom: none;
margin-bottom: 0; margin-bottom: 0;
} }
body .empty-queue{ body .btn .empty-queue{
text-align: center; text-align: center;
color: #666; color: #666;
padding: 20px; padding: 20px;
font-style: italic; font-style: italic;
} }
body .no-tracks{ body .btn .no-tracks{
text-align: center; text-align: center;
color: #666; color: #666;
padding: 20px; padding: 20px;
font-style: italic; font-style: italic;
} }
body .no-playlists{ body .btn .no-playlists{
text-align: center; text-align: center;
color: #666; color: #666;
padding: 20px; padding: 20px;
font-style: italic; font-style: italic;
} }
body .loading{ body .btn .loading{
text-align: center; text-align: center;
color: #ff6600; color: #4488ff;
padding: 20px; padding: 20px;
} }
body .error{ body .btn .error{
text-align: center; text-align: center;
color: #ff0000; color: #ff0000;
padding: 20px; padding: 20px;
font-weight: bold; font-weight: bold;
} }
body .upload-section{ body .btn .upload-section{
margin: 20px 0; margin: 20px 0;
padding: 20px; padding: 20px;
background: #0a0a0a; background: #0a0a0a;
border: 1px solid #333; border: 1px solid #2a3441;
border-radius: 5px; border-radius: 5px;
} }
body .upload-controls{ body .btn .upload-controls{
display: flex; display: flex;
gap: 15px; gap: 15px;
align-items: center; align-items: center;
margin-bottom: 15px; margin-bottom: 15px;
} }
body .upload-info{ body .btn .upload-info{
color: #888; color: #888;
font-size: 0.9em; font-size: 0.9em;
} }
body .upload-progress{ body .btn .upload-progress{
margin-top: 10px; margin-top: 10px;
padding: 10px; padding: 10px;
background: #1a1a1a; background: #1a2332;
border: 1px solid #333; border: 1px solid #2a3441;
border-radius: 3px; border-radius: 3px;
} }
body .progress-bar{ body .btn .progress-bar{
height: 20px; height: 20px;
background: #ff6600; background: #4488ff;
border-radius: 3px; border-radius: 3px;
-moz-transition: width 0.3s ease; -moz-transition: width 0.3s ease;
-o-transition: width 0.3s ease; -o-transition: width 0.3s ease;
@ -472,37 +436,37 @@ body .progress-bar{
width: 0%; width: 0%;
} }
body .progress-text{ body .btn .progress-text{
display: block; display: block;
margin-top: 5px; margin-top: 5px;
color: #00ff00; color: #00ffff;
font-size: 0.9em; font-size: 0.9em;
} }
body input{ body .btn input{
padding: 8px 12px; padding: 8px 12px;
background: #1a1a1a; background: #1a2332;
color: #00ff00; color: #00ffff;
border: 1px solid #333; border: 1px solid #2a3441;
border-radius: 3px; border-radius: 3px;
font-family: Courier New, monospace; font-family: Courier New, monospace;
} }
body .upload-interface{ body .btn .upload-interface{
margin-top: 2rem; margin-top: 2rem;
padding: 1.5rem; padding: 1.5rem;
background-color: #1a1a1a; background-color: #1a2332;
border-radius: 8px; border-radius: 8px;
border: 1px solid #333; border: 1px solid #2a3441;
} }
body .upload-interface h3{ body .btn .upload-interface h3{
color: #00ff00; color: #00ffff;
margin-bottom: 1rem; margin-bottom: 1rem;
} }
body .upload-interface .upload-area{ body .btn .upload-interface .upload-area{
border: 2px dashed #333; border: 2px dashed #2a3441;
border-radius: 8px; border-radius: 8px;
padding: 2rem; padding: 2rem;
text-align: center; text-align: center;
@ -514,26 +478,26 @@ body .upload-interface .upload-area{
transition: border-color 0.3s ease; transition: border-color 0.3s ease;
} }
body .upload-interface .upload-area &:hover{ body .btn .upload-interface .upload-area &:hover{
border-color: #00ff00; border-color: #00ffff;
} }
body .upload-interface .upload-area .upload-icon{ body .btn .upload-interface .upload-area .upload-icon{
font-size: 3rem; font-size: 3rem;
color: #666; color: #666;
margin-bottom: 1rem; margin-bottom: 1rem;
} }
body .upload-interface .upload-area p{ body .btn .upload-interface .upload-area p{
color: #999; color: #999;
margin-bottom: 1rem; margin-bottom: 1rem;
} }
body .upload-interface .upload-area .btn{ body .btn .upload-interface .upload-area .btn{
margin-top: 1rem; margin-top: 1rem;
} }
body .auth-container{ body .btn .auth-container{
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
@ -541,9 +505,9 @@ body .auth-container{
padding: 2rem; padding: 2rem;
} }
body .auth-form{ body .btn .auth-form{
background-color: #1a1a1a; background-color: #1a2332;
border: 1px solid #333; border: 1px solid #2a3441;
border-radius: 8px; border-radius: 8px;
padding: 2rem; padding: 2rem;
width: 100%; width: 100%;
@ -555,43 +519,43 @@ body .auth-form{
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3); box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
} }
body .auth-form h2{ body .btn .auth-form h2{
color: #00ff00; color: #00ffff;
text-align: center; text-align: center;
margin-bottom: 1.5rem; margin-bottom: 1.5rem;
font-size: 1.5rem; font-size: 1.5rem;
} }
body .auth-form h3{ body .btn .auth-form h3{
color: #00ff00; color: #00ffff;
margin-bottom: 1rem; margin-bottom: 1rem;
font-size: 1.2rem; font-size: 1.2rem;
} }
body .form-group{ body .btn .form-group{
margin-bottom: 1rem; margin-bottom: 1rem;
} }
body .form-group label{ body .btn .form-group label{
display: block; display: block;
color: #ccc; color: #ccc;
margin-bottom: 0.5rem; margin-bottom: 0.5rem;
font-weight: bold; font-weight: bold;
} }
body .form-group input{ body .btn .form-group input{
width: 100%; width: 100%;
padding: 0.75rem; padding: 0.75rem;
background-color: #0f0f0f; background-color: #0f0f0f;
border: 1px solid #333; border: 1px solid #2a3441;
border-radius: 4px; border-radius: 4px;
color: #fff; color: #fff;
font-size: 1rem; font-size: 1rem;
box-sizing: border-box; box-sizing: border-box;
} }
body .form-group input &:focus{ body .btn .form-group input &:focus{
border-color: #00ff00; border-color: #00ffff;
outline: none; outline: none;
-moz-box-shadow: 0 0 0 2px rgba(0, 255, 0, 0.2); -moz-box-shadow: 0 0 0 2px rgba(0, 255, 0, 0.2);
-o-box-shadow: 0 0 0 2px rgba(0, 255, 0, 0.2); -o-box-shadow: 0 0 0 2px rgba(0, 255, 0, 0.2);
@ -600,13 +564,13 @@ body .form-group input &:focus{
box-shadow: 0 0 0 2px rgba(0, 255, 0, 0.2); box-shadow: 0 0 0 2px rgba(0, 255, 0, 0.2);
} }
body .form-actions{ body .btn .form-actions{
display: flex; display: flex;
gap: 1rem; gap: 1rem;
margin-top: 1.5rem; margin-top: 1.5rem;
} }
body .message{ body .btn .message{
padding: 0.75rem; padding: 0.75rem;
border-radius: 4px; border-radius: 4px;
margin-top: 1rem; margin-top: 1rem;
@ -614,80 +578,80 @@ body .message{
font-weight: bold; font-weight: bold;
} }
body .message &.success{ body .btn .message &.success{
background-color: rgba(0, 255, 0, 0.1); background-color: rgba(0, 255, 0, 0.1);
border: 1px solid #00ff00; border: 1px solid #00ffff;
color: #00ff00; color: #00ffff;
} }
body .message &.error{ body .btn .message &.error{
background-color: rgba(255, 0, 0, 0.1); background-color: rgba(255, 0, 0, 0.1);
border: 1px solid #ff0000; border: 1px solid #ff0000;
color: #ff0000; color: #ff0000;
} }
body .auth-link{ body .btn .auth-link{
text-align: center; text-align: center;
margin-top: 1.5rem; margin-top: 1.5rem;
color: #999; color: #999;
} }
body .auth-link a{ body .btn .auth-link a{
color: #00ff00; color: #00ffff;
text-decoration: none; text-decoration: none;
} }
body .auth-link a &:hover{ body .btn .auth-link a &:hover{
text-decoration: underline; text-decoration: underline;
} }
body .profile-container{ body .btn .profile-container{
max-width: 600px; max-width: 600px;
margin: 2rem auto; margin: 2rem auto;
padding: 0 1rem; padding: 0 1rem;
} }
body .profile-card{ body .btn .profile-card{
background-color: #1a1a1a; background-color: #1a2332;
border: 1px solid #333; border: 1px solid #2a3441;
border-radius: 8px; border-radius: 8px;
padding: 2rem; padding: 2rem;
margin-bottom: 2rem; margin-bottom: 2rem;
} }
body .profile-card h2{ body .btn .profile-card h2{
color: #00ff00; color: #00ffff;
margin-bottom: 1.5rem; margin-bottom: 1.5rem;
text-align: center; text-align: center;
} }
body .profile-info{ body .btn .profile-info{
margin-bottom: 2rem; margin-bottom: 2rem;
} }
body .info-group{ body .btn .info-group{
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
padding: 0.75rem 0; padding: 0.75rem 0;
border-bottom: 1px solid #333; border-bottom: 1px solid #2a3441;
} }
body .info-group &:last-child{ body .btn .info-group &:last-child{
border-bottom: none; border-bottom: none;
} }
body .info-group label{ body .btn .info-group label{
color: #ccc; color: #ccc;
font-weight: bold; font-weight: bold;
} }
body .info-group span{ body .btn .info-group span{
color: #fff; color: #fff;
} }
body .role-badge{ body .btn .role-badge{
background-color: #00ff00; background-color: #00ffff;
color: #000; color: #000;
padding: 0.25rem 0.5rem; padding: 0.25rem 0.5rem;
border-radius: 4px; border-radius: 4px;
@ -695,86 +659,86 @@ body .role-badge{
font-weight: bold; font-weight: bold;
} }
body .profile-actions{ body .btn .profile-actions{
display: flex; display: flex;
gap: 1rem; gap: 1rem;
justify-content: center; justify-content: center;
} }
body .user-management{ body .btn .user-management{
margin-top: 2rem; margin-top: 2rem;
} }
body .users-table{ body .btn .users-table{
width: 100%; width: 100%;
border-collapse: collapse; border-collapse: collapse;
background-color: #1a1a1a; background-color: #1a2332;
border: 1px solid #333; border: 1px solid #2a3441;
border-radius: 8px; border-radius: 8px;
overflow: hidden; overflow: hidden;
} }
body .users-table thead{ body .btn .users-table thead{
background-color: #0f0f0f; background-color: #0f0f0f;
} }
body .users-table thead th{ body .btn .users-table thead th{
padding: 1rem; padding: 1rem;
text-align: left; text-align: left;
color: #00ff00; color: #00ffff;
font-weight: bold; font-weight: bold;
border-bottom: 1px solid #333; border-bottom: 1px solid #2a3441;
} }
body .users-table tbody tr{ body .btn .users-table tbody tr{
border-bottom: 1px solid #333; border-bottom: 1px solid #2a3441;
} }
body .users-table tbody tr &:hover{ body .btn .users-table tbody tr &:hover{
background-color: #222; background-color: #222;
} }
body .users-table tbody tr td{ body .btn .users-table tbody tr td{
padding: 1rem; padding: 1rem;
color: #fff; color: #fff;
vertical-align: middle; vertical-align: middle;
} }
body .users-table tbody .user-actions{ body .btn .users-table tbody .user-actions{
display: flex; display: flex;
gap: 0.5rem; gap: 0.5rem;
} }
body .users-table tbody .user-actions .btn{ body .btn .users-table tbody .user-actions .btn{
padding: 0.25rem 0.5rem; padding: 0.25rem 0.5rem;
font-size: 0.875rem; font-size: 0.875rem;
} }
body .user-stats{ body .btn .user-stats{
display: grid; display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
gap: 1rem; gap: 1rem;
margin-bottom: 2rem; margin-bottom: 2rem;
} }
body .stat-card{ body .btn .stat-card{
background-color: #1a1a1a; background-color: #1a2332;
border: 1px solid #333; border: 1px solid #2a3441;
border-radius: 8px; border-radius: 8px;
padding: 1rem; padding: 1rem;
text-align: center; text-align: center;
} }
body .stat-card .stat-number{ body .btn .stat-card .stat-number{
font-size: 2rem; font-size: 2rem;
font-weight: bold; font-weight: bold;
color: #00ff00; color: #00ffff;
display: block; display: block;
} }
body .stat-card .stat-label{ body .btn .stat-card .stat-label{
color: #ccc; color: #ccc;
font-size: 0.875rem; font-size: 0.875rem;
margin-top: 0.5rem; margin-top: 0.5rem;

View File

@ -7,7 +7,7 @@
:font-weight 400 :font-weight 400
:font-style normal :font-style normal
:background "#0a0a0a" :background "#0a0a0a"
:color "#00ff00" :color "#00ffff"
:margin 0 :margin 0
:padding "20px" :padding "20px"
@ -16,71 +16,71 @@
:margin "0 auto") :margin "0 auto")
(h1 (h1
:color "#ff6600" :color "#4488ff"
:text-align center :text-align center
:font-size "2.5em" :font-size "2.5em"
:margin-bottom "30px") :margin-bottom "30px")
(h2 (h2
:color "#ff6600") :color "#4488ff")
(.status (.status
:background "#1a1a1a" :background "#1a2332"
:padding "20px" :padding "20px"
:border "1px solid #333" :border "1px solid #2a3441"
:margin "20px 0") :margin "20px 0")
(.panel (.panel
:background "#1a1a1a" :background "#1a2332"
:padding "20px" :padding "20px"
:border "1px solid #333" :border "1px solid #2a3441"
:margin "20px 0") :margin "20px 0")
(.nav (.nav
:margin "20px 0" :margin "20px 0"
(a (a
:color "#00ff00" :color "#00ffff"
:text-decoration none :text-decoration none
:margin "0 15px" :margin "0 15px"
:padding "10px 20px" :padding "10px 20px"
:border "1px solid #333" :border "1px solid #2a3441"
:background "#1a1a1a" :background "#1a2332"
:display inline-block :display inline-block
(:hover (:hover
:background "#333"))) :background "#2a3441")))
(.controls (.controls
:margin "20px 0" :margin "20px 0"
(button (button
:background "#1a1a1a" :background "#1a2332"
:color "#00ff00" :color "#00ffff"
:border "1px solid #333" :border "1px solid #2a3441"
:padding "10px 20px" :padding "10px 20px"
:margin "5px" :margin "5px"
:cursor pointer :cursor pointer
(:hover (:hover
:background "#333"))) :background "#2a3441")))
(button (button
:background "#333" :background "#2a3441"
:color "#00ff00" :color "#00ffff"
:border "1px solid #555" :border "1px solid #3a4551"
:padding "10px 20px" :padding "10px 20px"
:margin "5px" :margin "5px"
:cursor pointer :cursor pointer
(:hover (:hover
:background "#555")) :background "#3a4551"))
(.now-playing (.now-playing
:background "#1a1a1a" :background "#1a2332"
:padding "20px" :padding "20px"
:border "1px solid #333" :border "1px solid #2a3441"
:margin "20px 0" :margin "20px 0"
:font-size "1.5em" :font-size "1.5em"
:color "#ff6600") :color "#4488ff")
(.back (.back
:color "#00ff00" :color "#00ffff"
:text-decoration none :text-decoration none
:margin-bottom "20px" :margin-bottom "20px"
:display inline-block :display inline-block
@ -89,9 +89,9 @@
;; Player-specific styles ;; Player-specific styles
(.player (.player
:background "#1a1a1a" :background "#1a2332"
:padding "40px" :padding "40px"
:border "1px solid #333" :border "1px solid #2a3441"
:margin "40px auto" :margin "40px auto"
:max-width "600px" :max-width "600px"
(.controls (.controls
@ -102,9 +102,9 @@
;; Web Player Widget Styles ;; Web Player Widget Styles
(.player-section (.player-section
:background "#1a1a1a" :background "#1a2332"
:padding "25px" :padding "25px"
:border "1px solid #333" :border "1px solid #2a3441"
:margin "20px 0" :margin "20px 0"
:border-radius "5px") :border-radius "5px")
@ -115,8 +115,8 @@
:width "100%" :width "100%"
:padding "12px" :padding "12px"
:background "#0a0a0a" :background "#0a0a0a"
:color "#00ff00" :color "#00ffff"
:border "1px solid #333" :border "1px solid #2a3441"
:font-family "Courier New, monospace" :font-family "Courier New, monospace"
:font-size "14px" :font-size "14px"
:margin-bottom "15px") :margin-bottom "15px")
@ -124,7 +124,7 @@
(.track-list (.track-list
:max-height "400px" :max-height "400px"
:overflow-y auto :overflow-y auto
:border "1px solid #333" :border "1px solid #2a3441"
:background "#0a0a0a") :background "#0a0a0a")
(.track-item (.track-item
@ -132,15 +132,15 @@
:justify-content space-between :justify-content space-between
:align-items center :align-items center
:padding "12px 15px" :padding "12px 15px"
:border-bottom "1px solid #333" :border-bottom "1px solid #2a3441"
:transition "background-color 0.2s" :transition "background-color 0.2s"
(:hover (:hover
:background "#1a1a1a")) :background "#1a2332"))
(.track-info (.track-info
:flex 1 :flex 1
(.track-title (.track-title
:color "#00ff00" :color "#00ffff"
:font-weight bold :font-weight bold
:margin-bottom "4px") :margin-bottom "4px")
(.track-meta (.track-meta
@ -157,16 +157,16 @@
(.track-art (.track-art
:font-size "3em" :font-size "3em"
:margin-right "20px" :margin-right "20px"
:color "#ff6600") :color "#4488ff")
(.track-details (.track-details
(.track-title (.track-title
:font-size "1.4em" :font-size "1.4em"
:color "#00ff00" :color "#00ffff"
:margin-bottom "5px") :margin-bottom "5px")
(.track-artist (.track-artist
:font-size "1.1em" :font-size "1.1em"
:color "#ff6600" :color "#4488ff"
:margin-bottom "3px") :margin-bottom "3px")
(.track-album (.track-album
:color "#888")) :color "#888"))
@ -185,11 +185,11 @@
:margin-top "15px" :margin-top "15px"
:padding "10px" :padding "10px"
:background "#0a0a0a" :background "#0a0a0a"
:border "1px solid #333" :border "1px solid #2a3441"
:border-radius "3px") :border-radius "3px")
(.time-display (.time-display
:color "#00ff00" :color "#00ffff"
:font-family "Courier New, monospace") :font-family "Courier New, monospace")
(.volume-control (.volume-control
@ -197,20 +197,20 @@
:align-items center :align-items center
:gap "10px" :gap "10px"
(label (label
:color "#ff6600")) :color "#4488ff"))
(.volume-slider (.volume-slider
:width "100px" :width "100px"
:height "5px" :height "5px"
:background "#333" :background "#2a3441"
:outline none :outline none
:border-radius "3px") :border-radius "3px")
;; Button styles ;; Button styles
(.btn (.btn
:background "#333" :background "#2a3441"
:color "#00ff00" :color "#00ffff"
:border "1px solid #555" :border "1px solid #3a4551"
:padding "8px 16px" :padding "8px 16px"
:margin "3px" :margin "3px"
:cursor pointer :cursor pointer
@ -219,8 +219,8 @@
:border-radius "3px" :border-radius "3px"
:transition "all 0.2s" :transition "all 0.2s"
(:hover (:hover
:background "#555" :background "#3a4551"
:border-color "#777")) :border-color "#3a4551")
(.btn-primary (.btn-primary
:background "#0066cc" :background "#0066cc"
@ -228,43 +228,19 @@
(:hover (:hover
:background "#0088ff")) :background "#0088ff"))
(.btn-success
:background "#006600"
:border-color "#00aa00"
(:hover
:background "#00aa00"))
(.btn-danger
:background "#cc0000"
:border-color "#ff0000"
(:hover
:background "#ff0000"))
(.btn-info
:background "#006666"
:border-color "#00aaaa"
(:hover
:background "#00aaaa"))
(.btn-warning
:background "#cc6600"
:border-color "#ff8800"
(:hover
:background "#ff8800"))
(.btn-secondary (.btn-secondary
:background "#444" :background "#444"
:border-color "#666" :border-color "#2a3441"
(:hover (:hover
:background "#666")) :background "#666"))
(.btn-sm (.btn-sm
:padding "4px 8px" :padding "4px 8px"
:font-size "12px") :font-size "12px")
(.btn.active (.btn.active
:background "#ff6600" :background "#4488ff"
:border-color "#ff8800" :border-color "#5599ff"
:color "#000") :color "#000")
;; Playlist and Queue styles ;; Playlist and Queue styles
@ -278,12 +254,12 @@
:flex 1 :flex 1
:padding "8px 12px" :padding "8px 12px"
:background "#0a0a0a" :background "#0a0a0a"
:color "#00ff00" :color "#00ffff"
:border "1px solid #333" :border "1px solid #2a3441"
:font-family "Courier New, monospace") :font-family "Courier New, monospace")
(.playlist-list (.playlist-list
:border "1px solid #333" :border "1px solid #2a3441"
:background "#0a0a0a" :background "#0a0a0a"
:min-height "100px" :min-height "100px"
:padding "10px") :padding "10px")
@ -294,7 +270,7 @@
:gap "10px") :gap "10px")
(.play-queue (.play-queue
:border "1px solid #333" :border "1px solid #2a3441"
:background "#0a0a0a" :background "#0a0a0a"
:min-height "150px" :min-height "150px"
:max-height "300px" :max-height "300px"
@ -306,7 +282,7 @@
:justify-content space-between :justify-content space-between
:align-items center :align-items center
:padding "8px 10px" :padding "8px 10px"
:border-bottom "1px solid #333" :border-bottom "1px solid #2a3441"
:margin-bottom "5px" :margin-bottom "5px"
(:last-child (:last-child
:border-bottom none :border-bottom none
@ -332,7 +308,7 @@
(.loading (.loading
:text-align center :text-align center
:color "#ff6600" :color "#4488ff"
:padding "20px") :padding "20px")
(.error (.error
@ -346,7 +322,7 @@
:margin "20px 0" :margin "20px 0"
:padding "20px" :padding "20px"
:background "#0a0a0a" :background "#0a0a0a"
:border "1px solid #333" :border "1px solid #2a3441"
:border-radius "5px") :border-radius "5px")
(.upload-controls (.upload-controls
@ -362,13 +338,13 @@
(.upload-progress (.upload-progress
:margin-top "10px" :margin-top "10px"
:padding "10px" :padding "10px"
:background "#1a1a1a" :background "#1a2332"
:border "1px solid #333" :border "1px solid #2a3441"
:border-radius "3px") :border-radius "3px")
(.progress-bar (.progress-bar
:height "20px" :height "20px"
:background "#ff6600" :background "#4488ff"
:border-radius "3px" :border-radius "3px"
:transition "width 0.3s ease" :transition "width 0.3s ease"
:width "0%") :width "0%")
@ -376,36 +352,36 @@
(.progress-text (.progress-text
:display block :display block
:margin-top "5px" :margin-top "5px"
:color "#00ff00" :color "#00ffff"
:font-size "0.9em") :font-size "0.9em")
(input (input
:padding "8px 12px" :padding "8px 12px"
:background "#1a1a1a" :background "#1a2332"
:color "#00ff00" :color "#00ffff"
:border "1px solid #333" :border "1px solid #2a3441"
:border-radius "3px" :border-radius "3px"
:font-family "Courier New, monospace") :font-family "Courier New, monospace")
(.upload-interface (.upload-interface
:margin-top 2rem :margin-top 2rem
:padding 1.5rem :padding 1.5rem
:background-color "#1a1a1a" :background-color "#1a2332"
:border-radius 8px :border-radius 8px
:border "1px solid #333" :border "1px solid #2a3441"
(h3 :color "#00ff00" (h3 :color "#00ffff"
:margin-bottom 1rem) :margin-bottom 1rem)
(.upload-area (.upload-area
:border "2px dashed #333" :border "2px dashed #2a3441"
:border-radius 8px :border-radius 8px
:padding 2rem :padding 2rem
:text-align center :text-align center
:background-color "#0f0f0f" :background-color "#0f0f0f"
:transition "border-color 0.3s ease" :transition "border-color 0.3s ease"
("&:hover" :border-color "#00ff00") ("&:hover" :border-color "#00ffff")
(.upload-icon :font-size 3rem (.upload-icon :font-size 3rem
:color "#666" :color "#666"
@ -425,20 +401,20 @@
:padding 2rem) :padding 2rem)
(.auth-form (.auth-form
:background-color "#1a1a1a" :background-color "#1a2332"
:border "1px solid #333" :border "1px solid #2a3441"
:border-radius 8px :border-radius 8px
:padding 2rem :padding 2rem
:width "100%" :width "100%"
:max-width 400px :max-width 400px
:box-shadow "0 4px 6px rgba(0, 0, 0, 0.3)" :box-shadow "0 4px 6px rgba(0, 0, 0, 0.3)"
(h2 :color "#00ff00" (h2 :color "#00ffff"
:text-align center :text-align center
:margin-bottom 1.5rem :margin-bottom 1.5rem
:font-size 1.5rem) :font-size 1.5rem)
(h3 :color "#00ff00" (h3 :color "#00ffff"
:margin-bottom 1rem :margin-bottom 1rem
:font-size 1.2rem)) :font-size 1.2rem))
@ -453,13 +429,13 @@
(input :width "100%" (input :width "100%"
:padding 0.75rem :padding 0.75rem
:background-color "#0f0f0f" :background-color "#0f0f0f"
:border "1px solid #333" :border "1px solid #2a3441"
:border-radius 4px :border-radius 4px
:color "#fff" :color "#fff"
:font-size 1rem :font-size 1rem
:box-sizing border-box :box-sizing border-box
("&:focus" :border-color "#00ff00" ("&:focus" :border-color "#00ffff"
:outline none :outline none
:box-shadow "0 0 0 2px rgba(0, 255, 0, 0.2)"))) :box-shadow "0 0 0 2px rgba(0, 255, 0, 0.2)")))
@ -476,8 +452,8 @@
:font-weight bold :font-weight bold
("&.success" :background-color "rgba(0, 255, 0, 0.1)" ("&.success" :background-color "rgba(0, 255, 0, 0.1)"
:border "1px solid #00ff00" :border "1px solid #00ffff"
:color "#00ff00") :color "#00ffff")
("&.error" :background-color "rgba(255, 0, 0, 0.1)" ("&.error" :background-color "rgba(255, 0, 0, 0.1)"
:border "1px solid #ff0000" :border "1px solid #ff0000"
@ -488,7 +464,7 @@
:margin-top 1.5rem :margin-top 1.5rem
:color "#999" :color "#999"
(a :color "#00ff00" (a :color "#00ffff"
:text-decoration none :text-decoration none
("&:hover" :text-decoration underline))) ("&:hover" :text-decoration underline)))
@ -500,13 +476,13 @@
:padding 0 1rem) :padding 0 1rem)
(.profile-card (.profile-card
:background-color "#1a1a1a" :background-color "#1a2332"
:border "1px solid #333" :border "1px solid #2a3441"
:border-radius 8px :border-radius 8px
:padding 2rem :padding 2rem
:margin-bottom 2rem :margin-bottom 2rem
(h2 :color "#00ff00" (h2 :color "#00ffff"
:margin-bottom 1.5rem :margin-bottom 1.5rem
:text-align center)) :text-align center))
@ -518,7 +494,7 @@
:justify-content space-between :justify-content space-between
:align-items center :align-items center
:padding 0.75rem 0 :padding 0.75rem 0
:border-bottom "1px solid #333" :border-bottom "1px solid #2a3441"
("&:last-child" :border-bottom none) ("&:last-child" :border-bottom none)
@ -528,7 +504,7 @@
(span :color "#fff")) (span :color "#fff"))
(.role-badge (.role-badge
:background-color "#00ff00" :background-color "#00ffff"
:color "#000" :color "#000"
:padding "0.25rem 0.5rem" :padding "0.25rem 0.5rem"
:border-radius 4px :border-radius 4px
@ -547,8 +523,8 @@
(.users-table (.users-table
:width "100%" :width "100%"
:border-collapse collapse :border-collapse collapse
:background-color "#1a1a1a" :background-color "#1a2332"
:border "1px solid #333" :border "1px solid #2a3441"
:border-radius 8px :border-radius 8px
:overflow hidden :overflow hidden
@ -557,12 +533,12 @@
(th :padding 1rem (th :padding 1rem
:text-align left :text-align left
:color "#00ff00" :color "#00ffff"
:font-weight bold :font-weight bold
:border-bottom "1px solid #333")) :border-bottom "1px solid #2a3441"))
(tbody (tbody
(tr :border-bottom "1px solid #333" (tr :border-bottom "1px solid #2a3441"
("&:hover" :background-color "#222") ("&:hover" :background-color "#222")
@ -584,15 +560,15 @@
:margin-bottom 2rem) :margin-bottom 2rem)
(.stat-card (.stat-card
:background-color "#1a1a1a" :background-color "#1a2332"
:border "1px solid #333" :border "1px solid #2a3441"
:border-radius 8px :border-radius 8px
:padding 1rem :padding 1rem
:text-align center :text-align center
(.stat-number :font-size 2rem (.stat-number :font-size 2rem
:font-weight bold :font-weight bold
:color "#00ff00" :color "#00ffff"
:display block) :display block)
(.stat-label :color "#ccc" (.stat-label :color "#ccc"
@ -600,5 +576,7 @@
:margin-top 0.5rem))) :margin-top 0.5rem)))
;; Center alignment for player page ;; Center alignment for player page
;; (body.player-page ;; (body.player-page
;; :text-align center) ;; :text-align center)
) ;; Close main body block