@namespace url(http://www.w3.org/1999/xhtml); /* set default namespace to HTML */
@namespace xul url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);

/* bidi */

[dir="rtl"] {
	direction:rtl;
	unicode-bidi:embed;
}
[dir="ltr"] {
	direction:ltr;
	unicode-bidi:embed;
}
bdo[dir] {
	unicode-bidi:bidi-override;
}

/* To ensure http://www.w3.org/TR/REC-html40/struct/dirlang.html#style-bidi:
 *
 * "When a block element that does not have a dir attribute is transformed to
 * the style of an inline element by a style sheet, the resulting presentation
 * should be equivalent, in terms of bidirectional formatting, to the
 * formatting obtained by explicitly adding a dir attribute (assigned the
 * inherited value) to the transformed element." */

address, blockquote, body, caption, center, col, colgroup, dd, dir, div, dl, dt,
fieldset, form, h1, h2, h3, h4, h5, h6, hr, html, isindex, li, listing, map, 
marquee, menu, noframes, ol, p, plaintext, pre, table, tbody, td, tfoot, th, 
thead, tr, ul, xmp {
	unicode-bidi:embed;
}


/* blocks */

html, div, map, dt, isindex, form {
	display:block;
}

body {
	display:block;
	margin:8px;
}

p, dl, multicol {
	display:block;
	margin:1em 0;
}

dd {
	display:block;
	-moz-margin-start:40px;
}

blockquote {
	display:block;
	margin:1em 40px;
}

address {
	display:block;
	font-style:italic;
}

center {
	display:block;
	text-align:-moz-center;
}

blockquote[type=cite] {
	display:block;
	margin:1em 0px;
	-moz-padding-start:1em;
	-moz-border-start:solid;
	border-color:blue;
	border-width:thin;
}

span[_moz_quote=true] {
	color:blue;
}

pre[_moz_quote=true] {
	color:blue;
}

h1 {
	display:block;
	font-size:2em;
	font-weight:bold;
	margin:.67em 0;
}

h2 {
	display:block;
	font-size:1.5em;
	font-weight:bold;
	margin:.83em 0;
}

h3 {
	display:block;
	font-size:1.17em;
	font-weight:bold;
	margin:1em 0;
}

h4 {
	display:block;
	font-weight:bold;
	margin:1.33em 0;
}

h5 {
	display:block;
	font-size:0.83em;
	font-weight:bold;
	margin:1.67em 0;
}

h6 {
	display:block;
	font-size:0.67em;
	font-weight:bold;
	margin:2.33em 0;
}

listing {
	display:block;
	font-family:-moz-fixed;
	font-size:medium;
	white-space:pre;
	margin:1em 0;
}

xmp, pre, plaintext {
	display:block;
	font-family:-moz-fixed;
	white-space:pre;
	margin:1em 0;
}

/* tables */

table {
	display:table;
	border-spacing:2px;
	border-collapse:separate;
	margin-top:0;
	margin-bottom:0;
	/* XXXldb do we want this if we're border-collapse:collapse ? */
	-moz-box-sizing:border-box;
	text-indent:0;
}

table[align="left"] {
	float:left;
}

table[align="right"] {
	float:right;
	text-align:start;
}

table[rules]:not([rules="none"]) {
	border-collapse:collapse;
}
	 
/* caption inherits from table not table-outer */	
caption {
	display:table-caption;
	text-align:center;
	-moz-box-sizing:border-box;
}

table[align="center"] > caption {
	margin-left:auto;
	margin-right:auto;
}

table[align="center"] > caption[align="left"] {
	margin-right:0;
}

table[align="center"] > caption[align="right"] {
	margin-left:0;
}

tr {
	display:table-row;
	vertical-align:inherit;
}

col {
	display:table-column;
}

colgroup {
	display:table-column-group;
}

tbody {
	display:table-row-group;
	vertical-align:middle;
}

thead {
	display:table-header-group;
	vertical-align:middle;
}

tfoot {
	display:table-footer-group;
	vertical-align:middle;
}

