/* OpenTally: Open-source election vote counting * Copyright © 2021–2022 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 . */ @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 van der Craats (‘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