OpenTally/html/main.css
2021-07-21 00:44:22 +10:00

340 lines
7.7 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.

/*
pyRCV2: Preferential vote counting
Copyright © 20202021 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;
}
/* 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;
}
.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;
}
.result 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 {
text-align: center;
}
tr.stage-kind td {
font-size: 0.75em;
min-width: 5rem;
color: #1b2839;
background-color: #f0f5fb;
}
td.excluded {
background-color: #fde2e2;
}
td.elected {
background-color: #e0fdc5;
}
tr.info td {
background-color: #f0f5fb;
}
tr.stage-no td:not(:empty), tr.transfers td {
border-top: 1px solid #76858c;
}
tr.info:last-child td, .bb {
border-bottom: 1px solid #76858c;
}
.blw {
/* Used to separate counts in Wright STV */
border-left: 2px solid #76858c;
}
/* Table stripes */
tr.stage-no td:nth-child(even):not([rowspan]),
tr.stage-comment td:nth-child(odd),
tr.candidate.transfers td:nth-child(even):not(.elected):not(.excluded),
tr.candidate.votes td:nth-child(odd):not(.elected):not(.excluded) {
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) {
background-color: #e8eef7;
}
/* BLT input tool */
#selBallots {
min-width: 10em;
margin-right: 1em;
}
#bltMain {
display: flex;
}
#tblBallot {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
#tblBallot input {
margin-right: 0.5ex;
}
#divEditCandidates div {
margin-bottom: 0.5em;
}
#txtCandidates {
min-width: 20em;
min-height: 10em;
}
/* Print stylesheet */
#printWarning {
display: none;
}
#printContainer > div:first-child > p:first-child {
margin-top: 0;
}
@media print {
#divUI {
display: none !important;
}
#printWarning {
display: block;
}
}
/* 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;
}