/* color definitions */
/* 16 column layout */
/* clearfix idiom */
/* common mixins */
/* page layout + top-level styles */
::selection {
  background-color: #0099cc;
  color: #fff; }
::-webkit-selection {
  background-color: #0099cc;
  color: #fff; }
::-moz-selection {
  background-color: #0099cc;
  color: #fff; }

html, body {
  height: 100%;
  margin: 0;
  padding: 0;
  background-color:#F9F9F9;
  -webkit-font-smoothing: antialiased;
  /* prevent subpixel antialiasing, which thickens the text */
  /* text-rendering: optimizeLegibility; */
  /* turned off ligatures due to bug 5945455 */ }

body {
  color: #222;
  font: 14px/19px Roboto, sans-serif;
  font-weight: 400;
  letter-spacing:.1;
  padding:0 10px; }

#page-container {
  width: 940px;
  margin: 0 40px; }

#page-header {
  height: 80px;
  margin-bottom: 20px;
  font-size: 48px;
  line-height: 48px;
  font-weight: 100;
  padding-left: 10px; }
  #page-header a {
    display: block;
    position: relative;
    top: 20px;
    text-decoration: none;
    color: #555555 !important; }

#main-row {
  display: inline-block; }
  #main-row:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden; }
  * html #main-row {
    height: 1px; }

#page-footer {
  margin-left: 190px;
  margin-top: 80px;
  color: #999999;
  padding-bottom: 40px;
  font-size: 12px;
  line-height: 15px; }
  #page-footer a {
    color: #777777; }
  #page-footer #copyright {
    margin-bottom: 10px; }

#nav-container {
  width: 160px;
  min-height: 10px;
  margin-right: 20px;
  float: left; }

#nav {
  margin:0;
  padding:0 0 30px;
}

#side-nav {
  min-height:5px; /* silly way to avoid doc floating left when nav goes fixed */
  margin-bottom:1px;
}
#devdoc-nav {
  outline:none;
  width:auto;
  margin: 20px 0 0; }
  
#devdoc-nav h2 {
  border:0;
}

#devdoc-nav.fixed {
  position: fixed;
  margin:0;
  top: 20px; }
  
#devdoc-nav span.small {
  font-size:12px;
  font-weight:normal;
}

#content {
  width: 760px;
  float: left; }

a:hover,
acronym:hover {
  color: #7aa1b0 !important; }

a:focus,
a:active {
  color: #33b5e5 !important; }
  
a.external-link {
  background:url('../images/styles/open_new_page.png') no-repeat 100% 50%;
  padding-right:16px;
}

img {
  border: none; }
#jd-content img {
  margin-bottom:15px;
}

ul {
  margin: 0;
  padding: 0; }

strong {
  font-weight: 500; }

em {
  font-style: italic; }

acronym,
.tooltip-link {
  border-bottom: 1px dotted #555555;
  cursor: help; }

acronym:hover,
.tooltip-link:hover {
  color: #7aa1b0;
  border-bottom-color: #7aa1b0; }

img.with-shadow,
video.with-shadow {
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25); }

/* disclosures mixin */
/* content layout */
.layout-content-row {
  display: inline-block;
  margin-bottom: 10px; }
  .layout-content-row:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden; }
  * html .layout-content-row {
    height: 1px; }

.layout-content-col {
  float: left;
  margin-left: 20px; }
  .layout-content-col:first-child {
    margin-left: 0; }
  .layout-content-col h3,
  .layout-content-col h4 {
    margin-top:0; }

.layout-content-col.span-1 {
  width: 40px; }

.layout-content-col.span-2 {
  width: 100px; }

.layout-content-col.span-3 {
  width: 160px; }

.layout-content-col.span-4 {
  width: 220px; }

.layout-content-col.span-5 {
  width: 280px; }

.layout-content-col.span-6 {
  width: 340px; }

.layout-content-col.span-7 {
  width: 400px; }

.layout-content-col.span-8 {
  width: 460px; }

.layout-content-col.span-9 {
  width: 520px; }

.layout-content-col.span-10 {
  width: 580px; }

.layout-content-col.span-11 {
  width: 640px; }

.layout-content-col.span-12 {
  width: 700px; }

.layout-content-col.span-13 {
  width: 760px; }

.vspace.size-1 {
  height: 10px; }

.vspace.size-2 {
  height: 20px; }

.vspace.size-3 {
  height: 30px; }

.vspace.size-4 {
  height: 40px; }

.vspace.size-5 {
  height: 50px; }

.vspace.size-6 {
  height: 60px; }

.vspace.size-7 {
  height: 70px; }

.vspace.size-8 {
  height: 80px; }

.vspace.size-9 {
  height: 90px; }

.vspace.size-10 {
  height: 100px; }

.vspace.size-11 {
  height: 110px; }

.vspace.size-12 {
  height: 120px; }

.vspace.size-13 {
  height: 130px; }

.vspace.size-14 {
  height: 140px; }

.vspace.size-15 {
  height: 150px; }

.vspace.size-16 {
  height: 160px; }

/* nav */
#nav {
  /* section header divs */
  /* expanded section header divs */
  /* sublinks */ }
  #nav li {
    list-style-type: none;
    font-size: 14px;
    margin:0;
    padding:0;
    line-height: 15px; }
  #nav a {
    color: #555555;
    text-decoration: none;
    word-wrap:break-word; }
  #nav .nav-section-header {
    position: relative;
    margin-bottom: 1px;
    padding: 0 30px 0 0; }
  #nav li.selected a, #nav li.selected > .nav-section-header > a {
    color: #09C;
  }
  #nav li.selected ul li a {
  /* don't highlight child items */
    color: #555555; }
  #nav .nav-section .nav-section .nav-section-header {
    /* no white line between second level sections */
    margin-bottom: 0; }
    /* section header links */
    #nav > li > div > a {
      display: block;
      color: #333333;
      font-weight: 500;
      padding: 10px 0 10px 10px; }
    #nav .nav-section-header:after {
      content: '';
      background: transparent url(../images/styles/disclosure_down.png) no-repeat scroll 50% 50%;
      width: 34px;
      height: 34px;
      display: block;
      position: absolute;
      top: 0;
      right: 0; }
    #nav .nav-section-header.empty:after {
      display: none; }
    /* nested nav headers */
    #nav .nav-section .nav-section {
      position: relative;
      padding: 0;
      margin: 0; }
    #nav .nav-section li a {
    /* first gen child (2nd level li) */
      display:block;
      font-weight: normal;
      text-transform: none;
      padding: 7px 5px 7px 10px;
       }
    #nav .nav-section li li a {
    /* second gen child (3rd level li) */
      padding: 5px 5px 5px 10px;
       }
  #nav li.expanded .nav-section-header {
    background:#e9e9e9;
    background: rgba(0, 0, 0, 0.05); }
  #nav li.expanded li .nav-section-header {
    background: transparent; }
  #nav li.expanded li ul {
  /* 3rd level ul */
    padding:0 0 0 10px;
  }
    #nav li.expanded > .nav-section-header:after {
      content: '';
      background: transparent url(../images/styles/disclosure_up.png) no-repeat scroll 50% 50%;
      width: 34px;
      height: 34px; }
  #nav li.expanded li ul.tree-list-children {
    padding:0;  
  }
  #nav li.expanded li ul.tree-list-children .tree-list-children {
    padding:0 0 0 10px;  
  }
  #nav li span.tree-list-subtitle {
    display:inline-block;
    padding:5px 0 0 10px;
    color:#555;
    text-transform:uppercase;
    font-size:12px;
  }
  #nav li span.tree-list-subtitle:before {
    content: '—';
  }
  #nav li span.tree-list-subtitle:after {
    content: '—';
  }
  #nav li ul {
    display:none;
    overflow: hidden;
    margin: 0; }
    #nav li ul.animate-height-in {
      -webkit-transition: height 0.25s ease-in;
      -moz-transition: height 0.25s ease-in;
      transition: height 0.25s ease-in; }
    #nav li ul.animate-height-out {
      -webkit-transition: height 0.25s ease-out;
      -moz-transition: height 0.25s ease-out;
      transition: height 0.25s ease-out; }
    #nav li ul li {
      padding: 0; }
      #nav li li li {
        padding: 0; }
  #nav li.expanded ul {
    }
    #nav li ul > li {
      padding:0;
    }
    #nav li ul > li:last-child {
      padding-bottom:5px;
    }
    #nav li ul.tree-list-children > li:last-child {
      padding-bottom:0;
    }
    #nav li.expanded ul > li {
      background:#efefef;
      background: rgba(0, 0, 0, 0.03); }
    #nav li.expanded ul > li li {
      background:inherit; }
  #nav li ul.tree-list-children ul {
    display:block; }

.new,
.new-child {
  font-size: .78em;
  font-weight: bold;
  color: #ff3d3d;
  vertical-align:top;
  white-space:nowrap;
}

/* content header */
.content-header {
  height: 30px;
  margin:20px 0 25px;
  padding:0 0 10px;}
.content-header.just-links {
  margin-bottom:0;
  padding-bottom:0;}
    
.content-header h1 {
  color:#000;
  margin:0;
  border-bottom:0;
  padding:0;
}

.content-footer {
  border-top: 1px solid #ccc;
  margin-top: 10px;
  padding-top:10px;
  height: 30px; }

.content-footer .col-9 {
  margin-left:0;
}
.content-footer .col-4 {
  margin-right:0;
}
.content-footer.wrap {
  width:940px;
}

.paging-links {
  position: relative; }
  .paging-links a {
    position: absolute; }
  .paging-links a,
  .training-nav-top a {
    font-size: 14px;
    line-height: 30px;
    color: #555555;
    text-decoration: none;
    text-transform: uppercase; }
    .paging-links .prev-page-link:before,
    .training-nav-top .prev-page-link:before {
      content: '';
      background: transparent url(../images/styles/disclosure_left.png) no-repeat scroll 50% 50%;
      width: 10px;
      height: 10px;
      display: inline-block;
      margin-right: 5px; }
    .training-nav-top .next-page-link,
    .training-nav-top .start-class-link,
    .training-nav-top .start-course-link {
    right: 10px; }
    .paging-links .prev-page-link {
      left: -15px; }
    .paging-links .next-page-link {
      right: 0px; }
    .next-page-link:after,
    .start-class-link:after,
    .start-course-link:after,
    .next-class-link:after {
      content: '';
      background: transparent url(../images/styles/disclosure_right.png) no-repeat scroll 50% 50%;
      width: 10px;
      height: 10px;
      display: inline-block;
      margin-left: 5px; }
      
      
  .training-nav-top a {
    display:block;
    float:left;
    width:122px;
    height:28px;
    padding: 8px;
    line-height:28px;
    text-align:center;
    border:1px solid #DADADA;
    border-bottom:0;
  }

  .training-nav-top a.next-page-link {
    border-left:0;
    width:123px;
  }
      
  .paging-links a.disabled,
  .training-nav-top a.disabled,
  .content-footer a.disabled {
    color:#bbb;
  }
      
  .paging-links a.disabled:hover,
  .training-nav-top a.disabled:hover,
  .content-footer a.disabled:hover {
    cursor:default;
    color:#bbb !important;
  }
      
  .training-nav-top a.start-class-link,
  .training-nav-top a.start-course-link {
    width:262px;
  }
  
  /* list of classes on course landing page */
  ol.class-list {
    list-style:none;
    margin-left:0;
  }
  ol.class-list>li {
    margin:0 0 15px;
    padding:5px 0 0;
    overflow:hidden;
    border-top:1px solid #ccc;
  }
  ol.class-list li a.title {
    font-size:16px;
    margin:0;
    clear:left;
    display:block;
    height:32px;
    padding:0 4px;
  }
  ol.class-list li a.title h2 {
    color:inherit;
    margin:0 0 10px;
    display:block;
    float:left;
    width:675px;
  }
  ol.class-list li a.title span {
    display:none;
    float:left;
    font-size:18px;
    font-weight:bold;
    background: transparent url(../images/styles/disclosure_right.png) no-repeat scroll 50% 50%;
    width: 10px;
    height: 32px;
  }
  ol.class-list li a.title:hover {
    background:#ddd;
    color:#258AAF !important;
  }
  ol.class-list li a.title:hover span {
    display:block;
  }
  
  #jd-content
  ol.class-list li img {
    float:left;
    clear:left;
    width:64px;
    margin:0 20px 0 0;
  }
  ol.class-list li p.description {
    float:left;
    display:block;
    width:250px;
    margin:0;
  }
  ol.class-list li p.description.article {
    width: 550px;
  }
  ol.class-list ol {
    float:left;
    width:320px;
    margin:0 0 0 30px;
    list-style:none;
    margin:0 0 0 20px;
  }
  ol.class-list div.lessons li {
    margin:0 0 6px;
    line-height:16px;
  }
  
  
  .hide {
    display:none !important;
  }
  
  .content-footer.next-class {
    display:block;
    border:0;
    margin-top:0;
    padding-top:0;
  }
  
  .content-footer.next-class a.next-class-link {
    display:block;
    float:right;
    text-transform:uppercase;
  }
  
  
  
  /* inner-doc tabs w/ title */
  
