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

/* alternate media controls - Extend mediaControls.css */

audio {
    width: 200px;
    height: 25px;
}

audio::-webkit-media-controls-panel, video::-webkit-media-controls-panel {
    /* In mediaControls.css */
    -webkit-appearance: media-controls-background;
    overflow: visible;
    height: 25px;
}

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

audio::-webkit-media-controls-mute-button, video::-webkit-media-controls-mute-button {
    -webkit-box-ordinal-group: 2; /* Before the fullscreen button */

    width: 14px;
    height: 12px;
    margin-left: 2px;
    margin-right: 9px;
    border: none !important;
}

audio::-webkit-media-controls-play-button, video::-webkit-media-controls-play-button {
    width: 16px;
    height: 16px;
    margin-left: 6px;
    margin-right: 1px;
    border: none !important;
}

audio::-webkit-media-controls-timeline-container, video::-webkit-media-controls-timeline-container {
    -webkit-appearance: none;
    -webkit-box-orient: horizontal;
    -webkit-box-align: center;
    -webkit-box-pack: center;
    -webkit-box-flex: 1;
    text-align: right;
    height: auto;
}

audio::-webkit-media-controls-current-time-display, video::-webkit-media-controls-current-time-display {
    -webkit-user-select: none;
    display: -webkit-box;
    -webkit-box-flex: 0;
    -webkit-box-pack: center;
    -webkit-box-align: center;
    cursor: default;
    font: -webkit-small-control;
    font-size: 9px;
    overflow: hidden;
    width: 45px;
    color: white;
    text-shadow: black 0px 1px 1px;

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

audio::-webkit-media-controls-time-remaining-display, video::-webkit-media-controls-time-remaining-display {
    -webkit-user-select: none;
    display: -webkit-box;
    -webkit-box-flex: 0;
    -webkit-box-pack: center;
    -webkit-box-align: center;
    cursor: default;
    font: -webkit-small-control;
    font-size: 9px;
    overflow: hidden;
    width: 45px;
    color: white;
    text-shadow: black 0px 1px 1px;

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

audio::-webkit-media-controls-timeline, video::-webkit-media-controls-timeline {
    display: -webkit-box;
    -webkit-box-flex: 1;
    height: 13px;
    padding: 0px;
    margin: 0px;
    margin-top: 2px;
}

audio::-webkit-media-controls-seek-back-button, video::-webkit-media-controls-seek-back-button {
    display: none;
    width: 0px;
    border: none !important;
}

audio::-webkit-media-controls-seek-forward-button, video::-webkit-media-controls-seek-forward-button {
    display: none;
    width: 0px;
    border: none !important;
}

audio::-webkit-media-controls-fullscreen-button, video::-webkit-media-controls-fullscreen-button {
    width: 16px;
    height: 16px;
    margin-left: 7px;
    margin-right: 7px;
    -webkit-box-ordinal-group: 4; /* At the very end */
    border: none !important;
}

audio::-webkit-media-controls-rewind-button, video::-webkit-media-controls-rewind-button {
    display: -webkit-box;
    -webkit-appearance: media-rewind-button;
    width: 18px;
    height: 18px;
    margin-bottom: 1px;
    margin-left: 6px;
    margin-right: 2px;
    border: none !important;
}

audio::-webkit-media-controls-return-to-realtime-button, video::-webkit-media-controls-return-to-realtime-button {
    display: none;
    -webkit-appearance: media-return-to-realtime-button;
    width: 16px;
    height: 11px;
    margin-left: 6px;
    margin-right: 2px;
    border: none !important;
}

audio::-webkit-media-controls-status-display, video::-webkit-media-controls-status-display {
    -webkit-user-select: none;
    cursor: default;
    display: -webkit-box;
    -webkit-box-flex: 1;
    font: -webkit-small-control;
    color: white;
    font-size: 10px;
    line-height: 13px;
    overflow: hidden;
    text-shadow: black 0px 1px 1px;
    margin-left: 10px;
    margin-right: 10px;

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

audio::-webkit-media-controls-toggle-closed-captions-button, video::-webkit-media-controls-toggle-closed-captions-button {
    -webkit-appearance: media-toggle-closed-captions-button;
    display: -webkit-box;
    width: 16px;
    height: 16px;
    margin-left: 7px;
    margin-right: 7px;
    -webkit-box-ordinal-group: 3; /* between mute and fullscreen */
    border: none !important;
}

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

    top: 0;
    left: 0;

    width: 22px;
    height: 114px;
}

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

    top: 7px;
    left: 6px;

    width: 10px;
    height: 80px;
}

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

    bottom: 5px;
    left: 4px;

    width: 14px;
    height: 12px;
    border: none !important;
} 