/* for XHTML tables without tbody */
table > tr {
	vertical-align:middle;
}

td { 
	display:table-cell;
	vertical-align:inherit;
	text-align:inherit; 
	padding:1px;
}

th {
	display:table-cell;
	vertical-align:inherit;
	font-weight:bold;
	padding:1px;
}

tr > form:-moz-is-html, tbody > form:-moz-is-html,
thead > form:-moz-is-html, tfoot > form:-moz-is-html,
table > form:-moz-is-html {
	/* Important:don't show these forms in HTML */
	display: none !important;
}

/* inlines */

q:before {
	content:open-quote;
}

q:after {
	content:close-quote;
}

b, strong {
	font-weight:bolder;
}

i, cite, em, var, dfn {
	font-style:italic;
}

tt, code, kbd, samp {
	font-family:-moz-fixed;
}

u, ins {
	text-decoration:underline;
}

s, strike, del {
	text-decoration:line-through;
}

blink {
	text-decoration:blink;
}

big {
	font-size:larger;
}

small {
	font-size:smaller;
}

sub {
	vertical-align:sub;
	font-size:smaller;
	line-height:normal;
}

sup {
	vertical-align:super;
	font-size:smaller;
	line-height:normal;
}

nobr {
	white-space:nowrap;
}

/* titles */
abbr[title], acronym[title] {
	border-bottom:dotted 1px;
}

/* lists */

ul, menu, dir {
	display:block;
	list-style-type:disc;
	margin:1em 0;
	-moz-padding-start:40px;
}

ol {
	display:block;
	list-style-type:decimal;
	margin:1em 0;
	-moz-padding-start:40px;
}

li {
	display:list-item;
}

/* nested lists have no top/bottom margins */
ul ul,	 ul ol,	 ul dir,	 ul menu,	 ul dl,
ol ul,	 ol ol,	 ol dir,	 ol menu,	 ol dl,
dir ul,	dir ol,	dir dir,	dir menu,	dir dl,
menu ul, menu ol, menu dir, menu menu, menu dl,
dl ul,	 dl ol,	 dl dir,	 dl menu,	 dl dl {
	margin-top:0;
	margin-bottom:0;
}

/* 2 deep unordered lists use a circle */
ol ul,	 ul ul,	 menu ul,	 dir ul,
ol menu, ul menu, menu menu, dir menu,
ol dir,	ul dir,	menu dir,	dir dir {
	list-style-type:circle;
}

/* 3 deep (or more) unordered lists use a square */
ol ol ul,		 ol ul ul,		 ol menu ul,		 ol dir ul,
ol ol menu,	 ol ul menu,	 ol menu menu,	 ol dir menu,
ol ol dir,		ol ul dir,		ol menu dir,		ol dir dir,
ul ol ul,		 ul ul ul,		 ul menu ul,		 ul dir ul,
ul ol menu,	 ul ul menu,	 ul menu menu,	 ul dir menu,
ul ol dir,		ul ul dir,		ul menu dir,		ul dir dir,
menu ol ul,	 menu ul ul,	 menu menu ul,	 menu dir ul,
menu ol menu, menu ul menu, menu menu menu, menu dir menu,
menu ol dir,	menu ul dir,	menu menu dir,	menu dir dir,
dir ol ul,		dir ul ul,		dir menu ul,		dir dir ul,
dir ol menu,	dir ul menu,	dir menu menu,	dir dir menu,
dir ol dir,	 dir ul dir,	 dir menu dir,	 dir dir dir {
	list-style-type:square;
}


/* leafs */

/* <hr> noshade and color attributes are handled completely by
 * the nsHTMLHRElement attribute mapping code
 */
hr {
	display:block;
	height: 2px;
	border:1px inset;
	margin:0.5em auto 0.5em auto;
	color:gray;
	-moz-float-edge:margin-box;
	-moz-box-sizing:border-box;
}

hr[size="1"] {
	border-style:solid none none none;
}

*|*:-moz-any-link img, img[usemap], object[usemap] {
	border:2px solid;
}

