/*
 * Copyright (C) 2009 Apple Inc.  All rights reserved.
 * Copyright (C) 2009 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 */

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

audio::-webkit-media-controls-panel, video::-webkit-media-controls-panel {
    -webkit-user-select: none;
    position: absolute;
    overflow: visible;
    bottom: 0;
    width: 100%;
    height: 32px;
    z-index: 0;
    background-color: rgba(0, 0, 0, 0.6);
}

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;
    position: absolute;
    top: auto;
    bottom: 0;
    right: 0;
    left: auto;

    width: 34px;
    height: 32px;
}

audio::-webkit-media-controls-play-button, video::-webkit-media-controls-play-button {
    -webkit-appearance: media-play-button;

    position: absolute;
    top: auto;
    bottom: 7px;
    left: 7px;
    right: 6px;

    width: 18px;
    height: 19px;
}

audio::-webkit-media-controls-timeline-container, video::-webkit-media-controls-timeline-container {
    -webkit-appearance: media-timeline-container;
    -webkit-user-select: none;
    -webkit-box-orient: horizontal;
    -webkit-box-align: center;
    -webkit-box-pack: center;
    -webkit-box-direction: reverse;
    -webkit-box-flex: 1;

    position: absolute;
    top: auto;
    bottom: 0;
    left: 30px;
    right: 34px;

    width: auto;
    height: 32px;

    border-left: 1px solid rgba(255, 255, 255, 0.2);
    border-right: 1px solid rgba(255, 255, 255, 0.2);
}

audio::-webkit-media-controls-current-time-display, video::-webkit-media-controls-current-time-display {
    -webkit-appearance: media-current-time-display;
    -webkit-user-select: none;
    display: -webkit-box;
    -webkit-box-flex: 0;
    -webkit-box-pack: center;
    -webkit-box-align: center;

    overflow: hidden;
    cursor: default;

    position: absolute;
    top: 6px;
    right: 0;

    line-height: 21px;
    height: 20px;
    width: 58px;

    text-align: center;
    font-family: Arial;
    font-size: 16px;
    font-weight: bold;
    color: white;

    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-time-remaining-display;
    -webkit-user-select: none;
    display: none;
    -webkit-box-flex: 0;
    -webkit-box-pack: center;
    -webkit-box-align: center;

    overflow: hidden;
    cursor: default;

    line-height: 21px;
    height: 20px;
    width: 58px;

    text-align: center;
    font-family: Arial;
    font-size: 16px;
    font-weight: bold;
    color: white;

    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: -webkit-box;
    box-sizing: border-box;
    -webkit-box-flex: 1;

    position: absolute;
    top: 7px;
    left: 6px;
    right: 64px;

    padding: 0px;
    margin: 0px;
    height: 18px;

    border-color: rgba(255, 255, 255, 0.2);
    border-style: solid;
    border-width: 1px;
    border-radius: 2px;
    background-color: rgba(255, 255, 255, 0.08);
    color: rgb(50, 140, 223);
}

audio::-webkit-media-controls-seek-back-button, video::-webkit-media-controls-seek-back-button {
    -webkit-appearance: media-seek-back-button;
    display: none;
}

audio::-webkit-media-controls-seek-forward-button, video::-webkit-media-controls-seek-forward-button {
    -webkit-appearance: media-seek-forward-button;
    display: none;
}

audio::-webkit-media-controls-fullscreen-button, video::-webkit-media-controls-fullscreen-button {
    -webkit-appearance: media-fullscreen-button;
    display: none;
}

audio::-webkit-media-controls-volume-slider-container, video::-webkit-media-controls-volume-slider-container {
    -webkit-appearance: media-volume-slider-container;
    position: absolute;

    width: 34px;
    height: 100px;

    background-color: rgba(0, 0, 0, 0.6);
}

audio::-webkit-media-controls-volume-slider, video::-webkit-media-controls-volume-slider {
    -webkit-appearance: media-volume-slider;
    display: inline;
    position: absolute;

    top: 10px;
    left: 12px;

    width: 10px;
    height: 80px;
}
