/* javascript/closure/css/dialog.css */
/*
 * Copyright 2009 The Closure Library Authors. All Rights Reserved.
 *
 * Use of this source code is governed by the Apache License, Version 2.0.
 * See the COPYING file for details.
 */

/*
 * Standard styling for goog.ui.Dialog.
 *
 * @author ssaviano@google.com (Steven Saviano)
 * @author attila@google.com (Attila Bodis)
 */


.modal-dialog {
  background: #c1d9ff;
  border: 1px solid #3a5774;
  color: #000;
  padding: 4px;
  position: absolute;
}

.modal-dialog a,
.modal-dialog a:link,
.modal-dialog a:visited  {
  color: #06c;
  cursor: pointer;
}

.modal-dialog-bg {
  background: #666;
  left: 0;
  position: absolute;
  top: 0;
}

.modal-dialog-title {
  background: #e0edfe;
  color: #000;
  cursor: pointer;
  font-size: 120%;
  font-weight: bold;

  /* Add padding on the right to ensure the close button has room. */
  padding: 8px 31px 8px 8px;

  position: relative;
  _zoom: 1; /* Ensures proper width in IE6 RTL. */
}

.modal-dialog-title-close {
  /* Client apps may override the URL at which they serve the sprite. */
  background: #e0edfe url(//ssl.gstatic.com/editor/editortoolbar.png) no-repeat -528px 0;
  cursor: default;
  height: 15px;
  position: absolute;
  right: 10px;
  top: 8px;
  width: 15px;
  vertical-align: middle;
}

.modal-dialog-buttons,
.modal-dialog-content {
  background-color: #fff;
  padding: 8px;
}

.goog-buttonset-default {
  font-weight: bold;
}

/* javascript/closure/css/datepicker.css */
/*
 * Copyright 2009 The Closure Library Authors. All Rights Reserved.
 *
 * Use of this source code is governed by the Apache License, Version 2.0.
 * See the COPYING file for details.
 */

/*
 * Standard styling for a goog.ui.DatePicker.
 *
 * @author arv@google.com (Erik Arvidsson)
 */

.goog-date-picker,
.goog-date-picker th,
.goog-date-picker td {
  font: 13px Arial, sans-serif;
}

.goog-date-picker {
  -moz-user-focus: normal;
  -moz-user-select: none;
  position: relative;
  border: 1px solid #000;
  float: left;
  padding: 2px;
  color: #000;
  background: #c3d9ff;
  cursor: default;
}

.goog-date-picker th {
  text-align: center;
}

.goog-date-picker td {
  text-align: center;
  vertical-align: middle;
  padding: 1px 3px;
}


.goog-date-picker-menu {
  position: absolute;
  background: threedface;
  border: 1px solid gray;
  -moz-user-focus: normal;
  z-index: 1;
  outline: none;
}

.goog-date-picker-menu ul {
  list-style: none;
  margin: 0px;
  padding: 0px;
}

.goog-date-picker-menu ul li {
  cursor: default;
}

.goog-date-picker-menu-selected {
  background: #ccf;
}

.goog-date-picker th {
  font-size: .9em;
}

.goog-date-picker td div {
  float: left;
}

.goog-date-picker button {
  padding: 0px;
  margin: 1px 0;
  border: 0;
  color: #20c;
  font-weight: bold;
  background: transparent;
}

.goog-date-picker-date {
  background: #fff;
}

.goog-date-picker-week,
.goog-date-picker-wday {
  padding: 1px 3px;
  border: 0;
  border-color: #a2bbdd;
  border-style: solid;
}

.goog-date-picker-week {
  border-right-width: 1px;
}

.goog-date-picker-wday {
  border-bottom-width: 1px;
}

.goog-date-picker-head td {
  text-align: center;
}

/** Use td.className instead of !important */
td.goog-date-picker-today-cont {
  text-align: center;
}

/** Use td.className instead of !important */
td.goog-date-picker-none-cont {
  text-align: center;
}

.goog-date-picker-month {
  min-width: 11ex;
  white-space: nowrap;
}

.goog-date-picker-year {
  min-width: 6ex;
  white-space: nowrap;
}

.goog-date-picker-monthyear {
  white-space: nowrap;
}

.goog-date-picker table {
  border-collapse: collapse;
}

.goog-date-picker-other-month {
  color: #888;
}

