/* color definitions */
/* 16 column layout */
/* clearfix idiom */
/* common mixins */
/* page layout + top-level styles */
::-webkit-selection,
::-moz-selection,
::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; }

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

ul {
  margin: 0;
  padding: 0; }

strong {
  font-weight: 500; }

em {
  font-style: italic; }

acronym {
  border-bottom: 1px dotted #555555;
  cursor: help; }

acronym:hover {
  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; }
  #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 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 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.expanded ul > li {
      background:#efefef;
      background: rgba(0, 0, 0, 0.03); }
    #nav li.expanded ul > li li {
      background:inherit; }

.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,
  .training-nav-top .prev-page-link {
    left: -5px; }
    .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; }
  .paging-links .next-page-link,
  .training-nav-top .next-page-link,
    .training-nav-top .start-class-link,
    .training-nav-top .start-course-link {
    right: 10px; }
    .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;
  }
      
  .training-nav-top a.disabled,
  .content-footer a.disabled {
    color:#999;
  }
      
  .training-nav-top a.disabled:hover,
  .content-footer a.disabled:hover {
    cursor:default;
    color:#999 !important;
  }
      
  .training-nav-top a.start-class-link,
  .training-nav-top a.start-course-link {
    width:248px;
  }
  
  .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;
  }

/* 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-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 {
  margin:10px 0 0;
}
ul p,
ol p {
  margin:5px 0 0;
}
pre strong, pre b, a strong, a b, a code {
    color: inherit;
}
pre, code {
    color: #060;
    font: 14px/1.5 'courier new', courier, monospace;
}
code {
    font-weight:bold;
}

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;
}
th {
  background-color: #999;
  color: #fff;
  border:solid 1px #DDD;
  font-weight: normal;
}
tr:first-of-type th:first-of-type:empty {
    visibility: hidden;
}
/* --------------------------------------------------------------------------
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;
}



.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 {
    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 {
    height: 28px;
    line-height: 28px;
    margin-right: 16px;
	font-weight: 400;
    min-width: 54px;
    outline: 0;
    padding: 8px 15px;
    text-align: center;
}
.button, .button-secondary {
    height: 34px;
    line-height: 34px;
    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;
}
.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.disabled,
.button.disabled:hover,
.button.disabled:active {
  background:#ebebeb;
  color:#999;
  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;
}
*/
/* --------------------------------------------------------------------------
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;
}


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

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

div.figure {
  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 */
}

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

p.code-caption {
  margin: 0 0 4px 0;
  font: 13px/1.5 'courier new', courier, 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;
}

/* -----------------------------------------------
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 */
}

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 li{
  line-height:1.5em;
  margin: 0 0 2px;
  padding: 0;
}

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

#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;
}

.jd-autocomplete {
  padding-left: 6px;
  padding-right: 6px;
  padding-top: 1px;
  padding-bottom: 1px;
  font-size: 0.81em;
  border: none;
  margin: 0;
  line-height: 1.05em;
}

.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 ***************/





::-webkit-selection,
::-moz-selection,
::selection {
  background-color: #0099cc;
  color: #fff; }

#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;
}

.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:170px;
  
}

/* 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 {
  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:auto !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 p.title-intro {
  position:absolute;
  margin:0;
}
.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;
}

/* 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 .col-6:first-child,
.landing-docs .col-6:first-child,
.landing-docs .col-12 {
  margin-left:0;
  min-height:280px;
}
.landing-banner .col-6:last-child,
.landing-docs .col-6:last-child,
.landing-docs .col-12 {
  margin-right:0;
}

.landing-banner h1 {
  margin-top:0;
}
.landing-docs {
  clear:left;
}
.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
}

.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;
}
