/*
 * Copyright (C) 2009 Apple Inc.  All rights reserved.
 * Copyright (C) 2015 Google Inc.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/* Chromium default media controls */

/* WARNING: This css file can only style <audio> and <video> elements */

audio:not([controls]) {
    display: none !important;
}

audio {
    width: 300px;
    height: 32px;
}

audio::-webkit-media-controls,
video::-webkit-media-controls {
    width: inherit;
    height: inherit;
    position: relative;
    direction: ltr;
    display: flex;
    flex-direction: column;
    font-family: Segoe, "Helvetica Neue", Roboto, Arial, Helvetica, sans-serif;
    justify-content: flex-end;
    align-items: center;
}

audio::-webkit-media-controls-enclosure, video::-webkit-media-controls-enclosure {
    width: 100%;
    height: 32px;
    flex-shrink: 0;
    bottom: 0;
    text-indent: 0;
    padding: 0;
    margin: 0;
    box-sizing: border-box;
}

audio::-webkit-media-controls-panel, video::-webkit-media-controls-panel {
    display: flex;
    flex-direction: row;
    align-items: center;
    /* We use flex-start here to ensure that the play button is visible even
     * if we are too small to show all controls.
     */
    justify-content: flex-start;
    -webkit-user-select: none;
    position: relative;
    width: 100%;
    z-index: 0;
    overflow: hidden;
    text-align: right;
    bottom: auto;
    height: 32px;
    min-width: 48px;
    line-height: 32px;
    background-color: #fafafa;
    /* The duration is also specified in MediaControlElements.cpp and LayoutTests/media/media-controls.js */
    transition: opacity 0.3s;

    font-size: 12px;
    font-weight: normal;  /* Make sure that we don't inherit non-defaults. */
    font-style: normal;
}

audio:-webkit-full-page-media, video:-webkit-full-page-media {
    max-height: 100%;
    max-width: 100%;
}

audio:-webkit-full-page-media::-webkit-media-controls-panel,
video:-webkit-full-page-media::-webkit-media-controls-panel {
    bottom: 0px;
}

audio::-webkit-media-controls-mute-button, video::-webkit-media-controls-mute-button {
    -webkit-appearance: media-mute-button;
    display: flex;
    flex: none;
    box-sizing: border-box;
    width: 32px;
    height: 32px;
    padding: 0px;
    border-width: 0px;
    background-color: initial;
    color: inherit;
}

audio::-webkit-media-controls-overlay-enclosure {
    display: none;
}

video::-webkit-media-controls-overlay-enclosure {
    display: flex;
    position: relative;
    flex-direction: column;
    justify-content: flex-end;
    align-items: center;
    flex: 1 1;
    min-height: 0;
    width: 100%;
    /* Prevent disambiguation zooms with the panel. If this changes, it must
     * also be changed in core/html/shadow/MediaControls.cpp. */
    margin-bottom: 10px;
    text-indent: 0;
    box-sizing: border-box;
    overflow: hidden;
}

video::-webkit-media-controls-overlay-play-button {
    -webkit-appearance: media-overlay-play-button;
    display: flex;
    position: absolute;
    top: 0;
    left: 0;
    margin: 0;
    border-width: 0px;
    background-color: transparent;
    width: 100%;
    height: 100%;
    padding: 0;
}

/* TODO(xjz): Move media remoting elements to a separate css file. */
video::-internal-media-remoting-interstitial {
    width: inherit;
    height: inherit;
    position: relative;
    direction: ltr;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    align-items: center;
    font-size: 16px;
    background-color: black;
    opacity: 0;
    transition: opacity .3s ease-in-out;
}

video::-internal-media-remoting-background-image {
    display: flex;
    position: absolute;
    margin: 0;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
    border: none;
    border-width: 0px;
    background-color: transparent;
    padding: 0;
    filter: grayscale(100%) blur(5px) opacity(40%);
}