.goog-date-picker-wkend-start,
.goog-date-picker-wkend-end {
  background: #eee;
}

/** Use td.className instead of !important */
td.goog-date-picker-selected {
  background: #c3d9ff;
}

.goog-date-picker-today {
  background: #9ab;
  font-weight: bold !important;
  border-color: #246 #9bd #9bd #246;
  color: #fff;
}

/* javascript/closure/css/menu.css */
/*
 * Copyright 2009 The Closure Library Authors. All Rights Reserved.
 *
 * Use of this source code is governed by the Apache License, Version 2.0.
 * See the COPYING file for details.
 */

/*
 * Standard styling for menus created by goog.ui.MenuRenderer.
 *
 * @author attila@google.com (Attila Bodis)
 */


.goog-menu {
  background: #fff;
  border-color: #ccc #666 #666 #ccc;
  border-style: solid;
  border-width: 1px;
  cursor: default;
  font: normal 13px Arial, sans-serif;
  margin: 0;
  outline: none;
  padding: 4px 0;
  position: absolute;
  z-index: 20000; /* Arbitrary, but some apps depend on it... */
}

/* javascript/closure/css/menuitem.css */
/*
 * Copyright 2009 The Closure Library Authors. All Rights Reserved.
 *
 * Use of this source code is governed by the Apache License, Version 2.0.
 * See the COPYING file for details.
 */

/*
 * Standard styling for menus created by goog.ui.MenuItemRenderer.
 *
 * @author attila@google.com (Attila Bodis)
 */


/**
 * State: resting.
 *
 * NOTE(mleibman,chrishenry):
 * The RTL support in Closure is provided via two mechanisms -- "rtl" CSS
 * classes and BiDi flipping done by the CSS compiler.  Closure supports RTL
 * with or without the use of the CSS compiler.  In order for them not
 * to conflict with each other, the "rtl" CSS classes need to have the @noflip
 * annotation.  The non-rtl counterparts should ideally have them as well, but,
 * since .goog-menuitem existed without .goog-menuitem-rtl for so long before
 * being added, there is a risk of people having templates where they are not
 * rendering the .goog-menuitem-rtl class when in RTL and instead rely solely
 * on the BiDi flipping by the CSS compiler.  That's why we're not adding the
 * @noflip to .goog-menuitem.
 */
.goog-menuitem {
  color: #000;
  font: normal 13px Arial, sans-serif;
  list-style: none;
  margin: 0;
  /* 28px on the left for icon or checkbox; 7em on the right for shortcut. */
  padding: 4px 7em 4px 28px;
  white-space: nowrap;
}

/* BiDi override for the resting state. */
/* @noflip */
.goog-menuitem.goog-menuitem-rtl {
  /* Flip left/right padding for BiDi. */
  padding-left: 7em;
  padding-right: 28px;
}

/* If a menu doesn't have checkable items or items with icons, remove padding. */
.goog-menu-nocheckbox .goog-menuitem,
.goog-menu-noicon .goog-menuitem {
  padding-left: 12px;
}

/*
 * If a menu doesn't have items with shortcuts, leave just enough room for
 * submenu arrows, if they are rendered.
 */
.goog-menu-noaccel .goog-menuitem {
  padding-right: 20px;
}

.goog-menuitem-content {
  color: #000;
  font: normal 13px Arial, sans-serif;
}

/* State: disabled. */
.goog-menuitem-disabled .goog-menuitem-accel,
.goog-menuitem-disabled .goog-menuitem-content {
  color: #ccc !important;
}
.goog-menuitem-disabled .goog-menuitem-icon {
  opacity: 0.3;
  -moz-opacity: 0.3;
  filter: alpha(opacity=30);
}

/* State: hover. */
.goog-menuitem-highlight,
.goog-menuitem-hover {
  background-color: #d6e9f8;
  /* Use an explicit top and bottom border so that the selection is visible
   * in high contrast mode. */
  border-color: #d6e9f8;
  border-style: dotted;
  border-width: 1px 0;
  padding-bottom: 3px;
  padding-top: 3px;
}

/* State: selected/checked. */
.goog-menuitem-checkbox,
.goog-menuitem-icon {
  background-repeat: no-repeat;
  height: 16px;
  left: 6px;
  position: absolute;
  right: auto;
  vertical-align: middle;
  width: 16px;
}

