OpenTally/html/main.css

347 lines
8.5 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* OpenTally: Open-source election vote counting
* Copyright © 20212022 Lee Yingtong Li (RunasSudo)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
@import url('https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@400;600&display=swap');
html, body {
font-family: 'Source Sans Pro', sans-serif;
}
body {
padding: 0.5em;
}
a {
color: #1d46c4;
text-decoration: none;
}
a:hover {
color: #1d3da2;
text-decoration: underline;
}
tr.stage-no a {
color: initial !important;
}
li.highlight {
background-color: #fffedd;
}
/* Menu styling */
.menudiv {
border-bottom: 1px solid #ccc;
line-height: 1.8;
margin-bottom: 0.5em;
padding-bottom: 0.5em;
}
.menudiv .subheading {
font-size: 0.8em;
font-weight: 600;
margin-top: 0.5rem;
}
.menudiv > div > .subheading:first-child {
margin-top: 0;
}
.pill-grey {
border-radius: 4px;
background-color: #3f454f;
color: #fff;
font-size: 0.7rem;
font-weight: 600;
padding: 0 0.5em;
}
.pill-grey[title] {
cursor: help;
}
.cols-12 {
display: grid;
grid-template-columns: repeat(12, 1fr);
}
.col-3 { grid-column-end: span 3; }
.col-6 { grid-column-end: span 6; }
.col-12 { grid-column-end: span 12; }
@media screen and (max-width: 17.5cm) {
.cols-sm-6 {
grid-template-columns: repeat(6, 1fr);
}
}
/* Count table */
table {
border-collapse: collapse;
color-adjust: exact;
-webkit-print-color-adjust: exact;
}
table.result td, table.transfers td {
padding: 0px 8px;
height: 1em;
}
td.count {
text-align: right;
}
td.count sup {
font-size: 0.6rem;
top: 0;
}
tr.stage-no td, tr.stage-kind td, tr.stage-comment td, tr.hint-papers-votes td {
text-align: center;
}
td.candidate-name, td.elected, td.excluded {
white-space: nowrap;
}
tr.stage-kind td {
font-size: 0.75em;
min-width: 5rem;
color: #1b2839;
background-color: #f0f5fb;
}
tr.hint-papers-votes td {
font-size: 0.75em;
font-style: italic;
}
td.excluded {
background-color: #fde2e2;
}
td.elected {
background-color: #e0fdc5;
}
tr.info td {
background-color: #f0f5fb;
}
tr.stage-no td:not(:empty), tr.hint-papers-votes td:not(:empty), tr.transfers td,
table.transfers tr:first-child td, table.transfers tr:nth-last-child(2) td, table.transfers tr:last-child td {
border-top: 1px solid #76858c;
}
tr.info:last-child td, .bb,
table.transfers tr:first-child td, table.transfers tr:nth-last-child(2) td, table.transfers tr:last-child td {
border-bottom: 1px solid #76858c;
}
.blw {
/* Used to separate counts in Wright STV */
border-left: 2px solid #76858c;
}
table.transfers tr:first-child td {
font-weight: 600;
}
table.transfers tr:first-child td, table.transfers tr:nth-last-child(2) td, .transfers tr:last-child td {
background-color: #f0f5fb;
}
/* Table stripes */
tr.stage-no td:nth-child(even):not([rowspan]),
tr.stage-comment td:nth-child(odd),
tr.hint-papers-votes td:nth-child(even),
tr.candidate.transfers td:nth-child(even):not(.elected):not(.excluded),
tr.candidate.votes td:nth-child(odd):not(.elected):not(.excluded),
table.transfers td:nth-child(even) {
background-color: #f9f9f9;
}
tr.candidate.transfers td.elected:nth-child(even),
tr.candidate.votes td.elected:nth-child(odd) {
background-color: #e0f7ca;
}
tr.candidate.transfers td.excluded:nth-child(even),
tr.candidate.votes td.excluded:nth-child(odd) {
background-color: #fbdfdf;
}
tr.info.stage-kind td:nth-child(odd),
tr.info.transfers td:nth-child(even),
tr.info.votes td:nth-child(odd),
table.transfers tr:first-child td:nth-child(even), table.transfers tr:nth-last-child(2) td:nth-child(even), .transfers tr:last-child td:nth-child(even) {
background-color: #e8eef7;
}
a.detailedTransfersLink {
color: #aaa;
}
/* Print stylesheet */
#printWarning {
display: none;
}
#printContainer > div:first-child > p:first-child {
margin-top: 0;
}
@media print {
#divUI {
display: none !important;
}
#printWarning {
display: block;
}
a.detailedTransfersLink {
display: none;
}
}
/* Form styling */
/* Adapted in part from https://github.com/nathansmith/formalize (GPL/MIT) */
select, input, button {
line-height: 1.15;
}
select, input[type="text"], input[type="number"], textarea, .js-Dropdown-title {
appearance: none;
background-color: #fff !important;
border: 1px solid;
border-color: #999 #bbb #ddd;
border-radius: 0;
box-sizing: border-box;
color: #000;
padding: 2px 3px;
}
select, .js-Dropdown-title {
/* Dropdown arrow */
background-image: url(data:image/png;base64,R0lGODlhDQAEAIAAAAAAAP8A/yH5BAEHAAEALAAAAAANAAQAAAILhA+hG5jMDpxvhgIAOw==);
background-position: right center;
background-repeat: no-repeat;
padding-right: 20px; /* Padding for dropdown arrow */
}
button, input[type="file"]::-webkit-file-upload-button {
background-color: #f0f0f0;
border: 1px solid;
border-color: #ddd #bbb #999;
border-radius: 4px;
color: #000;
font-family: inherit;
padding: 2px 10px;
}
button:hover, input[type="file"]::-webkit-file-upload-button:hover {
background-color: #eaeaea;
}
button:active, input[type="file"]::-webkit-file-upload-button:active {
background-color: #dfdfdf;
border-color: #999 #bbb #ddd;
}
/* Chrome can't parse this and ignores the entire rule */
input[type="file"]::file-selector-button {
background-color: #f0f0f0;
border: 1px solid;
border-color: #ddd #bbb #999;
border-radius: 4px;
color: #000;
font-family: inherit;
padding: 2px 10px;
}
button:hover, input[type="file"]::file-selector-button:hover {
background-color: #f5f5f5;
}
button:active, input[type="file"]::file-selector-button:active {
background-color: #eaeaea;
border-color: #999 #bbb #ddd;
}
input[type="checkbox"] {
appearance: none;
position: relative;
width: 0.9em;
height: 0.9em;
border: 1px solid;
border-color: #999 #bbb #ddd;
vertical-align: -2px;
}
input[type="checkbox"]:disabled {
background-color: #f0f0f0;
cursor: not-allowed;
}
input[type="checkbox"]:checked {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw1AUhU9TtSoVB4uIOASsThZERRy1CkWoEGqFVh1MXvoHTRqSFBdHwbXg4M9i1cHFWVcHV0EQ/AFxc3NSdJES70sKLWJ9cHkf571zuO8+QKgWmWa1jQOabpuJWFRMpVfFwCs60E81jC6ZWcacJMXRcn3dw8f3uwjPan3vz9WjZiwG+ETiWWaYNvEG8fSmbXDeJw6xvKwSnxOPmdQg8SPXFY/fOOdcFnhmyEwm5olDxGKuiZUmZnlTI54iDquaTvlCymOV8xZnrVhm9T75C4MZfWWZ61RDiGERS5AgQkEZBRRhI0K7ToqFBJ1HW/gHXb9ELoVcBTByLKAEDbLrB/+D37O1spMTXlIwCrS/OM7HCBDYBWoVx/k+dpzaCeB/Bq70hr9UBWY+Sa80tPAR0LsNXFw3NGUPuNwBBp4M2ZRdyU8lZLPA+xl9UxrouwW617y51c9x+gAkaVbxG+DgEBjNUfZ6i3d3Ns/t3zv1+f0AL85yjOh1oPUAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAALiMAAC4jAXilP3YAAAAHdElNRQflBhYGJAX1YLTpAAAAGXRFWHRDb21tZW50AENyZWF0ZWQgd2l0aCBHSU1QV4EOFwAAADdJREFUOMtjYBiqIIRSzf/JNQSmmSwDaK85hFLN2BQQ7WxsCkn2M7oGsgIMWSPFcR0yYEmVvgAAhfEhGaqKIlIAAAAASUVORK5CYII=);
background-position: center;
background-repeat: no-repeat;
background-size: contain;
}
button:focus, select:focus, input:focus, textarea:focus {
outline: 0;
}
select:focus, .js-Dropdown-title:focus, input:focus, textarea:focus {
border-color: #3daee9;
}
label {
white-space: nowrap;
}
/* Custom dropdown */
/* Adapted from https://github.com/zoltantothcom/vanilla-js-dropdown (Unlicense) */
.js-Dropdown {
display: inline-block;
position: relative;
}
.js-Dropdown-title {
width: 100%;
text-align: left;
position: relative;
z-index: 999;
padding: 2px 6px; /* Needs additional padding to match <select> */
}
.js-Dropdown-list {
background: #fff;
border-bottom: 1px solid #ddd;
border-left: 1px solid #bbb;
border-right: 1px solid #bbb;
box-sizing: border-box;
display: none;
list-style: none;
margin: -5px 0 0 0;
padding: 0;
position: absolute;
min-width: 100%;
z-index: 998;
max-height: 80vh;
overflow-y: auto;
}
.js-Dropdown-list.is-open {
display: block;
}
.js-Dropdown-list li {
cursor: pointer;
padding: 2px 3px 2px 11px;
line-height: 1.3;
}
.js-Dropdown-list li:hover {
background-color: #e9f7ff;
}
.js-Dropdown-list li.is-selected {
background-color: #c0e8fd;
}
.js-Dropdown-optgroup {
font-weight: bold;
padding: 2px 3px;
line-height: 1.3;
}
.js-Dropdown-optgroup:first-child {
padding-top: 4px;
}