video::-internal-media-remoting-cast-icon {
    -webkit-appearance: -internal-media-remoting-cast-icon;
    display: flex;
    position: absolute;
    margin: 0px;
    border-width: 0px;
    background-color: transparent;
    height: 18px;
    width: 22px;
    padding: 0px;
    left: calc(50% - 11px);
    top: calc(50% - 40px);
}

video::-internal-media-remoting-cast-text-message {
    display: inline;
    position: absolute;
    top: calc(50% - 10px);
    border: none;
    color: rgba(255,255,255,.54);
    width: 100%;
    text-wrap: none;
    text-align: center;
    background-color: transparent;
    font-size: 81.25%;
    font-family: Roboto-Regular, Sans-serif, Segoe, Serif, Helvetica;
    padding: 0px;
    margin: 0px;
}

video::-internal-media-remoting-disable-button {
    display: flex;
    position: absolute;
    top: calc(50% + 60px);
    left: calc(50% - 74px);
    height: 28px;
    border: 1pt solid rgba(255,255,255,.54);
    border-radius: 2pt;
    background-color: transparent;
    color: rgba(255,255,255,.54);
    margin: 0px;
    padding: 5.5px 16px 0px 16px;
    text-wrap: none;
    font-size: 75%;
    font-weight: 500;
    font-family: Roboto-Medium, Sans-serif, Segoe, Serif, Helvetica;
    box-sizing: border-box;
    transition: border,color .5s ease-out;
    z-index: 1;  /* Set this z-index to make the hover effect work. */
}

video::-internal-media-remoting-disable-button:hover {
    border: 1pt solid rgba(255,255,255,.70);
    color: rgba(255,255,255,.70);
    cursor: pointer;
}

video::-internal-media-controls-overlay-cast-button {
    -webkit-appearance: -internal-media-overlay-cast-off-button;
    display: flex;
    position: absolute;
    top: 8px;
    left: 8px;
    margin-left: 0px;
    margin-top: 0px;
    border-width: 0px;
    background-color: transparent;
    width: 32px;
    height: 32px;
    padding: 0;
    transition: opacity 0.3s;
}

audio::-webkit-media-controls-play-button, video::-webkit-media-controls-play-button {
    -webkit-appearance: media-play-button;
    display: flex;
    flex: none;
    box-sizing: border-box;
    width: 32px;
    height: 32px;
    padding: 0px;
    border-width: 0px;
    background-color: initial;
    color: inherit;
}

audio::-webkit-media-controls-timeline-container, video::-webkit-media-controls-timeline-container {
    -webkit-appearance: media-controls-background;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-end;
    flex: 1 1;
    -webkit-user-select: none;
    height: 48px;
    padding: 0;
    min-width: 0;
}

audio::-webkit-media-controls-current-time-display, video::-webkit-media-controls-current-time-display {
    -webkit-appearance: media-current-time-display;
    -webkit-user-select: none;
    flex: none;
    display: flex;
    border: none;
    cursor: default;

    height: 32px;

    /* text runs right to the edge of the container */
    padding: 0;

    color: #5a5a5a;

    letter-spacing: normal;
    word-spacing: normal;
    text-transform: none;
    text-indent: 0;
    text-shadow: none;
    text-decoration: none;
}

audio::-webkit-media-controls-time-remaining-display, video::-webkit-media-controls-time-remaining-display {
    -webkit-appearance: media-current-time-display;
    -webkit-user-select: none;
    flex: none;
    display: flex;
    border: none;
    cursor: default;

    height: 32px;

    /* text runs right to the edge of the container, plus a little on
     * the left to pad the leading "/" */
    padding: 0 0 0 4px;

    color: #5a5a5a;

    letter-spacing: normal;
    word-spacing: normal;
    text-transform: none;
    text-indent: 0;
    text-shadow: none;
    text-decoration: none;
}