/* BiDi override for the selected/checked state. */
/* @noflip */
.goog-menuitem-rtl .goog-menuitem-checkbox,
.goog-menuitem-rtl .goog-menuitem-icon {
  /* Flip left/right positioning. */
  left: auto;
  right: 6px;
}

.goog-option-selected .goog-menuitem-checkbox,
.goog-option-selected .goog-menuitem-icon {
  /* Client apps may override the URL at which they serve the sprite. */
  background: url(//ssl.gstatic.com/editor/editortoolbar.png) no-repeat -512px 0;
}

/* Keyboard shortcut ("accelerator") style. */
.goog-menuitem-accel {
  color: #999;
  /* Keyboard shortcuts are untranslated; always left-to-right. */
  /* @noflip */ direction: ltr;
  left: auto;
  padding: 0 6px;
  position: absolute;
  right: 0;
  text-align: right;
}

/* BiDi override for shortcut style. */
/* @noflip */
.goog-menuitem-rtl .goog-menuitem-accel {
  /* Flip left/right positioning and text alignment. */
  left: 0;
  right: auto;
  text-align: left;
}

/* Mnemonic styles. */
.goog-menuitem-mnemonic-hint {
  text-decoration: underline;
}

.goog-menuitem-mnemonic-separator {
  color: #999;
  font-size: 12px;
  padding-left: 4px;
}

/* javascript/closure/css/popupdatepicker.css */
/*
 * Copyright 2009 The Closure Library Authors. All Rights Reserved.
 *
 * Use of this source code is governed by the Apache License, Version 2.0.
 * See the COPYING file for details.
 */

/*
 * Standard styling for a goog.ui.PopupDatePicker.
 *
 * @author arv@google.com (Erik Arvidsson)
 */

.goog-date-picker {
  position: absolute;
}


/* net/instaweb/apache/install/mod_pagespeed_example/mod_pagespeed_console.css */
/*
 * Copyright 2012 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * @fileoverview Styles for the mod_pagespeed console.
 *
 * @author sarahdw@google.com (Sarah Dapul-Weberman)
 * @author bvb@google.com (Ben VanBerkum)
 * @author joseantonio@google.com (Jose Antonio Martinez)
 */

@charset "UTF-8";

/*------------------------------------------------------------------
  eric meyer's reset
  ------------------------------------------------------------------*/
html,body,div,span,applet,object,iframe,
h1,h2,h3,h4,h5,h6,p,blockquote,pre,
a,abbr,acronym,address,big,cite,code,
del,dfn,em,font,img,ins,kbd,q,s,samp,
small,strike,strong,sub,sup,tt,var,
dl,dt,dd,ol,ul,li,
fieldset,form,label,legend,
table,caption,tbody,tfoot,thead,tr,th,td {
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}
body {
  line-height: 1;
  color: black;
  background: white;
}
ol,ul {
  list-style: none;
}
table {
  border-collapse: separate;
  border-spacing: 0;
}
caption,th,td {
  text-align: left;
  font-weight: normal;
}
blockquote:before,blockquote:after,
q:before,q:after {
  content: "";
}
blockquote,q {
  quotes: "" "";
}
input::-moz-focus-inner {
  border: 0;
}
input[type="text"], select {
  -moz-border-bottom-colors: none;
  -moz-border-image: none;
  -moz-border-left-colors: none;
  -moz-border-right-colors: none;
  -moz-border-top-colors: none;
  background-color: #FFFFFF;
  border-color: #C0C0C0 #D9D9D9 #D9D9D9;
  border-right: 1px solid #D9D9D9;
  border-style: solid;
  border-width: 1px;
  color: #333333;
  display: inline-block;
  height: 29px;
  line-height: 27px;
  padding-left: 8px;
  margin-top: 3px;
  vertical-align: top;
}

input.small[type="text"] {
  height: 20px;
  line-height: 27px;
}
/*------------------------------------------------------------------
@global Type
------------------------------------------------------------------*/
body,body input,body button,body td {
  font-family: "Arial", "Helvetica", sans-serif;
  color: #222;
  font-size:13px;
  -webkit-tap-highlight-color: rgba(0,0,0,0);
}
h1,h2,h3,h4,h5 {
  font-size: 16px;
  line-height:24px;
  font-weight: normal;
  color: #222;
}
li {
  line-height: 17px;
}
a {
  text-decoration: none;
  color: #15c;
  cursor: pointer;
}
a:visited {
  color: #61c;
}
a:hover {
  text-decoration: underline;
}
a:active {
  text-decoration: underline;
  color: #d14836;
}
a.secondary {
  text-decoration: none;
  color: #2D9AE3;
}
iframe {
  border: 0px;
}
strong, b {
  font-weight:bold;
}
em {
  font-style: italic;
}
.clearfix:before, .clearfix:after { content: "\0020"; display: block; height: 0; overflow: hidden; } /*i'm leaving these in case we end up needing them*/
.clearfix:after { clear: both; }
.clearfix { zoom: 1; }

/*------------------------------------------------------------------
mod rules
------------------------------------------------------------------*/

#mod-table {
  font-size:12px;
  padding: 0;
  margin: 0;
  width: 100%;
}
#mod-table th {
  font-weight: bold;
  font-size: 1.1em;
  letter-spacing: 2px;
  text-align: left;
  padding: 10px 0 10px 0;
}
#mod-table td {
  font-family: monospace;
  padding-bottom: 5px;
  padding-top: 5px;
  border-top-width: 1px;
  border-style: solid;
  border-color: #ebebea transparent;
}
#mod-table th.code, td.code {
  width: 100px;
  padding-left: 10px;
}
#mod-table td.code.info {
  color: green;
}
#mod-table td.code.warning {
  color: yellow;
}
#mod-table td.code.error {
  color: red;
}
#mod-table td.code.fatal {
  color: red;
  font-weight: bold;
}
#mod-table th.time, td.time {
  width: 220px;
}
#mod-table th.message, td.message {
  width: auto;
}
#mod-table th.pid, td.pid {
  width: 100px;
}
#mod-table td.pid {
  color: grey;
}
#mod-table tr {
  background-color: #fff;
  border-width: 20px;
  border-style: solid;
  border-color: #ebebea transparent;
}

