Consistent formatting in CSS files (#8182)

This commit is contained in:
Ryan Hamilton 2020-04-08 06:47:51 -04:00 коммит произвёл GitHub
Родитель 510a377b50
Коммит 5e82b2fb12
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
11 изменённых файлов: 380 добавлений и 300 удалений

Просмотреть файл

@ -17,20 +17,22 @@
* under the License.
*/
.panel-heading #alerts-accordion-toggle:after {
/* symbol for "opening" panels */
font-family: FontAwesome;
content: "\f078";
float: right;
color: grey;
.panel-heading #alerts-accordion-toggle::after {
/* symbol for "opening" panels */
font-family: FontAwesome;
content: "\f078";
float: right;
color: grey;
}
.panel-heading #alerts-accordion-toggle.collapsed:after {
/* symbol for "closing" panels */
font-family: FontAwesome;
content: "\f054";
float: right;
color: grey;
.panel-heading #alerts-accordion-toggle.collapsed::after {
/* symbol for "closing" panels */
font-family: FontAwesome;
content: "\f054";
float: right;
color: grey;
}
#errorHeading {
background-color: #D6D8D9; /* same color as Bootstrap's Dark Alert*/
background-color: #d6d8d9; /* same color as Bootstrap's Dark Alert */
}

Просмотреть файл