div#title-tabs-wrapper {
  border-bottom:1px solid #ccc;
  margin:20px 0 30px;
}
h1.with-title-tabs {
  display:inline-block;
  margin:0 0 -1px 0;
  padding:0 60px 0 0;
  border-bottom:1px solid #F9F9F9;
}
ul#title-tabs {
  list-style:none;
  padding:0;
  height:29px;
  margin:0;
  font-size:16px;
  line-height:26px;
  display:inline-block;
  vertical-align:bottom;
}
ul#title-tabs li {
  display:block;
  float:left;
  margin-right:40px;
  border-bottom: 3px solid transparent;
}
ul#title-tabs li.selected {
  border-bottom: 3px solid #93C;
}
ul#title-tabs li a {
  color:#333;
}
ul#title-tabs li a:hover,
ul#title-tabs li a:active {
  color:#93C !important;
}



/* content body */
@-webkit-keyframes glowheader {
  from {
    background-color: #33b5e5;
    color: #000;
    border-bottom-color: #000; }

  to {
    background-color: transparent;
    color: #33b5e5;
    border-bottom-color: #33b5e5; } }

@-moz-keyframes glowheader {
  from {
    background-color: #33b5e5;
    color: #000;
    border-bottom-color: #000; }

  to {
    background-color: transparent;
    color: #33b5e5;
    border-bottom-color: #33b5e5; } }

@keyframes glowheader {
  from {
    background-color: #33b5e5;
    color: #000;
    border-bottom-color: #000; }

  to {
    background-color: transparent;
    color: #33b5e5;
    border-bottom-color: #33b5e5; } }

h2:target,
h3:target {
    -webkit-animation-name: glowheader;
    -moz-animation-name: glowheader;
    animation-name: glowheader;
    -webkit-animation-duration: 0.7s;
    -moz-animation-duration: 0.7s;
    animation-duration: 0.7s;
    -webkit-animation-timing-function: ease-out;
    -moz-animation-timing-function: ease-out;
    animation-timing-function: ease-out; }

.design ol h4 {
  margin-bottom:0;
}
.design ol {
  counter-reset: item; }
  .design ol>li {
    font-size: 14px;
    line-height: 20px;
    list-style-type: none;
    position: relative; }
    .design ol>li:before {
      content: counter(item) ". ";
      counter-increment: item;
      position: absolute;
      left: -20px;
      top: 0; }
    .design ol li.value-1:before {
      content: "1. "; }
    .design ol li.value-2:before {
      content: "2. "; }
    .design ol li.value-3:before {
      content: "3. "; }
    .design ol li.value-4:before {
      content: "4. "; }
    .design ol li.value-5:before {
      content: "5. "; }
    .design ol li.value-6:before {
      content: "6. "; }
    .design ol li.value-7:before {
      content: "7. "; }
    .design ol li.value-8:before {
      content: "8. "; }
    .design ol li.value-9:before {
      content: "9. "; }
    .design ol li.value-10:before {
      content: "10. "; }
.design .with-callouts ol>li {
  list-style-position: inside;
  margin-left: 0; }
  .design .with-callouts ol>li:before {
    display: inline;
    left: -20px;
    float: left;
    width: 17px;
    color: #33b5e5;
    font-weight: 500; }
.design .with-callouts ul>li {
  list-style-position: outside; }

/* special list items */
li.no-bullet {
  list-style-type: none !important; }
li.no-bullet *{
  margin:0; }

.design li.with-icon {
  position: relative;
  margin-left: 20px;
  min-height: 30px; }
  .design li.with-icon p {
    margin-left: 0 !important; }
  .design li.with-icon:before {
    position: absolute;
    left: -40px;
    top: 0;
    content: '';
    width: 30px;
    height: 30px; }
  .design li.with-icon.tablet:before {
    background-image: url(../images/styles/ico_phone_tablet.png); }
  .design li.with-icon.web:before {
    background-image: url(../images/styles/ico_web.png); }
  .design li.with-icon.action:before {
    background-image: url(../images/styles/ico_action.png); }
  .design li.with-icon.use:before {
    background-image: url(../images/styles/ico_use.png); }

/* figures and callouts */
.figure {
  position: relative; }
  .figure.pad-below {
    margin-bottom: 20px; }
  .figure .figure-callout {
    position: absolute;
    color: #fff;
    font-weight: 500;
    font-size: 16px;
    line-height: 23px;
    text-align: center;
    background: transparent url(../images/styles/callout.png) no-repeat scroll 50% 50%;
    padding-right: 2px;
    width: 30px;
    height: 29px;
    z-index: 1000; }
    .figure .figure-callout.top {
      top: -9px; }
    .figure .figure-callout.right {
      right: -5px; }

.figure-caption {
  margin: 0 10px 20px 0;
  font-size: 14px;
  line-height: 20px;
  font-style: italic; }

/* rows of figures */
.figure-row {
  font-size: 0;
  line-height: 0;
  /* to prevent space between figures */ }
  .figure-row .figure {
    display: inline-block;
    vertical-align: top; }
  .figure-row .figure + .figure {
    margin-left: 10px;
    /* reintroduce space between figures */ }

/* video  containers */
.framed-galaxynexus-land-span-13 {
  background: transparent url(../images/styles/device_galaxynexus_blank_land_span13.png) no-repeat
scroll top left;
  padding: 42px 122px 62px 126px;
  overflow: hidden; }
  .framed-galaxynexus-land-span-13, .framed-galaxynexus-land-span-13 video,
.framed-galaxynexus-land-span-13 img {
    width: 512px;
    height: 286px; }


.framed-galaxynexus-land-span-8{
  background: transparent url(../images/styles/device_galaxynexus_blank_land_span8.png) no-repeat
scroll top left;
  padding: 26px 68px 38px 72px;
  overflow: hidden; }
  .framed-galaxynexus-land-span-8, .framed-galaxynexus-land-span-8 video,
.framed-galaxynexus-land-span-8 img {
    width: 320px;
    height: 180px; }

.framed-galaxynexus-port-span-9 {
  background: transparent url(../images/styles/device_galaxynexus_blank_port_span9.png) no-repeat
scroll top left;
  padding: 95px 122px 107px 124px;
  overflow: hidden; }
  .framed-galaxynexus-port-span-9, .framed-galaxynexus-port-span-9 video,
.framed-galaxynexus-port-span-9 img {
    width: 274px;
    height: 488px; }

.framed-galaxynexus-port-span-5 {
  background: transparent url(../images/styles/device_galaxynexus_blank_port_span5.png) no-repeat
scroll top left;
  padding: 75px 31px 76px 33px;
  overflow: hidden; }
  .framed-galaxynexus-port-span-5, .framed-galaxynexus-port-span-5 video,
.framed-galaxynexus-port-span-5 img {
    width: 216px;
    height: 384px; }

/* landing page disclosures */
.landing-page-link {
  text-decoration: none;
  font-weight: 500;
  color: #333333; }
  .landing-page-link:after {
    content: '';
    background: transparent url(../images/styles/disclosure_right.png) no-repeat scroll 50% 50%;
    width: 10px;
    height: 10px;
    display: inline-block;
    margin-left: 5px; }

/* tooltips */
.tooltip-box {
  position: absolute;
  background-color: rgba(0, 0, 0, 0.9);
  border-radius: 2px;
  font-size: 14px;
  line-height: 20px;
  color: #fff;
  padding: 6px 10px;
  max-width: 250px;
  z-index: 10000; }
  .tooltip-box.below:after {
    position: absolute;
    content: '';
    line-height: 0;
    display: block;
    top: -10px;
    left: 5px;
    border: 5px solid transparent;
    border-bottom-color: rgba(0, 0, 0, 0.9); }

/* video note */
.video-instructions {
  margin-top: 10px;
  margin-bottom: 10px; }
  .video-instructions:before {
    content: '';
    background: transparent url(../images/styles/ico_movie_inline.png) no-repeat scroll top left;
    display: inline-block;
    width: 12px;
    height: 12px;
    margin-right: 8px; }
  .video-instructions:after {
    content: 'Click device screen to replay movie.'; }

/* download buttons */
.download-button {
  display: block;
  margin-bottom: 5px;
  text-decoration: none;
  background-color: #33b5e5;
  color: #fff !important;
  font-weight: 500;
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.12);
  padding: 6px 12px;
  border-radius: 2px; }
  .download-button:hover, .download-button:focus {
    background-color: #0099cc;
    color: #fff !important; }
  .download-button:active {
    background-color: #006699; }

/* UI tables and other things found in Writing style and Settings pattern */
.ui-table {
  width: 100%;
  background-color: #282828;
  color: #fff;
  border-radius: 2px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25);
  border-collapse: separate; }
  .ui-table th,
  .ui-table td {
    padding: 5px 10px;
    background-color: inherit; 
    border:0;}
  .ui-table thead th {
    font-weight: bold; }
  .ui-table tfoot td {
    border-top: 1px solid #494949;
    border-right: 1px solid #494949;
    text-align: center; }
    .ui-table tfoot td:last-child {
      border-right: 0; }

.layout-with-list-item-margins {
  margin-left: 30px !important; }

.emulate-content-left-padding {
  margin-left: 10px; }

.do-dont-label {
  margin-bottom: 10px;
  padding-left: 20px;
  background: transparent none no-repeat scroll 0px 3px; }
  .do-dont-label.bad {
    background-image: url(../images/styles/ico_wrong.png); }
  .do-dont-label.good {
    background-image: url(../images/styles/ico_good.png); }
    


















/***** PREVIOUSLY style.css ******************/





@media screen, projection, print {
[dir='rtl'] {
    direction: rtl;
}
html {
    line-height: 20px;
}
pre, table, input, textarea, code {
    font-size: 1em;
}
address, abbr, cite {
    font-style: normal;
}
[dir='rtl'] th {
    text-align: right;
}
html[lang^=ja] blockquote, html[lang^=ja] q, html[lang^=ko] blockquote, html[lang^=ko] q,
html[lang^=zh] blockquote, html[lang^=zh] q {
    font-style: normal;
}
q {
    font-style: italic;
}
fieldset, iframe, img {
    border: 0;
}
img { 
  -ms-interpolation-mode: bicubic;
  vertical-align: middle;
  max-width: 100%;
}
q {
    quotes: none;
}
sup, sub {
    font-size: 11px;
    line-height: 0;
}
}

@media screen, projection {

table, fieldset {
    margin: 0;
}
h1 {
    color:#333;
    font-size: 22px;
    margin: 20px 0 20px;
    padding:0 0 10px;
}
h1, h2 {
    line-height: 32px;
}
h1.short {
  margin-right:320px;
}
h1.short {
  margin-right:320px;
}
h1.super {
    font-size: 37px;  
}
h2 {
    color:#333;
    font-size: 20px;
    margin: 20px 0 20px;
    padding:0;
}
h3 {
    color:#333;
    font-size: 18px;
}
h3, h4 {
    color:#333;
    line-height: 20px;
    margin: 10px 0;
}
h4 {
  font-size: 16px;
}
h5 {
  font-size: 14px;  
}
h5, h6 {
  margin: 5px 0;
}
h6 {
  font-size: 12px;  
}
hr { /* applied to the bottom of h2 elements */
  height: 1px;
  margin: 5px 0 20px;
  border: 0;
  background: #ccc;
}
p, pre, table, form {
    margin: 0 0 15px;
}
small {
  font-size: 11.5px;
  color: #000;
}
ul, ol {
    margin: 0 0 15px 18px;
    padding: 0;
}
[dir='rtl'] ul, [dir='rtl'] ol {
    margin: 10px 30px 10px 10px;
}
ul ul, ul ol, ol ul, ol ol {
    margin-bottom: 0;
    margin-top: 0;
}
li {
  margin:0 0 5px;
}
dd {
  margin:0 0 10px 30px;
}
dd p,
dd pre,
dd ul,
dd ol,
dd dl {
  margin:10px 0 0;
}
li p,
li pre,
li ul,
li ol,
li dl {
  margin-top:5px;
  margin-bottom:5px;
}
pre strong, pre b, a strong, a b, a code {
    color: inherit;
}
pre, code {
    color: #060;
    font: 13px/1.5 monospace;
}
code {
    font-weight:bold;
    font: 13px/14px monospace;
}

legend {
    display: none;
}
a:link, a:visited {
  color: #258aaf;
  text-decoration: none;
}
a:focus, a:hover, a:active {
  color: #33B5E5;
  text-decoration: none;
}
strong, b {
  font-weight:bold;
  color: #222;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
  border:0;
  margin: .5em 1em 1em 0;
  width:100%; /* consistent table widths; within IE's quirks */
  background-color:#f7f7f7;
}
th, td {
  padding: 4px 12px;
  vertical-align: top;
  text-align: left;
}
td {
  background-color:inherit;
  border:solid 1px #DDD;
}
td *:last-child {
  margin-bottom:0;
}
th {
  background-color: #999;
  color: #fff;
  border:solid 1px #DDD;
  font-weight: normal;
}
tr:first-of-type th:first-of-type:empty {
    visibility: hidden;
}

/* opcodes table */

table.instruc td:first-child {
    width: 12%;
}

table.instruc td:first-child + td {
    width: 23%;
}

table.instruc td:first-child + td + td {
    width: 28%;
}

table.instruc td:first-child + td + td + td {
    width: 37%;
}

/* supplemental opcode format table */

table.supplement td:first-child {
    width: 20%;
}

table.supplement td:first-child + td {
    width: 20%;
}

table.supplement td:first-child + td + td {
    width: 60%;
}

/* math details table */

table.math td:first-child {
    width: 10%;
}

table.math td:first-child + td {
    width: 30%;
}

table.math td:first-child + td + td {
    width: 60%;
}

/* --------------------------------------------------------------------------
Footer
*/
.line {
    clear: both;
    background: #acbc00;
    background: -moz-linear-gradient(top, #acbc00 0, #acbc00 50%, #bdde00 50%, #bdde00 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #acbc00),
color-stop(50%, #acbc00), color-stop(50%, #bdde00), color-stop(100%, #bdde00));
    background: -webkit-linear-gradient(top, #acbc00 0, #acbc00 50%, #bdde00 50%, #bdde00 100%);
    background: -o-linear-gradient(top, #acbc00 0, #acbc00 50%, #bdde00 50%, #bdde00 100%);
    background: -ms-linear-gradient(top, #acbc00 0, #acbc00 50%, #bdde00 50%, #bdde00 100%);
    background: linear-gradient(top, #acbc00 0, #acbc00 50%, #bdde00 50%, #bdde00 100%);
    height: 2px;
    margin-top: 150px;
    position: relative;
    z-index: 11;
}
#footer {
    font-size:11px;
    clear: both;
    color: #999;
    padding: 15px 0;
    margin-top:10px;
    width:auto;
}
#footer-local ul {
  list-style: none;
  margin: 5px 0 30px 0;
}
#footer-local li {
    display: inline;
}
#footer-local li+li:before {
    content: '|';
    padding: 0 3px;
  color: #e5e5e5;
}
#footer-global {
    padding: 10px 15px;
  background: #f5f5f5;
}
#footer-global {
    border-top: 1px solid #ebebeb;
    font-size: 11.5px;
    line-height: 1.8;
    list-style: none;
}
#footer-global ul {
    margin: 0;
}
#footer-global li {
    display: inline;
    font-weight: bold;
}
#footer-global li+li:before {
    content: '¬?';
    padding: 0 3px;
}
* html #footer-global li {
    margin: 0 13px 0 0;
}
* [dir='rtl'] #footer-global li {
    margin: 0 0 0 13px;
}
*+html #footer-global li {
    margin: 0 13px 0 0;
}
*+[dir='rtl'] #footer-global li {
    margin: 0 0 0 13px;
}
#footer-global li a {
    font-weight: normal;
}
.locales {
  margin: 10px 0 0 0px;
}
[dir='rtl'] .locales {
    background-position: right center;
    float: left;
    padding: 0 24px 0 0;
}
.locales form {
    margin: 0;  
}
.locales select, .sites select {
  line-height: 3.08;
  margin: 0px 0;
  border: solid 1px #EBEBEB;
  -webkit-appearance: none;
  background: white url('../images/arrows-up-down.png') right center no-repeat;
  height: 30px;
  color: #222;
  line-height: normal;
  padding: 5px;
  width: 230px;
}
}

/* =============================================================================
   Print Only
   ========================================================================== */
@media print {
  /* configure printed page */
  @page {
      margin: 0.75in 1in;
      widows: 4;
      orphans: 4;
  }

  /* reset spacing metrics */
  html, body, .wrap {
      margin: 0 !important;
      padding: 0 !important;
      width: auto !important;
  }

  /* leave enough space on the left for bullets */
  body {
      padding-left: 20px !important;
  }
  #doc-col {
      margin-left: 0;
  }

  /* hide a bunch of non-content elements */
  #header, #footer, #nav-x, #side-nav,
  .training-nav-top, .training-nav-bottom,
  #doc-col .content-footer,
  .nav-x, .nav-y,
  .paging-links,
  a.totop {
      display: none !important;
  }

  /* remove extra space above page titles */
  #doc-col .content-header {
      margin-top: 0;
  }

  /* bump up spacing above subheadings */
  h2 {
      margin-top: 40px !important;
  }

  /* print link URLs where possible and give links default text color */
  p a:after {
      content: " (" attr(href) ")";
      font-size: 80%;
  }
  p a {
      word-wrap: break-word;
  }
  a {
      color: inherit;
  }

  /* syntax highlighting rules */
  .str { color: #060; }
  .kwd { color: #006; font-weight: bold; }
  .com { color: #600; font-style: italic; }
  .typ { color: #404; font-weight: bold; }
  .lit { color: #044; }
  .pun { color: #440; }
  .pln { color: #000; }
  .tag { color: #006; font-weight: bold; }
  .atn { color: #404; }
  .atv { color: #060; }
}

/* =============================================================================
   Columns
   ========================================================================== */

@media screen, projection, print {
.full {
  padding: 2.5em 0;
  border-top: solid 1px #ddd;
  border-bottom: solid 1px #ddd;
  background: #f7f7f7;  
}
.wrap {
  margin: 0 auto;
  width: 940px;
  clear: both;
}
.cols {
    height: 1%;
    margin: 0 -1.533742331288343558282%;
    width: 103.06748466257669%}
*+html .cols {
    margin-bottom: 20px;
}
.cols:after {
    clear: both;
    content: ' ';
    display: block;
    height: 0;
    visibility: hidden;
}
.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12,
.col-13, .col-14, .col-15, .col-16 {
    display: inline;
  float: left;
  margin-left: 10px;
  margin-right: 10px;
}
/*
* html .col-1, * html .col-2, * html .col-3, * html .col-4, * html .col-5, * html .col-6, * html
.col-7, * html .col-8, * html .col-9, * html .col-10, * html .col-11, * html .col-12  {
    margin: 0;
    padding: 0 1.4% 20px;
}
[dir='rtl'] .col-1, [dir='rtl'] .col-2, [dir='rtl'] .col-3, [dir='rtl'] .col-4, [dir='rtl'] .col-5,
[dir='rtl'] .col-6, [dir='rtl'] .col-7, [dir='rtl'] .col-8, [dir='rtl'] .col-9, [dir='rtl'] .col-10,
[dir='rtl'] .col-11, [dir='rtl'] .col-12 {
    float: right;
}
*/
.col-1 { width: 40px }
.col-2 { width: 100px }
.col-3 { width: 160px }
.col-4 { width: 220px }
.col-5 { width: 280px }
.col-6 { width: 340px }
.col-7 { width: 400px }
.col-8 { width: 460px }
.col-9 { width: 520px }
.col-10 { width: 580px }
.col-11 { width: 640px }
.col-12 { width: 700px }
.col-13 { width: 760px }
.col-14 { width: 820px }
.col-15 { width: 880px }
.col-16 { width: 940px }
}

.col-right {
  margin-right:0px;
}

@media screen and (max-width:772px) {
.col-5, .col-6, .col-7 {
    clear: both;
    width: 97.0238096%}
}

/* =============================================================================
   Layout
   ========================================================================== */
@media screen, projection, print {

/* --------------------------------------------------------------------------
Header, Login, Nav-X, Search
*/
#header {
  padding: 2.2em 0 0.2em 0;
}
#header:before, #header:after {
  content: "";
  display: table;
  clear: both
}
.logo, .nav-x {
    float: left;
}
.nav-x {
    margin-top: -2px;
  list-style-type: none;
}
.nav-x a {
    color: #333;
    font-size: 16px;
}
.design a.selected {
    color: #33b5e5;
}
.develop a.selected {
    color: #F80;
}
.distribute a.selected {
    color: #9C0;
}
.source a.selected {
    color: #33b5e5;
}
.devices a.selected {
    color: #F80;
}
.accessories a.selected {
    color: #9C0;
}
.compatibility a.selected {
    color: #9933CC;
}


.nav-x li {
    display: inline;
    margin-right: 45px;
}
.search {
  float: right;
  position: relative;
  width: 220px
}
.search .bottom, .search .left, .search .right {
  position: absolute;
  background-color: #a3a3a3;
}
.search .bottom {
  width: 220px;
  height: 1px;
  top: 24px;
  left: 0
}
.search .left, .search .right { 
  height: 5px;
  width: 1px
}
.search .left { top: 19px; left: 0 }
.search .right { top: 19px; right: 0 }
.search form {
  float: left;
  margin-top: 2px;
  width: inherit;
}
.search .close,
#player-frame .close {
  position: absolute;
  right: 8px;
  bottom: 4px;
  width: 16px;
  height: 16px;
  margin: 0;
  text-indent: -1000em;
  background: url(../images/close.png) no-repeat 0 0;
  z-index:9999;
}
.search .close:hover, .search .close:focus,
#player-frame .close:hover, #player-frame .close:focus {
  background-position: -16px 0;
  cursor:pointer;
}
#player-frame .close {
  top: 6px;
}
.search form input {
  color: #999;
  font-size: 1em;
  width: inherit;
  border: none;
  margin: 0;
  padding:0 0 0 6px;
  z-index: 1500;
  background-color: transparent
}
.search:hover .bottom, .search:hover .left, .search:hover .right {
  background-color: #33b5e5;
}
.search:hover .icon {
  background-position: -8px 0
}
.search form input:focus {
  color: #222;
  font-weight: bold;
  outline:0;
}
/* Search Dropdown */
.search-dropdown {
  padding: 15px;
  width: 192px;
  border: solid 1px #c5c5c5;
  background: #fff;
  position: absolute;
  top: 35px;
  left: 0;
  -moz-box-shadow: 0 0 10px rgba(0,0,0,0.2);
  -webkit-box-shadow: 0 0 10px rgba(0,0,0,0.2);
  box-shadow: 0  0 10px rgba(0,0,0,0.2)
}
.search-dropdown ul, .search-dropdown ul li {
  list-style-type: none;
  margin: 0;
  padding: 0
}
.search-dropdown ul li {
  clear: both 
}
.search-dropdown img {
  float: left;
  margin: 0 10px 10px 0
}
.search-dropdown h6 {
  color: #222;
  margin: 0;
  line-height: normal
}
.search-dropdown .desc {
  color: #999;
  font-size: 11.5px;
  line-height: normal;
  margin: 0;
}
.search-dropdown li a:hover h6, .search-dropdown li a:hover .desc {
  color: #33b5e5
}
/* --------------------------------------------------------------------------
Buttons
*/
.button, a.button, .button-secondary, a.button-secondary {
  border-image: initial;
    -webkit-border-radius: 2px;
    -moz-border-radius: 2px;
    border-radius: 2px;
    cursor: pointer;
}
.button, a.button {
    display:inline-block;
    background-color: #09c;
    background-image: -webkit-gradient(linear, left top, left bottom, from(#2faddb), to(#09c));
    background-image: -webkit-linear-gradient(top, #2faddb, #09c);
    background-image: -moz-linear-gradient(top, #2faddb, #09c);
    background-image: -ms-linear-gradient(top, #2faddb, #09c);
    background-image: -o-linear-gradient(top, #2faddb, #09c);
    background-image: linear-gradient(top, #2faddb, #09c);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#2faddb', EndColorStr='#0099cc',GradientType=0);
    border: 1px solid #3990ab;
    color: #fff;
}
.button-secondary, a.button-secondary {
    background-color: #f3f3f3;
    border: 1px solid #dcdcdc;
    color: #444;
}
a.button, a.button:visited, a.button-secondary, a.button-secondary:visited {
    margin-right: 16px;
   font-weight: 400;
    min-width: 54px;
    outline: 0;
    padding: 8px 15px;
    text-align: center;
}
.button, .button-secondary {
    margin-right: 16px;
  font-weight: 400;
    min-width: 54px;
    outline: 0;
    padding: 0 15px;
    text-align: center;
}
.button:hover, a.button:hover {
    border-color: #09c;
    background-color: #4cadcb;
    background-image: -webkit-gradient(linear, left top, left bottom, from(#5dbcd9), to(#4cadcb));
    background-image: -webkit-linear-gradient(top, #5dbcd9, #4cadcb);
    background-image: -moz-linear-gradient(top, #5dbcd9, #4cadcb);
    background-image: -ms-linear-gradient(top, #5dbcd9, #4cadcb);
    background-image: -o-linear-gradient(top, #5dbcd9, #4cadcb);
    background-image: linear-gradient(top, #5dbcd9, #4cadcb);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#5dbcd9',
EndColorStr='#4cadcb',GradientType=0);
    color: #fff !important;
}
.button:active, a.button:active {
    background-color: #1e799a;
    background-image: none;
    border-color: #30b7e6;
}
a.button.big.subtitle {
  line-height:18px;
}
.button-secondary:hover, a.button-secondary:hover {
    border-color: #dbdbdb;
    background-color: #f3f3f3;
    background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec));
    background-image: -webkit-linear-gradient(top, #f9f9f9, #ececec);
    background-image: -moz-linear-gradient(top, #f9f9f9, #ececec);
    background-image: -ms-linear-gradient(top, #f9f9f9, #ececec);
    background-image: -o-linear-gradient(top, #f9f9f9, #ececec);
    background-image: linear-gradient(top, #f9f9f9, #ececec);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f9f9f9',
EndColorStr='#ececec');
    color: #33B5E5 !important;
}
.button-secondary:active, a.button-secondary:active {
   border-color: #dadada;
  background: #ebebeb; /* Old browsers */
  /* IE9 SVG, needs conditional override of 'filter' to 'none' */
  background:
url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/
Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0Jv
eD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+
CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIg
eDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ViZWJl
YiIgc3RvcC1vcGFjaXR5PSIxIi8+
CiAgICA8c3RvcCBvZmZzZXQ9IjEwJSIgc3RvcC1jb2xvcj0iI2Y5ZjlmOSIgc3RvcC1vcGFjaXR5PSIxIi8+
CiAgICA8c3RvcCBvZmZzZXQ9IjUwJSIgc3RvcC1jb2xvcj0iI2ZhZmFmYSIgc3RvcC1vcGFjaXR5PSIxIi8+
CiAgICA8c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2Y5ZjlmOSIgc3RvcC1vcGFjaXR5PSIxIi8+
CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmNmY2ZjYiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFy
R3JhZGllbnQ+
CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIg
Lz4KPC9zdmc+);
  background: -moz-linear-gradient(top,  #ebebeb 0%, #f9f9f9 5%, #fafafa 50%, #f9f9f9 90%,
#ffffff 100%); /* FF3.6+ */
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ebebeb),
color-stop(5%,#f9f9f9), color-stop(50%,#fafafa), color-stop(90%,#f9f9f9), color-stop(100%,#ffffff));
/* Chrome,Safari4+ */
  background: -webkit-linear-gradient(top,  #ebebeb 0%,#f9f9f9 5%,#fafafa 50%,#f9f9f9
90%,#ffffff 100%); /* Chrome10+,Safari5.1+ */
  background: -o-linear-gradient(top,  #ebebeb 0%,#f9f9f9 5%,#fafafa 50%,#f9f9f9 90%,#ffffff
100%); /* Opera 11.10+ */
  background: -ms-linear-gradient(top,  #ebebeb 0%,#f9f9f9 5%,#fafafa 50%,#f9f9f9 90%,#ffffff
100%); /* IE10+ */
  background: linear-gradient(top,  #ebebeb 0%,#f9f9f9 5%,#fafafa 50%,#f9f9f9 90%,#ffffff
100%); /* W3C */
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ebebeb',
endColorstr='#ffffff',GradientType=0 ); /* IE6-8 */
  -webkit-box-shadow: inset 0px 0px 5px 2px rgba(0, 0, 0, .05);
  -moz-box-shadow: inset 0px 0px 5px 2px rgba(0, 0, 0, .05);
  box-shadow: inset 0px 0px 5px 2px rgba(0, 0, 0, .05); 
  color: #258AAF !important;
}
.button.big {
  font-size:20px;
  display:inline-block;
}
.button.big span.small {
  font-size:14px;
}
.button-caption {
  margin-top:10px;
  font-size:12px;
  font-style:italic;
}

.button.disabled,
.button.disabled:hover,
.button.disabled:active {
  background:#ebebeb;
  color:#999 !important;
  border-color:#999;
  cursor:default;
}

.training-nav-top a.button-secondary,
.training-nav-bottom a.button-secondary {
  display:block;
  float:left;
  margin:0;
  width:130px;
  text-transform:uppercase;
  font-weight:bold;
  
    background-color: #f3f3f3;
    background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec));
    background-image: -webkit-linear-gradient(top, #f9f9f9, #ececec);
    background-image: -moz-linear-gradient(top, #f9f9f9, #ececec);
    background-image: -ms-linear-gradient(top, #f9f9f9, #ececec);
    background-image: -o-linear-gradient(top, #f9f9f9, #ececec);
    background-image: linear-gradient(top, #f9f9f9, #ececec);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f9f9f9',
EndColorStr='#ececec');
    color: #33B5E5;
}

.training-nav-top a.button-secondary:hover,
.training-nav-bottom a.button-secondary:hover {
    background-color: #09c;
    background-image: -webkit-gradient(linear, left top, left bottom, from(#2faddb), to(#09c));
    background-image: -webkit-linear-gradient(top, #2faddb, #09c);
    background-image: -moz-linear-gradient(top, #2faddb, #09c);
    background-image: -ms-linear-gradient(top, #2faddb, #09c);
    background-image: -o-linear-gradient(top, #2faddb, #09c);
    background-image: linear-gradient(top, #2faddb, #09c);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#2faddb', EndColorStr='#09c');
    border: 1px solid #3990ab;
    color: #fff !important;
}

.training-nav-top a.button-secondary.last,
.training-nav-bottom a.button-secondary.last {
  border-left:0;
}

.training-nav-top a.button-secondary.double-size,
.training-nav-bottom a.button-secondary.double-size {
  width:291px;
}

.training-nav-top,
.training-nav-bottom {
  float:right;
  margin:0 0 0 20px;
}

.training-nav-bottom {
  padding:0 0 20px;
}

#tb-wrapper,
#qv-wrapper {
  float:right;
  clear:right;
  margin:-27px 0 0 20px; /* negative top-margin to counter the content-header bottom margin */
  padding:0 0 20px;
}

#tb,
#qv {
  font-size:13px;
  line-height:18px;
  width:238px;
  border:1px solid #ccc;
  float:right;
}

#tb {
  width:278px;
}

#tb h2,
#qv h2 {
  margin:10px 15px;
  padding:0;
  text-transform:uppercase;
  border-bottom:1px solid gainsboro;
}

#tb *,
#qv * {
  font-size:inherit;
}

#tb .download-box {
  padding:0 0 0 15px;
}

#tb .download-box .filename {
  font-size:11px;
  margin:4px 4px 10px;
  color:#666;
}


/* Dev guide quicknav */

.sidebox-wrapper {
  float:right;
  clear:right;
  margin:0 0 0 20px;
  padding:0 0 20px;
}

.sidebox {
  width:226px;
  font-size:13px;
  line-height:18px;
  border-left:4px solid #99CC00;
  float:right;
  padding:0 0 0 10px;
  margin:0 0 1em 20px;
}

.sidebox h2,
.sidebox h3,
.sidebox h4,
.sidebox h5 {
  font-weight:bold;
  margin:0 0 10px;
}

.sidebox * {
  font-size:inherit;
}

#tb ol,
#tb ul,
#qv ul {
  margin:0 15px 10px 35px;
}

#qv ol {
  list-style:none;
  margin:0 15px 15px;
  font-size:inherit;
  line-height:inherit;
}

#tb ol ol,
#tb ul ul,
#qv ol ol,
#qv ul ul,
.sidebox ol ol,
.sidebox ul ul {
  margin-bottom:0;
}

#qv ol ol {
  margin:3px 0 3px 15px;
}

.sidebox p,
#qv p,
#tb p {
  margin: 0 0 10px;
}


/* --------------------------------------------------------------------------
Form
*/
.article form {
    margin: 0 0 20px;
}
.article form .form-required {
    color: #dd4b39;
}
.article form fieldset {
    margin: 0 0 20px;
    padding: 0;
}
.article form legend {
    display: block;
    line-height: 1.5;
    margin: 0;
    padding: 0;
}
/*
.article form ol, .article form ul {
    margin: 0 0 0 1em;
    padding: 0 0 0 1em;
}
[dir='rtl'] .article form ol, [dir='rtl'] .article form ul {
    margin: 0 1em 0 0;
    padding: 0 1em 0 0;
}
.article form ol ul, .article form ul ul, [dir='rtl'] .article form ol ul, [dir='rtl'] .article form
ul ul {
    list-style: none;
    margin: 0;
    padding: 0;
}
.article form li {
    margin: 0 0 20px;
}
.article form li li {
    margin: 0 0 5px;
}
*/
.article form label {
    display: block;
    margin: 0 0 5px;
    padding: 0;
}
.article form input[type='text'], .article form select, .article form textarea, .article form
.checkbox-group, .article form .radio-group {
    margin-bottom: 15px;
}
.checkbox-group input {
  width: 13px;
  height: 13px;
  background: #fff;
  border: solid 1px #c6c6c6;
  float: left;
}
.article form .checkbox-group, .article form .radio-group {
  display: block
}
.article form select {
    border: solid 1px #ebebeb;
    border-top-color: #ddd;
    -webkit-appearance: none;
    background: #f3f3f3 url(../images/arrows-up-down.png) right center no-repeat;
    height: 30px;
    color: #222;
    line-height: normal;
    padding: 5px;
    width: 130px;
}
    
.article form .browse .browse-msg {
  font-size: 11.5px;  
}
.article form .browse .button-secondary {
  height: auto;
  line-height: 25px;
  font-size: 11px;
  padding: 0 8px;
  margin: 0 10px 15px 0;
}
.article form input[type='text'], .article form textarea {
    border: 1px solid #ebebeb;
    border-top-color: #dcdcdc;
    color: #222;
    line-height: normal;
    padding: 6px 10px;
    width: 300px; 
}
.article form textarea {
    height: 150px;
}
.article form input[type='text']:focus, .article form textarea:focus {
    border-color: #33B5E5;
    -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .2);
    -o-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .2);
    -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .2);
    box-shadow: inset 0 1px 2px rgba(0, 0, 0, .2);
    outline: 0;
}
.article form input[disabled], .article form textarea[disabled], .article form label.form-disabled {
    color: #999;
}
.article form input[type='text'][disabled], .article form textarea[disabled] {
    background-color: #ebebeb;
}
form .form-error input[type='text'], form .form-error textarea {
    border-color: #dd4b39;
  margin-right: 20px;
}
.aside {
    -moz-border-radius: 2px;
    -webkit-border-radius: 2px;
    border-radius: 2px;
    margin: 10px 0;
    padding: 20px;
  color: #666;
    position: relative;
  background: #f9f9f9;
}
/*
.aside, .notification, .promo {
    -moz-border-radius: 2px;
    -webkit-border-radius: 2px;
    border-radius: 2px;
    margin: 10px 0;
    padding: 10px;
    position: relative;
}
.aside>:first-child, .notification>:first-child, .promo>:first-child {
    margin-top: 0;
}
.aside>:last-child, .notification>:last-child, .promo>:last-child {
    margin-bottom: 0;
}
.aside {
    background: #f9f9f9;
}
.notification {
    background: #fffbe4;
    border-color: #f8f6e6;
}
.promo {
    background: #f6f9ff;
    border-color: #eff2f9;
}
*/

/* SDK TOS styles */

div.sdk-terms {
  white-space: pre-wrap;
  word-wrap: break-word;
  font-family: inherit;
  font-size: inherit;
  padding: 10px;
  height: 370px;
  width: 738px;
  border: 1px solid #444;
  background: transparent;
  overflow:auto;
  margin:0 0 10px;
}

div.sdk-terms.fullsize {
  padding: 0;
  height: auto;
  width: auto;
  border:none;
}

div.sdk-terms h3,
div.sdk-terms h2 {
  margin:0;
}

div#sdk-terms-form {
  padding:0 0 0 10px;
}

div#sdk-terms-form input {
  display:inline;
  margin:4px 4px 4px 0;
}


/* --------------------------------------------------------------------------
Code Style
*/
pre {
  margin:0 0 1em 0;
  padding: 1em;
  overflow: auto;
  border: solid 1px #ddd;
  background: #f7f7f7;  
}
.str { color: #080; }
.kwd { color: #008; }
.com { color: #800; }
.typ { color: #606; }
.lit { color: #066; }
.pun { color: #660; }
.pln { color: #000; }
.tag { color: #008; }
.atn { color: #828; }
.atv { color: #080; }
.dec { color: #606; }

/* --------------------------------------------------------------------------
Three-Pane
*/
/* Package Nav & Classes Nav */
.three-pane {
  position: relative;
  border-top: solid 1px #ebebeb;
}
#packages-nav .js-pane,
#classes-nav .js-pane {
  overflow:visible;
}
#packages-nav {
        height:270px;
  max-height: inherit;
  overflow: hidden;
  position: relative; 
}
#classes-nav {
  overflow: hidden;
  position: relative; 
}
#packages-nav ul, #classes-nav ul {
  list-style-type: none;
  margin: 10px 0 20px 0;
  padding: 0; 
}
#classes-nav li {
  font-weight: bold;
  margin: 5px 0;
}
#packages-nav li,
#classes-nav li li {
  margin: 0;
}
#packages-nav li a, #packages-nav li a:active, #packages-nav li a:visited,
#classes-nav li a, #classes-nav li a:active, #classes-nav li a:visited {
  padding: 0 0 0 4px;
}
#packages-nav li a, #packages-nav li a:active, #packages-nav li a:visited,
#classes-nav li li a, #classes-nav li li a:active, #classes-nav li li a:visited,
#nav-tree li a, #nav-tree li a:active, #nav-tree li a:visited {
  color: #222;
  font-weight: normal;  
}
#packages-nav li a, #packages-nav li a:active, #packages-nav li a:visited,
#classes-nav li li a, #classes-nav li li a:active, #classes-nav li li a:visited {
  display: block;
}
#packages-nav li.selected a, #packages-nav li.selected a:active, #packages-nav li.selected
a:visited,
#classes-nav li li.selected a, #classes-nav li li.selected a:active, #classes-nav li li.selected
a:visited,
#nav-tree li div.selected {
    font-weight: 500;
    color: #0099cc;
    background-color:#fff; }
  #packages-nav li.selected ul li a,
  #classes-nav li.selected ul li a {
  /* don't highlight child items */
    color: #555555; }
#nav-tree li div.selected a {
    font-weight: 500;
    color: #0099cc;
}
#nav-swap {
  height:30px;
  border-top:1px solid #ccc;
}
#nav-swap a {
  display:inline-block;
  height:100%;
  color: #222;
  font-size: 12px;
  padding: 5px 0 5px 5px;
}

#nav-swap .fullscreen {
  float: right;
  width: 24px;
  height: 24px;
  text-indent: -1000em;
  padding:0;
  margin:3px 5px 0;
  background: url(../images/fullscreen.png) no-repeat -24px 0;
}
#nav-swap .fullscreen.disabled {
  background-position: 0 0;
}
#nav-swap .fullscreen:hover, 
#nav-swap .fullscreen:focus {
  cursor:pointer;
}


/* nav tree */
#side-nav, #devdoc-nav, #swapper,
#nav-tree, #tree-list {
  overflow:hidden;
  margin-left:0;
}

#nav-tree ul {
  list-style:none;
  padding:0;
  margin:10px 0;
}

#nav-tree ul li div {
  padding:0 0 0 4px;
}

#side-nav #nav-tree ul li a,
#side-nav #nav-tree ul li span.no-children {
  padding: 0;
  margin: 0;
}

#nav-tree .plus {
  margin: 0 3px 0 0;
}

#nav-tree ul ul {
  list-style: none;
  margin: 0;
  padding: 0 0 0 0;
}

#nav-tree ul li {
  margin: 0;
  padding: 0 0 0 0;
  white-space: nowrap;
}

#nav-tree .children_ul {
  padding:0;
  margin:0;
}
#nav-tree .children_ul li div {
  padding:0 0 0 10px;
}
#nav-tree .children_ul .children_ul li div {
  padding:0 0 0 20px;
}

