/* CSS styles for Coverage. */
/* Page-wide styles */
html, body, h1, h2, h3, p, td, th {
    margin: 0;
    padding: 0;
    border: 0;
    outline: 0;
    font-weight: inherit;
    font-style: inherit;
    font-size: 100%;
    font-family: inherit;
    vertical-align: baseline;
    }

/* Set baseline grid to 16 pt. */
body {
    font-family: georgia, serif;
    font-size: 1em;
    }

html>body {
    font-size: 16px;
    }

/* Set base font size to 12/16 */
p {
    font-size: .75em;           /* 12/16 */
    line-height: 1.33333333em;  /* 16/12 */
    }

table {
    border-collapse: collapse;
    }

a.nav {
    text-decoration: none;
    color: inherit;
    }
a.nav:hover {
    text-decoration: underline;
    color: inherit;
    }

/* Page structure */
#header {
    background: #f8f8f8;
    width: 100%;
    border-bottom: 1px solid #eee;
    }

#source {
    padding: 1em;
    font-family: "courier new", monospace;
    }

#indexfile #footer {
    margin: 1em 3em;
    }

#pyfile #footer {
    margin: 1em 1em;
    }

#footer .content {
    padding: 0;
    font-size: 85%;
    font-family: verdana, sans-serif;
    color: #666666;
    font-style: italic;
    }

#index {
    margin: 1em 0 0 3em;
    }

/* Header styles */
#header .content {
    padding: 1em 3em;
    }

h1 {
    font-size: 1.25em;
}

h2.stats {
    margin-top: .5em;
    font-size: 1em;
}
.stats span {
    border: 1px solid;
    padding: .1em .25em;
    margin: 0 .1em;
    cursor: pointer;
    border-color: #999 #ccc #ccc #999;
}
.stats span.hide_run, .stats span.hide_exc,
.stats span.hide_mis, .stats span.hide_par,
.stats span.par.hide_run.hide_par {
    border-color: #ccc #999 #999 #ccc;
}
.stats span.par.hide_run {
    border-color: #999 #ccc #ccc #999;
}

.stats span.run {
    background: #ddffdd;
}
.stats span.exc {
    background: #eeeeee;
}
.stats span.mis {
    background: #ffdddd;
}
.stats span.hide_run {
    background: #eeffee;
}
.stats span.hide_exc {
    background: #f5f5f5;
}
.stats span.hide_mis {
    background: #ffeeee;
}
.stats span.par {
    background: #ffffaa;
}
.stats span.hide_par {
    background: #ffffcc;
}

/* Help panel */
#keyboard_icon {
    float: right;
    cursor: pointer;
}

.help_panel {
    position: absolute;
    background: #ffc;
    padding: .5em;
    border: 1px solid #883;
    display: none;
}

#indexfile .help_panel {
    width: 20em; height: 4em;
}

#pyfile .help_panel {
    width: 16em; height: 8em;
}

.help_panel .legend {
    font-style: italic;
    margin-bottom: 1em;
}

#panel_icon {
    float: right;
    cursor: pointer;
}

.keyhelp {
    margin: .75em;
}

.keyhelp .key {
    border: 1px solid black;
    border-color: #888 #333 #333 #888;
    padding: .1em .35em;
    font-family: monospace;
    font-weight: bold;
    background: #eee;
}

/* Source file styles */
.linenos p {
    text-align: right;
    margin: 0;
    padding: 0 .5em;
    color: #999999;
    font-family: verdana, sans-serif;
    font-size: .625em;   /* 10/16 */
    line-height: 1.6em;  /* 16/10 */
    }
.linenos p.highlight {
    background: #ffdd00;
    }
.linenos p a {
    text-decoration: none;
    color: #999999;
    }
.linenos p a:hover {
    text-decoration: underline;
    color: #999999;
    }

td.text {
    width: 100%;
    }
.text p {
    margin: 0;
    padding: 0 0 0 .5em;
    border-left: 2px solid #ffffff;
    white-space: nowrap;
    }

.text p.mis {
    background: #ffdddd;
    border-left: 2px solid #ff0000;
    }
.text p.run, .text p.run.hide_par {
    background: #ddffdd;
    border-left: 2px solid #00ff00;
    }
.text p.exc {
    background: #eeeeee;
    border-left: 2px solid #808080;
    }
.text p.par, .text p.par.hide_run {
    background: #ffffaa;
    border-left: 2px solid #eeee99;
    }
.text p.hide_run, .text p.hide_exc, .text p.hide_mis, .text p.hide_par,
.text p.hide_run.hide_par {
    background: inherit;
    }

.text span.annotate {
    font-family: georgia;
    font-style: italic;
    color: #666;
    float: right;
    padding-right: .5em;
    }
.text p.hide_par span.annotate {
    display: none;
    }

/* Syntax coloring */
.text .com {
    color: green;
    font-style: italic;
    line-height: 1px;
    }
.text .key {
    font-weight: bold;
    line-height: 1px;
    }
.text .str {
    color: #000080;
    }

/* index styles */
#index td, #index th {
    text-align: right;
    width: 5em;
    padding: .25em .5em;
    border-bottom: 1px solid #eee;
    }
#index th {
    font-style: italic;
    color: #333;
    border-bottom: 1px solid #ccc;
    cursor: pointer;
    }
#index th:hover {
    background: #eee;
    border-bottom: 1px solid #999;
    }
#index td.left, #index th.left {
    padding-left: 0;
    }
#index td.right, #index th.right {
    padding-right: 0;
    }
#index th.headerSortDown, #index th.headerSortUp {
    border-bottom: 1px solid #000;
    }
#index td.name, #index th.name {
    text-align: left;
    width: auto;
    }
#index td.name a {
    text-decoration: none;
    color: #000;
    }
#index td.name a:hover {
    text-decoration: underline;
    color: #000;
    }
#index tr.total {
    }
#index tr.total td {
    font-weight: bold;
    border-top: 1px solid #ccc;
    border-bottom: none;
    }
#index tr.file:hover {
    background: #eeeeee;
    }
