/* file: android-developer-docs.css
   author: smain
   date: september 2008
   info: developer doc styles (developer.android.com)
*/

@import url("android-developer-core.css");

#title {
  border-bottom: 4px solid #ccc;
  display:none;
}

#title h1 {
  color:#336666;
  margin:0;
  padding: 5px 10px;
  font-size: 1em;
  line-height: 15px;
}

#title h1 .small{
  color:#000;
  margin:0;
  font-size: 13px;
  padding:0 0 0 15px;
}

/* SIDE NAVIGATION */

#side-nav {
  padding:0 6px 0 0;
  background-color: #fff;
  font-size:12px;
}

#resize-packages-nav {
/* keeps the resize handle below the h-scroll handle */
  height:270px;
  overflow:hidden;
  max-height:100%;
}

#packages-nav {
  height:270px;
  max-height:inherit;
  position:relative;
  overflow:auto;
}

#classes-nav,
#devdoc-nav {
  overflow:auto;
  position:relative;
}

#side-nav ul {
  list-style: none;
  margin: 0;
  padding:5px 0;
}

#side-nav ul ul {
  margin: .5em 0 0 0;
  padding: 0;
}

#side-nav li {
  padding:0;
  line-height:16px;
  white-space:nowrap;
  zoom:1;
}

#side-nav li h2 {
  font-size:12px;
  font-weight: bold;
  margin:.5em 0 0 0;
  padding: 3px 0 1px 9px;
}

#side-nav li a {
  text-decoration:none;
  padding: 0 0 0 18px;
  zoom:1;
}

#side-nav li a span+span {
  display:none;
}

#side-nav li a:hover {
  text-decoration:underline;
}

#side-nav li a+a {
  padding: 0;
}
/*second level (nested) list*/
#side-nav li li li a {
  padding: 0 0 0 28px;
}
/*third level (nested) list*/
#side-nav li li li li a {
  padding: 0 0 0 38px;
}

#side-nav .selected {
  background-color: #435a6e;
  color: #fff;
  font-weight:bold;
}

#side-nav .selected a {
  color: #fff;
  text-decoration:none;
}

#side-nav strong {
  display:block;
}

#side-nav .toggle-list .toggle-img {
  margin:0;
  padding:0;
  position:absolute;
  top:0;
  left:0;
  height:16px;
  width:15px;
  outline-style:none;
}
/* second-level toggle */
#side-nav .toggle-list .toggle-list .toggle-img {
  left:10px;
}

#side-nav .closed .toggle-img,
#side-nav .open .closed .toggle-img {
  background:url('images/triangle-closed-small.png') 7px 4px no-repeat;
}
#side-nav .open .toggle-img {
  background:url('images/triangle-opened-small.png') 7px 4px no-repeat;
}

#side-nav .toggle-list {
  position:relative;
}

#side-nav .toggle-list ul {
  margin:0;
  display:none;
}

#side-nav .toggle-list div {
  display:block;
}

#index-links .selected {
  background-color: #fff;
  color: #000;
  font-weight:normal;
  text-decoration:none;
}

#index-links {
  padding:7px 0 4px 10px;
}

/* nav tree */

#nav-tree ul {
  padding:5px 0 1.5em;
}

#side-nav #nav-tree ul li a,
#side-nav #nav-tree ul li span.no-children {
  padding: 0 0 0 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 {
  margin:0;
}

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

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

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

#nav-swap {
  font-size:10px;
  line-height:10px;
  margin-left:1em;
  text-decoration:none;
  display:block;
}

#tree-link {

}

/* DOCUMENT BODY */

#doc-content {
  overflow:auto;
}

#jd-header {
  background-color: #E2E2E2;
  padding: 7px 15px;
}

#jd-header h1 {
  margin: 0 0 10px;
  font-size:1.7em;
}

#jd-header .crumb {
  font-size:.9em;
  line-height:1em;
  color:#777;
}

#jd-header .crumb a,
#jd-header .crumb a:visited {
  text-decoration:none;
  color:#777;
}

#jd-header .crumb a:hover {
  text-decoration:underline;
}

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

#jd-header td {
  border:none;
  padding:0;
  vertical-align:top;
}

#jd-header.guide-header {
  background-color:#fff;
  color:#435a6e;
  height:50px;
}

#jd-descr {
  position:relative;
}

/* summary tables for reference pages */
.jd-sumtable {
  margin: .5em 1em 1em 1em;
  width:95%; /* consistent table widths; within IE's quirks */
  font-size:.9em;
}

.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-subclasses {
  margin: 1em 0 0 0;
  max-width:968px;
}

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

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

