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

#side-nav.not-resizable {
  background:url('images/sidenav-rule.png') no-repeat 243px 0;
}

#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: .35em 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.2em;
  color:#222;
  padding: .75em 0 .65em 0;
  margin:0;
}

#jd-content h4 {
  font-size:1.1em;
  margin-bottom:.5em;
  color:#222;
}

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

.toggle-content-toggleme {
  display:none;
}

.toggle-content-button {
  font-size:.9em;
  line-height:.9em;
  text-decoration:none;
  position:relative;
  top:5px;
}

.toggle-content-button:hover {
  text-decoration:underline;
}

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, p.caution, p.warning {
  margin: 1em;
  padding: 0 0 0 .5em;
  border-left: 4px solid;
}

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

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

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

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

p.warning b, p.warning strong {
  font-weight: bold;
}

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

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 {
  font-size: .78em;
  font-weight: bold;
  color: red;
  text-decoration: none;
  vertical-align:top;
  line-height:.9em;
}

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

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

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

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

/* 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 {
  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;
  width:300px;
  background-color:#fff;
  margin: 0;
  padding: 0 0 20px 20px;
}

.sidebox {
  border-left:1px solid #dee8f1;
  background-color:#ffffee;
  padding:8px 12px;
  font-size:90%;
  width:260px;
}

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

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

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