#mod,.mod-container {
  background: #fff;
}
.mod-container .row {
  cursor:pointer;
}
#mod-wrap {
  height: 100%;
  overflow: auto;
  padding-bottom: 1px;
}
#mod-header {
  background: none repeat scroll 0 0 #F1F1F1;
}
.mod-appname {
  height: 70px;
  margin: 0 0 0 44px;
}

.mod-appname span {
  position: relative;
  top: 30px;
  font-size: 18px;
  line-height: 6px;
  font-weight: normal;
  color: #636363;
}

#mod-toolbar {
  background: none repeat scroll 0 0 #444444;
  height: 20px;
  padding: 4px 20px 0;
}
#mod-toolbar .title {
  color: #FFFFFF;
  display: inline-block;
  font-size: 14px;
  padding-top: 4px;
}
#mod-footer {
  background: none repeat scroll 0 0 #CCCCCC;
  height: 1%;
  margin-top: 20px;
  padding: 20px;
  text-align: left;
}
#mod-controlbar {
  height: 60px;
  padding: 0 0 0 20px;
}
#mod-error {
  display: none;
}
#mod-error, .mod-no-match {
  color: red;
  height: 20px;
  padding: 4px 20px 0;
  position: absolute;
  right: 0;
  top: 70px;
}
.mod-expandindicator {
  -moz-transition: all 0.218s ease 0s;
  /* images/disclosure_open_plus.png */
  background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3UlEQVQokZWSu27CQBBFj5fsYpo0NBSOUvFd1ERUKUiUAoSEAvQYGmjzU1SWlcYSdcxuzKRIvNhCAjLSSDNX8zj7CESEW+0OYDxfXe2YvD4FjGax5IVc9KN8y2gWiwIwqvCepBn9l3eSNPNaaaq26+Bo4QBoYL1sj40TM8Au2f9FGoAC47XuY7tSfHDMl5vakmq+XrxVipuayaAHQEscw/jD5+WZahhRp43VIVn6+cuJED1EGFV4ZlViWB1iXM5Xhdm4/Hyy1aEXup17ttNnaOqz2whE5OYXDP7zN34A2YV54u+vUUEAAAAASUVORK5CYII=") no-repeat scroll center center transparent;
  display: inline-block;
  height: 11px;
  width: 11px;
}
.mod-widgetbar {
  background: none repeat scroll 0 0 #F2F2F2;
  border-bottom: 1px solid #E5E5E5;
  border-top: 1px solid #E5E5E5;
  height: 29px;
  padding: 4px 0;
}
.mod-widgetbar ul {
  margin: 0 auto;
  padding: 0;
}
.mod-widgetbar li {
  border-right: 1px solid #CCCCCC;
  float: left;
  padding-left: 20px;
  padding-right: 20px;
}
.mod-widgetbar li a {
  cursor: pointer;
  line-height: 29px;
}
.mod-widgetbar li.last {
  border-right: medium none;
}
.mod-widgets {
  background-color: #FFFFFF;
  border: 1px solid #CCCCCC;
  box-shadow: 0 15px 10px -10px rgba(0, 0, 0, 0.5), 0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset;
  float: left;
  margin: 20px 0 0 20px;
  min-width: 500px;
}
.mod-widgets.errors {
  margin: 20px 0 10px 20px;
  min-width: 1022px;
  width: 90%;
}
.mod-widgets-topbar {
  background-color: #F2F2F2;
  border-bottom:1px solid #E5E5E5;
  height: 35px;
  width: 100%;
}
.mod-widgets-topbar .title {
  font-weight: bold;
  padding: 10px 0 4px 20px;
  width: 85%;
  float: left;
}
.mod-widgets-topbar .graphselector {
  -moz-transition: all 0.218s ease 0s;
  /* images/disclosure_arrow_dk_grey_down.png*/
  background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAECAYAAABCxiV9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAK0lEQVQIHWOMioo6w4ADMC1dutQEmxxInAkkga4Azv///z8DDIOsgLFBNADtMR402ENS7gAAAABJRU5ErkJggg==") no-repeat scroll center center transparent;
  border: 0;
  border-left: 1px solid #CCCCCC;
  cursor: pointer;
  height: 36px;
  width: 10px;
  float: right;
  margin-right: 2px;
  padding: 0 0 0 30px;
}