#nav-tree a.nolink {
  color: #222;
  text-decoration: none;
}

#nav-tree span.label {
  width: 100%;
}

#nav-tree {
  overflow-x: auto;
  overflow-y: scroll;
  outline:0;
}


/* Content */
#doc-col {
  margin-right:0;
}
#doc-content-container {
  margin-left: 291px  
}
#doc-header, #doc-content {
  padding: 1em 2em;
}
#doc-header {
  background: #f7f7f7;  
}
#doc-header h1 {
  line-height: 0;
  margin-bottom: 15px;
}
#api-info-block {
  float: right;
  font-weight: bold;
}
#api-info-block a, #api-info-block a:active, #api-info-block a:visited {
  color: #222;
}
#api-info-block a:hover, #api-info-block a:focus {
  color: #33B5E5;
}
#api-nav-header {
  height:19px; /* plus 16px padding = 35; same as #nav li */
  font-size:14px;
  padding: 8px 0;
  margin: 0;
  border-bottom: 1px solid #CCC;
  background:#e9e9e9;
  background: rgba(0, 0, 0, 0.05); /* matches #nav li.expanded */

}
#api-nav-title {
  padding:0 5px;
  white-space:nowrap;
}

#api-level-toggle {
  float:right;
  padding:0 5px;
}

