*, *::before, *::after { box-sizing: inherit; } html { background-color: var(--fg); } body { box-sizing: border-box; font-family: lato, sans-serif; line-height: 1; background-color: var(--bg); color: var(--fg); text-shadow: 0 1px 1px #000; max-width: 800px; margin: 0 auto; overflow: hidden; display: flex; flex-direction: column; height: 100vh; } body > header, body > footer { box-shadow: 0 0 3px #000; } input, select, button { color: inherit; } button { -webkit-appearance: none; -moz-appearance: none; appearance: none; background-color: transparent; padding: 0; border: none; line-height: 1; cursor: pointer; flex-shrink: 0; } @font-face { font-family: 'Lato'; src: url('font/LatoLatin-Regular.woff2') format('woff2'); font-style: normal; font-weight: normal; } @font-face { font-family: 'Lato'; src: url('font/LatoLatin-bold.woff2') format('woff2'); font-style: bold; font-weight: normal; } .icon { vertical-align: middle; width: 24px; } .icon path:not([fill]), .icon polygon:not([fill]), .icon circle:not([fill]) { fill: currentColor; } main { flex-grow: 1; overflow: hidden; } nav ul { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: row; } nav ul .icon { display: block; margin: 4px auto; } nav ul li { text-align: center; flex: 1 0 0; cursor: pointer; border-top: 4px solid transparent; border-bottom: 4px solid transparent; } nav ul li.active { border-top-color: var(--primary); } #player { display: flex; flex-direction: row; align-items: center; } #player:not([data-state=play]) .pause { display: none; } #player[data-state=play] .play { display: none; } #player:not([data-flags~=random]) .random, #player:not([data-flags~=repeat]) .repeat { opacity: 0.5; } #player .art img { vertical-align: top; } #player .info { flex-grow: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } #player .controls { white-space: nowrap; text-align: center; } #player .controls .icon { width: 64px; } #player .misc { display: flex; flex-direction: column; width: 48px; } #player .misc .icon { width: 48px; } .component { height: 100%; display: flex; flex-direction: column; } .component ul { flex-grow: 1; overflow: auto; list-style: none; margin: 0; padding: 0; } .component .grid li { display: flex; flex-direction: row; align-items: center; padding: 0 4px; white-space: nowrap; } .component .grid h2 { flex-grow: 1; font-size: 100%; font-weight: normal; margin: 0; overflow: hidden; text-overflow: ellipsis; } .component .grid h2 .icon { margin-right: 4px; color: var(--primary); } .component .grid li:nth-child(odd) { background-color: #555; } @media (pointer: coarse) { .component .grid .icon { width: 32px; } } #queue { height: 100%; display: flex; flex-direction: column; } #queue ul { flex-grow: 1; overflow: auto; list-style: none; margin: 0; padding: 0; } #queue .grid li { display: flex; flex-direction: row; align-items: center; padding: 0 4px; white-space: nowrap; } #queue .grid h2 { flex-grow: 1; font-size: 100%; font-weight: normal; margin: 0; overflow: hidden; text-overflow: ellipsis; } #queue .grid h2 .icon { margin-right: 4px; color: var(--primary); } #queue .grid li:nth-child(odd) { background-color: #555; } @media (pointer: coarse) { #queue .grid .icon { width: 32px; } } #queue .current * { font-weight: bold !important; } #library { height: 100%; display: flex; flex-direction: column; } #library ul { flex-grow: 1; overflow: auto; list-style: none; margin: 0; padding: 0; } #library .grid li { display: flex; flex-direction: row; align-items: center; padding: 0 4px; white-space: nowrap; } #library .grid h2 { flex-grow: 1; font-size: 100%; font-weight: normal; margin: 0; overflow: hidden; text-overflow: ellipsis; } #library .grid h2 .icon { margin-right: 4px; color: var(--primary); } #library .grid li:nth-child(odd) { background-color: #555; } @media (pointer: coarse) { #library .grid .icon { width: 32px; } } #fs { height: 100%; display: flex; flex-direction: column; } #fs ul { flex-grow: 1; overflow: auto; list-style: none; margin: 0; padding: 0; } #fs .grid li { display: flex; flex-direction: row; align-items: center; padding: 0 4px; white-space: nowrap; } #fs .grid h2 { flex-grow: 1; font-size: 100%; font-weight: normal; margin: 0; overflow: hidden; text-overflow: ellipsis; } #fs .grid h2 .icon { margin-right: 4px; color: var(--primary); } #fs .grid li:nth-child(odd) { background-color: #555; } @media (pointer: coarse) { #fs .grid .icon { width: 32px; } } #fs .group { cursor: pointer; } #playlists { height: 100%; display: flex; flex-direction: column; } #playlists ul { flex-grow: 1; overflow: auto; list-style: none; margin: 0; padding: 0; } #playlists .grid li { display: flex; flex-direction: row; align-items: center; padding: 0 4px; white-space: nowrap; } #playlists .grid h2 { flex-grow: 1; font-size: 100%; font-weight: normal; margin: 0; overflow: hidden; text-overflow: ellipsis; } #playlists .grid h2 .icon { margin-right: 4px; color: var(--primary); } #playlists .grid li:nth-child(odd) { background-color: #555; } @media (pointer: coarse) { #playlists .grid .icon { width: 32px; } } :root { --primary: dodgerblue; --fg: #fff; --bg: #333; }