#api-level-toggle {
  padding:0 10px;
  font-size:11px;
  float:right;
}

#api-level-toggle label.disabled {
  color:#999;
}

div.api-level {
  font-size:.8em;
  font-weight:normal;
  color:#999;
  float:right;
  padding:0 7px 0;
  margin-top:-25px;
}

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

/* Force link colors for IE6 */
div.api-level a {
  color:#999;
}
#api-info-block div.api-level a:link {
  color:#444;
}
#api-level-toggle a {
  color:#999;
}

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

div#naMessage div {
  width:450px;
  position:fixed;
  margin:50px 0;
  padding:4em 4em 3em;
  background:#FFF;
  background:rgba(255,255,255,0.7);
  border:1px solid #dddd00;
}
/* IE6 can't position fixed */
* html div#naMessage div { position:absolute; }

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

.absent,
.absent a:link,
.absent a:visited,
.absent a:hover,
.absent * {
  color:#bbb !important;
  cursor:default !important;
  text-decoration:none !important;
}

#api-level-toggle a,
.api-level a {
  color:inherit;
  text-decoration:none;
}

#api-level-toggle a:hover,
.api-level a:hover {
  color:inherit;
  text-decoration:underline !important;
  cursor:pointer !important;
}

#side-nav li.absent.selected,
#side-nav li.absent.selected *,
#side-nav div.label.absent.selected,
#side-nav div.label.absent.selected * {
  background-color:#eaeaea !important;
}
/* IE6 quirk (won't chain classes, so just keep background blue) */
* html #side-nav li.selected,
* html #side-nav li.selected *,
* html #side-nav div.label.selected,
* html #side-nav div.label.selected * {
  background-color: #435a6e !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)";
}


/* applies to a div containing links to summary tables */
.sum-details-links {
  padding:0;
  font-weight:normal;
}

.sum-details-links a {
  text-decoration:none;
}

.sum-details-links a:hover {
  text-decoration:underline;
}


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

#jd-content {
  padding: 18px 15px;
}

hr {
  background-color:#ccc;
  border-color:#fff;
  margin:2em 0 1em;
}

/* DOC CLASSES */

#jd-content h1 {
/*sdk page*/
  font-size:1.6em;
  color:#336666;
  margin:0 0 .5em;
}

#jd-content h2 {
  font-size:1.45em;
  color:#111;
  border-top:2px solid #ccc;
  padding: .5em 0 0;
  margin: 2em 0 1em 0;
}

#jd-content h3 {
  font-size:1.3em;
  color:#3a3a3a;
  padding: 0;
  margin: 1.5em 0 .65em 0;
}

#jd-content h4 {
  font-size:1.1em;
  color:#3a3a3a;
  padding: 0;
  margin: 1.25em 0 .65em 0;
}

#jd-content h5 {
  font-size:1.0em;
  color:#3a3a3a;
  padding: 0;
  margin: 1em 0 .65em 0;
}

#jd-content .small-header {
  font-size:1em;
  color:#000;
  font-weight:bold;
  border:none;
  padding:0;
  margin:1em 0 .5em;
  position:inherit;
}

#jd-content table {
  margin: 0 0 1em 1em;
}

#jd-content img {
  margin: 0 0 1em 1em;
}

#jd-content li img,
#jd-content dd img {
  margin:.5em 0 0 1em;
}

.nolist {
  list-style:none;
  padding:0;
  margin:0 0 1em 1em;
}

.nolist li {
  padding:0 0 2px;
  margin:0;
}

h4 .normal {
  font-size:.9em;
  font-weight:normal;
}

.caps {
  font-variant:small-caps;
  font-size:1.2em;
}

dl.tag-list dl.atn-list {
  padding:0 0 0 2em;
}

.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;
  line-height:1em;
}

.jd-tagdescr p {
  margin:.5em 0;
  padding: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;
}

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

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

#jd-content table h2 {
  background-color: #d6d6d6;
  font-size: 1.1em;
  margin:0 0 10px;
  padding:5px;
  left:0;
  width:auto;
}

div.special {
  padding: .5em 1em 1em 1em;
  margin: 0 0 1em;
  background-color: #DAF3FC;
  border:1px solid #d3ecf5;
  border-radius:5px;
  -moz-border-radius:5px;
  -webkit-border-radius:5px;
}

div.special p {
  margin: .5em 0 0 0;
}

div.special ol {
  margin: 0;
}

div.special ol li {
  margin: 0;
  padding: 0;
}

#jd-content div.special h2,
#jd-content div.special h3 {
  color:#669999;
  font-size:1.2em;
  border:none;
  margin:0 0 .5em;
  padding:0;
}