#api-level-toggle label {
  margin:0;
  vertical-align:top;
  line-height: 19px;
  font-size:13px;
  height: 19px;
}

#api-level-toggle .select-wrapper {
  width: 35px;
  display: inline-block;
  overflow: hidden;
}
#api-level-toggle select {
  border: 0;
  appearance:none;
  -moz-appearance:none;
  -webkit-appearance: none;
  background: transparent url(../images/arrows-up-down.png) 23px 5px no-repeat;
  color: #222;
  height: 19px;
  line-height: 19px;
  padding: 0;
  margin:1px 0 0 0;
  width:150%;
  font-size:13px;
  vertical-align:top;
  outline:0;
}


/* Toggle for revision notes and stuff */
div.toggle-content.closed .toggle-content-toggleme {
  display:none;
}

#jd-content img.toggle-content-img {
  margin:0 5px 5px 0;
}
div.toggle-content p {
  margin:10px 0 0;
}
div.toggle-content-toggleme {
  padding:0 0 0 15px;
}


/* API LEVEL FILTERED MEMBERS */

.absent,
.absent a:link,
.absent a:visited,
.absent a:hover,
.absent * {
  color:#bbb !important;
  cursor:default !important;
  text-decoration:none !important;
}
#devdoc-nav li.absent.selected,
#devdoc-nav li.absent.selected *,
#devdoc-nav div.label.absent.selected,
#devdoc-nav div.label.absent.selected * {
  background-color:#eaeaea !important;
}
.absent h4.jd-details-title,
.absent h4.jd-details-title * {
  background-color:#f6f6f6 !important;
}
.absent img {
  opacity: .3;
  filter: alpha(opacity=30);
  -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";
}









