media-container * { box-sizing: border-box; } media-container { position: relative; isolation: isolate; container: root / inline-size; overflow: clip; border-radius: var(--minimal-border-radius, 2rem); background: oklab(0 0 0); font-family: ui-sans-serif, system-ui, sans-serif; font-size: 0.8125rem; line-height: 1.5; -webkit-font-smoothing: auto; -moz-osx-font-smoothing: auto; } media-container::after { content: ''; position: absolute; pointer-events: none; border-radius: inherit; z-index: 10; inset: 0; box-shadow: inset 0 0 0 1px oklab(0 0 0 / 0.15); } @media (prefers-color-scheme: dark) { media-container::after { box-shadow: inset 0 0 0 1px oklab(1 0 0 / 0.15); } } /* Fullscreen */ media-container:fullscreen { border-radius: 0; } media-container > ::slotted([slot='media']), media-container > video, media-container > audio { display: block; width: 100%; height: 100%; } /* Media Container UI Overlay Styling */ media-container > .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.7), oklab(0 0 0 / 0.5) 7.5rem, rgba(0, 0, 0, 0)); transition-property: opacity; transition-duration: 75ms; transition-delay: 0ms; transition-timing-function: ease-out; } media-container[data-controls='hidden'] > .overlay { opacity: 0; transition-duration: 500ms; transition-delay: 500ms; } /* Media Control Bar UI/Styles */ .control-bar { position: absolute; bottom: 0; inset-inline: 0; padding: 2rem 0.375rem 0.375rem 0.375rem; display: flex; align-items: center; gap: 0.5rem; will-change: transform, filter, opacity; transition-property: transform, filter, opacity; transition-delay: 0ms; transition-duration: 75ms; transition-timing-function: ease-out; color: oklab(1 0 0); } media-container[data-controls='hidden'] > .control-bar { opacity: 0; transform: translateY(100%); filter: blur(8px); transition-delay: 500ms; transition-duration: 500ms; pointer-events: none; } @container root (width > 640px) { .control-bar { padding: 2.5rem 0.75rem 0.75rem 0.75rem; gap: 0.875rem; } } /* Time Display Styling */ .time-display-group { display: flex; align-items: center; gap: 0.25rem; } .duration-display { display: contents; color: oklab(1 0 0 / 0.5); } media-current-time-display, media-duration-display { text-shadow: 0 1px 0 oklab(0 0 0 / 0.2); font-variant-numeric: tabular-nums; } .button-group { display: flex; align-items: center; gap: 0.375rem; } /* Generic Media Button Styling */ .button { display: grid; flex-shrink: 0; padding: 0.625rem; cursor: pointer; background: transparent; border: none; border-radius: 0.375rem; color: oklab(1 0 0); 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; } .button:hover, .button:focus-visible, .button[aria-expanded='true'] { color: oklab(1 0 0 / 0.8); text-decoration: none; } .button:focus-visible { outline-color: oklab(1 0 0); outline-offset: 2px; } .button[disabled] { cursor: not-allowed; opacity: 0.5; filter: grayscale(1); } .button .icon { grid-area: 1 / 1; width: 18px; height: 18px; filter: drop-shadow(0 1px 0 oklab(0 0 0 / 0.4)); } /* Media Play Button UI/Styles */ media-play-button .icon { opacity: 0; transition: opacity 150ms linear; } media-play-button:not([data-paused]) .pause-icon, media-play-button[data-paused] .play-icon { opacity: 1; } /* Media Fullscreen Button UI/Styles */ media-fullscreen-button .icon { display: none; } media-fullscreen-button:not([data-fullscreen]) .fullscreen-enter-icon, media-fullscreen-button[data-fullscreen] .fullscreen-exit-icon { display: inline; } /* One way to define the "default visible" icon (CJP) */ media-mute-button .icon { display: none; } media-mute-button:not([data-volume-level]) .volume-low-icon, media-mute-button[data-volume-level='high'] .volume-high-icon, media-mute-button[data-volume-level='medium'] .volume-high-icon, media-mute-button[data-volume-level='low'] .volume-low-icon, media-mute-button[data-volume-level='off'] .volume-off-icon { display: inline; } /* TimeSlider Component Styles */ .slider { flex: 1; display: flex; align-items: center; justify-content: center; position: relative; border-radius: calc(infinity * 1px); outline: none; } /* Horizontal orientation styles */ .slider[data-orientation='horizontal'] { min-width: 5rem; width: 100%; height: 1.25rem; } /* Vertical orientation styles */ .slider[data-orientation='vertical'] { height: 4.5rem; width: 1.25rem; } .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 */ .slider-track[data-orientation='horizontal'] { width: 100%; height: 0.1875rem; } /* Vertical track styles */ .slider-track[data-orientation='vertical'] { width: 0.1875rem; height: 100%; } .slider:focus-visible .slider-track { outline-color: oklab(1 0 0); outline-offset: 6px; } .slider-thumb { width: 0.75rem; height: 0.75rem; 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; scale: 0.7; transform-origin: center; transition-property: opacity, scale; transition-duration: 150ms; transition-timing-function: ease-out; } .slider:hover .slider-thumb, .slider:focus-within .slider-thumb { opacity: 1; scale: 1; } .slider-track[data-orientation='horizontal'] .slider-thumb { cursor: ew-resize; } .slider-track[data-orientation='vertical'] .slider-thumb { cursor: ns-resize; } .slider-pointer { display: none; } .slider-progress { background-color: oklab(1 0 0); border-radius: inherit; } media-preview-time-display { font-variant-numeric: tabular-nums; } .popup-animation { transition-property: transform, scale, opacity, filter; transition-duration: 200ms; transform: scale(1); transform-origin: bottom; opacity: 1; filter: blur(0px); } .popup-animation[data-starting-style], .popup-animation[data-ending-style] { transform: scale(0); opacity: 0; filter: blur(8px); } .popup-animation[data-instant] { transition-duration: 0ms; } media-popover { padding: 0.5rem; margin: 0; border: 0; background: transparent; } /* Tooltip Component Styles */ media-tooltip { margin: 0; border: none; box-shadow: none; background: transparent; color: oklab(1 0 0); padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-size: 0.75rem; background-color: oklab(1 0 0 / 0.1); backdrop-filter: blur(64px) brightness(0.9) saturate(1.5); box-shadow: 0 4px 6px -1px oklab(0 0 0 / 0.1), 0 2px 4px -2px oklab(0 0 0 / 0.1); } @media (prefers-reduced-transparency: reduce) { media-tooltip { background-color: oklab(0 0 0 / 0.7); } } @media (prefers-contrast: more) { media-tooltip { background-color: oklab(0 0 0 / 0.9); } } .tooltip { display: none; white-space: nowrap; } [data-paused] + media-tooltip .play-tooltip, :not([data-paused]) + media-tooltip .pause-tooltip { display: block; } [data-fullscreen] + media-tooltip .fullscreen-exit-tooltip, :not([data-fullscreen]) + media-tooltip .fullscreen-enter-tooltip { display: block; }