p.note, div.note,
p.caution, div.caution,
p.warning, div.warning {
  margin: 1em;
  padding: 0 0 0 .5em;
  border-left: 4px solid;
}

p.special-note,
div.special-note {
  background-color:#EBF3DB;
  padding:10px 20px;
  margin:0 0 1em;
}

p.note,
div.note {
 border-color: #99aacc;
}

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

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

li .note,
li .caution,
li .warning {
  margin: .5em 0 0 0;
  padding: .2em .5em .2em .9em;
}

/* Makes sure the first paragraph does not add top-whitespace within the box*/
li .note>p:first-child,
li .caution>p:first-child,
li .warning>p:first-child {
  margin-top:0;
  padding-top:0;
}

dl.xml dt {
  font-variant:small-caps;
  font-size:1.2em;
}

dl.xml dl {
  padding:0;
}

dl.xml dl dt {
  font-variant:normal;
  font-size:1em;
}

.listhead li {
  font-weight: bold;
}

.listhead li *, /*ie*/.listhead li li {
  font-weight: normal;
}

ol.no-style,
ul.no-style {
  list-style:none;
  padding-left:1em;
}

.new,
.new-child {
  font-size: .78em;
  font-weight: bold;
  color: #ff3d3d;
  text-decoration: none;
  vertical-align:top;
  line-height:.9em;
}

.toggle-list.open .new-child {
  display:none;
}

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

p.img-caption {
  margin: -0.5em 0 1em 1em; /* matches default img left-margin */
}

div.figure {
  float:right;
  clear:right;
  margin:1em 0 0 0;
  padding:0 0 0 3em;
  background-color:#fff;
  /* width must be defined w/ an inline style matching the image width */
}

#jd-content
div.figure img {
  margin: 0 0 1em;
}

div.figure p.img-caption {
  margin: -0.5em 0 1em 0;
}

p.table-caption {
  margin: 0 0 0.5em 1em; /* matches default table left-margin */
}


/* toggle for misc content (such as long sample code) 
   see toggleContent() script in android-developer-docs.js */
.toggle-content.closed .toggle-content-toggleme {
  display:none;
}

.toggle-content a[href="#"] {
  text-decoration:none;
  color:inherit;
}

.toggle-content-toggleme {
  padding-bottom:1px; /* fixes animation bounce due to margins */
}

#jd-content .toggle-content img.toggle-content-img {
  margin:0;
}


/* BEGIN quickview sidebar element styles */

#qv-wrapper {
  float: right;
  width:310px; /* +35px padding */
  background-color:#fff;
  margin:-48px 0 2px 0;
  padding:0 0 20px 35px;
}

#qv {
  background-color:#fff;
  border:4px solid #dee8f1;
  margin:0;
  padding:0 5px 5px;
  width:292px; /* +10px padding; +8px border */
  font-size:.9em;
}

#qv ol {
  list-style:none;
  padding: 0;
}

#qv ol ol{
  list-style:none;
  padding: 0 0 0 12px;
  margin:0;
}

#qv ul {
  padding: 0 10px 0 2em;
}

#qv li {
  padding: 0 10px 3px;
  line-height: 1.2em;
}

#qv li li {
  padding: 3px 10px 0;
}

#qv ul li {
  padding: 0 10px 0 0;
}

#qv li.selected a {
  color:#555;
  text-decoration:none;
}

#qv a,
#qv a code {
  color:#cc6600;
}

#qv p {
  margin:8px 0 0;
  padding:0 10px;
}

#qv-extra #rule {
  padding: 0 10px;
  margin: 0;
}

#qv-sub-rule {
  padding: 6px 20px;
  margin: 0;
}

#qv-sub-rule p {
  margin: 0;
}

#jd-content #qv h2 {
  font-size:1.05em;
  font-weight:bold;
  margin:12px 0 .25em 0;
  padding:0 10px;
  background-color:transparent;
  color:#7BB026;
  border:none;
  left:0;
  z-index:1;
}

/* END quickview sidebar element styles */

/* Begin sidebox sidebar element styles */

.sidebox-wrapper {
  float:right;
  clear:right;
  width:310px; /* +35px padding */
  background-color:#fff;
  margin:0;
  padding:0 0 20px 35px;
}

.sidebox {
  border-left:1px solid #dee8f1;
  background-color:#ffffee;
  margin:0;
  padding:8px 12px;
  font-size:0.9em;
  width:285px; /* +24px padding; +1px border */
}

.sidebox p {
  margin-bottom: .75em;
}

.sidebox ul {
  padding: 0 0 0 1.5em;
}

.sidebox li ul {
  margin-top:0;
  margin-bottom:.1em;
}

