/* ovms.css | (c) Michael Balzer | https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3 */ code, kbd, pre, samp, .font-monospace { font-family: ui-monospace, "Cascadia Mono", "Segoe UI Mono", "Hack", "Source Code Pro", "Roboto Mono", Menlo, Monaco, Consolas, monospace; } samp { display: block; margin-bottom: 10px; white-space: pre-line; color: #020; font-size: 13px; } .samp-inline { display: inline-block; vertical-align: top; margin: 8px; } ul.list-inline samp { margin: 2px 5px; } .monitor { min-height: 30px; } pre { color: #020; } .loading { opacity: 0.9; cursor: progress; } .loading * { cursor: progress; } .disabled { cursor: wait; } .disabled * { pointer-events: none; cursor: wait; } .loading.disabled { cursor: wait; } .checkmark { color: #05b508; font-size: 150%; line-height: 100%; } .no-transition { -webkit-transition: none !important; -moz-transition: none !important; -ms-transition: none !important; -o-transition: none !important; transition: none !important; } .autoselect { -webkit-touch-callout: all; -webkit-user-select: all; -khtml-user-select: all; -moz-user-select: all; -ms-user-select: all; user-select: all; } .progress-bar > div { white-space: nowrap; } .progress-bar.text-left { text-align: left; } .progress-bar.text-left > div { padding: 0 5px; text-align: left; } .list-inline { margin-left: 0; } .list-inline>li { padding-left: 0; padding-bottom: 5px; } .panel-footer ul.list-inline { margin-bottom: 0; } .navbar-brand>img { height: 34px; margin-top: -7px; border-radius: 4px; border: 1px solid #333333; } .navbar-fixed-bottom .navbar-collapse, .navbar-fixed-top .navbar-collapse { max-height: 75vh; } .tab-content>.tab-pane { padding: 10px; border: 1px solid #ddd; border-top: none; } #main { margin-top: 60px; } #input-command { color: #300; } .panel-minpad .panel-body { padding: 5px; } .panel-minpad .panel-footer { padding: 5px 8px; } @media (max-width: 767px) { pre { white-space: pre-wrap; word-break: break-word; padding: 3px; } #main > .alert { margin: -9px -15px 9px; border-radius: 0; border: none; } .panel-single { margin: -9px -15px 0; border-radius: 0; border: 0 none; } .panel-single .panel-heading { padding: 5px 8px; border-radius: 0; } } @media (min-width: 768px) { .row.flex { display: flex; flex-wrap: wrap; } } /* Inputs, Buttons, Forms */ .btn-default, .btn-info, .btn-primary, .btn-warning, .btn-danger, .btn-success { background-image: -webkit-linear-gradient(top,#00000000 0,#0000001c 100%); background-image: -o-linear-gradient(top,#00000000 0,#0000001c 100%); background-image: -webkit-gradient(linear,left top,left bottom,from(#00000000),to(#0000001c)); background-image: linear-gradient(to bottom,#00000000 0,#0000001c 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#1c000000', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .btn-default:focus, .btn-default:hover, .btn-info:focus, .btn-info:hover, .btn-primary:focus, .btn-primary:hover, .btn-warning:focus, .btn-warning:hover, .btn-danger:focus, .btn-danger:hover, .btn-success:focus, .btn-success:hover { background-position: 0 0; } .btn code, .night .btn code { color: initial; background-color: initial; } .btn-group .btn-default.active { background-color: #337ab7; color: #fff; border-color: #2e6da4; } .btn-group .btn-default.active.focus, .btn-group .btn-default.active:focus, .btn-group .btn-default.active:hover { background-color: #265a88; } .action-menu .btn { margin: 0 5px 5px 0; } .action-menu .btn.pull-right { margin: 0 0 5px 5px; } .text-right.action-menu .btn { margin: 0 0 5px 5px; } .text-right.action-menu .btn.pull-left { margin: 0 5px 5px 0; } li.event { font-size: 85%; } .input-unit { min-width: 4em; } .form-table>thead>tr>th, .form-table>thead>tr>td, .form-table>tbody>tr>th, .form-table>tbody>tr>td, .form-table>tfoot>tr>th, .form-table>tfoot>tr>td { padding: 15px; } .textarea-control .btn { font-weight: bold; font-size: 16px; line-height: 16px; padding: 4px 15px 2px; } .textarea-control .btn:hover, .textarea-control .btn:focus { background-color: #fff; } .night .textarea-control .btn:hover, .night .textarea-control .btn:focus { background-color: #aaa; } .textarea-control .btn.active, .textarea-control .btn.active:hover { background-color: #d4d4d4; border: 1px solid #148712; } .night .textarea-control .btn.active, .night .textarea-control .btn.active:hover { background-color: #dadada; border: 1px solid #3acf44; } textarea.fullwidth { max-width: 100%; min-width: 100%; height: 300px; font-size:13px; white-space: pre; } .form-group .flex-group { display: flex; margin-left: -5px; } .form-group .flex-group > * { margin-left: 5px; } /* Hover progress */ .hover-progress { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: 10000; background: #000000c0; } .hover-progress-body { width: 80vw; max-width: 30em; background: #fff; border-radius: 10px; padding: 10px 20px; margin: 30px auto; border: 5px solid #f80; text-align: center; } .hover-progress-body .info { font-size: 200%; } .hover-progress-body .action { font-size: 300%; font-weight: bold; } .night .hover-progress-body { background: #222; color: #fff; } .hover-progress.longtouch .progress-bar { -webkit-transition: width 1500ms linear; -moz-transition: width 1500ms linear; -o-transition: width 1500ms linear; transition: width 1500ms linear; } /* Range input */ input[type=range] { -webkit-appearance: none; margin: 0px 0; width: 100%; height: 34px; background: transparent; } input[type=range]:focus { outline: none; } input[type=range]::-webkit-slider-runnable-track { width: 100%; height: 8.4px; cursor: pointer; animate: 0.2s; box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; background: #3071a9; border-radius: 1.3px; border: 0.2px solid #010101; } input[type=range]::-webkit-slider-thumb { box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; border: 1px solid #000000; height: 30px; width: 30px; border-radius: 15px; background: #ffffff; cursor: pointer; -webkit-appearance: none; margin-top: -12px; } input[type=range]:focus::-webkit-slider-runnable-track { background: #367ebd; } input[type=range]:disabled::-webkit-slider-thumb { border: 1px solid #888888; background: #dddddd; cursor: not-allowed; } input[type=range]:disabled::-webkit-slider-runnable-track { background: #cccccc; cursor: not-allowed; } input[type=range]::-moz-range-track { width: 100%; height: 8.4px; cursor: pointer; animate: 0.2s; box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; background: #3071a9; border-radius: 1.3px; border: 0.2px solid #010101; } input[type=range]::-moz-range-thumb { box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; border: 1px solid #000000; height: 30px; width: 30px; border-radius: 15px; background: #ffffff; cursor: pointer; } input[type=range]:disabled::-moz-range-thumb { border: 1px solid #888888; background: #dddddd; cursor: not-allowed; } input[type=range]:disabled::-moz-range-track { background: #cccccc; cursor: not-allowed; } input[type=range]::-ms-track { width: 100%; height: 8.4px; cursor: pointer; animate: 0.2s; background: transparent; border-color: transparent; border-width: 16px 0; color: transparent; } input[type=range]::-ms-fill-lower { background: #2a6495; border: 0.2px solid #010101; border-radius: 2.6px; box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; } input[type=range]::-ms-fill-upper { background: #3071a9; border: 0.2px solid #010101; border-radius: 2.6px; box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; } input[type=range]::-ms-thumb { box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; border: 1px solid #000000; height: 30px; width: 30px; border-radius: 15px; background: #ffffff; cursor: pointer; } input[type=range]:focus::-ms-fill-lower { background: #3071a9; } input[type=range]:focus::-ms-fill-upper { background: #367ebd; } input[type=range]:disabled::-ms-fill-lower { background: #dddddd; cursor: not-allowed; } input[type=range]:disabled::-ms-fill-upper { background: #dddddd; cursor: not-allowed; } input[type=range]:disabled::-ms-thumb { border: 1px solid #888888; background: #cccccc; cursor: not-allowed; } /* Slider widget */ .form-control.slider { height: auto; display: flex; } .slider * { vertical-align: middle; } .slider-control { margin-right: 10px; } .slider-input { flex: 1; } .slider-enable { width: 30px; height: 30px; margin: 2px 4px 0 0 !important; } .slider-unit { min-width: 2.4em; display: inline-block; } .slider input.btn { padding: 6px; width: 34px; } @media (max-width: 767px) { .form-control.slider { display: block; } .form-inline .form-control.slider-value { display: inline-block; width: auto; vertical-align: middle; } .slider-control { margin-bottom: 5px; } } /* Menu */ a.toggle-night, a.toggle-fullscreen { font-size: 20px; } button.toggle-night, button.toggle-fullscreen { color: #9d9d9d; line-height: 14px; font-size: 22px; font-weight: bold; } /* Dialogs */ .modal pre { white-space: pre-wrap; word-break: break-word; } .modal-title span.lead { text-transform: capitalize; } .modal-title span.lead i { text-transform: none; font-style: normal; font-size: 155%; margin-right: 10px; } /* Tables */ tbody>div { display: table-row; } .table-scrollable, .table-scrollable thead, .table-scrollable tbody, .table-scrollable tfoot, .table-scrollable tr, .table-scrollable th, .table-scrollable td { display: block; } .table-scrollable, .table-scrollable thead, .table-scrollable tbody, .table-scrollable tfoot, .table-scrollable tr { width: 100%; } .table-scrollable tr { float: left; } .table-scrollable tbody { overflow-y: auto; } .table-scrollable tbody tr { cursor: pointer; } .table-scrollable thead tr th, .table-scrollable tbody td { float: left; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; user-select: none; } .table-hover>tbody>tr:hover { background-color: #e6e6e6; } .night .table-hover>tbody>tr:hover { background-color: #121f2d; } /* FileBrowser */ .filebrowser .form-group { margin-bottom: 5px; } .fb-quicknav .btn { margin-right: 5px; margin-bottom: 5px; } .filebrowser thead { cursor: pointer; } .filebrowser tbody { height: 310px; } .filebrowser .table>tbody>tr.active>td { background-color: #bed2e3; } .night .filebrowser .table>tbody>tr.active>td { background-color: #293746; } .sort-up::after { content: "▲"; margin-left: 0.3em; } .sort-down::after { content: "▼"; margin-left: 0.3em; } /* Metric displays */ .metric { position: relative; } .metric.number, .metric.text { display: inline-block; float: left; margin-right: 10px; } .metric.number .label, .metric.text .label { display: inline-block; min-width: 6em; text-align: right; font-size: 85%; color: #676767; padding: 0 3px 0 0; } .metric .value { font-weight: bold; padding: 0 3px 0 0; } .metric.number .value { display: inline-block; min-width: 4em; text-align: right; } .metric.number .unit, .metric.text .unit { display: inline-block; min-width: 2em; font-size: 85%; color: #676767; } .metric.progress .label { display: inline-block; min-width: 6em; text-align: right; font-size: 95%; padding: 0 3px 0 0; } .metric.progress .value { display: inline-block; min-width: 4em; text-align: right; } .metric.progress .unit { display: inline-block; min-width: 2em; font-size: 95%; color: #fff; } .metric.progress .value-low .label { color: #676767; } .metric.progress .value-low .value { color: #000; } .metric.progress .value-low .unit { color: #676767; } .night .metric .value { color: #f2f2f2; } .night .metric.number .unit, .night .metric.text .unit, .night .metric.number .label, .night .metric.text .label { color: unset; } .night .metric.progress .value-low .label { color: #fff; } .night .metric.progress .value-low .value { color: #fff; } .night .metric.progress .value-low .unit { color: #fff; } /* Highcharts */ .chart-box { width: 100%; height: 100%; } .highcharts-background { fill-opacity: 0; } .night .highcharts-axis-labels { fill: #b1b1b1; } .night .highcharts-title { fill: #6f6f6f; } .night .highcharts-grid-line { stroke: #584f4f; } .night .highcharts-minor-grid-line { stroke: #2d2d2d; } .night .highcharts-axis-line { stroke: #626771; } .night .highcharts-tick { stroke: #626771; } .night .highcharts-button { fill: #b1b1b1; } .night .highcharts-legend-item text { fill: #dddddd; } .night .highcharts-tooltip-box { fill: #000000; color: #bbbbbb; } .night .highcharts-tooltip text { fill: #dddddd; } .gaugechart .highcharts-plot-band, .gaugechart .highcharts-pane { fill-opacity: 0; } .gaugechart .highcharts-plot-band.border { stroke: #666666; stroke-width: 1px; } .gaugechart .green-band { fill: #55BF3B; fill-opacity: 0.4; } .gaugechart .yellow-band { fill: #DDDF0D; fill-opacity: 0.5; } .gaugechart .red-band { fill: #DF5353; fill-opacity: 0.6; } .gaugechart .violet-band { fill: #9622ff; fill-opacity: 0.6; } .gaugechart .night .violet-band { fill: #9622ff; fill-opacity: 0.8; } .gaugechart .highcharts-gauge-series .highcharts-pivot { stroke-width: 1px; stroke: #757575; fill-opacity: 1; fill: black; } .gaugechart .highcharts-gauge-series.auxgauge .highcharts-pivot { fill-opacity: 1; fill: #fff; stroke-width: 0; } .night .gaugechart .highcharts-gauge-series.auxgauge .highcharts-pivot { fill: #000; } .gaugechart .highcharts-gauge-series .highcharts-dial { fill: #d80000; stroke: #000; stroke-width: 0.5px; } .gaugechart .highcharts-yaxis-grid .highcharts-grid-line, .gaugechart .highcharts-yaxis-grid .highcharts-minor-grid-line { display: none; } .gaugechart .highcharts-yaxis .highcharts-tick { stroke-width: 2px; stroke: #666666; } .night .gaugechart .highcharts-yaxis .highcharts-tick { stroke: #e0e0e0; } .gaugechart .highcharts-yaxis .highcharts-minor-tick { stroke-width: 1.8px; stroke: #00000085; stroke-dasharray: 6; stroke-dashoffset: -4.8; stroke-linecap: round; } .night .gaugechart .highcharts-yaxis .highcharts-minor-tick { stroke: #ffffff85; } .gaugechart .highcharts-axis-labels { fill: #000; font-weight: bold; font-size: 0.9em; } .night .gaugechart .highcharts-axis-labels { fill: #ddd; } .gaugechart .highcharts-data-label text { fill: #333333; } .night .gaugechart .highcharts-data-label text { fill: #fff; } /* Night mode */ body.night { background-color: #000; color: #bbb; } .night .panel { background-color: #000; } .night .panel-footer { background-color: #111; } .night .modal-content { background-color: #222; } .night .close { color: #fff; opacity: 0.8; } .night samp { color: #0a0; } .night pre { color: #0a0; background-color: #000; } .night code { color: #ca0d3e; background-color: #000000; } .night legend { color: #888; } .night .help-block { color: #999 } .night .form-control { background-color: #333; color: #eee; } .night .input-group-addon { background-color: #111; color: #888; } .night #input-command { color: #0ee; } .night .btn-default { background-color: #aaa; color: #000; text-shadow: 0px 0px 1px #fff; } .night .btn-default.focus, .night .btn-default:focus, .night .btn-default:hover { background-color: #e0e0e0; } .night .panel-primary>.panel-heading { background-image: -webkit-linear-gradient(top,#183752 0,#235a8a 100%); background-image: -o-linear-gradient(top,#183752 0,#235a8a 100%); background-image: -webkit-gradient(linear,left top,left bottom,from(#183752),to(#235a8a)); background-image: linear-gradient(to bottom,#183752 0,#235a8a 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff183752', endColorstr='#ff235a8a', GradientType=0); } .night .text-warning { color: #ac7e2f; } .night .text-danger { color: #d93d3a; } .night .text-info { color: #55a5ce } .night .text-success { color: #3fc641 } .night .bg-warning { background-color: #363010; } .night .bg-danger { background-color: #6f0c0c; } .night .bg-info { background-color: #056594; } .night .bg-success { background-color: #163609; } .night .progress { background-image: -webkit-linear-gradient(top,#1f1f1f 0,#2e2e2e 100%); background-image: -o-linear-gradient(top,#1f1f1f 0,#2e2e2e 100%); background-image: -webkit-gradient(linear,left top,left bottom,from(#1f1f1f),to(#2e2e2e)); background-image: linear-gradient(to bottom,#1f1f1f 0,#2e2e2e 100%) filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff1f1f1f', endColorstr='#ff2e2e2e', GradientType=0); } /* Fullscreen mode */ .fullscreened { margin: 0 !important; overflow: auto; width: 100%; } .fullscreened #main { margin: 0; background: #fff; } .fullscreened.night #main { margin: 0; background-color: #000; } .fullscreened #nav { display: none; } .fullscreened .panel-single { border: 0 none; margin: 0 -15px; } .fullscreened .panel-single .panel-body { padding: 0; min-width: 100vw; min-height: 100vh; } .fullscreened .panel-single .panel-heading { display: none; } @media (max-width: 767px) { .fullscreened .panel-single { margin: 0 -15px; } }