img:-moz-broken::before, input:-moz-broken::before,
img:-moz-user-disabled::before, input:-moz-user-disabled::before,
img:-moz-loading::before, input:-moz-loading::before,
applet:-moz-empty-except-children-with-localname(param):-moz-broken::before,
applet:-moz-empty-except-children-with-localname(param):-moz-user-disabled::before {
	content:-moz-alt-content !important;
	unicode-bidi:embed;
}

object:-moz-broken > *|*, applet:-moz-broken > *|*
object:-moz-user-disabled > *|*, applet:-moz-user-disabled > *|* {
	/*
		Inherit in the object's alignment so that if we aren't aligned explicitly
		we'll end up in the right place vertically.	See bug 36997.	Note that this
		is not !important because we _might_ be aligned explicitly.
	*/
	vertical-align:inherit;
}

img:-moz-suppressed, input:-moz-suppressed, object:-moz-suppressed,
embed:-moz-suppressed, applet:-moz-suppressed {
	/*
		Set visibility too in case the page changes display.	Note that we _may_
		want to just set visibility and not display, in general, if we find that
		display: none breaks too many layouts.	And if we decide we really do want
		people to be able to right-click blocked images, etc, we need to set
		neither one, and hack the painting code.... :(
	 */
	display: none !important;
	visibility:hidden !important;
}

img[usemap], object[usemap] {
	color:blue;
}

frameset {
	display:block ! important;
	overflow:-moz-hidden-unscrollable;
	position:static ! important;
	float:none ! important;
	border:none ! important;
}

frame {
	border:none ! important;
}

iframe {
	border:2px inset;
}

noframes {
	display: none;
}

spacer {
	position:static ! important;
	float:none ! important;
}

canvas {
	-moz-user-select:none;
}

/* focusable content:anything w/ tabindex >=0 is focusable */
abbr:focus, acronym:focus, address:focus, b:focus,
base:focus, big:focus, blockquote:focus, br:focus, canvas:focus, caption:focus,
center:focus, cite:focus, code:focus, col:focus, colgroup:focus, dd:focus,
del:focus, dfn:focus, dir:focus, div:focus, dl:focus, dt:focus, em:focus,
fieldset:focus, font:focus, form:focus, h1:focus, h2:focus, h3:focus, h4:focus,
h5:focus, h6:focus, hr:focus, i:focus, img:focus, ins:focus, 
kbd:focus, label:focus, legend:focus, li:focus, link:focus, menu:focus, 
ol:focus, p:focus, pre:focus, q:focus, s:focus, samp:focus, 
small:focus, span:focus, strike:focus, strong:focus, sub:focus, sup:focus, 
table:focus, tbody:focus, td:focus, tfoot:focus, th:focus, thead:focus, 
tr:focus, tt:focus, u:focus, ul:focus, var:focus {
	/* Don't specify the outline-color, we should always use initial value. */
	 outline:1px dotted;
}

/* hidden elements */
area, base, basefont, head, meta, script, style, title,
noembed, param {
	 display: none;
}

/* media elements */
video > xul|videocontrols, audio > xul|videocontrols {
	display:-moz-box;
	-moz-box-orient:vertical;
	-moz-binding:url("chrome://global/content/bindings/videocontrols.xml#videoControls");
}

video:not([controls]) > xul|videocontrols,
audio:not([controls]) > xul|videocontrols {
	visibility:hidden;
}

audio:not([controls]) {
	display: none;
}

/* emulation of non-standard HTML <marquee> tag */
marquee {
	width:-moz-available;
	display:inline-block;
	vertical-align:text-bottom;
	text-align:start;
	-moz-binding:url('chrome://xbl-marquee/content/xbl-marquee.xml#marquee-horizontal');
}

marquee[direction="up"], marquee[direction="down"] {
	-moz-binding:url('chrome://xbl-marquee/content/xbl-marquee.xml#marquee-vertical');
	height:200px;
}

/* PRINT ONLY rules follow */
@media print {

	marquee { -moz-binding:none; }

}