github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/public/libs/video-js/video-js.less (about)

     1  /*!
     2  Video.js Default Styles (http://videojs.com)
     3  Version GENERATED_AT_BUILD
     4  Create your own skin at http://designer.videojs.com
     5  */
     6  
     7  // To customize the player skin, change the values of the variables or edit the
     8  // CSS below.
     9  // (This file uses LESS. Learn more at http://lesscss.org/)
    10  
    11  // The base font size controls the size of everything, not just text. All
    12  // diminensions use em-based sizes so that the scale along with the font size.
    13  // Try increasing it to 20px and see what happens.
    14  @base-font-size: 10px;
    15  @touch-device-font-size: 15px;
    16  
    17  // The main font color controls the color of the text and the icons (font icons)
    18  @main-font-color: #CCCCCC; // e.g. rgb(255, 255, 255) or #ffffff
    19  
    20  // The default color of control backgrounds is mostly black but with a little
    21  // bit of blue so it can still be seen on all black video frames, which are
    22  // common.
    23  @control-bg-color: #07141E; // e.g. rgb(255, 255, 255) or #ffffff
    24  @control-bg-alpha: 0.7; // 1.0 = 100% opacity, 0.0 = 0% opacity
    25  
    26  // The slider bar color is used for the progress bar and the volume bar
    27  @slider-bar-color: #66A8CC; // e.g. rgb(255, 255, 255) or #ffffff
    28  // The background of the progress bar and volume bar have a lined pattern that
    29  // is created from a base64 encoded image. You can generate your own pattern at
    30  // http://www.patternify.com/ then replace the value in the quotes with your own
    31  @slider-bar-pattern: ~'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAP0lEQVQIHWWMAQoAIAgDR/QJ/Ub//04+w7ZICBwcOg5FZi5iBB82AGzixEglJrd4TVK5XUJpskSTEvpdFzX9AB2pGziSQcvAAAAAAElFTkSuQmCC';
    32  // The color of the slider background
    33  @slider-background-color: #333333;
    34  @slider-background-alpha: 0.9; // 1.0 = 100% opacity, 0.0 = 0% opacity
    35  
    36  // The "Big Play Button" is the play button that shows before the video plays.
    37  // To center it set the align values to center and middle. The typical location
    38  // of the button is the center, but there is trend towards moving it to a corner
    39  // where it gets out of the way of valuable content in the poster image.
    40  @big-play-align: left; // left, center, or right
    41  @big-play-vertical-align: top; // top, middle, or bottom
    42  // The button colors match the control colors by default but you can customize
    43  // them by replace the variables (@control-bg-color) with your own color values.
    44  @big-play-bg-color: @control-bg-color;
    45  @big-play-bg-alpha: @control-bg-alpha;
    46  // The font size is what makes the big play button, big. All width/height values
    47  // use ems, which are a multiple of the font size.
    48  // If the @base-font-size is 10px, then 3em equals 30px.
    49  @big-play-font-size: 3em;
    50  // Now that font size is set, the following em values will be a multiple of the
    51  // new font size. If @big-play-font-size is 3em (30px), then setting the any of
    52  // the following values to 2em would equal 60px. 2 * font-size
    53  @big-play-margin: 0.5em;
    54  @big-play-width: 4em;
    55  @big-play-height: 2.6em;
    56  @big-play-border-radius: 0.8em;
    57  @big-play-border-width: 0.1em;
    58  @big-play-border-color: #3b4249;
    59  
    60  /* SKIN
    61  ================================================================================
    62  The main class name for all skin-specific styles. To make your own skin,
    63  replace all occurances of 'vjs-default-skin' with a new name. Then add your new
    64  skin name to your video tag instead of the default skin.
    65  e.g. <video class="video-js my-skin-name">
    66  */
    67  .vjs-default-skin {
    68    color: @main-font-color;
    69  }
    70  
    71  /* Custom Icon Font
    72  --------------------------------------------------------------------------------
    73  The control icons are from a custom font. Each icon corresponds to a character
    74  (e.g. "\e001"). Font icons allow for easy scaling and coloring of icons.
    75  */
    76  @font-face{
    77    font-family: 'VideoJS';
    78    src: url('font/vjs.eot');
    79    src: url('font/vjs.eot?#iefix') format('embedded-opentype'),
    80    url('font/vjs.woff') format('woff'),
    81    url('font/vjs.ttf') format('truetype'),
    82    url('font/vjs.svg#icomoon') format('svg');
    83  
    84    font-weight: normal;
    85    font-style: normal;
    86  }
    87  
    88  // Icon font character values
    89  @play-icon: "\e001";
    90  @pause-icon: "\e002";
    91  @volume-muted-icon: "\e003";
    92  @volume-low-icon: "\e004";
    93  @volume-mid-icon: "\e005";
    94  @volume-high-icon: "\e006";
    95  @fullscreen-enter-icon: "\e000";
    96  @fullscreen-exit-icon: "\e00b";
    97  @square-icon: "\e009";
    98  @spinner-icon: "\e00a";
    99  @spinner2-icon: "\e00d";
   100  @spinner3-icon: "\e01e";
   101  @spinner4-icon: "\e01f";
   102  @subtitles-icon: "\e00c";
   103  @captions-icon: "\e008";
   104  @chapters-icon: "\e00c";
   105  @share-icon: "\e00e";
   106  @cog-icon: "\e600";
   107  
   108  /* Base UI Component Classes
   109  --------------------------------------------------------------------------------
   110  */
   111  
   112  /* Slider - used for Volume bar and Seek bar */
   113  .vjs-default-skin .vjs-slider {
   114    /* Replace browser focus hightlight with handle highlight *///
   115    outline: 0;
   116    position: relative;
   117    cursor: pointer;
   118    padding: 0;
   119  
   120    .background-color-with-alpha(@slider-background-color, @slider-background-alpha);
   121  }
   122  
   123  .vjs-default-skin .vjs-slider:focus {
   124    .box-shadow(0 0 2em #fff);
   125  }
   126  
   127  .vjs-default-skin .vjs-slider-handle {
   128    position: absolute;
   129    /* Needed for IE6 *///
   130    left: 0;
   131    top: 0;
   132  }
   133  
   134  .vjs-default-skin .vjs-slider-handle:before {
   135    content: @square-icon;
   136    font-family: VideoJS;
   137    font-size: 1em;
   138    line-height: 1;
   139    text-align: center;
   140    text-shadow: 0em 0em 1em #fff;
   141  
   142    position: absolute;
   143    top: 0;
   144    left: 0;
   145  
   146    /* Rotate the square icon to make a diamond *///
   147    .transform(rotate(-45deg));
   148  }
   149  
   150  /* Control Bar
   151  --------------------------------------------------------------------------------
   152  The default control bar that is a container for most of the controls.
   153  */
   154  .vjs-default-skin .vjs-control-bar {
   155    /* Start hidden *///
   156    display: none;
   157    position: absolute;
   158    /* Place control bar at the bottom of the player box/video.
   159       If you want more margin below the control bar, add more height. *///
   160    bottom: 0;
   161    /* Use left/right to stretch to 100% width of player div *///
   162    left: 0;
   163    right: 0;
   164    /* Height includes any margin you want above or below control items *///
   165    height: 3.0em;
   166  
   167    .background-color-with-alpha(@control-bg-color, @control-bg-alpha);
   168  }
   169  
   170  /* Show the control bar only once the video has started playing */
   171  .vjs-default-skin.vjs-has-started .vjs-control-bar {
   172    display: block;
   173    /* Visibility needed to make sure things hide in older browsers too. */
   174    visibility: visible;
   175    opacity: 1;
   176  
   177    @trans: visibility 0.1s, opacity 0.1s; // Var needed because of comma
   178    .transition(@trans);
   179  }
   180  
   181  /* Hide the control bar when the video is playing and the user is inactive  */
   182  .vjs-default-skin.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar {
   183    display: block;
   184    visibility: hidden;
   185    opacity: 0;
   186  
   187    @trans: visibility 1.0s, opacity 1.0s;
   188    .transition(@trans);
   189  }
   190  
   191  .vjs-default-skin.vjs-controls-disabled .vjs-control-bar {
   192    display: none;
   193  }
   194  
   195  .vjs-default-skin.vjs-using-native-controls .vjs-control-bar {
   196    display: none;
   197  }
   198  
   199  /* The control bar shouldn't show after an error */
   200  .vjs-default-skin.vjs-error .vjs-control-bar {
   201    display: none;
   202  }
   203  
   204  /* IE8 is flakey with fonts, and you have to change the actual content to force
   205  fonts to show/hide properly.
   206    - "\9" IE8 hack didn't work for this
   207    - Found in XP IE8 from http://modern.ie. Does not show up in "IE8 mode" in IE9
   208  */
   209  @ie8screen: ~"\0screen";
   210  .vjs-default-skin.vjs-user-inactive.vjs-playing .vjs-control-bar :before {
   211    @media @ie8screen { content: ""; }
   212  }
   213  
   214  /* General styles for individual controls. */
   215  .vjs-default-skin .vjs-control {
   216    outline: none;
   217    position: relative;
   218    float: left;
   219    text-align: center;
   220    margin: 0;
   221    padding: 0;
   222    height: 3.0em;
   223    width: 4em;
   224  }
   225  
   226  /* FontAwsome button icons */
   227  .vjs-default-skin .vjs-control:before {
   228    font-family: VideoJS;
   229    font-size: 1.5em;
   230    line-height: 2;
   231    position: absolute;
   232    top: 0;
   233    left: 0;
   234    width: 100%;
   235    height: 100%;
   236    text-align: center;
   237    text-shadow: 1px 1px 1px rgba(0,0,0,0.5);
   238  }
   239  
   240  /* Replacement for focus outline */
   241  .vjs-default-skin .vjs-control:focus:before,
   242  .vjs-default-skin .vjs-control:hover:before {
   243    text-shadow: 0em 0em 1em rgba(255, 255, 255, 1);
   244  }
   245  
   246  .vjs-default-skin .vjs-control:focus {
   247    /*  outline: 0; *///
   248    /* keyboard-only users cannot see the focus on several of the UI elements when
   249    this is set to 0 */
   250  }
   251  
   252  /* Hide control text visually, but have it available for screenreaders */
   253  .vjs-default-skin .vjs-control-text {
   254    .hide-visually;
   255  }
   256  
   257  /* Play/Pause
   258  --------------------------------------------------------------------------------
   259  */
   260  .vjs-default-skin .vjs-play-control {
   261    width: 5em;
   262    cursor: pointer;
   263  }
   264  .vjs-default-skin .vjs-play-control:before {
   265    content: @play-icon;
   266  }
   267  .vjs-default-skin.vjs-playing .vjs-play-control:before {
   268    content: @pause-icon;
   269  }
   270  
   271  /* Playback toggle
   272  --------------------------------------------------------------------------------
   273  */
   274  .vjs-default-skin .vjs-playback-rate .vjs-playback-rate-value {
   275    font-size: 1.5em;
   276    line-height: 2;
   277    position: absolute;
   278    top: 0;
   279    left: 0;
   280    width: 100%;
   281    height: 100%;
   282    text-align: center;
   283    text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);
   284  }
   285  
   286  .vjs-default-skin .vjs-playback-rate.vjs-menu-button .vjs-menu .vjs-menu-content {
   287    width: 4em;
   288    left: -2em;
   289    list-style: none;
   290  }
   291  
   292  /* Volume/Mute
   293  -------------------------------------------------------------------------------- */
   294  .vjs-default-skin .vjs-mute-control,
   295  .vjs-default-skin .vjs-volume-menu-button {
   296    cursor: pointer;
   297    float: right;
   298  }
   299  .vjs-default-skin .vjs-mute-control:before,
   300  .vjs-default-skin .vjs-volume-menu-button:before {
   301    content: @volume-high-icon;
   302  }
   303  .vjs-default-skin .vjs-mute-control.vjs-vol-0:before,
   304  .vjs-default-skin .vjs-volume-menu-button.vjs-vol-0:before {
   305    content: @volume-muted-icon;
   306  }
   307  .vjs-default-skin .vjs-mute-control.vjs-vol-1:before,
   308  .vjs-default-skin .vjs-volume-menu-button.vjs-vol-1:before {
   309    content: @volume-low-icon;
   310  }
   311  .vjs-default-skin .vjs-mute-control.vjs-vol-2:before,
   312  .vjs-default-skin .vjs-volume-menu-button.vjs-vol-2:before {
   313    content: @volume-mid-icon;
   314  }
   315  
   316  .vjs-default-skin .vjs-volume-control {
   317    width: 5em;
   318    float: right;
   319  }
   320  .vjs-default-skin .vjs-volume-bar {
   321    width: 5em;
   322    height: 0.6em;
   323    margin: 1.1em auto 0;
   324  }
   325  
   326  .vjs-default-skin .vjs-volume-menu-button .vjs-menu-content {
   327    height: 2.9em;
   328  }
   329  
   330  .vjs-default-skin .vjs-volume-level {
   331    position: absolute;
   332    top: 0;
   333    left: 0;
   334    height: 0.5em;
   335    /* assuming volume starts at 1.0 */
   336    width: 100%;
   337  
   338    background: @slider-bar-color
   339      url(@slider-bar-pattern)
   340      -50% 0 repeat;
   341  }
   342  .vjs-default-skin .vjs-volume-bar .vjs-volume-handle {
   343    width: 0.5em;
   344    height: 0.5em;
   345    /* Assumes volume starts at 1.0. If you change the size of the
   346       handle relative to the volume bar, you'll need to update this value
   347       too. */
   348    left: 4.5em;
   349  }
   350  
   351  .vjs-default-skin .vjs-volume-handle:before {
   352    font-size: 0.9em;
   353    top: -0.2em;
   354    left: -0.2em;
   355  
   356    width: 1em;
   357    height: 1em;
   358  }
   359  
   360  .vjs-default-skin .vjs-volume-menu-button .vjs-menu .vjs-menu-content {
   361    width: 6em;
   362    left: -4em;
   363  }
   364  
   365  /* Progress
   366  --------------------------------------------------------------------------------
   367  */
   368  .vjs-default-skin .vjs-progress-control {
   369    position: absolute;
   370    left: 0;
   371    right: 0;
   372    width: auto;
   373    font-size: 0.3em;
   374    height: 1em;
   375    /* Set above the rest of the controls. *///
   376    top: -1em;
   377  
   378    /* Shrink the bar slower than it grows. *///
   379    .transition(all 0.4s);
   380  }
   381  
   382  /* On hover, make the progress bar grow to something that's more clickable.
   383      This simply changes the overall font for the progress bar, and this
   384      updates both the em-based widths and heights, as wells as the icon font */
   385  .vjs-default-skin:hover .vjs-progress-control {
   386    font-size: .9em;
   387  
   388    /* Even though we're not changing the top/height, we need to include them in
   389        the transition so they're handled correctly. */
   390    .transition(all 0.2s);
   391  }
   392  
   393  /* Box containing play and load progresses. Also acts as seek scrubber. */
   394  .vjs-default-skin .vjs-progress-holder {
   395    height: 100%;
   396  }
   397  
   398  /* Progress Bars */
   399  .vjs-default-skin .vjs-progress-holder .vjs-play-progress,
   400  .vjs-default-skin .vjs-progress-holder .vjs-load-progress,
   401  .vjs-default-skin .vjs-progress-holder .vjs-load-progress div {
   402    position: absolute;
   403    display: block;
   404    height: 100%;
   405    margin: 0;
   406    padding: 0;
   407    /* updated by javascript during playback */
   408    width: 0;
   409    /* Needed for IE6 *///
   410    left: 0;
   411    top: 0;
   412  }
   413  
   414  .vjs-default-skin .vjs-play-progress {
   415    /*
   416      Using a data URI to create the white diagonal lines with a transparent
   417        background. Surprisingly works in IE8.
   418        Created using http://www.patternify.com
   419      Changing the first color value will change the bar color.
   420      Also using a paralax effect to make the lines move backwards.
   421        The -50% left position makes that happen.
   422    */
   423    background: @slider-bar-color
   424      url(@slider-bar-pattern)
   425      -50% 0 repeat;
   426  }
   427  .vjs-default-skin .vjs-load-progress {
   428    background: rgb(100, 100, 100) /* IE8- Fallback */;
   429    background: rgba(255, 255, 255, 0.2);
   430  }
   431  
   432  /* there are child elements of the load progress bar that represent the
   433     specific time ranges that have been buffered */
   434  .vjs-default-skin .vjs-load-progress div {
   435    background: rgb(120, 120, 120) /* IE8- Fallback */;
   436    background: rgba(255, 255, 255, 0.1);
   437  }
   438  
   439  .vjs-default-skin .vjs-seek-handle {
   440    width: 1.5em;
   441    height: 100%;
   442  }
   443  
   444  .vjs-default-skin .vjs-seek-handle:before {
   445    padding-top: 0.1em /* Minor adjustment */;
   446  }
   447  
   448  /* Live Mode
   449  --------------------------------------------------------------------------------
   450  */
   451  .vjs-default-skin.vjs-live .vjs-time-controls,
   452  .vjs-default-skin.vjs-live .vjs-time-divider,
   453  .vjs-default-skin.vjs-live .vjs-progress-control {
   454    display: none;
   455  }
   456  .vjs-default-skin.vjs-live .vjs-live-display {
   457    display: block;
   458  }
   459  
   460  /* Live Display
   461  --------------------------------------------------------------------------------
   462  */
   463  .vjs-default-skin .vjs-live-display {
   464    display: none;
   465    font-size: 1em;
   466    line-height: 3em;
   467  }
   468  
   469  /* Time Display
   470  --------------------------------------------------------------------------------
   471  */
   472  .vjs-default-skin .vjs-time-controls {
   473    font-size: 1em;
   474    /* Align vertically by making the line height the same as the control bar *///
   475    line-height: 3em;
   476  }
   477  .vjs-default-skin .vjs-current-time { float: left; }
   478  .vjs-default-skin .vjs-duration { float: left; }
   479  /* Remaining time is in the HTML, but not included in default design */
   480  .vjs-default-skin .vjs-remaining-time { display: none; float: left; }
   481  .vjs-time-divider { float: left; line-height: 3em; }
   482  
   483  /* Fullscreen
   484  --------------------------------------------------------------------------------
   485  */
   486  .vjs-default-skin .vjs-fullscreen-control {
   487    width: 3.8em;
   488    cursor: pointer;
   489    float: right;
   490  }
   491  .vjs-default-skin .vjs-fullscreen-control:before {
   492    content: @fullscreen-enter-icon;
   493  }
   494  /* Switch to the exit icon when the player is in fullscreen */
   495  .vjs-default-skin.vjs-fullscreen .vjs-fullscreen-control:before {
   496    content: @fullscreen-exit-icon;
   497  }
   498  
   499  /* Big Play Button (play button at start)
   500  --------------------------------------------------------------------------------
   501  Positioning of the play button in the center or other corners can be done more
   502  easily in the skin designer. http://designer.videojs.com/
   503  */
   504  .vjs-default-skin .vjs-big-play-button {
   505    // Calculate total width/height so we're able to center the button
   506    @total-width: (@big-play-width + (@big-play-border-width * 2));
   507    @total-height: (@big-play-height + (@big-play-border-width * 2));
   508    // Position the button using the absolute-align mixin (bottom of page)
   509    .absolute-align(@big-play-align, @big-play-margin, @total-width);
   510    .absolute-align(@big-play-vertical-align, @big-play-margin, @total-height);
   511  
   512    font-size: @big-play-font-size;
   513    display: block;
   514    z-index: 2;
   515    position: absolute;
   516    width: @big-play-width;
   517    height: @big-play-height;
   518    text-align: center;
   519    vertical-align: middle;
   520    cursor: pointer;
   521    opacity: 1;
   522  
   523    /* Need a slightly gray bg so it can be seen on black backgrounds *///
   524    .background-color-with-alpha(@big-play-bg-color, @big-play-bg-alpha);
   525  
   526    border: @big-play-border-width solid @big-play-border-color;
   527  
   528    .border-radius(@big-play-border-radius);
   529    .box-shadow(0px 0px 1em rgba(255, 255, 255, 0.25));
   530    .transition(all 0.4s);
   531  }
   532  
   533  /* Optionally center */
   534  .vjs-default-skin.vjs-big-play-centered .vjs-big-play-button {
   535    @total-width: (@big-play-width + (@big-play-border-width * 2));
   536    @total-height: (@big-play-height + (@big-play-border-width * 2));
   537  
   538    .absolute-align(center, @big-play-margin, @total-width);
   539    .absolute-align(middle, @big-play-margin, @total-height);
   540  }
   541  
   542  /* Hide if controls are disabled */
   543  .vjs-default-skin.vjs-controls-disabled .vjs-big-play-button {
   544    display: none;
   545  }
   546  /* Hide when video starts playing */
   547  .vjs-default-skin.vjs-has-started .vjs-big-play-button {
   548    display: none;
   549  }
   550  /* Hide on mobile devices. Remove when we stop using native controls
   551      by default on mobile  */
   552  .vjs-default-skin.vjs-using-native-controls .vjs-big-play-button {
   553    display: none;
   554  }
   555  
   556  .vjs-default-skin:hover .vjs-big-play-button,
   557  .vjs-default-skin .vjs-big-play-button:focus {
   558    outline: 0;
   559    border-color: #fff;
   560    /* IE8 needs a non-glow hover state *///
   561    background-color: rgb(80, 80, 80);
   562    background-color: rgba(50, 50, 50, 0.75);
   563  
   564    .box-shadow(0 0 3em #fff);
   565    .transition(all 0s);
   566  }
   567  
   568  .vjs-default-skin .vjs-big-play-button:before {
   569    content: @play-icon;
   570    font-family: VideoJS;
   571    /* In order to center the play icon vertically we need to set the line height
   572       to the same as the button height */
   573    line-height: @big-play-height;
   574    text-shadow: 0.05em 0.05em 0.1em #000;
   575    text-align: center /* Needed for IE8 */;
   576  
   577    position: absolute;
   578    left: 0;
   579    width: 100%;
   580    height: 100%;
   581  }
   582  
   583  .vjs-error .vjs-big-play-button {
   584    display: none;
   585  }
   586  
   587  /* Error Display
   588  --------------------------------------------------------------------------------
   589  */
   590  
   591  .vjs-error-display {
   592    display: none;
   593  }
   594  
   595  .vjs-error .vjs-error-display {
   596    display: block;
   597    position: absolute;
   598    left: 0;
   599    top: 0;
   600    width: 100%;
   601    height: 100%;
   602  }
   603  
   604  .vjs-error .vjs-error-display:before {
   605    content: 'X';
   606    font-family: Arial;
   607    font-size: 4em;
   608    color: #666666;
   609    /* In order to center the play icon vertically we need to set the line height
   610       to the same as the button height */
   611    line-height: 1;
   612    text-shadow: 0.05em 0.05em 0.1em #000;
   613    text-align: center /* Needed for IE8 */;
   614    vertical-align: middle;
   615  
   616    position: absolute;
   617    left: 0;
   618    top: 50%;
   619    margin-top: -0.5em;
   620    width: 100%;
   621  }
   622  
   623  .vjs-error-display div {
   624    position: absolute;
   625    bottom: 1em;
   626    right: 0;
   627    left: 0;
   628  
   629    font-size: 1.4em;
   630    text-align: center;
   631    padding: 3px;
   632    background: rgb(0, 0, 0); // fallback to just black
   633    background: rgba(0,0,0,0.5); // Normally show black at 50% opacity
   634  }
   635  
   636  .vjs-error-display a, .vjs-error-display a:visited {
   637    color: #F4A460;
   638  }
   639  
   640  /* Loading Spinner
   641  --------------------------------------------------------------------------------
   642  */
   643  
   644  .vjs-loading-spinner {
   645    /* Should be hidden by default *///
   646    display: none;
   647  
   648    position: absolute;
   649    top: 50%;
   650    left: 50%;
   651  
   652    font-size: 4em;
   653    line-height: 1;
   654  
   655    width: 1em;
   656    height: 1em;
   657  
   658    margin-left: -0.5em;
   659    margin-top: -0.5em;
   660  
   661    opacity: 0.75;
   662  }
   663  
   664  /* Show the spinner when waiting for data and seeking to a new time */
   665  .vjs-waiting .vjs-loading-spinner,
   666  .vjs-seeking .vjs-loading-spinner {
   667    display: block;
   668  
   669    /* only animate when showing because it can be processor heavy *///
   670    .animation(spin 1.5s infinite linear);
   671  }
   672  
   673  /* Errors are unrecoverable without user interaction so hide the spinner */
   674  .vjs-error .vjs-loading-spinner {
   675    display: none;
   676  
   677    /* ensure animation doesn't continue while hidden *///
   678    .animation(none);
   679  }
   680  
   681  .vjs-default-skin .vjs-loading-spinner:before {
   682    content: @spinner3-icon;
   683    font-family: VideoJS;
   684  
   685    position: absolute;
   686    top: 0;
   687    left: 0;
   688    width: 1em;
   689    height: 1em;
   690    text-align: center;
   691    text-shadow: 0em 0em 0.1em #000;
   692  }
   693  
   694  @-moz-keyframes spin {
   695    0% { -moz-transform: rotate(0deg); }
   696    100% { -moz-transform: rotate(359deg); }
   697  }
   698  @-webkit-keyframes spin {
   699    0% { -webkit-transform: rotate(0deg); }
   700    100% { -webkit-transform: rotate(359deg); }
   701  }
   702  @-o-keyframes spin {
   703    0% { -o-transform: rotate(0deg); }
   704    100% { -o-transform: rotate(359deg); }
   705  }
   706  @keyframes spin {
   707    0% { transform: rotate(0deg); }
   708    100% { transform: rotate(359deg); }
   709  }
   710  
   711  /* Menu Buttons (Captions/Subtitles/etc.)
   712  --------------------------------------------------------------------------------
   713  */
   714  .vjs-default-skin .vjs-menu-button {
   715    float: right;
   716    cursor: pointer;
   717  }
   718  
   719  .vjs-default-skin .vjs-menu {
   720    display: none;
   721    position: absolute;
   722    bottom: 0;
   723    left: 0em; /* (Width of vjs-menu - width of button) / 2 */
   724    width: 0em;
   725    height: 0em;
   726    margin-bottom: 3em;
   727  
   728    border-left: 2em solid transparent;
   729    border-right: 2em solid transparent;
   730  
   731    border-top: 1.55em solid rgb(0, 0, 0); /* Same width top as ul bottom */
   732    border-top-color: rgba(7, 40, 50, 0.5); /* Same as ul background */
   733  }
   734  
   735  /* Button Pop-up Menu */
   736  .vjs-default-skin .vjs-menu-button .vjs-menu .vjs-menu-content {
   737    display: block;
   738    padding: 0; margin: 0;
   739    position: absolute;
   740    width: 10em;
   741    bottom: 1.5em; /* Same bottom as vjs-menu border-top */
   742    max-height: 15em;
   743    overflow: auto;
   744  
   745    left: -5em; /* Width of menu - width of button / 2 */
   746  
   747    .background-color-with-alpha(@control-bg-color, @control-bg-alpha);
   748    .box-shadow(-0.2em -0.2em 0.3em rgba(255, 255, 255, 0.2));
   749  }
   750  
   751  .vjs-default-skin .vjs-menu-button:hover .vjs-menu {
   752    display: block;
   753  }
   754  .vjs-default-skin .vjs-menu-button ul li {
   755    list-style: none;
   756    margin: 0;
   757    padding: 0.3em 0 0.3em 0;
   758    line-height: 1.4em;
   759    font-size: 1.2em;
   760    text-align: center;
   761    text-transform: lowercase;
   762  }
   763  .vjs-default-skin .vjs-menu-button ul li.vjs-selected {
   764    background-color: #000;
   765  }
   766  .vjs-default-skin .vjs-menu-button ul li:focus,
   767  .vjs-default-skin .vjs-menu-button ul li:hover,
   768  .vjs-default-skin .vjs-menu-button ul li.vjs-selected:focus,
   769  .vjs-default-skin .vjs-menu-button ul li.vjs-selected:hover {
   770    outline: 0;
   771    color: #111;
   772  
   773    .background-color-with-alpha(rgb(255, 255, 255), 0.75);
   774    .box-shadow(0 0 1em rgba(255, 255, 255, 1));
   775  }
   776  .vjs-default-skin .vjs-menu-button ul li.vjs-menu-title {
   777    text-align: center;
   778    text-transform: uppercase;
   779    font-size: 1em;
   780    line-height: 2em;
   781    padding: 0;
   782    margin: 0 0 0.3em 0;
   783    font-weight: bold;
   784    cursor: default;
   785  }
   786  
   787  /* Subtitles Button */
   788  .vjs-default-skin .vjs-subtitles-button:before {
   789    content: @subtitles-icon;
   790  }
   791  
   792  /* Captions Button */
   793  .vjs-default-skin .vjs-captions-button:before {
   794    content: @captions-icon;
   795  }
   796  
   797  /* Chapters Button */
   798  .vjs-default-skin .vjs-chapters-button:before {
   799    content: @chapters-icon;
   800  }
   801  
   802  .vjs-default-skin .vjs-chapters-button.vjs-menu-button .vjs-menu .vjs-menu-content {
   803    width: 24em;
   804    left: -12em;
   805  }
   806  
   807  /* Replacement for focus outline */
   808  .vjs-default-skin .vjs-captions-button:focus .vjs-control-content:before,
   809  .vjs-default-skin .vjs-captions-button:hover .vjs-control-content:before {
   810    .box-shadow(0 0 1em rgba(255, 255, 255, 1));
   811  }
   812  
   813  /*
   814  REQUIRED STYLES (be careful overriding)
   815  ================================================================================
   816  When loading the player, the video tag is replaced with a DIV,
   817  that will hold the video tag or object tag for other playback methods.
   818  The div contains the video playback element (Flash or HTML5) and controls,
   819  and sets the width and height of the video.
   820  
   821  ** If you want to add some kind of border/padding (e.g. a frame), or special
   822  positioning, use another containing element. Otherwise you risk messing up
   823  control positioning and full window mode. **
   824  */
   825  .video-js {
   826    background-color: #000;
   827    position: relative;
   828    padding: 0;
   829    /* Start with 10px for base font size so other dimensions can be em based and
   830       easily calculable. */
   831    font-size: @base-font-size;
   832    /* Allow poster to be vertially aligned. */
   833    vertical-align: middle;
   834    /*  display: table-cell; */ /*This works in Safari but not Firefox.*/
   835  
   836    /* Provide some basic defaults for fonts */
   837    font-weight: normal;
   838    font-style: normal;
   839    /* Avoiding helvetica: issue #376 */
   840    font-family: Arial, sans-serif;
   841  
   842    /* Turn off user selection (text highlighting) by default.
   843       The majority of player components will not be text blocks.
   844       Text areas will need to turn user selection back on. */
   845    .user-select(none);
   846  }
   847  
   848  /* Playback technology elements expand to the width/height of the containing div
   849      <video> or <object> */
   850  .video-js .vjs-tech {
   851    position: absolute;
   852    top: 0;
   853    left: 0;
   854    width: 100%;
   855    height: 100%;
   856  }
   857  
   858  /* Fix for Firefox 9 fullscreen (only if it is enabled). Not needed when
   859     checking fullScreenEnabled. */
   860  .video-js:-moz-full-screen { position: absolute; }
   861  
   862  /* Fullscreen Styles */
   863  body.vjs-full-window {
   864    padding: 0;
   865    margin: 0;
   866    height: 100%;
   867    /* Fix for IE6 full-window. http://www.cssplay.co.uk/layouts/fixed.html *///
   868    overflow-y: auto;
   869  }
   870  .video-js.vjs-fullscreen {
   871    position: fixed;
   872    overflow: hidden;
   873    z-index: 1000;
   874    left: 0;
   875    top: 0;
   876    bottom: 0;
   877    right: 0;
   878    width: 100% !important;
   879    height: 100% !important;
   880    /* IE6 full-window (underscore hack) *///
   881    _position: absolute;
   882  }
   883  .video-js:-webkit-full-screen {
   884    width: 100% !important;
   885    height: 100% !important;
   886  }
   887  .video-js.vjs-fullscreen.vjs-user-inactive {
   888    cursor: none;
   889  }
   890  
   891  /* Poster Styles */
   892  .vjs-poster {
   893    background-repeat: no-repeat;
   894    background-position: 50% 50%;
   895    background-size: contain;
   896    cursor: pointer;
   897    margin: 0;
   898    padding: 0;
   899    position: absolute;
   900    top: 0;
   901    right: 0;
   902    bottom: 0;
   903    left: 0;
   904  }
   905  .vjs-poster img {
   906    display: block;
   907    margin: 0 auto;
   908    max-height: 100%;
   909    padding: 0;
   910    width: 100%;
   911  }
   912  
   913  /* Hide the poster when native controls are used otherwise it covers them */
   914  .video-js.vjs-using-native-controls .vjs-poster {
   915    display: none;
   916  }
   917  
   918  /* Text Track Styles */
   919  /* Overall track holder for both captions and subtitles */
   920  .video-js .vjs-text-track-display {
   921    text-align: center;
   922    position: absolute;
   923    bottom: 4em;
   924    /* Leave padding on left and right *///
   925    left: 1em;
   926    right: 1em;
   927  }
   928  
   929  /* Move captions down when controls aren't being shown */
   930  .video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display {
   931    bottom: 1em;
   932  }
   933  
   934  /* Individual tracks */
   935  .video-js .vjs-text-track {
   936    display: none;
   937    font-size: 1.4em;
   938    text-align: center;
   939    margin-bottom: 0.1em;
   940    /* Transparent black background, or fallback to all black (oldIE) *///
   941    .background-color-with-alpha(rgb(0, 0, 0), 0.5);
   942  }
   943  .video-js .vjs-subtitles { color: #fff /* Subtitles are white */; }
   944  .video-js .vjs-captions { color: #fc6 /* Captions are yellow */; }
   945  .vjs-tt-cue { display: block; }
   946  
   947  /* Hide disabled or unsupported controls */
   948  .vjs-default-skin .vjs-hidden { display: none; }
   949  
   950  .vjs-lock-showing {
   951    display: block !important;
   952    opacity: 1;
   953    visibility: visible;
   954  }
   955  
   956  /*  In IE8 w/ no JavaScript (no HTML5 shim), the video tag doesn't register.
   957      The .video-js classname on the video tag also isn't considered.
   958      This optional paragraph inside the video tag can provide a message to users
   959      about what's required to play video. */
   960  .vjs-no-js {
   961    padding: 20px;
   962    color: #ccc;
   963    background-color: #333;
   964    font-size: 18px;
   965    font-family: Arial, sans-serif;
   966    text-align: center;
   967    width: 300px;
   968    height: 150px;
   969    margin: 0px auto;
   970  }
   971  
   972  .vjs-no-js a, .vjs-no-js a:visited {
   973    color: #F4A460;
   974  }
   975  
   976  // MIXINS
   977  // =============================================================================
   978  // Mixins are a LESS feature and are used to add vendor prefixes to CSS rules
   979  // when needed.
   980  
   981  // https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow
   982  .box-shadow (@string: 0 0 1em rgba(0, 0, 0, 0.25)) {
   983    /* box-shadow *///
   984    -webkit-box-shadow: @string;
   985       -moz-box-shadow: @string;
   986            box-shadow: @string;
   987  }
   988  
   989  // https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius
   990  .border-radius (@string: 5px) {
   991    /* border-radius *///
   992    -webkit-border-radius: @string;
   993       -moz-border-radius: @string;
   994            border-radius: @string;
   995  }
   996  
   997  // https://developer.mozilla.org/en-US/docs/Web/CSS/transition
   998  .transition (@string: all 1s linear) {
   999    /* transition *///
  1000    -webkit-transition: @string;
  1001       -moz-transition: @string;
  1002         -o-transition: @string;
  1003            transition: @string;
  1004  }
  1005  
  1006  // https://developer.mozilla.org/en-US/docs/Web/CSS/transition
  1007  .transition-delay (@string: 1s) {
  1008    /* transition-delay *///
  1009    -webkit-transition-delay: @string;
  1010       -moz-transition-delay: @string;
  1011         -o-transition-delay: @string;
  1012            transition-delay: @string;
  1013  }
  1014  
  1015  // https://developer.mozilla.org/en-US/docs/Web/CSS/animation
  1016  .animation (@string: spin 1s infinite linear) {
  1017    /* animation *///
  1018    -webkit-animation: @string;
  1019       -moz-animation: @string;
  1020         -o-animation: @string;
  1021            animation: @string;
  1022  }
  1023  
  1024  // https://developer.mozilla.org/en-US/docs/Web/CSS/transform
  1025  .transform (@string: rotate(-45deg)) {
  1026    /* transform *///
  1027    -webkit-transform: @string;
  1028       -moz-transform: @string;
  1029        -ms-transform: @string;
  1030         -o-transform: @string;
  1031            transform: @string;
  1032  }
  1033  
  1034  // https://developer.mozilla.org/en-US/docs/Web/CSS/user-select
  1035  .user-select (@string: none) {
  1036    /* user-select *///
  1037    -webkit-user-select: @string;
  1038       -moz-user-select: @string;
  1039        -ms-user-select: @string;
  1040            user-select: @string;
  1041  }
  1042  
  1043  // Hide something visually but keep available for screen readers.
  1044  // http://h5bp.com/v
  1045  .hide-visually () {
  1046    /* hide-visually *///
  1047    border: 0;
  1048    clip: rect(0 0 0 0);
  1049    height: 1px;
  1050    margin: -1px;
  1051    overflow: hidden;
  1052    padding: 0;
  1053    position:
  1054    absolute;
  1055    width: 1px;
  1056  }
  1057  
  1058  // Align an object with absolute positioning
  1059  // Used to align the Big Play Button in the corners or center
  1060  .absolute-align (@align, @margin, @length) when (@align = top) {
  1061    top: @margin;
  1062  }
  1063  .absolute-align (@align, @margin, @length) when (@align = bottom) {
  1064    bottom: @margin;
  1065  }
  1066  .absolute-align (@align, @margin, @length) when (@align = left) {
  1067    left: @margin;
  1068  }
  1069  .absolute-align (@align, @margin, @length) when (@align = right) {
  1070    right: @margin;
  1071  }
  1072  .absolute-align (@align, @margin, @length) when (@align = center) {
  1073    /* Center it horizontally *///
  1074    left: 50%;
  1075    margin-left: (-(@length/2));
  1076    // margin-left: ((@length*-1)/2);
  1077  }
  1078  .absolute-align (@align, @margin, @length) when (@align = middle) {
  1079    /* Center it vertically *///
  1080    top: 50%;
  1081    margin-top: (-(@length/2));
  1082    // margin-top: ((@length*-1)/2);
  1083  }
  1084  
  1085  // http://stackoverflow.com/questions/637921/opacity-of-background-but-not-the-text
  1086  .background-color-with-alpha (@color, @alpha) {
  1087    @rgba: rgba(red(@color), green(@color), blue(@color), @alpha);
  1088    /* background-color-with-alpha *///
  1089    background-color: @color;
  1090    background-color: @rgba;
  1091    // No longer using MS filters because they break border radius in IE9
  1092    // @argb: argb(@rgba);
  1093    // filter: ~"progid:DXImageTransform.Microsoft.gradient(startColorstr=@{argb}, endColorstr=@{argb})";
  1094    // -ms-filter: ~"progid:DXImageTransform.Microsoft.gradient(startColorstr=@{argb}, endColorstr=@{argb})";
  1095  }
  1096  
  1097  .border-color-with-alpha (@color, @alpha) {
  1098    @rgba: rgba(red(@color), green(@color), blue(@color), @alpha);
  1099    /* border-color-with-alpha *///
  1100    border-color: @color;
  1101    border-color: @rgba;
  1102  }
  1103  
  1104  // NOTES ON LESS (tracking learnings so we don't forget)
  1105  // =============================================================================
  1106  // * We want this file to continue to be accessible by people who don't know
  1107  //   LESS but know CSS. This means finding the balance between using the most
  1108  //   valuable LESS features (e.g. variables) and keeping it looking like CSS.
  1109  //   So it's best to avoid advanced LESS features like conditional statements.
  1110  //   (we're using one for the big play button position because that's a hot
  1111  //   topic)
  1112  //
  1113  // * We care about the readability of the CSS output of LESS, which means we
  1114  //   have to be careful about what features of LESS we use. (if you're building
  1115  //   your own skin this may not apply)
  1116  //     1. Comments inside of rules (strangely) have an extra line added after
  1117  //        them in the CSS output. To avoid this we can add a LESS comment after
  1118  //        the CSS comment.
  1119  //          /* comment *///
  1120  //
  1121  //     2. In a rule with nested rules, any comments outside of a rule are moved
  1122  //        to the top of the parent rule. i.e. it might look like:
  1123  //          /* title of rule 1 */
  1124  //          /* title of rule 2 */
  1125  //          .rule1 {}
  1126  //          .rule2 {}
  1127  //        This is why we aren't using nested rules inside of the
  1128  //        vjs-default-skin class.
  1129  
  1130  /* -----------------------------------------------------------------------------
  1131  The original source of this file lives at
  1132  https://github.com/videojs/video.js/blob/master/src/css/video-js.less */