.sidebox li {
padding:0 0 0 0em;
}

#jd-content .sidebox h2,
#jd-content .sidebox h3,
#jd-content .sidebox h4,
#jd-content .sidebox h5 {
  border:none;
  font-size:1em;
  margin:0;
  padding:0 0 8px;
  left:0;
  z-index:0;
}

.sidebox hr {
  background-color:#ccc;
  border:none;
}

/* End sidebox sidebar element styles */

/* BEGIN image and caption styles (originally for UI Guidelines docs) */

table.image-caption {
  padding:0;
  margin:.5em 0;
  border:0;
}

td.image-caption-i {
  font-size:92%;
  padding:0 5px;
  margin:0;
  border:0;
}

td.image-caption-i img {
  padding:0 1em;
  margin:0;
}

.image-list {
  width:24px;
  text-align:center;
}

td.image-caption-c {
  font-size:92%;
  padding:1em 2px 2px 2px;
  margin:0;
  border:0;
  width:350px;
}

.grad-rule-top {
background-image:url(images/grad-rule-qv.png);
background-repeat:no-repeat;
padding-top:1em;
margin-top:0;
}

.image-caption-nested {
  margin-top:0;
  padding:0 0 0 1em;
}

.image-caption-nested td {
  padding:0 4px 2px 0;
  margin:0;
  border:0;
}

/* END image and caption styles */

/* table of contents */

ol.toc {
  margin: 0 0 1em 0;
  padding: 0;
  list-style: none;
  font-size:95%;
}

ol.toc li {
  font-weight: bold;
  margin: 0 0 .5em 1em;
  padding: 0;
}

ol.toc li p {
  font-weight: normal;
}

ol.toc li ol {
  margin: 0;
  padding: 0;
}

ol.toc li li {
  padding: 0;
  margin: 0 0 0 1em;
  font-weight: normal;
  list-style: none;
}

table ol.toc {
  margin-left: 0;
}

.columns td {
  padding:0 5px;
  border:none;
}

/* link table */
.jd-linktable {
  margin: 0 0 1em;
  border-bottom: 1px solid #888;
}
.jd-linktable th,
.jd-linktable td {
  padding: 3px 5px;
  vertical-align: top;
  text-align: left;
  border:none;
}
.jd-linktable tr {
  background-color: #fff;
}
.jd-linktable td {
  border-top: 1px solid #888;
  background-color: inherit;
}
.jd-linktable td  p {
  padding: 0 0 5px;
}
.jd-linktable .jd-linkcol {
}
.jd-linktable .jd-descrcol {
}
.jd-linktable .jd-typecol {
  text-align:right;
}
.jd-linktable .jd-valcol {
}
.jd-linktable .jd-commentrow {
  border-top:none;
  padding-left:25px;
}
.jd-deprecated-warning {
  margin-top: 0;
  margin-bottom: 10px;
}

tr.alt-color {
  background-color: #f6f6f6;
}

/* expando trigger */
#jd-content .jd-expando-trigger-img {
  margin:0;
}

/* jd-expando */
.jd-inheritedlinks {
  padding:0 0 0 13px
}

/* SDK PAGE */
table.download tr {
  background-color:#d9d9d9;
}

table.download tr.alt-color {
  background-color:#ededed;
}

table.download td,
table.download th {
  border:2px solid #fff;
  padding:10px 5px;
}

table.download th {
  background-color:#6d8293;
  color:#fff;
}

/* INLAY 180 COPY and 240PX EXTENSION */
/* modified to 43px so that all browsers eliminate the package panel h-scroll */
.g-tpl-240 .g-unit,
.g-unit .g-tpl-240 .g-unit,
.g-unit .g-unit .g-tpl-240 .g-unit {
  display: block;
  margin: 0 0 0 243px;
  width: auto;
  float: none;
}
.g-unit .g-unit .g-tpl-240 .g-first,
.g-unit .g-tpl-240 .g-first,
.g-tpl-240 .g-first {
  display: block;
  margin: 0;
  width: 243px;
  float: left;
}
/* 240px alt */
.g-tpl-240-alt .g-unit,
.g-unit .g-tpl-240-alt .g-unit,
.g-unit .g-unit .g-tpl-240-alt .g-unit {
  display: block;
  margin: 0 243px 0 0;
  width: auto;
  float: none;
}
.g-unit .g-unit .g-tpl-240-alt .g-first,
.g-unit .g-tpl-240-alt .g-first,
.g-tpl-240-alt .g-first {
  display: block;
  margin: 0;
  width: 243px;
  float: right;
}