audio::-webkit-media-controls-timeline, video::-webkit-media-controls-timeline {
    -webkit-appearance: media-slider;
    display: flex;
    flex: 1 1 auto;
    height: 2px;

    /* Leave 6px on either side for the thumb.  Use margin so that
     * the slider doesn't extend into it.  We also add 12px border.
     */
    padding: 0;
    margin: 0 18px 0 18px;
    background-color: transparent;
    min-width: 25px;
    border: initial;
    color: inherit;
}

audio::-webkit-media-controls-volume-slider, video::-webkit-media-controls-volume-slider {
    -webkit-appearance: media-volume-slider;
    display: flex;
    /* The 1.9 value was empirically chosen to match old-flexbox behaviour
     * and be aesthetically pleasing.
     */
    flex: 1 1.9 auto;
    height: 2px;
    max-width: 70px;
    /* Leave room for the thumb, which has 6px radius.  Use margin rather
     * than padding so that the slider doesn't extend into it.  We also
     * leave an addition 12px margin.
     */
    padding: 0;
    margin: 0 18px 0 18px;
    background-color: transparent;
    min-width: 25px;
    border: initial;
    color: inherit;
}

/* FIXME these shouldn't use special pseudoShadowIds, but nicer rules.
   https://code.google.com/p/chromium/issues/detail?id=112508
   https://bugs.webkit.org/show_bug.cgi?id=62218
*/
input[type="range" i]::-webkit-media-slider-container {
    display: flex;
    align-items: center;
    flex-direction: row; /* This property is updated by C++ code. */
    box-sizing: border-box;
    /** this positions the slider thumb for both time and volume. */
    height: 2px;
    width: 100%;
    background-color: transparent; /* Background drawing is managed by C++ code to draw ranges. */
}

/* The negative right margin causes the track to overflow its container. */
input[type="range" i]::-webkit-media-slider-container > div {
    margin-right: -18px;  /* box is 36px wide, get to the middle */
    margin-left:  -18px;
}

input[type="range" i]::-webkit-media-slider-thumb {
    box-sizing: border-box;
    width: 48px;
    height: 48px;
    padding: 0px;
}

audio::-webkit-media-controls-fullscreen-button, video::-webkit-media-controls-fullscreen-button {
    -webkit-appearance: media-enter-fullscreen-button;
    display: flex;
    flex: none;
    overflow: hidden;
    box-sizing: border-box;
    width: 32px;
    height: 32px;
    padding: 0px;
    border-width: 0px;
    background-color: initial;
    color: inherit;
}

audio::-internal-media-controls-cast-button, video::-internal-media-controls-cast-button {
    -webkit-appearance: -internal-media-cast-off-button;
    display: flex;
    flex: none;
    box-sizing: border-box;
    width: 32px;
    height: 32px;
    padding: 0px;
    border-width: 0px;
    margin-left: 0px;
    margin-right: 0px;
    background-color: initial;
    color: inherit;
}

audio::-webkit-media-controls-toggle-closed-captions-button {
    display: none;
}

video::-webkit-media-controls-toggle-closed-captions-button {
    -webkit-appearance: media-toggle-closed-captions-button;
    display: flex;
    flex: none;
    box-sizing: border-box;
    width: 32px;
    height: 32px;
    padding: 0px;
    border-width: 0px;
    margin-left: 0px;
    margin-right: 0px;
    background-color: initial;
    color: inherit;
}

video::-internal-media-controls-text-track-list, video::-internal-media-controls-overflow-menu-list, audio::-internal-media-controls-overflow-menu-list {
    position: absolute;
    bottom: 4px;
    right: 4px;
    background-color: #fafafa;
    max-width: 50%;
    max-height: 250px;
    min-width: 150px;
    overflow-x: hidden;
    overflow-y: auto;
    white-space: nowrap;
    font-size: 14px;
    border-radius: 1px;
    box-shadow: 0 8px 20px 1px rgba(0, 0, 0, 0.14),
                0 3px 28px 2px rgba(0, 0, 0, 0.12),
                0 5px 10px -3px rgba(0, 0, 0, 0.4);
}

