/*! gridster.js - v0.5.6 - 2014-09-25
* http://gridster.net/
* Copyright (c) 2014 ducksboard; Licensed MIT */

/* =============================================================================
   NORMALIZATION
========================================================================== */

/* *  {
  margin: 0;
  padding: 0;
} */

article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; }
[hidden] { display: none; }

ul, ol {
    list-style: none;
}

/* =============================================================================
   COMMONS
========================================================================== */

* { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; }

@font-face {
    font-family:'Glyphicons Halflings';
    src:url(../../fonts/glyphicons-halflings-regular.eot);
    src:url(../../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),
        url(../../fonts/glyphicons-halflings-regular.woff2) format('woff2'),
        url(../../fonts/glyphicons-halflings-regular.woff) format('woff'),
        url(../../fonts/glyphicons-halflings-regular.ttf) format('truetype'),
        url(../../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')
}

body {
    background-color: #ffffff;
    font-family: 'Helvetica Neue', Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    font-size: x-small;
    color: #666666;
}

.gridster {
    margin-top: 70px;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: auto;
    /*position:relative;*/
    padding: 10px;
    width: 99%;
}

.gridster > * {
    -webkit-transition: height .4s, width .4s;
    -moz-transition: height .4s, width .4s;
    -o-transition: height .4s, width .4s;
    -ms-transition: height .4s, width .4s;
    transition: height .4s, width .4s;
}

.gridster .gs-w {
    background: #FFF;
    cursor: pointer;
    //-webkit-box-shadow: 0 0 5px rgba(0,0,0,0.3);
    //box-shadow: 0 0 5px rgba(0,0,0,0.3);
    z-index: 2;
    position: absolute;
    min-width: 140px;
    min-height: 140px;
}

.ready .gs-w:not(.preview-holder) {
    -webkit-transition: opacity .3s, left .3s, top .3s;
    -moz-transition: opacity .3s, left .3s, top .3s;
    -o-transition: opacity .3s, left .3s, top .3s;
    transition: opacity .3s, left .3s, top .3s;
}

.ready .gs-w:not(.preview-holder),
.ready .resize-preview-holder {
    -webkit-transition: opacity .3s, left .3s, top .3s, width .3s, height .3s;
    -moz-transition: opacity .3s, left .3s, top .3s, width .3s, height .3s;
    -o-transition: opacity .3s, left .3s, top .3s, width .3s, height .3s;
    transition: opacity .3s, left .3s, top .3s, width .3s, height .3s;
}

.gridster .preview-holder {
    z-index: 1;
    position: absolute;
    background-color: #ccc;
    border-color: #fff;
    opacity: 0.3;
}

.gridster .player-revert {
    z-index: 10!important;
    -webkit-transition: left .3s, top .3s!important;
    -moz-transition: left .3s, top .3s!important;
    -o-transition: left .3s, top .3s!important;
    transition:  left .3s, top .3s!important;
}

.gridster .dragging,
.gridster .resizing {
    z-index: 10!important;
    -webkit-transition: all 0s !important;
    -moz-transition: all 0s !important;
    -o-transition: all 0s !important;
    transition: all 0s !important; 
}


.gs-resize-handle {
    position: absolute;
    z-index: 1;
}

.gs-resize-handle-both {
    width: 20px;
    height: 20px;
    bottom: -8px;
    right: -8px;
    background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg08IS0tIEdlbmVyYXRvcjogQWRvYmUgRmlyZXdvcmtzIENTNiwgRXhwb3J0IFNWRyBFeHRlbnNpb24gYnkgQWFyb24gQmVhbGwgKGh0dHA6Ly9maXJld29ya3MuYWJlYWxsLmNvbSkgLiBWZXJzaW9uOiAwLjYuMSAgLS0+DTwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DTxzdmcgaWQ9IlVudGl0bGVkLVBhZ2UlMjAxIiB2aWV3Qm94PSIwIDAgNiA2IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHZlcnNpb249IjEuMSINCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiDQl4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjZweCIgaGVpZ2h0PSI2cHgiDT4NCTxnIG9wYWNpdHk9IjAuMzAyIj4NCQk8cGF0aCBkPSJNIDYgNiBMIDAgNiBMIDAgNC4yIEwgNCA0LjIgTCA0LjIgNC4yIEwgNC4yIDAgTCA2IDAgTCA2IDYgTCA2IDYgWiIgZmlsbD0iIzAwMDAwMCIvPg0JPC9nPg08L3N2Zz4=');
    background-position: top left;
    background-repeat: no-repeat;
    cursor: se-resize;
    z-index: 20;
}

.gs-resize-handle-x {
    top: 0;
    bottom: 13px;
    right: -5px;
    width: 10px;
    cursor: e-resize;
}

.gs-resize-handle-y {
    left: 0;
    right: 13px;
    bottom: -5px;
    height: 10px;
    cursor: s-resize;
}

.gs-w:hover .gs-resize-handle,
.resizing .gs-resize-handle {
    opacity: 1;
}

.gs-resize-handle,
.gs-w.dragging .gs-resize-handle {
    opacity: 0;
}

.gs-resize-disabled .gs-resize-handle {
    display: none!important;
}

[data-max-sizex="1"] .gs-resize-handle-x,
[data-max-sizey="1"] .gs-resize-handle-y,
[data-max-sizey="1"][data-max-sizex="1"] .gs-resize-handle {
    display: none !important;
}

/* Uncomment this if you set helper : "clone" in draggable options */
/*.gridster .player {
  opacity:0;
}
*/

.gridster .player {
    -webkit-box-shadow: 3px 3px 5px rgba(0,0,0,0.3);
    box-shadow: 3px 3px 5px rgba(0,0,0,0.3);
}

.gs-w:hover .gs-header {
    opacity: .3;
    //filter: blur(5px);
}

.gs-header {
    color: #555555;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 30px;
    background-color: #eeeeee;
    opacity: 0;
    z-index: 20;
}

.gs-icon {
    display:inline-block;
    font-family:'Glyphicons Halflings';
    font-style:normal;
    font-weight:400;
    font-size: 18px;
    line-height:30px;
    -webkit-font-smoothing:antialiased;
    -moz-osx-font-smoothing:grayscale;
    padding-left: 2px;
    padding-right: 2px;
}

.gs-close-handle:before {
    content:"\e014"
}

.gs-close-handle {
    position: absolute;
    left: 0;
    width: 24px;
    height: 30px;
}

.gs-zoom-handle:before {
    content:"\e164"
}

.gs-zoom-handle {
    position: absolute;
    right: 0;
    width: 24px;
    height: 30px;
}


.overlay_fix {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 100000;
    opacity: 0;
    display: none;
}

.wrapper {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  width: 100%;
  height: 100%;
}

li iframe {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  width: 100%;
  height: 100%;
  border: 0px;
  overflow: hidden;
}

.tt-dropdown-menu {
  width: 355px;
  margin-top: 0px;
  background-color: #fff;
  height: 100%;
}

.typeahead {
  height: 60px;
}

.tt-dataset-widgets {
  width: 355px;
  margin-top: 0px;
  background-color: #fff;
  height: 100%;
}

.tt-input {
  position: absolute;
  top: 0px;
  width: 240px;
  height: 38px; 
  padding: 11px 12px;
  border: 2px solid #ccc;
  outline: none;
}

.tt-hint {
  position: absolute;
  top: 0px;
  width: 240px;
  height: 60px; 
  padding: 0px 12px;
  border: 2px solid #ccc;
  outline: none;
}

.tt-suggestions {
  width: 100%;
  height: 100%;
  background-color: #496274;
  display: block;
}

.tt-suggestion {
  clear: both;
  display: block;
  box-shadow: inset 0 1px #c6d0da;
  font-size: 18px;
  font-weight: bold;
  height: 60px;
  color: #fff;
  background-color: #496274;
  overflow: hidden;
  cursor: pointer;
}

.tt-suggestion > p {
  margin: 0px;
  padding: 0px 60px;
}

.tt-suggestion > p:hover,
.tt-suggestion > p:focus {
}

.tt-suggestion.tt-cursor {
  color: #496274;
  background-color: white;
}

.input-group span.twitter-typeahead {
  display: block !important;
}

.input-group span.twitter-typeahead .tt-dropdown-menu {
  top: 32px !important;
}

.input-group.input-group-lg span.twitter-typeahead .tt-dropdown-menu {
  top: 44px !important;
}

.input-group.input-group-sm span.twitter-typeahead .tt-dropdown-menu {
  top: 28px !important;
}

#the-basics {
  text-align: center;
}