/* JQUERY RESIZABLE STYLES */
.ui-resizable { position: relative; }
.ui-resizable-handle { position: absolute; display: none; font-size: 0.1px; z-index:1; }
.ui-resizable .ui-resizable-handle { display: block; border-bottom: 1px solid #e4e4e4; }
/*body .ui-resizable-disabled .ui-resizable-handle { display: none; }
body .ui-resizable-autohide .ui-resizable-handle { display: none; }*/
.ui-resizable-s { cursor: s-resize; height: 10px; width: 100% !important; bottom: -11px; left: 0;
border-bottom: solid 1px #ededed;
  background: #f7f7f7 url("../images/resizable-s2.png") no-repeat scroll center center; }
/*
.ui-resizable-e { 
cursor: e-resize; width: 10px; right: 0; top: 0; height: 100%; border-right: solid
1px #ededed;background: #f7f7f7 url("../images/resizable-e2.png") no-repeat scroll center center; }
*/

/* --------------------------------------------------------------------------
Lightbox
*/
.lightbox { 
  width: 769px;
  padding: 1.5em;
  margin: 0 auto;
  border: solid 1px #dcdcdc;
  background: #fff;
  -moz-box-shadow: 1px 1px 5px rgba(0,0,0,0.1);
  -webkit-box-shadow: 1px 1px 5px rgba(0,0,0,0.1);
  box-shadow: 1px 1px 5px rgba(0,0,0,0.1)
}
.lightbox .header {
  float: left;
  width: 720px;
  margin: -10px 20px 10px 0;  
}
.lightbox .close {
  float: right;
  width: 10px;
  height: 10px;
  margin: -10px -10px 10px 0;
  text-indent: -1000em;
  background: url(../images/close.png) no-repeat 0 0;
}
.lightbox .close:hover, .lightbox .close:focus {
  background-position: -10px 0;
}

/* --------------------------------------------------------------------------
Misc
*/


.clearfix:before, .clearfix:after {
  content: "";
  display: table
}
.clearfix:after {
  clear: both
}
.clearfix {
  *zoom: 1
}
table.blank th, table.blank td {
    border: 0;
  background: none
}
.caption {
  margin: 0.5em 0 2em 0;
  color: #000;
  font-size: 11.5px;  
}

.nolist {
  list-style:none;
  margin-left:0;
}
#tb .nolist {
  margin-left:15px;
}


pre.classic {
  background-color:transparent;
  border:none;
  padding:0;
}

p.img-caption {
  margin: -10px 0 20px;
  font-size:13px;
  color:#666;
}

div.figure,
div.figure-right {
  float:right;
  clear:right;
  margin:10px 0 0 0;
  padding:0 0 0 20px;
  /* width must be defined w/ an inline style matching the image width */
}

div.figure-left {
  float:left;
  clear:left;
  margin:10px 0 0 0;
  padding:0 20px 0 0;
  /* width must be defined w/ an inline style matching the image width */
}

img.frame {
  border:1px solid #DDD;
  padding:4px;
}

p.table-caption {
  margin: 0 0 4px 0;
  font-size:13px;
  color:#666;
}

p.code-caption {
  margin: 0 0 4px 0;
  font: 12px/1.5 monospace;
  color:#666;
}

div.note, 
div.caution, 
div.warning {
  margin: 0 0 15px;
}

p.note, div.note, 
p.caution, div.caution, 
p.warning, div.warning {
  padding: 0 0 0 10px;
  border-left: 4px solid;
}

p.note, div.note {
  border-color: #258AAF;
}

p.caution, div.caution {
  border-color: #FF8800;
}

p.warning, div.warning {
  border-color: #ff4443;
}

div.note.design {
  border-left: 4px solid #33B5E5;
}

div.note.develop {
  border-left: 4px solid #F80;
}

div.note.distribute {
  border-left: 4px solid #9C0;
}

.note p, .caution p, .warning p {
  margin:0 0 5px;
}

.note p:last-child, .caution p:last-child, .warning p:last-child {
  margin-bottom:0;
}

body.about blockquote {
  display:block;
  float:right;
  width:280px;
  font-size:20px;
  font-style:italic;
  line-height:24px;
  color:#33B5E5;
  margin:0 0 20px 30px;
}

div.design-announce p {
  margin:0 0 10px;
}

#devdoc-nav a.totop {
  display:block;
  top:0;
  width:inherit;
  background: transparent url(../images/styles/gototop.png) no-repeat scroll 50% 50%;
  text-indent:-9999em;
}
#devdoc-nav a.totop {
  position:fixed;
  display:none;
}
#devdoc-nav a.totop:hover {
  background-color:#33B5E5;
}

.content-footer a.totop {
  text-transform:uppercase;
  line-height:30px;
}

.expandable {
  height:34px;
  padding-left:20px;
  position:relative;
}
.expandable:before {
  content: '';
  background-image: url(../images/styles/disclosure_down.png);
  background-repeat:no-repeat;
  background-position: -12px -9px;
  width: 20px;
  height: 20px;
  display: inline-block;
  position: absolute;
  top: 0;
  left: 0; }
}
.expandable.expanded:before {
  background-image: url(../images/styles/disclosure_up.png);
}



/* -----------------------------------------------
Dialog box for popup messages 
*/

div.dialog {
  height:0;
  margin:0 auto;
}

div.dialog>div {
  z-index:99;
  position:fixed;
  margin:70px 0;
  width: 391px;
  height: 200px;
  background: #F7F7F7;
-moz-box-shadow: 0 0 15px rgba(0,0,0,0.5);
-webkit-box-shadow: 0 0 15px rgba(0,0,0,0.5);
box-shadow: 0 0 15px rgba(0,0,0,0.5);
}
/* IE6 can't position fixed */
* html div.dialog div { position:absolute; }


div#deprecatedSticker {
  display:none;
  z-index:99;
  position:fixed;
  right:15px;
  top:114px;
  margin:0;
  padding:1em;
  background:#FFF;
  border:1px solid #dddd00;
  box-shadow:-5px 5px 10px #ccc;
  -moz-box-shadow:-5px 5px 10px #ccc;
  -webkit-box-shadow:-5px 5px 10px #ccc;
}

div#naMessage {
  display:none;
  width:555px;
  height:0;
  margin:0 auto;
}

