/*
 * Basic HTML style information.
 */
html,
address,
blockquote,listing,
body, dd, div,
dl, dt, fieldset, legend,form,
frame, frameset,
h1, h2, h3, h4,
h5, h6, noframes,noscript,
ol, p, ul, center,
dir, hr, menu, pre, plaintext, xmp  { display: block }

ol				{counter-reset: _anonymous; list-style-type: decimal}
ul,dir,menu  	{counter-reset: _anonymous; list-style-type: disc}
li           	{display: list-item}
li				{counter-increment: _anonymous}

head            { display: none }
table           { display: table }
tr              { display: table-row }
thead           { display: table-header-group }
tbody           { display: table-row-group }
tfoot           { display: table-footer-group }
col             { display: table-column }
colgroup        { display: table-column-group }
td, th          { display: table-cell; }
caption         { display: table-caption }
th              { font-weight: bolder;}
caption         { text-align: center;horizontal-align:top }
button, textarea,
input, object, 
select, img { display:inline-block; }
pre,plaintext, xmp   { white-space: pre }
h1, h2, h3, h4,
h5, h6, b,
strong          { font-weight: bold }
i, cite, em,dfn,
var, address    { font-style: italic }
pre, tt, code,plaintext, xmp,
kbd, samp       { font-family: monospace }
ol              { list-style-type: decimal }
br:before       { content: "\A" }
center          { text-align: center }
sub             { vertical-align: sub }
sup             { vertical-align: super }
u, ins          { text-decoration: underline }
input			{ text-decoration: none }
button			{ white-space: nowrap }
a[href]			{ text-decoration: underline }

/*
 * styles that may be different for different user agent.
 * This part may need to move out and put into different css files.
 */
body            { line-height: 1.12em }
h1              { font-size: 2em; margin: .67em 0 }
h2              { font-size: 1.5em; margin: .75em 0 }
h3              { font-size: 1.17em; margin: .83em 0 }
h4, p,ul,
fieldset, form,
ol, dl, dir,
menu            { margin: 1.12em 0 }
blockquote      { margin: 1em 40px }
h5              { font-size: .83em; margin: 1.5em 0 }
h6              { font-size: .75em; margin: 1.67em 0 }
blockquote      { margin-left: 40px; margin-right: 40px }
big             { font-size: larger }
small, sub, sup { font-size: smaller }
s, strike, del  { text-decoration: line-through }
hr              { border: 1px inset }
ol, ul, dir,
menu, dd        { margin-left: 40px;border:0px }
ol ul, ul ol,
ul ul, ol ol    { margin-top: 0; margin-bottom: 0 }
abbr, acronym   { font-variant: small-caps; letter-spacing: 0.1em }
a[href]         { color:blue;}
select			{background-color: window;font-family:sans-serif;font-size:13px;font-weight: normal;}
textarea		{border: 2px inset;font-size:13px;font-family:monospace}
textarea,
input 			{background-color: window}
input,
input[type=text],
input[type=password] {border: 2px inset;font-size:13px;font-family:sans-serif;font-weight: normal;}
/* following upcased TYPE is for workaround the WTP M2 bug of not setting default content type */
input[TYPE=submit],input[TYPE=reset],input[TYPE=button],input[TYPE=cancel],
button,
input[type=button],
input[type=reset],
input[type=cancel],
input[type=submit] {background-color: ButtonFace; border: 2px outset; font-size:13px;
					font-family:sans-serif;text-align: center;font-weight: normal;}
input[type=image],
input[type=checkbox],
input[type=radio]  {border: none }
input[type=hidden]  {border: none }
img				{border: 0px none}
listing         {font-family:monospace;font-size: medium;white-space: pre; margin: 1em 0;}
tbody,thead,tfoot     {vertical-align: middle;}
blink 			{text-decoration: blink;}

hr 		{margin: 0.5em auto 0.5em auto;}
caption  {border: 0px none;margin: 0px; padding:0px 0px 4px 0px;}
td, th,
table    {border: 4px none;}
button   {padding: 3px 5px;text-align: center;vertical-align: middle;}
button,textarea,input   {vertical-align: text-bottom;color:black;font-style:none;}
select {vertical-align: text-bottom;}
input[type=image]  {vertical-align: baseline;}
li   {min-height:1.2em}
button {min-height:1.8em}
div,tr,form {min-height:1.2em}
table,td {min-width:1.2em;min-height:1.2em}

/* 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;}

/**
 * We do not write codes to support some elements. This part defines properties for them 
 * to improve the look of these elements.
 */
applet {border: 1px solid;}
fieldset {border: 2px groove;}
applet,iframe {display:inline-block; border:3px inset; }
object {display:inline-block;border:0px none;}


/* 
 * Sets right margin to have gap between widgets.
 */
input,textarea,button	 { margin-right: 2px;}