spotify-web-app / public /css /styles.css
findEthics
Implement Phase 5: Enterprise-grade code quality and testing framework
99d9688
Raw
History Blame Contribute Delete
8.24 kB
/* Mobile-first responsive design */
* {
box-sizing: border-box;
}
body {
font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
background: white;
color: black;
margin: 0;
padding: 0;
min-height: 100vh;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
.container {
background: white;
border: 2px solid black;
border-radius: 0px; /* No radius on mobile for seamless appearance */
width: 100%;
max-width: 500px;
margin: 0 auto;
margin-top: 0px;
margin-bottom: 0px; /* No gap on mobile for maximum space utilization */
}
.header {
padding: 8px 15px;
border-bottom: 2px solid black;
text-align: center;
}
.header h1 {
margin: 0 0 10px 0;
font-size: 1.2rem;
font-weight: bold;
}
.header p {
margin: 0;
font-size: 0.8rem;
}
.player-section {
position: fixed;
bottom: 0;
left: 0;
right: 0;
background: white;
color: black;
border-top: 2px solid black;
padding: 8px 12px;
z-index: 1000;
max-width: 100vw;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
}
.current-track {
flex: 1;
text-align: left;
min-width: 0;
}
.track-info {
margin: 0;
}
.track-title {
font-weight: bold;
font-size: 0.8rem;
margin: 0 0 2px 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
color: black;
}
.track-artist {
font-size: 0.7rem;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
color: black;
margin: 0;
}
.controls {
display: flex;
align-items: center;
gap: 4px;
flex-shrink: 0;
}
.control-btn {
background: white;
color: black;
border: 2px solid black;
border-radius: 4px;
padding: 6px 10px;
font-size: 0.7rem;
font-weight: bold;
cursor: pointer;
font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
min-height: 32px;
min-width: 32px;
display: flex;
align-items: center;
justify-content: center;
-webkit-tap-highlight-color: rgba(0,0,0,0.1);
}
.control-btn:hover,
.control-btn:active {
background: black;
color: white;
}
.control-btn:disabled {
background: white;
color: black;
opacity: 0.5;
cursor: not-allowed;
}
.playlist-section {
max-height: calc(100vh - 52px); /* Account for playback controls height only */
overflow-y: auto;
}
.track-item {
padding: 12px 15px;
border-bottom: 1px solid black;
cursor: pointer;
display: flex;
align-items: center;
gap: 10px;
}
.track-item:hover {
background: black;
color: white;
}
.track-item.playing {
background: black;
color: white;
}
.track-number {
font-weight: bold;
min-width: 25px;
font-size: 0.8rem;
}
.track-details {
flex: 1;
}
.track-name {
font-weight: bold;
font-size: 0.85rem;
margin-bottom: 2px;
}
.track-artist-name {
font-size: 0.75rem;
}
.loading {
text-align: center;
padding: 40px 20px;
font-size: 0.9rem;
}
.error {
text-align: center;
padding: 20px;
border: 2px solid black;
border-radius: 8px;
margin: 10px;
font-size: 0.9rem;
}
#device-list {
position: fixed;
bottom: 60px; /* Position above the smaller fixed controls */
left: 50%;
transform: translateX(-50%);
width: calc(100% - 30px);
max-width: 470px;
border: 2px solid black;
border-radius: 8px;
background: white;
z-index: 1001;
max-height: 300px;
overflow-y: auto;
}
.device-header {
padding: 10px 15px;
border-bottom: 2px solid black;
font-weight: bold;
font-size: 0.9rem;
background: black;
color: white;
}
.device-item {
padding: 12px 15px;
border-bottom: 1px solid black;
cursor: pointer;
display: flex;
align-items: center;
justify-content: space-between;
}
.device-item:last-child {
border-bottom: none;
}
.device-item:hover {
background: black;
color: white;
}
.device-item.active {
background: black;
color: white;
font-weight: bold;
}
.device-info {
flex: 1;
}
.device-name {
font-weight: bold;
font-size: 0.9rem;
margin-bottom: 2px;
}
.device-type {
font-size: 0.8rem;
}
.device-status {
font-size: 0.8rem;
font-weight: bold;
}
.nav-header {
display: none;
}
.nav-title {
font-weight: bold;
font-size: 1rem;
}
.nav-buttons {
display: flex;
gap: 10px;
}
.nav-btn {
background: black;
color: white;
border: 2px solid black;
border-radius: 4px;
padding: 6px 10px;
font-size: 0.7rem;
font-weight: bold;
cursor: pointer;
text-decoration: none;
font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
min-height: 32px;
min-width: 32px;
display: flex;
align-items: center;
justify-content: center;
-webkit-tap-highlight-color: rgba(0,0,0,0.1);
}
.nav-btn:hover,
.nav-btn:active {
background: white;
color: black;
}
.filter-section {
margin-top: 3px;
padding-top: 3px;
}
.filter-buttons {
display: flex;
gap: 8px;
margin-bottom: 3px;
flex-wrap: wrap;
justify-content: space-between;
align-items: center;
}
.filter-left {
display: flex;
gap: 8px;
}
.filter-right {
display: flex;
gap: 8px;
}
.filter-btn {
background: white;
color: black;
border: 2px solid black;
border-radius: 4px;
padding: 6px 10px;
font-size: 0.7rem;
font-weight: bold;
cursor: pointer;
font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
min-height: 32px;
min-width: 32px;
display: flex;
align-items: center;
justify-content: center;
-webkit-tap-highlight-color: rgba(0,0,0,0.1);
}
.filter-btn:hover,
.filter-btn:active {
background: black;
color: white;
}
.filter-btn.active {
background: black;
color: white;
}
.filter-info {
font-size: 0.75rem;
color: black;
opacity: 0.8;
text-align: center;
}
/* Tablet styles */
@media (min-width: 768px) {
.container {
margin-top: 20px;
max-width: 600px;
margin-bottom: 140px; /* More space for larger controls */
}
.header {
padding: 10px 20px;
}
.header h1 {
font-size: 1.5rem;
margin-bottom: 15px;
}
.header p {
font-size: 1rem;
}
.player-section {
padding: 15px 20px;
}
.track-title {
font-size: 1rem;
}
.track-artist {
font-size: 0.85rem;
}
.control-btn {
padding: 12px 18px;
font-size: 1rem;
min-height: 48px;
}
.track-item {
padding: 15px 20px;
}
.track-name {
font-size: 1rem;
}
.track-artist-name {
font-size: 0.85rem;
}
#device-list {
bottom: 150px; /* More space for larger tablet controls */
}
}
/* Desktop styles */
@media (min-width: 1024px) {
.container {
max-width: 700px;
margin-top: 20px;
margin-bottom: 100px; /* Proper spacing for desktop controls */
border-radius: 12px; /* Restore rounded corners on desktop */
}
.playlist-section {
max-height: calc(100vh - 200px); /* More conservative height for desktop */
}
.header h1 {
font-size: 1.8rem;
}
.player-section {
padding: 12px 20px;
}
.track-title {
font-size: 0.9rem;
}
.track-artist {
font-size: 0.8rem;
}
.control-btn {
padding: 8px 12px;
font-size: 0.8rem;
min-height: 36px;
min-width: 36px;
}
.nav-btn {
padding: 8px 12px;
font-size: 0.8rem;
min-height: 36px;
min-width: 36px;
}
.filter-btn {
padding: 8px 12px;
font-size: 0.8rem;
min-height: 36px;
min-width: 36px;
}
#device-list {
bottom: 80px; /* Adjust for smaller desktop controls */
}
}