Files
v10/examples/react-demo/src/skins/frosted-eject/frosted.css
T

359 lines
8.9 KiB
CSS

.vjs-frosted-skin * {
box-sizing: border-box;
}
.vjs-frosted-skin {
position: relative;
isolation: isolate;
container: root / inline-size;
overflow: clip;
border-radius: var(--vjs-border-radius, 2rem);
background: oklab(0 0 0);
font-family: var(--vjs-font-family, InterVariable, Inter, ui-sans-serif, system-ui, sans-serif);
font-size: 0.8125rem;
line-height: 1.5;
}
.vjs-frosted-skin::before,
.vjs-frosted-skin::after {
content: '';
position: absolute;
pointer-events: none;
border-radius: inherit;
z-index: 10;
}
.vjs-frosted-skin::before {
inset: 1px;
box-shadow: inset 0 0 0 1px oklab(1 0 0 / 0.15);
}
.vjs-frosted-skin::after {
inset: 0;
box-shadow: inset 0 0 0 1px oklab(0 0 0 / 0.1);
}
/* Fullscreen */
.vjs-frosted-skin:fullscreen {
border-radius: 0;
}
.vjs-frosted-skin > ::slotted([slot='media']) {
display: block;
width: 100%;
height: 100%;
}
/* Media Container UI Overlay Styling */
.vjs-frosted-skin > .overlay {
position: absolute;
inset: 0;
display: flex;
flex-flow: column nowrap;
align-items: start;
pointer-events: none;
border-radius: inherit;
background-image: linear-gradient(to top, oklab(0 0 0 / 0.5), oklab(0 0 0 / 0.3), rgba(0, 0, 0, 0));
backdrop-filter: saturate(1.5) brightness(0.9);
transition: opacity 0.15s ease-out;
transition-delay: 500ms;
opacity: 0;
}
.vjs-frosted-skin:hover > .overlay,
.vjs-frosted-skin:has([data-paused]) > .overlay,
.vjs-frosted-skin:has([aria-expanded='true']) > .overlay {
opacity: 1;
transition-duration: 100ms;
transition-delay: 0ms;
}
/* Common Surface Styles - e.g. tooltips, popovers, controls */
.vjs-frosted-skin .surface {
background-color: oklab(1 0 0 / 0.1);
backdrop-filter: blur(64px) brightness(0.9) saturate(1.5);
box-shadow:
inset 0 0 0 1px oklab(1 0 0 / 0.15),
0 0 0 1px oklab(0 0 0 / 0.15),
oklab(0 0 0 / 0.15) 0px 1px 3px 0px,
oklab(0 0 0 / 0.15) 0px 1px 2px -1px;
}
@media (prefers-reduced-transparency: reduce) {
.vjs-frosted-skin .surface {
background-color: oklab(0 0 0 / 0.7);
box-shadow:
inset 0 0 0 1px oklab(0 0 0),
0 0 0 1px oklab(1 0 0 / 0.2);
}
}
@media (prefers-contrast: more) {
.vjs-frosted-skin .surface {
background-color: oklab(0 0 0 / 0.9);
box-shadow:
inset 0 0 0 1px oklab(0 0 0),
0 0 0 1px oklab(1 0 0 / 0.2);
}
}
/* Media Control Bar UI/Styles */
.vjs-frosted-skin .control-bar {
position: absolute;
bottom: 0.75rem;
inset-inline: 0.75rem;
padding: 0.25rem;
display: flex;
align-items: center;
gap: 0.125rem;
border-radius: calc(infinity * 1px);
will-change: scale, transform, filter, opacity;
scale: 0.9;
opacity: 0;
filter: blur(8px);
transition-property: scale, transform, filter, opacity;
transition-delay: 500ms;
transition-duration: 300ms;
transition-timing-function: ease-out;
transform-origin: bottom;
color: oklab(1 0 0);
}
.vjs-frosted-skin:hover > .control-bar,
.vjs-frosted-skin:has([data-paused]) > .control-bar,
.vjs-frosted-skin:has([aria-expanded='true']) > .control-bar {
opacity: 1;
scale: 1;
filter: blur(0px);
transition-delay: 0ms;
transition-duration: 100ms;
}
/* Time Display Styling */
.vjs-frosted-skin .time-controls {
display: flex;
align-items: center;
flex: 1;
gap: 0.75rem;
padding-inline: 0.375rem;
}
.vjs-frosted-skin .time-display {
text-shadow: 0 1px 0 oklab(0 0 0 / 0.25);
font-variant-numeric: tabular-nums;
}
/* Generic Media Button Styling */
.vjs-frosted-skin .button {
display: grid;
flex-shrink: 0;
padding: 0.5rem;
cursor: pointer;
background: transparent;
border: none;
border-radius: calc(infinity * 1px);
color: oklab(1 0 0 / 0.9);
user-select: none;
outline: 2px solid transparent;
outline-offset: -2px;
transition-property: background-color, color, outline-offset;
transition-duration: 150ms;
transition-timing-function: ease-out;
}
.vjs-frosted-skin .button:hover,
.vjs-frosted-skin .button:focus-visible,
.vjs-frosted-skin .button[aria-expanded='true'] {
background-color: oklab(1 0 0 / 0.1);
color: oklab(1 0 0);
text-decoration: none;
}
.vjs-frosted-skin .button:focus-visible {
outline-color: oklch(62.3% 0.214 259.815);
outline-offset: 2px;
}
.vjs-frosted-skin .button[disabled] {
cursor: not-allowed;
opacity: 0.5;
filter: grayscale(1);
}
.vjs-frosted-skin .button .icon {
grid-area: 1 / 1;
width: 18px;
height: 18px;
filter: drop-shadow(0 1px 0 oklab(0 0 0 / 0.25));
}
/* Media Play Button UI/Styles */
.vjs-frosted-skin .play-button .icon {
opacity: 0;
transition: opacity 150ms linear;
}
.vjs-frosted-skin .play-button:not([data-paused]) .pause-icon,
.vjs-frosted-skin .play-button[data-paused] .play-icon {
opacity: 1;
}
/* Media Fullscreen Button UI/Styles */
.vjs-frosted-skin .fullscreen-button .icon {
display: none;
}
.vjs-frosted-skin .fullscreen-button:not([data-fullscreen]) .fullscreen-enter-icon,
.vjs-frosted-skin .fullscreen-button[data-fullscreen] .fullscreen-exit-icon {
display: inline;
}
/* One way to define the "default visible" icon (CJP) */
.vjs-frosted-skin .mute-button .icon {
display: none;
}
.vjs-frosted-skin .mute-button:not([data-volume-level]) .volume-low-icon,
.vjs-frosted-skin .mute-button[data-volume-level='high'] .volume-high-icon,
.vjs-frosted-skin .mute-button[data-volume-level='medium'] .volume-high-icon,
.vjs-frosted-skin .mute-button[data-volume-level='low'] .volume-low-icon,
.vjs-frosted-skin .mute-button[data-volume-level='off'] .volume-off-icon {
display: inline;
}
/* TimeSlider Component Styles */
.vjs-frosted-skin .slider {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
position: relative;
border-radius: calc(infinity * 1px);
outline: none;
}
/* Horizontal orientation styles */
.vjs-frosted-skin .slider[data-orientation='horizontal'] {
min-width: 5rem;
width: 100%;
height: 1.25rem;
}
/* Vertical orientation styles */
.vjs-frosted-skin .slider[data-orientation='vertical'] {
height: 5rem;
width: 1.25rem;
}
.vjs-frosted-skin .slider-track {
position: relative;
isolation: isolate;
background-color: oklab(1 0 0 / 0.2);
border-radius: inherit;
overflow: hidden;
user-select: none;
outline: 2px solid transparent;
outline-offset: -2px;
transition: outline-offset 150ms ease-out;
box-shadow: 0 0 0 1px oklab(0 0 0 / 0.05);
}
/* Horizontal track styles */
.vjs-frosted-skin .slider-track[data-orientation='horizontal'] {
width: 100%;
height: 0.25rem;
}
/* Vertical track styles */
.vjs-frosted-skin .slider-track[data-orientation='vertical'] {
width: 0.25rem;
height: 100%;
}
.vjs-frosted-skin .slider:focus-visible .slider-track {
outline-color: oklch(62.3% 0.214 259.815);
outline-offset: 6px;
}
.vjs-frosted-skin .slider-thumb {
width: 0.625rem;
height: 0.625rem;
background-color: oklab(1 0 0);
border-radius: calc(infinity * 1px);
user-select: none;
z-index: 10;
box-shadow:
0 0 0 1px oklab(0 0 0 / 0.1),
0 1px 3px 0 oklab(0 0 0 / 0.15),
0 1px 2px -1px oklab(0 0 0 / 0.15);
opacity: 0;
transition-property: opacity, height, width;
transition-duration: 150ms;
transition-timing-function: ease-out;
}
.vjs-frosted-skin .slider-thumb:active {
width: 0.75rem;
height: 0.75rem;
}
.vjs-frosted-skin .slider:hover .slider-thumb,
.vjs-frosted-skin .slider:focus-within .slider-thumb {
opacity: 1;
}
.vjs-frosted-skin .slider-track[data-orientation='horizontal'] .slider-thumb {
cursor: ew-resize;
}
.vjs-frosted-skin .slider-track[data-orientation='vertical'] .slider-thumb {
cursor: ns-resize;
}
.vjs-frosted-skin .slider-pointer {
background-color: oklab(1 0 0 / 0.2);
border-radius: inherit;
}
.vjs-frosted-skin .slider-progress {
background-color: oklab(1 0 0);
border-radius: inherit;
}
.vjs-frosted-skin .media-preview-time-display {
font-variant-numeric: tabular-nums;
}
.vjs-frosted-skin .popup-animation {
transition-property: transform, scale, opacity, filter;
transition-duration: 200ms;
transform: scale(1);
transform-origin: bottom;
opacity: 1;
filter: blur(0px);
}
.vjs-frosted-skin .popup-animation[data-starting-style],
.vjs-frosted-skin .popup-animation[data-ending-style] {
transform: scale(0);
opacity: 0;
filter: blur(8px);
}
.vjs-frosted-skin .popup-animation[data-instant] {
transition-duration: 0ms;
}
.vjs-frosted-skin .popover-popup {
margin: 0;
border: none;
box-shadow: none;
background: transparent;
padding: 0.75rem 0.25rem;
border-radius: calc(infinity * 1px);
}
/* Tooltip Component Styles */
.vjs-frosted-skin .tooltip-popup {
color: oklab(1 0 0);
padding: 0.25rem 0.625rem;
border-radius: calc(infinity * 1px);
font-size: 0.75rem;
}
.vjs-frosted-skin .tooltip {
display: none;
white-space: nowrap;
}
.vjs-frosted-skin .tooltip-popup[data-paused] .play-tooltip,
.vjs-frosted-skin .tooltip-popup:not([data-paused]) .pause-tooltip {
display: block;
}
.vjs-frosted-skin .tooltip-popup[data-fullscreen] .fullscreen-exit-tooltip,
.vjs-frosted-skin .tooltip-popup:not([data-fullscreen]) .fullscreen-enter-tooltip {
display: block;
}