@ -17,15 +17,18 @@
* under the License.
*/
.axis path,.axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
.axis path,
.axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
rect {
stroke: black;
cursor: pointer;
stroke: #000;
cursor: pointer;
}
.d3-tip {
line-height: 1;
font-weight: bold;
@ -37,7 +40,7 @@ rect {
}
/* Creates a small triangle extender for the tooltip */
.d3-tip:after {
.d3-tip::after {
box-sizing: border-box;
display: inline;
font-size: 8px;
@ -50,7 +53,7 @@ rect {
}
/* Style northward tooltips differently */
.d3-tip.n:after {
.d3-tip.n::after {
margin: -1px 0 0 0;
top: 100%;
left: 0;

Просмотреть файл

@ -18,79 +18,91 @@
*/
svg {
overflow: hidden;
overflow: hidden;
}
.node rect {
stroke: #333;
stroke-width: 1px;
fill: #fff;
stroke: #333;
stroke-width: 1px;
fill: #fff;
}
.edgeLabel rect {
fill: #fff;
fill: #fff;
}
.edgePath {
stroke: #333;
stroke-width: 1px;
stroke: #333;
stroke-width: 1px;
}
g.node rect {
stroke-width: 3px;
stroke: white;
cursor: pointer;
stroke: #fff;
stroke-width: 3px;
cursor: pointer;
}
g.node .label {
font-size: inherit;
font-weight: normal;
}
g.node text {
cursor: pointer;
cursor: pointer;
}
g.node.success rect {
stroke: green;
stroke: green;
}
g.node.up_for_retry rect {
stroke: gold;
stroke: gold;
}
g.node.up_for_reschedule rect{
stroke: turquoise;
g.node.up_for_reschedule rect {
stroke: turquoise;
}
g.node.queued rect {
stroke: grey;
stroke: grey;
}
g.node.running rect{
stroke: lime;
g.node.running rect {
stroke: lime;
}
g.node.failed rect {
stroke: red;
stroke: red;
}
g.node.shutdown rect{
stroke: blue;
g.node.shutdown rect {
stroke: blue;
}
g.node.upstream_failed rect{
stroke: orange;
g.node.upstream_failed rect {
stroke: orange;
}
g.node.skipped rect{
stroke: pink;
g.node.skipped rect {
stroke: pink;
}
div#svg_container {
border: 1px solid black;
background-color: #EEE;
cursor: move;
border: 1px solid #000;
background-color: #eee;
cursor: move;
}
#refresh_button {
top: 15px;
right: 15px;
position: relative;
top: 15px;
right: 15px;
position: relative;
}
#loading {
margin: auto;
display: none;
position: relative;
width: 100px;
top: -550px;
margin: auto;
display: none;
position: relative;
width: 100px;
top: -550px;
}

Просмотреть файл

@ -17,99 +17,114 @@
* under the License.
*/
body { padding-top: 70px; }
body {
padding-top: 70px;
}
div.container {
width: 98%;
padding-left: 15px;
padding-right: 15px;
width: 98%;
padding-left: 15px;
padding-right: 15px;
}
a.navbar-brand span {
color: white;
color: #fff;
}
.modal-backdrop{
z-index: 2;
position: fixed;
.modal-backdrop {
z-index: 2;
position: fixed;
}
.modal-content{
z-index: 5;
.modal-content {
z-index: 5;
}
nav{
-webkit-box-shadow: 0px 3px 3px #AAA;
-moz-box-shadow: 0px 3px 3px #AAA;
box-shadow: 0px 3px 3px #AAA;
z-index:999;
nav {
box-shadow: 0 3px 3px #aaa;
z-index: 999;
}
a.navbar-brand {
cursor: default;
cursor: default;
}
td>span.glyphicon{
padding-left: 3px;
padding-top: 3px;
td > span.glyphicon {
padding-left: 3px;
padding-top: 3px;
}
button.btn, label.btn {
border: 1px solid black;
button.btn,
label.btn {
border: 1px solid #000;
}
.btn-group label.btn {
background-color: #f0f0f0;
background-color: #f0f0f0;
}
div.rich_doc {
padding: 5px 10px;
border: 1px solid #dddddd;
background: white;
border-radius: 4px;
padding: 5px 10px;
border: 1px solid #ddd;
background: #fff;
border-radius: 4px;
}
span.status_square {
width:10px;
height:10px;
border:1px solid grey;
display:inline-block;
padding-left: 0px;
cursor: pointer;
width: 10px;
height: 10px;
border: 1px solid grey;
display: inline-block;
padding-left: 0;
cursor: pointer;
}
div.squares{
float:right;
font-size: 1;
div.squares {
float: right;
font-size: 1;
}
div.task_row{
span.success {
background-color: green;
}
span.success{
background-color: green;
span.up_for_retry {
background-color: gold;
}
span.up_for_retry{
background-color: gold;
span.up_for_reschedule {
background-color: turquoise;
}
span.up_for_reschedule{
background-color: turquoise;
span.started {
background-color: lime;
}
span.started{
background-color: lime;
span.error {
background-color: red;
}
span.error{
background-color: red;
span.queued {
background-color: gray;
}
span.queued{
background-color: gray;
span.upstream_failed {
background-color: orange;
}
span.upstream_failed{
background-color: orange;
}
span.skipped{
background-color: pink;
span.skipped {
background-color: pink;
}
.tooltip-inner {
max-width: 500px;
text-align:left !important;
font-size: 12px;
max-width: 500px;
text-align: left !important;
font-size: 12px;
}
.d3-tip {
background: black;
color: white;
background: #000;
color: #fff;
border: solid;
border-width: 1px;
border-radius: 5px;
@ -117,25 +132,29 @@ span.skipped{
}
input#execution_date {
margin-bottom: 0px;
margin-bottom: 0;
}
table.highlighttable{
width: 100%;
table-layout:fixed;
table.highlighttable {
width: 100%;
table-layout: fixed;
}
div.linenodiv {
padding-right: 1px !important;
padding-right: 1px !important;
}
.linenos {
width: 50px;
border: none;
width: 50px;
border: none;
}
div.linenodiv pre {
padding-left: 4px;
padding-right: 4px;
color: #AAA;
background-color: #FCFCFC;
text-align:right;
div.linenodiv pre {
padding-left: 4px;
padding-right: 4px;
color: #aaa;
background-color: #fcfcfc;
text-align: right;
}
pre {
@ -143,164 +162,183 @@ pre {
word-wrap: normal;
white-space: pre;
}
pre code {
overflow-wrap: normal;
white-space: pre;
overflow-wrap: normal;
white-space: pre;
}
.wrap {
white-space: pre-wrap;
white-space: pre-wrap;
}
input, select {
margin: 0px;
input,
select {
margin: 0;
}
.code {
font-family: monospace;
font-family: monospace;
}
#sql {
border: 1px solid #CCC;
border-radius: 5px;
border: 1px solid #ccc;
border-radius: 5px;
}
.ace_editor div {
font: inherit!important
font: inherit !important;
}
#ace_container {
margin: 10px 0px;
margin: 10px 0;
}
#sql_ace {
visibility: hidden;
visibility: hidden;
}
table.dataframe {
font-size: 12px;
font-size: 12px;
}
table.dataframe tbody tr td {
padding: 2px;
padding: 2px;
}
table thead th {
background-color: #F3F3F3;
background-color: #f3f3f3;
}
table.dataframe.dataTable thead > tr > th {
padding: 10px 20px 10px 10px;
padding: 10px 20px 10px 10px;
}
table.dataTable.dataframe thead .sorting {
background: url('./../sort_both.png') no-repeat center right
background: url('./../sort_both.png') no-repeat center right;
}
table.dataTable.dataframe thead .sorting_desc {
background: url('./../sort_desc.png') no-repeat center right
background: url('./../sort_desc.png') no-repeat center right;
}
table.dataTable.dataframe thead .sorting_asc {
background: url('./../sort_asc.png') no-repeat center right
background: url('./../sort_asc.png') no-repeat center right;
}
.no-wrap {
white-space: nowrap;
white-space: nowrap;
}
div.form-inline{
margin-bottom: 5px;
div.form-inline {
margin-bottom: 5px;
}
body div.panel {
padding: 0px;
padding: 0;
}
.blur {
filter:url(#blur-effect-1);
filter: url(#blur-effect-1);
}
div.legend_item {
-moz-border-radius: 5px/5px;
-webkit-border-radius: 5px 5px;
border-radius: 5px/5px;
float:right;
margin: 0px 3px 0px 0px;
padding:0px 3px;
border:solid 2px grey;
font-size: 11px;
border-radius: 5px;
float: right;
margin: 0 3px 0 0;
padding: 0 3px;
border: solid 2px grey;
font-size: 11px;
}
div.legend_circle{
-moz-border-radius: 10px/10px;
-webkit-border-radius: 10px 10px;
border-radius: 10px/10px;
width:15px;
height:15px;
border:1px solid grey;
float:left;
margin-top: 2px;
margin-right: 0px;
div.legend_circle {
border-radius: 10px;
width: 15px;
height: 15px;
border: 1px solid grey;
float: left;
margin-top: 2px;
margin-right: 0;
}
div.square {
width:12px;
height:12px;
float: right;
margin-top: 2px;
border:1px solid black;
width: 12px;
height: 12px;
float: right;
margin-top: 2px;
border: 1px solid #000;
}
.btn:active, .btn.active {
.btn:active,
.btn.active {
box-shadow: inset 0 6px 6px rgba(0, 0, 0, 0.4);
}
label[for="timezone-other"], #timezone-other {
label[for="timezone-other"],
#timezone-other {
margin: 3px 20px;
font-weight: normal;
}
#timezone-menu ul.typeahead.dropdown-menu {
max-height: 200px;
overflow-y: auto;
overflow-x: hidden;
max-height: 200px;
overflow-y: auto;
overflow-x: hidden;
}
/* depending on the version of FAB in use, we may have a style conflict */
.bootstrap-datetimepicker-widget .datepicker>div {
.bootstrap-datetimepicker-widget .datepicker > div {
display: block;
}
.hll { background-color: #ffffcc }
.c { color: #408080; font-style: italic } /* Comment */
.err { border: 1px solid #FF0000 } /* Error */
.k { color: #008000; font-weight: bold } /* Keyword */
.o { color: #666666 } /* Operator */
.cm { color: #408080; font-style: italic } /* Comment.Multiline */
.cp { color: #BC7A00 } /* Comment.Preproc */
.c1 { color: #408080; font-style: italic } /* Comment.Single */
.cs { color: #408080; font-style: italic } /* Comment.Special */
.gd { color: #A00000 } /* Generic.Deleted */
.ge { font-style: italic } /* Generic.Emph */
.gr { color: #FF0000 } /* Generic.Error */
.gh { color: #000080; font-weight: bold } /* Generic.Heading */
.gi { color: #00A000 } /* Generic.Inserted */
.go { color: #888888 } /* Generic.Output */
.gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.gs { font-weight: bold } /* Generic.Strong */
.gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.gt { color: #0044DD } /* Generic.Traceback */
.kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.kp { color: #008000 } /* Keyword.Pseudo */
.kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.kt { color: #B00040 } /* Keyword.Type */
.m { color: #666666 } /* Literal.Number */
.s { color: #BA2121 } /* Literal.String */
.na { color: #7D9029 } /* Name.Attribute */
.nb { color: #008000 } /* Name.Builtin */
.nc { color: #0000FF; font-weight: bold } /* Name.Class */
.no { color: #880000 } /* Name.Constant */
.nd { color: #AA22FF } /* Name.Decorator */
.ni { color: #999999; font-weight: bold } /* Name.Entity */
.ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.nf { color: #0000FF } /* Name.Function */
.nl { color: #A0A000 } /* Name.Label */
.nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.nt { color: #008000; font-weight: bold } /* Name.Tag */
.nv { color: #19177C } /* Name.Variable */
.ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.w { color: #bbbbbb } /* Text.Whitespace */
.mb { color: #666666 } /* Literal.Number.Bin */
.mf { color: #666666 } /* Literal.Number.Float */
.mh { color: #666666 } /* Literal.Number.Hex */
.mi { color: #666666 } /* Literal.Number.Integer */
.mo { color: #666666 } /* Literal.Number.Oct */
.sb { color: #BA2121 } /* Literal.String.Backtick */
.sc { color: #BA2121 } /* Literal.String.Char */
.sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.s2 { color: #BA2121 } /* Literal.String.Double */
.s1 { color: #BA2121 } /* Literal.String.Single */
.hll { background-color: #ffc; }
.c { color: #408080; font-style: italic; } /* Comment */
.err { border: 1px solid #f00; } /* Error */
.k { color: #008000; font-weight: bold; } /* Keyword */
.o { color: #666 } /* Operator */
.cm { color: #408080; font-style: italic; } /* Comment.Multiline */
.cp { color: #bc7a00; } /* Comment.Preproc */
.c1 { color: #408080; font-style: italic; } /* Comment.Single */
.cs { color: #408080; font-style: italic; } /* Comment.Special */
.gd { color: #a00000; } /* Generic.Deleted */
.ge { font-style: italic; } /* Generic.Emph */
.gr { color: #f00; } /* Generic.Error */
.gh { color: #000080; font-weight: bold; } /* Generic.Heading */
.gi { color: #00a000; } /* Generic.Inserted */
.go { color: #888; } /* Generic.Output */
.gp { color: #000080; font-weight: bold; } /* Generic.Prompt */
.gs { font-weight: bold; } /* Generic.Strong */
.gu { color: #800080; font-weight: bold; } /* Generic.Subheading */
.gt { color: #0044dd; } /* Generic.Traceback */
.kc { color: #008000; font-weight: bold; } /* Keyword.Constant */
.kd { color: #008000; font-weight: bold; } /* Keyword.Declaration */
.kn { color: #008000; font-weight: bold; } /* Keyword.Namespace */
.kp { color: #008000; } /* Keyword.Pseudo */
.kr { color: #008000; font-weight: bold; } /* Keyword.Reserved */
.kt { color: #b00040; } /* Keyword.Type */
.m { color: #666; } /* Literal.Number */
.s { color: #ba2121; } /* Literal.String */
.na { color: #7d9029; } /* Name.Attribute */
.nb { color: #008000; } /* Name.Builtin */
.nc { color: #00f; font-weight: bold; } /* Name.Class */
.no { color: #800; } /* Name.Constant */
.nd { color: #a2f; } /* Name.Decorator */
.ni { color: #999999; font-weight: bold; } /* Name.Entity */
.ne { color: #d2413a; font-weight: bold; } /* Name.Exception */
.nf { color: #00f; } /* Name.Function */
.nl { color: #a0a000; } /* Name.Label */
.nn { color: #00f; font-weight: bold; } /* Name.Namespace */
.nt { color: #008000; font-weight: bold; } /* Name.Tag */
.nv { color: #19177c; } /* Name.Variable */
.ow { color: #a2f; font-weight: bold; } /* Operator.Word */
.w { color: #bbb; } /* Text.Whitespace */
.mb { color: #666 } /* Literal.Number.Bin */
.mf { color: #666 } /* Literal.Number.Float */
.mh { color: #666 } /* Literal.Number.Hex */
.mi { color: #666 } /* Literal.Number.Integer */
.mo { color: #666 } /* Literal.Number.Oct */
.sb { color: #ba2121; } /* Literal.String.Backtick */
.sc { color: #ba2121; } /* Literal.String.Char */
.sd { color: #ba2121; font-style: italic; } /* Literal.String.Doc */
.s2 { color: #ba2121; } /* Literal.String.Double */
.s1 { color: #ba2121; } /* Literal.String.Single */

Просмотреть файл

@ -17,83 +17,100 @@
* under the License.
*/
#svg_container{
// overflow: scroll;
}
.node text {
font: 11px sans-serif;
pointer-events: none;
}
path.link {
fill: none;
stroke: #3182bd;
stroke-width: 1.5px;
opacity: 0.5;
}
g.tick line{
g.tick line {
shape-rendering: crispEdges;
}
rect.state {
stroke: black;
shape-rendering: crispEdges;
cursor: pointer;
}
rect.null, rect.scheduled, rect.undefined {
fill: white;
}
rect.success {
fill: green;
}
rect.running {
fill: lime;
}
rect.failed {
fill: red;
}
rect.queued {
fill: gray;
}
rect.shutdown {
fill: blue;
}
rect.upstream_failed {
fill: orange;
}
rect.up_for_retry {
fill: gold;
}
rect.up_for_reschedule {
fill: turquoise;
}
rect.skipped {
fill: pink;
}
.tooltip.in {
opacity: 1;
filter: alpha(opacity=100);
stroke: #000;
shape-rendering: crispEdges;
cursor: pointer;
}
.axis path, .axis line {
fill: none;
stroke: #000;
rect.null,
rect.scheduled,
rect.undefined {
fill: #fff;
}
rect.success {
fill: green;
}
rect.running {
fill: lime;
}
rect.failed {
fill: red;
}
rect.queued {
fill: gray;
}
rect.shutdown {
fill: blue;
}
rect.upstream_failed {
fill: orange;
}
rect.up_for_retry {
fill: gold;
}
rect.up_for_reschedule {
fill: turquoise;
}
rect.skipped {
fill: pink;
}
.tooltip.in {
opacity: 1;
filter: alpha(opacity=100);
}
.axis path,
.axis line {
fill: none;
stroke: #000;
}
.axis text {
font: 11px sans-serif;
font: 11px sans-serif;
}
g.parent circle {
cursor: pointer;
cursor: pointer;
}
g.node.collapsed circle {
stroke: #444;
stroke-width: 4px;
stroke: #444;
stroke-width: 4px;
}
circle {
stroke: blue;
fill: white;
stroke-width: 1.5px;
stroke: blue;
fill: #fff;
stroke-width: 1.5px;
}
g.axis path {
shape-rendering: crispEdges;
shape-rendering: crispEdges;
}

Просмотреть файл

@ -32,7 +32,7 @@
<div
id="div_svg"
class="centered text-center"
style="border: 1px solid #CCC; padding:0px;margin:0;">
style="border: 1px solid #ccc;padding:0;margin:0;">
<svg></svg>
</div>

Просмотреть файл

@ -134,7 +134,7 @@
<h4 class="modal-title" id="myModalLabel">
<span id='task_id'></span>
<button id="btn_filter" type="button" class="btn btn-default" title="Filter on this task and upstream ">
<span class="glyphicon glyphicon-filter" style="margin-left: 0px;" aria-hidden="true"></span>
<span class="glyphicon glyphicon-filter" style="margin-left:0;" aria-hidden="true"></span>
</button>
on
<span id='execution_date'></span>

Просмотреть файл

@ -125,7 +125,7 @@
</td>
<!-- Column 6: Recent Tasks -->
<td style="padding:0px; width:200px; height:10px;">
<td style="padding:0;width:200px;height:10px;">
<svg height="10" width="10" id='task-run-{{ dag.safe_dag_id }}' style="display: block;"></svg>
</td>
@ -137,9 +137,10 @@
<span aria-hidden="true" id="statuses_info" title=" " class="glyphicon glyphicon-info-sign" style="display:none"></span>
</div>
</td>
</td>
<!-- Column 8: Dag Runs -->
<td style="padding:0px; width:120px; height:10px;">
<td style="padding:0;width:120px;height:10px;">
<svg height="10" width="10" id='dag-run-{{ dag.safe_dag_id }}' style="display: block;"></svg>
</td>
@ -211,7 +212,7 @@
</table>
<div class="row">
<div class="col-sm-12" style="text-align:right;">
<div class="dataTables_info" id="dags_info" role="status" aria-live="polite" style="padding-top: 0px;">Showing {{num_dag_from}} to {{num_dag_to}} of {{num_of_all_dags}} entries</div>
<div class="dataTables_info" id="dags_info" role="status" aria-live="polite" style="padding-top:0;">Showing {{num_dag_from}} to {{num_dag_to}} of {{num_of_all_dags}} entries</div>
</div>
</div>
<div class="row">

Просмотреть файл

@ -76,7 +76,7 @@
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
<span id="error_msg">Oops.</span>
</div>
<hr style="margin-bottom: 0px;"/>
<hr style="margin-bottom:0;"/>
<button class="btn btn-default pull-right" id="refresh_button">
<span class="glyphicon glyphicon-refresh" aria-hidden="true"></span>
</button>

Просмотреть файл

@ -124,7 +124,7 @@ def generate_pages(current_page, num_of_pages,
<a href="{href_link}" aria-controls="dags" data-dt-idx="2" tabindex="0">{page_num}</a>
</li>""")
output = [Markup('<ul class="pagination" style="margin-top:0px;">')]
output = [Markup('<ul class="pagination" style="margin-top:0;">')]
is_disabled = 'disabled' if current_page <= 0 else ''
output.append(first_node.format(href_link="?{}"
@ -229,7 +229,7 @@ def task_instance_link(attr):
<span style="white-space: nowrap;">
<a href="{url}">{task_id}</a>
<a href="{url_root}" title="Filter on this task and upstream">
<span class="glyphicon glyphicon-filter" style="margin-left: 0px;"
<span class="glyphicon glyphicon-filter" style="margin-left:0;"
aria-hidden="true"></span>
</a>
</span>

25
docs/static/exampleinclude.css поставляемый
Просмотреть файл

@ -19,33 +19,39 @@
.example-header {
position: relative;
background: #9AAA7A;
background: #9aaa7a;
padding: 8px 16px;
margin-bottom: 0;
}
.example-header--with-button {
padding-right: 166px;
}
.example-header:after{
.example-header::after {
content: '';
display: table;
clear: both;
}
.example-title {
display:block;
display: block;
padding: 4px;
margin-right: 16px;
color: white;
color: #fff;
overflow-x: auto;
}
.example-header-button {
top: 8px;
right: 16px;
position: absolute;
}
.example-header + .highlight-python {
margin-top: 0 !important;
}
.viewcode-button {
display: inline-block;
padding: 8px 16px;
@ -53,8 +59,7 @@
margin: 0;
outline: 0;
border-radius: 2px;
-webkit-box-shadow: 0 3px 5px 0 rgba(0,0,0,.3);
box-shadow: 0 3px 6px 0 rgba(0,0,0,.3);
box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.3);
color: #404040;
background-color: #e7e7e7;
cursor: pointer;
@ -65,15 +70,17 @@
text-overflow: ellipsis;
overflow: hidden;
text-transform: uppercase;
-webkit-transition: background-color .2s;
transition: background-color .2s;
transition: background-color 0.2s;
vertical-align: middle;
white-space: nowrap;
}
.viewcode-button:visited {
color: #404040;
}
.viewcode-button:hover, .viewcode-button:focus {
.viewcode-button:hover,
.viewcode-button:focus {
color: #404040;
background-color: #d6d6d6;
}