/* button classes*/
.mod-button {
  display: inline-block;
  /*min-width: 54px;*min-width:70px;/*hello,IE7!*/
  border:1px solid #DCDCDC;
  border: 1px solid rgba(0,0,0,0.1);
  text-align: center;
  color: #444;
  font-size: 11px;
  font-weight: bold;
  height: 27px;
  padding: 0 8px;
  line-height: 27px;
  -webkit-border-radius:2px;
  -moz-border-radius: 2px;
  border-radius: 2px;
  -webkit-transition: all 0.218s;
  -moz-transition: all 0.218s;
  -o-transition: all 0.218s;
  transition: all 0.218s;
  background-color: #f5f5f5;
  background-image: -webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#f1f1f1));
  background-image: -webkit-linear-gradient(top,#f5f5f5,#f1f1f1);
  background-image: -moz-linear-gradient(top,#f5f5f5,#f1f1f1);
  background-image: -ms-linear-gradient(top,#f5f5f5,#f1f1f1);
  background-image: -o-linear-gradient(top,#f5f5f5,#f1f1f1);
  background-image: linear-gradient(top,#f5f5f5,#f1f1f1);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f5f5f5',EndColorStr='#f1f1f1');
  -webkit-user-select:none;
  -moz-user-select:none;
  cursor:default;
}
.mod-button:hover, .mod-button.hover {
  border: 1px solid #C6C6C6;
  color: #222;
  -webkit-transition: all 0.0s;
  -moz-transition: all 0.0s;
  -o-transition: all 0.0s;
  transition: all 0.0s;
  background-color: #f8f8f8;
  background-image: -webkit-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f1f1f1));
  background-image: -webkit-linear-gradient(top,#f8f8f8,#f1f1f1);
  background-image: -moz-linear-gradient(top,#f8f8f8,#f1f1f1);
  background-image: -ms-linear-gradient(top,#f8f8f8,#f1f1f1);
  background-image: -o-linear-gradient(top,#f8f8f8,#f1f1f1);
  background-image: linear-gradient(top,#f8f8f8,#f1f1f1);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f8f8f8',EndColorStr='#f1f1f1');
  -webkit-box-shadow: 0px 1px 1px rgba(0,0,0,0.1);
  -moz-box-shadow: 0px 1px 1px rgba(0,0,0,0.1);
  box-shadow: 0px 1px 1px rgba(0,0,0,0.1);
  text-decoration:none;
}
.mod-button:active, .mod-button.active {
  background-color: #f6f6f6;
  background-image: -webkit-gradient(linear,left top,left bottom,from(#f6f6f6),to(#f1f1f1));
  background-image: -webkit-linear-gradient(top,#f6f6f6,#f1f1f1);
  background-image: -moz-linear-gradient(top,#f6f6f6,#f1f1f1);
  background-image: -ms-linear-gradient(top,#f6f6f6,#f1f1f1);
  background-image: -o-linear-gradient(top,#f6f6f6,#f1f1f1);
  background-image: linear-gradient(top,#f6f6f6,#f1f1f1);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f6f6f6',EndColorStr='#f1f1f1');
  -webkit-box-shadow: inset 0px 1px 2px rgba(0,0,0,0.1);
  -moz-box-shadow: inset 0px 1px 2px rgba(0,0,0,0.1);
  box-shadow: inset 0px 1px 2px rgba(0,0,0,0.1);
}
.mod-button.active{
  border: 1px solid #C6C6C6;
  color: #333;
}
.mod-button:visited {
  color: #666;
}
.mod-button.focus, .mod-button.right.focus, .mod-button.mid.focus, .mod-button.left.focus{
  outline: none;
  border: 1px solid #4d90fe;
  z-index:4 !important;
}
.mod-button.selected {
  background-color: #EEEEEE;
  background-image: -webkit-gradient(linear,left top,left bottom,from(#EEEEEE),to(#E0E0E0));
  background-image: -webkit-linear-gradient(top,#EEEEEE,#E0E0E0);
  background-image: -moz-linear-gradient(top,#EEEEEE,#E0E0E0);
  background-image: -ms-linear-gradient(top,#EEEEEE,#E0E0E0);
  background-image: -o-linear-gradient(top,#EEEEEE,#E0E0E0);
  background-image: linear-gradient(top,#EEEEEE,#E0E0E0);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#EEEEEE',EndColorStr='#E0E0E0');
  -webkit-box-shadow: inset 0px 1px 2px rgba(0,0,0,0.1);
  -moz-box-shadow: inset 0px 1px 2px rgba(0,0,0,0.1);
  box-shadow: inset 0px 1px 2px rgba(0,0,0,0.1);
  border: 1px solid #CCC;
  color: #333;
}
.mod-button input[type=checkbox] {
  position: relative;
  top: 3px;
}
.mod-button img {
  display: inline-block;
  margin: -3px 0 0;
  opacity: 0.55;
  *margin:4px 0 0; /*IE7*/
  /*  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; //IE CANNOT HANDLE OPACITY ON PNGS, SO WE ARE JUST GONNA REMOVE THESE FILTERS
filter: alpha(opacity=80);*/
  margin-left: 0px;
  margin-right: 0px;
  vertical-align: middle;
}
.mod-button.selected img {
  opacity: 0.9;
/*  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
filter: alpha(opacity=90);*/
}
.mod-button:hover img {
  opacity: 0.72;
/*  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
filter: alpha(opacity=90);*/
}
.mod-button:active img {
  opacity: 1.0;
/*  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
filter: alpha(opacity=100);*/
}
/* Disabled buttons */
.mod-button.disabled, .mod-button.disabled:hover, .mod-button.disabled:active {
  background: none;
  color: #b8b8b8;
  border: 1px solid #f3f3f3;
  border: 1px solid rgba(0,0,0,0.05);
  cursor: default;
  pointer-events: none;
}
.mod-button.disabled.active{
  -webkit-box-shadow: inset 0px 1px 2px rgba(0,0,0,0.1);
  -moz-box-shadow: inset 0px 1px 2px rgba(0,0,0,0.1);
  box-shadow: inset 0px 1px 2px rgba(0,0,0,0.1);
}
.mod-button-submit.disabled, .mod-button-submit.disabled:hover, .mod-button-submit.disabled:active,
.mod-button-share.disabled, .mod-button-share.disabled:hover, .mod-button-share.disabled:active,
.mod-button-action.disabled, .mod-button-action.disabled:hover, .mod-button-action.disabled:active {
  border: 1px solid #505050;
  background-color: #666;
  color: #FFF;
  opacity: 0.5;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
  filter: alpha(opacity=50);
}
.mod-button.disabled img {
  opacity: 0.5;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
  filter: alpha(opacity=50);
}
.mod-button.small {
  min-width: 34px;
  width: 34px;
  padding: 0;
}
#mod-datepicker {
  background-color:#fff;
}
.mod-datepicker {
  float:left;
  padding:10px;
}