div#naMessage div {
  z-index:99;
  width:450px;
  position:fixed;
  margin:50px 0;
  padding:4em 4em 3em;
  background:#FFF;
  border:1px solid #999;
  box-shadow:-10px 10px 40px #888;
  -moz-box-shadow:-10px 10px 40px #888;
  -webkit-box-shadow:-10px 10px 40px #888;
}
/* IE6 can't position fixed */
* html div#naMessage div { position:absolute; }

div#naMessage strong {
  font-size:1.1em;
}


/* --------------------------------------------------------------------------
Slideshow Controls & Next/Prev 
*/
.slideshow-next, .slideshow-prev {  
  width: 20px;
  height: 36px;
  text-indent: -1000em;
}
.slideshow-container {
  margin: 2em 0;
}
.slideshow-container:before, .slideshow-container:after {
  content: "";
  display: table;
  clear: both;
}
a.slideshow-next, a.slideshow-next:visited {

  float: right;

  background: url(../images/arrow-right.png) no-repeat 0 0

}

a.slideshow-prev, a.slideshow-prev:visited {

  float: left;  

  background: url(../images/arrow-left.png) no-repeat 0 0

}

.slideshow-next:hover, .slideshow-prev:hover, .slideshow-next:focus, .slideshow-prev:focus {

  background-position: 0 -36px  

}

.slideshow-next:active, .slideshow-prev:active {

  background-position: 0 -72px  

}
.slideshow-nav {
  width: 74px;
  margin: 0 auto;   
}
.slideshow-nav a, .slideshow-nav a:visited {
  display: inline-block;
  width: 12px;
  height: 12px;
  margin: 0 2px 20px 2px;
  background: #ccc;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  border-radius: 50%;
}
.slideshow-nav a:hover, .slideshow-nav a:focus {

  background: #33B5E5
}

.slideshow-nav a:active {

  background: #1e799a;
  background: #ebebeb;  
  -webkit-box-shadow: inset 0px 0px 5px 2px rgba(0, 0, 0, .05);
  -moz-box-shadow: inset 0px 0px 5px 2px rgba(0, 0, 0, .05);
  box-shadow: inset 0px 0px 5px 2px rgba(0, 0, 0, .05);
}
.slideshow-nav a.active, .slideshow-nav a.active:active, .slideshow-nav a.active:visited {
  background: #33B5E5
}
/* --------------------------------------------------------------------------
Tabs
*/
ul.tabs {
  padding: 0;
  margin: 2em 0 0 0;  
}
ul.tabs:before, ul.tabs:after {
  content: "";
  display: table;
  clear: both;
}
ul.tabs li {
  list-style-type: none;
  float: left;  
}
ul.tabs li a, ul.tabs li a:active, ul.tabs li a:visited {
  display: block;
  height: 36px;
  line-height: 36px;
  padding: 0 15px;
  margin-right: 2px;
  color: #222;
  -moz-border-radius-topleft: 2px;
  -moz-border-radius-topright: 2px;
  -moz-border-radius-bottomright: px;
  -moz-border-radius-bottomleft: px;
  -webkit-border-radius: 2px 2px px px;
  border-radius: 2px 2px px px; 
  border-top: solid 1px #ebebeb;
  border-left: solid 1px #ebebeb;
  border-right: solid 1px #ebebeb;
  background-color: #fff;
    background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#fafafa));
    background-image: -webkit-linear-gradient(top, #ffffff, #fafafa);
    background-image: -moz-linear-gradient(top, #ffffff, #fafafa);
    background-image: -ms-linear-gradient(top, #ffffff, #fafafa);
    background-image: -o-linear-gradient(top, #ffffff, #fafafa);
    background-image: linear-gradient(top, #ffffff, #fafafa);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff',
EndColorStr='#fafafa');
}
ul.tabs li a:hover {
  color: #33B5E5; 
}
ul.tabs li a.selected {
  height: 37px;
  color: #33B5E5;
  background-color: #f7f7f7;
  background-image: none;
  border-color: #ddd;
}
.tab-content {
  padding: 1.2em;
  margin: -1px 0 2em 0;
  -webkit-border-radius: 2px;
    -moz-border-radius: 2px;
    border-radius: 2px;
  border: solid 1px #ddd;
  background: #f7f7f7;
}
/* --------------------------------------------------------------------------
Feature Boxes
*/
.feature-box {
  width: 291px;
  height: 200px;
  position: relative;
  background: #F7F7F7;
}
.box-border .top, .box-border .bottom, .box-border .left, .box-border .right {
  z-index: 100;
  position: absolute;
  background-color: #aaa;
}
.box-border .top, .box-border .bottom {
  width: 291px;
  height: 1px;
}
.dialog .box-border .top,
.dialog .box-border .bottom { width:391px; }

.box-border .left, .box-border .right { 
  width: 1px;
  height: 8px;    
}
.box-border .top { top: 0; left: 0 }
.box-border .top .left { top: 1px; left: 0 }
.box-border .top .right { top: 1px; right: 0 }
.box-border .bottom .left { top: -8px; left: 0 }
.box-border .bottom { top: 200px; left: 0 }
.box-border .bottom .right { top: -8px; right: 0 }

.feature-box h4,
.dialog h4 {
    margin: 15px 18px 10px;
    padding:0;
}

.feature-box p,
.dialog p {
    margin: 10px 18px;
    padding:0;
}
.feature-box .link,
.dialog .link {
    border-top: 1px solid #dedede;
    bottom: 0;
    position: absolute;
    width: inherit;
}
.feature-box a, .feature-box h4,
.dialog a, .dialog h4 {
    -webkit-transition: color .4s ease;
    -moz-transition: color .4s ease;
    -o-transition: color .4s ease;
    transition: color .4s ease;
}
.feature-box:hover {
  cursor: pointer;  
}
.feature-box:hover .box-border .top, .feature-box:hover .box-border .bottom, .feature-box:hover
.left, .feature-box:hover .right {  
  background-color: #33B5E5;
}
.feature-box:hover h4, .feature-box:hover a {
  color: #33B5E5;
}
/* --------------------------------------------------------------------------
Page-Specific Styles
*/
.colors { 
  position: relative;
  float: left;
  width: 92px;
  margin: 40px 0 20px;
}
.colors div {
  color: #fff;
  font-size: 11.5px;
  width: 82px;
  height: 82px;
  margin-top:-30px;
  line-height: 82px;
  text-align: center;
  border: solid 5px #fff;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  border-radius: 50%;
}














/* ########### REFERENCE DOCS ################## */

#packages-nav h2,
#classes-nav h2 {
  font-size:18px;
  margin:0;
  padding:0 0 0 4px;
}

#jd-header {
  padding: 0 0 5px;
  margin: 20px 0 10px;
  font-size:13px;
  border-bottom:solid 1px #ccc;
}

#jd-header h1 {
  margin:0;
  padding:0;
}

/* page-top-right container for reference pages (holds
links to summary tables) */
#api-info-block {
  font-size:13px;
  margin:20px 0 0;
  padding:0 10px 6px;
  font-weight:normal;
  float:right;
  text-align:right;
  color:#999;
  max-width:70%;
}

#api-info-block div.api-level {
  font-weight:bold;
  font-size:inherit;
  float:none;
  color:#222;
  padding:0;
  margin:0;
}

/* inheritance table */
.jd-inheritance-table {
  border-spacing:0;
  margin:0;
  padding:0;
  font-size:13px;
  background-color:transparent;
}
.jd-inheritance-table tr td {
  border: none;
  margin: 0;
  padding: 0;
  background-color:transparent;
}
.jd-inheritance-table .jd-inheritance-space {
  font-weight:bold;
  width:1em;
}
.jd-inheritance-table .jd-inheritance-interface-cell {
  padding-left: 17px;
}



.jd-sumtable a {
  text-decoration:none;
}

.jd-sumtable a:hover {
  text-decoration:underline;
}

/* the link inside a sumtable for "Show All/Hide All" */
.toggle-all {
  display:block;
  float:right;
  font-weight:normal;
  font-size:0.9em;
}

/* adjustments for in/direct subclasses tables */
.jd-sumtable.jd-sumtable-subclasses {
  margin: 1em 0 0 0;
  max-width:968px;
  background-color:transparent;
  font-size:13px;
}

/* extra space between end of method name and open-paren */
.sympad {
  margin-right: 2px;
}

/* right alignment for the return type in sumtable */
.jd-sumtable .jd-typecol {
  text-align:right;
}

/* adjustments for the expando table-in-table */
.jd-sumtable-expando {
  margin:.5em 0;
  padding:0;
}

/* a div that holds a short description */
.jd-descrdiv {
  padding:3px 1em 0 1em;
  margin:0;
  border:0;
}

#jd-content img.jd-expando-trigger-img {
  padding:0 4px 4px 0;
  margin:0;
}

.jd-sumtable-subclasses div#subclasses-direct,
.jd-sumtable-subclasses div#subclasses-indirect {
  margin:0 0 0 13px;
}



/********* MEMBER REF *************/


.jd-details {
/*  border:1px solid #669999;
  padding:4px; */
  margin:0 0 1em;
}

/* API reference: a container for the
.tagdata blocks that make up the detailed
description */
.jd-details-descr {
  padding:0;
  margin:.5em .25em;
}

/* API reference: a block containing
a detailed description, a params table,
seealso list, etc */
.jd-tagdata {
  margin:.5em 1em;
}

.jd-tagdata p {
  margin:0 0 1em 1em;
}

/* API reference: adjustments to
the detailed description block */
.jd-tagdescr {
  margin:.25em 0 .75em 0;
}

.jd-tagdescr ol,
.jd-tagdescr ul {
  margin:0 2.5em;
  padding:0;
}

.jd-tagdescr table,
.jd-tagdescr img {
  margin:.25em 1em;
}

.jd-tagdescr li {
margin:0 0 .25em 0;
padding:0;
}

/* API reference: heading marking
the details section for constants,
attrs, methods, etc. */
h4.jd-details-title {
  font-size:1.15em;
  background-color: #E2E2E2;
  margin:1.5em 0 .6em;
  padding:3px 95px 3px 3px; /* room for api-level */
}
body.google h4.jd-details-title {
  background-color: #FFF;
  padding-top:5px;
  border-top: 1px solid #ccc;
}
body.google table.jd-sumtable th {
  background-color: #FFF;
  color:#000;
}

h4.jd-tagtitle {
  margin:0;
}

h4 .normal {
  font-weight:normal;
}

/* API reference: heading for "Parameters", "See Also", etc.,
in details sections */
h5.jd-tagtitle {
  margin:0 0 .25em 0;
  font-size:1em;
}

.jd-tagtable {
  margin:0;
  background-color:transparent;
  width:auto;
}

.jd-tagtable td,
.jd-tagtable th {
  border:none;
  background-color:#fff;
  vertical-align:top;
  font-weight:normal;
  padding:2px 10px;
}

.jd-tagtable th {
  font-style:italic;
}

/* Inline api level indicator for methods */
div.api-level {
  font-size:.8em;
  font-weight:normal;
  color:#999;
  float:right;
  padding:0 8px 0;
  margin-top:-30px;
}

table.jd-tagtable td,
table.jd-tagtable th {
  background-color:transparent;
}

table.jd-tagtable th {
  color:inherit;
}























/* SEARCH FILTER */

#search_autocomplete {
  font-weight:normal;
}

#search_filtered_wrapper {
  width: 193px;
  float: right;
}
#search_filtered_div {
  position:absolute;
  z-index:9999;
  min-width:171px; /* +padding and border makes this match input width */
  padding:5px;
  border: solid 1px #C5C5C5;
  background: white;
  top: 35px;
  -moz-box-shadow: 0 0 10px rgba(0,0,0,0.2);
  -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
}

ul#search_filtered {
  min-width:100%;
  margin:0;
  list-style: none;
  margin: 0;
  padding: 0;
}

#search_filtered .jd-selected {
  background-color: #33B5E5;
  cursor:pointer;
}
#search_filtered .jd-selected,
#search_filtered .jd-selected a {
  color:#f7f7f7 !important;
}

.no-display {
  display: none;
}

#search_filtered li.jd-autocomplete {
  font-size: 0.81em;
  border: none;
  margin: 0 0 2px;
  padding: 0;
  line-height:1.5em;
}

#search_filtered li a {
  padding:0 5px;
  color:#222 !important;
}

#search_filtered li.header {
  color:#aaa;
  font-weight:bold;
  font-size: 0.81em;
  border: none;
  margin: 8px 0 2px;
  padding:1px 5px;
  line-height:1.5em;
}

#search_filtered li.header:first-child {
  margin: 0 0 2px;
}

.show-item {
  display: table-row;
}
.hide-item {
  display: hidden;
}





/* SEARCH RESULTS */


#leftSearchControl .gsc-twiddle {
  background-image : none;
}

#leftSearchControl td, #searchForm td {
  border: 0px solid #000;
  padding:0;
}