video::-internal-media-controls-text-track-list-item {
    display: block;
    color: #424242;
    text-align: start;
    line-height: 40px;
    padding-right: 16px;
    text-overflow: ellipsis;
}

video::-internal-media-controls-text-track-list-item:hover, video::-internal-media-controls-overflow-menu-list-item:hover, audio::-internal-media-controls-overflow-menu-list-item:hover {
    background-color: #e0e0e0;
}

video::-internal-media-controls-text-track-list-item-input {
    -webkit-appearance: -internal-media-track-selection-checkmark;
    visibility: hidden;
    left: 0;
    vertical-align: middle;
    margin: 0 5px 0 0;
    width: 16px;
    height: 16px;
    margin-left: 12px;
}

video::-internal-media-controls-text-track-list-item-input:checked {
    visibility: visible;
}

video::-internal-media-controls-text-track-list-kind-captions {
    -webkit-appearance: -internal-media-closed-captions-icon;
    height: 20px;
    width: 20px;
    margin-left: 10px;
    vertical-align: middle;
}

video::-internal-media-controls-text-track-list-kind-subtitles {
    -webkit-appearance: -internal-media-subtitles-icon;
    height: 20px;
    width: 20px;
    margin-left: 10px;
    vertical-align: middle;
}

video::-internal-media-controls-overflow-button, audio::-internal-media-controls-overflow-button {
    -webkit-appearance: -internal-media-overflow-button;
    display: flex;
    flex: none;
    box-sizing: border-box;
    width: 32px;
    height: 32px;
    padding: 0px;
    border-width: 0px;
    margin-left: 0px;
    margin-right: 0px;
    background-color: initial;
    color: inherit;
}

video::-internal-media-controls-download-button, audio::-internal-media-controls-download-button {
    -webkit-appearance: -internal-media-download-button;
    display: flex;
    flex: none;
    box-sizing: border-box;
    width: 32px;
    height: 32px;
    padding: 0px;
    border-width: 0px;
    margin-left: 0px;
    margin-right: 0px;
    background-color: initial;
    color: inherit;
}

video::-internal-media-controls-overflow-menu-list-item, audio::-internal-media-controls-overflow-menu-list-item {
    display: block;
    color: #424242;
    line-height: 40px;
    padding-left: 28px;
}

video::-webkit-media-text-track-container {
    position: relative;
    width: inherit;
    height: inherit;
    overflow: hidden;

    font: 22px sans-serif;
    text-align: center;
    color: rgba(255, 255, 255, 1);

    letter-spacing: normal;
    word-spacing: normal;
    text-transform: none;
    text-indent: 0;
    text-decoration: none;
    pointer-events: none;
    -webkit-user-select: none;
    word-break: break-word;
}

video::cue {
    display: inline;

    background-color: rgba(0, 0, 0, 0.8);
    padding: 2px 2px;
}

video::-webkit-media-text-track-region {
    position: absolute;
    line-height: 5.33vh;
    writing-mode: horizontal-tb;
    background: rgba(0, 0, 0, 0.8);
    color: rgba(255, 255, 255, 1);
    word-wrap: break-word;
    overflow-wrap: break-word;
    overflow: hidden;
}

video::-webkit-media-text-track-region-container {
    position: relative;

    display: flex;
    flex-flow: column;
    flex-direction: column;
}

video::-webkit-media-text-track-region-container.scrolling {
    transition: top 433ms linear;
}


video::-webkit-media-text-track-display {
    position: absolute;
    overflow: hidden;
    white-space: pre-wrap;
    -webkit-box-sizing: border-box;
    flex: 0 0 auto;
}

video::cue(:future) {
    color: gray;
}

video::cue(b) {
    font-weight: bold;
}

video::cue(u) {
    text-decoration: underline;
}

video::cue(i) {
    font-style: italic;
}