/*
 * QtWebKit specific overrides for HTML5 media elements.
 *
 * Copyright (C) 2009 Apple Inc.  All rights reserved.
 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
 *
 * 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. 
 */

 /* QtWebKit media controls. Extends mediaControls.css */

audio {
    height: 34px;
    width: 400px;
}

audio::-webkit-media-controls-panel {
    display: -webkit-box;
    -webkit-box-orient: horizontal;
    -webkit-box-align: end;
    -webkit-user-select: none;
    position: absolute;
    bottom: 0;
    width: 100%;
    z-index: 0;
    overflow: visible;
    height: 100%;
    text-align: right;
}

video::-webkit-media-controls-panel {
    display: -webkit-box;
    -webkit-box-orient: horizontal;
    -webkit-box-align: end;
    -webkit-user-select: none;
    position: absolute;
    bottom: 0;
    width: 100%;
    z-index: 0;
    overflow: hidden;
    height: 100%;
    text-align: right;
}

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

audio::-webkit-media-controls-mute-button {
    width: 12px;
    height: 12px;
    padding: 6px;
    margin: 5px 5px 5px 3px;
    border: none !important;
}

video::-webkit-media-controls-mute-button {
    width: 12px;
    height: 12px;
    padding: 6px;
    margin: 5px 5px 5px 3px;
    border: none !important;
}

audio::-webkit-media-controls-play-button {
    width: 9px;
    height: 12px;
    padding: 6px 12px 6px 11px;
    margin: 5px 3px 5px 5px;
    border: none !important;
}

video::-webkit-media-controls-play-button {
    width: 9px;
    height: 12px;
    padding: 6px 12px 6px 11px;
    margin: 5px 3px 5px 5px;
    border: none !important;
}

audio::-webkit-media-controls-timeline-container {
    height: 34px;
}

video::-webkit-media-controls-timeline-container {
    height: 34px;
}

audio::-webkit-media-controls-current-time-display {
    -webkit-appearance: media-current-time-display;
    -webkit-user-select: none;
    display: inline-block;
    height: 12px;
    padding: 6px;
    margin: 5px 3px;

    overflow: hidden;
    cursor: default;

    text-align: center;
    font-size: 10px;
    font-family: Verdana;
    font-weight: bold;
    color: white;
}

video::-webkit-media-controls-current-time-display {
    -webkit-appearance: media-current-time-display;
    -webkit-user-select: none;
    display: inline-block;
    height: 12px;
    padding: 6px;
    margin: 5px 3px;

    overflow: hidden;
    cursor: default;

    text-align: center;
    font-size: 10px;
    font-family: Verdana;
    font-weight: bold;
    color: white;
}

audio::-webkit-media-controls-time-remaining-display {
    display: none;
}

video::-webkit-media-controls-time-remaining-display {
    display: none;
}

audio::-webkit-media-controls-timeline {
    height: 12px;
    padding: 6px 8px;
    margin: 5px 3px;
}

video::-webkit-media-controls-timeline {
    height: 12px;
    padding: 6px 8px;
    margin: 5px 3px;
}

audio::-webkit-media-controls-volume-slider-container {
    -webkit-appearance: media-volume-slider-container;
    position: absolute;
    height: 103px;
    width: 24px;
}

video::-webkit-media-controls-volume-slider-container {
    -webkit-appearance: media-volume-slider-container;
    position: absolute;
    height: 103px;
    width: 24px;
}

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

    width: 12px;
    padding: 6px;
    height: 88px;
    margin: 0 0 3px 0;
}

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

    width: 12px;
    padding: 6px;
    height: 88px;
    margin: 0 0 3px 0;
}

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

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

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

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

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

video::-webkit-media-controls-fullscreen-button {
    top: 0px;
    right: 0px;
    width: 12px;
    height: 12px;
    padding: 6px;
    margin: 5px 5px 5px 3px;
    border: none !important;
}

audio::-webkit-media-controls-rewind-button {
    display: none;
}

video::-webkit-media-controls-rewind-button {
    display: none;
}

audio::-webkit-media-controls-return-to-realtime-button {
    display: none;
}

video::-webkit-media-controls-return-to-realtime-button {
    display: none;
}

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

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

::-webkit-media-controls-mute-button,
::-webkit-media-controls-play-button,
::-webkit-media-controls-timeline,
::-webkit-media-controls-volume-slider,
::-webkit-media-controls-fullscreen-button
{
    box-sizing: content-box !important;
}