/* 200px */
.g-tpl-200 .g-unit,
.g-unit .g-tpl-200 .g-unit,
.g-unit .g-unit .g-tpl-200 .g-unit {
  display: block;
  margin: 0 0 0 200px;
  width: auto;
  float: none;
}
.g-unit .g-unit .g-tpl-200 .g-first,
.g-unit .g-tpl-200 .g-first,
.g-tpl-200 .g-first {
  display: block;
  margin: 0;
  width: 200px;
  float: left;
}
/* 200px alt */
.g-tpl-200-alt .g-unit,
.g-unit .g-tpl-200-alt .g-unit,
.g-unit .g-unit .g-tpl-200-alt .g-unit {
  display: block;
  margin: 0 200px 0 0;
  width: auto;
  float: none;
}
.g-unit .g-unit .g-tpl-200-alt .g-first,
.g-unit .g-tpl-200-alt .g-first,
.g-tpl-200-alt .g-first {
  display: block;
  margin: 0;
  width: 200px;
  float: right;
}

/* 190px */
.g-tpl-190 .g-unit,
.g-unit .g-tpl-190 .g-unit,
.g-unit .g-unit .g-tpl-190 .g-unit {
  display: block;
  margin: 0 0 0 190px;
  width: auto;
  float: none;
}
.g-unit .g-unit .g-tpl-190 .g-first,
.g-unit .g-tpl-190 .g-first,
.g-tpl-190 .g-first {
  display: block;
  margin: 0;
  width: 190px;
  float: left;
}
/* 190px alt */
.g-tpl-190-alt .g-unit,
.g-unit .g-tpl-190-alt .g-unit,
.g-unit .g-unit .g-tpl-190-alt .g-unit {
  display: block;
  margin: 0 190px 0 0;
  width: auto;
  float: none;
}
.g-unit .g-unit .g-tpl-190-alt .g-first,
.g-unit .g-tpl-190-alt .g-first,
.g-tpl-190-alt .g-first {
  display: block;
  margin: 0;
  width: 190px;
  float: right;
}

/* 180px */
.g-tpl-180 .g-unit,
.g-unit .g-tpl-180 .g-unit,
.g-unit .g-unit .g-tpl-180 .g-unit {
  display: block;
  margin: 0 0 0 180px;
  width: auto;
  float: none;
}
.g-unit .g-unit .g-tpl-180 .g-first,
.g-unit .g-tpl-180 .g-first,
.g-tpl-180 .g-first {
  display: block;
  margin: 0;
  width: 180px;
  float: left;
}
/* 180px alt */
.g-tpl-180-alt .g-unit,
.g-unit .g-tpl-180-alt .g-unit,
.g-unit .g-unit .g-tpl-180-alt .g-unit {
  display: block;
  margin: 0 180px 0 0;
  width: auto;
  float: none;
}
.g-unit .g-unit .g-tpl-180-alt .g-first,
.g-unit .g-tpl-180-alt .g-first,
.g-tpl-180-alt .g-first {
  display: block;
  margin: 0;
  width: 180px;
  float: right;
}


/* 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; }
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: 6px; width: 100%; bottom: 0px; left: 0px;
  background: transparent url("images/resizable-s2.gif") repeat scroll center top; }
.ui-resizable-e { cursor: e-resize; width: 6px; right: 0px; top: 0px; height: 100%;
  background: transparent url("images/resizable-e2.gif") repeat scroll right center; }

@media print {

  body {
    overflow:visible;
  }

  #header {
    height:60px;
  }

  #headerLeft {
    padding:0;
  }

  #header-tabs,
  #headerRight,
  #side-nav,
  #api-info-block {
    display:none;
  }

  #body-content {
    position:inherit;
  }

  #doc-content {
    margin-left:0 !important;
    height:auto !important;
    width:auto !important;
    overflow:inherit;
    display:inline;
  }

  #jd-header {
    padding:10px 0;
  }

  #jd-content {
    padding:15px 0 0;
  }

  #footer {
    float:none;
    margin:2em 0 0;
  }

  h4.jd-details-title {
    border-bottom:1px solid #666;
  }

  pre {
    /* these allow lines to break (if there's a white space) */
    overflow: visible;
    text-wrap: unrestricted;
    white-space: -moz-pre-wrap; /* Moz */
    white-space: -pre-wrap; /* Opera 4-6 */
    white-space: -o-pre-wrap; /* Opera 7 */
    white-space: pre-wrap; /* CSS3  */
    word-wrap: break-word; /* IE 5.5+ */
  }

  h1, h2, h3, h4, h5, h6 {
    page-break-after: avoid;
  }

  table, img {
    page-break-inside: avoid;
  }
}