#leftSearchControl .gsc-resultsHeader .gsc-title {
  padding-left : 0px;
  font-weight : bold;
  font-size : 13px;
  color:#006699;
  display : none;
}

#leftSearchControl .gsc-resultsHeader div.gsc-results-selector {
  display : none;
}

#leftSearchControl .gsc-resultsRoot {
  padding-top : 6px;
}

#leftSearchControl div.gs-visibleUrl-long {
  display : block;
  color:#006699;
}

#leftSearchControl .gsc-webResult {
  padding:0 0 20px 0;
}

.gsc-webResult div.gs-visibleUrl-short,
table.gsc-branding,
.gsc-clear-button {
  display : none;
}

.gsc-cursor-box .gsc-cursor div.gsc-cursor-page,
.gsc-cursor-box .gsc-trailing-more-results a.gsc-trailing-more-results,
#leftSearchControl a,
#leftSearchControl a b {
  color:#006699;
}

.gsc-resultsHeader {
  display: none;
}

/* Disable built in search forms */
.gsc-control form.gsc-search-box {
  display : none;
}
table.gsc-search-box {
  margin:6px 0 0 0;
  border-collapse:collapse;
}

td.gsc-input {
  padding:0 2px;
  width:100%;
  vertical-align:middle;
}

input.gsc-input {
  border:1px solid #BCCDF0;
  width:99%;
  padding-left:2px;
  font-size:.95em;
}

td.gsc-search-button {
  text-align: right;
  padding:0;
  vertical-align:top;
}


#searchResults {
  overflow:hidden; /* because the repositioned page links makes the section think it needs to scroll
(it doesn't) */
  height:auto;
}

#searchResults .gsc-control {
  position:relative;
  width:auto;
  padding:0 0 10px;
}

#searchResults .gsc-tabsArea {
  position:relative;
  white-space:nowrap;
  float:left;
  width:200px;
}

#searchResults .gsc-above-wrapper-area {
  display:none;
}

#searchResults .gsc-resultsbox-visible {
  float:left;
  width:720px;
  margin-left:20px;
}

#searchResults .gsc-tabHeader {
  padding: 3px 6px;
  position:relative;
  width:auto;
  display:block;
}

#searchResults h2#searchTitle {
  padding:0;
  margin:5px 0;
  border:none;
}

#searchResults h2#searchTitle em {
  font-style:normal;
  color:#33B5E5;
}

#searchResults .gsc-table-result {
  margin:5px 0 10px 0;
  background-color:transparent;
}
#searchResults .gs-web-image-box, .gs-promotion-image-box {
  width:120px;
}
#searchResults .gs-web-image-box img.gs-image, .gs-promotion-image-box img.gs-promotion-image {
  max-width:120px;
}

#searchResults .gsc-table-result .gsc-thumbnail {
  padding:0 20px 0 0;
}

#searchResults td {
  background-color:transparent;
}

#searchResults .gsc-expansionArea {
  position:relative;
}
#searchResults .gsc-tabsArea .gsc-cursor-box {
  width:200px;
  padding:20px 0 0 1px;
}
#searchResults .gsc-cursor-page {
  display:inline-block;
  float:left;
  margin:-1px 0 0 -1px;
  padding:0;
  height:27px;
  width:27px;
  text-align:center;
  line-height:2;
}

#searchResults .gsc-tabHeader.gsc-tabhInactive,
#searchResults .gsc-cursor-page {
  text-decoration:none;
  color:#258AAF;
  border: solid 1px #DADADA;
}

#searchResults .gsc-tabHeader.gsc-tabhInactive:hover,
#searchResults .gsc-cursor-page:hover {
  border-color: #DBDBDB;
  background-color: #F3F3F3;
  background-image: -webkit-gradient(linear, left top, left bottom, from(#F9F9F9), to(#ECECEC));
  background-image: -webkit-linear-gradient(top, #F9F9F9, #ECECEC);
  background-image: -moz-linear-gradient(top, #F9F9F9, #ECECEC);
  background-image: -ms-linear-gradient(top, #F9F9F9, #ECECEC);
  background-image: -o-linear-gradient(top, #F9F9F9, #ECECEC);
  background-image: linear-gradient(top, #F9F9F9, #ECECEC);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f9f9f9',
EndColorStr='#ececec');
  color: #33B5E5;
}

#searchResults .gsc-tabHeader.gsc-tabhActive,
#searchResults .gsc-tabHeader.gsc-tabhActive:hover,
#searchResults .gsc-cursor-page.gsc-cursor-current-page,
#searchResults .gsc-cursor-page.gsc-cursor-current-page:hover {
  color:#fff;
  background-color: #09C;
  background-image: -webkit-gradient(linear, left top, left bottom, from(#2FADDB), to(#09C));
  background-image: -webkit-linear-gradient(top, #2FADDB, #09C);
  background-image: -moz-linear-gradient(top, #2FADDB, #09C);
  background-image: -ms-linear-gradient(top, #2FADDB, #09C);
  background-image: -o-linear-gradient(top, #2FADDB, #09C);
  background-image: linear-gradient(top, #2FADDB, #09C);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#2faddb', EndColorStr='#09c');
  border: 1px solid #3990AB;
  z-index:100;
}

}













/*********** PREVIOUSLY dac-styles.css ***************/


#header {
  border-bottom:0;
}

#header .wrap {
  max-width:940px;
  height:41px;
  border-bottom:1px solid;
  border-color: #ccc;
  position:relative;
}

.about #header .wrap {
  border-color: #9933CC;
}

.design #header .wrap {
  border-color: #33b5e5;
}

.develop #header .wrap {
  border-color: #F80;
}

.distribute #header .wrap {
  border-color: #9C0;
}

.logo a {
  width:123px;
  float:left;
}

#header .logo {
  margin-top: -6px;
  margin-left: 0px;
  margin-bottom:0px;
  width: 160px;
  padding-right:10px;
}

#header .saclogo {
  margin-top: -3px;
  margin-left: 0px;
  margin-bottom: 0px;
  margin-right: 30px;
  width: 140px;
  padding-right:0px;
  border-right:1px solid #CCC;
}

.search {
  height:25px;
  margin-top: -3px;
  margin-bottom: 0px;
}



/* Quicknav */
.btn-quicknav {
  width:20px;
  height:28px;
  float:left;
  margin-left:6px;
  padding-right:10px;
  position:relative;
  cursor:pointer;
  border-right:1px solid #CCC;
}

.btn-quicknav a {
  zoom:1;
  position:absolute;
  top:13px;
  left:5px;
  display:block;
  text-indent:-9999em;
  width:10px;
  height:5px;
  background:url(../images/quicknav_arrow.png) no-repeat;
}

.btn-quicknav a.arrow-active {
  background-position: 0 -5px;
  display:none;
}

#header-wrap.quicknav a.arrow-inactive {
  display:none;
}

.btn-quicknav.active a.arrow-active {
  display:block;
}

.nav-x li {
  display:block;
  float:left;
  margin-right:45px;
  -webkit-transition: all 0.25s linear;
      -moz-transition: all 0.25s linear;
       -ms-transition: all 0.25s linear;
        -o-transition: all 0.25s linear;
           transition: all 0.25s linear;
}

#header-wrap.quicknav .nav-x li {
  min-width:160px;
  margin-right:20px;
}

#header-wrap.quicknav li.last {
  margin-right:0px;
}

#quicknav {
 float:none; 
 clear:both;
 margin-left:180px;
 margin-top:-30px;
 display:none;
 overflow:hidden;
}

#header-wrap.quicknav #quicknav {

}

#quicknav ul {
  margin:10px 0;
  padding:0;
}

#quicknav ul li.design {
  border-top:1px solid #33b5e5;
}

#quicknav ul li.develop {
  border-top:1px solid #FF8800;
}

#quicknav ul li.distribute {
  border-top:1px solid #99cc00;
}

#quicknav ul li {
  display:block;
  float:left;
  margin:0 20px 0 0;
  min-width:140px;
}

#quicknav ul li.last {
  margin-right:0px;
}

#quicknav ul li ul li {
  float:none;
}

#quicknav ul li ul li a {
  color:#222;
}

#quicknav ul li li ul,
#quicknav ul li li ul li {
  margin:0;
}

#quicknav ul li li ul li:before {
  content:"\21B3";
}

#header-wrap {
   -webkit-transition: all 0.25s ease-out;
      -moz-transition: all 0.25s ease-out;
       -ms-transition: all 0.25s ease-out;
        -o-transition: all 0.25s ease-out;
           transition: all 0.25s ease-out;

}

#header-wrap.quicknav {
  height:196px;
  
}

/* SEARCH AND MORE */
.search {
  position: absolute;
  width: 50px;
  height:28px;
  display: block;
  margin-top:-3px;
  margin-bottom:7px;
  overflow:hidden;
  z-index:100;
  right:54px;
  -webkit-transition: width 0.4s ease;
     -moz-transition: width 0.4s ease;
       -o-transition: width 0.4s ease;
          transition: width 0.4s ease;
}

.search #search-btn {
  width:50px;
  height:28px;
  background:url(../images/icon_search.png) no-repeat;
  float:left;
}

.search-inner {
  width:245px;
}

.search:hover, .search.active {
  width:245px;
}

.search .bottom, .search .left, .search .right {
  position: absolute;
  background-color: #a2a2a2
}

.search .bottom {
  width: 214px;
  height: 1px;
  top: 24px;
  left: 0
}

.search .left, .search .right { 
  height: 5px;
  width: 1px
}

.search .left {
  top: 22px;
  left: 56px;
  background-color:#CCC;
}

.search .right {
  top: 22px;
  left: 238px;
  background-color:#CCC;
}

.search form {
  margin-top: 2px;
  width: 162px;
  float:left;
}

.search form input {
  color: #2f2f2f;
  font-size: 0.95em;
  width: 178px;  
  border: none;
  margin-left: 6px;  
  z-index: 1500;  
  position: relative;
  background-color: transparent;
  border-bottom:1px solid #CCC;
  padding:0 0 0 4px;
  outline:none;
  height:24px;
}

.search:hover form input {
  border-bottom:1px solid #33B5E5;
}

.search:hover .bottom, .search:hover .left, .search:hover .right {
  background-color: #33b5e5;
}

.search:hover #search-btn {
  background-position: 0 -28px
}

.search form input:focus {
  color: #222;
  font-weight: bold
}

.moremenu {
  float: right;
  position: relative;
  width: 50px;
  height:28px;
  display: block;
  margin-top:-3px;
  margin-bottom:7px;
  overflow:hidden;
  -webkit-transition: width 0.25s ease;
     -moz-transition: width 0.25s ease;
       -o-transition: width 0.25s ease;
          transition: width 0.25s ease;
}

.moremenu #more-btn {
  width:40px;
  height:28px;
  background:url(../images/icon_more.png) no-repeat;
  border-left:1px solid #CCC;
  float:left;
  cursor:pointer;
}

.moremenu:hover #more-btn {
  background-position:0 -28px;
}

.morehover {
  position:absolute;
  right:6px;
  top:-9px;
  width:40px;
  height:35px;
  z-index:99;
  overflow:hidden;

  -webkit-opacity:0;
     -moz-opacity:0;
       -o-opacity:0;
          opacity:0;

  -webkit-transform-origin:100% 0%;
     -moz-transform-origin:100% 0%; 
       -o-transform-origin:100% 0%;
          transform-origin:100% 0%;
  
  -webkit-transition-property: -webkit-opacity;
  -webkit-transition-duration: .25s;
  -webkit-transition-timing-function:ease;

  -moz-transition-property: -webkit-opacity;
  -moz-transition-duration: .25s;
  -moz-transition-timing-function:ease;

  -o-transition-property: -webkit-opacity;
  -o-transition-duration: .25s;
  -o-transition-timing-function:ease;
  
  -transition-property: -webkit-opacity;
  -transition-duration: .25s;
  -transition-timing-function:ease;
}

.morehover:hover,
.morehover.hover {
  opacity:1;
  height:385px;
  width:268px;
  -webkit-transition-property:height,  -webkit-opacity;
}

.morehover .top {
  width:268px;
  height:39px;
  background:url(../images/more_top.png) no-repeat;
}

.morehover .mid {
  width:228px;
  background:url(../images/more_mid.png) repeat-y;
  padding:10px 20px 0 20px;
}

.morehover .mid .header {
  border-bottom:1px solid #ccc;
  font-weight:bold;
}

.morehover .bottom {
  width:268px;
  height:6px;
  background:url(../images/more_bottom.png) no-repeat;
}

.morehover ul {
  margin:10px 10px 20px 0;
}

.morehover ul li {
  list-style:none;
}

.morehover ul li.active a,
.morehover ul li.active a:hover {
  color:#222 !important;
}

.morehover ul li.active img {
  margin-right:4px;
}




