Code/MediaRemote.razor.scss
$accent: #3fa9ff;
.mediaremote
{
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
justify-content: center;
align-items: center;
background-color: rgba( 0, 0, 0, 0.35 );
pointer-events: all;
font-family: Poppins;
color: white;
i
{
font-family: "Material Icons";
}
.window
{
width: 760px;
max-height: 90%;
flex-direction: column;
padding: 24px 28px;
border-radius: 16px;
background-color: rgba( 14, 17, 23, 0.97 );
border: 1px solid rgba( 255, 255, 255, 0.08 );
box-shadow: 0 10px 40px rgba( 0, 0, 0, 0.6 );
gap: 16px;
}
.header
{
flex-direction: row;
align-items: center;
gap: 12px;
> i
{
font-size: 30px;
color: $accent;
}
.title
{
flex-grow: 1;
font-size: 22px;
font-weight: 700;
}
.close
{
width: 36px;
height: 36px;
border-radius: 18px;
justify-content: center;
align-items: center;
cursor: pointer;
opacity: 0.7;
&:hover
{
opacity: 1;
background-color: rgba( 255, 255, 255, 0.1 );
}
}
}
.now
{
flex-direction: column;
gap: 4px;
.label
{
font-size: 13px;
text-transform: uppercase;
opacity: 0.5;
letter-spacing: 1px;
}
.track
{
font-size: 20px;
font-weight: 600;
&.dim
{
opacity: 0.5;
}
}
.sub
{
flex-direction: row;
font-size: 14px;
opacity: 0.7;
gap: 16px;
.time
{
margin-left: auto;
// every digit the same width, so it doesn't jiggle as it counts (Poppins has no tabular digits, Inter does)
font-family: Inter;
font-variant-numeric: tabular-nums;
}
}
.status
{
margin-top: 6px;
font-size: 14px;
color: #ffcc66;
}
.notice
{
margin-top: 6px;
padding: 8px 12px;
border-radius: 8px;
font-size: 14px;
background-color: rgba( 180, 40, 40, 0.85 );
}
}
.seek
{
&.disabled
{
pointer-events: none;
opacity: 0.5;
}
SliderControl, .slidercontrol
{
width: 100%;
}
}
.transport
{
flex-direction: row;
justify-content: center;
gap: 10px;
}
.btn
{
width: 48px;
height: 48px;
border-radius: 24px;
justify-content: center;
align-items: center;
background-color: rgba( 255, 255, 255, 0.08 );
cursor: pointer;
i
{
font-size: 28px;
}
&.big
{
width: 60px;
height: 60px;
border-radius: 30px;
background-color: $accent;
i
{
font-size: 36px;
}
}
&.small
{
width: 36px;
height: 36px;
i
{
font-size: 20px;
}
}
&:hover
{
background-color: rgba( 63, 169, 255, 0.6 );
}
}
.entry
{
flex-direction: row;
align-items: center;
gap: 8px;
TextEntry, .textentry
{
flex-grow: 1;
height: 44px;
padding: 0 14px;
border-radius: 8px;
font-size: 15px;
background-color: rgba( 255, 255, 255, 0.07 );
border: 1px solid rgba( 255, 255, 255, 0.12 );
align-items: center;
&:focus
{
border-color: $accent;
}
}
.action
{
height: 44px;
padding: 0 14px;
border-radius: 8px;
align-items: center;
gap: 6px;
font-size: 15px;
font-weight: 600;
white-space: nowrap;
cursor: pointer;
background-color: rgba( 255, 255, 255, 0.1 );
i
{
font-size: 20px;
}
&.primary
{
background-color: $accent;
}
&:hover
{
opacity: 0.85;
}
}
}
.stream-options
{
flex-direction: row;
align-items: center;
gap: 12px;
.option
{
flex-direction: row;
align-items: center;
gap: 6px;
> i
{
font-size: 20px;
opacity: 0.6;
}
}
.dropdown
{
min-width: 150px;
height: 34px;
padding: 0 10px;
border-radius: 8px;
font-size: 14px;
align-items: center;
background-color: rgba( 255, 255, 255, 0.07 );
border: 1px solid rgba( 255, 255, 255, 0.12 );
cursor: pointer;
&:hover
{
border-color: $accent;
}
}
.audio-track
{
min-width: 220px;
}
.playing-as
{
margin-left: auto;
font-size: 12px;
opacity: 0.5;
}
}
.locked
{
align-items: center;
gap: 8px;
font-size: 15px;
opacity: 0.6;
}
.queue
{
flex-direction: column;
gap: 8px;
min-height: 0;
flex-shrink: 1;
.queue-header
{
flex-direction: row;
align-items: center;
gap: 10px;
font-size: 14px;
font-weight: 600;
.tab
{
flex-direction: row;
gap: 6px;
padding: 4px 10px;
border-radius: 6px;
cursor: pointer;
opacity: 0.55;
&.active
{
opacity: 1;
background-color: rgba( 255, 255, 255, 0.08 );
}
&:hover
{
opacity: 1;
}
}
.count
{
opacity: 0.5;
font-weight: 400;
}
.spacer
{
flex-grow: 1;
}
}
.queue-list
{
flex-direction: column;
max-height: 260px;
overflow-y: scroll;
gap: 4px;
}
.empty
{
font-size: 14px;
opacity: 0.4;
padding: 8px 0;
}
.queue-item
{
flex-direction: row;
align-items: center;
gap: 12px;
padding: 8px 10px;
border-radius: 8px;
background-color: rgba( 255, 255, 255, 0.04 );
flex-shrink: 0;
.num
{
width: 22px;
font-size: 14px;
opacity: 0.5;
}
.info
{
flex-grow: 1;
flex-direction: column;
overflow: hidden;
.name
{
font-size: 15px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.by
{
font-size: 12px;
opacity: 0.5;
}
}
.dur
{
font-size: 13px;
opacity: 0.6;
}
}
}
.small-btn
{
padding: 4px 10px;
border-radius: 6px;
font-size: 13px;
cursor: pointer;
align-items: center;
background-color: rgba( 255, 255, 255, 0.08 );
i
{
font-size: 16px;
}
&:hover
{
background-color: rgba( 220, 60, 60, 0.7 );
}
// play / queue again, not remove
&.go:hover
{
background-color: rgba( 63, 169, 255, 0.6 );
}
}
// controller: the highlighted control (see PadNavigation) - the same ring and glow on everything. The ring is a
// shadow, not a border, so nothing changes size (a border made the whole window shift at every move). Round
// buttons keep their own corners; the rest get rounded ones
.pad-focus
{
box-shadow: 0 0 0 2px $accent, 0 0 14px rgba( 63, 169, 255, 0.7 );
background-color: rgba( 63, 169, 255, 0.3 );
}
.dropdown.pad-focus, .seek.pad-focus, .volume.pad-focus, .tab.pad-focus, .small-btn.pad-focus
{
border-radius: 8px;
}
// the play button is already filled with the accent
.btn.big.pad-focus
{
background-color: $accent;
}
.pad-note
{
align-items: center;
gap: 8px;
font-size: 15px;
opacity: 0.6;
i
{
font-size: 20px;
}
}
.footer
{
flex-direction: row;
align-items: center;
gap: 12px;
padding-top: 8px;
border-top: 1px solid rgba( 255, 255, 255, 0.08 );
.volume
{
width: 220px;
}
// 3D / 2D audio toggle: an icon and a label, so it reads as a mode rather than a mystery button
.audio-mode
{
width: auto;
padding: 0 12px;
gap: 6px;
border-radius: 18px;
font-size: 13px;
font-weight: 600;
&.flat
{
background-color: rgba( 63, 169, 255, 0.35 );
}
}
.hint
{
margin-left: auto;
flex-direction: row;
align-items: center;
gap: 6px;
font-size: 13px;
opacity: 0.65;
white-space: nowrap;
.inputglyph
{
height: 2em;
}
}
}
}