/* MARQUEE */
.slideshow-container {
  width:100%;
  overflow:hidden;
  position:relative;
}
.slideshow-container .slideshow-prev {
  position:absolute;
  top:50%;
  left:0px;
  margin-top:-36px;
  z-index:99;
}
.slideshow-container .slideshow-next {
  position:absolute;
  top:50%;
  margin-top:-36px;
  z-index:99;
  right:0px;
}

.slideshow-container .pagination {
  position:absolute;
  bottom:20px;
  width:100%;
  text-align:center;
  z-index:99;
}
.slideshow-container .pagination ul {
  margin:0;
}
.slideshow-container .pagination ul li{
  display: inline-block;
  width:12px;
  height:12px;
  text-indent:-8000px;
  list-style:none;
  margin: 0 2px;
  border-radius:6px;
  background-color:#ccc;
  cursor:pointer;
        -webkit-transition:color .5s ease-in;  
        -moz-transition:color .5s ease-in;  
        -o-transition:color .5s ease-in;  
        transition:color .5s ease-in;
}
.slideshow-container .pagination ul li:hover {
  background-color:#999;
}
.slideshow-container .pagination ul li.active {
  background-color:#33b5e5;
}
.slideshow-container .pagination ul li.active:hover {
  background-color:#33b5e5;
}
.slideshow-container ul li {
  display:inline;
  list-style:none;
}




a.download-sdk {
    float:right;
    margin:-10px 0;
    height:30px;
    padding-top:4px;
    padding-bottom:0px;
}

#nav-x {
  padding-top: 14px;
}

#nav-x .wrap {
  min-height:34px;
}

#nav-x .wrap,
#searchResults.wrap {
    max-width:940px;
    border-bottom:1px solid #CCC;
}

#searchResults.wrap #leftSearchControl {
  min-height:700px
}
.nav-x {
    margin-left:0;
    margin-bottom:0;
}










/*
 * CSS Styles that are needed by jScrollPane for it to operate correctly.
 */

.jspContainer {
  overflow: hidden;
  position: relative;
}

.jspPane {
  position: absolute;
  overflow: hidden;
  width:100% !important; /* to avoid cut-off api names in reference in horiz scroll */
}

.jspVerticalBar {
  position: absolute;
  top: 0;
  right: 0;
  width: 4px;
  height: 100%;
  background: #f5f5f5;
}

.jspHorizontalBar {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 4px;
  background: #f5f5f5;
}

.jspVerticalBar *,
.jspHorizontalBar * {
  margin: 0;
  padding: 0;
}
.jspCap {
  display: block;
}

.jspVerticalBar .jspCap {
  height: 4px;
}

.jspHorizontalBar .jspCap {
  width: 0;
  height: 100%;
}

.jspHorizontalBar .jspCap {
  float: left;
}

.jspTrack {
  position: relative;
}

.jspDrag {
  background: #bbb;
  position: relative;
  top: 0;
  left: 0;
  cursor: pointer;
}

.jspDrag:hover,
.jspDrag:active {
  border-color: #09c;
  background-color: #4cadcb;
  background-image: -webkit-gradient(linear, left top, right top, from(#5dbcd9), to(#4cadcb));
  background-image: -webkit-linear-gradient(left, #5dbcd9, #4cadcb);
  background-image: -moz-linear-gradient(left, #5dbcd9, #4cadcb);
  background-image: -ms-linear-gradient(left, #5dbcd9, #4cadcb);
  background-image: -o-linear-gradient(left, #5dbcd9, #4cadcb);
  background-image: linear-gradient(left, #5dbcd9, #4cadcb);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#5dbcd9', EndColorStr='#4cadcb'); 
}

.jspHorizontalBar .jspTrack,
.jspHorizontalBar .jspDrag {
  float: left;
  height: 100%;
}

.jspArrow {
  background: #999;
  text-indent: -20000px;
  display: block;
  cursor: pointer;
}

.jspArrow.jspDisabled {
  cursor: default;
  background: #ccc;
}

.jspVerticalBar .jspArrow {
  height: 16px;
}

.jspHorizontalBar .jspArrow {
  width: 16px;
  float: left;
  height: 100%;
}

.jspVerticalBar .jspArrow:focus {
  outline: none;
}

.jspCorner {
  float: left;
  height: 100%;
}

/* Yuk! CSS Hack for IE6 3 pixel bug :( */
* html .jspCorner {
  margin: 0 -3px 0 0;
}
/******* end of jscrollpane *********/





/************ DEVELOP HOMEPAGE ******************/

/* Slideshow */
.slideshow-develop {
  height: 300px;
  width: 940px;
  position: relative;
  overflow:hidden;
}
.slideshow-develop .frame {
  width: 940px;
  height: 300px;
}
.slideshow-develop img.play {
  max-width:350px;
  max-height:240px;
  margin:20px 0 0 90px;
  -webkit-transform: perspective(800px ) rotateY( 35deg );
  box-shadow: -16px 20px 40px rgba(0, 0, 0, 0.3);
  -moz-box-shadow: -16px 20px 40px rgba(0, 0, 0, 0.3);
  -webkit-box-shadow: -16px 20px 40px rgba(0, 0, 0, 0.3);
}
.slideshow-develop img.play.no-shadow {
    box-shadow: none;
    -moz-box-shadow: none;
    -webkit-box-shadow: none;
}
.slideshow-develop img.play.no-transform {
  -webkit-transform: none;
}
.slideshow-develop a.slideshow-next {
  background: url(../images/arrow-right-develop.png);
}
.slideshow-develop a.slideshow-prev {
  background: url(../images/arrow-left-develop.png);
}
.slideshow-develop .content-right {
  float: left;
}
.slideshow-develop .content-right h2 {
  padding:0;
  margin-bottom:10px;
  border:none;
}
.slideshow-develop .item {
  height: 300px;
  width: 940px;
}
.slideshow-develop .pagination ul li.active {
  background-color: #F80;
}
.slideshow-develop .pagination ul li.active:hover {
  background-color: #F80;
}
.slideshow-develop .item hr {
  margin:5px 0 10px;
}
.slideshow-develop .item p {
  margin:10px 0;
}
.slideshow-develop .item p.title-intro {
  position:absolute;
  margin:0;
}

/* Feeds */
.feed ul {
  margin: 0;
}
.feed .feed-nav {
  height: 25px;
  border-bottom: 1px solid #CCC;
}
.feed .feed-nav li {
  list-style: none;
  float: left;
  height: 21px; /* +4px bottom border = 25px; same as .feed-nav */
  margin-right: 25px;
  cursor: pointer;
}
.feed .feed-nav li.active {
  color: #000;
  border-bottom: 4px solid #F80;
}
.feed .feed-container {
  overflow: hidden;
  width: 460px;
}
.feed .feed-container .feed-frame {
  width: 1000px;
}
.feed .feed-container .feed-frame ul {
  float: left;
  width:460px;
}
.feed .feed-container .feed-frame ul ul {
  float: none;
  margin:10px 0 0 30px;
}
.feed .feed-container .feed-frame li {
  list-style: none;
  margin: 20px 0 20px 0;
  width: 460px;
  height:93px;
}
.feed .feed-container .feed-frame li.playlist {
  height:auto;
}
.feed .feed-container .feed-frame li.playlist a {
  height:93px;
  display:block;
}
.feed .feed-container .feed-frame li.more {
  height:20px;
  margin:10px 0 5px 5px;
}
.feed .feed-container .feed-frame li.more a {
  height:inherit;
}
.feed .feed-container .feed-frame li.playlist-video {
  list-style: none;
  margin: 0;
  width: 460px;
  height:55px;
  font-size:12px;
}
.feed .feed-container .feed-frame li.playlist-video a {
  height:45px;
  padding:5px;
}
.feed .feed-container .feed-frame li.playlist-video h5 {
  font-size:12px;
  line-height:13px;
  margin:0;
}
.feed .feed-container .feed-frame li.playlist-video p {
  margin:5px 0 0;
  line-height:15px;
}
.feed-container .feed-frame div.feed-image {
  float: left;
  border: 1px solid #999;
  margin:0 20px 0 0;
  width:122px;
  height:92px;
  background:url('../images/blog-default.png') no-repeat 0 0;
  background-size:180px;
}
#jd-content .feed .feed-container .feed-frame li img {
  float: left;
  border: 1px solid #999;
  margin:0 20px 0 0;
  width:122px;
  height:92px;
}
#jd-content .feed .feed-container .feed-frame li.playlist-video img {
  width:inherit;
  height:inherit;
}

.feed .feed-container .feed-frame li a,
.feed .feed-container .feed-frame li a:active {
  color:#555 !important;
}

.feed .feed-container .feed-frame li a:hover,
.feed .feed-container .feed-frame li a:hover * {
  color:#7AA1B0 !important;
}

/* Video player */
#player-wrapper {
  display:none;
  margin: -1px auto 0;
  position: relative;
  width: 940px;
  height: 0px;
}
#player-frame {
  background: #EFEFEF;
  border: 1px solid #CCC;
  padding: 0px 207px;
  z-index: 10; /* stay above marque, but below search suggestions */
  width: 525px;
  height: 330px;
  position: relative;
}



/************ DISTRIBUTE HOMEPAGE ***************/

.marquee {
  width: 760px;
}
.marquee .main-img {
  float: left;
  margin-top: 20px;
  width: 490px;
}
.marquee .copy {
  width: 270px;
  float: left;
  margin-top: 30px;
}
.distribute-features {
  margin: 0;
}
.distribute-features ul {
  margin: 0;
}
.distribute-features ul li {
  list-style: none;
  float: left;
  border-top: 1px solid #9C0;
  width: 220px;
  margin-right: 50px;
}
.distribute-features ul li.last {
  margin-right: 0px;
}



/************ DEVELOP TOPIC CONTAINERS ************/

.landing-banner,
.landing-docs {
  margin:20px 0 0;
}
.landing-banner div:first-child,
.landing-docs div:first-child,
.landing-docs .col-12 {
  margin-left:0;
  min-height:280px;
}
.landing-banner div:last-child,
.landing-docs div:last-child,
.landing-docs .col-12 {
  margin-right:0;
}

.landing-banner h1 {
  margin-top:0;
}
.landing-docs {
  clear:left;
  overflow:hidden;
}
.landing-docs h3 {
  font-size:14px;
  line-height:21px;
  color:#555;
  text-transform:uppercase;
  border-bottom:1px solid #CCC;
  margin:0 0 20px;
}
.landing-docs a {
  color:#333 !important;
}

.landing-docs a:hover,
.landing-docs a:hover * {
  color:#7AA1B0 !important
}

.landing-docs .normal-links a {
  color:#258aaf !important;
}

.plusone {
  float:right;
}



/************* HOME/LANDING PAGE *****************/

.slideshow-home {
  height: 500px;
  width: 940px;
  border-bottom: 1px solid #CCC;
  position: relative;
  margin: 0;
}
.slideshow-home .frame {
  width: 940px;
  height: 500px;
}
.slideshow-home .content-left {
  float: left;
  text-align: center;
  vertical-align: center;
  margin: 0 0 0 35px;
}
.slideshow-home .content-right {
  margin: 80px 0 0 0;
}
.slideshow-home .content-right p {
  margin-bottom: 10px;
}
.slideshow-home .content-right p:last-child {
  margin-top: 15px;
}
.slideshow-home .content-right h1 {
  padding:0;
}
.slideshow-home .item {
  height: 500px;
  width: 940px;
}
.home-sections {
  padding: 30px 20px 20px;
  margin: 20px 0;
  background: -webkit-linear-gradient(top, #F6F6F6,#F9F9F9);
}
.home-sections ul {
  margin: 0;
}
.home-sections ul li {
  float: left;
  display: block;
  list-style: none;
  width: 170px;
  height: 35px;
  border: 1px solid #ccc;
  background: white;
  margin-right: 10px;
  border-radius: 1px;
  -webkit-border-radius: 1px;
  -moz-border-radius: 1px;
  box-shadow: 1px 1px 5px #EEE;
  -webkit-box-shadow: 1px 1px 5px #EEE;
  -moz-box-shadow: 1px 1px 5px #EEE;
  background: white;
}
.home-sections ul li:hover {
  background: #F9F9F9;
  border: 1px solid #CCC;
}
.home-sections ul li a,
.home-sections ul li a:hover {
  font-weight: bold;
  margin-top: 8px;
  line-height: 18px;
  float: left;
  width: 100%;
  text-align: center;
  color: #09c !important;
}
.home-sections ul li a {
  font-weight: bold;
  margin-top: 8px;
  line-height: 18px;
  float: left;
  width:100%;
  text-align:center;
}
.home-sections ul li img {
  float: left;
  margin: -8px 0 0 10px;
}
.home-sections ul li.last {
  margin-right: 0px;
}
.fullpage #footer {
  margin-top: -40px;
}
