From 755b0dc63f1e8ba710d66e33ff8be36377ec7a2e Mon Sep 17 00:00:00 2001 From: Manuel Date: Tue, 16 May 2023 10:44:19 +0200 Subject: [PATCH] Implemented dark mode --- .gitattributes | 10 +- FileSets/PowerGauge.qml | 18 +- FileSets/PowerGaugeBattery.qml | 40 +- FileSets/PowerGaugeMulti.qml | 28 +- FileSets/TileTemp.qml | 8 +- FileSets/fileList | 17 + FileSets/v2.66/PageSettingsDisplay.qml | 8 + FileSets/v2.66/Tile.qml | 8 +- FileSets/v2.66/main.qml | 21 +- FileSets/v2.89/PageSettingsDisplay.qml | 8 + FileSets/v2.89/main.qml | 21 +- FileSets/v2.92/dbus_systemcalc.py | 1391 ++ FileSets/v2.92/dbus_systemcalc.py.orig | 1193 ++ FileSets/v2.94/Battery.qml | 116 + FileSets/v2.94/Battery.qml.orig | 115 + FileSets/v2.94/MbItem.qml | 189 + FileSets/v2.94/MbItem.qml.orig | 188 + FileSets/v2.94/MbStyle.qml | 42 + FileSets/v2.94/MbStyle.qml.orig | 40 + FileSets/v2.94/OverviewSolarInverter.qml | 63 + FileSets/v2.94/OverviewSolarInverter.qml.orig | 62 + FileSets/v2.94/PageSettingsDisplay.qml | 8 + FileSets/v2.94/Tile.qml | 60 + FileSets/v2.94/main.qml | 21 +- FileSets/v3.00~42/Battery.qml | 116 + FileSets/v3.00~42/Battery.qml.orig | 115 + FileSets/v3.00~42/MbEditBox.qml | 408 + FileSets/v3.00~42/MbEditBox.qml.orig | 405 + FileSets/v3.00~42/MbEditBoxDateTime.qml | 93 + FileSets/v3.00~42/MbEditBoxDateTime.qml.orig | 91 + FileSets/v3.00~42/MbItem.qml | 189 + FileSets/v3.00~42/MbItem.qml.orig | 188 + FileSets/v3.00~42/MbSpinBox.qml | 179 + FileSets/v3.00~42/MbSpinBox.qml.orig | 177 + FileSets/v3.00~42/MbStyle.qml | 42 + FileSets/v3.00~42/MbStyle.qml.orig | 40 + FileSets/v3.00~42/MbSubMenu.qml | 66 + FileSets/v3.00~42/MbSubMenu.qml.orig | 64 + FileSets/v3.00~42/OverviewBox.qml | 50 + FileSets/v3.00~42/OverviewBox.qml.orig | 48 + FileSets/v3.00~42/OverviewConnection.qml | 133 + FileSets/v3.00~42/OverviewConnection.qml.orig | 131 + FileSets/v3.00~42/OverviewConnectionEnd.qml | 40 + .../v3.00~42/OverviewConnectionEnd.qml.orig | 39 + FileSets/v3.00~42/OverviewFlowComplex.qml | 83 +- FileSets/v3.00~42/OverviewGridParallel.qml | 482 + .../v3.00~42/OverviewGridParallel.qml.orig | 481 + FileSets/v3.00~42/OverviewHub.qml | 310 + FileSets/v3.00~42/OverviewHub.qml.orig | 309 + FileSets/v3.00~42/OverviewHubEnhanced.qml | 41 +- FileSets/v3.00~42/OverviewSolarCharger.qml | 54 + .../v3.00~42/OverviewSolarCharger.qml.orig | 53 + FileSets/v3.00~42/OverviewSolarInverter.qml | 63 + .../v3.00~42/OverviewSolarInverter.qml.orig | 62 + FileSets/v3.00~42/PageSettingsDisplay.qml | 8 + FileSets/v3.00~42/PageSettingsGuiMods.qml | 3 +- FileSets/v3.00~42/Tile.qml | 60 + FileSets/v3.00~42/TileText.qml | 10 + FileSets/v3.00~42/TileText.qml.orig | 8 + FileSets/v3.00~42/main.qml | 21 +- FileSets/v3.00~42/styles.css | 11025 ++++++++++++++++ FileSets/v3.00~42/styles.css.orig | 10974 +++++++++++++++ changes | 7 +- setup | 207 +- version | 2 +- 65 files changed, 30350 insertions(+), 202 deletions(-) create mode 100644 FileSets/v2.92/dbus_systemcalc.py create mode 100644 FileSets/v2.92/dbus_systemcalc.py.orig create mode 100644 FileSets/v2.94/Battery.qml create mode 100644 FileSets/v2.94/Battery.qml.orig create mode 100644 FileSets/v2.94/MbItem.qml create mode 100644 FileSets/v2.94/MbItem.qml.orig create mode 100644 FileSets/v2.94/MbStyle.qml create mode 100644 FileSets/v2.94/MbStyle.qml.orig create mode 100644 FileSets/v2.94/OverviewSolarInverter.qml create mode 100644 FileSets/v2.94/OverviewSolarInverter.qml.orig create mode 100644 FileSets/v2.94/Tile.qml create mode 100644 FileSets/v3.00~42/Battery.qml create mode 100644 FileSets/v3.00~42/Battery.qml.orig create mode 100644 FileSets/v3.00~42/MbEditBox.qml create mode 100644 FileSets/v3.00~42/MbEditBox.qml.orig create mode 100644 FileSets/v3.00~42/MbEditBoxDateTime.qml create mode 100644 FileSets/v3.00~42/MbEditBoxDateTime.qml.orig create mode 100644 FileSets/v3.00~42/MbItem.qml create mode 100644 FileSets/v3.00~42/MbItem.qml.orig create mode 100644 FileSets/v3.00~42/MbSpinBox.qml create mode 100644 FileSets/v3.00~42/MbSpinBox.qml.orig create mode 100644 FileSets/v3.00~42/MbStyle.qml create mode 100644 FileSets/v3.00~42/MbStyle.qml.orig create mode 100644 FileSets/v3.00~42/MbSubMenu.qml create mode 100644 FileSets/v3.00~42/MbSubMenu.qml.orig create mode 100644 FileSets/v3.00~42/OverviewBox.qml create mode 100644 FileSets/v3.00~42/OverviewBox.qml.orig create mode 100644 FileSets/v3.00~42/OverviewConnection.qml create mode 100644 FileSets/v3.00~42/OverviewConnection.qml.orig create mode 100644 FileSets/v3.00~42/OverviewConnectionEnd.qml create mode 100644 FileSets/v3.00~42/OverviewConnectionEnd.qml.orig create mode 100644 FileSets/v3.00~42/OverviewGridParallel.qml create mode 100644 FileSets/v3.00~42/OverviewGridParallel.qml.orig create mode 100644 FileSets/v3.00~42/OverviewHub.qml create mode 100644 FileSets/v3.00~42/OverviewHub.qml.orig create mode 100644 FileSets/v3.00~42/OverviewSolarCharger.qml create mode 100644 FileSets/v3.00~42/OverviewSolarCharger.qml.orig create mode 100644 FileSets/v3.00~42/OverviewSolarInverter.qml create mode 100644 FileSets/v3.00~42/OverviewSolarInverter.qml.orig create mode 100644 FileSets/v3.00~42/Tile.qml create mode 100644 FileSets/v3.00~42/TileText.qml create mode 100644 FileSets/v3.00~42/TileText.qml.orig create mode 100644 FileSets/v3.00~42/styles.css create mode 100644 FileSets/v3.00~42/styles.css.orig diff --git a/.gitattributes b/.gitattributes index dfe07704..2fbd5d81 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,8 @@ -# Auto detect text files and perform LF normalization -* text=auto +# Set default behaviour, in case users don't have core.autocrlf set. +* text=auto eol=lf + +# Denote all files that are truly binary and should not be modified. +*.gif binary +*.jpg binary +*.png binary +*.zip binary diff --git a/FileSets/PowerGauge.qml b/FileSets/PowerGauge.qml index fce2f267..d487a611 100644 --- a/FileSets/PowerGauge.qml +++ b/FileSets/PowerGauge.qml @@ -8,6 +8,8 @@ import com.victron.velib 1.0 Item { id: root + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + property variant connection property bool reversePower: false @@ -51,7 +53,7 @@ Item { property real bar1offset property real bar2offset property real bar3offset - + property color bar1color: "black" property color bar2color: "black" property color bar3color: "black" @@ -79,13 +81,13 @@ Item { visible: showLeftLabel } // right end label - Rectangle + Rectangle { anchors.fill: rightLabelText color: endLabelBackgroundColor visible: showRightLabel } - TileText + TileText { id: rightLabelText text: "C" @@ -106,7 +108,7 @@ Item { width: showGauge ? scaleFactor * (maxReverseDisplayed - maxReverseLimit) : 0 height: root.height clip: true - color: "#ffb3b3" + color: darkMode.value == 0 ? "#ffb3b3" : "#bf8686" visible: showGauge anchors { @@ -121,7 +123,7 @@ Item { width: showGauge ? scaleFactor * (maxForwardLimit + maxReverseLimit) : 0 height: root.height clip: true - color: "#99ff99" + color: darkMode.value == 0 ? "#99ff99" : "#73bf73" visible: showGauge anchors { @@ -136,7 +138,7 @@ Item { width: showGauge ? scaleFactor * (maxForwardDisplayed - maxForwardLimit) : 0 height: root.height clip: true - color: "#ffb3b3" + color: darkMode.value == 0 ? "#ffb3b3" : "#bf8686" visible: showGauge anchors { @@ -281,8 +283,8 @@ Item { function getBarColor (currentValue) { if (currentValue > maxForwardLimit || currentValue < -maxReverseLimit) - return "red" + return darkMode.value == 0 ? "#ff0000" : "#bf0000" else - return "green" + return darkMode.value == 0 ? "#008000" : "#006000" } } diff --git a/FileSets/PowerGaugeBattery.qml b/FileSets/PowerGaugeBattery.qml index e6e5b1cd..cce0c6c2 100644 --- a/FileSets/PowerGaugeBattery.qml +++ b/FileSets/PowerGaugeBattery.qml @@ -7,12 +7,14 @@ import com.victron.velib 1.0 Item { id: root + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + property variant endLabelFontSize: 16 property color endLabelBackgroundColor: "transparent" - property int barHeight: Math.max (height / 2, 2) + property int barHeight: Math.max (height / 2, 2) property color barColor: "black" - + property real chargeOverload: maxCharge.valid ? maxCharge.value : 0 property real chargeCaution: chargeOverload property real maxChargeDisplayed: chargeOverload * 1.1 @@ -27,7 +29,7 @@ Item { property real barWidth property real barOffset property color endLabelColor: "white" - + Component.onCompleted: calculateBarWidth () VBusItem @@ -74,7 +76,7 @@ Item { visible: showGauge } // charge end label - Rectangle + Rectangle { anchors.fill: chargeText color: endLabelBackgroundColor @@ -101,7 +103,7 @@ Item { width: showGauge ? scaleFactor * (maxDischargeDisplayed - dischargeOverload) : 0 height: root.height clip: true - color: "#ffb3b3" + color: darkMode.value == 0 ? "#ffb3b3" : "#bf8686" visible: showGauge anchors { @@ -116,7 +118,7 @@ Item { width: showGauge ? scaleFactor * (dischargeOverload - dischargeCaution) : 0 height: root.height clip: true - color: "#bbbb00" + color: darkMode.value == 0 ? "#bbbb00" : "#8c8c00" visible: showGauge anchors { @@ -131,7 +133,7 @@ Item { width: showGauge ? scaleFactor * (dischargeCaution + chargeCaution) : 0 height: root.height clip: true - color: "#99ff99" + color: darkMode.value == 0 ? "#99ff99" : "#73bf73" visible: showGauge anchors { @@ -146,7 +148,7 @@ Item { width: showGauge ? scaleFactor * (chargeOverload - chargeCaution) : 0 height: root.height clip: true - color: "#bbbb00" + color: darkMode.value == 0 ? "#bbbb00" : "#8c8c00" visible: showGauge anchors { @@ -161,7 +163,7 @@ Item { width: showGauge ? scaleFactor * (maxChargeDisplayed - chargeOverload) : 0 height: root.height clip: true - color: "#ffb3b3" + color: darkMode.value == 0 ? "#ffb3b3" : "#bf8686" visible: showGauge anchors { @@ -202,32 +204,32 @@ Item { leftMargin: zeroOffset } } - + function calculateBarWidth () { var current = batteryCurrent.valid ? batteryCurrent.value : 0 - + current = Math.min ( Math.max (current, -maxDischargeDisplayed), maxChargeDisplayed) - + if (current >= 0) { if (current > chargeOverload) - barColor = "red" + barColor = darkMode.value == 0 ? "#ff0000" : "#bf0000" else if (current > chargeCaution) - barColor = "yellow" + barColor = darkMode.value == 0 ? "#ffff00" : "#bfbf00" else - barColor = "green" + barColor = darkMode.value == 0 ? "#008000" : "#006000" root.barOffset = zeroOffset root.barWidth = current * scaleFactor } else - { + { if (current < -dischargeOverload) - barColor = "red" + barColor = darkMode.value == 0 ? "#ff0000" : "#bf0000" else if (current < -dischargeCaution) - barColor = "yellow" + barColor = darkMode.value == 0 ? "#ffff00" : "#bfbf00" else - barColor = "green" + barColor = darkMode.value == 0 ? "#008000" : "#006000" root.barWidth = -current * scaleFactor root.barOffset = zeroOffset - root.barWidth } diff --git a/FileSets/PowerGaugeMulti.qml b/FileSets/PowerGaugeMulti.qml index 3627b264..9a6a4066 100644 --- a/FileSets/PowerGaugeMulti.qml +++ b/FileSets/PowerGaugeMulti.qml @@ -8,6 +8,8 @@ import com.victron.velib 1.0 Item { id: root + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + property string inverterService: "" property VBusItem inverterModeItem: VBusItem { bind: Utils.path(inverterService, "/Mode" ) } VBusItem @@ -17,37 +19,37 @@ Item { } VBusItem - { + { id: pInL1; bind: Utils.path(inverterService, "/Ac/ActiveIn/L1/P") onValidChanged: calculateBar1 () onValueChanged: calculateBar1 () } VBusItem - { + { id: pInL2; bind: Utils.path(inverterService, "/Ac/ActiveIn/L2/P") onValidChanged: calculateBar2 () onValueChanged: calculateBar2 () } VBusItem - { + { id: pInL3; bind: Utils.path(inverterService, "/Ac/ActiveIn/L3/P") onValidChanged: calculateBar3 () onValueChanged: calculateBar3 () } VBusItem - { + { id: pOutL1; bind: Utils.path(inverterService, "/Ac/Out/L1/P") onValidChanged: calculateBar1 () onValueChanged: calculateBar1 () } VBusItem - { + { id: pOutL2; bind: Utils.path(inverterService, "/Ac/Out/L2/P") onValidChanged: calculateBar2 () onValueChanged: calculateBar2 () } VBusItem - { + { id: pOutL3; bind: Utils.path(inverterService, "/Ac/Out/L3/P") onValidChanged: calculateBar3 () onValueChanged: calculateBar3 () @@ -133,7 +135,7 @@ Item { width: visible ? (maxChargerDisplayed - chargerMaxPower) * scaleFactor : 0 height: root.height clip: true - color: "#ffb3b3" + color: darkMode.value == 0 ? "#ffb3b3" : "#bf8686" visible: showGauge anchors { @@ -148,7 +150,7 @@ Item { width: visible ? (inverterCaution + chargerMaxPower) * scaleFactor : 0 height: root.height clip: true - color: "#99ff99" + color: darkMode.value == 0 ? "#99ff99" : "#73bf73" visible: showGauge anchors { @@ -163,7 +165,7 @@ Item { width: visible ? (inverterOverload - inverterCaution) * scaleFactor : 0 height: root.height clip: true - color: "#bbbb00" + color: darkMode.value == 0 ? "#bbbb00" : "#8c8c00" visible: showGauge anchors { @@ -178,7 +180,7 @@ Item { width: visible ? (maxInverterDisplayed - inverterOverload) * scaleFactor : 0 height: root.height clip: true - color: "#ffb3b3" + color: darkMode.value == 0 ? "#ffb3b3" : "#bf8686" visible: showGauge anchors { @@ -331,11 +333,11 @@ Item { function getBarColor (power) { if (power > inverterOverload || power < -chargerMaxPower) - return "red" + return darkMode.value == 0 ? "#ff0000" : "#bf0000" else if (power > inverterCaution) - return "yellow" + return darkMode.value == 0 ? "#ffff00" : "#bfbf00" else - return "green" + return darkMode.value == 0 ? "#008000" : "#006000" } function calculateAllBars () diff --git a/FileSets/TileTemp.qml b/FileSets/TileTemp.qml index e728c55b..47050a1f 100644 --- a/FileSets/TileTemp.qml +++ b/FileSets/TileTemp.qml @@ -9,6 +9,8 @@ import "tanksensor.js" as TankSensor Tile { id: root + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + property string bindPrefix: serviceName property string alarmBase: Utils.path ("com.victronenergy.temprelay/Sensor/", serviceName.split(".")[3]) property VBusItem alarmEnabledItem: VBusItem { bind: Utils.path ( alarmBase, "/Enabled" ) } @@ -52,8 +54,8 @@ Tile { property variant tempNames: [qsTr("Battery"), qsTr("Fridge"), qsTr("Generic")] property string tempName: customNameItem.valid && customNameItem.value !== "" ? customNameItem.value : temperatureTypeItem.valid ? tempNames [temperatureTypeItem.value] : isBatteryTemperature ? "Battery" : "TEMP" - property variant tempColors: ["#4aa3df", "#1abc9c", "#F39C12"] - property color tempColor: temperatureTypeItem.valid ? tempColors [temperatureTypeItem.value] : isBatteryTemperature ? "#4aa3df" :"#7f8c8d" + property variant tempColors: darkMode.value == 0 ? ["#4aa3df", "#1abc9c", "#F39C12"] : ["#25516f", "#0d5e4e", "#794e09"] + property color tempColor: temperatureTypeItem.valid ? tempColors [temperatureTypeItem.value] : isBatteryTemperature ? (darkMode.value == 0 ? "#4aa3df" : "#25516f") : (darkMode.value == 0 ? "#7f8c8d" : "#3f4646") // compact puts name on same line as temp/humidity // otherwise name is in title and value on separate line @@ -92,7 +94,7 @@ Tile { id: valueTextFixed height: nameTextFixed.height text: - { + { if (root.temperature == -99) return "--" else if (tempScale == 2) diff --git a/FileSets/fileList b/FileSets/fileList index 972e3d84..5279ec64 100644 --- a/FileSets/fileList +++ b/FileSets/fileList @@ -21,3 +21,20 @@ /opt/victronenergy/gui/qml/PageGenerator.qml /opt/victronenergy/gui/qml/PageSettingsGenerator.qml /opt/victronenergy/gui/qml/TileDigIn.qml +/opt/victronenergy/gui/qml/Battery.qml +/opt/victronenergy/gui/qml/MbEditBox.qml +/opt/victronenergy/gui/qml/MbEditBoxDateTime.qml +/opt/victronenergy/gui/qml/MbItem.qml +/opt/victronenergy/gui/qml/MbSpinBox.qml +/opt/victronenergy/gui/qml/MbStyle.qml +/opt/victronenergy/gui/qml/MbSubMenu.qml +/opt/victronenergy/gui/qml/OverviewBox.qml +/opt/victronenergy/gui/qml/OverviewConnection.qml +/opt/victronenergy/gui/qml/OverviewConnectionEnd.qml +/opt/victronenergy/gui/qml/OverviewGridParallel.qml +/opt/victronenergy/gui/qml/OverviewHub.qml +/opt/victronenergy/gui/qml/OverviewSolarCharger.qml +/opt/victronenergy/gui/qml/OverviewSolarInverter.qml +/opt/victronenergy/gui/qml/Tile.qml +/opt/victronenergy/gui/qml/TileText.qml +/var/www/venus/styling/styles.css diff --git a/FileSets/v2.66/PageSettingsDisplay.qml b/FileSets/v2.66/PageSettingsDisplay.qml index 0a017ab5..21009a43 100644 --- a/FileSets/v2.66/PageSettingsDisplay.qml +++ b/FileSets/v2.66/PageSettingsDisplay.qml @@ -53,6 +53,14 @@ MbPage { ] } + MbSwitch + { + id: enableDarkMode + bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" + name: qsTr ("Dark Mode") + writeAccessLevel: User.AccessUser + } + MbSwitch { bind: Utils.path(bindPrefix, "/MobileOverview") name: qsTr("Show boat & motorhome overview") diff --git a/FileSets/v2.66/Tile.qml b/FileSets/v2.66/Tile.qml index d6002883..d521bd1a 100644 --- a/FileSets/v2.66/Tile.qml +++ b/FileSets/v2.66/Tile.qml @@ -5,9 +5,11 @@ import QtQuick 1.1 Rectangle { id: root + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + color: "#009ec6" border.width: 2 - border.color: "#fff" + border.color: darkMode.value == 0 ? "#fff" : "#202020" clip: true property string title @@ -23,7 +25,7 @@ Rectangle { id: titleField font.pixelSize: 13 text: title - color: "white" + color: darkMode.value == 0 ? "white" : "#ddd" height: text === "" ? 0 : paintedHeight anchors { top: parent.top; topMargin: 5 @@ -36,7 +38,7 @@ Rectangle { width: parent.width - 10 height: 1 visible: title !== "" - color: "white" + color: darkMode.value == 0 ? "white" : "#ddd" anchors { top: titleField.bottom left: titleField.left diff --git a/FileSets/v2.66/main.qml b/FileSets/v2.66/main.qml index 0f317999..d2f5b505 100644 --- a/FileSets/v2.66/main.qml +++ b/FileSets/v2.66/main.qml @@ -51,6 +51,23 @@ PageStackWindow { onValueChanged: selectHubOverview () } + VBusItem + { + id: darkMode + bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" + //onValueChanged: selectHubOverview () + } + + // set background for darkmode (by githubm.com/mr-manuel) + Rectangle { + anchors + { + fill: parent + } + color: darkMode.value == 0 ? "transparent" : "#202020" + z: -1 + } + // base a new hub selection on the hub type and the enhanced flow overview flag function selectHubOverview () { @@ -430,9 +447,9 @@ PageStackWindow { function replaceOverview(oldPage, newPage) { for (var i = 0; i < overviewModel.count; i++) - { + { if (overviewModel.get(i).pageSource === oldPage) - { + { overviewModel.get(i).pageSource = newPage return } diff --git a/FileSets/v2.89/PageSettingsDisplay.qml b/FileSets/v2.89/PageSettingsDisplay.qml index 6b3c5762..90f79e71 100644 --- a/FileSets/v2.89/PageSettingsDisplay.qml +++ b/FileSets/v2.89/PageSettingsDisplay.qml @@ -53,6 +53,14 @@ MbPage { ] } + MbSwitch + { + id: enableDarkMode + bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" + name: qsTr ("Dark Mode") + writeAccessLevel: User.AccessUser + } + MbSwitch { bind: Utils.path(bindPrefix, "/MobileOverview") name: qsTr("Show boat & motorhome overview") diff --git a/FileSets/v2.89/main.qml b/FileSets/v2.89/main.qml index ee7a73ee..6d1fefa2 100644 --- a/FileSets/v2.89/main.qml +++ b/FileSets/v2.89/main.qml @@ -49,6 +49,23 @@ PageStackWindow { onValueChanged: selectHubOverview () } + VBusItem + { + id: darkMode + bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" + //onValueChanged: selectHubOverview () + } + + // set background for darkmode (by githubm.com/mr-manuel) + Rectangle { + anchors + { + fill: parent + } + color: darkMode.value == 0 ? "transparent" : "#202020" + z: -1 + } + // base a new hub selection on the hub type and the enhanced flow overview flag function selectHubOverview () { @@ -444,9 +461,9 @@ PageStackWindow { function replaceOverview(oldPage, newPage) { for (var i = 0; i < overviewModel.count; i++) - { + { if (overviewModel.get(i).pageSource === oldPage) - { + { overviewModel.get(i).pageSource = newPage return } diff --git a/FileSets/v2.92/dbus_systemcalc.py b/FileSets/v2.92/dbus_systemcalc.py new file mode 100644 index 00000000..0d167b64 --- /dev/null +++ b/FileSets/v2.92/dbus_systemcalc.py @@ -0,0 +1,1391 @@ +#!/usr/bin/python3 -u +# -*- coding: utf-8 -*- + +#### modified for GuiMods + +from dbus.mainloop.glib import DBusGMainLoop +import dbus +import argparse +import sys +import os +import json +import time +import re +from gi.repository import GLib + +# Victron packages +sys.path.insert(1, os.path.join(os.path.dirname(__file__), 'ext', 'velib_python')) +from vedbus import VeDbusService +from ve_utils import get_vrm_portal_id, exit_on_error +from dbusmonitor import DbusMonitor +from settingsdevice import SettingsDevice +from logger import setup_logging +import delegates +from sc_utils import safeadd as _safeadd, safemax as _safemax + +softwareVersion = '2.103' + +class SystemCalc: + STATE_IDLE = 0 + STATE_CHARGING = 1 + STATE_DISCHARGING = 2 + BATSERVICE_DEFAULT = 'default' + BATSERVICE_NOBATTERY = 'nobattery' + def __init__(self): + # Why this dummy? Because DbusMonitor expects these values to be there, even though we don't + # need them. So just add some dummy data. This can go away when DbusMonitor is more generic. + dummy = {'code': None, 'whenToLog': 'configChange', 'accessLevel': None} + dbus_tree = { + 'com.victronenergy.solarcharger': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Load/I': dummy, + '/FirmwareVersion': dummy}, + 'com.victronenergy.pvinverter': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Ac/L1/Power': dummy, + '/Ac/L2/Power': dummy, + '/Ac/L3/Power': dummy, + '/Ac/L1/Current': dummy, + '/Ac/L2/Current': dummy, + '/Ac/L3/Current': dummy, + '/Position': dummy, + '/ProductId': dummy}, + 'com.victronenergy.battery': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/DeviceInstance': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/1/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/0/Power': dummy, + '/Soc': dummy, + '/Sense/Current': dummy, + '/TimeToGo': dummy, + '/ConsumedAmphours': dummy, + '/ProductId': dummy, + '/CustomName': dummy}, + 'com.victronenergy.vebus' : { + '/Ac/ActiveIn/ActiveInput': dummy, + '/Ac/ActiveIn/L1/P': dummy, + '/Ac/ActiveIn/L2/P': dummy, + '/Ac/ActiveIn/L3/P': dummy, + '/Ac/ActiveIn/L1/I': dummy, + '/Ac/ActiveIn/L2/I': dummy, + '/Ac/ActiveIn/L3/I': dummy, + '/Ac/Out/L1/P': dummy, + '/Ac/Out/L2/P': dummy, + '/Ac/Out/L3/P': dummy, + '/Ac/Out/L1/I': dummy, + '/Ac/Out/L2/I': dummy, + '/Ac/Out/L3/I': dummy, +#### add for GuiMods + '/Ac/Out/L1/V': dummy, + '/Ac/Out/L2/V': dummy, + '/Ac/Out/L3/V': dummy, + '/Ac/Out/L1/F': dummy, + '/Ac/Out/L2/F': dummy, + '/Ac/Out/L3/F': dummy, + '/Ac/ActiveIn/L1/V': dummy, + '/Ac/ActiveIn/L2/V': dummy, + '/Ac/ActiveIn/L3/V': dummy, + '/Ac/ActiveIn/L1/F': dummy, + '/Ac/ActiveIn/L2/F': dummy, + '/Ac/ActiveIn/L3/F': dummy, + + '/Connected': dummy, + '/ProductId': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Mode': dummy, + '/State': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/0/Power': dummy, + '/Soc': dummy}, + 'com.victronenergy.fuelcell': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy}, + 'com.victronenergy.charger': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/1/Voltage': dummy, + '/Dc/1/Current': dummy, + '/Dc/2/Voltage': dummy, + '/Dc/2/Current': dummy}, + 'com.victronenergy.grid' : { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/ProductId' : dummy, + '/DeviceType' : dummy, + '/Ac/L1/Power': dummy, + '/Ac/L2/Power': dummy, + '/Ac/L3/Power': dummy, + '/Ac/L1/Current': dummy, + '/Ac/L2/Current': dummy, + '/Ac/L3/Current': dummy, +#### add for GuiMods + '/Ac/L1/Voltage': dummy, + '/Ac/L2/Voltage': dummy, + '/Ac/L3/Voltage': dummy, + '/Ac/L1/Frequency': dummy, + '/Ac/L2/Frequency': dummy, + '/Ac/L3/Frequency': dummy}, + 'com.victronenergy.genset' : { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/ProductId' : dummy, + '/DeviceType' : dummy, + '/Ac/L1/Power': dummy, + '/Ac/L2/Power': dummy, + '/Ac/L3/Power': dummy, + '/Ac/L1/Current': dummy, + '/Ac/L2/Current': dummy, + '/Ac/L3/Current': dummy, +#### add for GuiMods + '/Ac/L1/Voltage': dummy, + '/Ac/L2/Voltage': dummy, + '/Ac/L3/Voltage': dummy, + '/Ac/L1/Frequency': dummy, + '/Ac/L2/Frequency': dummy, + '/Ac/L3/Frequency': dummy, + + '/StarterVoltage': dummy}, + 'com.victronenergy.settings' : { + '/Settings/SystemSetup/AcInput1' : dummy, + '/Settings/SystemSetup/AcInput2' : dummy, + '/Settings/CGwacs/RunWithoutGridMeter' : dummy, + '/Settings/System/TimeZone' : dummy}, + 'com.victronenergy.temperature': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy}, + 'com.victronenergy.inverter': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Ac/Out/L1/P': dummy, + '/Ac/Out/L1/S': dummy, + '/Ac/Out/L1/V': dummy, + '/Ac/Out/L1/I': dummy, +#### add for GuiMods + '/Ac/Out/L1/F': dummy, + + '/Yield/Power': dummy, + '/Soc': dummy}, + 'com.victronenergy.multi': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Ac/ActiveIn/ActiveInput': dummy, + '/Ac/In/1/Type': dummy, + '/Ac/In/2/Type': dummy, + '/Ac/In/1/L1/P': dummy, + '/Ac/In/1/L1/I': dummy, + '/Ac/In/2/L1/P': dummy, + '/Ac/In/2/L1/I': dummy, + '/Ac/Out/L1/P': dummy, + '/Ac/Out/L1/V': dummy, + '/Ac/Out/L1/I': dummy, +#### add for GuiMods + '/Ac/L1/F': dummy, + + '/Yield/Power': dummy, + '/Soc': dummy}, + 'com.victronenergy.dcsystem': { + '/Dc/0/Voltage': dummy, + '/Dc/0/Power': dummy + }, + 'com.victronenergy.alternator': { + '/Dc/0/Power': dummy + }, +#### added for GuiMods + 'com.victronenergy.dcsource': { + '/Dc/0/Power': dummy, + '/Settings/MonitorMode': dummy + }, + 'com.victronenergy.motordrive': + { + '/Dc/0/Power': dummy + } + } + + self._modules = [ + delegates.Multi(), + delegates.HubTypeSelect(), + delegates.VebusSocWriter(), + delegates.ServiceMapper(), + delegates.RelayState(), + delegates.BuzzerControl(), + delegates.LgCircuitBreakerDetect(), + delegates.Dvcc(self), + delegates.BatterySense(self), + delegates.BatterySettings(self), + delegates.SystemState(self), + delegates.BatteryLife(), + delegates.ScheduledCharging(), + delegates.SourceTimers(), + #delegates.BydCurrentSense(self), + delegates.BatteryData(), + delegates.Gps(), + delegates.AcInputs(), + delegates.GensetStartStop(), + delegates.SocSync(self)] + + for m in self._modules: + for service, paths in m.get_input(): + s = dbus_tree.setdefault(service, {}) + for path in paths: + s[path] = dummy + + self._dbusmonitor = self._create_dbus_monitor(dbus_tree, valueChangedCallback=self._dbus_value_changed, + deviceAddedCallback=self._device_added, deviceRemovedCallback=self._device_removed) + + # Connect to localsettings + supported_settings = { + 'batteryservice': ['/Settings/SystemSetup/BatteryService', self.BATSERVICE_DEFAULT, 0, 0], + 'hasdcsystem': ['/Settings/SystemSetup/HasDcSystem', 0, 0, 1], + 'useacout': ['/Settings/SystemSetup/HasAcOutSystem', 1, 0, 1]} + + for m in self._modules: + for setting in m.get_settings(): + supported_settings[setting[0]] = list(setting[1:]) + + self._settings = self._create_settings(supported_settings, self._handlechangedsetting) + + self._dbusservice = self._create_dbus_service() + + for m in self._modules: + m.set_sources(self._dbusmonitor, self._settings, self._dbusservice) + + # At this moment, VRM portal ID is the MAC address of the CCGX. Anyhow, it should be string uniquely + # identifying the CCGX. + self._dbusservice.add_path('/Serial', value=get_vrm_portal_id()) + self._dbusservice.add_path( + '/AvailableBatteryServices', value=None, gettextcallback=self._gettext) + self._dbusservice.add_path( + '/AvailableBatteryMeasurements', value=None) + self._dbusservice.add_path( + '/AutoSelectedBatteryService', value=None, gettextcallback=self._gettext) + self._dbusservice.add_path( + '/AutoSelectedBatteryMeasurement', value=None, gettextcallback=self._gettext) + self._dbusservice.add_path( + '/ActiveBatteryService', value=None, gettextcallback=self._gettext) + self._dbusservice.add_path( + '/Dc/Battery/BatteryService', value=None) + self._dbusservice.add_path( + '/PvInvertersProductIds', value=None) + self._summeditems = { + '/Ac/Grid/L1/Power': {'gettext': '%.0F W'}, + '/Ac/Grid/L2/Power': {'gettext': '%.0F W'}, + '/Ac/Grid/L3/Power': {'gettext': '%.0F W'}, + '/Ac/Grid/L1/Current': {'gettext': '%.1F A'}, + '/Ac/Grid/L2/Current': {'gettext': '%.1F A'}, + '/Ac/Grid/L3/Current': {'gettext': '%.1F A'}, + '/Ac/Grid/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/Grid/ProductId': {'gettext': '%s'}, + '/Ac/Grid/DeviceType': {'gettext': '%s'}, + '/Ac/Genset/L1/Power': {'gettext': '%.0F W'}, + '/Ac/Genset/L2/Power': {'gettext': '%.0F W'}, + '/Ac/Genset/L3/Power': {'gettext': '%.0F W'}, + '/Ac/Genset/L1/Current': {'gettext': '%.1F A'}, + '/Ac/Genset/L2/Current': {'gettext': '%.1F A'}, + '/Ac/Genset/L3/Current': {'gettext': '%.1F A'}, + '/Ac/Genset/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/Genset/ProductId': {'gettext': '%s'}, + '/Ac/Genset/DeviceType': {'gettext': '%s'}, + '/Ac/ConsumptionOnOutput/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnOutput/L1/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnOutput/L2/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnOutput/L3/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnOutput/L1/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnOutput/L2/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnOutput/L3/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnInput/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnInput/L1/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnInput/L2/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnInput/L3/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnInput/L1/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnInput/L2/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnInput/L3/Current': {'gettext': '%.1F A'}, + '/Ac/Consumption/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/Consumption/L1/Power': {'gettext': '%.0F W'}, + '/Ac/Consumption/L2/Power': {'gettext': '%.0F W'}, + '/Ac/Consumption/L3/Power': {'gettext': '%.0F W'}, + '/Ac/Consumption/L1/Current': {'gettext': '%.1F A'}, + '/Ac/Consumption/L2/Current': {'gettext': '%.1F A'}, + '/Ac/Consumption/L3/Current': {'gettext': '%.1F A'}, + '/Ac/Consumption/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/PvOnOutput/L1/Power': {'gettext': '%.0F W'}, + '/Ac/PvOnOutput/L2/Power': {'gettext': '%.0F W'}, + '/Ac/PvOnOutput/L3/Power': {'gettext': '%.0F W'}, + '/Ac/PvOnOutput/L1/Current': {'gettext': '%.1F A'}, + '/Ac/PvOnOutput/L2/Current': {'gettext': '%.1F A'}, + '/Ac/PvOnOutput/L3/Current': {'gettext': '%.1F A'}, + '/Ac/PvOnOutput/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/PvOnGrid/L1/Power': {'gettext': '%.0F W'}, + '/Ac/PvOnGrid/L2/Power': {'gettext': '%.0F W'}, + '/Ac/PvOnGrid/L3/Power': {'gettext': '%.0F W'}, + '/Ac/PvOnGrid/L1/Current': {'gettext': '%.1F A'}, + '/Ac/PvOnGrid/L2/Current': {'gettext': '%.1F A'}, + '/Ac/PvOnGrid/L3/Current': {'gettext': '%.1F A'}, + '/Ac/PvOnGrid/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/PvOnGenset/L1/Power': {'gettext': '%.0F W'}, + '/Ac/PvOnGenset/L2/Power': {'gettext': '%.0F W'}, + '/Ac/PvOnGenset/L3/Power': {'gettext': '%.0F W'}, + '/Ac/PvOnGenset/L1/Current': {'gettext': '%.1F A'}, + '/Ac/PvOnGenset/L2/Current': {'gettext': '%.1F A'}, + '/Ac/PvOnGenset/L3/Current': {'gettext': '%.1F A'}, + '/Ac/PvOnGenset/NumberOfPhases': {'gettext': '%d'}, + '/Dc/Pv/Power': {'gettext': '%.0F W'}, + '/Dc/Pv/Current': {'gettext': '%.1F A'}, + '/Dc/Battery/Voltage': {'gettext': '%.2F V'}, + '/Dc/Battery/VoltageService': {'gettext': '%s'}, + '/Dc/Battery/Current': {'gettext': '%.1F A'}, + '/Dc/Battery/Power': {'gettext': '%.0F W'}, + '/Dc/Battery/Soc': {'gettext': '%.0F %%'}, + '/Dc/Battery/State': {'gettext': '%s'}, + '/Dc/Battery/TimeToGo': {'gettext': '%.0F s'}, + '/Dc/Battery/ConsumedAmphours': {'gettext': '%.1F Ah'}, + '/Dc/Battery/ProductId': {'gettext': '0x%x'}, + '/Dc/Charger/Power': {'gettext': '%.0F %%'}, + '/Dc/FuelCell/Power': {'gettext': '%.0F %%'}, + '/Dc/Alternator/Power': {'gettext': '%.0F W'}, + '/Dc/Vebus/Current': {'gettext': '%.1F A'}, + '/Dc/Vebus/Power': {'gettext': '%.0F W'}, + '/Dc/System/Power': {'gettext': '%.0F W'}, + '/Dc/System/MeasurementType': {'gettext': '%d'}, + '/Ac/ActiveIn/Source': {'gettext': '%s'}, + '/Ac/ActiveIn/L1/Power': {'gettext': '%.0F W'}, + '/Ac/ActiveIn/L2/Power': {'gettext': '%.0F W'}, + '/Ac/ActiveIn/L3/Power': {'gettext': '%.0F W'}, + '/Ac/ActiveIn/L1/Current': {'gettext': '%.1F A'}, + '/Ac/ActiveIn/L2/Current': {'gettext': '%.1F A'}, + '/Ac/ActiveIn/L3/Current': {'gettext': '%.1F A'}, + '/Ac/ActiveIn/NumberOfPhases': {'gettext': '%d'}, +#### added for GuiMods + '/Dc/WindGenerator/Power': {'gettext': '%.0F W'}, + '/Dc/MotorDrive/Power': {'gettext': '%.0F W'}, + '/Ac/Grid/L1/Voltage': {'gettext': '%.1F A'}, + '/Ac/Grid/L2/Voltage': {'gettext': '%.1F A'}, + '/Ac/Grid/L3/Voltage': {'gettext': '%.1F A'}, + '/Ac/Grid/Frequency': {'gettext': '%.1F Hz'}, + '/Ac/Genset/L1/Voltage': {'gettext': '%.1F A'}, + '/Ac/Genset/L2/Voltage': {'gettext': '%.1F A'}, + '/Ac/Genset/L3/Voltage': {'gettext': '%.1F A'}, + '/Ac/Genset/Frequency': {'gettext': '%.1F Hz'}, + '/Ac/ConsumptionOnOutput/L1/Voltage': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnOutput/L2/Voltage': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnOutput/L3/Voltage': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnOutput/Frequency': {'gettext': '%.1F Hz'}, + '/Ac/ConsumptionOnInput/L1/Voltage': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnInput/L2/Voltage': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnInput/L3/Voltage': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnInput/Frequency': {'gettext': '%.1F Hz'}, + '/Ac/Consumption/L1/Voltage': {'gettext': '%.1F A'}, + '/Ac/Consumption/L2/Voltage': {'gettext': '%.1F A'}, + '/Ac/Consumption/L3/Voltage': {'gettext': '%.1F A'}, + '/Ac/Consumption/Frequency': {'gettext': '%.1F A'}, + '/Ac/ActiveIn/L1/Voltage': {'gettext': '%.1F A'}, + '/Ac/ActiveIn/L2/Voltage': {'gettext': '%.1F A'}, + '/Ac/ActiveIn/L3/Voltage': {'gettext': '%.1F A'}, + '/Ac/ActiveIn/Frequency': {'gettext': '%.1F Hz'}, + } + + for m in self._modules: + self._summeditems.update(m.get_output()) + + for path in self._summeditems.keys(): + self._dbusservice.add_path(path, value=None, gettextcallback=self._gettext) + + self._batteryservice = None + self._determinebatteryservice() + + if self._batteryservice is None: + logger.info("Battery service initialized to None (setting == %s)" % + self._settings['batteryservice']) + + self._changed = True + for service, instance in self._dbusmonitor.get_service_list().items(): + self._device_added(service, instance, do_service_change=False) + +#### added for GuiMods + self.dcSystemPower = [0, 0, 0] + + self._handleservicechange() + self._updatevalues() + + GLib.timeout_add(1000, exit_on_error, self._handletimertick) + + def _create_dbus_monitor(self, *args, **kwargs): + raise Exception("This function should be overridden") + + def _create_settings(self, *args, **kwargs): + raise Exception("This function should be overridden") + + def _create_dbus_service(self): + raise Exception("This function should be overridden") + + def _handlechangedsetting(self, setting, oldvalue, newvalue): + self._determinebatteryservice() + self._changed = True + + # Give our delegates a chance to react on a settings change + for m in self._modules: + m.settings_changed(setting, oldvalue, newvalue) + + def _find_device_instance(self, serviceclass, instance): + """ Gets a mapping of services vs DeviceInstance using + get_service_list. Then searches for the specified DeviceInstance + and returns the service name. """ + services = self._dbusmonitor.get_service_list(classfilter=serviceclass) + + for k, v in services.items(): + if v == instance: + return k + return None + + def _determinebatteryservice(self): + auto_battery_service = self._autoselect_battery_service() + auto_battery_measurement = None + auto_selected = False + if auto_battery_service is not None: + services = self._dbusmonitor.get_service_list() + if auto_battery_service in services: + auto_battery_measurement = \ + self._get_instance_service_name(auto_battery_service, services[auto_battery_service]) + auto_battery_measurement = auto_battery_measurement.replace('.', '_').replace('/', '_') + '/Dc/0' + self._dbusservice['/AutoSelectedBatteryMeasurement'] = auto_battery_measurement + + if self._settings['batteryservice'] == self.BATSERVICE_DEFAULT: + auto_selected = True + newbatteryservice = auto_battery_service + self._dbusservice['/AutoSelectedBatteryService'] = ( + 'No battery monitor found' if newbatteryservice is None else + self._get_readable_service_name(newbatteryservice)) + + elif self._settings['batteryservice'] == self.BATSERVICE_NOBATTERY: + self._dbusservice['/AutoSelectedBatteryService'] = None + newbatteryservice = None + + else: + self._dbusservice['/AutoSelectedBatteryService'] = None + + s = self._settings['batteryservice'].split('/') + if len(s) != 2: + logger.error("The battery setting (%s) is invalid!" % self._settings['batteryservice']) + serviceclass = s[0] + instance = int(s[1]) if len(s) == 2 else None + + # newbatteryservice might turn into None if a chosen battery + # monitor no longer exists. Don't auto change the setting (it might + # come back) and don't autoselect another. + newbatteryservice = self._find_device_instance(serviceclass, instance) + + if newbatteryservice != self._batteryservice: + services = self._dbusmonitor.get_service_list() + instance = services.get(newbatteryservice, None) + if instance is None: + battery_service = None + else: + battery_service = self._get_instance_service_name(newbatteryservice, instance) + self._dbusservice['/ActiveBatteryService'] = battery_service + logger.info("Battery service, setting == %s, changed from %s to %s (%s)" % + (self._settings['batteryservice'], self._batteryservice, newbatteryservice, instance)) + + # Battery service has changed. Notify delegates. + for m in self._modules: + m.battery_service_changed(auto_selected, self._batteryservice, newbatteryservice) + self._dbusservice['/Dc/Battery/BatteryService'] = self._batteryservice = newbatteryservice + + def _autoselect_battery_service(self): + # Default setting business logic: + # first try to use a battery service (BMV or Lynx Shunt VE.Can). If there + # is more than one battery service, just use a random one. If no battery service is + # available, check if there are not Solar chargers and no normal chargers. If they are not + # there, assume this is a hub-2, hub-3 or hub-4 system and use VE.Bus SOC. + batteries = self._get_connected_service_list('com.victronenergy.battery') + + # Pick the first battery service + if len(batteries) > 0: + return sorted(batteries)[0] + + # No battery services, and there is a charger in the system. Abandon + # hope. + if self._get_first_connected_service('com.victronenergy.charger') is not None: + return None + + # Also no Multi, then give up. + vebus_service = self._get_service_having_lowest_instance('com.victronenergy.vebus') + if vebus_service is None: + # No VE.Bus, but maybe there is an inverter with built-in SOC + # tracking, eg RS Smart or Multi RS. + inverter = self._get_service_having_lowest_instance('com.victronenergy.multi') + if inverter and self._dbusmonitor.get_value(inverter[0], '/Soc') is not None: + return inverter[0] + + inverter = self._get_service_having_lowest_instance('com.victronenergy.inverter') + if inverter and self._dbusmonitor.get_value(inverter[0], '/Soc') is not None: + return inverter[0] + + return None + + # There is a Multi, it supports tracking external charge current from + # solarchargers, and there are no DC loads. Then use it. + if self._dbusmonitor.get_value( + vebus_service[0], '/ExtraBatteryCurrent') is not None \ + and self._get_first_connected_service('com.victronenergy.dcsystem') is None \ + and self._settings['hasdcsystem'] == 0: + return vebus_service[0] + + # Multi does not support tracking solarcharger current, and we have + # solar chargers. Then we cannot use it. + if self._get_first_connected_service('com.victronenergy.solarcharger') is not None: + return None + + # Only a Multi, no other chargers. Then we can use it. + return vebus_service[0] + + @property + def batteryservice(self): + return self._batteryservice + + # Called on a one second timer + def _handletimertick(self): + if self._changed: + self._updatevalues() + self._changed = False + + return True # keep timer running + + def _updatepvinverterspidlist(self): + # Create list of connected pv inverters id's + pvinverters = self._dbusmonitor.get_service_list('com.victronenergy.pvinverter') + productids = [] + + for pvinverter in pvinverters: + pid = self._dbusmonitor.get_value(pvinverter, '/ProductId') + if pid is not None and pid not in productids: + productids.append(pid) + self._dbusservice['/PvInvertersProductIds'] = productids + + def _updatevalues(self): + # ==== PREPARATIONS ==== + newvalues = {} + + # Set the user timezone + if 'TZ' not in os.environ: + tz = self._dbusmonitor.get_value('com.victronenergy.settings', '/Settings/System/TimeZone') + if tz is not None: + os.environ['TZ'] = tz + time.tzset() + + # Determine values used in logic below + vebusses = self._dbusmonitor.get_service_list('com.victronenergy.vebus') + vebuspower = 0 + for vebus in vebusses: + v = self._dbusmonitor.get_value(vebus, '/Dc/0/Voltage') + i = self._dbusmonitor.get_value(vebus, '/Dc/0/Current') + if v is not None and i is not None: + vebuspower += v * i + + # ==== PVINVERTERS ==== + pvinverters = self._dbusmonitor.get_service_list('com.victronenergy.pvinverter') + pos = {0: '/Ac/PvOnGrid', 1: '/Ac/PvOnOutput', 2: '/Ac/PvOnGenset'} + for pvinverter in pvinverters: + # Position will be None if PV inverter service has just been removed (after retrieving the + # service list). + position = pos.get(self._dbusmonitor.get_value(pvinverter, '/Position')) + if position is not None: + for phase in range(1, 4): + power = self._dbusmonitor.get_value(pvinverter, '/Ac/L%s/Power' % phase) + if power is not None: + path = '%s/L%s/Power' % (position, phase) + newvalues[path] = _safeadd(newvalues.get(path), power) + + current = self._dbusmonitor.get_value(pvinverter, '/Ac/L%s/Current' % phase) + if current is not None: + path = '%s/L%s/Current' % (position, phase) + newvalues[path] = _safeadd(newvalues.get(path), current) + + for path in pos.values(): + self._compute_number_of_phases(path, newvalues) + + # ==== SOLARCHARGERS ==== + solarchargers = self._dbusmonitor.get_service_list('com.victronenergy.solarcharger') + solarcharger_batteryvoltage = None + solarcharger_batteryvoltage_service = None + solarchargers_charge_power = 0 + solarchargers_loadoutput_power = None + + for solarcharger in solarchargers: + v = self._dbusmonitor.get_value(solarcharger, '/Dc/0/Voltage') + if v is None: + continue + i = self._dbusmonitor.get_value(solarcharger, '/Dc/0/Current') + if i is None: + continue + l = self._dbusmonitor.get_value(solarcharger, '/Load/I', 0) + + if l is not None: + if solarchargers_loadoutput_power is None: + solarchargers_loadoutput_power = l * v + else: + solarchargers_loadoutput_power += l * v + + solarchargers_charge_power += v * i + + # Note that this path is not in the _summeditems{}, making for it to not be + # published on D-Bus. Which fine. The only one needing it is the vebussocwriter- + # delegate. + if '/Dc/Pv/ChargeCurrent' not in newvalues: + newvalues['/Dc/Pv/ChargeCurrent'] = i + else: + newvalues['/Dc/Pv/ChargeCurrent'] += i + + if '/Dc/Pv/Power' not in newvalues: + newvalues['/Dc/Pv/Power'] = v * _safeadd(i, l) + newvalues['/Dc/Pv/Current'] = _safeadd(i, l) + solarcharger_batteryvoltage = v + solarcharger_batteryvoltage_service = solarcharger + else: + newvalues['/Dc/Pv/Power'] += v * _safeadd(i, l) + newvalues['/Dc/Pv/Current'] += _safeadd(i, l) + + # ==== FUELCELLS ==== + fuelcells = self._dbusmonitor.get_service_list('com.victronenergy.fuelcell') + fuelcell_batteryvoltage = None + fuelcell_batteryvoltage_service = None + for fuelcell in fuelcells: + # Assume the battery connected to output 0 is the main battery + v = self._dbusmonitor.get_value(fuelcell, '/Dc/0/Voltage') + if v is None: + continue + + fuelcell_batteryvoltage = v + fuelcell_batteryvoltage_service = fuelcell + + i = self._dbusmonitor.get_value(fuelcell, '/Dc/0/Current') + if i is None: + continue + + if '/Dc/FuelCell/Power' not in newvalues: + newvalues['/Dc/FuelCell/Power'] = v * i + else: + newvalues['/Dc/FuelCell/Power'] += v * i + + # ==== ALTERNATOR ==== + alternators = self._dbusmonitor.get_service_list('com.victronenergy.alternator') + for alternator in alternators: +#### modified for GuiMods + # some alternators do not provide a valid power value if not running + # or below a minimum power/current + # so fill in a zero power so that the systemcalc power becomes valid + # Assume the battery connected to output 0 is the main battery + p = self._dbusmonitor.get_value(alternator, '/Dc/0/Power') + if p is None: + #### continue + p = 0 + + if '/Dc/Alternator/Power' not in newvalues: + newvalues['/Dc/Alternator/Power'] = p + else: + newvalues['/Dc/Alternator/Power'] += p + +#### added for GuiMods + # ==== MOTOR DRIVE ==== + motordrives = self._dbusmonitor.get_service_list('com.victronenergy.motordrive') + for motordrive in motordrives: + p = self._dbusmonitor.get_value(motordrive, '/Dc/0/Power') + if p is None: + p = 0 + + if '/Dc/MotorDrive/Power' not in newvalues: + newvalues['/Dc/MotorDrive/Power'] = p + else: + newvalues['/Dc/MotorDrive/Power'] += p + +#### added for GuiMods + # ==== DC SOURCES ==== + dcSources = self._dbusmonitor.get_service_list('com.victronenergy.dcsource') + for dcSource in dcSources: + monitorMode = self._dbusmonitor.get_value(dcSource,'/Settings/MonitorMode') + # ==== WIND GENERATOR ==== + if monitorMode == -8: + p = self._dbusmonitor.get_value(dcSource, '/Dc/0/Power') + if p is None: + continue + if '/Dc/WindGenerator/Power' not in newvalues: + newvalues['/Dc/WindGenerator/Power'] = p + else: + newvalues['/Dc/WindGenerator/Power'] += p + + # ==== CHARGERS ==== + chargers = self._dbusmonitor.get_service_list('com.victronenergy.charger') + charger_batteryvoltage = None + charger_batteryvoltage_service = None + for charger in chargers: + # Assume the battery connected to output 0 is the main battery + v = self._dbusmonitor.get_value(charger, '/Dc/0/Voltage') + if v is None: + continue + + charger_batteryvoltage = v + charger_batteryvoltage_service = charger + + i = self._dbusmonitor.get_value(charger, '/Dc/0/Current') + if i is None: + continue + + if '/Dc/Charger/Power' not in newvalues: + newvalues['/Dc/Charger/Power'] = v * i + else: + newvalues['/Dc/Charger/Power'] += v * i + + # ==== Other Inverters and Inverter/Chargers ==== + _other_inverters = sorted((di, s) for s, di in self._dbusmonitor.get_service_list('com.victronenergy.multi').items()) + \ + sorted((di, s) for s, di in self._dbusmonitor.get_service_list('com.victronenergy.inverter').items()) + non_vebus_inverters = [x[1] for x in _other_inverters] + non_vebus_inverter = None + if non_vebus_inverters: + non_vebus_inverter = non_vebus_inverters[0] + + # For RS Smart and Multi RS, add PV to the yield + for i in non_vebus_inverters: + if (pv_yield := self._dbusmonitor.get_value(i, "/Yield/Power")) is not None: + newvalues['/Dc/Pv/Power'] = newvalues.get('/Dc/Pv/Power', 0) + pv_yield + + # Used lower down, possibly needed for battery values as well + dcsystems = self._dbusmonitor.get_service_list('com.victronenergy.dcsystem') + + # ==== BATTERY ==== + if self._batteryservice is not None: + batteryservicetype = self._batteryservice.split('.')[2] + assert batteryservicetype in ('battery', 'vebus', 'inverter', 'multi') + + newvalues['/Dc/Battery/Soc'] = self._dbusmonitor.get_value(self._batteryservice,'/Soc') + newvalues['/Dc/Battery/TimeToGo'] = self._dbusmonitor.get_value(self._batteryservice,'/TimeToGo') + newvalues['/Dc/Battery/ConsumedAmphours'] = self._dbusmonitor.get_value(self._batteryservice,'/ConsumedAmphours') + newvalues['/Dc/Battery/ProductId'] = self._dbusmonitor.get_value(self._batteryservice, '/ProductId') + + if batteryservicetype in ('battery', 'inverter', 'multi'): + newvalues['/Dc/Battery/Voltage'] = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Voltage') + newvalues['/Dc/Battery/VoltageService'] = self._batteryservice + newvalues['/Dc/Battery/Current'] = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Current') + newvalues['/Dc/Battery/Power'] = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Power') + + elif batteryservicetype == 'vebus': + vebus_voltage = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Voltage') + vebus_current = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Current') + vebus_power = None if vebus_voltage is None or vebus_current is None else vebus_current * vebus_voltage + newvalues['/Dc/Battery/Voltage'] = vebus_voltage + newvalues['/Dc/Battery/VoltageService'] = self._batteryservice + if self._settings['hasdcsystem'] == 1 or dcsystems: + # hasdcsystem will normally disqualify the multi from being + # auto-selected as battery monitor, so the only way we're + # here is if the user explicitly selected the multi as the + # battery service + newvalues['/Dc/Battery/Current'] = vebus_current + if vebus_power is not None: + newvalues['/Dc/Battery/Power'] = vebus_power + else: + battery_power = _safeadd(solarchargers_charge_power, vebus_power) + newvalues['/Dc/Battery/Current'] = battery_power / vebus_voltage if vebus_voltage is not None and vebus_voltage > 0 else None + newvalues['/Dc/Battery/Power'] = battery_power + + + p = newvalues.get('/Dc/Battery/Power', None) + if p is not None: + if p > 30: + newvalues['/Dc/Battery/State'] = self.STATE_CHARGING + elif p < -30: + newvalues['/Dc/Battery/State'] = self.STATE_DISCHARGING + else: + newvalues['/Dc/Battery/State'] = self.STATE_IDLE + + else: + # The battery service is not a BMS/BMV or a suitable vebus. A + # suitable vebus is defined as one explicitly selected by the user, + # or one that was automatically selected for SOC tracking. We may + # however still have a VE.Bus, just not one that can accurately + # track SOC. If we have one, use it as voltage source. Otherwise + # try a solar charger, a charger, a vedirect inverter or a dcsource + # as fallbacks. + batteryservicetype = None + vebusses = self._dbusmonitor.get_service_list('com.victronenergy.vebus') + for vebus in vebusses: + v = self._dbusmonitor.get_value(vebus, '/Dc/0/Voltage') + s = self._dbusmonitor.get_value(vebus, '/State') + if v is not None and s not in (0, None): + newvalues['/Dc/Battery/Voltage'] = v + newvalues['/Dc/Battery/VoltageService'] = vebus + break # Skip the else below + else: + # No suitable vebus voltage, try other devices + if non_vebus_inverter is not None and (v := self._dbusmonitor.get_value(non_vebus_inverter, '/Dc/0/Voltage')) is not None: + newvalues['/Dc/Battery/Voltage'] = v + newvalues['/Dc/Battery/VoltageService'] = non_vebus_inverter + elif solarcharger_batteryvoltage is not None: + newvalues['/Dc/Battery/Voltage'] = solarcharger_batteryvoltage + newvalues['/Dc/Battery/VoltageService'] = solarcharger_batteryvoltage_service + elif charger_batteryvoltage is not None: + newvalues['/Dc/Battery/Voltage'] = charger_batteryvoltage + newvalues['/Dc/Battery/VoltageService'] = charger_batteryvoltage_service + elif fuelcell_batteryvoltage is not None: + newvalues['/Dc/Battery/Voltage'] = fuelcell_batteryvoltage + newvalues['/Dc/Battery/VoltageService'] = fuelcell_batteryvoltage_service + elif dcsystems: + # Get voltage from first dcsystem + s = next(iter(dcsystems.keys())) + v = self._dbusmonitor.get_value(s, '/Dc/0/Voltage') + if v is not None: + newvalues['/Dc/Battery/Voltage'] = v + newvalues['/Dc/Battery/VoltageService'] = s + + # We have no suitable battery monitor, so power and current data + # is not available. We can however calculate it from other values, + # if we have at least a battery voltage. + if '/Dc/Battery/Voltage' in newvalues: + dcsystempower = _safeadd(0, *(self._dbusmonitor.get_value(s, + '/Dc/0/Power', 0) for s in dcsystems)) + if dcsystems or self._settings['hasdcsystem'] == 0: + # Either DC loads are monitored, or there are no + # unmonitored DC loads or chargers: derive battery watts + # and amps from vebus, solarchargers, chargers and measured + # loads. + p = solarchargers_charge_power + newvalues.get('/Dc/Charger/Power', 0) + vebuspower - dcsystempower + voltage = newvalues['/Dc/Battery/Voltage'] + newvalues['/Dc/Battery/Current'] = p / voltage if voltage > 0 else None + newvalues['/Dc/Battery/Power'] = p + + # ==== SYSTEM POWER ==== + # Look for dcsytem devices, add them together. Otherwise, if enabled, + # calculate it + if dcsystems: + newvalues['/Dc/System/MeasurementType'] = 1 # measured + newvalues['/Dc/System/Power'] = 0 + for meter in dcsystems: + newvalues['/Dc/System/Power'] = _safeadd(newvalues['/Dc/System/Power'], + self._dbusmonitor.get_value(meter, '/Dc/0/Power')) + elif self._settings['hasdcsystem'] == 1 and batteryservicetype == 'battery': + # Calculate power being generated/consumed by not measured devices in the network. + # For MPPTs, take all the power, including power going out of the load output. + # /Dc/System: positive: consuming power + # VE.Bus: Positive: current flowing from the Multi to the dc system or battery + # Solarcharger & other chargers: positive: charging + # battery: Positive: charging battery. + # battery = solarcharger + charger + ve.bus - system + + battery_power = newvalues.get('/Dc/Battery/Power') + if battery_power is not None: + dc_pv_power = newvalues.get('/Dc/Pv/Power', 0) + charger_power = newvalues.get('/Dc/Charger/Power', 0) + fuelcell_power = newvalues.get('/Dc/FuelCell/Power', 0) + alternator_power = newvalues.get('/Dc/Alternator/Power', 0) +#### added for GuiMods + windgen_power = newvalues.get('/Dc/WindGenerator/Power', 0) + motordrive_power = newvalues.get('/Dc/MotorDrive/Power', 0) + + # If there are VE.Direct inverters, remove their power from the + # DC estimate. This is done using the AC value when the DC + # power values are not available. + inverter_power = 0 + for i in non_vebus_inverters: + inverter_current = self._dbusmonitor.get_value(i, '/Dc/0/Current') + if inverter_current is not None: + inverter_power += self._dbusmonitor.get_value( + i, '/Dc/0/Voltage', 0) * inverter_current + else: + inverter_power += self._dbusmonitor.get_value( + i, '/Ac/Out/L1/V', 0) * self._dbusmonitor.get_value( + i, '/Ac/Out/L1/I', 0) + newvalues['/Dc/System/MeasurementType'] = 0 # estimated + # FIXME In future we will subtract alternator power from the + # calculated DC power, because it will be individually + # displayed. For now, we leave it out so that in the current + # version of Venus it does not break user's expectations. + #newvalues['/Dc/System/Power'] = dc_pv_power + charger_power + fuelcell_power + vebuspower - inverter_power - battery_power - alternator_power +#### changed for GuiMods + # average DC system power over 3 passes (seconds) to minimize wild swings in displayed value + self.dcSystemPower[0] = self.dcSystemPower[1] + self.dcSystemPower[1] = self.dcSystemPower[2] + self.dcSystemPower[2] = dc_pv_power + charger_power + fuelcell_power + vebuspower - inverter_power - battery_power + alternator_power + windgen_power - motordrive_power + newvalues['/Dc/System/Power'] = (self.dcSystemPower[0] + self.dcSystemPower[1] + self.dcSystemPower[2]) / 3 + + elif self._settings['hasdcsystem'] == 1 and solarchargers_loadoutput_power is not None: + newvalues['/Dc/System/MeasurementType'] = 0 # estimated + newvalues['/Dc/System/Power'] = solarchargers_loadoutput_power + + # ==== Vebus ==== + multi_path = getattr(delegates.Multi.instance.multi, 'service', None) + if multi_path is not None: + dc_current = self._dbusmonitor.get_value(multi_path, '/Dc/0/Current') + newvalues['/Dc/Vebus/Current'] = dc_current + dc_power = self._dbusmonitor.get_value(multi_path, '/Dc/0/Power') + # Just in case /Dc/0/Power is not available + if dc_power == None and dc_current is not None: + dc_voltage = self._dbusmonitor.get_value(multi_path, '/Dc/0/Voltage') + if dc_voltage is not None: + dc_power = dc_voltage * dc_current + # Note that there is also vebuspower, which is the total DC power summed over all multis. + # However, this value cannot be combined with /Dc/Multi/Current, because it does not make sense + # to add the Dc currents of all multis if they do not share the same DC voltage. + newvalues['/Dc/Vebus/Power'] = dc_power + + # ===== AC IN SOURCE ===== + ac_in_source = None + active_input = None + if multi_path is None: + # Check if we have an non-VE.Bus inverter. + if non_vebus_inverter is not None: + if (active_input := self._dbusmonitor.get_value(non_vebus_inverter, '/Ac/ActiveIn/ActiveInput')) is not None and \ + active_input in (0, 1) and \ + (active_type := self._dbusmonitor.get_value(non_vebus_inverter, '/Ac/In/{}/Type'.format(active_input + 1))) is not None: + ac_in_source = active_type + else: + ac_in_source = 240 + else: + active_input = self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/ActiveInput') + if active_input == 0xF0: + # Not connected + ac_in_source = 240 + elif active_input is not None: + settings_path = '/Settings/SystemSetup/AcInput%s' % (active_input + 1) + ac_in_source = self._dbusmonitor.get_value('com.victronenergy.settings', settings_path) + newvalues['/Ac/ActiveIn/Source'] = ac_in_source + + # ===== GRID METERS & CONSUMPTION ==== + grid_meter = delegates.AcInputs.instance.gridmeter + genset_meter = delegates.AcInputs.instance.gensetmeter + + # Make an educated guess as to what is being consumed from an AC source. If ac_in_source + # indicates grid, genset or shore, we use that. If the Multi is off, or disconnected through + # a relay assistant or otherwise, then assume the presence of a .grid or .genset service indicates + # presence of that AC source. If both are available, then give up. This decision making is here + # so the GUI has something to present even if the Multi is off. + ac_in_guess = ac_in_source + if ac_in_guess in (None, 0xF0): + if genset_meter is None and grid_meter is not None: + ac_in_guess = 1 + elif grid_meter is None and genset_meter is not None: + ac_in_guess = 2 + + consumption = { "L1" : None, "L2" : None, "L3" : None } + currentconsumption = { "L1" : None, "L2" : None, "L3" : None } + +#### added for GuiMods + voltageIn = { "L1" : None, "L2" : None, "L3" : None } + voltageOut = { "L1" : None, "L2" : None, "L3" : None } + frequencyIn = None + frequencyOut = None + + for device_type, em, _types in (('Grid', grid_meter, (1, 3)), ('Genset', genset_meter, (2,))): + # If a grid meter is present we use values from it. If not, we look at the multi. If it has + # AcIn1 or AcIn2 connected to the grid, we use those values. + # com.victronenergy.grid.??? indicates presence of an energy meter used as grid meter. + # com.victronenergy.vebus.???/Ac/ActiveIn/ActiveInput: decides which whether we look at AcIn1 + # or AcIn2 as possible grid connection. + uses_active_input = ac_in_source in _types + for phase in consumption: + p = None + mc = None + pvpower = newvalues.get('/Ac/PvOn%s/%s/Power' % (device_type, phase)) + pvcurrent = newvalues.get('/Ac/PvOn%s/%s/Current' % (device_type, phase)) + if em is not None: + p = self._dbusmonitor.get_value(em.service, '/Ac/%s/Power' % phase) + mc = self._dbusmonitor.get_value(em.service, '/Ac/%s/Current' % phase) +#### added for GuiMods + if voltageIn[phase] == None: + voltageIn[phase] = self._dbusmonitor.get_value(em.service, '/Ac/%s/Voltage' % phase) + if frequencyIn == None: + frequencyIn = self._dbusmonitor.get_value(em.service, '/Ac/%s/Frequency' % phase) + + # Compute consumption between energy meter and multi (meter power - multi AC in) and + # add an optional PV inverter on input to the mix. + c = None + cc = None + if uses_active_input: + if multi_path is not None: + try: + c = _safeadd(c, -self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/P' % phase)) + cc = _safeadd(cc, -self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/I' % phase)) +#### added for GuiMods + if voltageIn[phase] == None: + voltageIn[phase] = self._dbusmonitor.get_value(em.service, '/Ac/ActiveIn/%s/V' % phase) + if frequencyIn == None: + frequencyIn = self._dbusmonitor.get_value(em.service, '/Ac/ActiveIn/%s/F' % phase) + + except TypeError: + pass + elif non_vebus_inverter is not None and active_input in (0, 1): + try: + c = _safeadd(c, -self._dbusmonitor.get_value(non_vebus_inverter, '/Ac/In/%d/%s/P' % (active_input+1, phase))) + cc = _safeadd(cc, -self._dbusmonitor.get_value(non_vebus_inverter, '/Ac/In/%d/%s/I' % (active_input+1, phase))) +#### added for GuiMods + if voltageIn[phase] == None: + voltageIn[phase] = self._dbusmonitor.get_value(em.service, '/Ac/In/%d/%s/V' % (active_input+1, phase)) + if frequencyIn == None: + frequencyIn = self._dbusmonitor.get_value(em.service, '/Ac/In/%d/%s/F' % (active_input+1, phase)) + + except TypeError: + pass + + # If there's any power coming from a PV inverter in the inactive AC in (which is unlikely), + # it will still be used, because there may also be a load in the same ACIn consuming + # power, or the power could be fed back to the net. + c = _safeadd(c, p, pvpower) + cc = _safeadd(cc, mc, pvcurrent) + consumption[phase] = _safeadd(consumption[phase], _safemax(0, c)) + currentconsumption[phase] = _safeadd(currentconsumption[phase], _safemax(0, cc)) + else: + if uses_active_input: + if multi_path is not None and ( + p := self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/P' % phase)) is not None: + consumption[phase] = _safeadd(0, consumption[phase]) + currentconsumption[phase] = _safeadd(0, currentconsumption[phase]) + mc = self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/I' % phase) +#### added for GuiMods + if voltageIn[phase] == None: + voltageIn[phase] = self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/V' % phase) + if frequencyIn == None: + freq = self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/F' % phase) + if freq != None: + frequencyIn = freq + + elif non_vebus_inverter is not None and active_input in (0, 1): + p = self._dbusmonitor.get_value(non_vebus_inverter, '/Ac/In/%d/%s/P' % (active_input + 1, phase)) + mc = self._dbusmonitor.get_value(non_vebus_inverter, '/Ac/In/%d/%s/I' % (active_input + 1, phase)) +#### added for GuiMods + if voltageIn[phase] == None: + voltageIn[phase] = self._dbusmonitor.get_value(non_vebus_inverter, '/Ac/In/%d/%s/V' % (active_input + 1, phase)) + if frequencyIn == None: + frequencyIn = self._dbusmonitor.get_value(non_vebus_inverter, '/Ac/In/%d/%s/F' % (active_input + 1, phase)) + + if p is not None: + consumption[phase] = _safeadd(0, consumption[phase]) + currentconsumption[phase] = _safeadd(0, currentconsumption[phase]) + + # No relevant energy meter present. Assume there is no load between the grid and the multi. + # There may be a PV inverter present though (Hub-3 setup). + try: + p = _safeadd(p, -pvpower) + mc = _safeadd(mc, -pvcurrent) + except TypeError: + pass + + newvalues['/Ac/%s/%s/Power' % (device_type, phase)] = p + newvalues['/Ac/%s/%s/Current' % (device_type, phase)] = mc +#### added for GuiMods + if p != None: + newvalues['/Ac/%s/%s/Voltage' % (device_type, phase)] = voltageIn[phase] + newvalues['/Ac/%s/Frequency' % (device_type)] = frequencyIn + + if ac_in_guess in _types: + newvalues['/Ac/ActiveIn/%s/Power' % (phase,)] = p + newvalues['/Ac/ActiveIn/%s/Current' % (phase,)] = mc +#### added for GuiMods + if p != None: + newvalues['/Ac/ActiveIn/%s/Voltage' % (phase,)] = voltageIn[phase] + newvalues['/Ac/ActiveIn/Frequency'] = frequencyIn + + self._compute_number_of_phases('/Ac/%s' % device_type, newvalues) + self._compute_number_of_phases('/Ac/ActiveIn', newvalues) + + product_id = None + device_type_id = None + if em is not None: + product_id = em.product_id + device_type_id = em.device_type + if product_id is None and uses_active_input: + if multi_path is not None: + product_id = self._dbusmonitor.get_value(multi_path, '/ProductId') + elif non_vebus_inverter is not None: + product_id = self._dbusmonitor.get_value(non_vebus_inverter, '/ProductId') + newvalues['/Ac/%s/ProductId' % device_type] = product_id + newvalues['/Ac/%s/DeviceType' % device_type] = device_type_id + + # If we have an ESS system and RunWithoutGridMeter is set, there cannot be load on the AC-In, so it + # must be on AC-Out. Hence we do calculate AC-Out consumption even if 'useacout' is disabled. + # Similarly all load are by definition on the output if this is not an ESS system. + use_ac_out = \ + self._settings['useacout'] == 1 or \ + (multi_path is not None and self._dbusmonitor.get_value(multi_path, '/Hub4/AssistantId') not in (4, 5)) or \ + self._dbusmonitor.get_value('com.victronenergy.settings', '/Settings/CGwacs/RunWithoutGridMeter') == 1 + for phase in consumption: + c = None + a = None + if use_ac_out: + c = newvalues.get('/Ac/PvOnOutput/%s/Power' % phase) + a = newvalues.get('/Ac/PvOnOutput/%s/Current' % phase) +#### added for GuiMods + if voltageOut[phase] == None: + voltageOut[phase] = newvalues.get('/Ac/PvOnOutput/%s/Voltage' % phase) + if frequencyOut == None: + frequencyOut = newvalues.get('/Ac/PvOnOutput/%s/Frequency' % phase) + + if multi_path is None: + for inv in non_vebus_inverters: + ac_out = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/P' % phase) + i = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/I' % phase) +#### added for GuiMods + if voltageOut[phase] == None: + voltageOut[phase] = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/V' % phase) + if frequencyOut == None: + frequencyOut = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/F' % phase) + + # Some models don't show power, try apparent power, + # else calculate it + if ac_out is None: + ac_out = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/S' % phase) + if ac_out is None: +#### modified for GuiMods + # u = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/V' % phase) + if None not in (i, voltageOut[phase]): + ac_out = i * voltageOut[phase] + c = _safeadd(c, ac_out) + a = _safeadd(a, i) + else: + ac_out = self._dbusmonitor.get_value(multi_path, '/Ac/Out/%s/P' % phase) + c = _safeadd(c, ac_out) + i_out = self._dbusmonitor.get_value(multi_path, '/Ac/Out/%s/I' % phase) + a = _safeadd(a, i_out) +#### added for GuiMods + if voltageOut[phase] == None: + voltageOut[phase] = self._dbusmonitor.get_value(multi_path, '/Ac/Out/%s/V' % phase) + if frequencyOut == None: + frequencyOut = self._dbusmonitor.get_value(multi_path, '/Ac/Out/%s/F' % phase) + c = _safemax(0, c) + a = _safemax(0, a) + newvalues['/Ac/ConsumptionOnOutput/%s/Power' % phase] = c + newvalues['/Ac/ConsumptionOnOutput/%s/Current' % phase] = a + newvalues['/Ac/ConsumptionOnInput/%s/Power' % phase] = consumption[phase] + newvalues['/Ac/ConsumptionOnInput/%s/Current' % phase] = currentconsumption[phase] + newvalues['/Ac/Consumption/%s/Power' % phase] = _safeadd(consumption[phase], c) + newvalues['/Ac/Consumption/%s/Current' % phase] = _safeadd(currentconsumption[phase], a) +#### added for GuiMods + newvalues['/Ac/ConsumptionOnOutput/%s/Voltage' % phase] = voltageOut[phase] + newvalues['/Ac/ConsumptionOnInput/%s/Voltage' % phase] = voltageIn[phase] + if voltageOut[phase] != None: + newvalues['/Ac/Consumption/%s/Voltage' % phase] = voltageOut[phase] + elif voltageIn[phase] != None: + newvalues['/Ac/Consumption/%s/Voltage' % phase] = voltageIn[phase] + if frequencyIn != None: + newvalues['/Ac/ConsumptionOnInput/Frequency'] = frequencyIn + if frequencyOut != None: + newvalues['/Ac/ConsumptionOnOutput/Frequency'] = frequencyOut + if frequencyOut != None: + newvalues['/Ac/Consumption/Frequency'] = frequencyOut + elif frequencyIn != None: + newvalues['/Ac/Consumption/Frequency'] = frequencyIn + + self._compute_number_of_phases('/Ac/Consumption', newvalues) + self._compute_number_of_phases('/Ac/ConsumptionOnOutput', newvalues) + self._compute_number_of_phases('/Ac/ConsumptionOnInput', newvalues) + + for m in self._modules: + m.update_values(newvalues) + + # ==== UPDATE DBUS ITEMS ==== + with self._dbusservice as sss: + for path in self._summeditems.keys(): + # Why the None? Because we want to invalidate things we don't have anymore. + sss[path] = newvalues.get(path, None) + + def _handleservicechange(self): + # Update the available battery monitor services, used to populate the dropdown in the settings. + # Below code makes a dictionary. The key is [dbuserviceclass]/[deviceinstance]. For example + # "battery/245". The value is the name to show to the user in the dropdown. The full dbus- + # servicename, ie 'com.victronenergy.vebus.ttyO1' is not used, since the last part of that is not + # fixed. dbus-serviceclass name and the device instance are already fixed, so best to use those. + + services = self._get_connected_service_list('com.victronenergy.vebus') + services.update(self._get_connected_service_list('com.victronenergy.battery')) + services.update({k: v for k, v in self._get_connected_service_list( + 'com.victronenergy.multi').items() if self._dbusmonitor.get_value(k, '/Soc') is not None}) + services.update({k: v for k, v in self._get_connected_service_list( + 'com.victronenergy.inverter').items() if self._dbusmonitor.get_value(k, '/Soc') is not None}) + + ul = {self.BATSERVICE_DEFAULT: 'Automatic', self.BATSERVICE_NOBATTERY: 'No battery monitor'} + for servicename, instance in services.items(): + key = self._get_instance_service_name(servicename, instance) + ul[key] = self._get_readable_service_name(servicename) + self._dbusservice['/AvailableBatteryServices'] = json.dumps(ul) + + ul = {self.BATSERVICE_DEFAULT: 'Automatic', self.BATSERVICE_NOBATTERY: 'No battery monitor'} + # For later: for device supporting multiple Dc measurement we should add entries for /Dc/1 etc as + # well. + for servicename, instance in services.items(): + key = self._get_instance_service_name(servicename, instance).replace('.', '_').replace('/', '_') + '/Dc/0' + ul[key] = self._get_readable_service_name(servicename) + self._dbusservice['/AvailableBatteryMeasurements'] = ul + + self._determinebatteryservice() + self._updatepvinverterspidlist() + + self._changed = True + + def _get_readable_service_name(self, servicename): + return '%s on %s' % ( + self._dbusmonitor.get_value(servicename, '/ProductName'), + self._dbusmonitor.get_value(servicename, '/Mgmt/Connection')) + + def _get_instance_service_name(self, service, instance): + return '%s/%s' % ('.'.join(service.split('.')[0:3]), instance) + + def _remove_unconnected_services(self, services): + # Workaround: because com.victronenergy.vebus is available even when there is no vebus product + # connected, remove any service that is not connected. Previously we used + # /State since mandatory path /Connected is not implemented in mk2dbus, + # but this has since been resolved. + for servicename in list(services.keys()): + if (self._dbusmonitor.get_value(servicename, '/Connected') != 1 + or self._dbusmonitor.get_value(servicename, '/ProductName') is None + or self._dbusmonitor.get_value(servicename, '/Mgmt/Connection') is None): + del services[servicename] + + def _dbus_value_changed(self, dbusServiceName, dbusPath, dict, changes, deviceInstance): + self._changed = True + + # Workaround because com.victronenergy.vebus is available even when there is no vebus product + # connected. + if (dbusPath in ['/Connected', '/ProductName', '/Mgmt/Connection'] or + (dbusPath == '/State' and dbusServiceName.split('.')[0:3] == ['com', 'victronenergy', 'vebus'])): + self._handleservicechange() + + # Track the timezone changes + if dbusPath == '/Settings/System/TimeZone': + tz = changes.get('Value') + if tz is not None: + os.environ['TZ'] = tz + + def _device_added(self, service, instance, do_service_change=True): + if do_service_change: + self._handleservicechange() + + for m in self._modules: + m.device_added(service, instance, do_service_change) + + def _device_removed(self, service, instance): + self._handleservicechange() + + for m in self._modules: + m.device_removed(service, instance) + + def _gettext(self, path, value): + if path == '/Dc/Battery/State': + state = {self.STATE_IDLE: 'Idle', self.STATE_CHARGING: 'Charging', + self.STATE_DISCHARGING: 'Discharging'} + return state[value] + item = self._summeditems.get(path) + if item is not None: + return item['gettext'] % value + return str(value) + + def _compute_number_of_phases(self, path, newvalues): + number_of_phases = None + for phase in range(1, 4): + p = newvalues.get('%s/L%s/Power' % (path, phase)) + if p is not None: + number_of_phases = phase + newvalues[path + '/NumberOfPhases'] = number_of_phases + + def _get_connected_service_list(self, classfilter=None): + services = self._dbusmonitor.get_service_list(classfilter=classfilter) + self._remove_unconnected_services(services) + return services + + # returns a servicename string + def _get_first_connected_service(self, classfilter): + services = self._get_connected_service_list(classfilter=classfilter) + if len(services) == 0: + return None + return next(iter(services.items()), (None,))[0] + + # returns a tuple (servicename, instance) + def _get_service_having_lowest_instance(self, classfilter=None): + services = self._get_connected_service_list(classfilter=classfilter) + if len(services) == 0: + return None + + # sort the dict by value; returns list of tuples: (value, key) + s = sorted((value, key) for (key, value) in services.items()) + return (s[0][1], s[0][0]) + + +class DbusSystemCalc(SystemCalc): + def _create_dbus_monitor(self, *args, **kwargs): + return DbusMonitor(*args, **kwargs) + + def _create_settings(self, *args, **kwargs): + bus = dbus.SessionBus() if 'DBUS_SESSION_BUS_ADDRESS' in os.environ else dbus.SystemBus() + return SettingsDevice(bus, *args, timeout=10, **kwargs) + + def _create_dbus_service(self): + venusversion, venusbuildtime = self._get_venus_versioninfo() + + dbusservice = VeDbusService('com.victronenergy.system') + dbusservice.add_mandatory_paths( + processname=__file__, + processversion=softwareVersion, + connection='data from other dbus processes', + deviceinstance=0, + productid=None, + productname=None, + firmwareversion=venusversion, + hardwareversion=None, + connected=1) + dbusservice.add_path('/FirmwareBuild', value=venusbuildtime) + return dbusservice + + def _get_venus_versioninfo(self): + try: + with open("/opt/victronenergy/version", "r") as fp: + version, software, buildtime = fp.read().split('\n')[:3] + major, minor, _, rev = re.compile('v([0-9]*)\.([0-9]*)(~([0-9]*))?').match(version).groups() + return (int(major, 16)<<16)+(int(minor, 16)<<8)+(0 if rev is None else int(rev, 16)), buildtime + except Exception: + pass + return 0, '0' + +if __name__ == "__main__": + # Argument parsing + parser = argparse.ArgumentParser( + description='Converts readings from AC-Sensors connected to a VE.Bus device in a pvinverter ' + + 'D-Bus service.' + ) + + parser.add_argument("-d", "--debug", help="set logging level to debug", + action="store_true") + + args = parser.parse_args() + + print("-------- dbus_systemcalc, v" + softwareVersion + " is starting up --------") + logger = setup_logging(args.debug) + + # Have a mainloop, so we can send/receive asynchronous calls to and from dbus + DBusGMainLoop(set_as_default=True) + + systemcalc = DbusSystemCalc() + + # Start and run the mainloop + logger.info("Starting mainloop, responding only on events") + mainloop = GLib.MainLoop() + mainloop.run() diff --git a/FileSets/v2.92/dbus_systemcalc.py.orig b/FileSets/v2.92/dbus_systemcalc.py.orig new file mode 100644 index 00000000..21c59da3 --- /dev/null +++ b/FileSets/v2.92/dbus_systemcalc.py.orig @@ -0,0 +1,1193 @@ +#!/usr/bin/python3 -u +# -*- coding: utf-8 -*- + +from dbus.mainloop.glib import DBusGMainLoop +import dbus +import argparse +import sys +import os +import json +import time +import re +from gi.repository import GLib + +# Victron packages +sys.path.insert(1, os.path.join(os.path.dirname(__file__), 'ext', 'velib_python')) +from vedbus import VeDbusService +from ve_utils import get_vrm_portal_id, exit_on_error +from dbusmonitor import DbusMonitor +from settingsdevice import SettingsDevice +from logger import setup_logging +import delegates +from sc_utils import safeadd as _safeadd, safemax as _safemax + +softwareVersion = '2.103' + +class SystemCalc: + STATE_IDLE = 0 + STATE_CHARGING = 1 + STATE_DISCHARGING = 2 + BATSERVICE_DEFAULT = 'default' + BATSERVICE_NOBATTERY = 'nobattery' + def __init__(self): + # Why this dummy? Because DbusMonitor expects these values to be there, even though we don't + # need them. So just add some dummy data. This can go away when DbusMonitor is more generic. + dummy = {'code': None, 'whenToLog': 'configChange', 'accessLevel': None} + dbus_tree = { + 'com.victronenergy.solarcharger': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Load/I': dummy, + '/FirmwareVersion': dummy}, + 'com.victronenergy.pvinverter': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Ac/L1/Power': dummy, + '/Ac/L2/Power': dummy, + '/Ac/L3/Power': dummy, + '/Ac/L1/Current': dummy, + '/Ac/L2/Current': dummy, + '/Ac/L3/Current': dummy, + '/Position': dummy, + '/ProductId': dummy}, + 'com.victronenergy.battery': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/DeviceInstance': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/1/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/0/Power': dummy, + '/Soc': dummy, + '/Sense/Current': dummy, + '/TimeToGo': dummy, + '/ConsumedAmphours': dummy, + '/ProductId': dummy, + '/CustomName': dummy}, + 'com.victronenergy.vebus' : { + '/Ac/ActiveIn/ActiveInput': dummy, + '/Ac/ActiveIn/L1/P': dummy, + '/Ac/ActiveIn/L2/P': dummy, + '/Ac/ActiveIn/L3/P': dummy, + '/Ac/ActiveIn/L1/I': dummy, + '/Ac/ActiveIn/L2/I': dummy, + '/Ac/ActiveIn/L3/I': dummy, + '/Ac/Out/L1/P': dummy, + '/Ac/Out/L2/P': dummy, + '/Ac/Out/L3/P': dummy, + '/Ac/Out/L1/I': dummy, + '/Ac/Out/L2/I': dummy, + '/Ac/Out/L3/I': dummy, + '/Connected': dummy, + '/ProductId': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Mode': dummy, + '/State': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/0/Power': dummy, + '/Soc': dummy}, + 'com.victronenergy.fuelcell': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy}, + 'com.victronenergy.charger': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Dc/1/Voltage': dummy, + '/Dc/1/Current': dummy, + '/Dc/2/Voltage': dummy, + '/Dc/2/Current': dummy}, + 'com.victronenergy.grid' : { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/ProductId' : dummy, + '/DeviceType' : dummy, + '/Ac/L1/Power': dummy, + '/Ac/L2/Power': dummy, + '/Ac/L3/Power': dummy, + '/Ac/L1/Current': dummy, + '/Ac/L2/Current': dummy, + '/Ac/L3/Current': dummy}, + 'com.victronenergy.genset' : { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/ProductId' : dummy, + '/DeviceType' : dummy, + '/Ac/L1/Power': dummy, + '/Ac/L2/Power': dummy, + '/Ac/L3/Power': dummy, + '/Ac/L1/Current': dummy, + '/Ac/L2/Current': dummy, + '/Ac/L3/Current': dummy, + '/StarterVoltage': dummy}, + 'com.victronenergy.settings' : { + '/Settings/SystemSetup/AcInput1' : dummy, + '/Settings/SystemSetup/AcInput2' : dummy, + '/Settings/CGwacs/RunWithoutGridMeter' : dummy, + '/Settings/System/TimeZone' : dummy}, + 'com.victronenergy.temperature': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy}, + 'com.victronenergy.inverter': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Ac/Out/L1/P': dummy, + '/Ac/Out/L1/S': dummy, + '/Ac/Out/L1/V': dummy, + '/Ac/Out/L1/I': dummy, + '/Yield/Power': dummy, + '/Soc': dummy}, + 'com.victronenergy.multi': { + '/Connected': dummy, + '/ProductName': dummy, + '/Mgmt/Connection': dummy, + '/Dc/0/Voltage': dummy, + '/Dc/0/Current': dummy, + '/Ac/ActiveIn/ActiveInput': dummy, + '/Ac/In/1/Type': dummy, + '/Ac/In/2/Type': dummy, + '/Ac/In/1/L1/P': dummy, + '/Ac/In/1/L1/I': dummy, + '/Ac/In/2/L1/P': dummy, + '/Ac/In/2/L1/I': dummy, + '/Ac/Out/L1/P': dummy, + '/Ac/Out/L1/V': dummy, + '/Ac/Out/L1/I': dummy, + '/Yield/Power': dummy, + '/Soc': dummy}, + 'com.victronenergy.dcsystem': { + '/Dc/0/Voltage': dummy, + '/Dc/0/Power': dummy + }, + 'com.victronenergy.alternator': { + '/Dc/0/Power': dummy + } + } + + self._modules = [ + delegates.Multi(), + delegates.HubTypeSelect(), + delegates.VebusSocWriter(), + delegates.ServiceMapper(), + delegates.RelayState(), + delegates.BuzzerControl(), + delegates.LgCircuitBreakerDetect(), + delegates.Dvcc(self), + delegates.BatterySense(self), + delegates.BatterySettings(self), + delegates.SystemState(self), + delegates.BatteryLife(), + delegates.ScheduledCharging(), + delegates.SourceTimers(), + #delegates.BydCurrentSense(self), + delegates.BatteryData(), + delegates.Gps(), + delegates.AcInputs(), + delegates.GensetStartStop(), + delegates.SocSync(self)] + + for m in self._modules: + for service, paths in m.get_input(): + s = dbus_tree.setdefault(service, {}) + for path in paths: + s[path] = dummy + + self._dbusmonitor = self._create_dbus_monitor(dbus_tree, valueChangedCallback=self._dbus_value_changed, + deviceAddedCallback=self._device_added, deviceRemovedCallback=self._device_removed) + + # Connect to localsettings + supported_settings = { + 'batteryservice': ['/Settings/SystemSetup/BatteryService', self.BATSERVICE_DEFAULT, 0, 0], + 'hasdcsystem': ['/Settings/SystemSetup/HasDcSystem', 0, 0, 1], + 'useacout': ['/Settings/SystemSetup/HasAcOutSystem', 1, 0, 1]} + + for m in self._modules: + for setting in m.get_settings(): + supported_settings[setting[0]] = list(setting[1:]) + + self._settings = self._create_settings(supported_settings, self._handlechangedsetting) + + self._dbusservice = self._create_dbus_service() + + for m in self._modules: + m.set_sources(self._dbusmonitor, self._settings, self._dbusservice) + + # At this moment, VRM portal ID is the MAC address of the CCGX. Anyhow, it should be string uniquely + # identifying the CCGX. + self._dbusservice.add_path('/Serial', value=get_vrm_portal_id()) + self._dbusservice.add_path( + '/AvailableBatteryServices', value=None, gettextcallback=self._gettext) + self._dbusservice.add_path( + '/AvailableBatteryMeasurements', value=None) + self._dbusservice.add_path( + '/AutoSelectedBatteryService', value=None, gettextcallback=self._gettext) + self._dbusservice.add_path( + '/AutoSelectedBatteryMeasurement', value=None, gettextcallback=self._gettext) + self._dbusservice.add_path( + '/ActiveBatteryService', value=None, gettextcallback=self._gettext) + self._dbusservice.add_path( + '/Dc/Battery/BatteryService', value=None) + self._dbusservice.add_path( + '/PvInvertersProductIds', value=None) + self._summeditems = { + '/Ac/Grid/L1/Power': {'gettext': '%.0F W'}, + '/Ac/Grid/L2/Power': {'gettext': '%.0F W'}, + '/Ac/Grid/L3/Power': {'gettext': '%.0F W'}, + '/Ac/Grid/L1/Current': {'gettext': '%.1F A'}, + '/Ac/Grid/L2/Current': {'gettext': '%.1F A'}, + '/Ac/Grid/L3/Current': {'gettext': '%.1F A'}, + '/Ac/Grid/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/Grid/ProductId': {'gettext': '%s'}, + '/Ac/Grid/DeviceType': {'gettext': '%s'}, + '/Ac/Genset/L1/Power': {'gettext': '%.0F W'}, + '/Ac/Genset/L2/Power': {'gettext': '%.0F W'}, + '/Ac/Genset/L3/Power': {'gettext': '%.0F W'}, + '/Ac/Genset/L1/Current': {'gettext': '%.1F A'}, + '/Ac/Genset/L2/Current': {'gettext': '%.1F A'}, + '/Ac/Genset/L3/Current': {'gettext': '%.1F A'}, + '/Ac/Genset/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/Genset/ProductId': {'gettext': '%s'}, + '/Ac/Genset/DeviceType': {'gettext': '%s'}, + '/Ac/ConsumptionOnOutput/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnOutput/L1/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnOutput/L2/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnOutput/L3/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnOutput/L1/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnOutput/L2/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnOutput/L3/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnInput/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnInput/L1/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnInput/L2/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnInput/L3/Power': {'gettext': '%.0F W'}, + '/Ac/ConsumptionOnInput/L1/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnInput/L2/Current': {'gettext': '%.1F A'}, + '/Ac/ConsumptionOnInput/L3/Current': {'gettext': '%.1F A'}, + '/Ac/Consumption/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/Consumption/L1/Power': {'gettext': '%.0F W'}, + '/Ac/Consumption/L2/Power': {'gettext': '%.0F W'}, + '/Ac/Consumption/L3/Power': {'gettext': '%.0F W'}, + '/Ac/Consumption/L1/Current': {'gettext': '%.1F A'}, + '/Ac/Consumption/L2/Current': {'gettext': '%.1F A'}, + '/Ac/Consumption/L3/Current': {'gettext': '%.1F A'}, + '/Ac/Consumption/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/PvOnOutput/L1/Power': {'gettext': '%.0F W'}, + '/Ac/PvOnOutput/L2/Power': {'gettext': '%.0F W'}, + '/Ac/PvOnOutput/L3/Power': {'gettext': '%.0F W'}, + '/Ac/PvOnOutput/L1/Current': {'gettext': '%.1F A'}, + '/Ac/PvOnOutput/L2/Current': {'gettext': '%.1F A'}, + '/Ac/PvOnOutput/L3/Current': {'gettext': '%.1F A'}, + '/Ac/PvOnOutput/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/PvOnGrid/L1/Power': {'gettext': '%.0F W'}, + '/Ac/PvOnGrid/L2/Power': {'gettext': '%.0F W'}, + '/Ac/PvOnGrid/L3/Power': {'gettext': '%.0F W'}, + '/Ac/PvOnGrid/L1/Current': {'gettext': '%.1F A'}, + '/Ac/PvOnGrid/L2/Current': {'gettext': '%.1F A'}, + '/Ac/PvOnGrid/L3/Current': {'gettext': '%.1F A'}, + '/Ac/PvOnGrid/NumberOfPhases': {'gettext': '%.0F W'}, + '/Ac/PvOnGenset/L1/Power': {'gettext': '%.0F W'}, + '/Ac/PvOnGenset/L2/Power': {'gettext': '%.0F W'}, + '/Ac/PvOnGenset/L3/Power': {'gettext': '%.0F W'}, + '/Ac/PvOnGenset/L1/Current': {'gettext': '%.1F A'}, + '/Ac/PvOnGenset/L2/Current': {'gettext': '%.1F A'}, + '/Ac/PvOnGenset/L3/Current': {'gettext': '%.1F A'}, + '/Ac/PvOnGenset/NumberOfPhases': {'gettext': '%d'}, + '/Dc/Pv/Power': {'gettext': '%.0F W'}, + '/Dc/Pv/Current': {'gettext': '%.1F A'}, + '/Dc/Battery/Voltage': {'gettext': '%.2F V'}, + '/Dc/Battery/VoltageService': {'gettext': '%s'}, + '/Dc/Battery/Current': {'gettext': '%.1F A'}, + '/Dc/Battery/Power': {'gettext': '%.0F W'}, + '/Dc/Battery/Soc': {'gettext': '%.0F %%'}, + '/Dc/Battery/State': {'gettext': '%s'}, + '/Dc/Battery/TimeToGo': {'gettext': '%.0F s'}, + '/Dc/Battery/ConsumedAmphours': {'gettext': '%.1F Ah'}, + '/Dc/Battery/ProductId': {'gettext': '0x%x'}, + '/Dc/Charger/Power': {'gettext': '%.0F %%'}, + '/Dc/FuelCell/Power': {'gettext': '%.0F %%'}, + '/Dc/Alternator/Power': {'gettext': '%.0F W'}, + '/Dc/Vebus/Current': {'gettext': '%.1F A'}, + '/Dc/Vebus/Power': {'gettext': '%.0F W'}, + '/Dc/System/Power': {'gettext': '%.0F W'}, + '/Dc/System/MeasurementType': {'gettext': '%d'}, + '/Ac/ActiveIn/Source': {'gettext': '%s'}, + '/Ac/ActiveIn/L1/Power': {'gettext': '%.0F W'}, + '/Ac/ActiveIn/L2/Power': {'gettext': '%.0F W'}, + '/Ac/ActiveIn/L3/Power': {'gettext': '%.0F W'}, + '/Ac/ActiveIn/L1/Current': {'gettext': '%.1F A'}, + '/Ac/ActiveIn/L2/Current': {'gettext': '%.1F A'}, + '/Ac/ActiveIn/L3/Current': {'gettext': '%.1F A'}, + '/Ac/ActiveIn/NumberOfPhases': {'gettext': '%d'}, + } + + for m in self._modules: + self._summeditems.update(m.get_output()) + + for path in self._summeditems.keys(): + self._dbusservice.add_path(path, value=None, gettextcallback=self._gettext) + + self._batteryservice = None + self._determinebatteryservice() + + if self._batteryservice is None: + logger.info("Battery service initialized to None (setting == %s)" % + self._settings['batteryservice']) + + self._changed = True + for service, instance in self._dbusmonitor.get_service_list().items(): + self._device_added(service, instance, do_service_change=False) + + self._handleservicechange() + self._updatevalues() + + GLib.timeout_add(1000, exit_on_error, self._handletimertick) + + def _create_dbus_monitor(self, *args, **kwargs): + raise Exception("This function should be overridden") + + def _create_settings(self, *args, **kwargs): + raise Exception("This function should be overridden") + + def _create_dbus_service(self): + raise Exception("This function should be overridden") + + def _handlechangedsetting(self, setting, oldvalue, newvalue): + self._determinebatteryservice() + self._changed = True + + # Give our delegates a chance to react on a settings change + for m in self._modules: + m.settings_changed(setting, oldvalue, newvalue) + + def _find_device_instance(self, serviceclass, instance): + """ Gets a mapping of services vs DeviceInstance using + get_service_list. Then searches for the specified DeviceInstance + and returns the service name. """ + services = self._dbusmonitor.get_service_list(classfilter=serviceclass) + + for k, v in services.items(): + if v == instance: + return k + return None + + def _determinebatteryservice(self): + auto_battery_service = self._autoselect_battery_service() + auto_battery_measurement = None + auto_selected = False + if auto_battery_service is not None: + services = self._dbusmonitor.get_service_list() + if auto_battery_service in services: + auto_battery_measurement = \ + self._get_instance_service_name(auto_battery_service, services[auto_battery_service]) + auto_battery_measurement = auto_battery_measurement.replace('.', '_').replace('/', '_') + '/Dc/0' + self._dbusservice['/AutoSelectedBatteryMeasurement'] = auto_battery_measurement + + if self._settings['batteryservice'] == self.BATSERVICE_DEFAULT: + auto_selected = True + newbatteryservice = auto_battery_service + self._dbusservice['/AutoSelectedBatteryService'] = ( + 'No battery monitor found' if newbatteryservice is None else + self._get_readable_service_name(newbatteryservice)) + + elif self._settings['batteryservice'] == self.BATSERVICE_NOBATTERY: + self._dbusservice['/AutoSelectedBatteryService'] = None + newbatteryservice = None + + else: + self._dbusservice['/AutoSelectedBatteryService'] = None + + s = self._settings['batteryservice'].split('/') + if len(s) != 2: + logger.error("The battery setting (%s) is invalid!" % self._settings['batteryservice']) + serviceclass = s[0] + instance = int(s[1]) if len(s) == 2 else None + + # newbatteryservice might turn into None if a chosen battery + # monitor no longer exists. Don't auto change the setting (it might + # come back) and don't autoselect another. + newbatteryservice = self._find_device_instance(serviceclass, instance) + + if newbatteryservice != self._batteryservice: + services = self._dbusmonitor.get_service_list() + instance = services.get(newbatteryservice, None) + if instance is None: + battery_service = None + else: + battery_service = self._get_instance_service_name(newbatteryservice, instance) + self._dbusservice['/ActiveBatteryService'] = battery_service + logger.info("Battery service, setting == %s, changed from %s to %s (%s)" % + (self._settings['batteryservice'], self._batteryservice, newbatteryservice, instance)) + + # Battery service has changed. Notify delegates. + for m in self._modules: + m.battery_service_changed(auto_selected, self._batteryservice, newbatteryservice) + self._dbusservice['/Dc/Battery/BatteryService'] = self._batteryservice = newbatteryservice + + def _autoselect_battery_service(self): + # Default setting business logic: + # first try to use a battery service (BMV or Lynx Shunt VE.Can). If there + # is more than one battery service, just use a random one. If no battery service is + # available, check if there are not Solar chargers and no normal chargers. If they are not + # there, assume this is a hub-2, hub-3 or hub-4 system and use VE.Bus SOC. + batteries = self._get_connected_service_list('com.victronenergy.battery') + + # Pick the first battery service + if len(batteries) > 0: + return sorted(batteries)[0] + + # No battery services, and there is a charger in the system. Abandon + # hope. + if self._get_first_connected_service('com.victronenergy.charger') is not None: + return None + + # Also no Multi, then give up. + vebus_service = self._get_service_having_lowest_instance('com.victronenergy.vebus') + if vebus_service is None: + # No VE.Bus, but maybe there is an inverter with built-in SOC + # tracking, eg RS Smart or Multi RS. + inverter = self._get_service_having_lowest_instance('com.victronenergy.multi') + if inverter and self._dbusmonitor.get_value(inverter[0], '/Soc') is not None: + return inverter[0] + + inverter = self._get_service_having_lowest_instance('com.victronenergy.inverter') + if inverter and self._dbusmonitor.get_value(inverter[0], '/Soc') is not None: + return inverter[0] + + return None + + # There is a Multi, it supports tracking external charge current from + # solarchargers, and there are no DC loads. Then use it. + if self._dbusmonitor.get_value( + vebus_service[0], '/ExtraBatteryCurrent') is not None \ + and self._get_first_connected_service('com.victronenergy.dcsystem') is None \ + and self._settings['hasdcsystem'] == 0: + return vebus_service[0] + + # Multi does not support tracking solarcharger current, and we have + # solar chargers. Then we cannot use it. + if self._get_first_connected_service('com.victronenergy.solarcharger') is not None: + return None + + # Only a Multi, no other chargers. Then we can use it. + return vebus_service[0] + + @property + def batteryservice(self): + return self._batteryservice + + # Called on a one second timer + def _handletimertick(self): + if self._changed: + self._updatevalues() + self._changed = False + + return True # keep timer running + + def _updatepvinverterspidlist(self): + # Create list of connected pv inverters id's + pvinverters = self._dbusmonitor.get_service_list('com.victronenergy.pvinverter') + productids = [] + + for pvinverter in pvinverters: + pid = self._dbusmonitor.get_value(pvinverter, '/ProductId') + if pid is not None and pid not in productids: + productids.append(pid) + self._dbusservice['/PvInvertersProductIds'] = productids + + def _updatevalues(self): + # ==== PREPARATIONS ==== + newvalues = {} + + # Set the user timezone + if 'TZ' not in os.environ: + tz = self._dbusmonitor.get_value('com.victronenergy.settings', '/Settings/System/TimeZone') + if tz is not None: + os.environ['TZ'] = tz + time.tzset() + + # Determine values used in logic below + vebusses = self._dbusmonitor.get_service_list('com.victronenergy.vebus') + vebuspower = 0 + for vebus in vebusses: + v = self._dbusmonitor.get_value(vebus, '/Dc/0/Voltage') + i = self._dbusmonitor.get_value(vebus, '/Dc/0/Current') + if v is not None and i is not None: + vebuspower += v * i + + # ==== PVINVERTERS ==== + pvinverters = self._dbusmonitor.get_service_list('com.victronenergy.pvinverter') + pos = {0: '/Ac/PvOnGrid', 1: '/Ac/PvOnOutput', 2: '/Ac/PvOnGenset'} + for pvinverter in pvinverters: + # Position will be None if PV inverter service has just been removed (after retrieving the + # service list). + position = pos.get(self._dbusmonitor.get_value(pvinverter, '/Position')) + if position is not None: + for phase in range(1, 4): + power = self._dbusmonitor.get_value(pvinverter, '/Ac/L%s/Power' % phase) + if power is not None: + path = '%s/L%s/Power' % (position, phase) + newvalues[path] = _safeadd(newvalues.get(path), power) + + current = self._dbusmonitor.get_value(pvinverter, '/Ac/L%s/Current' % phase) + if current is not None: + path = '%s/L%s/Current' % (position, phase) + newvalues[path] = _safeadd(newvalues.get(path), current) + + for path in pos.values(): + self._compute_number_of_phases(path, newvalues) + + # ==== SOLARCHARGERS ==== + solarchargers = self._dbusmonitor.get_service_list('com.victronenergy.solarcharger') + solarcharger_batteryvoltage = None + solarcharger_batteryvoltage_service = None + solarchargers_charge_power = 0 + solarchargers_loadoutput_power = None + + for solarcharger in solarchargers: + v = self._dbusmonitor.get_value(solarcharger, '/Dc/0/Voltage') + if v is None: + continue + i = self._dbusmonitor.get_value(solarcharger, '/Dc/0/Current') + if i is None: + continue + l = self._dbusmonitor.get_value(solarcharger, '/Load/I', 0) + + if l is not None: + if solarchargers_loadoutput_power is None: + solarchargers_loadoutput_power = l * v + else: + solarchargers_loadoutput_power += l * v + + solarchargers_charge_power += v * i + + # Note that this path is not in the _summeditems{}, making for it to not be + # published on D-Bus. Which fine. The only one needing it is the vebussocwriter- + # delegate. + if '/Dc/Pv/ChargeCurrent' not in newvalues: + newvalues['/Dc/Pv/ChargeCurrent'] = i + else: + newvalues['/Dc/Pv/ChargeCurrent'] += i + + if '/Dc/Pv/Power' not in newvalues: + newvalues['/Dc/Pv/Power'] = v * _safeadd(i, l) + newvalues['/Dc/Pv/Current'] = _safeadd(i, l) + solarcharger_batteryvoltage = v + solarcharger_batteryvoltage_service = solarcharger + else: + newvalues['/Dc/Pv/Power'] += v * _safeadd(i, l) + newvalues['/Dc/Pv/Current'] += _safeadd(i, l) + + # ==== FUELCELLS ==== + fuelcells = self._dbusmonitor.get_service_list('com.victronenergy.fuelcell') + fuelcell_batteryvoltage = None + fuelcell_batteryvoltage_service = None + for fuelcell in fuelcells: + # Assume the battery connected to output 0 is the main battery + v = self._dbusmonitor.get_value(fuelcell, '/Dc/0/Voltage') + if v is None: + continue + + fuelcell_batteryvoltage = v + fuelcell_batteryvoltage_service = fuelcell + + i = self._dbusmonitor.get_value(fuelcell, '/Dc/0/Current') + if i is None: + continue + + if '/Dc/FuelCell/Power' not in newvalues: + newvalues['/Dc/FuelCell/Power'] = v * i + else: + newvalues['/Dc/FuelCell/Power'] += v * i + + # ==== ALTERNATOR ==== + alternators = self._dbusmonitor.get_service_list('com.victronenergy.alternator') + for alternator in alternators: + # Assume the battery connected to output 0 is the main battery + p = self._dbusmonitor.get_value(alternator, '/Dc/0/Power') + if p is None: + continue + + if '/Dc/Alternator/Power' not in newvalues: + newvalues['/Dc/Alternator/Power'] = p + else: + newvalues['/Dc/Alternator/Power'] += p + + # ==== CHARGERS ==== + chargers = self._dbusmonitor.get_service_list('com.victronenergy.charger') + charger_batteryvoltage = None + charger_batteryvoltage_service = None + for charger in chargers: + # Assume the battery connected to output 0 is the main battery + v = self._dbusmonitor.get_value(charger, '/Dc/0/Voltage') + if v is None: + continue + + charger_batteryvoltage = v + charger_batteryvoltage_service = charger + + i = self._dbusmonitor.get_value(charger, '/Dc/0/Current') + if i is None: + continue + + if '/Dc/Charger/Power' not in newvalues: + newvalues['/Dc/Charger/Power'] = v * i + else: + newvalues['/Dc/Charger/Power'] += v * i + + # ==== Other Inverters and Inverter/Chargers ==== + _other_inverters = sorted((di, s) for s, di in self._dbusmonitor.get_service_list('com.victronenergy.multi').items()) + \ + sorted((di, s) for s, di in self._dbusmonitor.get_service_list('com.victronenergy.inverter').items()) + non_vebus_inverters = [x[1] for x in _other_inverters] + non_vebus_inverter = None + if non_vebus_inverters: + non_vebus_inverter = non_vebus_inverters[0] + + # For RS Smart and Multi RS, add PV to the yield + for i in non_vebus_inverters: + if (pv_yield := self._dbusmonitor.get_value(i, "/Yield/Power")) is not None: + newvalues['/Dc/Pv/Power'] = newvalues.get('/Dc/Pv/Power', 0) + pv_yield + + # Used lower down, possibly needed for battery values as well + dcsystems = self._dbusmonitor.get_service_list('com.victronenergy.dcsystem') + + # ==== BATTERY ==== + if self._batteryservice is not None: + batteryservicetype = self._batteryservice.split('.')[2] + assert batteryservicetype in ('battery', 'vebus', 'inverter', 'multi') + + newvalues['/Dc/Battery/Soc'] = self._dbusmonitor.get_value(self._batteryservice,'/Soc') + newvalues['/Dc/Battery/TimeToGo'] = self._dbusmonitor.get_value(self._batteryservice,'/TimeToGo') + newvalues['/Dc/Battery/ConsumedAmphours'] = self._dbusmonitor.get_value(self._batteryservice,'/ConsumedAmphours') + newvalues['/Dc/Battery/ProductId'] = self._dbusmonitor.get_value(self._batteryservice, '/ProductId') + + if batteryservicetype in ('battery', 'inverter', 'multi'): + newvalues['/Dc/Battery/Voltage'] = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Voltage') + newvalues['/Dc/Battery/VoltageService'] = self._batteryservice + newvalues['/Dc/Battery/Current'] = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Current') + newvalues['/Dc/Battery/Power'] = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Power') + + elif batteryservicetype == 'vebus': + vebus_voltage = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Voltage') + vebus_current = self._dbusmonitor.get_value(self._batteryservice, '/Dc/0/Current') + vebus_power = None if vebus_voltage is None or vebus_current is None else vebus_current * vebus_voltage + newvalues['/Dc/Battery/Voltage'] = vebus_voltage + newvalues['/Dc/Battery/VoltageService'] = self._batteryservice + if self._settings['hasdcsystem'] == 1 or dcsystems: + # hasdcsystem will normally disqualify the multi from being + # auto-selected as battery monitor, so the only way we're + # here is if the user explicitly selected the multi as the + # battery service + newvalues['/Dc/Battery/Current'] = vebus_current + if vebus_power is not None: + newvalues['/Dc/Battery/Power'] = vebus_power + else: + battery_power = _safeadd(solarchargers_charge_power, vebus_power) + newvalues['/Dc/Battery/Current'] = battery_power / vebus_voltage if vebus_voltage is not None and vebus_voltage > 0 else None + newvalues['/Dc/Battery/Power'] = battery_power + + + p = newvalues.get('/Dc/Battery/Power', None) + if p is not None: + if p > 30: + newvalues['/Dc/Battery/State'] = self.STATE_CHARGING + elif p < -30: + newvalues['/Dc/Battery/State'] = self.STATE_DISCHARGING + else: + newvalues['/Dc/Battery/State'] = self.STATE_IDLE + + else: + # The battery service is not a BMS/BMV or a suitable vebus. A + # suitable vebus is defined as one explicitly selected by the user, + # or one that was automatically selected for SOC tracking. We may + # however still have a VE.Bus, just not one that can accurately + # track SOC. If we have one, use it as voltage source. Otherwise + # try a solar charger, a charger, a vedirect inverter or a dcsource + # as fallbacks. + batteryservicetype = None + vebusses = self._dbusmonitor.get_service_list('com.victronenergy.vebus') + for vebus in vebusses: + v = self._dbusmonitor.get_value(vebus, '/Dc/0/Voltage') + s = self._dbusmonitor.get_value(vebus, '/State') + if v is not None and s not in (0, None): + newvalues['/Dc/Battery/Voltage'] = v + newvalues['/Dc/Battery/VoltageService'] = vebus + break # Skip the else below + else: + # No suitable vebus voltage, try other devices + if non_vebus_inverter is not None and (v := self._dbusmonitor.get_value(non_vebus_inverter, '/Dc/0/Voltage')) is not None: + newvalues['/Dc/Battery/Voltage'] = v + newvalues['/Dc/Battery/VoltageService'] = non_vebus_inverter + elif solarcharger_batteryvoltage is not None: + newvalues['/Dc/Battery/Voltage'] = solarcharger_batteryvoltage + newvalues['/Dc/Battery/VoltageService'] = solarcharger_batteryvoltage_service + elif charger_batteryvoltage is not None: + newvalues['/Dc/Battery/Voltage'] = charger_batteryvoltage + newvalues['/Dc/Battery/VoltageService'] = charger_batteryvoltage_service + elif fuelcell_batteryvoltage is not None: + newvalues['/Dc/Battery/Voltage'] = fuelcell_batteryvoltage + newvalues['/Dc/Battery/VoltageService'] = fuelcell_batteryvoltage_service + elif dcsystems: + # Get voltage from first dcsystem + s = next(iter(dcsystems.keys())) + v = self._dbusmonitor.get_value(s, '/Dc/0/Voltage') + if v is not None: + newvalues['/Dc/Battery/Voltage'] = v + newvalues['/Dc/Battery/VoltageService'] = s + + # We have no suitable battery monitor, so power and current data + # is not available. We can however calculate it from other values, + # if we have at least a battery voltage. + if '/Dc/Battery/Voltage' in newvalues: + dcsystempower = _safeadd(0, *(self._dbusmonitor.get_value(s, + '/Dc/0/Power', 0) for s in dcsystems)) + if dcsystems or self._settings['hasdcsystem'] == 0: + # Either DC loads are monitored, or there are no + # unmonitored DC loads or chargers: derive battery watts + # and amps from vebus, solarchargers, chargers and measured + # loads. + p = solarchargers_charge_power + newvalues.get('/Dc/Charger/Power', 0) + vebuspower - dcsystempower + voltage = newvalues['/Dc/Battery/Voltage'] + newvalues['/Dc/Battery/Current'] = p / voltage if voltage > 0 else None + newvalues['/Dc/Battery/Power'] = p + + # ==== SYSTEM POWER ==== + # Look for dcsytem devices, add them together. Otherwise, if enabled, + # calculate it + if dcsystems: + newvalues['/Dc/System/MeasurementType'] = 1 # measured + newvalues['/Dc/System/Power'] = 0 + for meter in dcsystems: + newvalues['/Dc/System/Power'] = _safeadd(newvalues['/Dc/System/Power'], + self._dbusmonitor.get_value(meter, '/Dc/0/Power')) + elif self._settings['hasdcsystem'] == 1 and batteryservicetype == 'battery': + # Calculate power being generated/consumed by not measured devices in the network. + # For MPPTs, take all the power, including power going out of the load output. + # /Dc/System: positive: consuming power + # VE.Bus: Positive: current flowing from the Multi to the dc system or battery + # Solarcharger & other chargers: positive: charging + # battery: Positive: charging battery. + # battery = solarcharger + charger + ve.bus - system + + battery_power = newvalues.get('/Dc/Battery/Power') + if battery_power is not None: + dc_pv_power = newvalues.get('/Dc/Pv/Power', 0) + charger_power = newvalues.get('/Dc/Charger/Power', 0) + fuelcell_power = newvalues.get('/Dc/FuelCell/Power', 0) + alternator_power = newvalues.get('/Dc/Alternator/Power', 0) + + # If there are VE.Direct inverters, remove their power from the + # DC estimate. This is done using the AC value when the DC + # power values are not available. + inverter_power = 0 + for i in non_vebus_inverters: + inverter_current = self._dbusmonitor.get_value(i, '/Dc/0/Current') + if inverter_current is not None: + inverter_power += self._dbusmonitor.get_value( + i, '/Dc/0/Voltage', 0) * inverter_current + else: + inverter_power += self._dbusmonitor.get_value( + i, '/Ac/Out/L1/V', 0) * self._dbusmonitor.get_value( + i, '/Ac/Out/L1/I', 0) + newvalues['/Dc/System/MeasurementType'] = 0 # estimated + # FIXME In future we will subtract alternator power from the + # calculated DC power, because it will be individually + # displayed. For now, we leave it out so that in the current + # version of Venus it does not break user's expectations. + #newvalues['/Dc/System/Power'] = dc_pv_power + charger_power + fuelcell_power + vebuspower - inverter_power - battery_power - alternator_power + newvalues['/Dc/System/Power'] = dc_pv_power + charger_power + fuelcell_power + vebuspower - inverter_power - battery_power + + elif self._settings['hasdcsystem'] == 1 and solarchargers_loadoutput_power is not None: + newvalues['/Dc/System/MeasurementType'] = 0 # estimated + newvalues['/Dc/System/Power'] = solarchargers_loadoutput_power + + # ==== Vebus ==== + multi_path = getattr(delegates.Multi.instance.multi, 'service', None) + if multi_path is not None: + dc_current = self._dbusmonitor.get_value(multi_path, '/Dc/0/Current') + newvalues['/Dc/Vebus/Current'] = dc_current + dc_power = self._dbusmonitor.get_value(multi_path, '/Dc/0/Power') + # Just in case /Dc/0/Power is not available + if dc_power == None and dc_current is not None: + dc_voltage = self._dbusmonitor.get_value(multi_path, '/Dc/0/Voltage') + if dc_voltage is not None: + dc_power = dc_voltage * dc_current + # Note that there is also vebuspower, which is the total DC power summed over all multis. + # However, this value cannot be combined with /Dc/Multi/Current, because it does not make sense + # to add the Dc currents of all multis if they do not share the same DC voltage. + newvalues['/Dc/Vebus/Power'] = dc_power + + # ===== AC IN SOURCE ===== + ac_in_source = None + active_input = None + if multi_path is None: + # Check if we have an non-VE.Bus inverter. + if non_vebus_inverter is not None: + if (active_input := self._dbusmonitor.get_value(non_vebus_inverter, '/Ac/ActiveIn/ActiveInput')) is not None and \ + active_input in (0, 1) and \ + (active_type := self._dbusmonitor.get_value(non_vebus_inverter, '/Ac/In/{}/Type'.format(active_input + 1))) is not None: + ac_in_source = active_type + else: + ac_in_source = 240 + else: + active_input = self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/ActiveInput') + if active_input == 0xF0: + # Not connected + ac_in_source = 240 + elif active_input is not None: + settings_path = '/Settings/SystemSetup/AcInput%s' % (active_input + 1) + ac_in_source = self._dbusmonitor.get_value('com.victronenergy.settings', settings_path) + newvalues['/Ac/ActiveIn/Source'] = ac_in_source + + # ===== GRID METERS & CONSUMPTION ==== + grid_meter = delegates.AcInputs.instance.gridmeter + genset_meter = delegates.AcInputs.instance.gensetmeter + + # Make an educated guess as to what is being consumed from an AC source. If ac_in_source + # indicates grid, genset or shore, we use that. If the Multi is off, or disconnected through + # a relay assistant or otherwise, then assume the presence of a .grid or .genset service indicates + # presence of that AC source. If both are available, then give up. This decision making is here + # so the GUI has something to present even if the Multi is off. + ac_in_guess = ac_in_source + if ac_in_guess in (None, 0xF0): + if genset_meter is None and grid_meter is not None: + ac_in_guess = 1 + elif grid_meter is None and genset_meter is not None: + ac_in_guess = 2 + + consumption = { "L1" : None, "L2" : None, "L3" : None } + currentconsumption = { "L1" : None, "L2" : None, "L3" : None } + for device_type, em, _types in (('Grid', grid_meter, (1, 3)), ('Genset', genset_meter, (2,))): + # If a grid meter is present we use values from it. If not, we look at the multi. If it has + # AcIn1 or AcIn2 connected to the grid, we use those values. + # com.victronenergy.grid.??? indicates presence of an energy meter used as grid meter. + # com.victronenergy.vebus.???/Ac/ActiveIn/ActiveInput: decides which whether we look at AcIn1 + # or AcIn2 as possible grid connection. + uses_active_input = ac_in_source in _types + for phase in consumption: + p = None + mc = None + pvpower = newvalues.get('/Ac/PvOn%s/%s/Power' % (device_type, phase)) + pvcurrent = newvalues.get('/Ac/PvOn%s/%s/Current' % (device_type, phase)) + if em is not None: + p = self._dbusmonitor.get_value(em.service, '/Ac/%s/Power' % phase) + mc = self._dbusmonitor.get_value(em.service, '/Ac/%s/Current' % phase) + # Compute consumption between energy meter and multi (meter power - multi AC in) and + # add an optional PV inverter on input to the mix. + c = None + cc = None + if uses_active_input: + if multi_path is not None: + try: + c = _safeadd(c, -self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/P' % phase)) + cc = _safeadd(cc, -self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/I' % phase)) + except TypeError: + pass + elif non_vebus_inverter is not None and active_input in (0, 1): + try: + c = _safeadd(c, -self._dbusmonitor.get_value(non_vebus_inverter, '/Ac/In/%d/%s/P' % (active_input+1, phase))) + cc = _safeadd(cc, -self._dbusmonitor.get_value(non_vebus_inverter, '/Ac/In/%d/%s/I' % (active_input+1, phase))) + except TypeError: + pass + + # If there's any power coming from a PV inverter in the inactive AC in (which is unlikely), + # it will still be used, because there may also be a load in the same ACIn consuming + # power, or the power could be fed back to the net. + c = _safeadd(c, p, pvpower) + cc = _safeadd(cc, mc, pvcurrent) + consumption[phase] = _safeadd(consumption[phase], _safemax(0, c)) + currentconsumption[phase] = _safeadd(currentconsumption[phase], _safemax(0, cc)) + else: + if uses_active_input: + if multi_path is not None and ( + p := self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/P' % phase)) is not None: + consumption[phase] = _safeadd(0, consumption[phase]) + currentconsumption[phase] = _safeadd(0, currentconsumption[phase]) + mc = self._dbusmonitor.get_value(multi_path, '/Ac/ActiveIn/%s/I' % phase) + elif non_vebus_inverter is not None and active_input in (0, 1): + p = self._dbusmonitor.get_value(non_vebus_inverter, '/Ac/In/%d/%s/P' % (active_input + 1, phase)) + mc = self._dbusmonitor.get_value(non_vebus_inverter, '/Ac/In/%d/%s/I' % (active_input + 1, phase)) + if p is not None: + consumption[phase] = _safeadd(0, consumption[phase]) + currentconsumption[phase] = _safeadd(0, currentconsumption[phase]) + + # No relevant energy meter present. Assume there is no load between the grid and the multi. + # There may be a PV inverter present though (Hub-3 setup). + try: + p = _safeadd(p, -pvpower) + mc = _safeadd(mc, -pvcurrent) + except TypeError: + pass + + newvalues['/Ac/%s/%s/Power' % (device_type, phase)] = p + newvalues['/Ac/%s/%s/Current' % (device_type, phase)] = mc + if ac_in_guess in _types: + newvalues['/Ac/ActiveIn/%s/Power' % (phase,)] = p + newvalues['/Ac/ActiveIn/%s/Current' % (phase,)] = mc + + self._compute_number_of_phases('/Ac/%s' % device_type, newvalues) + self._compute_number_of_phases('/Ac/ActiveIn', newvalues) + + product_id = None + device_type_id = None + if em is not None: + product_id = em.product_id + device_type_id = em.device_type + if product_id is None and uses_active_input: + if multi_path is not None: + product_id = self._dbusmonitor.get_value(multi_path, '/ProductId') + elif non_vebus_inverter is not None: + product_id = self._dbusmonitor.get_value(non_vebus_inverter, '/ProductId') + newvalues['/Ac/%s/ProductId' % device_type] = product_id + newvalues['/Ac/%s/DeviceType' % device_type] = device_type_id + + # If we have an ESS system and RunWithoutGridMeter is set, there cannot be load on the AC-In, so it + # must be on AC-Out. Hence we do calculate AC-Out consumption even if 'useacout' is disabled. + # Similarly all load are by definition on the output if this is not an ESS system. + use_ac_out = \ + self._settings['useacout'] == 1 or \ + (multi_path is not None and self._dbusmonitor.get_value(multi_path, '/Hub4/AssistantId') not in (4, 5)) or \ + self._dbusmonitor.get_value('com.victronenergy.settings', '/Settings/CGwacs/RunWithoutGridMeter') == 1 + for phase in consumption: + c = None + a = None + if use_ac_out: + c = newvalues.get('/Ac/PvOnOutput/%s/Power' % phase) + a = newvalues.get('/Ac/PvOnOutput/%s/Current' % phase) + if multi_path is None: + for inv in non_vebus_inverters: + ac_out = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/P' % phase) + i = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/I' % phase) + + # Some models don't show power, try apparent power, + # else calculate it + if ac_out is None: + ac_out = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/S' % phase) + if ac_out is None: + u = self._dbusmonitor.get_value(inv, '/Ac/Out/%s/V' % phase) + if None not in (i, u): + ac_out = i * u + c = _safeadd(c, ac_out) + a = _safeadd(a, i) + else: + ac_out = self._dbusmonitor.get_value(multi_path, '/Ac/Out/%s/P' % phase) + c = _safeadd(c, ac_out) + i_out = self._dbusmonitor.get_value(multi_path, '/Ac/Out/%s/I' % phase) + a = _safeadd(a, i_out) + c = _safemax(0, c) + a = _safemax(0, a) + newvalues['/Ac/ConsumptionOnOutput/%s/Power' % phase] = c + newvalues['/Ac/ConsumptionOnOutput/%s/Current' % phase] = a + newvalues['/Ac/ConsumptionOnInput/%s/Power' % phase] = consumption[phase] + newvalues['/Ac/ConsumptionOnInput/%s/Current' % phase] = currentconsumption[phase] + newvalues['/Ac/Consumption/%s/Power' % phase] = _safeadd(consumption[phase], c) + newvalues['/Ac/Consumption/%s/Current' % phase] = _safeadd(currentconsumption[phase], a) + self._compute_number_of_phases('/Ac/Consumption', newvalues) + self._compute_number_of_phases('/Ac/ConsumptionOnOutput', newvalues) + self._compute_number_of_phases('/Ac/ConsumptionOnInput', newvalues) + + for m in self._modules: + m.update_values(newvalues) + + # ==== UPDATE DBUS ITEMS ==== + with self._dbusservice as sss: + for path in self._summeditems.keys(): + # Why the None? Because we want to invalidate things we don't have anymore. + sss[path] = newvalues.get(path, None) + + def _handleservicechange(self): + # Update the available battery monitor services, used to populate the dropdown in the settings. + # Below code makes a dictionary. The key is [dbuserviceclass]/[deviceinstance]. For example + # "battery/245". The value is the name to show to the user in the dropdown. The full dbus- + # servicename, ie 'com.victronenergy.vebus.ttyO1' is not used, since the last part of that is not + # fixed. dbus-serviceclass name and the device instance are already fixed, so best to use those. + + services = self._get_connected_service_list('com.victronenergy.vebus') + services.update(self._get_connected_service_list('com.victronenergy.battery')) + services.update({k: v for k, v in self._get_connected_service_list( + 'com.victronenergy.multi').items() if self._dbusmonitor.get_value(k, '/Soc') is not None}) + services.update({k: v for k, v in self._get_connected_service_list( + 'com.victronenergy.inverter').items() if self._dbusmonitor.get_value(k, '/Soc') is not None}) + + ul = {self.BATSERVICE_DEFAULT: 'Automatic', self.BATSERVICE_NOBATTERY: 'No battery monitor'} + for servicename, instance in services.items(): + key = self._get_instance_service_name(servicename, instance) + ul[key] = self._get_readable_service_name(servicename) + self._dbusservice['/AvailableBatteryServices'] = json.dumps(ul) + + ul = {self.BATSERVICE_DEFAULT: 'Automatic', self.BATSERVICE_NOBATTERY: 'No battery monitor'} + # For later: for device supporting multiple Dc measurement we should add entries for /Dc/1 etc as + # well. + for servicename, instance in services.items(): + key = self._get_instance_service_name(servicename, instance).replace('.', '_').replace('/', '_') + '/Dc/0' + ul[key] = self._get_readable_service_name(servicename) + self._dbusservice['/AvailableBatteryMeasurements'] = ul + + self._determinebatteryservice() + self._updatepvinverterspidlist() + + self._changed = True + + def _get_readable_service_name(self, servicename): + return '%s on %s' % ( + self._dbusmonitor.get_value(servicename, '/ProductName'), + self._dbusmonitor.get_value(servicename, '/Mgmt/Connection')) + + def _get_instance_service_name(self, service, instance): + return '%s/%s' % ('.'.join(service.split('.')[0:3]), instance) + + def _remove_unconnected_services(self, services): + # Workaround: because com.victronenergy.vebus is available even when there is no vebus product + # connected, remove any service that is not connected. Previously we used + # /State since mandatory path /Connected is not implemented in mk2dbus, + # but this has since been resolved. + for servicename in list(services.keys()): + if (self._dbusmonitor.get_value(servicename, '/Connected') != 1 + or self._dbusmonitor.get_value(servicename, '/ProductName') is None + or self._dbusmonitor.get_value(servicename, '/Mgmt/Connection') is None): + del services[servicename] + + def _dbus_value_changed(self, dbusServiceName, dbusPath, dict, changes, deviceInstance): + self._changed = True + + # Workaround because com.victronenergy.vebus is available even when there is no vebus product + # connected. + if (dbusPath in ['/Connected', '/ProductName', '/Mgmt/Connection'] or + (dbusPath == '/State' and dbusServiceName.split('.')[0:3] == ['com', 'victronenergy', 'vebus'])): + self._handleservicechange() + + # Track the timezone changes + if dbusPath == '/Settings/System/TimeZone': + tz = changes.get('Value') + if tz is not None: + os.environ['TZ'] = tz + + def _device_added(self, service, instance, do_service_change=True): + if do_service_change: + self._handleservicechange() + + for m in self._modules: + m.device_added(service, instance, do_service_change) + + def _device_removed(self, service, instance): + self._handleservicechange() + + for m in self._modules: + m.device_removed(service, instance) + + def _gettext(self, path, value): + if path == '/Dc/Battery/State': + state = {self.STATE_IDLE: 'Idle', self.STATE_CHARGING: 'Charging', + self.STATE_DISCHARGING: 'Discharging'} + return state[value] + item = self._summeditems.get(path) + if item is not None: + return item['gettext'] % value + return str(value) + + def _compute_number_of_phases(self, path, newvalues): + number_of_phases = None + for phase in range(1, 4): + p = newvalues.get('%s/L%s/Power' % (path, phase)) + if p is not None: + number_of_phases = phase + newvalues[path + '/NumberOfPhases'] = number_of_phases + + def _get_connected_service_list(self, classfilter=None): + services = self._dbusmonitor.get_service_list(classfilter=classfilter) + self._remove_unconnected_services(services) + return services + + # returns a servicename string + def _get_first_connected_service(self, classfilter): + services = self._get_connected_service_list(classfilter=classfilter) + if len(services) == 0: + return None + return next(iter(services.items()), (None,))[0] + + # returns a tuple (servicename, instance) + def _get_service_having_lowest_instance(self, classfilter=None): + services = self._get_connected_service_list(classfilter=classfilter) + if len(services) == 0: + return None + + # sort the dict by value; returns list of tuples: (value, key) + s = sorted((value, key) for (key, value) in services.items()) + return (s[0][1], s[0][0]) + + +class DbusSystemCalc(SystemCalc): + def _create_dbus_monitor(self, *args, **kwargs): + return DbusMonitor(*args, **kwargs) + + def _create_settings(self, *args, **kwargs): + bus = dbus.SessionBus() if 'DBUS_SESSION_BUS_ADDRESS' in os.environ else dbus.SystemBus() + return SettingsDevice(bus, *args, timeout=10, **kwargs) + + def _create_dbus_service(self): + venusversion, venusbuildtime = self._get_venus_versioninfo() + + dbusservice = VeDbusService('com.victronenergy.system') + dbusservice.add_mandatory_paths( + processname=__file__, + processversion=softwareVersion, + connection='data from other dbus processes', + deviceinstance=0, + productid=None, + productname=None, + firmwareversion=venusversion, + hardwareversion=None, + connected=1) + dbusservice.add_path('/FirmwareBuild', value=venusbuildtime) + return dbusservice + + def _get_venus_versioninfo(self): + try: + with open("/opt/victronenergy/version", "r") as fp: + version, software, buildtime = fp.read().split('\n')[:3] + major, minor, _, rev = re.compile('v([0-9]*)\.([0-9]*)(~([0-9]*))?').match(version).groups() + return (int(major, 16)<<16)+(int(minor, 16)<<8)+(0 if rev is None else int(rev, 16)), buildtime + except Exception: + pass + return 0, '0' + +if __name__ == "__main__": + # Argument parsing + parser = argparse.ArgumentParser( + description='Converts readings from AC-Sensors connected to a VE.Bus device in a pvinverter ' + + 'D-Bus service.' + ) + + parser.add_argument("-d", "--debug", help="set logging level to debug", + action="store_true") + + args = parser.parse_args() + + print("-------- dbus_systemcalc, v" + softwareVersion + " is starting up --------") + logger = setup_logging(args.debug) + + # Have a mainloop, so we can send/receive asynchronous calls to and from dbus + DBusGMainLoop(set_as_default=True) + + systemcalc = DbusSystemCalc() + + # Start and run the mainloop + logger.info("Starting mainloop, responding only on events") + mainloop = GLib.MainLoop() + mainloop.run() diff --git a/FileSets/v2.94/Battery.qml b/FileSets/v2.94/Battery.qml new file mode 100644 index 00000000..09533d4c --- /dev/null +++ b/FileSets/v2.94/Battery.qml @@ -0,0 +1,116 @@ +import QtQuick 1.1 + +Item { + id: root + + width: 145 + height: 101 + + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + property real soc: 80 + property string color: darkMode.value == 0 ? "#4789d0" : "#234468" + property string emptyColor: darkMode.value == 0 ? "#1abc9c" : "#0d5e4e" + property alias values: _values.children + + SvgRectangle { + id: leftTerminal + width: 12 + height: 8 + radius: 3 + color: soc < 100 ? emptyColor : root.color + anchors { + left: root.left; leftMargin: 12 + } + x: 12 + } + + SvgRectangle { + id: rightTerminal + width: 12 + height: 8 + radius: 3 + color: soc < 100 ? emptyColor : root.color + anchors { + right: root.right; rightMargin: 12 + } + } + + Rectangle { + id: background + + // NOTE: to remove the bottom of the terminals + border {width: 2; color: darkMode.value == 0 ? "white" : "#202020"} + height: root.height - leftTerminal.height + width: root.width + y: leftTerminal.height - 1 + + SvgRectangle { + height: parent.height + width: parent.width + color: root.emptyColor + radius: 3 + } + + SvgRectangle { + id: filledPart + width: root.width + height: soc * background.height / 100 + color: root.color + anchors.bottom: parent.bottom + radius: 3 + } + + SvgRectangle { + height: parent.height + width: parent.width * 0.7 + anchors.centerIn: parent + color: darkMode.value == 0 ? "#ffffff" : "#202020" + opacity: 0.06 + } + } + + MbIcon { + source: getBatteryLogo() + anchors { + right: parent.right; rightMargin: 4 + bottom: parent.bottom; bottomMargin: 4 + } + + function getBatteryLogo() + { + var pid = sys.batteryProductId.value + var logo = "" + + if (pid === 0xB014) + logo = "image://theme/overview-battery-freedomwon" + + return logo + } + } + + Text { + text: "-" + font.pixelSize: 13; font.bold: true + anchors.centerIn: leftTerminal + anchors.verticalCenterOffset: 12 + color: darkMode.value == 0 ? "#fff" : "#e1e1e1" + } + + Text { + text: "+" + font.pixelSize: 13; font.bold: true + anchors.centerIn: rightTerminal + anchors.verticalCenterOffset: 12 + color: darkMode.value == 0 ? "#fff" : "#e1e1e1" + } + + Item { + id: _values + anchors { + top: background.top; + bottom: root.bottom + left: root.left + right: root.right + } + } +} diff --git a/FileSets/v2.94/Battery.qml.orig b/FileSets/v2.94/Battery.qml.orig new file mode 100644 index 00000000..22a27a1e --- /dev/null +++ b/FileSets/v2.94/Battery.qml.orig @@ -0,0 +1,115 @@ +import QtQuick 1.1 + +Item { + id: root + + width: 145 + height: 101 + + property real soc: 80 + property string color: "#4789d0" + property string emptyColor: "#1abc9c" + property alias values: _values.children + + SvgRectangle { + id: leftTerminal + width: 12 + height: 8 + radius: 3 + color: soc < 100 ? emptyColor : root.color + anchors { + left: root.left; leftMargin: 12 + } + x: 12 + } + + SvgRectangle { + id: rightTerminal + width: 12 + height: 8 + radius: 3 + color: soc < 100 ? emptyColor : root.color + anchors { + right: root.right; rightMargin: 12 + } + } + + Rectangle { + id: background + + // NOTE: to remove the bottom of the terminals + border {width: 2; color: "white"} + height: root.height - leftTerminal.height + width: root.width + y: leftTerminal.height - 1 + + SvgRectangle { + height: parent.height + width: parent.width + color: root.emptyColor + radius: 3 + } + + SvgRectangle { + id: filledPart + width: root.width + height: soc * background.height / 100 + color: root.color + anchors.bottom: parent.bottom + radius: 3 + } + + SvgRectangle { + height: parent.height + width: parent.width * 0.7 + anchors.centerIn: parent + color: "#ffffff" + opacity: 0.06 + } + } + + MbIcon { + source: getBatteryLogo() + anchors { + right: parent.right; rightMargin: 4 + bottom: parent.bottom; bottomMargin: 4 + } + + function getBatteryLogo() + { + var pid = sys.batteryProductId.value + var logo = "" + + if (pid === 0xB014) + logo = "image://theme/overview-battery-freedomwon" + + return logo + } + } + + Text { + text: "-" + font.pixelSize: 13; font.bold: true + anchors.centerIn: leftTerminal + anchors.verticalCenterOffset: 12 + color: "#fff" + } + + Text { + text: "+" + font.pixelSize: 13; font.bold: true + anchors.centerIn: rightTerminal + anchors.verticalCenterOffset: 12 + color: "#fff" + } + + Item { + id: _values + anchors { + top: background.top; + bottom: root.bottom + left: root.left + right: root.right + } + } +} diff --git a/FileSets/v2.94/MbItem.qml b/FileSets/v2.94/MbItem.qml new file mode 100644 index 00000000..0b8263e0 --- /dev/null +++ b/FileSets/v2.94/MbItem.qml @@ -0,0 +1,189 @@ +import QtQuick 1.1 +import com.victron.velib 1.0 +import "utils.js" as Utils + +/* + * The MbItem serves as a base object for Items which can be placed in + * the menubrowser (Mb), see MbPage. It makes adds default functions for + * for key behavior, icons, subpage navigtation and only shows a default + * background. Any derived mb Item can fill it to its desire. + */ +Item { + id: root + width: (parent ? parent.width : 0) + height: defaultHeight + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + show: user.accessLevel >= showAccessLevel + + property int defaultHeight: style.itemHeight + + property bool editMode + property variant toolbarHandler: editMode ? editToolbarHandler : navToolBar + property alias navigationHandler: navToolBar + + property bool isCurrentItem: root.ListView.isCurrentItem + property MbStyle style: MbStyle { isCurrentItem: root.ListView.isCurrentItem } + + // Navigation for subpages + property bool hasSubpage: subpage !== undefined + property variant subpage + property variant _subpageInstance + + property bool cornerMark: false + + property int showAccessLevel: User.AccessUser + property int writeAccessLevel: User.AccessInstaller + property bool userHasWriteAccess: user.accessLevel >= writeAccessLevel + property bool editable: true + property alias backgroundColor: background.color + + // NOTE: this is added to our 4.8 qt version. Uncomment this line to run on a + // vanilla QT. But optional rows are then always visible. + //property bool show + + signal selected + signal clicked + + ToolbarHandler { + id: editToolbarHandler + + leftIcon: "icon-toolbar-cancel" + rightIcon: "icon-toolbar-ok" + + function leftAction() + { + cancel() + } + + function rightAction() + { + save() + } + } + + ToolbarHandlerMbItems { + id: navToolBar + isDefault: true + } + + function open() { + if (pageStack.currentPage.active && hasSubpage) + _subpageInstance = pageStack.push(subpage); + } + + function edit(isMouse) { + } + + function cancel() { + } + + function save() { + } + + function select() { + if (!pageStack) + return + + // Note: Getting the index from the model depends on the model type. + // So lets asked the listview for our index instead. + var n = pageStack.currentPage.listview.indexAt(root.x, root.y) + if (n < 0) + return + pageStack.currentPage.currentIndex = n + + if (!userHasWriteAccess && !hasSubpage && editable) + toast.createToast(qsTr("Setting locked for \"user\" access level."), 3000, "icon-lock-active"); + root.selected() + } + + Rectangle { + id: background + anchors.fill: parent + color: showAccessLevel >= User.AccessSuperUser ? style.backgroundColorService : style.backgroundColor + } + + MbIcon { + id: cornerMarkIcon + + iconId: "icon-items-corner" + (root.ListView.isCurrentItem || darkMode.value ? "-active" : "") + visible: cornerMark + anchors { + right: parent.right; rightMargin: 1 + bottom: bottomBorder.top; bottomMargin: 1 + } + } + + Rectangle { + id: bottomBorder + width: root.width + height: 1 + color: style.borderColor + anchors.bottom: root.bottom + } + + onIsCurrentItemChanged: { + if (editMode) + cancel() + } + + Keys.onRightPressed: { + if (userHasWriteAccess) + root.clicked() + if (!userHasWriteAccess && !hasSubpage) + toast.createToast(qsTr("Setting locked due to access level."), 3000, "icon-lock-active"); + else + open() + } + + function defaultCenterAction() + { + if (userHasWriteAccess) + root.clicked() + if (!userHasWriteAccess && !hasSubpage && editable) { + toast.createToast(qsTr("Setting locked due to access level."), 3000, "icon-lock-active"); + } else { + if (pageStack.currentPage.active && hasSubpage) + open() + else + edit() + } + } + + function handleMouseClick(onItem) { + if (hasSubpage && !onItem && editable) { + // When clicking again an on item with a value and a submenu which is in edit mode, + // since the value was pressed, then leave edit mode first instead of opening the + // page while leaving the item in an edit state. + if (editMode) { + cancel() + } else { + select() + open() + } + } else { + if (!root.ListView.isCurrentItem) { + select() + } else { + root.clicked() + edit(true) + } + } + } + + // If a submenu is opened with a dynamic model, the items can be destructed + // while a subpage is in the pagestack. Since navigation will then get stuck, + // do navigate out of the submenu in such a case. + Component.onDestruction: { + if (pageStack && _subpageInstance) { + if (pageStack.find(function(page) { return page === _subpageInstance; } ) !== null) { + pageStack.pop(_subpageInstance) + } + } + } + + MouseArea { + id: mouseArea + anchors.fill: parent + onClicked: handleMouseClick() + } +} diff --git a/FileSets/v2.94/MbItem.qml.orig b/FileSets/v2.94/MbItem.qml.orig new file mode 100644 index 00000000..04bbe38a --- /dev/null +++ b/FileSets/v2.94/MbItem.qml.orig @@ -0,0 +1,188 @@ +import QtQuick 1.1 +import com.victron.velib 1.0 +import "utils.js" as Utils + +/* + * The MbItem serves as a base object for Items which can be placed in + * the menubrowser (Mb), see MbPage. It makes adds default functions for + * for key behavior, icons, subpage navigtation and only shows a default + * background. Any derived mb Item can fill it to its desire. + */ +Item { + id: root + width: (parent ? parent.width : 0) + height: defaultHeight + show: user.accessLevel >= showAccessLevel + + property int defaultHeight: style.itemHeight + + property bool editMode + property variant toolbarHandler: editMode ? editToolbarHandler : navToolBar + property alias navigationHandler: navToolBar + + property bool isCurrentItem: root.ListView.isCurrentItem + property MbStyle style: MbStyle { isCurrentItem: root.ListView.isCurrentItem } + + // Navigation for subpages + property bool hasSubpage: subpage !== undefined + property variant subpage + property variant _subpageInstance + + property bool cornerMark: false + + property int showAccessLevel: User.AccessUser + property int writeAccessLevel: User.AccessInstaller + property bool userHasWriteAccess: user.accessLevel >= writeAccessLevel + property bool editable: true + property alias backgroundColor: background.color + + // NOTE: this is added to our 4.8 qt version. Uncomment this line to run on a + // vanilla QT. But optional rows are then always visible. + //property bool show + + signal selected + signal clicked + + ToolbarHandler { + id: editToolbarHandler + + leftIcon: "icon-toolbar-cancel" + rightIcon: "icon-toolbar-ok" + + function leftAction() + { + cancel() + } + + function rightAction() + { + save() + } + } + + ToolbarHandlerMbItems { + id: navToolBar + isDefault: true + } + + function open() { + if (pageStack.currentPage.active && hasSubpage) + _subpageInstance = pageStack.push(subpage); + } + + function edit(isMouse) { + } + + function cancel() { + } + + function save() { + } + + function select() { + if (!pageStack) + return + + // Note: Getting the index from the model depends on the model type. + // So lets asked the listview for our index instead. + var n = pageStack.currentPage.listview.indexAt(root.x, root.y) + if (n < 0) + return + pageStack.currentPage.currentIndex = n + + if (!userHasWriteAccess && !hasSubpage && editable) + toast.createToast(qsTr("Setting locked for \"user\" access level."), 3000, "icon-lock-active"); + root.selected() + } + + Rectangle { + id: background + anchors.fill: parent + color: showAccessLevel >= User.AccessSuperUser ? style.backgroundColorService : style.backgroundColor + } + + MbIcon { + id: cornerMarkIcon + + iconId: "icon-items-corner" + (root.ListView.isCurrentItem ? "-active" : "") + visible: cornerMark + anchors { + right: parent.right; rightMargin: 1 + bottom: bottomBorder.top; bottomMargin: 1 + } + } + + Rectangle { + id: bottomBorder + width: root.width + height: 1 + color: style.borderColor + anchors.bottom: root.bottom + } + + onIsCurrentItemChanged: { + if (editMode) + cancel() + } + + Keys.onRightPressed: { + if (userHasWriteAccess) + root.clicked() + if (!userHasWriteAccess && !hasSubpage) + toast.createToast(qsTr("Setting locked due to access level."), 3000, "icon-lock-active"); + else + open() + } + + function defaultCenterAction() + { + if (userHasWriteAccess) + root.clicked() + if (!userHasWriteAccess && !hasSubpage && editable) { + toast.createToast(qsTr("Setting locked due to access level."), 3000, "icon-lock-active"); + } else { + if (pageStack.currentPage.active && hasSubpage) + open() + else + edit() + } + } + + function handleMouseClick(onItem) { + if (hasSubpage && !onItem && editable) { + // When clicking again an on item with a value and a submenu which is in edit mode, + // since the value was pressed, then leave edit mode first instead of opening the + // page while leaving the item in an edit state. + if (editMode) { + cancel() + } else { + select() + open() + } + } else { + if (!root.ListView.isCurrentItem) { + select() + } else { + root.clicked() + edit(true) + } + } + } + + // If a submenu is opened with a dynamic model, the items can be destructed + // while a subpage is in the pagestack. Since navigation will then get stuck, + // do navigate out of the submenu in such a case. + Component.onDestruction: { + if (pageStack && _subpageInstance) { + if (pageStack.find(function(page) { return page === _subpageInstance; } ) !== null) { + pageStack.pop(_subpageInstance) + } + } + } + + MouseArea { + id: mouseArea + anchors.fill: parent + onClicked: handleMouseClick() + } +} diff --git a/FileSets/v2.94/MbStyle.qml b/FileSets/v2.94/MbStyle.qml new file mode 100644 index 00000000..c4774232 --- /dev/null +++ b/FileSets/v2.94/MbStyle.qml @@ -0,0 +1,42 @@ +import QtQuick 1.1 + +/* + * common style properties + */ +QtObject { + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + + property bool isCurrentItem + + // Default MbItem size + property int itemHeight: 35 + + // Default font and size for e.g. the menus + property string fontFamily: "DejaVu Sans Condensed" + property int fontPixelSize: 16 + + property string borderColor: darkMode.value == 0 ? "#ddd" : "#4b4b4b" + property string backgroundColor: darkMode.value == 0 ? (isCurrentItem ? '#4790d0' : 'transparent') : (isCurrentItem ? '#234468' : '#202020') + property string backgroundColorService: darkMode.value == 0 ? (isCurrentItem ? "#2969a1" : '#ffe9b7') : (isCurrentItem ? "#234468" : '#7f745b') + property string backgroundColorComponent: borderColor + + // Text mainly used for description etc. + property string textColor: darkMode.value == 0 ? "#000000" : "#fdfdfd" + property string textColorSelected: darkMode.value == 0 ? "#FFFFFF" : "#fdfdfd" + + // Color typically used for values + property string valueColor: darkMode.value == 0 ? "#333333" : "#fdfdfd" + property int valueHorizontalAlignment: Text.AlignRight + property string color2: darkMode.value == 0 ? "#333333" : "#fdfdfd" + + property int marginDefault: 8 + // margin between MbItem border and components for bottom / top + property int marginItemVertical: 3 + // margin from the "sides", typically left / right + property int marginItemHorizontal: 8 + // prefered left / right text margin within text components + property int marginTextHorizontal: 5 + + property real opacityEnabled: 1.0 + property real opacityDisabled: 0.5 +} diff --git a/FileSets/v2.94/MbStyle.qml.orig b/FileSets/v2.94/MbStyle.qml.orig new file mode 100644 index 00000000..0f7fcc45 --- /dev/null +++ b/FileSets/v2.94/MbStyle.qml.orig @@ -0,0 +1,40 @@ +import QtQuick 1.1 + +/* + * common style properties + */ +QtObject { + property bool isCurrentItem + + // Default MbItem size + property int itemHeight: 35 + + // Default font and size for e.g. the menus + property string fontFamily: "DejaVu Sans Condensed" + property int fontPixelSize: 16 + + property string borderColor: "#ddd" + property string backgroundColor: isCurrentItem ? '#4790d0' : 'transparent' + property string backgroundColorService: isCurrentItem ? "#2969a1" : '#ffe9b7' + property string backgroundColorComponent: borderColor + + // Text mainly used for description etc. + property string textColor: "#000000" + property string textColorSelected: "#FFFFFF" + + // Color typically used for values + property string valueColor: "#333333" + property int valueHorizontalAlignment: Text.AlignRight + property string color2: "#333333" + + property int marginDefault: 8 + // margin between MbItem border and components for bottom / top + property int marginItemVertical: 3 + // margin from the "sides", typically left / right + property int marginItemHorizontal: 8 + // prefered left / right text margin within text components + property int marginTextHorizontal: 5 + + property real opacityEnabled: 1.0 + property real opacityDisabled: 0.5 +} diff --git a/FileSets/v2.94/OverviewSolarInverter.qml b/FileSets/v2.94/OverviewSolarInverter.qml new file mode 100644 index 00000000..1c1f95af --- /dev/null +++ b/FileSets/v2.94/OverviewSolarInverter.qml @@ -0,0 +1,63 @@ +import QtQuick 1.1 + +Rectangle { + id: root + + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + default property alias values: pvInverterBox.values + property alias title: pvInverterBox.title + property bool showInverterIcon: true + + width: 155 + height: 115 + color: "transparent" + clip: true + + MbIcon { + id: pvInverterIcon + source: getDeviceIcon() + visible: showInverterIcon && getDeviceIcon() !== "" + anchors.bottom: parent.bottom + } + + OverviewBox { + id: pvInverterBox + + height: root.height + title: qsTr("PV Power") + titleColor: darkMode.value == 0 ? "#F4B350" : "#7A5928" + color: darkMode.value == 0 ? "#F39C12" : "#794E09" + + anchors { + bottom: parent.bottom + left: pvInverterIcon.left; leftMargin: pvInverterIcon.visible ? 32 : 0 + right: parent.right + } + + MbIcon { + source: getDeviceLogo() + visible: !showInverterIcon + anchors { + bottom: parent.bottom + left: parent.left + margins: 2 + } + } + } + + function getDeviceIcon() + { + var ids = sys.pvInvertersProductIds.text + if (ids.indexOf(0xA142) > -1) + return "image://theme/overview-pvinverter-fronius" + return "" + } + + function getDeviceLogo() + { + var ids = sys.pvInvertersProductIds.text + if (ids.indexOf(0xA142) > -1) + return "image://theme/overview-fronius-logo" + return "" + } +} diff --git a/FileSets/v2.94/OverviewSolarInverter.qml.orig b/FileSets/v2.94/OverviewSolarInverter.qml.orig new file mode 100644 index 00000000..42bf88d1 --- /dev/null +++ b/FileSets/v2.94/OverviewSolarInverter.qml.orig @@ -0,0 +1,62 @@ +import QtQuick 1.1 + +Rectangle { + id: root + + default property alias values: pvInverterBox.values + property alias title: pvInverterBox.title + property bool showInverterIcon: true + + width: 155 + height: 115 + color: "transparent" + clip: true + + MbIcon { + id: pvInverterIcon + source: getDeviceIcon() + visible: showInverterIcon && getDeviceIcon() !== "" + anchors.bottom: parent.bottom + } + + OverviewBox { + id: pvInverterBox + + height: root.height + title: qsTr("PV Power") + titleColor: "#F4B350" + color: "#F39C12" + + anchors { + bottom: parent.bottom + left: pvInverterIcon.left; leftMargin: pvInverterIcon.visible ? 32 : 0 + right: parent.right + } + + MbIcon { + source: getDeviceLogo() + visible: !showInverterIcon + anchors { + bottom: parent.bottom + left: parent.left + margins: 2 + } + } + } + + function getDeviceIcon() + { + var ids = sys.pvInvertersProductIds.text + if (ids.indexOf(0xA142) > -1) + return "image://theme/overview-pvinverter-fronius" + return "" + } + + function getDeviceLogo() + { + var ids = sys.pvInvertersProductIds.text + if (ids.indexOf(0xA142) > -1) + return "image://theme/overview-fronius-logo" + return "" + } +} diff --git a/FileSets/v2.94/PageSettingsDisplay.qml b/FileSets/v2.94/PageSettingsDisplay.qml index 5bd870f3..57605a1f 100644 --- a/FileSets/v2.94/PageSettingsDisplay.qml +++ b/FileSets/v2.94/PageSettingsDisplay.qml @@ -54,6 +54,14 @@ MbPage { ] } + MbSwitch + { + id: enableDarkMode + bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" + name: qsTr ("Dark Mode") + writeAccessLevel: User.AccessUser + } + MbSwitch { bind: Utils.path(bindPrefix, "/MobileOverview") name: qsTr("Show boat & motorhome overview") diff --git a/FileSets/v2.94/Tile.qml b/FileSets/v2.94/Tile.qml new file mode 100644 index 00000000..c520bccd --- /dev/null +++ b/FileSets/v2.94/Tile.qml @@ -0,0 +1,60 @@ +import QtQuick 1.1 + +Rectangle { + id: root + + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + + color: "#009ec6" + border.width: 2 + border.color: darkMode.value == 0 ? "#fff" : "#202020" + clip: true + + property string title + property alias values: column.children + property bool readOnly: true + property bool editable: false + property bool editMode: false + property bool isCurrentItem: ListView.isCurrentItem + property int contentHeight: column.y + column.height + // property bool show // a non patched qt needs this, but cannot hide the Item + + Text { + id: titleField + font.pixelSize: 13 + text: title + color: darkMode.value == 0 ? "white" : "#ddd" + height: text === "" ? 0 : paintedHeight + anchors { + top: parent.top; topMargin: 5 + left: parent.left; leftMargin: 5 + } + } + + Rectangle { + id: titleLine + width: parent.width - 10 + height: 1 + visible: title !== "" + color: darkMode.value == 0 ? "white" : "#ddd" + anchors { + top: titleField.bottom + left: titleField.left + } + } + + Column { + id: column + anchors { + top: titleLine.bottom; topMargin: 3 + horizontalCenter: parent.horizontalCenter + } + } + + MbIcon { + id: editIcon + iconId: root.isCurrentItem ? "icon-tile-edit-active" : "icon-tile-edit" + visible: (root.isCurrentItem || root.focus) && root.editable && !editMode + anchors { right: parent.right; bottom: column.bottom; margins: 3} + } +} diff --git a/FileSets/v2.94/main.qml b/FileSets/v2.94/main.qml index a1cb19da..7ee38dd5 100644 --- a/FileSets/v2.94/main.qml +++ b/FileSets/v2.94/main.qml @@ -49,6 +49,23 @@ PageStackWindow { onValueChanged: selectHubOverview () } + VBusItem + { + id: darkMode + bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" + //onValueChanged: selectHubOverview () + } + + // set background for darkmode (by githubm.com/mr-manuel) + Rectangle { + anchors + { + fill: parent + } + color: darkMode.value == 0 ? "transparent" : "#202020" + z: -1 + } + // base a new hub selection on the hub type and the enhanced flow overview flag function selectHubOverview () { @@ -449,9 +466,9 @@ PageStackWindow { function replaceOverview(oldPage, newPage) { for (var i = 0; i < overviewModel.count; i++) - { + { if (overviewModel.get(i).pageSource === oldPage) - { + { overviewModel.get(i).pageSource = newPage return } diff --git a/FileSets/v3.00~42/Battery.qml b/FileSets/v3.00~42/Battery.qml new file mode 100644 index 00000000..6dd44360 --- /dev/null +++ b/FileSets/v3.00~42/Battery.qml @@ -0,0 +1,116 @@ +import QtQuick 1.1 + +Item { + id: root + + width: 145 + height: 101 + + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + property real soc: 80 + property string color: darkMode.value == 0 ? "#4789d0" : "#234468" + property string emptyColor: darkMode.value == 0 ? "#1abc9c" : "#0d5e4e" + property alias values: _values.children + + SvgRectangle { + id: leftTerminal + width: 12 + height: 8 + radius: 3 + color: soc < 100 ? emptyColor : root.color + anchors { + left: root.left; leftMargin: 12 + } + x: 12 + } + + SvgRectangle { + id: rightTerminal + width: 12 + height: 8 + radius: 3 + color: soc < 100 ? emptyColor : root.color + anchors { + right: root.right; rightMargin: 12 + } + } + + Rectangle { + id: background + + // NOTE: to remove the bottom of the terminals + border {width: 2; color: darkMode.value == 0 ? "white" : "#202020"} + height: root.height - leftTerminal.height + width: root.width + y: leftTerminal.height - 1 + + SvgRectangle { + height: parent.height + width: parent.width + color: root.emptyColor + radius: 3 + } + + SvgRectangle { + id: filledPart + width: root.width + height: soc * background.height / 100 + color: root.color + anchors.bottom: parent.bottom + radius: 3 + } + + SvgRectangle { + height: parent.height + width: parent.width * 0.7 + anchors.centerIn: parent + color: darkMode.value == 0 ? "#ffffff" : "#202020" + opacity: 0.06 + } + } + + MbIcon { + iconId: getBatteryLogo() + anchors { + right: parent.right; rightMargin: 4 + bottom: parent.bottom; bottomMargin: 4 + } + + function getBatteryLogo() + { + var pid = sys.batteryProductId.value + var logo = "" + + if (pid === 0xB014) + logo = "overview-battery-freedomwon" + + return logo + } + } + + Text { + text: "-" + font.pixelSize: 13; font.bold: true + anchors.centerIn: leftTerminal + anchors.verticalCenterOffset: 12 + color: darkMode.value == 0 ? "#fff" : "#e1e1e1" + } + + Text { + text: "+" + font.pixelSize: 13; font.bold: true + anchors.centerIn: rightTerminal + anchors.verticalCenterOffset: 12 + color: darkMode.value == 0 ? "#fff" : "#e1e1e1" + } + + Item { + id: _values + anchors { + top: background.top; + bottom: root.bottom + left: root.left + right: root.right + } + } +} diff --git a/FileSets/v3.00~42/Battery.qml.orig b/FileSets/v3.00~42/Battery.qml.orig new file mode 100644 index 00000000..64072372 --- /dev/null +++ b/FileSets/v3.00~42/Battery.qml.orig @@ -0,0 +1,115 @@ +import QtQuick 1.1 + +Item { + id: root + + width: 145 + height: 101 + + property real soc: 80 + property string color: "#4789d0" + property string emptyColor: "#1abc9c" + property alias values: _values.children + + SvgRectangle { + id: leftTerminal + width: 12 + height: 8 + radius: 3 + color: soc < 100 ? emptyColor : root.color + anchors { + left: root.left; leftMargin: 12 + } + x: 12 + } + + SvgRectangle { + id: rightTerminal + width: 12 + height: 8 + radius: 3 + color: soc < 100 ? emptyColor : root.color + anchors { + right: root.right; rightMargin: 12 + } + } + + Rectangle { + id: background + + // NOTE: to remove the bottom of the terminals + border {width: 2; color: "white"} + height: root.height - leftTerminal.height + width: root.width + y: leftTerminal.height - 1 + + SvgRectangle { + height: parent.height + width: parent.width + color: root.emptyColor + radius: 3 + } + + SvgRectangle { + id: filledPart + width: root.width + height: soc * background.height / 100 + color: root.color + anchors.bottom: parent.bottom + radius: 3 + } + + SvgRectangle { + height: parent.height + width: parent.width * 0.7 + anchors.centerIn: parent + color: "#ffffff" + opacity: 0.06 + } + } + + MbIcon { + iconId: getBatteryLogo() + anchors { + right: parent.right; rightMargin: 4 + bottom: parent.bottom; bottomMargin: 4 + } + + function getBatteryLogo() + { + var pid = sys.batteryProductId.value + var logo = "" + + if (pid === 0xB014) + logo = "overview-battery-freedomwon" + + return logo + } + } + + Text { + text: "-" + font.pixelSize: 13; font.bold: true + anchors.centerIn: leftTerminal + anchors.verticalCenterOffset: 12 + color: "#fff" + } + + Text { + text: "+" + font.pixelSize: 13; font.bold: true + anchors.centerIn: rightTerminal + anchors.verticalCenterOffset: 12 + color: "#fff" + } + + Item { + id: _values + anchors { + top: background.top; + bottom: root.bottom + left: root.left + right: root.right + } + } +} diff --git a/FileSets/v3.00~42/MbEditBox.qml b/FileSets/v3.00~42/MbEditBox.qml new file mode 100644 index 00000000..52214db6 --- /dev/null +++ b/FileSets/v3.00~42/MbEditBox.qml @@ -0,0 +1,408 @@ +import QtQuick 1.1 +import Qt.labs.components.native 1.0 +import com.victron.velib 1.0 + +MbItem { + id: root + cornerMark: !readonly && !editMode + height: expanded.y + expanded.height + 1 + + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + property alias maximumLength: ti.maximumLength + property variant tmpValue + property string matchString: "0123456789 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()-_=+[]{}\;:|/.,<>?" + property string ignoreChars + property bool readonly: !userHasWriteAccess + property bool overwriteMode: false + property VBusItem item: VBusItem { text: valueToText(value) } + property string invalidText: "" + property string description + property bool enableSpaceBar: false + property bool useVirtualKeyboard + property alias numericOnlyLayout: virtualKeyboard.numericOnlyLayout + property alias textInput: ti + property alias leftRightText: buttonExplanation.leftRightText + property alias upDownText: buttonExplanation.upDownText + property alias centerText: buttonExplanation.centerText + property alias unit: _unitText.text + + // internal + property string _editText + + signal editDone(string newValue) + + NumberAnimation { + id: blink + target: textInput + property: "opacity" + from: textInput.opacity + to: !textInput.opacity + loops: 5 + duration: 350 + onCompleted: textInput.opacity = 1 + } + + function restoreOriginalText() { + item.setValue(tmpValue) + } + + function valueToText(value) { + return (value === undefined ? invalidText : value) + } + + function editTextToValue() { + return _editText.trim() + } + + function getEditText(value) { + return item.text + } + + function validate(newText, pos) { + return newText + } + + function save() { + var newValue = editTextToValue() + if (newValue === null) { + blink.running = true + } else { + editMode = false + root.focus = true + item.setValue(newValue) + root.editDone(newValue) + } + } + + function cancel() { + if (editMode) { + editMode = false + root.focus = true + item.setValue(tmpValue) + } + } + + function edit(isMouse) { + if (!readonly && !editMode) { + useVirtualKeyboard = isMouse === true + ti.focus = true + _editText = getEditText() + tmpValue = item.value + editMode = true + ti.cursorPosition = 0; + } + } + + function isEditablePosition(pos) + { + if (pos === undefined) + pos = textInput.cursorPosition + + return pos >= 0 && pos < textInput.text.length && ignoreChars.indexOf(textInput.text[pos]) < 0 + } + + function setValueAtPosition(position, value, insert, moveCursor) { + if (insert) { + if (_editText.length >= maximumLength) + return + } else { + if (!isEditablePosition(position)) + return + } + + // check for supported characters + if (matchString.indexOf(value) < 0) + return + + var newText = setValueAt(_editText, position, value, insert); + newText = validate(newText, position) + if (newText === null) + return + + // assign new text, and place the cursor at the right position + _editText = newText; + setCursorPosition(position, moveCursor) + } + + function setCursorPosition(position, direction) { + if (direction) + position += direction + + while (position >= 0 && position < textInput.text.length) { + if (!direction || ignoreChars.indexOf(textInput.text[position]) < 0) { + textInput.cursorPosition = position + return + } + position += direction + } + if (!overwriteMode && position === textInput.text.length) + textInput.cursorPosition = position + } + + function wrapAround(pos) { + return matchString.length + } + + function cursorUpOrDown(direction) { + if (!overwriteMode && textInput.cursorPosition === _editText.length && _editText.length < maximumLength) + _editText += " " + + if (!isEditablePosition()) + return + + var chr = _editText.charAt(textInput.cursorPosition) + var wrap = wrapAround(textInput.cursorPosition) + var index = (matchString.indexOf(chr) + wrap + direction) % wrap; + setValueAtPosition(textInput.cursorPosition, matchString[index]) + } + + function cursorLeftOrRight(direction) { + // add and eat spaces at the beginning and end when not in overwriteMode + if (!overwriteMode) { + if (textInput.cursorPosition === 0) { + if (direction === -1 && _editText.length < maximumLength) { + setValueAtPosition(0, " ", true) + return + } + if (direction === 1 && _editText.charAt(0) === " ") { + setValueAtPosition(textInput.cursorPosition, "") + return + } + } + + if (textInput.cursorPosition === _editText.length) { + if (direction === -1 && _editText.charAt(textInput.cursorPosition - 1) === " ") { + setValueAtPosition(textInput.cursorPosition - 1, "") + return + } + if (direction === 1 && _editText.length < maximumLength) { + setValueAtPosition(textInput.cursorPosition, " ", true, 1) + return + } + } + } + + setCursorPosition(textInput.cursorPosition, direction) + } + + function keyPressed(event) { + event.accepted = true + + switch (event.key) { + case Qt.Key_Backspace: + if (overwriteMode || overwriteMode) + cursorLeftOrRight(-1) + else + setValueAtPosition(textInput.cursorPosition - 1, '') + return + + case Qt.Key_Delete: + if (overwriteMode || overwriteMode) + return + setValueAtPosition(textInput.cursorPosition, '') + return + + default: + if (event.text === "") + return + } + + setValueAtPosition(textInput.cursorPosition, event.text, !overwriteMode, 1) + } + + // javascript lacks a char replace for strings, spell it out + function setValueAt(str, index, character, insert) { + return str.substr(0, index) + character + str.substr(index + (insert === true ? 0 : 1)); + } + + MbTextDescription { + id: name + height: defaultHeight + + anchors { + left: parent.left; + leftMargin: style.marginDefault + top: parent.top + } + verticalAlignment: Text.AlignVCenter + text: root.description + isCurrentItem: root.ListView.isCurrentItem || editMode + } + + Item { + id: inputItem + + property real cursorWidth: 8.0 + height: defaultHeight + anchors { + right: parent.right + top: parent.top + } + + MbBackgroundRect { + id: greytag + color: darkMode.value == 0 ? (editMode ? "#fff": "#ddd") : (editMode ? "#747474": "#4b4b4b") + width: ti.width + 2 * style.marginDefault + height: ti.height + 6 + border.color: darkMode.value == 0 ? "#ddd" : "#4b4b4b" + border.width: editMode ? 1 : 0 + anchors.centerIn: ti + } + + // Optional unit at the right. It will remain gray, also in edit mode + MbBackgroundRect { + id: rightSide + anchors.right: parent.right; anchors.rightMargin: style.marginDefault + anchors.verticalCenter: ti.verticalCenter + width: (_unitText.width ? _unitText.width + style.marginDefault : 0) + height: greytag.height + + Text { + id: _unitText + font.pixelSize: root.style.fontPixelSize + anchors.verticalCenter: parent.verticalCenter + } + } + + Text { + id: ti + anchors{ + right: rightSide.left + // If there is a unit, make the two round boxes overlap.. + rightMargin: _unitText.width ? 0 : root.style.marginDefault + top: parent.top + topMargin: (defaultHeight - height) / 2 + } + + color: darkMode.value == 0 ? "#000000" : "#fdfdfd" + + text: editMode ? _editText : item.text + // When editing the it is nice to have a fix with font, so when changing + // digits the text does change in length all the time. However this fonts + // has an zero with a dot in it, with looks inconsitent with the regular + // font. So only use the fixed with font when editing. + font.family: editMode ? "DejaVu Sans Mono" : root.style.fontFamily + font.pixelSize: root.style.fontPixelSize + + property int maximumLength: 20 + property int cursorPosition + + Item { + id: cursorItem + + anchors { + left: ti.left + // The vePlatform.measureText can be off by one, which normally doesn't matter but causes + // a wobbling cursor when at the end. So ti.paintedWidth when at the end instead. + leftMargin: ( + ti.cursorPosition === _editText.length ? + ti.paintedWidth : + vePlatform.measureText(ti.font.family, ti.font.pixelSize, ti.text, 0, ti.cursorPosition) + ) + top: ti.top + bottom: ti.bottom + } + width: (ti.cursorPosition < ti.text.length ? + vePlatform.measureText(ti.font.family, ti.font.pixelSize, ti.text, ti.cursorPosition, 1) : + 6) + + Rectangle { + anchors.top: cursorItem.top + anchors.topMargin: -1 + width: cursorItem.width + height: parent.parent.focus ? 2 : 0 + border.color: "black" + border.width: 2 + } + + Rectangle { + anchors.bottom: cursorItem.bottom + anchors.bottomMargin: -2 + width: cursorItem.width + height: parent.parent.focus ? 2 : 0 + border.color: "black" + border.width: 2 + } + } + + Keys.onPressed: keyPressed(event) + + Keys.onSpacePressed: { + if (root.enableSpaceBar || root.useVirtualKeyboard) { + event.accepted = false; + return + } + + save() + } + + Keys.onReturnPressed: save() + Keys.onEscapePressed: cancel() + Keys.onUpPressed: cursorUpOrDown(1) + Keys.onDownPressed: cursorUpOrDown(-1) + Keys.onRightPressed: cursorLeftOrRight(1) + Keys.onLeftPressed: cursorLeftOrRight(-1) + } + + MouseArea { + anchors { + left: ti.left + right: inputItem.right + top: ti.top + bottom: ti.bottom + } + + onPressed: { + if (editMode) { + var n = vePlatform.hitTestText(ti.font.family, ti.font.pixelSize, ti.text, mouseX) + // The position after the last one can be selected so backspace works. + // Since it is not a editable position, check this first. + if (!overwriteMode && n === textInput.text.length) { + ti.cursorPosition = n + return + } + // Don't select the other uneditable positions + if (!isEditablePosition(n)) + return + ti.cursorPosition = n + } else { + handleMouseClick(); + } + } + } + } + + Item { + id: expanded + height: childrenRect.height + anchors.top: inputItem.bottom + anchors.topMargin: -1 + + Keyboard { + id: virtualKeyboard + + overwriteMode: root.overwriteMode + width: root.width + active: editMode && root.useVirtualKeyboard + onAnimatingChanged: { + if (!animating) + listview.positionViewAtIndex(currentIndex, ListView.Contain) + } + } + + MbButtonExplanation { + id: buttonExplanation + + width: root.width + shown: editMode && !root.useVirtualKeyboard + leftRightText: qsTr("Select position") + upDownText: qsTr("Select character") + centerText: enableSpaceBar ? qsTr("Add space") : qsTr("Apply changes") + + onAnimatingChanged: { + if (!animating) + listview.positionViewAtIndex(currentIndex, ListView.Contain) + } + } + } +} diff --git a/FileSets/v3.00~42/MbEditBox.qml.orig b/FileSets/v3.00~42/MbEditBox.qml.orig new file mode 100644 index 00000000..d2a61f4d --- /dev/null +++ b/FileSets/v3.00~42/MbEditBox.qml.orig @@ -0,0 +1,405 @@ +import QtQuick 1.1 +import Qt.labs.components.native 1.0 +import com.victron.velib 1.0 + +MbItem { + id: root + cornerMark: !readonly && !editMode + height: expanded.y + expanded.height + 1 + + property alias maximumLength: ti.maximumLength + property variant tmpValue + property string matchString: "0123456789 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()-_=+[]{}\;:|/.,<>?" + property string ignoreChars + property bool readonly: !userHasWriteAccess + property bool overwriteMode: false + property VBusItem item: VBusItem { text: valueToText(value) } + property string invalidText: "" + property string description + property bool enableSpaceBar: false + property bool useVirtualKeyboard + property alias numericOnlyLayout: virtualKeyboard.numericOnlyLayout + property alias textInput: ti + property alias leftRightText: buttonExplanation.leftRightText + property alias upDownText: buttonExplanation.upDownText + property alias centerText: buttonExplanation.centerText + property alias unit: _unitText.text + + // internal + property string _editText + + signal editDone(string newValue) + + NumberAnimation { + id: blink + target: textInput + property: "opacity" + from: textInput.opacity + to: !textInput.opacity + loops: 5 + duration: 350 + onCompleted: textInput.opacity = 1 + } + + function restoreOriginalText() { + item.setValue(tmpValue) + } + + function valueToText(value) { + return (value === undefined ? invalidText : value) + } + + function editTextToValue() { + return _editText.trim() + } + + function getEditText(value) { + return item.text + } + + function validate(newText, pos) { + return newText + } + + function save() { + var newValue = editTextToValue() + if (newValue === null) { + blink.running = true + } else { + editMode = false + root.focus = true + item.setValue(newValue) + root.editDone(newValue) + } + } + + function cancel() { + if (editMode) { + editMode = false + root.focus = true + item.setValue(tmpValue) + } + } + + function edit(isMouse) { + if (!readonly && !editMode) { + useVirtualKeyboard = isMouse === true + ti.focus = true + _editText = getEditText() + tmpValue = item.value + editMode = true + ti.cursorPosition = 0; + } + } + + function isEditablePosition(pos) + { + if (pos === undefined) + pos = textInput.cursorPosition + + return pos >= 0 && pos < textInput.text.length && ignoreChars.indexOf(textInput.text[pos]) < 0 + } + + function setValueAtPosition(position, value, insert, moveCursor) { + if (insert) { + if (_editText.length >= maximumLength) + return + } else { + if (!isEditablePosition(position)) + return + } + + // check for supported characters + if (matchString.indexOf(value) < 0) + return + + var newText = setValueAt(_editText, position, value, insert); + newText = validate(newText, position) + if (newText === null) + return + + // assign new text, and place the cursor at the right position + _editText = newText; + setCursorPosition(position, moveCursor) + } + + function setCursorPosition(position, direction) { + if (direction) + position += direction + + while (position >= 0 && position < textInput.text.length) { + if (!direction || ignoreChars.indexOf(textInput.text[position]) < 0) { + textInput.cursorPosition = position + return + } + position += direction + } + if (!overwriteMode && position === textInput.text.length) + textInput.cursorPosition = position + } + + function wrapAround(pos) { + return matchString.length + } + + function cursorUpOrDown(direction) { + if (!overwriteMode && textInput.cursorPosition === _editText.length && _editText.length < maximumLength) + _editText += " " + + if (!isEditablePosition()) + return + + var chr = _editText.charAt(textInput.cursorPosition) + var wrap = wrapAround(textInput.cursorPosition) + var index = (matchString.indexOf(chr) + wrap + direction) % wrap; + setValueAtPosition(textInput.cursorPosition, matchString[index]) + } + + function cursorLeftOrRight(direction) { + // add and eat spaces at the beginning and end when not in overwriteMode + if (!overwriteMode) { + if (textInput.cursorPosition === 0) { + if (direction === -1 && _editText.length < maximumLength) { + setValueAtPosition(0, " ", true) + return + } + if (direction === 1 && _editText.charAt(0) === " ") { + setValueAtPosition(textInput.cursorPosition, "") + return + } + } + + if (textInput.cursorPosition === _editText.length) { + if (direction === -1 && _editText.charAt(textInput.cursorPosition - 1) === " ") { + setValueAtPosition(textInput.cursorPosition - 1, "") + return + } + if (direction === 1 && _editText.length < maximumLength) { + setValueAtPosition(textInput.cursorPosition, " ", true, 1) + return + } + } + } + + setCursorPosition(textInput.cursorPosition, direction) + } + + function keyPressed(event) { + event.accepted = true + + switch (event.key) { + case Qt.Key_Backspace: + if (overwriteMode || overwriteMode) + cursorLeftOrRight(-1) + else + setValueAtPosition(textInput.cursorPosition - 1, '') + return + + case Qt.Key_Delete: + if (overwriteMode || overwriteMode) + return + setValueAtPosition(textInput.cursorPosition, '') + return + + default: + if (event.text === "") + return + } + + setValueAtPosition(textInput.cursorPosition, event.text, !overwriteMode, 1) + } + + // javascript lacks a char replace for strings, spell it out + function setValueAt(str, index, character, insert) { + return str.substr(0, index) + character + str.substr(index + (insert === true ? 0 : 1)); + } + + MbTextDescription { + id: name + height: defaultHeight + + anchors { + left: parent.left; + leftMargin: style.marginDefault + top: parent.top + } + verticalAlignment: Text.AlignVCenter + text: root.description + isCurrentItem: root.ListView.isCurrentItem || editMode + } + + Item { + id: inputItem + + property real cursorWidth: 8.0 + height: defaultHeight + anchors { + right: parent.right + top: parent.top + } + + MbBackgroundRect { + id: greytag + color: editMode ? "#fff": "#ddd" + width: ti.width + 2 * style.marginDefault + height: ti.height + 6 + border.color: "#ddd" + border.width: editMode ? 1 : 0 + anchors.centerIn: ti + } + + // Optional unit at the right. It will remain gray, also in edit mode + MbBackgroundRect { + id: rightSide + anchors.right: parent.right; anchors.rightMargin: style.marginDefault + anchors.verticalCenter: ti.verticalCenter + width: (_unitText.width ? _unitText.width + style.marginDefault : 0) + height: greytag.height + + Text { + id: _unitText + font.pixelSize: root.style.fontPixelSize + anchors.verticalCenter: parent.verticalCenter + } + } + + Text { + id: ti + anchors{ + right: rightSide.left + // If there is a unit, make the two round boxes overlap.. + rightMargin: _unitText.width ? 0 : root.style.marginDefault + top: parent.top + topMargin: (defaultHeight - height) / 2 + } + + text: editMode ? _editText : item.text + // When editing the it is nice to have a fix with font, so when changing + // digits the text does change in length all the time. However this fonts + // has an zero with a dot in it, with looks inconsitent with the regular + // font. So only use the fixed with font when editing. + font.family: editMode ? "DejaVu Sans Mono" : root.style.fontFamily + font.pixelSize: root.style.fontPixelSize + + property int maximumLength: 20 + property int cursorPosition + + Item { + id: cursorItem + + anchors { + left: ti.left + // The vePlatform.measureText can be off by one, which normally doesn't matter but causes + // a wobbling cursor when at the end. So ti.paintedWidth when at the end instead. + leftMargin: ( + ti.cursorPosition === _editText.length ? + ti.paintedWidth : + vePlatform.measureText(ti.font.family, ti.font.pixelSize, ti.text, 0, ti.cursorPosition) + ) + top: ti.top + bottom: ti.bottom + } + width: (ti.cursorPosition < ti.text.length ? + vePlatform.measureText(ti.font.family, ti.font.pixelSize, ti.text, ti.cursorPosition, 1) : + 6) + + Rectangle { + anchors.top: cursorItem.top + anchors.topMargin: -1 + width: cursorItem.width + height: parent.parent.focus ? 2 : 0 + border.color: "black" + border.width: 2 + } + + Rectangle { + anchors.bottom: cursorItem.bottom + anchors.bottomMargin: -2 + width: cursorItem.width + height: parent.parent.focus ? 2 : 0 + border.color: "black" + border.width: 2 + } + } + + Keys.onPressed: keyPressed(event) + + Keys.onSpacePressed: { + if (root.enableSpaceBar || root.useVirtualKeyboard) { + event.accepted = false; + return + } + + save() + } + + Keys.onReturnPressed: save() + Keys.onEscapePressed: cancel() + Keys.onUpPressed: cursorUpOrDown(1) + Keys.onDownPressed: cursorUpOrDown(-1) + Keys.onRightPressed: cursorLeftOrRight(1) + Keys.onLeftPressed: cursorLeftOrRight(-1) + } + + MouseArea { + anchors { + left: ti.left + right: inputItem.right + top: ti.top + bottom: ti.bottom + } + + onPressed: { + if (editMode) { + var n = vePlatform.hitTestText(ti.font.family, ti.font.pixelSize, ti.text, mouseX) + // The position after the last one can be selected so backspace works. + // Since it is not a editable position, check this first. + if (!overwriteMode && n === textInput.text.length) { + ti.cursorPosition = n + return + } + // Don't select the other uneditable positions + if (!isEditablePosition(n)) + return + ti.cursorPosition = n + } else { + handleMouseClick(); + } + } + } + } + + Item { + id: expanded + height: childrenRect.height + anchors.top: inputItem.bottom + anchors.topMargin: -1 + + Keyboard { + id: virtualKeyboard + + overwriteMode: root.overwriteMode + width: root.width + active: editMode && root.useVirtualKeyboard + onAnimatingChanged: { + if (!animating) + listview.positionViewAtIndex(currentIndex, ListView.Contain) + } + } + + MbButtonExplanation { + id: buttonExplanation + + width: root.width + shown: editMode && !root.useVirtualKeyboard + leftRightText: qsTr("Select position") + upDownText: qsTr("Select character") + centerText: enableSpaceBar ? qsTr("Add space") : qsTr("Apply changes") + + onAnimatingChanged: { + if (!animating) + listview.positionViewAtIndex(currentIndex, ListView.Contain) + } + } + } +} diff --git a/FileSets/v3.00~42/MbEditBoxDateTime.qml b/FileSets/v3.00~42/MbEditBoxDateTime.qml new file mode 100644 index 00000000..11a82740 --- /dev/null +++ b/FileSets/v3.00~42/MbEditBoxDateTime.qml @@ -0,0 +1,93 @@ +import QtQuick 1.1 + +MbEditBox { + id: root + + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + + property string format: "yyyy-MM-dd hh:mm" + property bool utc: false + + ignoreChars: "-: " + matchString: "0123456789" + maximumLength: format.length + overwriteMode: true + numericOnlyLayout: true + upDownText: qsTr("Select number") + textInput.color: editMode ? (vePlatform.secondsFromString(_editText, format) !== -1 ? (darkMode.value == 0 ? "#000000" : "#fdfdfd") : "red") : (darkMode.value == 0 ? "#000000" : "#fdfdfd") + + // note: overwritten by MbEditBoxTime! + function getTimeSeconds(str) { + return vePlatform.secondsFromString(str, format) + } + + function editTextToValue() { + var value = getTimeSeconds(_editText) + return (value === -1 ? null : value) + } + + function valueToText(value) { + if (utc) + return vePlatform.formatDateTimeUtc(value, format) + return Qt.formatDateTime(new Date(value * 1000), format) + } + + // make sure the time of days keeps below 24:00 + function validateHours(str, pos) { + if (format[pos] === 'h' && format[pos + 1] === 'h' && str[pos] === '2' && str[pos + 1] > 3) + str = setValueAt(str, pos + 1, '3', false); + return str; + } + + function validate(newText, pos) { + var wrap = wrapAround(pos) + + if ((newText[pos] - '0') >= wrap) { + var text = qsTr("Only numbers up to %1 are valid on this location").arg(wrap - 1) + toast.createToast(text, 3000) + return null + } + + // respect the minimum value. Note: instead of declining the change the minimum value + // is forced. The reason for that is that if e.g. 00:10 is decremented with a minimum + // of one minute it becomes 00:01 instead of silently refusing the change. + var ret = validateHours(newText, pos) + if (item.min && getTimeSeconds(ret) < item.min) + return valueToText(item.min) + + return ret + } + + // some digit in e.g. time/data loop earlier than 0..9 + function wrapAround(pos) { + switch (format[pos]) { + // mm goes till 59 + case 'm': + if (format[pos + 1] === 'm') + return 6; + break + // hours till 23 + case 'h': + if (format[pos + 1] === 'h') + return 3; + if (format[pos - 1] === 'h') + return _editText[pos - 1] === '2' ? 4 : matchString.length + break + // days up to 31 + case 'd': + if (format[pos + 1] === 'd') + return 4; + if (format[pos - 1] === 'd') + return _editText[pos - 1] === '3' ? 2 : matchString.length; + break; + // months till 12 + case 'M': + if (format[pos + 1] === 'M') + return 2; + if (format[pos - 1] === 'M') + return _editText[pos - 1] === '1' ? 3 : matchString.length + break + } + return matchString.length + } +} diff --git a/FileSets/v3.00~42/MbEditBoxDateTime.qml.orig b/FileSets/v3.00~42/MbEditBoxDateTime.qml.orig new file mode 100644 index 00000000..92943b1d --- /dev/null +++ b/FileSets/v3.00~42/MbEditBoxDateTime.qml.orig @@ -0,0 +1,91 @@ +import QtQuick 1.1 + +MbEditBox { + id: root + + property string format: "yyyy-MM-dd hh:mm" + property bool utc: false + + ignoreChars: "-: " + matchString: "0123456789" + maximumLength: format.length + overwriteMode: true + numericOnlyLayout: true + upDownText: qsTr("Select number") + textInput.color: editMode ? (vePlatform.secondsFromString(_editText, format) !== -1 ? "black" : "red") : "black" + + // note: overwritten by MbEditBoxTime! + function getTimeSeconds(str) { + return vePlatform.secondsFromString(str, format) + } + + function editTextToValue() { + var value = getTimeSeconds(_editText) + return (value === -1 ? null : value) + } + + function valueToText(value) { + if (utc) + return vePlatform.formatDateTimeUtc(value, format) + return Qt.formatDateTime(new Date(value * 1000), format) + } + + // make sure the time of days keeps below 24:00 + function validateHours(str, pos) { + if (format[pos] === 'h' && format[pos + 1] === 'h' && str[pos] === '2' && str[pos + 1] > 3) + str = setValueAt(str, pos + 1, '3', false); + return str; + } + + function validate(newText, pos) { + var wrap = wrapAround(pos) + + if ((newText[pos] - '0') >= wrap) { + var text = qsTr("Only numbers up to %1 are valid on this location").arg(wrap - 1) + toast.createToast(text, 3000) + return null + } + + // respect the minimum value. Note: instead of declining the change the minimum value + // is forced. The reason for that is that if e.g. 00:10 is decremented with a minimum + // of one minute it becomes 00:01 instead of silently refusing the change. + var ret = validateHours(newText, pos) + if (item.min && getTimeSeconds(ret) < item.min) + return valueToText(item.min) + + return ret + } + + // some digit in e.g. time/data loop earlier than 0..9 + function wrapAround(pos) { + switch (format[pos]) { + // mm goes till 59 + case 'm': + if (format[pos + 1] === 'm') + return 6; + break + // hours till 23 + case 'h': + if (format[pos + 1] === 'h') + return 3; + if (format[pos - 1] === 'h') + return _editText[pos - 1] === '2' ? 4 : matchString.length + break + // days up to 31 + case 'd': + if (format[pos + 1] === 'd') + return 4; + if (format[pos - 1] === 'd') + return _editText[pos - 1] === '3' ? 2 : matchString.length; + break; + // months till 12 + case 'M': + if (format[pos + 1] === 'M') + return 2; + if (format[pos - 1] === 'M') + return _editText[pos - 1] === '1' ? 3 : matchString.length + break + } + return matchString.length + } +} diff --git a/FileSets/v3.00~42/MbItem.qml b/FileSets/v3.00~42/MbItem.qml new file mode 100644 index 00000000..224b012f --- /dev/null +++ b/FileSets/v3.00~42/MbItem.qml @@ -0,0 +1,189 @@ +import QtQuick 1.1 +import com.victron.velib 1.0 +import "utils.js" as Utils + +/* + * The MbItem serves as a base object for Items which can be placed in + * the menubrowser (Mb), see MbPage. It adds default functions for key + * behavior, icons, subpage navigtation and only shows a default + * background. Any derived mb Item can fill it to its desire. + */ +Item { + id: root + width: (parent ? parent.width : 0) + height: defaultHeight + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + property bool show: user.accessLevel >= showAccessLevel + + property int defaultHeight: style.itemHeight + + property bool editMode + property variant toolbarHandler: editMode ? editToolbarHandler : navToolBar + property alias navigationHandler: navToolBar + + property bool isCurrentItem: root.ListView.isCurrentItem + property MbStyle style: MbStyle { isCurrentItem: root.ListView.isCurrentItem } + + // Navigation for subpages + property bool hasSubpage: subpage !== undefined + property variant subpage + property variant _subpageInstance + + property bool cornerMark: false + + property int showAccessLevel: User.AccessUser + property int writeAccessLevel: User.AccessInstaller + property bool userHasWriteAccess: user.accessLevel >= writeAccessLevel + property bool editable: true + property alias backgroundColor: background.color + + // NOTE: this is added to our 4.8 qt version. Uncomment this line to run on a + // vanilla QT. But optional rows are then always visible. + //property bool show + + signal selected + signal clicked + + ToolbarHandler { + id: editToolbarHandler + + leftIcon: "icon-toolbar-cancel" + rightIcon: "icon-toolbar-ok" + + function leftAction() + { + cancel() + } + + function rightAction() + { + save() + } + } + + ToolbarHandlerMbItems { + id: navToolBar + isDefault: true + } + + function open() { + if (pageStack.currentPage.active && hasSubpage) + _subpageInstance = pageStack.push(subpage); + } + + function edit(isMouse) { + } + + function cancel() { + } + + function save() { + } + + function select() { + if (!pageStack) + return + + // Note: Getting the index from the model depends on the model type. + // So lets asked the listview for our index instead. + var n = pageStack.currentPage.listview.indexAt(root.x, root.y) + if (n < 0) + return + pageStack.currentPage.currentIndex = n + + if (!userHasWriteAccess && !hasSubpage && editable) + toast.createToast(qsTr("Setting locked for \"user\" access level."), 3000, "icon-lock-active"); + root.selected() + } + + Rectangle { + id: background + anchors.fill: parent + color: showAccessLevel >= User.AccessSuperUser ? style.backgroundColorService : style.backgroundColor + } + + MbIcon { + id: cornerMarkIcon + + iconId: "icon-items-corner" + (root.ListView.isCurrentItem || darkMode.value ? "-active" : "") + visible: cornerMark + anchors { + right: parent.right; rightMargin: 1 + bottom: bottomBorder.top; bottomMargin: 1 + } + } + + Rectangle { + id: bottomBorder + width: root.width + height: 1 + color: style.borderColor + anchors.bottom: root.bottom + } + + onIsCurrentItemChanged: { + if (editMode) + cancel() + } + + Keys.onRightPressed: { + if (userHasWriteAccess) + root.clicked() + if (!userHasWriteAccess && !hasSubpage) + toast.createToast(qsTr("Setting locked due to access level."), 3000, "icon-lock-active"); + else + open() + } + + function defaultCenterAction() + { + if (userHasWriteAccess) + root.clicked() + if (!userHasWriteAccess && !hasSubpage && editable) { + toast.createToast(qsTr("Setting locked due to access level."), 3000, "icon-lock-active"); + } else { + if (pageStack.currentPage.active && hasSubpage) + open() + else + edit() + } + } + + function handleMouseClick(onItem) { + if (hasSubpage && !onItem && editable) { + // When clicking again an on item with a value and a submenu which is in edit mode, + // since the value was pressed, then leave edit mode first instead of opening the + // page while leaving the item in an edit state. + if (editMode) { + cancel() + } else { + select() + open() + } + } else { + if (!root.ListView.isCurrentItem) { + select() + } else { + root.clicked() + edit(true) + } + } + } + + // If a submenu is opened with a dynamic model, the items can be destructed + // while a subpage is in the pagestack. Since navigation will then get stuck, + // do navigate out of the submenu in such a case. + Component.onDestruction: { + if (pageStack && _subpageInstance) { + if (pageStack.find(function(page) { return page === _subpageInstance; } ) !== null) { + pageStack.pop(_subpageInstance) + } + } + } + + MouseArea { + id: mouseArea + anchors.fill: parent + onClicked: handleMouseClick() + } +} diff --git a/FileSets/v3.00~42/MbItem.qml.orig b/FileSets/v3.00~42/MbItem.qml.orig new file mode 100644 index 00000000..fdef4863 --- /dev/null +++ b/FileSets/v3.00~42/MbItem.qml.orig @@ -0,0 +1,188 @@ +import QtQuick 1.1 +import com.victron.velib 1.0 +import "utils.js" as Utils + +/* + * The MbItem serves as a base object for Items which can be placed in + * the menubrowser (Mb), see MbPage. It adds default functions for key + * behavior, icons, subpage navigtation and only shows a default + * background. Any derived mb Item can fill it to its desire. + */ +Item { + id: root + width: (parent ? parent.width : 0) + height: defaultHeight + property bool show: user.accessLevel >= showAccessLevel + + property int defaultHeight: style.itemHeight + + property bool editMode + property variant toolbarHandler: editMode ? editToolbarHandler : navToolBar + property alias navigationHandler: navToolBar + + property bool isCurrentItem: root.ListView.isCurrentItem + property MbStyle style: MbStyle { isCurrentItem: root.ListView.isCurrentItem } + + // Navigation for subpages + property bool hasSubpage: subpage !== undefined + property variant subpage + property variant _subpageInstance + + property bool cornerMark: false + + property int showAccessLevel: User.AccessUser + property int writeAccessLevel: User.AccessInstaller + property bool userHasWriteAccess: user.accessLevel >= writeAccessLevel + property bool editable: true + property alias backgroundColor: background.color + + // NOTE: this is added to our 4.8 qt version. Uncomment this line to run on a + // vanilla QT. But optional rows are then always visible. + //property bool show + + signal selected + signal clicked + + ToolbarHandler { + id: editToolbarHandler + + leftIcon: "icon-toolbar-cancel" + rightIcon: "icon-toolbar-ok" + + function leftAction() + { + cancel() + } + + function rightAction() + { + save() + } + } + + ToolbarHandlerMbItems { + id: navToolBar + isDefault: true + } + + function open() { + if (pageStack.currentPage.active && hasSubpage) + _subpageInstance = pageStack.push(subpage); + } + + function edit(isMouse) { + } + + function cancel() { + } + + function save() { + } + + function select() { + if (!pageStack) + return + + // Note: Getting the index from the model depends on the model type. + // So lets asked the listview for our index instead. + var n = pageStack.currentPage.listview.indexAt(root.x, root.y) + if (n < 0) + return + pageStack.currentPage.currentIndex = n + + if (!userHasWriteAccess && !hasSubpage && editable) + toast.createToast(qsTr("Setting locked for \"user\" access level."), 3000, "icon-lock-active"); + root.selected() + } + + Rectangle { + id: background + anchors.fill: parent + color: showAccessLevel >= User.AccessSuperUser ? style.backgroundColorService : style.backgroundColor + } + + MbIcon { + id: cornerMarkIcon + + iconId: "icon-items-corner" + (root.ListView.isCurrentItem ? "-active" : "") + visible: cornerMark + anchors { + right: parent.right; rightMargin: 1 + bottom: bottomBorder.top; bottomMargin: 1 + } + } + + Rectangle { + id: bottomBorder + width: root.width + height: 1 + color: style.borderColor + anchors.bottom: root.bottom + } + + onIsCurrentItemChanged: { + if (editMode) + cancel() + } + + Keys.onRightPressed: { + if (userHasWriteAccess) + root.clicked() + if (!userHasWriteAccess && !hasSubpage) + toast.createToast(qsTr("Setting locked due to access level."), 3000, "icon-lock-active"); + else + open() + } + + function defaultCenterAction() + { + if (userHasWriteAccess) + root.clicked() + if (!userHasWriteAccess && !hasSubpage && editable) { + toast.createToast(qsTr("Setting locked due to access level."), 3000, "icon-lock-active"); + } else { + if (pageStack.currentPage.active && hasSubpage) + open() + else + edit() + } + } + + function handleMouseClick(onItem) { + if (hasSubpage && !onItem && editable) { + // When clicking again an on item with a value and a submenu which is in edit mode, + // since the value was pressed, then leave edit mode first instead of opening the + // page while leaving the item in an edit state. + if (editMode) { + cancel() + } else { + select() + open() + } + } else { + if (!root.ListView.isCurrentItem) { + select() + } else { + root.clicked() + edit(true) + } + } + } + + // If a submenu is opened with a dynamic model, the items can be destructed + // while a subpage is in the pagestack. Since navigation will then get stuck, + // do navigate out of the submenu in such a case. + Component.onDestruction: { + if (pageStack && _subpageInstance) { + if (pageStack.find(function(page) { return page === _subpageInstance; } ) !== null) { + pageStack.pop(_subpageInstance) + } + } + } + + MouseArea { + id: mouseArea + anchors.fill: parent + onClicked: handleMouseClick() + } +} diff --git a/FileSets/v3.00~42/MbSpinBox.qml b/FileSets/v3.00~42/MbSpinBox.qml new file mode 100644 index 00000000..39b0b47b --- /dev/null +++ b/FileSets/v3.00~42/MbSpinBox.qml @@ -0,0 +1,179 @@ +import QtQuick 1.1 +import Qt.labs.components.native 1.0 +import com.victron.velib 1.0 + +MbItem { + id: root + cornerMark: !readOnly && !spinbox.enabled + + property VBusItem darkmode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + + property string description + property bool readOnly: !userHasWriteAccess + property VBusItem item: VBusItem { + isSetting: true + decimals: 1 + step: 0.5 + } + property bool useVirtualKeyboard + property variant spinboxToolbarHandler: editMode ? _spinboxToolbarHandler : navigationHandler + default property alias values: container.data + + editMode: spinbox.enabled + height: keyboard.y + keyboard.height + 1 + toolbarHandler: spinboxToolbarHandler + + ToolbarHandler { + id: _spinboxToolbarHandler + property string leftIcon: "icon-toolbar-cancel" + property string rightIcon: "icon-toolbar-ok" + property string rightText: "" + + function leftAction() + { + cancel() + } + + function rightAction() + { + save() + } + } + + signal exitEditMode(bool changed, variant newValue) + signal maxValueReached() + signal minValueReached() + + Item { + id: verticalCentered + height: root.defaultHeight + width: root.width + + MbTextDescription { + id: name + anchors { + left: parent.left; leftMargin: style.marginDefault + verticalCenter: parent.verticalCenter + } + + isCurrentItem: root.ListView.isCurrentItem + text: root.description + opacity: item.valid ? style.opacityEnabled : style.opacityDisabled + } + + Item { + id: container + width: childrenRect.width + height: childrenRect.height + anchors { + right: graytag.left; rightMargin: style.marginDefault + verticalCenter: parent.verticalCenter + } + } + + MbBackgroundRect { + id: graytag + color: darkMode.value == 0 ? (!spinbox.enabled ? "#ddd": "#fff") : (!spinbox.enabled ? "#4b4b4b": "#747474") + height: spinbox.height + 6 + width: spinbox.width + unit.width + 10 + border.color: darkMode.value == 0 ? "#ddd" : "#4b4b4b" + border.width: spinbox.enabled ? 1 : 0 + anchors { + right: parent.right; rightMargin: style.marginDefault + verticalCenter: parent.verticalCenter + } + } + + MbTextValue { + id: unit + + text: root.item.unit + anchors { + right: parent.right; rightMargin: style.marginDefault + 5 + verticalCenter: spinbox.verticalCenter + } + } + + SpinBox { + id: spinbox + + color: style.color2 + font.pixelSize: name.font.pixelSize + font.family: name.font.family + font.bold: false + minimumValue: item.min + maximumValue: item.max + stepSize: item.step + enabled: false + greyed: item.valid + numOfDecimals: item.decimals + anchors { + right: unit.left + verticalCenter: parent.verticalCenter + } + + /* note: these functions break binding hence the Binding item below */ + Keys.onRightPressed: { if (value === maximumValue) maxValueReached(); spinbox.up(event.isAutoRepeat); } + Keys.onLeftPressed: { if (value === minimumValue) minValueReached(); spinbox.down(event.isAutoRepeat); } + Keys.onUpPressed: { if (value === maximumValue) maxValueReached(); spinbox.up(event.isAutoRepeat); } + Keys.onDownPressed: { if (value === minimumValue) minValueReached(); spinbox.down(event.isAutoRepeat); } + + /* Focus is removed to ignore keypresses */ + Keys.onSpacePressed: save(false) + Keys.onReturnPressed: save(false) + Keys.onEscapePressed: cancel() + } + + MouseArea { + anchors { + fill: spinbox + leftMargin: -20 + rightMargin: -20 + } + + onPressed: handleMouseClick(true) + } + } + + Keyboard { + id: keyboard + anchors.top: verticalCentered.bottom + anchors.topMargin: -1 + width: root.width + active: spinbox.enabled && useVirtualKeyboard + layout: "KeyboardLoaderPlusMin.qml" + onAnimatingChanged: listview.positionViewAtIndex(currentIndex, ListView.Contain) + } + + /* binding is done explicitly to reenable binding after edit */ + Binding { + target: spinbox + property: "value" + value: item.value + when: item.valid && !spinbox.enabled + } + + function edit(isMouse) + { + if (item.valid && !readOnly) + { + useVirtualKeyboard = isMouse === true + spinbox.enabled = true + spinbox.focus = true + } + } + + function save() { + var newValue = spinbox.value + item.setValue(spinbox.value) + focus = true; + spinbox.enabled = false + exitEditMode(true, newValue) + } + + function cancel() { + focus = true + spinbox.enabled = false + exitEditMode(false, undefined) + } +} diff --git a/FileSets/v3.00~42/MbSpinBox.qml.orig b/FileSets/v3.00~42/MbSpinBox.qml.orig new file mode 100644 index 00000000..7ba7631c --- /dev/null +++ b/FileSets/v3.00~42/MbSpinBox.qml.orig @@ -0,0 +1,177 @@ +import QtQuick 1.1 +import Qt.labs.components.native 1.0 +import com.victron.velib 1.0 + +MbItem { + id: root + cornerMark: !readOnly && !spinbox.enabled + + property string description + property bool readOnly: !userHasWriteAccess + property VBusItem item: VBusItem { + isSetting: true + decimals: 1 + step: 0.5 + } + property bool useVirtualKeyboard + property variant spinboxToolbarHandler: editMode ? _spinboxToolbarHandler : navigationHandler + default property alias values: container.data + + editMode: spinbox.enabled + height: keyboard.y + keyboard.height + 1 + toolbarHandler: spinboxToolbarHandler + + ToolbarHandler { + id: _spinboxToolbarHandler + property string leftIcon: "icon-toolbar-cancel" + property string rightIcon: "icon-toolbar-ok" + property string rightText: "" + + function leftAction() + { + cancel() + } + + function rightAction() + { + save() + } + } + + signal exitEditMode(bool changed, variant newValue) + signal maxValueReached() + signal minValueReached() + + Item { + id: verticalCentered + height: root.defaultHeight + width: root.width + + MbTextDescription { + id: name + anchors { + left: parent.left; leftMargin: style.marginDefault + verticalCenter: parent.verticalCenter + } + + isCurrentItem: root.ListView.isCurrentItem + text: root.description + opacity: item.valid ? style.opacityEnabled : style.opacityDisabled + } + + Item { + id: container + width: childrenRect.width + height: childrenRect.height + anchors { + right: graytag.left; rightMargin: style.marginDefault + verticalCenter: parent.verticalCenter + } + } + + MbBackgroundRect { + id: graytag + color: !spinbox.enabled? "#ddd": "#fff" + height: spinbox.height + 6 + width: spinbox.width + unit.width + 10 + border.color: "#ddd" + border.width: spinbox.enabled ? 1 : 0 + anchors { + right: parent.right; rightMargin: style.marginDefault + verticalCenter: parent.verticalCenter + } + } + + MbTextValue { + id: unit + + text: root.item.unit + anchors { + right: parent.right; rightMargin: style.marginDefault + 5 + verticalCenter: spinbox.verticalCenter + } + } + + SpinBox { + id: spinbox + + color: style.color2 + font.pixelSize: name.font.pixelSize + font.family: name.font.family + font.bold: false + minimumValue: item.min + maximumValue: item.max + stepSize: item.step + enabled: false + greyed: item.valid + numOfDecimals: item.decimals + anchors { + right: unit.left + verticalCenter: parent.verticalCenter + } + + /* note: these functions break binding hence the Binding item below */ + Keys.onRightPressed: { if (value === maximumValue) maxValueReached(); spinbox.up(event.isAutoRepeat); } + Keys.onLeftPressed: { if (value === minimumValue) minValueReached(); spinbox.down(event.isAutoRepeat); } + Keys.onUpPressed: { if (value === maximumValue) maxValueReached(); spinbox.up(event.isAutoRepeat); } + Keys.onDownPressed: { if (value === minimumValue) minValueReached(); spinbox.down(event.isAutoRepeat); } + + /* Focus is removed to ignore keypresses */ + Keys.onSpacePressed: save(false) + Keys.onReturnPressed: save(false) + Keys.onEscapePressed: cancel() + } + + MouseArea { + anchors { + fill: spinbox + leftMargin: -20 + rightMargin: -20 + } + + onPressed: handleMouseClick(true) + } + } + + Keyboard { + id: keyboard + anchors.top: verticalCentered.bottom + anchors.topMargin: -1 + width: root.width + active: spinbox.enabled && useVirtualKeyboard + layout: "KeyboardLoaderPlusMin.qml" + onAnimatingChanged: listview.positionViewAtIndex(currentIndex, ListView.Contain) + } + + /* binding is done explicitly to reenable binding after edit */ + Binding { + target: spinbox + property: "value" + value: item.value + when: item.valid && !spinbox.enabled + } + + function edit(isMouse) + { + if (item.valid && !readOnly) + { + useVirtualKeyboard = isMouse === true + spinbox.enabled = true + spinbox.focus = true + } + } + + function save() { + var newValue = spinbox.value + item.setValue(spinbox.value) + focus = true; + spinbox.enabled = false + exitEditMode(true, newValue) + } + + function cancel() { + focus = true + spinbox.enabled = false + exitEditMode(false, undefined) + } +} diff --git a/FileSets/v3.00~42/MbStyle.qml b/FileSets/v3.00~42/MbStyle.qml new file mode 100644 index 00000000..0753f4b1 --- /dev/null +++ b/FileSets/v3.00~42/MbStyle.qml @@ -0,0 +1,42 @@ +import QtQuick 1.1 + +/* + * common style properties + */ +QtObject { + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + + property bool isCurrentItem + + // Default MbItem size + property int itemHeight: 35 + + // Default font and size for e.g. the menus + property string fontFamily: "default" + property int fontPixelSize: 16 + + property string borderColor: darkMode.value == 0 ? "#ddd" : "#4b4b4b" + property string backgroundColor: darkMode.value == 0 ? (isCurrentItem ? '#4790d0' : 'transparent') : (isCurrentItem ? '#234468' : '#303030') + property string backgroundColorService: darkMode.value == 0 ? (isCurrentItem ? "#2969a1" : '#ffe9b7') : (isCurrentItem ? "#234468" : '#7f745b') + property string backgroundColorComponent: borderColor + + // Text mainly used for description etc. + property string textColor: darkMode.value == 0 ? "#000000" : "#fdfdfd" + property string textColorSelected: darkMode.value == 0 ? "#FFFFFF" : "#fdfdfd" + + // Color typically used for values + property string valueColor: darkMode.value == 0 ? "#333333" : "#fdfdfd" + property int valueHorizontalAlignment: Text.AlignRight + property string color2: darkMode.value == 0 ? "#333333" : "#fdfdfd" + + property int marginDefault: 8 + // margin between MbItem border and components for bottom / top + property int marginItemVertical: 3 + // margin from the "sides", typically left / right + property int marginItemHorizontal: 8 + // prefered left / right text margin within text components + property int marginTextHorizontal: 5 + + property real opacityEnabled: 1.0 + property real opacityDisabled: 0.5 +} diff --git a/FileSets/v3.00~42/MbStyle.qml.orig b/FileSets/v3.00~42/MbStyle.qml.orig new file mode 100644 index 00000000..3288e6cd --- /dev/null +++ b/FileSets/v3.00~42/MbStyle.qml.orig @@ -0,0 +1,40 @@ +import QtQuick 1.1 + +/* + * common style properties + */ +QtObject { + property bool isCurrentItem + + // Default MbItem size + property int itemHeight: 35 + + // Default font and size for e.g. the menus + property string fontFamily: "default" + property int fontPixelSize: 16 + + property string borderColor: "#ddd" + property string backgroundColor: isCurrentItem ? '#4790d0' : 'transparent' + property string backgroundColorService: isCurrentItem ? "#2969a1" : '#ffe9b7' + property string backgroundColorComponent: borderColor + + // Text mainly used for description etc. + property string textColor: "#000000" + property string textColorSelected: "#FFFFFF" + + // Color typically used for values + property string valueColor: "#333333" + property int valueHorizontalAlignment: Text.AlignRight + property string color2: "#333333" + + property int marginDefault: 8 + // margin between MbItem border and components for bottom / top + property int marginItemVertical: 3 + // margin from the "sides", typically left / right + property int marginItemHorizontal: 8 + // prefered left / right text margin within text components + property int marginTextHorizontal: 5 + + property real opacityEnabled: 1.0 + property real opacityDisabled: 0.5 +} diff --git a/FileSets/v3.00~42/MbSubMenu.qml b/FileSets/v3.00~42/MbSubMenu.qml new file mode 100644 index 00000000..590fa2ac --- /dev/null +++ b/FileSets/v3.00~42/MbSubMenu.qml @@ -0,0 +1,66 @@ +import QtQuick 1.1 +import Qt.labs.components.native 1.0 +import com.victron.velib 1.0 + +MbItem { + id: root + width: pageStack ? pageStack.currentPage.width : 0 + + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + + property string description + property VBusItem item: VBusItem {} + property string iconId: "icon-toolbar-enter" + property bool check: false + property bool indent: false + default property alias values: _values.data + + MbTextDescription { + id: checkText + anchors { + left: parent.left; leftMargin: style.marginDefault + verticalCenter: parent.verticalCenter + } + width: root.indent ? 9 : 0 + text: root.check ? "√" : " " + } + + MbTextDescription { + id: name + anchors { + left: checkText.right; leftMargin: root.indent ? checkText.width : 0 + verticalCenter: parent.verticalCenter + } + text: root.description + } + + MbRow { + id: _values + + anchors { + right: icon.left; rightMargin: style.marginDefault / 2 + verticalCenter: parent.verticalCenter + } + + Repeater { + id: repeater + model: root.item.value && root.item.value.constructor === Array ? root.item.value.length : 1 + + MbTextBlock { + item.text: repeater.model === 1 ? root.item.text : root.item.value[index] + opacity: item.text !== item.invalidText + } + } + } + + MbIcon { + id: icon + + display: hasSubpage + anchors { + right: root.right; rightMargin: style.marginDefault + verticalCenter: parent.verticalCenter + } + iconId: root.iconId ? root.iconId + (root.ListView.isCurrentItem || darkMode.value ? "-active" : "") : "" + } +} diff --git a/FileSets/v3.00~42/MbSubMenu.qml.orig b/FileSets/v3.00~42/MbSubMenu.qml.orig new file mode 100644 index 00000000..d82375d8 --- /dev/null +++ b/FileSets/v3.00~42/MbSubMenu.qml.orig @@ -0,0 +1,64 @@ +import QtQuick 1.1 +import Qt.labs.components.native 1.0 +import com.victron.velib 1.0 + +MbItem { + id: root + width: pageStack ? pageStack.currentPage.width : 0 + + property string description + property VBusItem item: VBusItem {} + property string iconId: "icon-toolbar-enter" + property bool check: false + property bool indent: false + default property alias values: _values.data + + MbTextDescription { + id: checkText + anchors { + left: parent.left; leftMargin: style.marginDefault + verticalCenter: parent.verticalCenter + } + width: root.indent ? 9 : 0 + text: root.check ? "√" : " " + } + + MbTextDescription { + id: name + anchors { + left: checkText.right; leftMargin: root.indent ? checkText.width : 0 + verticalCenter: parent.verticalCenter + } + text: root.description + } + + MbRow { + id: _values + + anchors { + right: icon.left; rightMargin: style.marginDefault / 2 + verticalCenter: parent.verticalCenter + } + + Repeater { + id: repeater + model: root.item.value && root.item.value.constructor === Array ? root.item.value.length : 1 + + MbTextBlock { + item.text: repeater.model === 1 ? root.item.text : root.item.value[index] + opacity: item.text !== item.invalidText + } + } + } + + MbIcon { + id: icon + + display: hasSubpage + anchors { + right: root.right; rightMargin: style.marginDefault + verticalCenter: parent.verticalCenter + } + iconId: root.iconId ? root.iconId + (root.ListView.isCurrentItem ? "-active" : "") : "" + } +} diff --git a/FileSets/v3.00~42/OverviewBox.qml b/FileSets/v3.00~42/OverviewBox.qml new file mode 100644 index 00000000..cbd2d5a6 --- /dev/null +++ b/FileSets/v3.00~42/OverviewBox.qml @@ -0,0 +1,50 @@ +import QtQuick 1.1 + +SvgRectangle { + id: root + + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + + radius: 6 + width: 110 + height: 110 + color: darkMode.value == 0 ? "#16a185" : "#0B5042" + clip: true // hides an off by one pixel offset + + property string title + property string titleColor: darkMode.value == 0 ? "#1abc9c" : "#136050" + property alias values: _values.children + + SvgRectangle { + id: header + width: parent.width + height: 20 + radius: root.radius + color: titleColor + + // prevent rounded corners at the bottom + SvgRectangle { + height: parent.height / 2 + width: parent.width + color: parent.color + anchors.top: parent.verticalCenter + } + + Text { + text: title + font {pixelSize: 14; bold: true} + color: darkMode.value == 0 ? "white" : "#e1e1e1" + anchors.centerIn: parent + } + } + + Item { + id: _values + anchors { + top: header.bottom; + bottom: root.bottom + left: root.left + right: root.right + } + } +} diff --git a/FileSets/v3.00~42/OverviewBox.qml.orig b/FileSets/v3.00~42/OverviewBox.qml.orig new file mode 100644 index 00000000..3c4efb65 --- /dev/null +++ b/FileSets/v3.00~42/OverviewBox.qml.orig @@ -0,0 +1,48 @@ +import QtQuick 1.1 + +SvgRectangle { + id: root + + radius: 6 + width: 110 + height: 110 + color: "#16a185" + clip: true // hides an off by one pixel offset + + property string title + property string titleColor :"#1abc9c" + property alias values: _values.children + + SvgRectangle { + id: header + width: parent.width + height: 20 + radius: root.radius + color: titleColor + + // prevent rounded corners at the bottom + SvgRectangle { + height: parent.height / 2 + width: parent.width + color: parent.color + anchors.top: parent.verticalCenter + } + + Text { + text: title + font {pixelSize: 14; bold: true} + color: "white" + anchors.centerIn: parent + } + } + + Item { + id: _values + anchors { + top: header.bottom; + bottom: root.bottom + left: root.left + right: root.right + } + } +} diff --git a/FileSets/v3.00~42/OverviewConnection.qml b/FileSets/v3.00~42/OverviewConnection.qml new file mode 100644 index 00000000..984d7415 --- /dev/null +++ b/FileSets/v3.00~42/OverviewConnection.qml @@ -0,0 +1,133 @@ +import QtQuick 1.1 + +/* + * This qml Item creates a line with moving balls on it representing a + * power flow in the overview. The line can be made up of an arbitary + * amount of straight line segments. The paths is drawn from (0,0) to + * (width, height) so it can simply be anchored to the points you want + * to connect. Since this item can have negative height and width the + * wording (top, left) and (right, bottom) is a bit weird, since they + * can be two arbitrary points, but so be it. + * + * This item is a bit weird anyway, first of all, since Path is an array, + * and qml arrays are weird in qt quick 1.1, it is not possible to bind + * to its contents. Hence the onCompleted events are used to assign them + * by value. + * + * Secondly, this item is slow! To deal with that a bit, the contents is + * only drawn when active is true. So the item can first be layout and + * its contents only layouted once. + */ + +Item { + id: root + + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + + property Path path: emptyPath + + property Path straight: Path { + PathLine {x: 0; y: 0} + PathLine {x: width; y: height} + } + property Path corner: Path { + PathLine {x: 0; y: 0} + PathLine {x: width; y: 0} + PathLine {x: width; y: height} + } + property Path emptyPath: Path {} + + property bool active + property int ballCount: 4 + property color ballColor: darkMode.value == 0 ? "#4789d0" : "#386ca5" + property real ballDiameter: lineWidth * 2 + 1 + property color lineColor: darkMode.value == 0 ? "#4789d0" : "#386ca5" + property int lineWidth: 3 + property int value + property bool startPointVisible: true + property bool endPointVisible: true + + // internal + property int lineSegments + property Path activePath: active ? path : emptyPath + + visible: active + + function update() { + if (activePath === emptyPath) { + lineSegments = 0 + return + } + + var newValue = activePath.pathElements.length - 1 + + if (lineSegments == newValue) + lineSegments = newValue - 1; + lineSegments = newValue + + startPoint.update() + endPoint.update() + } + + onActivePathChanged: update() + onHeightChanged: update() + onWidthChanged: update() + + // end points of the path + OverviewConnectionEnd { + id: startPoint + visible: active && startPointVisible + connectionSize: ballDiameter + + // assign this otherwise qml will warn it is unbindable + function update() { + rotation = Math.atan2(activePath.pathElements[1].y, activePath.pathElements[1].x) * (180 / Math.PI) + } + } + + OverviewConnectionEnd { + id: endPoint + visible: active && endPointVisible + x: root.width + y: root.height + connectionSize: ballDiameter + + function update() { + var dx = activePath.pathElements[lineSegments].x - activePath.pathElements[lineSegments - 1].x + var dy = activePath.pathElements[lineSegments].y - activePath.pathElements[lineSegments - 1].y + rotation = 180 + Math.atan2(dy, dx) * (180 / Math.PI) + } + } + + // Draw foreground lines on top of that + Repeater { + id: lines + model: lineSegments + + Line { + lineWidth: root.lineWidth + color: lineColor + + // assign this otherwise qml will warn it is unbindable + Component.onCompleted: { + from = activePath.pathElements[index] + to = activePath.pathElements[index + 1] + } + } + } + + // moving balls over the lines + PathView { + id: ballsPath + model: active ? ballCount : 0 + interactive: false + path: activePath + visible: value != 0 + offset: active && value < 0 ? 1 - mover.pos : mover.pos + + delegate: Circle { + color: ballColor + radius: root.ballDiameter / 2 + } + } +} diff --git a/FileSets/v3.00~42/OverviewConnection.qml.orig b/FileSets/v3.00~42/OverviewConnection.qml.orig new file mode 100644 index 00000000..06c0a9ec --- /dev/null +++ b/FileSets/v3.00~42/OverviewConnection.qml.orig @@ -0,0 +1,131 @@ +import QtQuick 1.1 + +/* + * This qml Item creates a line with moving balls on it representing a + * power flow in the overview. The line can be made up of an arbitary + * amount of straight line segments. The paths is drawn from (0,0) to + * (width, height) so it can simply be anchored to the points you want + * to connect. Since this item can have negative height and width the + * wording (top, left) and (right, bottom) is a bit weird, since they + * can be two arbitrary points, but so be it. + * + * This item is a bit weird anyway, first of all, since Path is an array, + * and qml arrays are weird in qt quick 1.1, it is not possible to bind + * to its contents. Hence the onCompleted events are used to assign them + * by value. + * + * Secondly, this item is slow! To deal with that a bit, the contents is + * only drawn when active is true. So the item can first be layout and + * its contents only layouted once. + */ + +Item { + id: root + + property Path path: emptyPath + + property Path straight: Path { + PathLine {x: 0; y: 0} + PathLine {x: width; y: height} + } + property Path corner: Path { + PathLine {x: 0; y: 0} + PathLine {x: width; y: 0} + PathLine {x: width; y: height} + } + property Path emptyPath: Path {} + + property bool active + property int ballCount: 4 + property color ballColor: "#4789d0" + property real ballDiameter: lineWidth * 2 + 1 + property color lineColor: "#4789d0" + property int lineWidth: 3 + property int value + property bool startPointVisible: true + property bool endPointVisible: true + + // internal + property int lineSegments + property Path activePath: active ? path : emptyPath + + visible: active + + function update() { + if (activePath === emptyPath) { + lineSegments = 0 + return + } + + var newValue = activePath.pathElements.length - 1 + + if (lineSegments == newValue) + lineSegments = newValue - 1; + lineSegments = newValue + + startPoint.update() + endPoint.update() + } + + onActivePathChanged: update() + onHeightChanged: update() + onWidthChanged: update() + + // end points of the path + OverviewConnectionEnd { + id: startPoint + visible: active && startPointVisible + connectionSize: ballDiameter + + // assign this otherwise qml will warn it is unbindable + function update() { + rotation = Math.atan2(activePath.pathElements[1].y, activePath.pathElements[1].x) * (180 / Math.PI) + } + } + + OverviewConnectionEnd { + id: endPoint + visible: active && endPointVisible + x: root.width + y: root.height + connectionSize: ballDiameter + + function update() { + var dx = activePath.pathElements[lineSegments].x - activePath.pathElements[lineSegments - 1].x + var dy = activePath.pathElements[lineSegments].y - activePath.pathElements[lineSegments - 1].y + rotation = 180 + Math.atan2(dy, dx) * (180 / Math.PI) + } + } + + // Draw foreground lines on top of that + Repeater { + id: lines + model: lineSegments + + Line { + lineWidth: root.lineWidth + color: lineColor + + // assign this otherwise qml will warn it is unbindable + Component.onCompleted: { + from = activePath.pathElements[index] + to = activePath.pathElements[index + 1] + } + } + } + + // moving balls over the lines + PathView { + id: ballsPath + model: active ? ballCount : 0 + interactive: false + path: activePath + visible: value != 0 + offset: active && value < 0 ? 1 - mover.pos : mover.pos + + delegate: Circle { + color: ballColor + radius: root.ballDiameter / 2 + } + } +} diff --git a/FileSets/v3.00~42/OverviewConnectionEnd.qml b/FileSets/v3.00~42/OverviewConnectionEnd.qml new file mode 100644 index 00000000..04955757 --- /dev/null +++ b/FileSets/v3.00~42/OverviewConnectionEnd.qml @@ -0,0 +1,40 @@ +import QtQuick 1.1 + +// NOTE: centers around the circle it midpoint +// width and height are bogus! +Item { + id: root + + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + property real radius: 5.5 + property alias color: ball.color + property int connectionSize: 7 + property int connectionLength: 9 + property alias rotation: connection.rotation + + Rectangle { + id: connection + + transformOrigin: Item.Left + color: darkMode.value == 0 ? "white" : "#202020" + width: root.radius + connectionLength + height: connectionSize + anchors { + verticalCenter: ball.verticalCenter + left: ball.horizontalCenter + } + } + + Circle { + id: ball + radius: root.radius + color: darkMode.value == 0 ? "#4789d0" : "#386ca5" + x: -radius + y: -radius + + border { + width: 2 + color: darkMode.value == 0 ? "white" : "#202020" + } + } +} diff --git a/FileSets/v3.00~42/OverviewConnectionEnd.qml.orig b/FileSets/v3.00~42/OverviewConnectionEnd.qml.orig new file mode 100644 index 00000000..1a5dbc19 --- /dev/null +++ b/FileSets/v3.00~42/OverviewConnectionEnd.qml.orig @@ -0,0 +1,39 @@ +import QtQuick 1.1 + +// NOTE: centers around the circle it midpoint +// width and height are bogus! +Item { + id: root + + property real radius: 5.5 + property alias color: ball.color + property int connectionSize: 7 + property int connectionLength: 9 + property alias rotation: connection.rotation + + Rectangle { + id: connection + + transformOrigin: Item.Left + color: "white" + width: root.radius + connectionLength + height: connectionSize + anchors { + verticalCenter: ball.verticalCenter + left: ball.horizontalCenter + } + } + + Circle { + id: ball + radius: root.radius + color: "#4789d0" + x: -radius + y: -radius + + border { + width: 2 + color: "white" + } + } +} diff --git a/FileSets/v3.00~42/OverviewFlowComplex.qml b/FileSets/v3.00~42/OverviewFlowComplex.qml index af13afe5..26d01074 100644 --- a/FileSets/v3.00~42/OverviewFlowComplex.qml +++ b/FileSets/v3.00~42/OverviewFlowComplex.qml @@ -8,10 +8,11 @@ import "enhancedFormat.js" as EnhFmt OverviewPage { id: root - - VBusItem { id: flowOverviewItem; bind: Utils.path(settingsPrefix, "/Settings/GuiMods/FlowOverview") } + + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + VBusItem { id: flowOverviewItem; bind: Utils.path(settingsPrefix, "/Settings/GuiMods/FlowOverview") } property bool dcCoupled: flowOverviewItem.valid && flowOverviewItem.value == 2 - + VBusItem { id: showInactiveTilesItem; bind: Utils.path(guiModsPrefix, "/ShowInactiveFlowTiles") } property real disabledTileOpacity: (showInactiveTiles && showInactiveTilesItem.value === 1) ? 0.3 : 1 property bool showInactiveTiles: showInactiveTilesItem.valid && showInactiveTilesItem.value >= 1 @@ -22,7 +23,7 @@ OverviewPage { property string settingsPrefix: "com.victronenergy.settings" property color detailColor: "#b3b3b3" property real laneWidth: (root.width - inOutTileWidth * 2 - battery.width) / 3 - + property int inOutTileHeight: (root.height - topOffset - bottomOffset - 3 * 5) / 4 property int inOutTileWidth: 145 VBusItem { id: timeToGo; bind: Utils.path(systemPrefix, "/Dc/Battery/TimeToGo") } @@ -31,7 +32,7 @@ OverviewPage { property bool isMulti: vebusService.valid property string veDirectInverterService: "" property string inverterService: vebusService.valid ? vebusService.value : veDirectInverterService - + property bool combineAcLoads: dcCoupled || _combineAcLoads.valid && _combineAcLoads.value === 1 property variant outputLoad: combineAcLoads ? sys.acLoad : sys.acOutLoad @@ -113,7 +114,7 @@ OverviewPage { VBusItem { id: showBatteryTempItem; bind: Utils.path(guiModsPrefix, "/ShowBatteryTempOnFlows") } property bool showBatteryTemp: showBatteryTempItem.valid && showBatteryTempItem.value == 1 - + function getTimeFormat () { @@ -126,7 +127,7 @@ OverviewPage { } Component.onCompleted: - { + { discoverServices () showHelp () } @@ -135,7 +136,7 @@ OverviewPage { VBusItem { id: loadsOnInputItem; bind: "com.victronenergy.settings/Settings/GuiMods/ShowEnhancedFlowLoadsOnInput" } VBusItem { id: _combineAcLoads; bind: "com.victronenergy.settings/Settings/GuiMods/EnhancedFlowCombineLoads" } - + OverviewBox { id: acInBox opacity: showAcInput ? 1 : disabledTileOpacity @@ -161,8 +162,8 @@ OverviewPage { return getAcSourceName(sys.acSource) } } - titleColor: "#E74c3c" - color: "#C0392B" + titleColor: darkMode.value == 0 ? "#E74c3c" : "#73261E" + color: darkMode.value == 0 ? "#C0392B" : "#601C15" anchors { top: root.top; topMargin: topOffset left: parent.left; leftMargin: 5 @@ -204,8 +205,8 @@ OverviewPage { OverviewBox { id: pvInverterOnInput - titleColor: "#F4B350" - color: "#F39C12" + titleColor: darkMode.value == 0 ? "#F4B350" : "#7A5928" + color: darkMode.value == 0 ? "#F39C12" : "#794E09" title: qsTr("PV on Input") width: inOutTileWidth height: inOutTileHeight @@ -235,7 +236,7 @@ OverviewPage { visible: showPvOnInput } anchors { - top: acInBox.bottom + top: acInBox.bottom topMargin: 5 left: acInBox.left } @@ -259,8 +260,8 @@ OverviewPage { OverviewBox { id: acLoadOnInputBox title: qsTr("AC In Loads") - color: "#27AE60" - titleColor: "#2ECC71" + color: darkMode.value == 0 ? "#27AE60" : "#135730" + titleColor: darkMode.value == 0 ? "#2ECC71" : "#176638" width: inOutTileWidth height: inOutTileHeight opacity: showLoadsOnInput ? 1 : disabledTileOpacity @@ -298,9 +299,9 @@ OverviewPage { OverviewBox { id: acOutputBox - title: combineAcLoads ? qsTr ("AC Loads") : qsTr ("AC Out Loads") - color: "#27AE60" - titleColor: "#2ECC71" + title: combineAcLoads ? qsTr ("AC Loads") : qsTr ("AC Out Loads") + color: darkMode.value == 0 ? "#27AE60" : "#135730" + titleColor: darkMode.value == 0 ? "#2ECC71" : "#176638" height: inOutTileHeight width: inOutTileWidth opacity: showLoadsOnOutput ? 1 : disabledTileOpacity @@ -310,13 +311,13 @@ OverviewPage { top: root.top; topMargin: topOffset } - values: TileText { + values: TileText { y: 13 text: EnhFmt.formatVBusItem (outputLoad.power) font.pixelSize: 17 visible: showLoadsOnOutput } - PowerGauge + PowerGauge { id: acOutLoadGauge width: parent.width @@ -472,8 +473,8 @@ OverviewPage { OverviewBox { id: pvInverterOnAcOut - titleColor: "#F4B350" - color: "#F39C12" + titleColor: darkMode.value == 0 ? "#F4B350" : "#7A5928" + color: darkMode.value == 0 ? "#F39C12" : "#794E09" title: qsTr("PV on Output") width: inOutTileWidth height: inOutTileHeight @@ -528,9 +529,9 @@ OverviewPage { OverviewBox { id: acChargerBox - title: qsTr ("AC Charger") - color: "#157894" - titleColor: "#419FB9" + title: qsTr ("AC Charger") + color: darkMode.value == 0 ? "#157894" : "#0a3c4a" + titleColor: darkMode.value == 0 ? "#419FB9" : "#204f5c" height: inOutTileHeight width: inOutTileWidth opacity: showAcCharger ? 1 : disabledTileOpacity @@ -571,9 +572,9 @@ OverviewPage { OverviewBox { id: alternatorBox - title: qsTr ("Alternator") - color: "#157894" - titleColor: "#419FB9" + title: qsTr ("Alternator") + color: darkMode.value == 0 ? "#157894" : "#0a3c4a" + titleColor: darkMode.value == 0 ? "#419FB9" : "#204f5c" height: inOutTileHeight width: inOutTileWidth opacity: showAlternator ? 1 : disabledTileOpacity @@ -613,9 +614,9 @@ OverviewPage { OverviewBox { id: motorDriveBox - title: qsTr ("Motor Drive") - color: "#157894" - titleColor: "#419FB9" + title: qsTr ("Motor Drive") + color: darkMode.value == 0 ? "#157894" : "#0a3c4a" + titleColor: darkMode.value == 0 ? "#419FB9" : "#204f5c" height: inOutTileHeight width: inOutTileWidth opacity: showMotorDrive ? 1 : disabledTileOpacity @@ -700,14 +701,14 @@ OverviewPage { OverviewBox { id: fuelCellBox - color: "#157894" - titleColor: "#419FB9" + color: darkMode.value == 0 ? "#157894" : "#0a3c4a" + titleColor: darkMode.value == 0 ? "#419FB9" : "#204f5c" width: inOutTileWidth height: inOutTileHeight opacity: showFuelCell ? 1 : disabledTileOpacity visible: showFuelCell || (showInactiveTiles && dcCoupled) title: qsTr ("Fuel Cell") - anchors { + anchors { left: windGenBox.left bottom: windGenBox.top; bottomMargin: 5 } @@ -740,8 +741,8 @@ OverviewPage { OverviewBox { id: windGenBox - color: "#157894" - titleColor: "#419FB9" + color: darkMode.value == 0 ? "#157894" : "#0a3c4a" + titleColor: darkMode.value == 0 ? "#419FB9" : "#204f5c" width: inOutTileWidth height: inOutTileHeight opacity: showWindGen ? 1 : disabledTileOpacity @@ -782,8 +783,8 @@ OverviewPage { OverviewBox { id: pvChargerBox title: qsTr("PV Charger") - titleColor: "#F4B350" - color: "#F39C12" + titleColor: darkMode.value == 0 ? "#F4B350" : "#7A5928" + color: darkMode.value == 0 ? "#F39C12" : "#794E09" width: inOutTileWidth height: inOutTileHeight opacity: showPvCharger ? 1 : disabledTileOpacity @@ -972,7 +973,7 @@ OverviewPage { id: multiAcOutConnection ballCount: 1 - path: straight + path: straight active: root.active && ((showLoadsOnOutput || showPvOnOutput) || (!dcCoupled && showInactiveFlow)) value: -Utils.sign (acOutLoadFlow + pvInverterOnAcOutFlow) endPointVisible: false @@ -1372,7 +1373,7 @@ OverviewPage { function addService(service) { - switch (service.type) + switch (service.type) { case DBusService.DBUS_SERVICE_TEMPERATURE_SENSOR: numberOfTemps++ @@ -1399,7 +1400,7 @@ OverviewPage { tempsModel.append({serviceName: service.name}) } break;; - } + } } // Detect available services of interest diff --git a/FileSets/v3.00~42/OverviewGridParallel.qml b/FileSets/v3.00~42/OverviewGridParallel.qml new file mode 100644 index 00000000..1bc3c2e8 --- /dev/null +++ b/FileSets/v3.00~42/OverviewGridParallel.qml @@ -0,0 +1,482 @@ +import QtQuick 1.1 +import "utils.js" as Utils + +OverviewPage { + id: root + + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + property variant sys: theSystem + property bool hasAcOutSystem: _hasAcOutSystem.value === 1 + + title: qsTr("Overview") + + VBusItem { + id: _hasAcOutSystem + bind: "com.victronenergy.settings/Settings/SystemSetup/HasAcOutSystem" + } + + OverviewBox { + id: acInBox + + width: 148 + height: 100 + title: getAcSourceName(sys.acSource) + titleColor: darkMode.value == 0 ? "#E74c3c" : "#73261E" + color: darkMode.value == 0 ? "#C0392B" : "#601C15" + anchors { + top: root.top; topMargin: 1 + left: parent.left; leftMargin: 5 + } + + values: OverviewAcValues { + connection: sys.acInput + } + + MbIcon { + iconId: getAcSourceIcon(sys.acSource) + anchors { + bottom: parent.bottom + left: parent.left; leftMargin: 2 + } + opacity: 0.5 + } + } + + OverviewBox { + id: acLoadBox + title: qsTr("AC Loads") + color: darkMode.value == 0 ? "#27AE60" : "#135730" + titleColor: darkMode.value == 0 ? "#2ECC71" : "#176638" + width: 148 + height: 100 + + anchors { + left: acInBox.right + leftMargin: hasAcOutSystem ? 10 : 174 + top: root.top; topMargin: 1 + } + + values: OverviewAcValues { + connection: sys.acInLoad + } + } + + OverviewBox { + id: acOutputBox + title: qsTr("Critical Loads") + color: darkMode.value == 0 ? "#157894" : "#0a3c4a" + titleColor: darkMode.value == 0 ? "#419FB9" : "#204f5c" + height: 100 + width: 148 + visible: hasAcOutSystem + anchors { + right: root.right; rightMargin: 5 + top: root.top; topMargin: 17 + } + + values: OverviewAcValues { + connection: sys.acOutLoad + } + } + + Multi { + id: multi + iconId: "overview-inverter-short" + anchors { + horizontalCenter: parent.horizontalCenter + bottom: root.bottom; bottomMargin: 39 + } + } + + // invisible item to connection all AC connections to.. + Item { + id: acBus + height: 10 + anchors { + left: acInBox.left; leftMargin: hasAcOutSystem ? 5 : acInBox.width - 5 + right: acLoadBox.right; rightMargin: 2 + bottom: acInBox.bottom; bottomMargin: -15 + } + } + + Battery { + id: battery + + soc: sys.battery.soc.valid ? sys.battery.soc.value : 0 + height: pvInverterOnGrid.visible ? 81 : 101 + width: 145 + + anchors { + bottom: parent.bottom; bottomMargin: 5; + left:parent.left; leftMargin: 5 + } + values: Column { + y: pvInverterOnGrid.visible ? 0 : 8 + width: parent.width + + TileText { + text: sys.battery.soc.valid ? sys.battery.soc.value.toFixed(0) : "--" + font.pixelSize: 30 + + Text { + anchors { + bottom: parent.bottom; bottomMargin: 4 + horizontalCenter: parent.horizontalCenter; horizontalCenterOffset: parent.paintedWidth / 2 + 5 + } + visible: sys.battery.soc.valid + text: "%" + color: "white" + font.bold: true + font.pixelSize: 12 + } + } + TileText { + text: sys.battery.power.format(0) + } + TileText { + text: sys.battery.voltage.format(1) + " " + sys.battery.current.format(1) + } + } + } + + // PV inverter on AC in, AC Output ignored + OverviewSolarInverter { + id: pvInverterOnGridNoAcOut + title: qsTr("PV Inverter") + width: 154 + height: 100 + visible: sys.pvOnGrid.power.valid && !hasAcOutSystem + showInverterIcon: false + values: TileText { + y: 2 + text: sys.pvOnGrid.power.format(0) + font.pixelSize: 25 + } + anchors { + top: root.top; topMargin: 1 + horizontalCenter: root.horizontalCenter + } + } + + OverviewSolarInverter { + id: pvInverterOnGrid + title: qsTr("PV Inverter") + width: 148 + height: 60 + visible: sys.pvOnGrid.power.valid && hasAcOutSystem + showInverterIcon: false + values: TileText { + y: 2 + text: sys.pvOnGrid.power.format(0) + font.pixelSize: 20 + } + anchors { + bottom: battery.top; bottomMargin: 5 + left: root.left; leftMargin: 5 + } + } + + OverviewSolarInverter { + id: pvInverterOnAcOut + title: qsTr("PV Inverter") + width: 148 + height: 60 + visible: sys.pvOnAcOut.power.valid + showInverterIcon: false + + values: TileText { + y: 2 + text: sys.pvOnAcOut.power.format(0) + font.pixelSize: 20 + } + anchors { + bottom: blueSolarCharger.top; bottomMargin: 5 + right: parent.right; rightMargin: 5 + } + } + + OverviewSolarCharger { + id: blueSolarCharger + title: qsTr("PV Charger") + width: 148 + height: 60 + visible: sys.pvCharger.power.valid + showChargerIcon: false + + anchors { + right: root.right; rightMargin: 5 + bottom: root.bottom; bottomMargin: 5; + } + + values: TileText { + y: 2 + text: sys.pvCharger.power.format(0) + font.pixelSize: 20 + } + } + + OverviewEssReason { + anchors { + bottom: parent.bottom; bottomMargin: 5 + horizontalCenter: parent.horizontalCenter + } + } + + // AC source power flow + OverviewConnection { + id: acSource + ballCount: 4 + path: corner + active: root.active && hasAcOutSystem + value: flow(sys.acInput ? sys.acInput.power : undefined) * -1 + startPointVisible: false + + anchors { + right: acInBox.left; rightMargin: -9 + left: pvInverterOnGridConnection.horizontalCenter + bottom: acInBox.bottom; bottomMargin: 8 + top: acBus.verticalCenter + } + } + + // Coupled AC sources + OverviewConnection { + id: coupledAcConnection + + property VBusItem coupled: VBusItem { + property double gridPower: sys.acInput.power.valid ? sys.acInput.power.value : 0 + property double pvPower: sys.pvOnGrid.power.valid ? sys.pvOnGrid.power.value : 0 + value: gridPower + pvPower + } + + ballCount: 1 + path: straight + active: root.active && hasAcOutSystem + value: flow(coupled) + startPointVisible: false + endPointVisible: false + + anchors { + left: pvInverterOnGridConnection.right + right: vebusConnection.left + top: acBus.verticalCenter + bottom: acBus.verticalCenter + } + } + + // AC source power flow, ignored AC output + OverviewConnection { + id: acSourceNoAcOut + ballCount: 5 + path: corner + active: root.active && !hasAcOutSystem + value: acSource.value + startPointVisible: false + + anchors { + right: acInBox.left; rightMargin: -9 + left: pvInverterOnGridConnectionNoAcOut.horizontalCenter + bottom: acInBox.bottom; bottomMargin: 8 + top: acBus.verticalCenter + } + } + + // Coupled AC sources, ignored AC output + OverviewConnection { + id: coupledAcConnectionNoAcOut + + ballCount: 1 + path: straight + active: root.active && !hasAcOutSystem + value: coupledAcConnection.value + startPointVisible: false + endPointVisible: false + + anchors { + left: pvInverterOnGridConnectionNoAcOut.right + right: vebusConnection.left + top: acBus.verticalCenter + bottom: acBus.verticalCenter + } + } + + // Grid inverter power flow, ignored AC output + OverviewConnection { + id: pvInverterOnGridConnectionNoAcOut + ballCount: 1 + path: straight + active: root.active && pvInverterOnGridNoAcOut.visible + value: flow(sys.pvOnGrid ? sys.pvOnGrid.power : undefined) + startPointVisible: true + endPointVisible: false + + anchors { + top: pvInverterOnGridNoAcOut.bottom; topMargin: -8 + bottom: acBus.verticalCenter + left: pvInverterOnGridNoAcOut.left; leftMargin: 8 + right: pvInverterOnGridNoAcOut.left; rightMargin: -8 + } + } + + // Grid inverter power flow + OverviewConnection { + id: pvInverterOnGridConnection + ballCount: 1 + path: straight + active: root.active && pvInverterOnGrid.visible + value: flow(sys.pvOnGrid ? sys.pvOnGrid.power : undefined) * -1 + startPointVisible: false + + anchors { + top: acBus.verticalCenter + bottom: pvInverterOnGrid.top; bottomMargin: -8 + left: pvInverterOnGrid.right; leftMargin: -8 + } + } + + // power to loads + OverviewConnection { + id: loadConnection + ballCount: hasAcOutSystem ? 3 : 5 + path: corner + active: root.active + value: flow(sys.acInLoad.power) + startPointVisible: false + endPointVisible: true + + anchors { + right: acLoadBox.right; rightMargin: hasAcOutSystem ? 10 : acLoadBox.width - 10 + left: vebusConnection.horizontalCenter + top: acBus.verticalCenter + bottom: acLoadBox.bottom; bottomMargin: 8 + } + } + + // Towards vebus system + OverviewConnection { + id: vebusConnection + + property VBusItem vebusAcPower: VBusItem { bind: [sys.vebusPrefix, "/Ac/ActiveIn/P"] } + + ballCount: 1 + path: straight + active: root.active + value: flow(vebusAcPower) + startPointVisible: false + endPointVisible: true + + anchors { + left: multi.left; leftMargin: 8 + top: acBus.verticalCenter + bottom: multi.top; bottomMargin: -7 + } + } + + // AC out connection + OverviewConnection { + id: acOutConnection + + property double pvInverterOnAcOutPower: sys.pvOnAcOut.power.valid ? sys.pvOnAcOut.power.value : 0 + property double acOutLoad: sys.acOutLoad.power.valid ? sys.acOutLoad.power.value : 0 + property VBusItem vebusAcOutPower: VBusItem { value: acOutConnection.acOutLoad - acOutConnection.pvInverterOnAcOutPower } + + ballCount: 1 + path: straight + active: root.active && (hasAcOutSystem || pvInverterOnAcOut.visible) + value: flow(vebusAcOutPower) + endPointVisible: false + + anchors { + left: multi.right; leftMargin: -8 + right: acOutBoxConnection.left + top: multi.top; topMargin: 8 + } + } + + // UPS conenction + OverviewConnection { + id: acOutBoxConnection + + ballCount: 1 + path: straight + active: root.active && hasAcOutSystem + value: flow(sys.acOutLoad.power) + startPointVisible: false + + anchors { + left: acOutputBox.left; leftMargin: 10 + top: acOutConnection.verticalCenter + bottom: acOutputBox.bottom; bottomMargin: 9 + } + } + + // PV Inverter on AC out connection + OverviewConnection { + id: pvOnAcOutConnection + + ballCount: 1 + path: straight + active: root.active && pvInverterOnAcOut.visible + value: flow(sys.pvOnAcOut.power) + endPointVisible: false + + anchors { + left: acOutBoxConnection.left + bottom: acOutConnection.verticalCenter + top: pvInverterOnAcOut.top; topMargin: 8 + } + } + + // DC connection from multi + OverviewConnection { + ballCount: 1 + path: straight + active: root.active + value: flow(sys.vebusDc.power) + endPointVisible: false + + anchors { + right: dcConnection.right; + top: multi.bottom; topMargin: -10 + bottom: dcConnection.top; + } + } + + // Battery to DC connection + OverviewConnection { + ballCount: 3 + path: straight + active: root.active + value: Utils.sign(noNoise(sys.pvCharger.power) + noNoise(sys.vebusDc.power)) + startPointVisible: false + + anchors { + left: dcConnection.left; + top: dcConnection.verticalCenter + right: battery.right; rightMargin: 10 + } + } + + // Solar charger to DC connection + OverviewConnection { + ballCount: 3 + path: straight + active: root.active && blueSolarCharger.visible + value: flow(sys.pvCharger.power) + endPointVisible: false + + anchors { + right: dcConnection.right; + top: dcConnection.top + left: blueSolarCharger.left; leftMargin: 10 + } + } + + Item { + id: dcConnection + anchors { + horizontalCenter: multi.horizontalCenter + top: multi.bottom; topMargin: 10 + } + } +} diff --git a/FileSets/v3.00~42/OverviewGridParallel.qml.orig b/FileSets/v3.00~42/OverviewGridParallel.qml.orig new file mode 100644 index 00000000..44688485 --- /dev/null +++ b/FileSets/v3.00~42/OverviewGridParallel.qml.orig @@ -0,0 +1,481 @@ +import QtQuick 1.1 +import "utils.js" as Utils + +OverviewPage { + id: root + + property variant sys: theSystem + property bool hasAcOutSystem: _hasAcOutSystem.value === 1 + + title: qsTr("Overview") + + VBusItem { + id: _hasAcOutSystem + bind: "com.victronenergy.settings/Settings/SystemSetup/HasAcOutSystem" + } + + OverviewBox { + id: acInBox + + width: 148 + height: 100 + title: getAcSourceName(sys.acSource) + titleColor: "#E74c3c" + color: "#C0392B" + anchors { + top: root.top; topMargin: 1 + left: parent.left; leftMargin: 5 + } + + values: OverviewAcValues { + connection: sys.acInput + } + + MbIcon { + iconId: getAcSourceIcon(sys.acSource) + anchors { + bottom: parent.bottom + left: parent.left; leftMargin: 2 + } + opacity: 0.5 + } + } + + OverviewBox { + id: acLoadBox + title: qsTr("AC Loads") + color: "#27AE60" + titleColor: "#2ECC71" + width: 148 + height: 100 + + anchors { + left: acInBox.right + leftMargin: hasAcOutSystem ? 10 : 174 + top: root.top; topMargin: 1 + } + + values: OverviewAcValues { + connection: sys.acInLoad + } + } + + OverviewBox { + id: acOutputBox + title: qsTr("Critical Loads") + color: "#157894" + titleColor: "#419FB9" + height: 100 + width: 148 + visible: hasAcOutSystem + anchors { + right: root.right; rightMargin: 5 + top: root.top; topMargin: 17 + } + + values: OverviewAcValues { + connection: sys.acOutLoad + } + } + + Multi { + id: multi + iconId: "overview-inverter-short" + anchors { + horizontalCenter: parent.horizontalCenter + bottom: root.bottom; bottomMargin: 39 + } + } + + // invisible item to connection all AC connections to.. + Item { + id: acBus + height: 10 + anchors { + left: acInBox.left; leftMargin: hasAcOutSystem ? 5 : acInBox.width - 5 + right: acLoadBox.right; rightMargin: 2 + bottom: acInBox.bottom; bottomMargin: -15 + } + } + + Battery { + id: battery + + soc: sys.battery.soc.valid ? sys.battery.soc.value : 0 + height: pvInverterOnGrid.visible ? 81 : 101 + width: 145 + + anchors { + bottom: parent.bottom; bottomMargin: 5; + left:parent.left; leftMargin: 5 + } + values: Column { + y: pvInverterOnGrid.visible ? 0 : 8 + width: parent.width + + TileText { + text: sys.battery.soc.valid ? sys.battery.soc.value.toFixed(0) : "--" + font.pixelSize: 30 + + Text { + anchors { + bottom: parent.bottom; bottomMargin: 4 + horizontalCenter: parent.horizontalCenter; horizontalCenterOffset: parent.paintedWidth / 2 + 5 + } + visible: sys.battery.soc.valid + text: "%" + color: "white" + font.bold: true + font.pixelSize: 12 + } + } + TileText { + text: sys.battery.power.format(0) + } + TileText { + text: sys.battery.voltage.format(1) + " " + sys.battery.current.format(1) + } + } + } + + // PV inverter on AC in, AC Output ignored + OverviewSolarInverter { + id: pvInverterOnGridNoAcOut + title: qsTr("PV Inverter") + width: 154 + height: 100 + visible: sys.pvOnGrid.power.valid && !hasAcOutSystem + showInverterIcon: false + values: TileText { + y: 2 + text: sys.pvOnGrid.power.format(0) + font.pixelSize: 25 + } + anchors { + top: root.top; topMargin: 1 + horizontalCenter: root.horizontalCenter + } + } + + OverviewSolarInverter { + id: pvInverterOnGrid + title: qsTr("PV Inverter") + width: 148 + height: 60 + visible: sys.pvOnGrid.power.valid && hasAcOutSystem + showInverterIcon: false + values: TileText { + y: 2 + text: sys.pvOnGrid.power.format(0) + font.pixelSize: 20 + } + anchors { + bottom: battery.top; bottomMargin: 5 + left: root.left; leftMargin: 5 + } + } + + OverviewSolarInverter { + id: pvInverterOnAcOut + title: qsTr("PV Inverter") + width: 148 + height: 60 + visible: sys.pvOnAcOut.power.valid + showInverterIcon: false + + values: TileText { + y: 2 + text: sys.pvOnAcOut.power.format(0) + font.pixelSize: 20 + } + anchors { + bottom: blueSolarCharger.top; bottomMargin: 5 + right: parent.right; rightMargin: 5 + } + } + + OverviewSolarCharger { + id: blueSolarCharger + title: qsTr("PV Charger") + width: 148 + height: 60 + visible: sys.pvCharger.power.valid + showChargerIcon: false + + anchors { + right: root.right; rightMargin: 5 + bottom: root.bottom; bottomMargin: 5; + } + + values: TileText { + y: 2 + text: sys.pvCharger.power.format(0) + font.pixelSize: 20 + } + } + + OverviewEssReason { + anchors { + bottom: parent.bottom; bottomMargin: 5 + horizontalCenter: parent.horizontalCenter + } + } + + // AC source power flow + OverviewConnection { + id: acSource + ballCount: 4 + path: corner + active: root.active && hasAcOutSystem + value: flow(sys.acInput ? sys.acInput.power : undefined) * -1 + startPointVisible: false + + anchors { + right: acInBox.left; rightMargin: -9 + left: pvInverterOnGridConnection.horizontalCenter + bottom: acInBox.bottom; bottomMargin: 8 + top: acBus.verticalCenter + } + } + + // Coupled AC sources + OverviewConnection { + id: coupledAcConnection + + property VBusItem coupled: VBusItem { + property double gridPower: sys.acInput.power.valid ? sys.acInput.power.value : 0 + property double pvPower: sys.pvOnGrid.power.valid ? sys.pvOnGrid.power.value : 0 + value: gridPower + pvPower + } + + ballCount: 1 + path: straight + active: root.active && hasAcOutSystem + value: flow(coupled) + startPointVisible: false + endPointVisible: false + + anchors { + left: pvInverterOnGridConnection.right + right: vebusConnection.left + top: acBus.verticalCenter + bottom: acBus.verticalCenter + } + } + + // AC source power flow, ignored AC output + OverviewConnection { + id: acSourceNoAcOut + ballCount: 5 + path: corner + active: root.active && !hasAcOutSystem + value: acSource.value + startPointVisible: false + + anchors { + right: acInBox.left; rightMargin: -9 + left: pvInverterOnGridConnectionNoAcOut.horizontalCenter + bottom: acInBox.bottom; bottomMargin: 8 + top: acBus.verticalCenter + } + } + + // Coupled AC sources, ignored AC output + OverviewConnection { + id: coupledAcConnectionNoAcOut + + ballCount: 1 + path: straight + active: root.active && !hasAcOutSystem + value: coupledAcConnection.value + startPointVisible: false + endPointVisible: false + + anchors { + left: pvInverterOnGridConnectionNoAcOut.right + right: vebusConnection.left + top: acBus.verticalCenter + bottom: acBus.verticalCenter + } + } + + // Grid inverter power flow, ignored AC output + OverviewConnection { + id: pvInverterOnGridConnectionNoAcOut + ballCount: 1 + path: straight + active: root.active && pvInverterOnGridNoAcOut.visible + value: flow(sys.pvOnGrid ? sys.pvOnGrid.power : undefined) + startPointVisible: true + endPointVisible: false + + anchors { + top: pvInverterOnGridNoAcOut.bottom; topMargin: -8 + bottom: acBus.verticalCenter + left: pvInverterOnGridNoAcOut.left; leftMargin: 8 + right: pvInverterOnGridNoAcOut.left; rightMargin: -8 + } + } + + // Grid inverter power flow + OverviewConnection { + id: pvInverterOnGridConnection + ballCount: 1 + path: straight + active: root.active && pvInverterOnGrid.visible + value: flow(sys.pvOnGrid ? sys.pvOnGrid.power : undefined) * -1 + startPointVisible: false + + anchors { + top: acBus.verticalCenter + bottom: pvInverterOnGrid.top; bottomMargin: -8 + left: pvInverterOnGrid.right; leftMargin: -8 + } + } + + // power to loads + OverviewConnection { + id: loadConnection + ballCount: hasAcOutSystem ? 3 : 5 + path: corner + active: root.active + value: flow(sys.acInLoad.power) + startPointVisible: false + endPointVisible: true + + anchors { + right: acLoadBox.right; rightMargin: hasAcOutSystem ? 10 : acLoadBox.width - 10 + left: vebusConnection.horizontalCenter + top: acBus.verticalCenter + bottom: acLoadBox.bottom; bottomMargin: 8 + } + } + + // Towards vebus system + OverviewConnection { + id: vebusConnection + + property VBusItem vebusAcPower: VBusItem { bind: [sys.vebusPrefix, "/Ac/ActiveIn/P"] } + + ballCount: 1 + path: straight + active: root.active + value: flow(vebusAcPower) + startPointVisible: false + endPointVisible: true + + anchors { + left: multi.left; leftMargin: 8 + top: acBus.verticalCenter + bottom: multi.top; bottomMargin: -7 + } + } + + // AC out connection + OverviewConnection { + id: acOutConnection + + property double pvInverterOnAcOutPower: sys.pvOnAcOut.power.valid ? sys.pvOnAcOut.power.value : 0 + property double acOutLoad: sys.acOutLoad.power.valid ? sys.acOutLoad.power.value : 0 + property VBusItem vebusAcOutPower: VBusItem { value: acOutConnection.acOutLoad - acOutConnection.pvInverterOnAcOutPower } + + ballCount: 1 + path: straight + active: root.active && (hasAcOutSystem || pvInverterOnAcOut.visible) + value: flow(vebusAcOutPower) + endPointVisible: false + + anchors { + left: multi.right; leftMargin: -8 + right: acOutBoxConnection.left + top: multi.top; topMargin: 8 + } + } + + // UPS conenction + OverviewConnection { + id: acOutBoxConnection + + ballCount: 1 + path: straight + active: root.active && hasAcOutSystem + value: flow(sys.acOutLoad.power) + startPointVisible: false + + anchors { + left: acOutputBox.left; leftMargin: 10 + top: acOutConnection.verticalCenter + bottom: acOutputBox.bottom; bottomMargin: 9 + } + } + + // PV Inverter on AC out connection + OverviewConnection { + id: pvOnAcOutConnection + + ballCount: 1 + path: straight + active: root.active && pvInverterOnAcOut.visible + value: flow(sys.pvOnAcOut.power) + endPointVisible: false + + anchors { + left: acOutBoxConnection.left + bottom: acOutConnection.verticalCenter + top: pvInverterOnAcOut.top; topMargin: 8 + } + } + + // DC connection from multi + OverviewConnection { + ballCount: 1 + path: straight + active: root.active + value: flow(sys.vebusDc.power) + endPointVisible: false + + anchors { + right: dcConnection.right; + top: multi.bottom; topMargin: -10 + bottom: dcConnection.top; + } + } + + // Battery to DC connection + OverviewConnection { + ballCount: 3 + path: straight + active: root.active + value: Utils.sign(noNoise(sys.pvCharger.power) + noNoise(sys.vebusDc.power)) + startPointVisible: false + + anchors { + left: dcConnection.left; + top: dcConnection.verticalCenter + right: battery.right; rightMargin: 10 + } + } + + // Solar charger to DC connection + OverviewConnection { + ballCount: 3 + path: straight + active: root.active && blueSolarCharger.visible + value: flow(sys.pvCharger.power) + endPointVisible: false + + anchors { + right: dcConnection.right; + top: dcConnection.top + left: blueSolarCharger.left; leftMargin: 10 + } + } + + Item { + id: dcConnection + anchors { + horizontalCenter: multi.horizontalCenter + top: multi.bottom; topMargin: 10 + } + } +} diff --git a/FileSets/v3.00~42/OverviewHub.qml b/FileSets/v3.00~42/OverviewHub.qml new file mode 100644 index 00000000..11c13af3 --- /dev/null +++ b/FileSets/v3.00~42/OverviewHub.qml @@ -0,0 +1,310 @@ +import QtQuick 1.1 +import "utils.js" as Utils + +OverviewPage { + id: root + + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + property variant sys: theSystem + property bool hasAcSolarOnAcIn1: sys.pvOnAcIn1.power.valid + property bool hasAcSolarOnAcIn2: sys.pvOnAcIn2.power.valid + property bool hasAcSolarOnIn: hasAcSolarOnAcIn1 || hasAcSolarOnAcIn2 + property bool hasAcSolarOnOut: sys.pvOnAcOut.power.valid + property bool hasAcSolar: hasAcSolarOnIn || hasAcSolarOnOut + property bool hasDcSolar: sys.pvCharger.power.valid + property bool hasDcAndAcSolar: hasAcSolar && hasDcSolar + + title: qsTr("Overview") + + OverviewBox { + id: acInBox + + width: 148 + height: showStatusBar ? 100 : 120 + title: getAcSourceName(sys.acSource) + titleColor: darkMode.value == 0 ? "#E74c3c" : "#73261E" + color: darkMode.value == 0 ? "#C0392B" : "#601C15" + + anchors { + top: multi.top + left: parent.left; leftMargin: 10 + } + + values: OverviewAcValues { + connection: sys.acInput + } + + MbIcon { + iconId: getAcSourceIcon(sys.acSource) + anchors { + bottom: parent.bottom + left: parent.left; leftMargin: 2 + } + opacity: 0.5 + } + } + + Multi { + id: multi + anchors { + horizontalCenter: parent.horizontalCenter + top: parent.top; topMargin: 5 + } + } + + OverviewBox { + id: acLoadBox + title: qsTr("AC Loads") + color: darkMode.value == 0 ? "#27AE60" : "#135730" + titleColor: darkMode.value == 0 ? "#2ECC71" : "#176638" + width: 148 + height: showStatusBar ? 100 : 120 + + anchors { + right: parent.right; rightMargin: 10 + top: multi.top + } + + values: OverviewAcValues { + connection: sys.acLoad + } + } + + Battery { + id: battery + + soc: sys.battery.soc.valid ? sys.battery.soc.value : 0 + + anchors { + bottom: parent.bottom; bottomMargin: 5; + left: parent.left; leftMargin: 10 + } + values: Column { + width: parent.width + + TileText { + // Use value here instead of format() because format adds the unit to the number and we + // show the percentage symbol in a separated smaller text. + text: sys.battery.soc.value === undefined ? "--" : sys.battery.soc.value.toFixed(0) + font.pixelSize: 40 + + Text { + anchors { + bottom: parent.bottom; bottomMargin: 9 + horizontalCenter: parent.horizontalCenter; horizontalCenterOffset: parent.paintedWidth / 2 + 5 + } + visible: sys.battery.soc.valid + text: "%" + color: "white" + font.bold: true + font.pixelSize: 12 + } + } + TileText { + text: sys.battery.power.format(0) + } + TileText { + text: sys.battery.voltage.format(1) + " " + sys.battery.current.format(1) + } + } + } + + OverviewBox { + id: dcSystemBox + width: 105 + height: 45 + visible: sys.dcSystem.power.valid + title: qsTr("DC Power") + + anchors { + horizontalCenter: multi.horizontalCenter + bottom: parent.bottom; bottomMargin: 5 + } + + values: TileText { + anchors.centerIn: parent + text: sys.dcSystem.power.format(0) + } + } + + OverviewSolarCharger { + id: blueSolarCharger + + height: hasDcAndAcSolar ? 65 : 114 + width: 148 + title: qsTr("PV Charger") + showChargerIcon: !hasDcAndAcSolar + visible: hasDcSolar || hasDcAndAcSolar + + anchors { + right: root.right; rightMargin: 10 + bottom: root.bottom; bottomMargin: 5; + } + + values: TileText { + y: 5 + text: sys.pvCharger.power.format(0) + font.pixelSize: 20 + } + } + + OverviewSolarInverter { + id: pvInverter + height: hasDcAndAcSolar ? 65 : 115 + width: 148 + title: qsTr("PV Inverter") + showInverterIcon: !hasDcAndAcSolar + visible: hasAcSolar + + anchors { + right: root.right; rightMargin: 10; + bottom: root.bottom; bottomMargin: hasDcAndAcSolar ? 75 : 5 + } + + OverviewAcValues { + connection: hasAcSolarOnOut ? sys.pvOnAcOut : hasAcSolarOnAcIn1 ? sys.pvOnAcIn1 : sys.pvOnAcIn2 + visible: !coupledPvAc.visible + } + + TileText { + id: coupledPvAc + + property double pvInverterOnAcOut: sys.pvOnAcOut.power.valid ? sys.pvOnAcOut.power.value : 0 + property double pvInverterOnAcIn1: sys.pvOnAcIn1.power.valid ? sys.pvOnAcIn1.power.value : 0 + property double pvInverterOnAcIn2: sys.pvOnAcIn2.power.valid ? sys.pvOnAcIn2.power.value : 0 + + y: 5 + text: (pvInverterOnAcOut + pvInverterOnAcIn1 + pvInverterOnAcIn2).toFixed(0) + "W" + font.pixelSize: hasDcAndAcSolar ? 20 : 25 + visible: hasDcAndAcSolar || (hasAcSolarOnIn && hasAcSolarOnOut) || (hasAcSolarOnAcIn1 && hasAcSolarOnAcIn2) + } + } + + OverviewEssReason { + anchors { + bottom: parent.bottom; bottomMargin: dcSystemBox.visible ? battery.height + 15 : 5 + horizontalCenter: parent.horizontalCenter; horizontalCenterOffset: dcSystemBox.visible ? -(root.width / 2 - battery.width / 2 - 10) : 0 + } + } + + OverviewConnection { + id: acInToMulti + ballCount: 2 + path: straight + active: root.active + value: flow(sys.acInput ? sys.acInput.power : 0) + + anchors { + left: acInBox.right; leftMargin: -10; top: multi.verticalCenter; + right: multi.left; rightMargin: -10; bottom: multi.verticalCenter + } + } + + OverviewConnection { + id: multiToAcLoads + ballCount: 2 + path: straight + active: root.active + value: flow(sys.acLoad.power) + + anchors { + left: multi.right; leftMargin: -10; + top: multi.verticalCenter + right: acLoadBox.left; rightMargin: -10 + bottom: multi.verticalCenter + } + } + + OverviewConnection { + id: pvInverterToMulti + + property int hasDcAndAcFlow: Utils.sign(noNoise(sys.pvOnAcOut.power) + noNoise(sys.pvOnAcIn1.power) + noNoise(sys.pvOnAcIn2.power)) + + ballCount: 4 + path: corner + active: root.active && hasAcSolar + value: hasDcAndAcSolar ? hasDcAndAcFlow : flow(sys.pvOnAcOut.power) + + anchors { + left: pvInverter.left; leftMargin: 8 + top: pvInverter.verticalCenter; topMargin: hasDcAndAcSolar ? 1 : 0 + right: multi.horizontalCenter; rightMargin: -20 + bottom: multi.bottom; bottomMargin: 10 + } + } + + // invisible anchor point to connect the chargers to the battery + Item { + id: dcConnect + anchors { + left: multi.horizontalCenter; leftMargin: hasAcSolar ? -20 : 0 + bottom: dcSystemBox.top; bottomMargin: 10 + } + } + + OverviewConnection { + id: multiToDcConnect + ballCount: 3 + path: straight + active: root.active + value: -flow(sys.vebusDc.power); + startPointVisible: false + + anchors { + left: dcConnect.left + top: dcConnect.top + + right: dcConnect.left + bottom: multi.bottom; bottomMargin: 10 + } + } + + OverviewConnection { + id: blueSolarChargerDcConnect + ballCount: 3 + path: straight + active: root.active && hasDcSolar + value: -flow(sys.pvCharger.power) + startPointVisible: false + + anchors { + left: dcConnect.left + top: dcConnect.top + + right: blueSolarCharger.left; rightMargin: -8 + bottom: dcConnect.top; + } + } + + OverviewConnection { + id: chargersToBattery + ballCount: 3 + path: straight + active: root.active + value: Utils.sign(noNoise(sys.pvCharger.power) + noNoise(sys.vebusDc.power)) + startPointVisible: false + + anchors { + left: dcConnect.left + top: dcConnect.top + + right: battery.right; rightMargin: 10 + bottom: dcConnect.top + } + } + + OverviewConnection { + id: batteryToDcSystem + ballCount: 2 + path: straight + active: root.active && sys.dcSystem.power.valid + value: flow(sys.dcSystem.power) + + anchors { + left: battery.right; leftMargin: -10 + top: dcSystemBox.verticalCenter; + right: dcSystemBox.left; rightMargin: -10 + bottom: dcSystemBox.verticalCenter + } + } +} diff --git a/FileSets/v3.00~42/OverviewHub.qml.orig b/FileSets/v3.00~42/OverviewHub.qml.orig new file mode 100644 index 00000000..4418c508 --- /dev/null +++ b/FileSets/v3.00~42/OverviewHub.qml.orig @@ -0,0 +1,309 @@ +import QtQuick 1.1 +import "utils.js" as Utils + +OverviewPage { + id: root + + property variant sys: theSystem + property bool hasAcSolarOnAcIn1: sys.pvOnAcIn1.power.valid + property bool hasAcSolarOnAcIn2: sys.pvOnAcIn2.power.valid + property bool hasAcSolarOnIn: hasAcSolarOnAcIn1 || hasAcSolarOnAcIn2 + property bool hasAcSolarOnOut: sys.pvOnAcOut.power.valid + property bool hasAcSolar: hasAcSolarOnIn || hasAcSolarOnOut + property bool hasDcSolar: sys.pvCharger.power.valid + property bool hasDcAndAcSolar: hasAcSolar && hasDcSolar + + title: qsTr("Overview") + + OverviewBox { + id: acInBox + + width: 148 + height: showStatusBar ? 100 : 120 + title: getAcSourceName(sys.acSource) + titleColor: "#E74c3c" + color: "#C0392B" + + anchors { + top: multi.top + left: parent.left; leftMargin: 10 + } + + values: OverviewAcValues { + connection: sys.acInput + } + + MbIcon { + iconId: getAcSourceIcon(sys.acSource) + anchors { + bottom: parent.bottom + left: parent.left; leftMargin: 2 + } + opacity: 0.5 + } + } + + Multi { + id: multi + anchors { + horizontalCenter: parent.horizontalCenter + top: parent.top; topMargin: 5 + } + } + + OverviewBox { + id: acLoadBox + title: qsTr("AC Loads") + color: "#27AE60" + titleColor: "#2ECC71" + width: 148 + height: showStatusBar ? 100 : 120 + + anchors { + right: parent.right; rightMargin: 10 + top: multi.top + } + + values: OverviewAcValues { + connection: sys.acLoad + } + } + + Battery { + id: battery + + soc: sys.battery.soc.valid ? sys.battery.soc.value : 0 + + anchors { + bottom: parent.bottom; bottomMargin: 5; + left: parent.left; leftMargin: 10 + } + values: Column { + width: parent.width + + TileText { + // Use value here instead of format() because format adds the unit to the number and we + // show the percentage symbol in a separated smaller text. + text: sys.battery.soc.value === undefined ? "--" : sys.battery.soc.value.toFixed(0) + font.pixelSize: 40 + + Text { + anchors { + bottom: parent.bottom; bottomMargin: 9 + horizontalCenter: parent.horizontalCenter; horizontalCenterOffset: parent.paintedWidth / 2 + 5 + } + visible: sys.battery.soc.valid + text: "%" + color: "white" + font.bold: true + font.pixelSize: 12 + } + } + TileText { + text: sys.battery.power.format(0) + } + TileText { + text: sys.battery.voltage.format(1) + " " + sys.battery.current.format(1) + } + } + } + + OverviewBox { + id: dcSystemBox + width: 105 + height: 45 + visible: sys.dcSystem.power.valid + title: qsTr("DC Power") + + anchors { + horizontalCenter: multi.horizontalCenter + bottom: parent.bottom; bottomMargin: 5 + } + + values: TileText { + anchors.centerIn: parent + text: sys.dcSystem.power.format(0) + } + } + + OverviewSolarCharger { + id: blueSolarCharger + + height: hasDcAndAcSolar ? 65 : 114 + width: 148 + title: qsTr("PV Charger") + showChargerIcon: !hasDcAndAcSolar + visible: hasDcSolar || hasDcAndAcSolar + + anchors { + right: root.right; rightMargin: 10 + bottom: root.bottom; bottomMargin: 5; + } + + values: TileText { + y: 5 + text: sys.pvCharger.power.format(0) + font.pixelSize: 20 + } + } + + OverviewSolarInverter { + id: pvInverter + height: hasDcAndAcSolar ? 65 : 115 + width: 148 + title: qsTr("PV Inverter") + showInverterIcon: !hasDcAndAcSolar + visible: hasAcSolar + + anchors { + right: root.right; rightMargin: 10; + bottom: root.bottom; bottomMargin: hasDcAndAcSolar ? 75 : 5 + } + + OverviewAcValues { + connection: hasAcSolarOnOut ? sys.pvOnAcOut : hasAcSolarOnAcIn1 ? sys.pvOnAcIn1 : sys.pvOnAcIn2 + visible: !coupledPvAc.visible + } + + TileText { + id: coupledPvAc + + property double pvInverterOnAcOut: sys.pvOnAcOut.power.valid ? sys.pvOnAcOut.power.value : 0 + property double pvInverterOnAcIn1: sys.pvOnAcIn1.power.valid ? sys.pvOnAcIn1.power.value : 0 + property double pvInverterOnAcIn2: sys.pvOnAcIn2.power.valid ? sys.pvOnAcIn2.power.value : 0 + + y: 5 + text: (pvInverterOnAcOut + pvInverterOnAcIn1 + pvInverterOnAcIn2).toFixed(0) + "W" + font.pixelSize: hasDcAndAcSolar ? 20 : 25 + visible: hasDcAndAcSolar || (hasAcSolarOnIn && hasAcSolarOnOut) || (hasAcSolarOnAcIn1 && hasAcSolarOnAcIn2) + } + } + + OverviewEssReason { + anchors { + bottom: parent.bottom; bottomMargin: dcSystemBox.visible ? battery.height + 15 : 5 + horizontalCenter: parent.horizontalCenter; horizontalCenterOffset: dcSystemBox.visible ? -(root.width / 2 - battery.width / 2 - 10) : 0 + } + } + + OverviewConnection { + id: acInToMulti + ballCount: 2 + path: straight + active: root.active + value: flow(sys.acInput ? sys.acInput.power : 0) + + anchors { + left: acInBox.right; leftMargin: -10; top: multi.verticalCenter; + right: multi.left; rightMargin: -10; bottom: multi.verticalCenter + } + } + + OverviewConnection { + id: multiToAcLoads + ballCount: 2 + path: straight + active: root.active + value: flow(sys.acLoad.power) + + anchors { + left: multi.right; leftMargin: -10; + top: multi.verticalCenter + right: acLoadBox.left; rightMargin: -10 + bottom: multi.verticalCenter + } + } + + OverviewConnection { + id: pvInverterToMulti + + property int hasDcAndAcFlow: Utils.sign(noNoise(sys.pvOnAcOut.power) + noNoise(sys.pvOnAcIn1.power) + noNoise(sys.pvOnAcIn2.power)) + + ballCount: 4 + path: corner + active: root.active && hasAcSolar + value: hasDcAndAcSolar ? hasDcAndAcFlow : flow(sys.pvOnAcOut.power) + + anchors { + left: pvInverter.left; leftMargin: 8 + top: pvInverter.verticalCenter; topMargin: hasDcAndAcSolar ? 1 : 0 + right: multi.horizontalCenter; rightMargin: -20 + bottom: multi.bottom; bottomMargin: 10 + } + } + + // invisible anchor point to connect the chargers to the battery + Item { + id: dcConnect + anchors { + left: multi.horizontalCenter; leftMargin: hasAcSolar ? -20 : 0 + bottom: dcSystemBox.top; bottomMargin: 10 + } + } + + OverviewConnection { + id: multiToDcConnect + ballCount: 3 + path: straight + active: root.active + value: -flow(sys.vebusDc.power); + startPointVisible: false + + anchors { + left: dcConnect.left + top: dcConnect.top + + right: dcConnect.left + bottom: multi.bottom; bottomMargin: 10 + } + } + + OverviewConnection { + id: blueSolarChargerDcConnect + ballCount: 3 + path: straight + active: root.active && hasDcSolar + value: -flow(sys.pvCharger.power) + startPointVisible: false + + anchors { + left: dcConnect.left + top: dcConnect.top + + right: blueSolarCharger.left; rightMargin: -8 + bottom: dcConnect.top; + } + } + + OverviewConnection { + id: chargersToBattery + ballCount: 3 + path: straight + active: root.active + value: Utils.sign(noNoise(sys.pvCharger.power) + noNoise(sys.vebusDc.power)) + startPointVisible: false + + anchors { + left: dcConnect.left + top: dcConnect.top + + right: battery.right; rightMargin: 10 + bottom: dcConnect.top + } + } + + OverviewConnection { + id: batteryToDcSystem + ballCount: 2 + path: straight + active: root.active && sys.dcSystem.power.valid + value: flow(sys.dcSystem.power) + + anchors { + left: battery.right; leftMargin: -10 + top: dcSystemBox.verticalCenter; + right: dcSystemBox.left; rightMargin: -10 + bottom: dcSystemBox.verticalCenter + } + } +} diff --git a/FileSets/v3.00~42/OverviewHubEnhanced.qml b/FileSets/v3.00~42/OverviewHubEnhanced.qml index 6af01246..f16d316d 100644 --- a/FileSets/v3.00~42/OverviewHubEnhanced.qml +++ b/FileSets/v3.00~42/OverviewHubEnhanced.qml @@ -25,6 +25,7 @@ OverviewPage { property string systemPrefix: "com.victronenergy.system" property string guiModsPrefix: "com.victronenergy.settings/Settings/GuiMods" + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } VBusItem { id: vebusService; bind: Utils.path(systemPrefix, "/VebusService") } property bool isMulti: vebusService.valid property string veDirectInverterService: "" @@ -81,7 +82,7 @@ OverviewPage { property int pvRowsPerCharger: Math.max ( 1, Math.min (pvChargerRows / numberOfPvChargers, 3)) property bool pvChargerCompact: pvRowsPerCharger < 3 ? true : false property bool pvShowDetails: pvRowsPerCharger >= 2 ? true : false - + //////// add for PV INVERTER power property string pvInverterPrefix1: "" property string pvInverterPrefix2: "" @@ -183,8 +184,8 @@ OverviewPage { OverviewBox { id: acInBox - titleColor: "#E74c3c" - color: "#C0392B" + titleColor: darkMode.value == 0 ? "#E74c3c" : "#73261E" + color: darkMode.value == 0 ? "#C0392B" : "#601C15" opacity: showAcInput ? 1 : disabledTileOpacity visible: showAcInput || showInactiveTiles width: 148 @@ -249,9 +250,9 @@ OverviewPage { //// add alternator if AC input not present OverviewBox { id: alternatorBox - title: qsTr ("Alternator") - color: "#157894" - titleColor: "#419FB9" + title: qsTr ("Alternator") + color: darkMode.value == 0 ? "#157894" : "#0a3c4a" + titleColor: darkMode.value == 0 ? "#419FB9" : "#204f5c" opacity: showAlternator ? 1 : disabledTileOpacity visible: showAlternator || showInactiveTiles && ! acInBox.visible width: 148 @@ -372,8 +373,8 @@ OverviewPage { visible: showAcLoads || showInactiveTiles opacity: showAcLoads ? 1 : disabledTileOpacity title: qsTr("AC Loads") - color: "#27AE60" - titleColor: "#2ECC71" + color: darkMode.value == 0 ? "#27AE60" : "#135730" + titleColor: darkMode.value == 0 ? "#2ECC71" : "#176638" width: 148 height: showStatusBar ? 80 : 102 @@ -528,8 +529,8 @@ OverviewPage { OverviewBox { id: pvChargerBox title: qsTr("PV Charger") - titleColor: "#F4B350" - color: "#F39C12" + titleColor: darkMode.value == 0 ? "#F4B350" : "#7A5928" + color: darkMode.value == 0 ? "#F39C12" : "#794E09" visible: hasDcSolar || showInactiveTiles opacity: hasDcSolar ? 1 : disabledTileOpacity @@ -563,7 +564,7 @@ OverviewPage { } //////// modified to add power for individual PV charger info - values: + values: [ TileText { y: 8 @@ -807,7 +808,7 @@ OverviewPage { font.pixelSize: 15 visible: numberOfPvChargers >= 6 && pvChargerRows >= 6 && ! showDcAndAcSolar }, - MarqueeEnhanced + MarqueeEnhanced { y: pvOffset7 id: pv7Name @@ -852,8 +853,8 @@ OverviewPage { OverviewBox { id: pvInverter title: qsTr("PV Inverter") - titleColor: "#F4B350" - color: "#F39C12" + titleColor: darkMode.value == 0 ? "#F4B350" : "#7A5928" + color: darkMode.value == 0 ? "#F39C12" : "#794E09" visible: hasAcSolar || showInactiveTiles opacity: hasAcSolar ? 1 : disabledTileOpacity @@ -926,17 +927,17 @@ OverviewPage { font.pixelSize: 15 visible: !showDcAndAcSolar && numberOfPvInverters >=3 && ! showTanksTemps }, - TileText { + TileText { y: 31 text: qsTr ("L1: ") + EnhFmt.formatVBusItem (pvInverterL1Power1, "W") visible: !showDcAndAcSolar && numberOfPvInverters == 1 && pvInverterL1Power1.valid && (pvInverterL2Power1.valid || pvInverterL3Power1.valid) }, - TileText { + TileText { y: 47 text: qsTr ("L2: ") + EnhFmt.formatVBusItem (pvInverterL2Power1, "W") visible: !showDcAndAcSolar && numberOfPvInverters == 1 && pvInverterL2Power1.valid }, - TileText { + TileText { y: 63 text: qsTr ("L3: ") + EnhFmt.formatVBusItem (pvInverterL3Power1, "W") visible: !showDcAndAcSolar && numberOfPvInverters == 1 && pvInverterL3Power1.valid @@ -1243,7 +1244,7 @@ OverviewPage { function addService(service) { - switch (service.type) + switch (service.type) { //////// add for temp sensors case DBusService.DBUS_SERVICE_TEMPERATURE_SENSOR: @@ -1348,7 +1349,7 @@ OverviewPage { color: "white" width: multi.width height: 32 - opacity: 0.7 + opacity: darkMode.value == 0 ? 0.7 : 0.85 anchors { top: multi.bottom; topMargin: 1 @@ -1378,7 +1379,7 @@ OverviewPage { [ acInputTarget, alternatorTarget, batteryTarget, multiTarget, dcSystemTarget, - loadsOnOutputTarget, pvInverterTarget, pvChargerTarget + loadsOnOutputTarget, pvInverterTarget, pvChargerTarget ] property int selectedTarget: 0 diff --git a/FileSets/v3.00~42/OverviewSolarCharger.qml b/FileSets/v3.00~42/OverviewSolarCharger.qml new file mode 100644 index 00000000..63cd4803 --- /dev/null +++ b/FileSets/v3.00~42/OverviewSolarCharger.qml @@ -0,0 +1,54 @@ +import QtQuick 1.1 + +Item { + id: root + + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + default property alias values: blueSolarChargerBox.values + property alias title: blueSolarChargerBox.title + property bool showChargerIcon: true + + width: 155 + height: 115 + + MbIcon { + id: blueSolarChargerIcon + + iconId: "overview-bluesolar-charger" + anchors.bottom: root.bottom + visible: showChargerIcon + } + + OverviewBox { + id: blueSolarChargerBox + + height: root.height + title: qsTr("PV Power") + titleColor: darkMode.value == 0 ? "#F4B350" : "#7A5928" + color: darkMode.value == 0 ? "#F39C12" : "#794E09" + + anchors { + bottom: root.bottom + left: blueSolarChargerIcon.left; leftMargin: showChargerIcon ? 43 : 0 + right: parent.right + } + } + + MbIcon { + anchors { + bottom: blueSolarChargerBox.bottom; bottomMargin: 3 + right: blueSolarChargerBox.right; rightMargin: 3 + } + iconId: "overview-sun" + display: showChargerIcon + } + + MbIcon { + anchors { + bottom: blueSolarChargerBox.bottom; bottomMargin: 3 + left: parent.left; leftMargin: 2 + } + iconId: "overview-victron-logo-small" + display: !showChargerIcon + } +} diff --git a/FileSets/v3.00~42/OverviewSolarCharger.qml.orig b/FileSets/v3.00~42/OverviewSolarCharger.qml.orig new file mode 100644 index 00000000..d9705150 --- /dev/null +++ b/FileSets/v3.00~42/OverviewSolarCharger.qml.orig @@ -0,0 +1,53 @@ +import QtQuick 1.1 + +Item { + id: root + + default property alias values: blueSolarChargerBox.values + property alias title: blueSolarChargerBox.title + property bool showChargerIcon: true + + width: 155 + height: 115 + + MbIcon { + id: blueSolarChargerIcon + + iconId: "overview-bluesolar-charger" + anchors.bottom: root.bottom + visible: showChargerIcon + } + + OverviewBox { + id: blueSolarChargerBox + + height: root.height + title: qsTr("PV Power") + titleColor: "#F4B350" + color: "#F39C12" + + anchors { + bottom: root.bottom + left: blueSolarChargerIcon.left; leftMargin: showChargerIcon ? 43 : 0 + right: parent.right + } + } + + MbIcon { + anchors { + bottom: blueSolarChargerBox.bottom; bottomMargin: 3 + right: blueSolarChargerBox.right; rightMargin: 3 + } + iconId: "overview-sun" + display: showChargerIcon + } + + MbIcon { + anchors { + bottom: blueSolarChargerBox.bottom; bottomMargin: 3 + left: parent.left; leftMargin: 2 + } + iconId: "overview-victron-logo-small" + display: !showChargerIcon + } +} diff --git a/FileSets/v3.00~42/OverviewSolarInverter.qml b/FileSets/v3.00~42/OverviewSolarInverter.qml new file mode 100644 index 00000000..6b29af09 --- /dev/null +++ b/FileSets/v3.00~42/OverviewSolarInverter.qml @@ -0,0 +1,63 @@ +import QtQuick 1.1 + +Rectangle { + id: root + + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + default property alias values: pvInverterBox.values + property alias title: pvInverterBox.title + property bool showInverterIcon: true + + width: 155 + height: 115 + color: "transparent" + clip: true + + MbIcon { + id: pvInverterIcon + iconId: getDeviceIcon() + visible: showInverterIcon && getDeviceIcon() !== "" + anchors.bottom: parent.bottom + } + + OverviewBox { + id: pvInverterBox + + height: root.height + title: qsTr("PV Power") + titleColor: darkMode.value == 0 ? "#F4B350" : "#7A5928" + color: darkMode.value == 0 ? "#F39C12" : "#794E09" + + anchors { + bottom: parent.bottom + left: pvInverterIcon.left; leftMargin: pvInverterIcon.visible ? 32 : 0 + right: parent.right + } + + MbIcon { + iconId: getDeviceLogo() + visible: !showInverterIcon + anchors { + bottom: parent.bottom + left: parent.left + margins: 2 + } + } + } + + function getDeviceIcon() + { + var ids = sys.pvInvertersProductIds.text + if (ids.indexOf(0xA142) > -1) + return "overview-pvinverter-fronius" + return "" + } + + function getDeviceLogo() + { + var ids = sys.pvInvertersProductIds.text + if (ids.indexOf(0xA142) > -1) + return "overview-fronius-logo" + return "" + } +} diff --git a/FileSets/v3.00~42/OverviewSolarInverter.qml.orig b/FileSets/v3.00~42/OverviewSolarInverter.qml.orig new file mode 100644 index 00000000..49a63d50 --- /dev/null +++ b/FileSets/v3.00~42/OverviewSolarInverter.qml.orig @@ -0,0 +1,62 @@ +import QtQuick 1.1 + +Rectangle { + id: root + + default property alias values: pvInverterBox.values + property alias title: pvInverterBox.title + property bool showInverterIcon: true + + width: 155 + height: 115 + color: "transparent" + clip: true + + MbIcon { + id: pvInverterIcon + iconId: getDeviceIcon() + visible: showInverterIcon && getDeviceIcon() !== "" + anchors.bottom: parent.bottom + } + + OverviewBox { + id: pvInverterBox + + height: root.height + title: qsTr("PV Power") + titleColor: "#F4B350" + color: "#F39C12" + + anchors { + bottom: parent.bottom + left: pvInverterIcon.left; leftMargin: pvInverterIcon.visible ? 32 : 0 + right: parent.right + } + + MbIcon { + iconId: getDeviceLogo() + visible: !showInverterIcon + anchors { + bottom: parent.bottom + left: parent.left + margins: 2 + } + } + } + + function getDeviceIcon() + { + var ids = sys.pvInvertersProductIds.text + if (ids.indexOf(0xA142) > -1) + return "overview-pvinverter-fronius" + return "" + } + + function getDeviceLogo() + { + var ids = sys.pvInvertersProductIds.text + if (ids.indexOf(0xA142) > -1) + return "overview-fronius-logo" + return "" + } +} diff --git a/FileSets/v3.00~42/PageSettingsDisplay.qml b/FileSets/v3.00~42/PageSettingsDisplay.qml index 1db48fe0..d8cf9feb 100644 --- a/FileSets/v3.00~42/PageSettingsDisplay.qml +++ b/FileSets/v3.00~42/PageSettingsDisplay.qml @@ -54,6 +54,14 @@ MbPage { ] } + MbSwitch + { + id: enableDarkMode + bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" + name: qsTr ("Dark Mode") + writeAccessLevel: User.AccessUser + } + MbSwitch { bind: Utils.path(bindPrefix, "/MobileOverview") name: qsTr("Show boat & motorhome overview") diff --git a/FileSets/v3.00~42/PageSettingsGuiMods.qml b/FileSets/v3.00~42/PageSettingsGuiMods.qml index 420a42ac..2de19b26 100644 --- a/FileSets/v3.00~42/PageSettingsGuiMods.qml +++ b/FileSets/v3.00~42/PageSettingsGuiMods.qml @@ -17,6 +17,7 @@ MbPage { model: VisibleItemModel { + MbSwitch { id: showTileOverview @@ -238,7 +239,7 @@ MbPage { ] writeAccessLevel: User.AccessUser } - + MbSpinBox { description: qsTr ("Watt / Kilowatt threshold") item diff --git a/FileSets/v3.00~42/Tile.qml b/FileSets/v3.00~42/Tile.qml new file mode 100644 index 00000000..f50020ca --- /dev/null +++ b/FileSets/v3.00~42/Tile.qml @@ -0,0 +1,60 @@ +import QtQuick 1.1 + +Rectangle { + id: root + + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + + color: "#009ec6" + border.width: 2 + border.color: darkMode.value == 0 ? "#fff" : "#202020" + clip: true + + property string title + property alias values: column.children + property bool readOnly: true + property bool editable: false + property bool editMode: false + property bool isCurrentItem: ListView.isCurrentItem + property int contentHeight: column.y + column.height + property bool show: true + + Text { + id: titleField + font.pixelSize: 13 + text: title + color: darkMode.value == 0 ? "white" : "#ddd" + height: text === "" ? 0 : paintedHeight + anchors { + top: parent.top; topMargin: 5 + left: parent.left; leftMargin: 5 + } + } + + Rectangle { + id: titleLine + width: parent.width - 10 + height: 1 + visible: title !== "" + color: darkMode.value == 0 ? "white" : "#ddd" + anchors { + top: titleField.bottom + left: titleField.left + } + } + + Column { + id: column + anchors { + top: titleLine.bottom; topMargin: 3 + horizontalCenter: parent.horizontalCenter + } + } + + MbIcon { + id: editIcon + iconId: root.isCurrentItem ? "icon-tile-edit-active" : "icon-tile-edit" + visible: (root.isCurrentItem || root.focus) && root.editable && !editMode + anchors { right: parent.right; bottom: column.bottom; margins: 3} + } +} diff --git a/FileSets/v3.00~42/TileText.qml b/FileSets/v3.00~42/TileText.qml new file mode 100644 index 00000000..f5a32648 --- /dev/null +++ b/FileSets/v3.00~42/TileText.qml @@ -0,0 +1,10 @@ +import QtQuick 1.1 + +Text { + property VBusItem darkMode: VBusItem { bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" } + + font.pixelSize: 14 + color: darkMode.value == 0 ? "white" : "#e1e1e1" + width: parent.width + horizontalAlignment: Text.AlignHCenter +} diff --git a/FileSets/v3.00~42/TileText.qml.orig b/FileSets/v3.00~42/TileText.qml.orig new file mode 100644 index 00000000..afe1cc09 --- /dev/null +++ b/FileSets/v3.00~42/TileText.qml.orig @@ -0,0 +1,8 @@ +import QtQuick 1.1 + +Text { + font.pixelSize: 14 + color: "white" + width: parent.width + horizontalAlignment: Text.AlignHCenter +} diff --git a/FileSets/v3.00~42/main.qml b/FileSets/v3.00~42/main.qml index 5228b94b..e5c88e1a 100644 --- a/FileSets/v3.00~42/main.qml +++ b/FileSets/v3.00~42/main.qml @@ -49,6 +49,23 @@ PageStackWindow { onValueChanged: selectHubOverview () } + VBusItem + { + id: darkMode + bind: "com.victronenergy.settings/Settings/GuiMods/DarkMode" + //onValueChanged: selectHubOverview () + } + + // set background for darkmode (by githubm.com/mr-manuel) + Rectangle { + anchors + { + fill: parent + } + color: darkMode.value == 0 ? "transparent" : "#202020" + z: -1 + } + // base a new hub selection on the hub type and the enhanced flow overview flag function selectHubOverview () { @@ -463,9 +480,9 @@ PageStackWindow { function replaceOverview(oldPage, newPage) { for (var i = 0; i < overviewModel.count; i++) - { + { if (overviewModel.get(i).pageSource === oldPage) - { + { overviewModel.get(i).pageSource = newPage return } diff --git a/FileSets/v3.00~42/styles.css b/FileSets/v3.00~42/styles.css new file mode 100644 index 00000000..122ddb0f --- /dev/null +++ b/FileSets/v3.00~42/styles.css @@ -0,0 +1,11025 @@ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} +audio:not([controls]) { + display: none; +} +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +a:hover, +a:active { + outline: 0; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + /* Responsive images (ensure images don't scale beyond their parents) */ + max-width: 100%; + /* Part 1: Set a maxium relative to the parent */ + width: auto\9; + /* IE7-8 need help adjusting responsive images */ + height: auto; + /* Part 2: Scale the height according to the width, otherwise you get stretching */ + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} +#map_canvas img, +.google-maps img { + max-width: none; +} +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; + background-image: none; +} +button, +input { + *overflow: visible; + line-height: normal; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} +textarea { + overflow: auto; + vertical-align: top; +} +@media print { + * { + text-shadow: none !important; + color: #000 !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} +/* @group Base */ +.chzn-container { + position: relative; + display: inline-block; + zoom: 1; +} +.chzn-container .chzn-drop { + border-top: 0; + position: absolute; + left: 0; + z-index: 1010; +} +/* @end */ +/* @group Single Chosen */ +.chzn-container-single .chzn-single { + display: block; + outline: none; + overflow: hidden; + white-space: nowrap; + position: relative; + text-decoration: none; +} +.chzn-container-single .chzn-single span { + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.chzn-container-single .chzn-single .handle { + position: absolute; + right: 0; + top: 0; + display: block; +} +.chzn-container-single .chzn-search { + position: relative; + white-space: nowrap; + z-index: 1010; +} +.no-search + .chzn-container-single .chzn-search { + display: none !important; +} +.chzn-container-single .chzn-search input { + outline: 0; +} +/* @group Results */ +.chzn-container .chzn-results { + position: relative; + overflow-x: hidden; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} +.chzn-container-multi .chzn-results { + padding: 0; +} +.chzn-container .chzn-results li { + display: none; + margin: 0; + list-style: none; +} +.chzn-container .chzn-results .active-result { + cursor: pointer; + display: list-item; + width: 100%; +} +.chzn-container .chzn-results .no-results { + display: list-item; +} +.chzn-container .chzn-results .group-result { + cursor: default; +} +.chzn-container .chzn-results .group-option { + padding-left: 15px; +} +.chzn-container-multi .chzn-drop .result-selected { + display: none; +} +/* @end */ +div.datepicker { + position: relative; + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + width: 196px; + height: 147px; + position: absolute; + cursor: default; + top: 0; + left: 0; + display: none; +} +.datepickerContainer { + position: absolute; +} +/* Hide border divs by default */ +.datepickerBorderT, +.datepickerBorderB, +.datepickerBorderL, +.datepickerBorderR, +.datepickerBorderTL, +.datepickerBorderTR, +.datepickerBorderBL, +.datepickerBorderBR { + display: none; +} +.datepickerHidden { + display: none; +} +div.datepicker table { + border-collapse: collapse; +} +div.datepicker a { + color: black; + text-decoration: none; + cursor: default; + outline: none; +} +div.datepicker table td { + text-align: center; + padding: 0; + margin: 0; +} +div.datepicker th { + text-align: center; + color: #666666; + font-weight: normal; + padding: 0; +} +div.datepicker tbody a { + display: block; +} +.datepickerDays a { + width: 20px; + line-height: 16px; + height: 16px; + padding-right: 2px; +} +.datepickerYears a, +.datepickerMonths a { + width: 39px; + line-height: 36px; + height: 36px; + text-align: center; +} +.datepickerMonths td:first-child a, +.datepickerMonths td:last-child a, +.datepickerYears td:first-child a, +.datepickerYears td:last-child a { + width: 38px; +} +td.datepickerNotInMonth a { + color: #666666; +} +tbody.datepickerDays td.datepickerSelected { + background: #136A9F; +} +tbody.datepickerDays td.datepickerNotInMonth.datepickerSelected { + background: #17384d; +} +tbody.datepickerYears td.datepickerSelected, +tbody.datepickerMonths td.datepickerSelected { + background: #17384d; +} +div.datepicker td.datepickerSelected a { + color: white; +} +div.datepicker a:hover, +div.datepicker a:hover { + color: #88c5eb; +} +div.datepicker td.datepickerNotInMonth a:hover { + color: #999999; +} +.datepickerSpace div { + width: 20px; +} +.datepickerBlock { + vertical-align: top; +} +a.datepickerGoNext, +a.datepickerGoPrev, +a.datepickerMonth { + text-align: center; + height: 20px; + line-height: 20px; + float: left; +} +div.datepicker th a.datepickerGoNext, +div.datepicker th a.datepickerGoPrev { + width: 20px; + color: #666666; + display: none; +} +div.datepicker th a.datepickerMonth { + width: 114px; + display: block; +} +/* Only display the previous/next arrows on the first/last calendars */ +div.datepicker .datepickerFirstView th a.datepickerGoPrev, +div.datepicker .datepickerLastView th a.datepickerGoNext { + display: block; +} +/* Compensate for the space lost by not having a previous arrow */ +div.datepicker th a.datepickerMonth { + margin-left: 20px; +} +div.datepicker .datepickerFirstView th a.datepickerMonth { + margin-left: 0; +} +/* Day mode calendar body */ +table.datepickerViewDays tbody.datepickerMonths, +table.datepickerViewDays tbody.datepickerYears { + display: none; +} +/* Month mode calendar body */ +table.datepickerViewMonths tbody.datepickerDays, +table.datepickerViewMonths tbody.datepickerYears, +table.datepickerViewMonths tr.datepickerDoW { + display: none; +} +/* Year mode calendar body */ +table.datepickerViewYears tbody.datepickerDays, +table.datepickerViewYears tbody.datepickerMonths, +table.datepickerViewYears tr.datepickerDoW { + display: none; +} +td.datepickerDisabled a, +td.datepickerDisabled.datepickerNotInMonth a { + color: #555555; +} +td.datepickerDisabled a:hover { + color: #333333; +} +/* Not used by default, calendar cells can be marked as special if desired (doesn't seem to be totally working) */ +div.datepicker tbody.datepickerDays td.datepickerSpecial a { + background: #770000; + color: white; +} +div.datepicker tbody.datepickerDays td.datepickerSpecial.datepickerSelected a { + background: #aa0000; +} +/* style the 'not in month' day cell away */ +tbody.datepickerDays td.datepickerNotInMonth.datepickerSelected { + background-color: transparent; +} +div.datepicker td.datepickerNotInMonth a span { + display: none; +} +div.datepicker td.datepickerNotInMonth a:hover span { + display: none; +} +div.datepicker tbody.datepickerDays td.datepickerNotInMonth:hover { + background-color: transparent; +} +.picker { + font-size: 16px; + text-align: left; + line-height: 1.2; + color: #000; + position: absolute; + z-index: 10000; +} +.picker__input { + cursor: default; +} +.picker__input.picker__input--active { + border-color: #0089ec; +} +.picker__holder { + width: 100%; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} +.picker { + width: 100%; +} +.picker__holder { + position: absolute; + background: #fff; + border: 1px solid #aaa; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + min-width: 176px; + max-width: 466px; + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; + max-height: 0; + -ms-filter: "alpha(Opacity=0)"; + filter: alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; + -webkit-transform: translateY(-1em) perspective(600px) rotateX(10deg); + -moz-transform: translateY(-1em) perspective(600px) rotateX(10deg); + transform: translateY(-1em) perspective(600px) rotateX(10deg); + -webkit-transition: all 0.15s ease-out, max-height 0 0.15s; + -moz-transition: all 0.15s ease-out, max-height 0 0.15s; + transition: all 0.15s ease-out, max-height 0 0.15s; +} +.picker--opened .picker__holder { + max-height: 25em; + -ms-filter: "alpha(Opacity=100)"; + filter: alpha(opacity=100); + -moz-opacity: 1; + opacity: 1; + -webkit-transform: translateY(0) perspective(600px) rotateX(0); + -moz-transform: translateY(0) perspective(600px) rotateX(0); + transform: translateY(0) perspective(600px) rotateX(0); + -webkit-transition: all 0.15s ease-out, max-height 0; + -moz-transition: all 0.15s ease-out, max-height 0; + transition: all 0.15s ease-out, max-height 0; + -webkit-box-shadow: 0 6px 18px 1px rgba(0, 0, 0, 0.12); + -moz-box-shadow: 0 6px 18px 1px rgba(0, 0, 0, 0.12); + box-shadow: 0 6px 18px 1px rgba(0, 0, 0, 0.12); +} +.picker__box { + padding: 0 1em; +} +.picker__header { + text-align: center; + position: relative; + margin-top: 0.75em; +} +.picker__month, +.picker__year { + font-weight: 500; + display: inline-block; + margin-left: .25em; + margin-right: 0.25em; +} +.picker__year { + color: #999; + font-size: .8em; + font-style: italic; +} +.picker__select--month, +.picker__select--year { + font-size: .8em; + border: 1px solid #b7b7b7; + height: 2.5em; + padding: .5em .25em; + margin-left: .25em; + margin-right: .25em; + margin-top: -0.5em; +} +.picker__select--month { + width: 35%; +} +.picker__select--year { + width: 22.5%; +} +.picker__select--month:focus, +.picker__select--year:focus { + border-color: #0089ec; +} +.picker__nav--prev, +.picker__nav--next { + position: absolute; + top: -0.33em; + padding: .5em 1.33em; + width: 1em; + height: 1em; +} +.picker__nav--prev { + left: -1em; + padding-right: 1.5em; +} +.picker__nav--next { + right: -1em; + padding-left: 1.5em; +} +.picker__nav--prev:before, +.picker__nav--next:before { + content: " "; + border-top: .5em solid transparent; + border-bottom: .5em solid transparent; + border-right: .75em solid #000; + width: 0; + height: 0; + display: block; + margin: 0 auto; +} +.picker__nav--next:before { + border-right: 0; + border-left: 0.75em solid #000000; +} +.picker__nav--prev:hover, +.picker__nav--next:hover { + cursor: pointer; + color: #000; + background: #b1dcfb; +} +.picker__nav--disabled, +.picker__nav--disabled:hover, +.picker__nav--disabled:before, +.picker__nav--disabled:before:hover { + cursor: default; + background: 0; + border-right-color: #f5f5f5; + border-left-color: #f5f5f5; +} +.picker__table { + text-align: center; + border-collapse: collapse; + border-spacing: 0; + table-layout: fixed; + font-size: inherit; + width: 100%; + margin-top: .75em; + margin-bottom: 0.5em; +} +@media (min-height: 33.875em) { + .picker__table { + margin-bottom: 0.75em; + } +} +.picker__table td { + margin: 0; + padding: 0; +} +.picker__weekday { + width: 14.285714286%; + font-size: .75em; + padding-bottom: .25em; + color: #999; + font-weight: 500; +} +@media (min-height: 33.875em) { + .picker__weekday { + padding-bottom: 0.5em; + } +} +.picker__day { + padding: .3125em 0; + font-weight: 200; + border: 1px solid transparent; +} +.picker__day--today { + color: #0089ec; + position: relative; +} +.picker__day--today:before { + content: " "; + position: absolute; + top: 2px; + right: 2px; + width: 0; + height: 0; + border-top: .5em solid #0059bc; + border-left: 0.5em solid transparent; +} +.picker__day--selected, +.picker__day--selected:hover { + border-color: #0089ec; +} +.picker__day--highlighted { + background: #b1dcfb; +} +.picker__day--disabled:before { + border-top-color: #aaaaaa; +} +.picker__day--outfocus { + color: #dddddd; +} +.picker__day--infocus:hover, +.picker__day--outfocus:hover { + cursor: pointer; + color: #000; + background: #b1dcfb; +} +.picker__day--highlighted:hover, +.picker--focused .picker__day--highlighted { + background: #0089ec; + color: #ffffff; +} +.picker__day--disabled, +.picker__day--disabled:hover { + background: #f5f5f5; + border-color: #f5f5f5; + color: #ddd; + cursor: default; +} +.picker__day--highlighted.picker__day--disabled, +.picker__day--highlighted.picker__day--disabled:hover { + background: #bbbbbb; +} +.picker__footer { + text-align: center; +} +.picker__button--today, +.picker__button--clear { + border: 1px solid #fff; + background: #fff; + font-size: .8em; + padding: .66em 0; + font-weight: 700; + width: 50%; + display: inline-block; + vertical-align: bottom; +} +.picker__button--today:hover, +.picker__button--clear:hover { + cursor: pointer; + color: #000; + background: #b1dcfb; + border-bottom-color: #b1dcfb; +} +.picker__button--today:focus, +.picker__button--clear:focus { + background: #b1dcfb; + border-color: #0089ec; + outline: 0; +} +.picker__button--today:before, +.picker__button--clear:before { + position: relative; + display: inline-block; + height: 0; +} +.picker__button--today:before { + content: " "; + margin-right: .45em; + top: -0.05em; + width: 0; + border-top: .66em solid #0059bc; + border-left: 0.66em solid transparent; +} +.picker__button--clear:before { + content: "\D7"; + margin-right: .35em; + top: -0.1em; + color: #e20; + vertical-align: top; + font-size: 1.1em; +} +.picker__list { + list-style: none; + padding: .75em 0 4.2em; + margin: 0; +} +.picker__list-item { + border-bottom: 1px solid #ddd; + border-top: 1px solid #ddd; + margin-bottom: -1px; + position: relative; + background: #fff; + padding: 0.75em 1.25em; +} +@media (min-height: 46.75em) { + .picker__list-item { + padding: 0.5em 1em; + } +} +.picker__list-item:hover { + cursor: pointer; + color: #000; + background: #b1dcfb; + border-color: #0089ec; + z-index: 10; +} +.picker__list-item--selected, +.picker__list-item--selected:hover { + border-color: #0089ec; + z-index: 10; +} +.picker__list-item--highlighted { + background: #b1dcfb; +} +.picker__list-item--highlighted:hover, +.picker--focused .picker__list-item--highlighted { + background: #0089ec; + color: #ffffff; +} +.picker__list-item--disabled, +.picker__list-item--disabled:hover, +.picker--focused .picker__list-item--disabled { + background: #f5f5f5; + border-color: #f5f5f5; + color: #ddd; + cursor: default; + border-color: #ddd; + z-index: auto; +} +.picker--time .picker__button--clear { + display: block; + width: 80%; + margin: 1em auto 0; + padding: 1em 1.25em; + background: 0; + border: 0; + font-weight: 500; + font-size: .67em; + text-align: center; + text-transform: uppercase; + color: #666666; +} +.picker--time .picker__button--clear:hover, +.picker--time .picker__button--clear:focus { + color: #000; + background: #b1dcfb; + background: #e20; + border-color: #e20; + cursor: pointer; + color: #fff; + outline: 0; +} +.picker--time .picker__button--clear:before { + top: -0.25em; + color: #666; + font-size: 1.25em; + font-weight: 700; +} +.picker--time .picker__button--clear:hover:before, +.picker--time .picker__button--clear:focus:before { + color: #ffffff; +} +.picker--time { + min-width: 256px; + max-width: 320px; +} +.picker--time .picker__holder { + background: #f2f2f2; +} +@media (min-height: 40.125em) { + .picker--time .picker__holder { + font-size: 0.875em; + } +} +.picker--time .picker__box { + padding: 0; +} +/*rules for the plot target div. These will be cascaded down to all plot elements according to css rules*/ +.jqplot-target { + position: relative; + color: #666666; + font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; + font-size: 1em; + /* height: 300px; + width: 400px;*/ +} +/*rules applied to all axes*/ +.jqplot-axis { + font-size: 0.75em; +} +.jqplot-xaxis { + margin-top: 10px; +} +.jqplot-x2axis { + margin-bottom: 10px; +} +.jqplot-yaxis { + margin-right: 10px; +} +.jqplot-y2axis, +.jqplot-y3axis, +.jqplot-y4axis, +.jqplot-y5axis, +.jqplot-y6axis, +.jqplot-y7axis, +.jqplot-y8axis, +.jqplot-y9axis, +.jqplot-yMidAxis { + margin-left: 10px; + margin-right: 0px; +} +/*rules applied to all axis tick divs*/ +.jqplot-axis-tick, +.jqplot-xaxis-tick, +.jqplot-yaxis-tick, +.jqplot-x2axis-tick, +.jqplot-y2axis-tick, +.jqplot-y3axis-tick, +.jqplot-y4axis-tick, +.jqplot-y5axis-tick, +.jqplot-y6axis-tick, +.jqplot-y7axis-tick, +.jqplot-y8axis-tick, +.jqplot-y9axis-tick, +.jqplot-yMidAxis-tick { + position: absolute; + white-space: pre; +} +.jqplot-xaxis-tick { + top: 0px; + /* initial position untill tick is drawn in proper place */ + left: 15px; + /* padding-top: 10px;*/ + text-align: center; + vertical-align: top; +} +.jqplot-x2axis-tick { + bottom: 0px; + /* initial position untill tick is drawn in proper place */ + left: 15px; + /* padding-bottom: 10px;*/ + vertical-align: bottom; +} +.jqplot-yaxis-tick { + right: 0px; + /* initial position untill tick is drawn in proper place */ + top: 15px; + /* padding-right: 10px;*/ + text-align: right; +} +.jqplot-yaxis-tick.jqplot-breakTick { + right: -20px; + margin-right: 0px; + padding: 1px 5px 1px 5px; + /* background-color: white;*/ + z-index: 2; + font-size: 1.5em; +} +.jqplot-y2axis-tick, +.jqplot-y3axis-tick, +.jqplot-y4axis-tick, +.jqplot-y5axis-tick, +.jqplot-y6axis-tick, +.jqplot-y7axis-tick, +.jqplot-y8axis-tick, +.jqplot-y9axis-tick { + left: 0px; + /* initial position untill tick is drawn in proper place */ + top: 15px; + /* padding-left: 10px;*/ + /* padding-right: 15px;*/ + text-align: left; +} +.jqplot-yMidAxis-tick { + text-align: center; + white-space: nowrap; +} +.jqplot-xaxis-label { + margin-top: 10px; + font-size: 11pt; + position: absolute; +} +.jqplot-x2axis-label { + margin-bottom: 10px; + font-size: 11pt; + position: absolute; +} +.jqplot-yaxis-label { + margin-right: 10px; + /* text-align: center;*/ + font-size: 11pt; + position: absolute; +} +.jqplot-yMidAxis-label { + font-size: 11pt; + position: absolute; +} +.jqplot-y2axis-label, +.jqplot-y3axis-label, +.jqplot-y4axis-label, +.jqplot-y5axis-label, +.jqplot-y6axis-label, +.jqplot-y7axis-label, +.jqplot-y8axis-label, +.jqplot-y9axis-label { + /* text-align: center;*/ + font-size: 11pt; + margin-left: 10px; + position: absolute; +} +.jqplot-meterGauge-tick { + font-size: 0.75em; + color: #999999; +} +.jqplot-meterGauge-label { + font-size: 1em; + color: #999999; +} +table.jqplot-table-legend { + margin-top: 12px; + margin-bottom: 12px; + margin-left: 12px; + margin-right: 12px; +} +table.jqplot-table-legend, +table.jqplot-cursor-legend { + background-color: rgba(255, 255, 255, 0.6); + border: 1px solid #cccccc; + position: absolute; + font-size: 0.75em; +} +td.jqplot-table-legend { + vertical-align: middle; +} +/* +These rules could be used instead of assigning +element styles and relying on js object properties. +*/ +/* +td.jqplot-table-legend-swatch { + padding-top: 0.5em; + text-align: center; +} + +tr.jqplot-table-legend:first td.jqplot-table-legend-swatch { + padding-top: 0px; +} +*/ +td.jqplot-seriesToggle:hover, +td.jqplot-seriesToggle:active { + cursor: pointer; +} +.jqplot-table-legend .jqplot-series-hidden { + text-decoration: line-through; +} +div.jqplot-table-legend-swatch-outline { + border: 1px solid #cccccc; + padding: 1px; +} +div.jqplot-table-legend-swatch { + width: 0px; + height: 0px; + border-top-width: 5px; + border-bottom-width: 5px; + border-left-width: 6px; + border-right-width: 6px; + border-top-style: solid; + border-bottom-style: solid; + border-left-style: solid; + border-right-style: solid; +} +.jqplot-title { + top: 0px; + left: 0px; + padding-bottom: 0.5em; + font-size: 1.7em; +} +table.jqplot-cursor-tooltip { + border: 1px solid #cccccc; + font-size: 0.75em; +} +.jqplot-cursor-tooltip { + border: 1px solid #cccccc; + font-size: 0.75em; + white-space: nowrap; + background: rgba(208, 208, 208, 0.5); + padding: 1px; +} +.jqplot-highlighter-tooltip, +.jqplot-canvasOverlay-tooltip { + border: 1px solid #cccccc; + font-size: 0.75em; + white-space: nowrap; + background: rgba(208, 208, 208, 0.5); + padding: 1px; +} +.jqplot-point-label { + font-size: 0.75em; + z-index: 2; +} +td.jqplot-cursor-legend-swatch { + vertical-align: middle; + text-align: center; +} +div.jqplot-cursor-legend-swatch { + width: 1.2em; + height: 0.7em; +} +.jqplot-error { + /* Styles added to the plot target container when there is an error go here.*/ + text-align: center; +} +.jqplot-error-message { + /* Styling of the custom error message div goes here.*/ + position: relative; + top: 46%; + display: inline-block; +} +div.jqplot-bubble-label { + font-size: 0.8em; + /* background: rgba(90%, 90%, 90%, 0.15);*/ + padding-left: 2px; + padding-right: 2px; + color: #333333; +} +div.jqplot-bubble-label.jqplot-bubble-label-highlight { + background: rgba(230, 230, 230, 0.7); +} +div.jqplot-noData-container { + text-align: center; + background-color: rgba(245, 245, 245, 0.3); +} +.jqplot-table-legend { + width: initial; + left: 27px !important; + border: 0; + background-color: transparent; +} +.jqplot-table-legend tr { + display: block; + float: left; + border: 0; +} +.jqplot-table-legend tr td { + padding: 4px !important; + border: 0; + background: transparent; + line-height: 24px; +} +.jqplot-table-legend tr td .jqplot-table-legend-swatch-outline { + border: 0; + padding: 0; +} +.jqplot-table-legend tr td .jqplot-table-legend-swatch { + border-width: 1px; + border-style: solid; + width: 19px; + height: 19px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.ps-container .ps-scrollbar-x-rail { + position: absolute; + /* please don't change 'position' */ + bottom: 3px; + /* there must be 'bottom' for ps-scrollbar-x-rail */ + height: 8px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + opacity: 0; + filter: alpha(opacity=0); + -o-transition: background-color 0.2s linear, opacity 0.2s linear; + -webkit-transition: background-color 0.2s linear, opacity 0.2s linear; + -moz-transition: background-color 0.2s linear, opacity 0.2s linear; + transition: background-color 0.2s linear, opacity 0.2s linear; +} +.ps-container:hover .ps-scrollbar-x-rail, +.ps-container.hover .ps-scrollbar-x-rail { + opacity: 0.6; + filter: alpha(opacity=60); +} +.ps-container .ps-scrollbar-x-rail:hover, +.ps-container .ps-scrollbar-x-rail.hover { + background-color: #eee; + opacity: 0.9; + filter: alpha(opacity=90); +} +.ps-container .ps-scrollbar-x-rail.in-scrolling { + background-color: #eee; + opacity: 0.9; + filter: alpha(opacity=90); +} +.ps-container .ps-scrollbar-y-rail { + position: absolute; + /* please don't change 'position' */ + right: 3px; + /* there must be 'right' for ps-scrollbar-y-rail */ + width: 8px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + opacity: 0; + filter: alpha(opacity = 0); + -o-transition: background-color 0.2s linear, opacity 0.2s linear; + -webkit-transition: background-color 0.2s linear, opacity 0.2s linear; + -moz-transition: background-color 0.2s linear, opacity 0.2s linear; + transition: background-color 0.2s linear, opacity 0.2s linear; +} +.ps-container:hover .ps-scrollbar-y-rail, +.ps-container.hover .ps-scrollbar-y-rail { + opacity: 0.6; + filter: alpha(opacity=60); +} +.ps-container .ps-scrollbar-y-rail:hover, +.ps-container .ps-scrollbar-y-rail.hover { + background-color: #eee; + opacity: 0.9; + filter: alpha(opacity=90); +} +.ps-container .ps-scrollbar-y-rail.in-scrolling { + background-color: #eee; + opacity: 0.9; + filter: alpha(opacity=90); +} +.ps-container .ps-scrollbar-x { + position: absolute; + /* please don't change 'position' */ + bottom: 0; + /* there must be 'bottom' for ps-scrollbar-x */ + height: 8px; + background-color: #aaa; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -o-transition: background-color 0.2s linear; + -webkit-transition: background-color 0.2s linear; + -moz-transition: background-color 0.2s linear; + transition: background-color 0.2s linear; +} +.ps-container.ie6 .ps-scrollbar-x { + font-size: 0; + /* fixed scrollbar height in xp sp3 ie6 */ +} +.ps-container .ps-scrollbar-x-rail:hover .ps-scrollbar-x, +.ps-container .ps-scrollbar-x-rail.hover .ps-scrollbar-x { + background-color: #999; +} +.ps-container .ps-scrollbar-y { + position: absolute; + /* please don't change 'position' */ + right: 0; + /* there must be 'right' for ps-scrollbar-y */ + width: 8px; + background-color: #aaa; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -o-transition: background-color 0.2s linear; + -webkit-transition: background-color 0.2s linear; + -moz-transition: background-color 0.2s linear; + transition: background-color 0.2s linear; +} +.ps-container.ie6 .ps-scrollbar-y { + font-size: 0; + /* fixed scrollbar height in xp sp3 ie6 */ +} +.ps-container .ps-scrollbar-y-rail:hover .ps-scrollbar-y, +.ps-container .ps-scrollbar-y-rail.hover .ps-scrollbar-y { + background-color: #999; +} +.ps-container.ie .ps-scrollbar-x, +.ps-container.ie .ps-scrollbar-y { + visibility: hidden; +} +.ps-container.ie:hover .ps-scrollbar-x, +.ps-container.ie:hover .ps-scrollbar-y, +.ps-container.ie.hover .ps-scrollbar-x, +.ps-container.ie.hover .ps-scrollbar-y { + visibility: visible; +} +.chardinjs-overlay { + display: none; + position: absolute; + z-index: 999999; + background-color: black; + opacity: 0.8; + filter: alpha(opacity=80); +} +.chardinjs-helper-layer { + position: absolute; + z-index: 9999998; + color: white; +} +.chardinjs-helper-layer.chardinjs-left { + border-left: solid white 1px; + margin-left: -10px; +} +.chardinjs-helper-layer.chardinjs-right { + border-right: solid white 1px; + padding-right: 10px; +} +.chardinjs-helper-layer.chardinjs-bottom { + border-bottom: solid white 1px; + padding-bottom: 10px; +} +.chardinjs-helper-layer.chardinjs-top { + border-top: solid white 1px; + padding-top: 10px; +} +.chardinjs-tooltip { + position: absolute; + -webkit-transition: opacity 0.1s ease-out; + -moz-transition: opacity 0.1s ease-out; + -o-transition: opacity 0.1s ease-out; + transition: opacity 0.1s ease-out; + max-width: 200px; +} +.chardinjs-tooltip.chardinjs-left { + margin-left: -135px; + padding-right: 10px; +} +.chardinjs-tooltip.chardinjs-right { + margin-right: -135px; + padding-left: 10px; +} +.chardinjs-tooltip.chardinjs-bottom { + margin-bottom: -50px; + padding-top: 10px; +} +.chardinjs-tooltip.chardinjs-top { + margin-top: -50px; + padding-bottom: 10px; +} +.chardinjs-tooltip.chardinjs-right:before, +.chardinjs-tooltip.chardinjs-left:after, +.chardinjs-tooltip.chardinjs-bottom:before, +.chardinjs-tooltip.chardinjs-top:after { + content: "."; + display: inline-block; + background-color: white; + height: 1px; + overflow: hidden; + position: absolute; +} +.chardinjs-tooltip.chardinjs-right:before, +.chardinjs-tooltip.chardinjs-left:after { + width: 100px; + top: 50%; +} +.chardinjs-tooltip.chardinjs-bottom:before, +.chardinjs-tooltip.chardinjs-top:after { + width: 1px; + height: 50px; + left: 50%; +} +.chardinjs-tooltip.chardinjs-bottom:before { + top: -50px; +} +.chardinjs-tooltip.chardinjs-top:after { + bottom: -50px; +} +.chardinjs-tooltip.chardinjs-right:before { + left: -100px; +} +.chardinjs-tooltip.chardinjs-left:after { + right: -100px; +} +.chardinjs-show-element { + z-index: 9999999 !important; + opacity: 0.8; + filter: alpha(opacity=80); +} +.chardinjs-relative-position { + position: relative; +} +/* required styles */ +.leaflet-map-pane, +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-tile-pane, +.leaflet-tile-container, +.leaflet-overlay-pane, +.leaflet-shadow-pane, +.leaflet-marker-pane, +.leaflet-popup-pane, +.leaflet-overlay-pane svg, +.leaflet-zoom-box, +.leaflet-image-layer, +.leaflet-layer { + position: absolute; + left: 0; + top: 0; +} +.leaflet-container { + overflow: hidden; + -ms-touch-action: none; +} +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + -webkit-user-drag: none; +} +.leaflet-marker-icon, +.leaflet-marker-shadow { + display: block; +} +.leaflet-container img { + max-width: none ! important; +} +.leaflet-container img.leaflet-image-layer { + max-width: 15000px ! important; +} +.leaflet-tile { + filter: inherit; + visibility: hidden; +} +.leaflet-tile-loaded { + visibility: inherit; +} +.leaflet-zoom-box { + width: 0; + height: 0; +} +.leaflet-overlay-pane svg { + -moz-user-select: none; +} +.leaflet-tile-pane { + z-index: 2; +} +.leaflet-objects-pane { + z-index: 3; +} +.leaflet-overlay-pane { + z-index: 4; +} +.leaflet-shadow-pane { + z-index: 5; +} +.leaflet-marker-pane { + z-index: 6; +} +.leaflet-popup-pane { + z-index: 7; +} +.leaflet-vml-shape { + width: 1px; + height: 1px; +} +.lvml { + behavior: url(#default#VML); + display: inline-block; + position: absolute; +} +.leaflet-control { + position: relative; + z-index: 7; + pointer-events: auto; +} +.leaflet-top, +.leaflet-bottom { + position: absolute; + z-index: 1000; + pointer-events: none; +} +.leaflet-top { + top: 0; +} +.leaflet-right { + right: 0; +} +.leaflet-bottom { + bottom: 0; +} +.leaflet-left { + left: 0; +} +.leaflet-control { + float: left; + clear: both; +} +.leaflet-right .leaflet-control { + float: right; +} +.leaflet-top .leaflet-control { + margin-top: 10px; +} +.leaflet-bottom .leaflet-control { + margin-bottom: 10px; +} +.leaflet-left .leaflet-control { + margin-left: 10px; +} +.leaflet-right .leaflet-control { + margin-right: 10px; +} +.leaflet-fade-anim .leaflet-tile, +.leaflet-fade-anim .leaflet-popup { + opacity: 0; + -webkit-transition: opacity 0.2s linear; + -moz-transition: opacity 0.2s linear; + -o-transition: opacity 0.2s linear; + transition: opacity 0.2s linear; +} +.leaflet-fade-anim .leaflet-tile-loaded, +.leaflet-fade-anim .leaflet-map-pane .leaflet-popup { + opacity: 1; +} +.leaflet-zoom-anim .leaflet-zoom-animated { + -webkit-transition: -webkit-transform 0.25s cubic-bezier(0, 0, 0.25, 1); + -moz-transition: -moz-transform 0.25s cubic-bezier(0, 0, 0.25, 1); + -o-transition: -o-transform 0.25s cubic-bezier(0, 0, 0.25, 1); + transition: transform 0.25s cubic-bezier(0, 0, 0.25, 1); +} +.leaflet-zoom-anim .leaflet-tile, +.leaflet-pan-anim .leaflet-tile, +.leaflet-touching .leaflet-zoom-animated { + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} +.leaflet-zoom-anim .leaflet-zoom-hide { + visibility: hidden; +} +.leaflet-clickable { + cursor: pointer; +} +.leaflet-container { + cursor: -webkit-grab; + cursor: -moz-grab; +} +.leaflet-popup-pane, +.leaflet-control { + cursor: auto; +} +.leaflet-dragging .leaflet-container, +.leaflet-dragging .leaflet-clickable { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; +} +.leaflet-container { + background: #ddd; + outline: 0; +} +.leaflet-container a { + color: #0078A8; +} +.leaflet-container a.leaflet-active { + outline: 2px solid orange; +} +.leaflet-zoom-box { + border: 2px dotted #38f; + background: rgba(255, 255, 255, 0.5); +} +.leaflet-container { + font: 12px / 1.5 "Helvetica Neue", Arial, Helvetica, sans-serif; +} +.leaflet-bar { + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.65); + border-radius: 4px; +} +.leaflet-bar a, +.leaflet-bar a:hover { + background-color: #fff; + border-bottom: 1px solid #ccc; + width: 26px; + height: 26px; + line-height: 26px; + display: block; + text-align: center; + text-decoration: none; + color: black; +} +.leaflet-bar a, +.leaflet-control-layers-toggle { + background-position: 50% 50%; + background-repeat: no-repeat; + display: block; +} +.leaflet-bar a:hover { + background-color: #f4f4f4; +} +.leaflet-bar a:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.leaflet-bar a:last-child { + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-bottom: none; +} +.leaflet-bar a.leaflet-disabled { + cursor: default; + background-color: #f4f4f4; + color: #bbb; +} +.leaflet-touch .leaflet-bar a { + width: 30px; + height: 30px; + line-height: 30px; +} +.leaflet-control-zoom-in, +.leaflet-control-zoom-out { + font: bold 18px 'Lucida Console', Monaco, monospace; + text-indent: 1px; +} +.leaflet-control-zoom-out { + font-size: 20px; +} +.leaflet-touch .leaflet-control-zoom-in { + font-size: 22px; +} +.leaflet-touch .leaflet-control-zoom-out { + font-size: 24px; +} +.leaflet-control-layers { + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.4); + background: #fff; + border-radius: 5px; +} +.leaflet-control-layers-toggle { + background-image: url(images/layers.png); + width: 36px; + height: 36px; +} +.leaflet-retina .leaflet-control-layers-toggle { + background-image: url(images/layers-2x.png); + background-size: 26px 26px; +} +.leaflet-touch .leaflet-control-layers-toggle { + width: 44px; + height: 44px; +} +.leaflet-control-layers .leaflet-control-layers-list, +.leaflet-control-layers-expanded .leaflet-control-layers-toggle { + display: none; +} +.leaflet-control-layers-expanded .leaflet-control-layers-list { + display: block; + position: relative; +} +.leaflet-control-layers-expanded { + padding: 6px 10px 6px 6px; + color: #333; + background: #fff; +} +.leaflet-control-layers-selector { + margin-top: 2px; + position: relative; + top: 1px; +} +.leaflet-control-layers label { + display: block; +} +.leaflet-control-layers-separator { + height: 0; + border-top: 1px solid #ddd; + margin: 5px -10px 5px -6px; +} +.leaflet-container .leaflet-control-attribution { + background: #fff; + background: rgba(255, 255, 255, 0.7); + margin: 0; +} +.leaflet-control-attribution, +.leaflet-control-scale-line { + padding: 0 5px; + color: #333; +} +.leaflet-control-attribution a { + text-decoration: none; +} +.leaflet-control-attribution a:hover { + text-decoration: underline; +} +.leaflet-container .leaflet-control-attribution, +.leaflet-container .leaflet-control-scale { + font-size: 11px; +} +.leaflet-left .leaflet-control-scale { + margin-left: 5px; +} +.leaflet-bottom .leaflet-control-scale { + margin-bottom: 5px; +} +.leaflet-control-scale-line { + border: 2px solid #777; + border-top: none; + line-height: 1.1; + padding: 2px 5px 1px; + font-size: 11px; + white-space: nowrap; + overflow: hidden; + -moz-box-sizing: content-box; + box-sizing: content-box; + background: #fff; + background: rgba(255, 255, 255, 0.5); +} +.leaflet-control-scale-line:not(:first-child) { + border-top: 2px solid #777; + border-bottom: none; + margin-top: -2px; +} +.leaflet-control-scale-line:not(:first-child):not(:last-child) { + border-bottom: 2px solid #777; +} +.leaflet-touch .leaflet-control-attribution, +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + box-shadow: none; +} +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + border: 2px solid rgba(0, 0, 0, 0.2); + background-clip: padding-box; +} +.leaflet-popup { + position: absolute; + text-align: center; +} +.leaflet-popup-content-wrapper { + padding: 1px; + text-align: left; + border-radius: 12px; +} +.leaflet-popup-content { + margin: 13px 19px; + line-height: 1.4; +} +.leaflet-popup-content p { + margin: 18px 0; +} +.leaflet-popup-tip-container { + margin: 0 auto; + width: 40px; + height: 20px; + position: relative; + overflow: hidden; +} +.leaflet-popup-tip { + width: 17px; + height: 17px; + padding: 1px; + margin: -10px auto 0; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.leaflet-popup-content-wrapper, +.leaflet-popup-tip { + background: white; + box-shadow: 0 3px 14px rgba(0, 0, 0, 0.4); +} +.leaflet-container a.leaflet-popup-close-button { + position: absolute; + top: 0; + right: 0; + padding: 4px 4px 0 0; + text-align: center; + width: 18px; + height: 14px; + font: 16px / 14px Tahoma, Verdana, sans-serif; + color: #c3c3c3; + text-decoration: none; + font-weight: bold; + background: transparent; +} +.leaflet-container a.leaflet-popup-close-button:hover { + color: #999; +} +.leaflet-popup-scrolled { + overflow: auto; + border-bottom: 1px solid #ddd; + border-top: 1px solid #ddd; +} +.leaflet-oldie .leaflet-popup-content-wrapper { + zoom: 1; +} +.leaflet-oldie .leaflet-popup-tip { + width: 24px; + margin: 0 auto; + -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; + filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); +} +.leaflet-oldie .leaflet-popup-tip-container { + margin-top: -1px; +} +.leaflet-oldie .leaflet-control-zoom, +.leaflet-oldie .leaflet-control-layers, +.leaflet-oldie .leaflet-popup-content-wrapper, +.leaflet-oldie .leaflet-popup-tip { + border: 1px solid #999; +} +.leaflet-div-icon { + background: #fff; + border: 1px solid #666; +} +.leaflet-cluster-anim .leaflet-marker-icon, +.leaflet-cluster-anim .leaflet-marker-shadow { + -webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in; + -moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in; + -o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in; + transition: transform 0.3s ease-out, opacity 0.3s ease-in; +} +.marker-cluster-small { + background-color: rgba(181, 226, 140, 0.6); +} +.marker-cluster-small div { + background-color: rgba(110, 204, 57, 0.6); +} +.marker-cluster-medium { + background-color: rgba(241, 211, 87, 0.6); +} +.marker-cluster-medium div { + background-color: rgba(240, 194, 12, 0.6); +} +.marker-cluster-large { + background-color: rgba(253, 156, 115, 0.6); +} +.marker-cluster-large div { + background-color: rgba(241, 128, 23, 0.6); +} +.leaflet-oldie .marker-cluster-small { + background-color: #b5e28c; +} +.leaflet-oldie .marker-cluster-small div { + background-color: #6ecc39; +} +.leaflet-oldie .marker-cluster-medium { + background-color: #f1d357; +} +.leaflet-oldie .marker-cluster-medium div { + background-color: #f0c20c; +} +.leaflet-oldie .marker-cluster-large { + background-color: #fd9c73; +} +.leaflet-oldie .marker-cluster-large div { + background-color: #f18017; +} +.marker-cluster { + background-clip: padding-box; + border-radius: 20px; +} +.marker-cluster div { + width: 30px; + height: 30px; + margin-left: 5px; + margin-top: 5px; + text-align: center; + border-radius: 15px; + font: 12px "Helvetica Neue", Arial, Helvetica, sans-serif; +} +.marker-cluster span { + line-height: 30px; +} +/* Magnific Popup CSS */ +.mfp-bg { + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1042; + overflow: hidden; + position: fixed; + background: #0b0b0b; + opacity: 0.8; + filter: alpha(opacity=80); +} +.mfp-wrap { + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1102; + position: fixed; + outline: none !important; + -webkit-backface-visibility: hidden; +} +.mfp-container { + text-align: center; + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + padding: 0 8px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.mfp-container:before { + content: ''; + display: inline-block; + height: 100%; + vertical-align: middle; +} +.mfp-align-top .mfp-container:before { + display: none; +} +.mfp-content { + position: relative; + display: inline-block; + vertical-align: middle; + margin: 0 auto; + text-align: left; + z-index: 1045; +} +.mfp-inline-holder .mfp-content, +.mfp-ajax-holder .mfp-content { + width: 100%; + cursor: auto; +} +.mfp-ajax-cur { + cursor: progress; +} +.mfp-zoom-out-cur, +.mfp-zoom-out-cur .mfp-image-holder .mfp-close { + cursor: -moz-zoom-out; + cursor: -webkit-zoom-out; + cursor: zoom-out; +} +.mfp-zoom { + cursor: pointer; + cursor: -webkit-zoom-in; + cursor: -moz-zoom-in; + cursor: zoom-in; +} +.mfp-auto-cursor .mfp-content { + cursor: auto; +} +.mfp-close, +.mfp-arrow, +.mfp-preloader, +.mfp-counter { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.mfp-loading.mfp-figure { + display: none; +} +.mfp-hide { + display: none !important; +} +.mfp-preloader { + color: #cccccc; + position: absolute; + top: 50%; + width: auto; + text-align: center; + margin-top: -0.8em; + left: 8px; + right: 8px; + z-index: 1044; +} +.mfp-preloader a { + color: #cccccc; +} +.mfp-preloader a:hover { + color: white; +} +.mfp-s-ready .mfp-preloader { + display: none; +} +.mfp-s-error .mfp-content { + display: none; +} +button.mfp-close, +button.mfp-arrow { + overflow: visible; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; + display: block; + outline: none; + padding: 0; + z-index: 1046; + -webkit-box-shadow: none; + box-shadow: none; +} +button::-moz-focus-inner { + padding: 0; + border: 0; +} +.mfp-close { + width: 44px; + height: 44px; + line-height: 44px; + position: absolute; + right: 0; + top: 0; + text-decoration: none; + text-align: center; + opacity: 0.65; + filter: alpha(opacity=65); + padding: 0 0 18px 10px; + color: white; + font-style: normal; + font-size: 28px; + font-family: Arial, Baskerville, monospace; +} +.mfp-close:hover, +.mfp-close:focus { + opacity: 1; + filter: alpha(opacity=100); +} +.mfp-close:active { + top: 1px; +} +.mfp-close-btn-in .mfp-close { + color: #333333; +} +.mfp-image-holder .mfp-close, +.mfp-iframe-holder .mfp-close { + color: white; + right: -6px; + text-align: right; + padding-right: 6px; + width: 100%; +} +.mfp-counter { + position: absolute; + top: 0; + right: 0; + color: #cccccc; + font-size: 12px; + line-height: 18px; +} +.mfp-arrow { + position: absolute; + opacity: 0.65; + filter: alpha(opacity=65); + margin: 0; + top: 50%; + margin-top: -55px; + padding: 0; + width: 90px; + height: 110px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +.mfp-arrow:active { + margin-top: -54px; +} +.mfp-arrow:hover, +.mfp-arrow:focus { + opacity: 1; + filter: alpha(opacity=100); +} +.mfp-arrow:before, +.mfp-arrow:after, +.mfp-arrow .mfp-b, +.mfp-arrow .mfp-a { + content: ''; + display: block; + width: 0; + height: 0; + position: absolute; + left: 0; + top: 0; + margin-top: 35px; + margin-left: 35px; + border: medium inset transparent; +} +.mfp-arrow:after, +.mfp-arrow .mfp-a { + border-top-width: 13px; + border-bottom-width: 13px; + top: 8px; +} +.mfp-arrow:before, +.mfp-arrow .mfp-b { + border-top-width: 21px; + border-bottom-width: 21px; + opacity: 0.7; +} +.mfp-arrow-left { + left: 0; +} +.mfp-arrow-left:after, +.mfp-arrow-left .mfp-a { + border-right: 17px solid white; + margin-left: 31px; +} +.mfp-arrow-left:before, +.mfp-arrow-left .mfp-b { + margin-left: 25px; + border-right: 27px solid #3f3f3f; +} +.mfp-arrow-right { + right: 0; +} +.mfp-arrow-right:after, +.mfp-arrow-right .mfp-a { + border-left: 17px solid white; + margin-left: 39px; +} +.mfp-arrow-right:before, +.mfp-arrow-right .mfp-b { + border-left: 27px solid #3f3f3f; +} +.mfp-iframe-holder { + padding-top: 40px; + padding-bottom: 40px; +} +.mfp-iframe-holder .mfp-content { + line-height: 0; + width: 100%; + max-width: 900px; +} +.mfp-iframe-holder .mfp-close { + top: -40px; +} +.mfp-iframe-scaler { + width: 100%; + height: 0; + overflow: hidden; + padding-top: 56.25%; +} +.mfp-iframe-scaler iframe { + position: absolute; + display: block; + top: 0; + left: 0; + width: 100%; + height: 100%; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); + background: black; +} +/* Main image in popup */ +img.mfp-img { + width: auto; + max-width: 100%; + height: auto; + display: block; + line-height: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 40px 0 40px; + margin: 0 auto; +} +/* The shadow behind the image */ +.mfp-figure { + line-height: 0; +} +.mfp-figure:after { + content: ''; + position: absolute; + left: 0; + top: 40px; + bottom: 40px; + display: block; + right: 0; + width: auto; + height: auto; + z-index: -1; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); + background: #444444; +} +.mfp-figure small { + color: #bdbdbd; + display: block; + font-size: 12px; + line-height: 14px; +} +.mfp-figure figure { + margin: 0; +} +.mfp-bottom-bar { + margin-top: -36px; + position: absolute; + top: 100%; + left: 0; + width: 100%; + cursor: auto; +} +.mfp-title { + text-align: left; + line-height: 18px; + color: #f3f3f3; + word-wrap: break-word; + padding-right: 36px; +} +.mfp-image-holder .mfp-content { + max-width: 100%; +} +.mfp-gallery .mfp-image-holder .mfp-figure { + cursor: pointer; +} +@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) { + /** + * Remove all paddings around the image on small screen + */ + .mfp-img-mobile .mfp-image-holder { + padding-left: 0; + padding-right: 0; + } + .mfp-img-mobile img.mfp-img { + padding: 0; + } + .mfp-img-mobile .mfp-figure:after { + top: 0; + bottom: 0; + } + .mfp-img-mobile .mfp-figure small { + display: inline; + margin-left: 5px; + } + .mfp-img-mobile .mfp-bottom-bar { + background: rgba(0, 0, 0, 0.6); + bottom: 0; + margin: 0; + top: auto; + padding: 3px 5px; + position: fixed; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .mfp-img-mobile .mfp-bottom-bar:empty { + padding: 0; + } + .mfp-img-mobile .mfp-counter { + right: 5px; + top: 3px; + } + .mfp-img-mobile .mfp-close { + top: 0; + right: 0; + width: 35px; + height: 35px; + line-height: 35px; + background: rgba(0, 0, 0, 0.6); + position: fixed; + text-align: center; + padding: 0; + } +} +@media all and (max-width: 900px) { + .mfp-arrow { + -webkit-transform: scale(0.75); + transform: scale(0.75); + } + .mfp-arrow-left { + -webkit-transform-origin: 0; + transform-origin: 0; + } + .mfp-arrow-right { + -webkit-transform-origin: 100%; + transform-origin: 100%; + } + .mfp-container { + padding-left: 6px; + padding-right: 6px; + } +} +.mfp-ie7 .mfp-img { + padding: 0; +} +.mfp-ie7 .mfp-bottom-bar { + width: 600px; + left: 50%; + margin-left: -300px; + margin-top: 5px; + padding-bottom: 5px; +} +.mfp-ie7 .mfp-container { + padding: 0; +} +.mfp-ie7 .mfp-content { + padding-top: 44px; +} +.mfp-ie7 .mfp-close { + top: 0; + right: 0; + padding-top: 0; +} +/* + +====== Zoom effect ====== + +*/ +.mfp-zoom-in { + /* start state */ + /* animate in */ + /* animate out */ +} +.mfp-zoom-in .mfp-with-anim { + opacity: 0; + filter: alpha(opacity=0); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + -webkit-transform: scale(0.1); + -moz-transform: scale(0.1); + -ms-transform: scale(0.1); + -o-transform: scale(0.1); + transform: scale(0.1); +} +.mfp-zoom-in.mfp-bg { + opacity: 0; + filter: alpha(opacity=0); + -webkit-transition: all 0.3s ease-out; + -moz-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; +} +.mfp-zoom-in.mfp-ready .mfp-with-anim { + opacity: 1; + filter: alpha(opacity=100); + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); +} +.mfp-zoom-in.mfp-ready.mfp-bg { + opacity: 0.8; + filter: alpha(opacity=80); +} +.mfp-zoom-in.mfp-removing .mfp-with-anim { + transform: scale(0.1); + opacity: 0; + filter: alpha(opacity=0); +} +.mfp-zoom-in.mfp-removing.mfp-bg { + opacity: 0; + filter: alpha(opacity=0); +} +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +.sprite-site-icons.none { + background-image: none; +} +.sprite-site-icons.soc-0-percent { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -96px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.soc-0-percent { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.soc-25-percent { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -144px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.soc-25-percent { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.soc-50-percent { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -192px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.soc-50-percent { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.soc-75-percent { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -240px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.soc-75-percent { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.soc-100-percent { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -288px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.soc-100-percent { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.consumption { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -336px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.consumption { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.charging { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -384px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.charging { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-sunny { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -96px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-sunny { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-cloudy { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -144px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-cloudy { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-cloudy-with-rain { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -192px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-cloudy-with-rain { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-partially-cloudy-with-rain { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -240px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-partially-cloudy-with-rain { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-partially-cloudy { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -288px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-partially-cloudy { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-thunderstorm { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -336px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-thunderstorm { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.clock { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -384px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.clock { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-thunderstorm-with-rain { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -96px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-thunderstorm-with-rain { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-clear-night { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -144px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-clear-night { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-partially-cloudy-night { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -192px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-partially-cloudy-night { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-snow { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -240px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-snow { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-snow-and-rain { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -288px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-snow-and-rain { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-fog { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -336px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-fog { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.light-bulb { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -384px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.light-bulb { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.mains-on { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -336px -264px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.mains-on { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.mains-off { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -384px -264px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.mains-off { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.device-solar-charger { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -96px -312px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.device-solar-charger { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.device-battery-monitor { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -144px -312px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.device-battery-monitor { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.device-gateway { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -192px -312px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.device-gateway { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.device-ve-bus { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -240px -312px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.device-ve-bus { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.device-pv-inverter { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -288px -312px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.device-pv-inverter { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.device-io-extender { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -336px -312px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.device-io-extender { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.device-fluid-monitor { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -384px -312px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.device-fluid-monitor { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons { + /**************************************************************************************************************************************** + 'Deprecated triangles' (start) + + The triangles on lines 11, 12 and 13 should normally not be used. Instead use the triangles from lines 15, 16 and 17 and give the + background a color. That way we can use transitions for these triangles by changing the background color. For an example see the + dropdowns in the styleguide. + ****************************************************************************************************************************************/ + /**************************************************************************************************************************************** + 'Deprecated triangles' (end) + ****************************************************************************************************************************************/ +} +.sprite-icons.pie-chart-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px 0px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.pie-chart-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.pie-chart-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px 0px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.pie-chart-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.graph-bars-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -24px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.graph-bars-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.graph-bars-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -24px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.graph-bars-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.lightning-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -48px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.lightning-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.lightning-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -48px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.lightning-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.sun-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -72px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.sun-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.sun-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -72px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.sun-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.sun-orange { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -72px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.sun-orange { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.graph-line-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -96px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.graph-line-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.graph-line-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -96px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.graph-line-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.graph-line-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -96px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.graph-line-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.graph-line-orange { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -72px -96px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.graph-line-orange { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.wrench-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.wrench-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.wrench-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.wrench-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.cross-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -144px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.cross-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.cross-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -144px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.cross-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.clock-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.clock-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.clock-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.clock-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.clock-red { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.clock-red { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.clock-white { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -72px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.clock-white { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.alert-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -192px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.alert-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.alert-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -192px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.alert-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.alert-red { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -192px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.alert-red { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.checkmark-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.checkmark-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.checkmark-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.checkmark-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-up-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -240px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-up-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-up-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -240px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-up-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-up-middle { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -240px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-up-middle { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-down-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -264px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-down-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-down-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -264px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-down-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-down-middle { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -264px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-down-middle { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-right-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -288px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-right-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-right-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -288px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-right-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-right-middle { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -288px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-right-middle { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-right-white { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -72px -288px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-right-white { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.vertical-lines-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -312px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.vertical-lines-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.vertical-lines-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -312px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.vertical-lines-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-up-transparent-white { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -336px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-up-transparent-white { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-down-transparent-white { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -336px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-down-transparent-white { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-right-transparent-white { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -336px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-right-transparent-white { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-up-transparent-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -360px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-up-transparent-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-down-transparent-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -360px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-down-transparent-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-right-transparent-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -360px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-right-transparent-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-up-transparent-red { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -384px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-up-transparent-red { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-down-transparent-red { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -384px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-down-transparent-red { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-right-transparent-red { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -384px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-right-transparent-red { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.magnifier-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -408px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.magnifier-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.magnifier-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -408px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.magnifier-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.cross-in-circle-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -432px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.cross-in-circle-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.cross-in-circle-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -432px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.cross-in-circle-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.cross-in-circle-white { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -432px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.cross-in-circle-white { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.download-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -456px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.download-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.download-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -456px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.download-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.download-middle { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -456px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.download-middle { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.download-white { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -72px -456px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.download-white { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.download-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -72px -480px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.download-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.generator-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -480px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.generator-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.grid-green { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -504px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.grid-green { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.grid-red { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -504px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.grid-red { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.vertical-lines-thick-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -528px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.vertical-lines-thick-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.vertical-lines-thick-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -528px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.vertical-lines-thick-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.horizontal-lines-thick-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -552px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.horizontal-lines-thick-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.horizontal-lines-thick-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -552px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.horizontal-lines-thick-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.horizontal-lines-thick-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -552px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.horizontal-lines-thick-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.clock-advanced-white { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -600px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.clock-advanced-white { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.clock-advanced-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -600px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.clock-advanced-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.circle-plus-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -624px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.circle-plus-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.circle-plus-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -624px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.circle-plus-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.circle-plus-middle { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -624px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.circle-plus-middle { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.circle-minus-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -648px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.circle-minus-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.circle-minus-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -648px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.circle-minus-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.circle-minus-middle { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -648px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.circle-minus-middle { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.map-marker-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -100px 0px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.map-marker-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.map-marker-red { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -250px 0px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.map-marker-red { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.dotted-arrow-left-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -696px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.dotted-arrow-left-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.dotted-arrow-right-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -720px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.dotted-arrow-right-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.arrow-up-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -744px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.arrow-up-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.arrow-down-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -768px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.arrow-down-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +/**************************************************************************************************************************************** +Colors (start) +****************************************************************************************************************************************/ +/**************************************************************************************************************************************** +Colors (end) +****************************************************************************************************************************************/ +/**************************************************************************************************************************************** +Fonts and sizes (start) +****************************************************************************************************************************************/ +@font-face { + font-family: 'MuseoSans-300'; + font-style: normal; + font-weight: normal; + src: url('/styling/webfonts/MuseoSans-300.eot'); + src: url('/styling/webfonts/MuseoSans-300.eot?#iefix') format('embedded-opentype'), url('/styling/webfonts/MuseoSans-300.woff') format('woff'), local('MuseoSans-300'), url('/styling/webfonts/MuseoSans-300.otf') format('opentype'), url('/styling/webfonts/MuseoSans-300.ttf') format('truetype'), url('/styling/webfonts/MuseoSans-300.svg#MuseoSans-300') format('svg'); +} +@font-face { + font-family: 'MuseoSans-700'; + font-style: normal; + font-weight: normal; + src: url('/styling/webfonts/MuseoSans-700.eot'); + src: url('/styling/webfonts/MuseoSans-700.eot?#iefix') format('embedded-opentype'), url('/styling/webfonts/MuseoSans-700.woff') format('woff'), local('MuseoSans-700'), url('/styling/webfonts/MuseoSans-700.otf') format('opentype'), url('/styling/webfonts/MuseoSans-700.ttf') format('truetype'), url('/styling/webfonts/MuseoSans-700.svg#MuseoSans-700') format('svg'); +} +@font-face { + font-family: 'screensaver-icons'; + font-style: normal; + font-weight: normal; + src: url('/styling/webfonts/icons/VRM-screensaver-icons.eot'); + src: url('/styling/webfonts/icons/VRM-screensaver-icons.eot?#iefix') format('embedded-opentype'), url('/styling/webfonts/icons/VRM-screensaver-icons.woff') format('woff'), url('/styling/webfonts/icons/VRM-screensaver-icons.otf') format('opentype'), url('/styling/webfonts/icons/VRM-screensaver-icons.ttf') format('truetype'), url('/styling/webfonts/icons/VRM-screensaver-icons.svg#VRM-screensaver-icon') format('svg'); +} +/**************************************************************************************************************************************** +Fonts and sizes (end) +****************************************************************************************************************************************/ +/**************************************************************************************************************************************** +Other defaults (start) +****************************************************************************************************************************************/ +/**************************************************************************************************************************************** +Other defaults (end) +****************************************************************************************************************************************/ +/**************************************************************************************************************************************** +HTML elements (start) +****************************************************************************************************************************************/ +body { + background-color: #e6e5e1; + color: #272622; + font-family: 'MuseoSans-300', sans-serif; + font-size: 15px; + line-height: 21px; + margin: 0; +} +h1 { + font-size: 26px; + font-weight: normal; + line-height: 26px; + margin-bottom: 30px; + margin-top: 75px; +} +h1.large { + font-size: 40px; +} +h2 { + font-size: 21px; + font-weight: normal; + line-height: 21px; + margin-bottom: 20px; + margin-top: 45px; +} +h3 { + font-size: 18px; + font-weight: normal; + line-height: 21px; + margin: 0; +} +h4 { + font-size: 15px; + font-weight: normal; + line-height: 15px; + margin: 0; + color: #387dc5; +} +a { + color: #387dc5; + text-decoration: underline; +} +a:hover { + color: #387dc5; +} +a:focus { + outline-style: none; +} +.legend { + font-family: 'Arial'; + font-size: 11px; + line-height: 21px; +} +ul { + margin: 0; + padding: 0; + list-style-type: none; +} +select { + height: 50px; +} +fieldset { + margin: 0; + border: 0; + padding: 0; +} +/**************************************************************************************************************************************** +HTML elements (end) +****************************************************************************************************************************************/ +/**************************************************************************************************************************************** +Inputs and buttons (start) +****************************************************************************************************************************************/ +.btn, +input, +textarea { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: inline-block; + font-size: 18px; + line-height: 18px; + min-height: 40px; + padding: 10px 10px; + text-decoration: none; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +.btn:hover, +input:hover, +textarea:hover { + text-decoration: none; +} +.btn.blue, +input.blue, +textarea.blue { + background-color: #4790d0; + border: 1px solid #387dc5; + color: #ffffff; +} +.btn.blue:hover, +input.blue:hover, +textarea.blue:hover { + background-color: #387dc5; + border: 1px solid #387dc5; +} +.btn.orange, +input.orange, +textarea.orange { + background-color: #f7ab3e; + border: 1px solid #f0962e; + color: #ffffff; +} +.btn.orange:hover, +input.orange:hover, +textarea.orange:hover { + background-color: #f0962e; + border: 1px solid #f0962e; +} +.btn.green, +input.green, +textarea.green { + background-color: #8bc964; + border: 1px solid #72b84c; + color: #ffffff; +} +.btn.green:hover, +input.green:hover, +textarea.green:hover { + background-color: #72b84c; + border: 1px solid #72b84c; +} +.btn.red, +input.red, +textarea.red { + background-color: #fa716f; + border: 1px solid #f35c58; + color: #ffffff; +} +.btn.red:hover, +input.red:hover, +textarea.red:hover { + background-color: #f35c58; + border: 1px solid #f35c58; +} +.btn.gray, +input.gray, +textarea.gray { + background-color: #e6e5e1; + border: 1px solid #dcdbd7; + color: #63625e; +} +.btn.gray:hover, +input.gray:hover, +textarea.gray:hover { + background-color: #f0efeb; + border: 1px solid #dcdbd7; +} +.btn.light, +input.light, +textarea.light { + background-color: #faf9f5; + border: 1px solid #dcdbd7; + color: #63625e; +} +.btn.light:hover, +input.light:hover, +textarea.light:hover { + background-color: #ffffff; + border: 1px solid #dcdbd7; +} +.btn.disabled, +input.disabled, +textarea.disabled, +.btn:disabled, +input:disabled, +textarea:disabled { + background-color: #e6e5e1; + border: #dcdbd7 1px solid; + border-color: #dcdbd7; + color: #63625e; + cursor: default; +} +.btn.disabled:hover, +input.disabled:hover, +textarea.disabled:hover, +.btn:disabled:hover, +input:disabled:hover, +textarea:disabled:hover { + background-color: #e6e5e1; + border: #dcdbd7 1px solid; +} +input, +button, +textarea { + outline: none; + font-family: 'MuseoSans-300', sans-serif; + padding-left: 18px; +} +input[type="text"], +input[type="email"], +input[type="password"], +input[type="tel"], +input[type="url"], +textarea { + font-size: 15px; + background-color: #f0efeb; + border: 1px solid #dcdbd7; + color: #387dc5; + height: inherit; + line-height: inherit; + padding: 10px 13px 7px; +} +input[type="text"]:hover, +input[type="email"]:hover, +input[type="password"]:hover, +input[type="tel"]:hover, +input[type="url"]:hover, +textarea:hover { + background-color: #e6e5e1; + border: 1px solid #dcdbd7; +} +input[type="text"]:-moz-placeholder, +input[type="email"]:-moz-placeholder, +input[type="password"]:-moz-placeholder, +input[type="tel"]:-moz-placeholder, +input[type="url"]:-moz-placeholder, +textarea:-moz-placeholder { + color: #63625e; + opacity: 1; +} +input[type="text"]::-moz-placeholder, +input[type="email"]::-moz-placeholder, +input[type="password"]::-moz-placeholder, +input[type="tel"]::-moz-placeholder, +input[type="url"]::-moz-placeholder, +textarea::-moz-placeholder { + color: #63625e; + opacity: 1; +} +input[type="text"]:-webkit-input-placeholder, +input[type="email"]:-webkit-input-placeholder, +input[type="password"]:-webkit-input-placeholder, +input[type="tel"]:-webkit-input-placeholder, +input[type="url"]:-webkit-input-placeholder, +textarea:-webkit-input-placeholder { + color: #63625e; + opacity: 1; +} +input[type="text"]::-webkit-input-placeholder, +input[type="email"]::-webkit-input-placeholder, +input[type="password"]::-webkit-input-placeholder, +input[type="tel"]::-webkit-input-placeholder, +input[type="url"]::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #63625e; + opacity: 1; +} +input[type="text"]:-ms-input-placeholder, +input[type="email"]:-ms-input-placeholder, +input[type="password"]:-ms-input-placeholder, +input[type="tel"]:-ms-input-placeholder, +input[type="url"]:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #63625e; + opacity: 1; +} +input[type="text"]::-ms-input-placeholder, +input[type="email"]::-ms-input-placeholder, +input[type="password"]::-ms-input-placeholder, +input[type="tel"]::-ms-input-placeholder, +input[type="url"]::-ms-input-placeholder, +textarea::-ms-input-placeholder { + color: #63625e; + opacity: 1; +} +input[type="text"]:hover, +input[type="email"]:hover, +input[type="password"]:hover, +input[type="tel"]:hover, +input[type="url"]:hover, +textarea:hover { + background-color: #ffffff; +} +input[type="text"]:focus, +input[type="email"]:focus, +input[type="password"]:focus, +input[type="tel"]:focus, +input[type="url"]:focus, +textarea:focus { + background-color: #ffffff; + border-color: #4790d0; +} +input[type="text"].completed, +input[type="email"].completed, +input[type="password"].completed, +input[type="tel"].completed, +input[type="url"].completed, +textarea.completed { + background-color: #ffffff; +} +input[type="text"].completed:hover, +input[type="email"].completed:hover, +input[type="password"].completed:hover, +input[type="tel"].completed:hover, +input[type="url"].completed:hover, +textarea.completed:hover { + border-color: #4790d0; +} +input[type="text"]:invalid, +input[type="email"]:invalid, +input[type="password"]:invalid, +input[type="tel"]:invalid, +input[type="url"]:invalid, +textarea:invalid { + box-shadow: none; +} +input[type="text"].error, +input[type="email"].error, +input[type="password"].error, +input[type="tel"].error, +input[type="url"].error, +textarea.error, +input[type="text"]:not(.needstouch):invalid:not(:focus), +input[type="email"]:not(.needstouch):invalid:not(:focus), +input[type="password"]:not(.needstouch):invalid:not(:focus), +input[type="tel"]:not(.needstouch):invalid:not(:focus), +input[type="url"]:not(.needstouch):invalid:not(:focus), +textarea:not(.needstouch):invalid:not(:focus) { + border-color: #fa716f; + color: #f35c58; +} +input[type="text"].error:hover, +input[type="email"].error:hover, +input[type="password"].error:hover, +input[type="tel"].error:hover, +input[type="url"].error:hover, +textarea.error:hover, +input[type="text"]:not(.needstouch):invalid:not(:focus):hover, +input[type="email"]:not(.needstouch):invalid:not(:focus):hover, +input[type="password"]:not(.needstouch):invalid:not(:focus):hover, +input[type="tel"]:not(.needstouch):invalid:not(:focus):hover, +input[type="url"]:not(.needstouch):invalid:not(:focus):hover, +textarea:not(.needstouch):invalid:not(:focus):hover { + border-color: #fa716f; +} +input[type="text"].disabled, +input[type="email"].disabled, +input[type="password"].disabled, +input[type="tel"].disabled, +input[type="url"].disabled, +textarea.disabled { + background-color: #e6e5e1; + border-color: #dcdbd7; + color: #63625e; +} +input[type="text"].disabled:hover, +input[type="email"].disabled:hover, +input[type="password"].disabled:hover, +input[type="tel"].disabled:hover, +input[type="url"].disabled:hover, +textarea.disabled:hover { + background-color: #f0efeb; + border-color: #dcdbd7; +} +input[type="button"], +input[type="submit"] { + border: none; + /*padding: 0;*/ + vertical-align: baseline; +} +.btn { + text-align: center; +} +/**************************************************************************************************************************************** +Inputs and buttons (end) +****************************************************************************************************************************************/ +/**************************************************************************************************************************************** +Custom select (start) +****************************************************************************************************************************************/ +.chzn-select { + visibility: hidden; +} +.chzn-select.no-search + .chzn-container .chzn-drop .chzn-results { + max-height: 259px; +} +.chzn-select.no-search + .chzn-container .chzn-drop .chzn-results .active-result:first-child { + padding-top: 20px; +} +.chzn-container { + display: block; +} +.chzn-container .chzn-single { + background-color: #ffffff; + border: 1px solid #dcdbd7; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + color: #63625e; + height: 40px; + line-height: 40px; + padding: 0 70px 0 15px; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + z-index: 1011; +} +.chzn-container .chzn-single:hover { + border-color: #959490; + color: #272622; +} +.chzn-container .chzn-single:hover .handle { + border-left-color: #959490; +} +.chzn-container .chzn-single:hover .handle .sprite-icons { + background-color: #959490; +} +.chzn-container .chzn-single .handle { + border-left: 1px solid #dcdbd7; + height: 18px; + margin-top: 11px; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + width: 37px; +} +.chzn-container .chzn-single .handle .sprite-icons { + background-color: #dcdbd7; + -webkit-transition-property: background-position; + -webkit-transition-duration: 0s; + -moz-transition-property: background-position; + -moz-transition-duration: 0s; + -o-transition-property: background-position; + -o-transition-duration: 0s; + -ms-transition-property: background-position; + -ms-transition-duration: 0s; + transition-property: background-position; + transition-duration: 0s; + -webkit-transition-property: background-color; + -webkit-transition-duration: 0.2s; + -moz-transition-property: background-color; + -moz-transition-duration: 0.2s; + -o-transition-property: background-color; + -o-transition-duration: 0.2s; + -ms-transition-property: background-color; + -ms-transition-duration: 0.2s; + transition-property: background-color; + transition-duration: 0.2s; + right: 8px; + position: absolute; + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -336px; + top: -2px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .chzn-container .chzn-single .handle .sprite-icons { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.chzn-container .chzn-drop { + background: #ffffff; + border: 1px solid #dcdbd7; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + margin-top: 5px; + z-index: 1012; +} +.chzn-container .chzn-drop .chzn-search { + background-color: #959490; + position: relative; + -webkit-border-top-left-radius: 5px; + -moz-border-radius-topleft: 5px; + border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; + -moz-border-radius-topright: 5px; + border-top-right-radius: 5px; +} +.chzn-container .chzn-drop .chzn-search .sprite-icons { + left: 15px; + position: absolute; + top: 8px; +} +.chzn-container .chzn-drop .chzn-search input[type="text"] { + background-color: #959490; + border: none; + color: #ffffff; + padding-left: 55px; + width: 100% !important; +} +.chzn-container .chzn-drop .chzn-search input[type="text"]:-moz-placeholder { + color: #e6e5e1; + opacity: 1; +} +.chzn-container .chzn-drop .chzn-search input[type="text"]::-moz-placeholder { + color: #e6e5e1; + opacity: 1; +} +.chzn-container .chzn-drop .chzn-search input[type="text"]:-webkit-input-placeholder { + color: #e6e5e1; + opacity: 1; +} +.chzn-container .chzn-drop .chzn-search input[type="text"]::-webkit-input-placeholder { + color: #e6e5e1; + opacity: 1; +} +.chzn-container .chzn-drop .chzn-search input[type="text"]:-ms-input-placeholder { + color: #e6e5e1; + opacity: 1; +} +.chzn-container .chzn-drop .chzn-search input[type="text"]::-ms-input-placeholder { + color: #e6e5e1; + opacity: 1; +} +.chzn-container .chzn-drop .chzn-results { + margin: 0px; + max-height: 254px; + padding: 0px; +} +.chzn-container .chzn-drop .chzn-results .active-result { + border-top: 1px solid #dcdbd7; + color: #63625e; + min-height: 20px; + padding: 9px 15px; +} +.chzn-container .chzn-drop .chzn-results .active-result:first-child { + border-top: none; +} +.chzn-container .chzn-drop .chzn-results .active-result.highlighted { + background-color: #e6e5e1; + color: #272622; +} +.chzn-container .chzn-drop .chzn-results .active-result.result-selected { + color: #387dc5; +} +.chzn-container .chzn-drop .chzn-results .no-results { + color: #f35c58; + height: 40px; + line-height: 44px; + padding: 0 20px; +} +.chzn-container.chzn-container-active .chzn-single { + border-color: #959490; + color: #272622; +} +.chzn-container.chzn-container-active .chzn-single .handle { + border-left-color: #959490; +} +.chzn-container.chzn-container-active .chzn-single .handle .sprite-icons { + background-color: #959490; +} +.chzn-container.chzn-container-active .chzn-single.chzn-single-with-drop .handle .sprite-icons { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -336px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .chzn-container.chzn-container-active .chzn-single.chzn-single-with-drop .handle .sprite-icons { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +/**************************************************************************************************************************************** +Custom select (end) +****************************************************************************************************************************************/ +/* The functionality */ +.custom-check-and-radio:not(#OLD-IE), +.custom-toggle:not(#OLD-IE) { + position: relative; +} +.custom-check-and-radio:not(#OLD-IE) input, +.custom-toggle:not(#OLD-IE) input { + cursor: pointer; + float: left; + height: 0px; + min-height: 0px; + opacity: 0; + filter: alpha(opacity=0); + width: 0px; + padding: 0; + position: absolute; + margin: 0; +} +.custom-check-and-radio:not(#OLD-IE) .alternative-display, +.custom-toggle:not(#OLD-IE) .alternative-display { + display: block; + cursor: pointer; + left: 0px; + position: absolute; + top: 0px; +} +.custom-check-and-radio:not(#OLD-IE) input + label, +.custom-toggle:not(#OLD-IE) input + label { + cursor: pointer; + display: block; +} +/* The common styling for checkboxes and radio buttons */ +.custom-check-and-radio:not(#OLD-IE) .alternative-display { + display: block; + background-color: #f0efeb; + border: 1px solid #dcdbd7; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 24px; + min-height: 0; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + width: 24px; +} +.custom-check-and-radio:not(#OLD-IE) input + label { + /* line-height: 28px;*/ + padding: 4px 0 0 40px; +} +.custom-check-and-radio:not(#OLD-IE) input:checked + label .alternative-display { + background-color: #4790d0; +} +.custom-check-and-radio:not(#OLD-IE) input:disabled + label .alternative-display { + background-color: #959490; +} +.custom-check-and-radio:not(#OLD-IE):hover .alternative-display { + background-color: #e6e5e1; +} +.custom-check-and-radio:not(#OLD-IE):hover input:checked + label .alternative-display { + background-color: #387dc5; +} +/* The specific styling of the checkbox */ +.custom-check:not(#OLD-IE) .alternative-display { + display: block; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.custom-check:not(#OLD-IE) .alternative-display .sprite-icons { + margin-left: -1px; + margin-top: -1px; + opacity: 0; + filter: alpha(opacity=0); + display: inline-block; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -216px; + width: 24px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .custom-check:not(#OLD-IE) .alternative-display .sprite-icons { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.custom-check:not(#OLD-IE) input:checked + label .alternative-display .sprite-icons { + opacity: 1; + filter: alpha(opacity=100); +} +.custom-check:not(#OLD-IE):hover .alternative-display .sprite-icons { + opacity: 1; + filter: alpha(opacity=100); +} +/* The specific styling of the radio button */ +.custom-radio:not(#OLD-IE) .alternative-display { + display: block; + -webkit-border-radius: 12px; + -moz-border-radius: 12px; + border-radius: 12px; +} +.custom-radio:not(#OLD-IE) .alternative-display .dot { + background-color: #f0efeb; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + height: 8px; + left: 7px; + position: absolute; + top: 7px; + width: 8px; +} +.custom-radio:not(#OLD-IE) input:checked + label .alternative-display .dot { + background-color: #ffffff; +} +.custom-radio:not(#OLD-IE):hover input:checked + label .alternative-display .dot { + background-color: #ffffff; +} +/* The specific styling of the toggle */ +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display { + border: 1px solid #dcdbd7; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + height: 40px; + width: 120px; + clear: both; +} +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display .on, +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display.toggle-blue .on { + background-color: #4790d0; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; + -webkit-box-shadow: 0px 2px 0px #387dc5 inset; + -moz-box-shadow: 0px 2px 0px #387dc5 inset; + box-shadow: 0px 2px 0px #387dc5 inset; +} +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display.toggle-green .on { + background-color: #8bc964; + -webkit-box-shadow: 0px 2px 0px #72b84c inset; + -moz-box-shadow: 0px 2px 0px #72b84c inset; + box-shadow: 0px 2px 0px #72b84c inset; +} +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display.toggle-red .on { + background-color: #fa716f; + -webkit-box-shadow: 0px 2px 0px #f35c58 inset; + -moz-box-shadow: 0px 2px 0px #f35c58 inset; + box-shadow: 0px 2px 0px #f35c58 inset; +} +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display .off { + background-color: #959490; + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; + -webkit-box-shadow: 0px 2px 0px #8e8d89 inset; + -moz-box-shadow: 0px 2px 0px #8e8d89 inset; + box-shadow: 0px 2px 0px #8e8d89 inset; +} +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display .on, +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display .off { + display: block; + color: #ffffff; + float: left; + height: 100%; + line-height: 41px; + text-align: center; + position: relative; + width: 50%; +} +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display .knob { + display: block; + background-color: #e6e5e1; + border: 1px solid #dcdbd7; + border-bottom: 0px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + border-top: none; + -webkit-box-shadow: 5px 0px 0px #8e8d89; + -moz-box-shadow: 5px 0px 0px #8e8d89; + box-shadow: 5px 0px 0px #8e8d89; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + height: 38px; + left: -1px; + position: absolute; + top: 0px; + width: 62px; +} +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display .knob .sprite-icons { + left: 17px; + position: absolute; + top: 8px; +} +.custom-toggle:not(#OLD-IE).slide-over-text input + label { + line-height: 44px; + padding: 0 0 0 140px; +} +.custom-toggle:not(#OLD-IE).slide-over-text.under-label label { + padding: 0px; +} +.custom-toggle:not(#OLD-IE).slide-over-text.under-label label .alternative-display { + position: relative; +} +.custom-toggle:not(#OLD-IE).slide-over-text.right-aligned input + label { + padding: 0; +} +.custom-toggle:not(#OLD-IE).slide-over-text.right-aligned .alternative-display { + left: auto; + right: 0px; +} +.custom-toggle:not(#OLD-IE).slide-over-text input:checked + label .alternative-display .knob, +.custom-toggle:not(#OLD-IE).slide-over-text input:checked + label .alternative-display.toggle-blue .knob { + -webkit-box-shadow: -5px 0px 0px #5b9bcd; + -moz-box-shadow: -5px 0px 0px #5b9bcd; + box-shadow: -5px 0px 0px #5b9bcd; + left: 57px; +} +.custom-toggle:not(#OLD-IE).slide-over-text input:checked + label .alternative-display.toggle-green .knob { + -webkit-box-shadow: -5px 0px 0px #98c478; + -moz-box-shadow: -5px 0px 0px #98c478; + box-shadow: -5px 0px 0px #98c478; +} +.custom-toggle:not(#OLD-IE).slide-over-text input:checked + label .alternative-display.toggle-red .knob { + -webkit-box-shadow: -5px 0px 0px #e66e6e; + -moz-box-shadow: -5px 0px 0px #e66e6e; + box-shadow: -5px 0px 0px #e66e6e; +} +.custom-toggle:not(#OLD-IE).slide-over-text:hover .alternative-display .knob { + background-color: #ffffff; +} +.custom-toggle:not(#OLD-IE).slide-over-text.button-variant .alternative-display { + display: block; + width: 140px; +} +.custom-toggle:not(#OLD-IE).slide-over-text.button-variant .toggle-caption { + display: block; + font-size: 15px; + margin-top: 11px; + text-align: center; +} +.custom-toggle:not(#OLD-IE).slide-over-text.button-variant .caption-on { + color: #8bc964; + display: none; +} +.custom-toggle:not(#OLD-IE).slide-over-text.button-variant .caption-off { + color: #959490; +} +.custom-toggle:not(#OLD-IE).slide-over-text.button-variant input:checked + label .alternative-display { + border-color: #8bc964; +} +.custom-toggle:not(#OLD-IE).slide-over-text.button-variant input:checked + label .caption-on { + display: block; +} +.custom-toggle:not(#OLD-IE).slide-over-text.button-variant input:checked + label .caption-off { + display: none; +} +.custom-toggle:not(#OLD-IE).slide-colors .alternative-display { + display: block; + background-color: #e6e5e1; + border: 1px solid #dcdbd7; + display: inline-block; + /*font-size: @sgFontSizeText * 10px;*/ + height: 30px; + position: relative; + width: 80px; + -webkit-border-radius: 100px; + -moz-border-radius: 100px; + border-radius: 100px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +.custom-toggle:not(#OLD-IE).slide-colors .alternative-display .on { + background-color: #8bc964; + left: 10px; + width: 0; +} +.custom-toggle:not(#OLD-IE).slide-colors .alternative-display .off { + background-color: #fa716f; + right: 10px; + width: 58px; +} +.custom-toggle:not(#OLD-IE).slide-colors .alternative-display .on, +.custom-toggle:not(#OLD-IE).slide-colors .alternative-display .off { + display: block; + height: 4px; + position: absolute; + top: 12px; + -webkit-border-radius: 100px; + -moz-border-radius: 100px; + border-radius: 100px; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +.custom-toggle:not(#OLD-IE).slide-colors .alternative-display .knob { + display: block; + background-color: #ffffff; + height: 24px; + left: 2px; + position: absolute; + top: 2px; + width: 24px; + -webkit-border-radius: 100px; + -moz-border-radius: 100px; + border-radius: 100px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-box-shadow: 0 2px 6px rgba(150, 149, 145, 0.5); + -moz-box-shadow: 0 2px 6px rgba(150, 149, 145, 0.5); + box-shadow: 0 2px 6px rgba(150, 149, 145, 0.5); + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +.custom-toggle:not(#OLD-IE).slide-colors .alternative-display .knob .dot { + background-color: #fa716f; + height: 8px; + left: 8px; + position: absolute; + top: 8px; + width: 8px; + -webkit-border-radius: 100px; + -moz-border-radius: 100px; + border-radius: 100px; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +.custom-toggle:not(#OLD-IE).slide-colors .caption-container { + display: inline-block; + vertical-align: top; +} +.custom-toggle:not(#OLD-IE).slide-colors .caption { + color: #fa716f; + line-height: 30px; + padding-left: 17px; + text-transform: uppercase; +} +.custom-toggle:not(#OLD-IE).slide-colors .caption:after { + content: "Off"; +} +.custom-toggle:not(#OLD-IE).slide-colors input + label { + line-height: 34px; +} +.custom-toggle:not(#OLD-IE).slide-colors input:checked + label .alternative-display .on { + width: 58px; +} +.custom-toggle:not(#OLD-IE).slide-colors input:checked + label .alternative-display .off { + width: 0; +} +.custom-toggle:not(#OLD-IE).slide-colors input:checked + label .alternative-display .knob { + left: 52px; +} +.custom-toggle:not(#OLD-IE).slide-colors input:checked + label .alternative-display .knob .dot { + background-color: #8bc964; +} +.custom-toggle:not(#OLD-IE).slide-colors input:checked + label .caption { + color: #8bc964; +} +.custom-toggle:not(#OLD-IE).slide-colors input:checked + label .caption:after { + content: "On"; +} +.custom-toggle:not(#OLD-IE).slide-colors:hover .alternative-display .knob { + background-color: #ffffff; +} +/**************************************************************************************************************************************** +Tabs (start) +****************************************************************************************************************************************/ +#vrm-tabs { + height: 65px; + margin: 0px; + padding: 0px; +} +#vrm-tabs li { + background-color: #63625e; + border-bottom: 4px solid #595854; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + float: left; + height: 60px; + list-style-position: inside; + list-style-type: none; + margin-top: 5px; + width: 100px; +} +#vrm-tabs li a { + display: inline-block; + float: left; + height: 100%; + position: relative; + text-decoration: none; + width: 99px; +} +#vrm-tabs li a .sprite-icons { + left: 38px; + position: absolute; + top: 12px; +} +#vrm-tabs li a .sprite-icons.default { + z-index: 1; +} +#vrm-tabs li a .text { + color: #e6e5e1; + font-size: 11px; + margin-top: 36px; + text-align: center; +} +#vrm-tabs li.darker { + background-color: #4f4e4a; +} +#vrm-tabs li.active { + background-color: #faf9f5; + border: none; + border-color: #ffffff; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 65px; + margin-top: 0px; +} +#vrm-tabs li.active#tab-live-feed, +#vrm-tabs li.active#tab-settings { + background-color: #f0efeb; +} +#vrm-tabs li.active a .sprite-icons.default { + display: none; +} +#vrm-tabs li.active a .text { + color: #63625e; +} +#vrm-tabs li.active .divider .border { + -webkit-transition: 0s; + -moz-transition: 0s; + -o-transition: 0s; + transition: 0s; + background-color: transparent; +} +#vrm-tabs li.active + li .divider .border { + background-color: transparent; +} +#vrm-tabs li:hover { + border-color: #959490; +} +#vrm-tabs li:hover:not(.active) { + background-color: #959490; +} +#vrm-tabs li:hover:not(.active) .divider .border { + background-color: #959490; +} +#vrm-tabs li:hover.active { + border-color: #ffffff; +} +#vrm-tabs li:hover + li .divider .border { + background-color: transparent; +} +#vrm-tabs li .divider { + display: inline-block; + float: left; + width: 0.5px; +} +#vrm-tabs li .divider .border { + background-color: #4f4e4a; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + height: 40px; + margin-top: 10px; +} +#vrm-tabs-content { + background-color: #f0efeb; +} +#vrm-tabs-content .tab-pane { + display: none; +} +#vrm-tabs-content .tab-pane .content { + padding: 10px 20px; +} +#vrm-tabs-content .active { + display: block; +} +/**************************************************************************************************************************************** +Tabs (end) +****************************************************************************************************************************************/ +/**************************************************************************************************************************************** +Form Tabs (start) +****************************************************************************************************************************************/ +.form-tabs { + list-style: none; + margin: 0; + padding: 0; +} +.form-tabs li { + border-left: 1px solid #dcdbd7; + border-bottom: 1px solid #dcdbd7; + border-right: 1px solid #dcdbd7; + background-color: #e6e5e1; +} +.form-tabs li:first-child { + border-top: 1px solid #dcdbd7; +} +.form-tabs li a { + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + display: block; + height: 50px; + line-height: 50px; + color: #63625e; + text-decoration: none; + text-align: right; + padding-right: 25px; + position: relative; + cursor: pointer; +} +.form-tabs li a.active, +.form-tabs li a:hover { + background: white; + color: #387dc5; +} +.form-tabs li a .required { + color: #4790d0; + position: absolute; + right: 20px; +} +/**************************************************************************************************************************************** +Form Tabs (end) +****************************************************************************************************************************************/ +/**************************************************************************************************************************************** +12-column grid (start) +****************************************************************************************************************************************/ +/* This mixin sets the width of an element based on the number of columns. */ +/* This mixin sets the width of a grid item based on the number of columns. */ +.container .container-inner { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + *zoom: 1; + margin: 0 auto; + width: 960px; +} +.container .container-inner:before, +.container .container-inner:after { + display: table; + content: ""; + line-height: 0; +} +.container .container-inner:after { + clear: both; +} +.container .container-inner .grid-item { + float: left; + /* Classes for setting the width of a grid item based on the number of columns it is wide. */ +} +.container .container-inner .grid-item.one-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 60px; +} +.container .container-inner .grid-item.two-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 140px; +} +.container .container-inner .grid-item.three-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 220px; +} +.container .container-inner .grid-item.four-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 300px; +} +.container .container-inner .grid-item.five-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 380px; +} +.container .container-inner .grid-item.six-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 460px; +} +.container .container-inner .grid-item.seven-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 540px; +} +.container .container-inner .grid-item.eight-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 620px; +} +.container .container-inner .grid-item.nine-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 700px; +} +.container .container-inner .grid-item.ten-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 780px; +} +.container .container-inner .grid-item.eleven-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 860px; +} +.container .container-inner .grid-item.twelve-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 940px; +} +.container .container-inner .grid-item.offset-one { + margin-left: 90px; +} +.container .container-inner .grid-item.offset-two { + margin-left: 170px; +} +.container .container-inner .grid-item.offset-three { + margin-left: 250px; +} +.container .container-inner .grid-item.offset-four { + margin-left: 330px; +} +.container .container-inner .grid-item.offset-five { + margin-left: 410px; +} +.container .container-inner .grid-item.offset-six { + margin-left: 490px; +} +.offset-gutter { + margin-left: 20px; +} +/* Classes for setting the width of an element based on the number of columns it is wide. */ +.two-columns-width { + width: 140px; +} +.two-columns-width.force-width { + width: 140px !important; +} +.three-columns-width { + width: 220px; +} +.three-columns-width.force-width { + width: 220px !important; +} +.four-columns-width { + width: 300px; +} +.four-columns-width.force-width { + width: 300px !important; +} +/**************************************************************************************************************************************** +12-column grid (end) +****************************************************************************************************************************************/ +/* -----------[Global styling]--------------*/ +.no-display { + display: none; +} +/* -----------[Homepage]--------------*/ +.vrm.index.index .container-inner .main-image-container { + background: url(/img/homepage/main-image.png) no-repeat transparent center; + height: 539px; + left: 0px; + position: absolute; + width: 100%; + min-width: 960px; + z-index: 1; +} +.vrm.index.index .container-inner .main-image-container.christmas { + background-color: #272622; + background-image: url(/img/homepage/main-image-christmas.jpg); + height: 528px; +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-container { + position: relative; +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-container { + position: relative; +} +.vrm.index.index .container-inner .main-image-laptop-slideshow { + height: 303px; + overflow: hidden; + position: absolute; + right: 0; + top: 154px; + width: 443px; + z-index: 1; + -webkit-transform: matrix3d(0.75766177, -0.11351643, 0, -0.00032209, -0.19498093, 0.94274818, 0, -0.00009209, 0, 0, 1, 0, 27, 40, 0, 1); + -moz-transform: matrix3d(0.75766177, -0.11351643, 0, -0.00032209, -0.19498093, 0.94274818, 0, -0.00009209, 0, 0, 1, 0, 27, 40, 0, 1); + -ms-transform: matrix3d(0.75766177, -0.11351643, 0, -0.00032209, -0.19498093, 0.94274818, 0, -0.00009209, 0, 0, 1, 0, 27, 40, 0, 1); + -o-transform: matrix3d(0.75766177, -0.11351643, 0, -0.00032209, -0.19498093, 0.94274818, 0, -0.00009209, 0, 0, 1, 0, 27, 40, 0, 1); + transform: matrix3d(0.75766177, -0.11351643, 0, -0.00032209, -0.19498093, 0.94274818, 0, -0.00009209, 0, 0, 1, 0, 27, 40, 0, 1); + outline: 1px solid transparent; + -webkit-transform-origin: 0px 0px 0px; + transform-origin: 0px 0px 0px; +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-slide-list { + height: 100%; + list-style-type: none; + margin: 0; + padding: 0; + width: 100%; +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-slide { + background-color: transparent; + background-size: cover; + height: 100%; + overflow: hidden; + pointer-events: none; + position: absolute; + width: 100%; + z-index: 1; +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-slide.slide-1 { + background-image: url('/img/homepage/slideshow/slide-1.jpg'); +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-slide.slide-2 { + background-image: url('/img/homepage/slideshow/slide-2.jpg'); +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-slide.slide-3 { + background-image: url('/img/homepage/slideshow/slide-3.jpg'); +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-slide.current { + pointer-events: auto; + z-index: 100; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-slide.in--next { + z-index: 50; + -webkit-animation: inNext 0.5s forwards ease-in-out; + animation: inNext 0.5s forwards ease-in-out; +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-slide.out--next { + -webkit-animation: outNext 0.5s forwards ease-in-out; + animation: outNext 0.5s forwards ease-in-out; +} +@-webkit-keyframes inNext { + 0% { + -webkit-transform: translate3d(30%, 0, 0); + transform: translate3d(30%, 0, 0); + } + 100% { + -webkit-transform: none; + transform: none; + } +} +@keyframes inNext { + 0% { + -webkit-transform: translate3d(30%, 0, 0); + transform: translate3d(30%, 0, 0); + } + 100% { + -webkit-transform: none; + transform: none; + } +} +@-webkit-keyframes outNext { + 100% { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} +@keyframes outNext { + 100% { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} +.vrm.index.index .container-inner .main-image-overlay { + color: #f0efeb; + height: 494px; + padding-left: 7px; + padding-top: 45px; + position: relative; + min-width: 960px; + z-index: 2; +} +.vrm.index.index .container-inner .main-image-overlay .title { + font-size: 40px; + line-height: 40px; + width: 550px; +} +.vrm.index.index .container-inner .main-image-overlay .subtitle { + padding-top: 21px; + width: 325px; +} +.vrm.index.index .container-inner .main-image-overlay .sign-up { + background-color: rgba(0, 0, 0, 0.2); + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; + margin-top: 45px; + padding: 5px; + text-transform: uppercase; + width: 220px; +} +.vrm.index.index .container-inner .main-image-overlay.christmas .title, +.vrm.index.index .container-inner .main-image-overlay.christmas .subtitle { + visibility: hidden; +} +.vrm.index.index .container-inner .main-image-overlay.christmas .sign-up { + margin-top: 18px; +} +.vrm.index.index .container-inner .middle-section-container { + background-color: #ffffff; + border-bottom: 1px solid #dcdbd7; + left: 0px; + height: 759px; + margin-top: -11px; + padding-top: 13px; + position: absolute; + width: 100%; + min-width: 960px; +} +.vrm.index.index .container-inner .middle-section-container .middle-section-inner { + margin: 0 auto; + width: 960px; +} +.vrm.index.index .container-inner .middle-section-container .middle-section-inner .story-container { + margin-top: 17px; +} +.vrm.index.index .container-inner .middle-section-container .middle-section-inner .video-container { + margin-top: 42px; +} +.vrm.index.index .container-inner .middle-section-container .middle-section-inner .video-player { + width: 640px; + margin: 0 auto; +} +.vrm.index.index .container-inner .middle-section-container .middle-section-inner .main-image { + margin-top: 75px; + text-align: center; +} +.vrm.index.index .container-inner .middle-bottom-section-container { + background-color: #faf9f5; + border-bottom: 1px solid #dcdbd7; + left: 0px; + top: 1393px; + margin-top: -11px; + padding-top: 50px; + position: absolute; + width: 100%; + min-width: 960px; +} +.vrm.index.index .container-inner .middle-bottom-section-container .middle-section-inner { + margin: 0 auto; + width: 960px; +} +.vrm.index.index .container-inner .middle-bottom-section-container .middle-section-inner .main-image img { + float: right; + margin-right: -55px; +} +.vrm.index.index .container-inner .middle-bottom-section-container .middle-section-inner .app-icon { + padding-top: 108px; +} +.vrm.index.index .container-inner .middle-bottom-section-container .middle-section-inner .app-icon img { + float: right; +} +.vrm.index.index .container-inner .middle-bottom-section-container .middle-section-inner .text { + padding-top: 49px; +} +.vrm.index.index .container-inner .middle-bottom-section-container .middle-section-inner .text .btn { + margin-top: 35px; + padding: 8px 10px; +} +.vrm.index.index .container-inner .middle-bottom-section-container .middle-section-inner .text .btn.google-play { + margin-left: 15px; +} +.vrm.index.index .container-inner .middle-bottom-section-container .middle-section-inner .text .btn.google-play img { + padding-top: 4px; +} +.vrm.index.index .container-inner .bottom-section-container { + margin-top: 1228px; +} +.vrm.index.index .container-inner .bottom-section-container .bottom-section-inner .text h1 { + margin-top: 61px; +} +.vrm.index.index .container-inner .bottom-section-container .bottom-section-inner .text h3 { + color: #4790d0; + margin-top: 20px; +} +.vrm.index.index .container-inner .bottom-section-container .bottom-section-inner .text .btn { + margin-top: 55px; + padding: 16px 10px; +} +.vrm.index.index .container-inner .bottom-section-container .bottom-section-inner .main-image { + padding-top: 43px; + text-align: center; +} +.vrm.index.index .container-inner .bottom-section-container .bottom-section-inner .subscribe-to-newsletter { + background-color: #4790d0; + border: #dcdbd7 1px solid; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + color: #f0efeb; + font-size: 26px; + max-height: 80px; + margin-top: 50px; + padding: 16px 19px 14px 30px; + position: relative; +} +.vrm.index.index .container-inner .bottom-section-container .bottom-section-inner .subscribe-to-newsletter .caption { + display: inline-block; + margin-top: 16px; +} +.vrm.index.index .container-inner .bottom-section-container .bottom-section-inner .subscribe-to-newsletter input[type="text"], +.vrm.index.index .container-inner .bottom-section-container .bottom-section-inner .subscribe-to-newsletter input[type="email"] { + border: #8cc3f0 1px solid; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 50px; + padding-right: 62px; + width: 440px; +} +.vrm.index.index .container-inner .bottom-section-container .bottom-section-inner .subscribe-to-newsletter input[type="submit"] { + /* no retina needed, homepage not visible on mobile */ + background-image: url("/img/VRM-sprite.png"); + background-position: -64px -281px; + height: 40px; + min-height: 40px; + position: absolute; + right: 24px; + top: 21px; + width: 40px; +} +#loginForm { + display: none; +} +.msie9 .main-image-laptop-slideshow-container { + display: none !important; +} +/* -----------[ Rejected browser ]--------------*/ +.browserReject .browsers { + margin-top: 15px; +} +.browserReject .browsers a { + display: inline-block; + vertical-align: top; + width: 100px; + overflow: hidden; + margin: 0 30px; + padding-top: 110px; + /* no retina needed, homepage not visible on mobile */ + background-image: url('/img/browserSprite100.png'); + background-repeat: no-repeat; + border: none; + text-decoration: none; + cursor: pointer; + color: black; +} +.browserReject .browsers a.ie { + background-position: 0px 0px; +} +.browserReject .browsers a.firefox { + background-position: -100px 0px; +} +.browserReject .browsers a.chrome { + background-position: -200px 0px; +} +.browserReject .browsers a.opera { + background-position: -300px 0px; +} +.browserReject .browsers a.safari { + background-position: -400px 0px; +} +/* -----------[Messages, could go to styleguide]--------------*/ +.global-message, +.flash-message, +.form-message { + min-height: 40px; + color: #ffffff; +} +.global-message.error, +.flash-message.error, +.form-message.error { + background-color: #fa716f; + color: #ffffff; +} +.global-message.error ul li, +.flash-message.error ul li, +.form-message.error ul li { + padding-left: 45px; +} +.global-message.error ul li .sprite-icons, +.flash-message.error ul li .sprite-icons, +.form-message.error ul li .sprite-icons { + display: inline-block; + margin-right: 20px; +} +.global-message.success, +.flash-message.success, +.form-message.success { + background-color: #8bc964; +} +.global-message.notice, +.flash-message.notice, +.form-message.notice { + background-color: #4790d0; +} +.global-message.client-side, +.flash-message.client-side, +.form-message.client-side { + display: none; +} +.global-message ul, +.flash-message ul, +.form-message ul { + padding: 15px 0; + margin: 0; + list-style-type: none; +} +.global-message ul li, +.flash-message ul li, +.form-message ul li { + position: relative; +} +.global-message ul li .sprite-icons, +.flash-message ul li .sprite-icons, +.form-message ul li .sprite-icons { + display: none; + left: 0px; + position: absolute; + top: -3px; + top: calc(50% - 12px); +} +.global-message ul li a, +.flash-message ul li a, +.form-message ul li a { + color: #ffffff; +} +.global-message .message-text, +.flash-message .message-text, +.form-message .message-text { + display: inline-block; + padding: 15px 0; +} +.global-message .message-text a, +.flash-message .message-text a, +.form-message .message-text a { + color: #ffffff; +} +.global-message .container-inner, +.flash-message .container-inner, +.form-message .container-inner { + padding-bottom: 0; +} +.flash-message ul li { + margin-top: 10px; +} +.flash-message ul li:first-child { + margin-top: 0px; +} +/* -----------[Form related styling, could go to styleguide]--------------*/ +.form-container h3 { + padding: 18px 18px 0 18px; +} +.form-container h4 { + padding: 6px 18px 6px 18px; +} +.form-container select { + width: 260px; +} +form fieldset { + border: 1px solid #dcdbd7; + background-color: #ffffff; + padding: 19px; + min-width: inherit; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +form input[type="text"], +form input[type="email"], +form input[type="password"], +form input[type="tel"], +form input[type="url"], +form input[type="submit"], +form select { + width: 100%; +} +#sitesettings > fieldset { + width: 300px; +} +#sitesettings > fieldset#fieldset-tags { + width: 100%; +} +#fieldset-summarywidget { + width: 300px; + border: 0; + background-color: transparent; + padding: 0; +} +#fieldset-summarywidget.desktop { + width: 100%; +} +#fieldset-summarywidget.desktop .sortable-summary-widgets { + width: 300px; +} +#fieldset-summarywidget.desktop .sortable-summary-widgets .placeholder { + background-color: #dcdbd7; +} +#fieldset-summarywidget.desktop .sortable-summary-widgets .site-info { + cursor: move; +} +#fieldset-summarywidget.desktop .sortable-summary-widgets .site-info label { + cursor: move; +} +#fieldset-summarywidget.desktop .summary-widget-list-disabled-container { + float: right; + position: relative; +} +#fieldset-summarywidget.desktop .summary-widget-list-disabled .placeholder { + background-color: #f0efeb; + height: 92px; + margin-bottom: 20px; +} +#fieldset-summarywidget.desktop .summary-widget-list-disabled .site-info .custom-data-toggle { + background-color: #f0efeb; +} +#fieldset-summarywidget.desktop .summary-widget-list-disabled .site-info .custom-data-toggle label { + padding: 23px 10px 24px; +} +#fieldset-summarywidget.desktop .summary-widget-list-disabled .form-element { + margin-bottom: 10px; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled-container { + float: left; + position: relative; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled-container .horizontal-line { + background-color: #dcdbd7; + height: 1px; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled-container.full .placeholder-list-item { + display: none !important; +} +#fieldset-summarywidget.desktop .summary-widget-list-header .sub-title { + color: #4790d0; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled { + -webkit-box-shadow: 0 0 10px #dcdbd7; + -moz-box-shadow: 0 0 10px #dcdbd7; + box-shadow: 0 0 10px #dcdbd7; + /* This dummy is to be able to put styling on only the list items that are actually selected items, so without the header */ +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled .invisible-dummy { + display: none; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled .form-element { + margin: 0; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled .custom-data-toggle { + border: none; + padding: 0; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled .custom-data-toggle label { + padding: 0; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled .placeholder { + background: url('/img/drag-drop-placeholder-pattern.png') repeat; + background-color: #f0efeb !important; + height: 99px; + position: relative; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled .placeholder:before { + background-color: #f0efeb; + content: ' '; + left: 50%; + margin-left: -12px; + margin-top: -12px; + position: absolute; + top: 50%; + -webkit-border-radius: 100px; + -moz-border-radius: 100px; + border-radius: 100px; + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -672px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #fieldset-summarywidget.desktop .summary-widget-list-enabled .placeholder:before { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled .placeholder-list-item { + background: url('/img/drag-drop-placeholder-pattern.png') repeat; + background-color: #f0efeb !important; + height: 99px; + position: relative; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled .placeholder-list-item:before { + background-color: #f0efeb; + content: ' '; + left: 50%; + margin-left: -12px; + margin-top: -12px; + position: absolute; + top: 50%; + -webkit-border-radius: 100px; + -moz-border-radius: 100px; + border-radius: 100px; + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -672px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #fieldset-summarywidget.desktop .summary-widget-list-enabled .placeholder-list-item:before { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled.no-placeholder .placeholder { + display: none; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled-placeholder .invisible-dummy { + display: none; +} +.sortable-widget-list-enabled-caption { + color: #4790d0; + margin-top: 15px; + padding-right: 30px; + position: relative; + text-align: right; +} +.sortable-widget-list-enabled-caption .sprite-icons { + bottom: -1px; + right: 0; + position: absolute; +} +.sortable-widget-list-disabled-caption { + color: #4790d0; + margin-bottom: 12px; + margin-top: 46px; + padding-left: 33px; + position: relative; +} +.sortable-widget-list-disabled-caption .sprite-icons { + bottom: -1px; + left: 0; + position: absolute; +} +.ui-sortable-helper { + background-color: #ffffff !important; + border: 1px solid #dcdbd7; + -webkit-box-shadow: 0 0 10px #dcdbd7; + -moz-box-shadow: 0 0 10px #dcdbd7; + box-shadow: 0 0 10px #dcdbd7; +} +.ui-sortable-helper label { + color: #4790d0 !important; +} +.ui-sortable-helper .custom-data-toggle { + background-color: #ffffff !important; +} +.form-box input[type=file] { + font-size: 100%; +} +.form-element, +.below-fieldset-element { + margin-top: 15px; +} +.form-element:first-child, +.below-fieldset-element:first-child { + margin-top: 0px; +} +.form-element:last-child, +.below-fieldset-element:last-child { + margin-bottom: 20px; +} +.form-element ul, +.below-fieldset-element ul { + padding: 5px 0; + margin: 0; + list-style-type: none; +} +.form-element ul li, +.below-fieldset-element ul li { + color: #fa716f; +} +.form-element > label, +.below-fieldset-element > label { + display: inline-block; + margin-bottom: 5px; +} +.below-fieldset-element { + padding: 20px; + width: 260px; +} +.below-fieldset-element #submit { + width: 100%; +} +.forgot-password-link { + padding: 14px 0; + display: block; + text-align: center; +} +/* -----------[Specific form stlying for a particular parent class]--------------*/ +.button-list { + margin-top: 20px; +} +.button-list li { + padding: 0 20px; + min-height: 50px; + vertical-align: middle; +} +.button-list li .btn { + width: 100%; +} +.add-site-description, +.add-alarm-description { + color: #4790d0; + margin: 80px 0 0 0; +} +.error { + color: #fa716f; +} +.form-tabs { + margin-top: 97px; +} +.mandatory-settings { + display: inline-block; + color: #4790d0; +} +.location-help, +.summary-help { + position: absolute; + display: none; +} +body.vrm.site { + background-color: #f0efeb; +} +body.vrm.site.add .container .container-inner, +body.vrm.site.update .container .container-inner, +#form-container-sitesettings .container .container-inner { + width: 982px; +} +body.vrm.site.add .form-container, +body.vrm.site.update .form-container, +#form-container-sitesettings .form-container { + padding-bottom: 60px; +} +body.vrm.site.add #location_timezone, +body.vrm.site.update #location_timezone, +#form-container-sitesettings #location_timezone { + width: 262px; +} +body.vrm.site.add #fieldset-location.fieldset-location-map, +body.vrm.site.update #fieldset-location.fieldset-location-map, +#form-container-sitesettings #fieldset-location.fieldset-location-map { + border: none; + position: relative; + margin-right: 20px; + padding: 0; +} +body.vrm.site.add #fieldset-location.fieldset-location-map .location-map-container, +body.vrm.site.update #fieldset-location.fieldset-location-map .location-map-container, +#form-container-sitesettings #fieldset-location.fieldset-location-map .location-map-container { + border: 1px solid #dcdbd7; +} +body.vrm.site.add #fieldset-location.fieldset-location-map .location-map-container #location-map, +body.vrm.site.update #fieldset-location.fieldset-location-map .location-map-container #location-map, +#form-container-sitesettings #fieldset-location.fieldset-location-map .location-map-container #location-map { + border: 1px solid #ffffff; + height: 395px; + width: 618px; +} +body.vrm.site.add #fieldset-location.fieldset-location-map #location-info, +body.vrm.site.update #fieldset-location.fieldset-location-map #location-info, +#form-container-sitesettings #fieldset-location.fieldset-location-map #location-info { + background-color: #f0efeb; + height: 50px; + padding-top: 30px; + width: 100%; +} +body.vrm.site.add #fieldset-location.fieldset-location-map #location-info h3, +body.vrm.site.update #fieldset-location.fieldset-location-map #location-info h3, +#form-container-sitesettings #fieldset-location.fieldset-location-map #location-info h3 { + padding-top: 0; +} +body.vrm.site.add #fieldset-geofence.fieldset-geofence-map, +body.vrm.site.update #fieldset-geofence.fieldset-geofence-map, +#form-container-sitesettings #fieldset-geofence.fieldset-geofence-map { + border: none; + position: relative; + margin-right: 20px; + padding: 0; + width: 618px; + background-color: inherit; +} +body.vrm.site.add #fieldset-geofence.fieldset-geofence-map .geofence-map-container, +body.vrm.site.update #fieldset-geofence.fieldset-geofence-map .geofence-map-container, +#form-container-sitesettings #fieldset-geofence.fieldset-geofence-map .geofence-map-container { + margin-top: 20px; + border: 1px solid #dcdbd7; +} +body.vrm.site.add #fieldset-geofence.fieldset-geofence-map .geofence-map-container #geofence-map, +body.vrm.site.update #fieldset-geofence.fieldset-geofence-map .geofence-map-container #geofence-map, +#form-container-sitesettings #fieldset-geofence.fieldset-geofence-map .geofence-map-container #geofence-map { + border: 1px solid #ffffff; + height: 395px; + width: 618px; +} +body.vrm.site.add #fieldset-geofence.fieldset-geofence-map .form-element, +body.vrm.site.update #fieldset-geofence.fieldset-geofence-map .form-element, +#form-container-sitesettings #fieldset-geofence.fieldset-geofence-map .form-element { + width: 50% !important; +} +body.vrm.site.add #fieldset-geofence.fieldset-geofence-map .hint, +body.vrm.site.update #fieldset-geofence.fieldset-geofence-map .hint, +#form-container-sitesettings #fieldset-geofence.fieldset-geofence-map .hint { + color: #4790d0; +} +body.vrm.site.add #fieldset-geofence.fieldset-geofence-map .mobile-hint, +body.vrm.site.update #fieldset-geofence.fieldset-geofence-map .mobile-hint, +#form-container-sitesettings #fieldset-geofence.fieldset-geofence-map .mobile-hint { + color: #4790d0; +} +body.vrm.site.add #fieldset-geofence.fieldset-geofence-map .mobile-hint, +body.vrm.site.update #fieldset-geofence.fieldset-geofence-map .mobile-hint, +#form-container-sitesettings #fieldset-geofence.fieldset-geofence-map .mobile-hint { + display: none; +} +body.vrm.site.add #submit, +body.vrm.site.update #submit, +#form-container-sitesettings #submit { + max-width: 260px; + float: right; +} +#form-container-user-settings #toggleInviteForm { + position: absolute; + top: 4px; + right: 10px; +} +#form-container-user-settings #form-container-inviteuser { + width: 320px; +} +#form-container-user-settings #form-container-inviteuser textarea#personalMessage { + max-width: 280px; + min-width: 280px; + min-height: 100px; + height: 100px; +} +#form-container-user-settings #inviteFormExplanation { + position: absolute; + top: 100px; + right: 0; + width: 270px; + color: #4790d0; +} +#form-container-user-settings #form-user-settings-container .form-input-list .only-text { + font-size: 15px !important; +} +#form-container-user-settings #form-user-settings-container .form-input-list h4 { + color: #63625e; +} +.globalbtn { + margin-top: 20px; +} +/* -----------[User pages]--------------*/ +.vrm.user h2 { + padding-left: 20px; +} +/* ---------[Page with title and table]--------------------*/ +.vrm { + padding-bottom: 30px; +} +.vrm h2.title-with-icon { + position: relative; + padding-left: 60px; + margin-top: 48px; + margin-bottom: 38px; + line-height: 27px; +} +.vrm h2.title-with-icon .sprite-icons { + position: absolute; + left: 0px; + margin: 0px 17px; +} +/* ---------[Admin tables, could go to styleguide]------------*/ +.table-overview.registrations-per-month thead th { + text-align: center; +} +.table-overview, +.table-diagnostics { + background-color: #ffffff; + border: 1px solid #dcdbd7; + border-collapse: collapse; + margin-top: 5px; + margin-bottom: 30px; + width: 100%; + font-size: 13.5px; +} +.table-overview thead th, +.table-diagnostics thead th, +.table-overview tfoot th, +.table-diagnostics tfoot th { + text-align: left; + color: #63625e; + background-color: #f0efeb; +} +.table-overview th, +.table-diagnostics th, +.table-overview td, +.table-diagnostics td { + padding: 4px 5px 3px 5px; + border-bottom: 1px solid #dcdbd7; +} +.table-overview.table-striped thead tr, +.table-diagnostics.table-striped thead tr, +.table-overview.table-striped tfoot tr, +.table-diagnostics.table-striped tfoot tr { + background-color: #e6e5e1; +} +.table-overview.table-striped thead tr th, +.table-diagnostics.table-striped thead tr th, +.table-overview.table-striped tfoot tr th, +.table-diagnostics.table-striped tfoot tr th { + border-bottom-width: 2px; +} +.table-overview.table-striped tbody tr:nth-child(2n), +.table-diagnostics.table-striped tbody tr:nth-child(2n) { + background-color: #e6e5e1; +} +.table-overview img.gravatar, +.table-diagnostics img.gravatar { + height: 40px; + width: 40px; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; +} +.table-overview div.gravatar-wrapper, +.table-diagnostics div.gravatar-wrapper { + height: 40px; + width: 40px; + position: relative; + text-align: center; + vertical-align: middle; + color: #4790d0; + text-transform: uppercase; + font-size: 14px; + line-height: 40px; + border: none !important; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +.table-overview div.gravatar-wrapper img.gravatar, +.table-diagnostics div.gravatar-wrapper img.gravatar { + position: absolute !important; + top: 0 !important; + left: 0 !important; + height: 38px !important; + width: 38px !important; + float: none !important; + margin: 0 !important; + border-width: 1px !important; + border-style: solid !important; + border-color: #dcdbd7; + background: none !important; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +.table-overview img.gravatar, +.table-diagnostics img.gravatar, +.table-overview div.gravatar-wrapper img.gravatar, +.table-diagnostics div.gravatar-wrapper img.gravatar, +.table-overview div.gravatar-wrapper, +.table-diagnostics div.gravatar-wrapper { + background-color: white; +} +.chrome .table-overview img.gravatar, +.chrome .table-diagnostics img.gravatar, +.chrome .table-overview div.gravatar-wrapper img.gravatar, +.chrome .table-diagnostics div.gravatar-wrapper img.gravatar, +.chrome .table-overview div.gravatar-wrapper, +.chrome .table-diagnostics div.gravatar-wrapper, +.webkit .table-overview img.gravatar, +.webkit .table-diagnostics img.gravatar, +.webkit .table-overview div.gravatar-wrapper img.gravatar, +.webkit .table-diagnostics div.gravatar-wrapper img.gravatar, +.webkit .table-overview div.gravatar-wrapper, +.webkit .table-diagnostics div.gravatar-wrapper { + line-height: 44px; +} +/* --------[Specific tables]----------*/ +.table-system-overview { + background-color: #ffffff; + border: 1px solid #dcdbd7; + border-collapse: collapse; + margin-top: 5px; + margin-bottom: 30px; + width: 100%; +} +.table-system-overview thead th, +.table-system-overview tfoot th { + text-align: left; + color: #63625e; + background-color: #f0efeb; +} +.table-system-overview th, +.table-system-overview td { + padding: 15px 20px 13px 20px; + border-bottom: 1px solid #dcdbd7; +} +.table-system-overview th:first-child, +.table-system-overview td:first-child { + width: 200px; +} +#mobile-alarms { + display: none; +} +.table-alarms .alarmStarted { + color: #fa716f; +} +.table-alarms .alarmCleared { + color: #4790d0; +} +.table-alarms .alarmActive { + color: #fa716f; +} +.table-alarms .alarmInactive { + color: #4790d0; +} +.pagination ul { + display: inline-block; + background-color: #ffffff; + border: 1px solid #dcdbd7; + margin: 15px 0; + padding: 0 10px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.pagination ul li { + display: inline-block; + padding: 5px; +} +.pagination ul li a { + text-decoration: none; +} +.pagination ul li.active { + font-weight: bold; + font-size: calc(16px); +} +.pagination ul li.disabled a { + color: #272622; + cursor: default; +} +.pagination.pagination-centered { + margin-left: auto; + margin-right: auto; + text-align: center; +} +/* -----------[Menu]--------------*/ +.top-menu { + background-color: #272622; + height: 35px; + position: relative; +} +.top-menu .container-inner { + height: 100%; + text-align: right; +} +.top-menu ul { + height: 100%; + margin: 0; +} +.top-menu ul li { + display: inline-block; + height: 100%; + margin-top: -13px; + padding: 0 12.5px; +} +.top-menu ul li.pull-left { + -webkit-transform: translateY(13px); + -moz-transform: translateY(13px); + -ms-transform: translateY(13px); + -o-transform: translateY(13px); + transform: translateY(13px); +} +.top-menu ul li > ul.sub-menu { + display: none; + position: absolute; + top: 100%; + z-index: 999999; + height: auto; + margin-top: -8px; + margin-left: -32.5px; + padding: 8px 20px 20px 20px; +} +.top-menu ul li > ul.sub-menu li { + display: block; + background-color: #272622; + height: 35px; + padding: 0; + margin-top: 0; + text-align: left; + border-left: 1px solid #dcdbd7; + border-right: 1px solid #dcdbd7; +} +.top-menu ul li > ul.sub-menu li a { + padding: 7px 12.5px; + box-sizing: border-box; + min-width: 100%; +} +.top-menu ul li > ul.sub-menu li:last-child { + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; + barder-bottom: 1px solid #dcdbd7; +} +.top-menu ul li:hover > ul.sub-menu, +.top-menu ul li > ul.sub-menu.expanded { + display: block; +} +.top-menu a, +.top-menu span { + color: #ffffff; + display: inline-block; + padding-top: 7px; + text-decoration: none; +} +.top-menu a:hover { + color: #ffffff; + text-decoration: underline; +} +.top-menu .plus-sign { + color: #afe18d; +} +.top-menu .container-inner { + padding-bottom: 0; +} +.top-menu-language-selector-container { + border-left: 1px solid #63625e; + cursor: pointer; + -webkit-transform: translateY(13px); + -moz-transform: translateY(13px); + -ms-transform: translateY(13px); + -o-transform: translateY(13px); + transform: translateY(13px); +} +.top-menu-language-selector-container:hover .top-menu-language-abbreviation { + text-decoration: underline; +} +.top-menu-language-abbreviation { + color: #ffffff; + float: left; + padding-top: 7px; +} +.top-menu-language-handle { + float: left; + margin-left: 4px; + margin-top: 5px; +} +.top-menu-language-fly-out { + background-color: #ffffff; + left: 0; + overflow: hidden; + position: absolute; + top: 35px; + width: 100%; + z-index: 1100; + -webkit-box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); +} +.top-menu-language-fly-out-content { + text-align: left; +} +.top-menu-language-fly-out-content.transitional { + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +.top-menu-language-fly-out-content.visible { + margin-top: 0 !important; +} +.top-menu-language-fly-out-title { + margin-top: 24px; +} +.top-menu-language-fly-out-language-container { + margin-bottom: 20px; + margin-top: 20px; +} +.top-menu .top-menu-language-fly-out-language-link { + color: #4790d0; +} +.top-menu .top-menu-language-fly-out-language-link:hover { + color: #4790d0; +} +.top-menu .top-menu-language-fly-out-language-current { + display: inline-block; + padding-top: 7px; + color: #272622; +} +.mobile-menu { + display: none; +} +.site-overlay-on-menu-open { + background-color: rgba(0, 0, 0, 0.6); + left: -10000px; + position: fixed; + top: 0; + height: 100%; + width: 100%; + z-index: 1099; + opacity: 0; + filter: alpha(opacity=0); +} +.mobile-menu-open-handle { + display: none; +} +.mobile-menu-close-handle { + position: fixed; + top: 20px; + right: -50px; + z-index: 1100; +} +/* -----------[Header]--------------*/ +.header { + background-color: #f0efeb; + border-bottom: 1px solid #dcdbd7; + height: 80px; +} +.header .secondary-controls { + margin: 15px 10px; +} +.header .secondary-controls .btn { + padding: 14px 10px 13px 10px; +} +.header .secondary-controls ul li { + display: inline-block; + margin-left: 15px; +} +.header .secondary-controls ul li .login { + background-color: #4790d0; + color: #ffffff; +} +.header .secondary-controls ul li .login:hover { + background-color: #387dc5; +} +.breadcrumb { + background-color: #f0efeb; + border-bottom: 1px solid #dcdbd7; + border-top: 1px solid #dcdbd7; + height: 80px; +} +.breadcrumb .breadcrumb-buttons-container { + padding-top: 20px; + text-align: right; +} +.breadcrumb .breadcrumb-buttons-container .btn { + float: right; + font-size: 15px; + margin-left: 16px; +} +.breadcrumb .breadcrumb-buttons-container .remote-console-control-icon { + fill: #ffffff; +} +.breadcrumb .breadcrumb-buttons-container .remote-console-control-icon path { + fill: #ffffff; +} +.breadcrumb .site-select { + display: inline-block; + text-align: left; +} +.breadcrumb .secondary-controls { + margin: 15px 10px; +} +.breadcrumb .secondary-controls ul li { + display: inline-block; + margin-left: 15px; +} +.breadcrumb-site-title { + display: none; + font-size: 21px; + margin: 30px 0; + text-align: left; +} +.branding-logo { + display: inline-block; + width: 240px; + height: 80px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -97px -577px; + float: left; + margin: 0; + text-decoration: none; + border: none; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .branding-logo { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sites-statistics { + display: none; +} +.map-view .map { + height: 230px; +} +.map-overview .map { + height: 480px; +} +.siteinfo img { + position: absolute !important; + width: 372.59999999999997px; + height: 532.8px; + clip: rect(86.39999999999999px 28.799999999999997px 100.79999999999998px 14.399999999999999px); + top: -81.39999999999999px; + right: -338.8px; +} +.siteinfo .infowindow { + background-color: white; + padding: 10px; + border: 1px solid #dcdbd7; + font-family: 'MuseoSans-300', sans-serif; + font-size: 12px; + line-height: 13px; +} +.siteinfo .infowindow > *:first-child { + padding-right: 14.399999999999999px; +} +.siteinfo .infowindow > * { + margin-top: 6px; +} +.map-overview, +.map-view { + border-bottom: 1px solid #dcdbd7; + position: relative; +} +.map-overview .top-shadow, +.map-view .top-shadow, +.map-overview .bottom-shadow, +.map-view .bottom-shadow { + background-color: rgba(99, 98, 94, 0.1); + position: absolute; + width: 100%; + z-index: 3; +} +.map-overview .top-shadow, +.map-view .top-shadow { + height: 5px; +} +.map-overview .bottom-shadow, +.map-view .bottom-shadow { + bottom: 0px; + height: 10px; +} +.map .cluster { + margin-top: -31px; + margin-left: -10px; +} +#vrm-tabs { + margin-top: -65px; + padding-left: 10px; + position: absolute; + z-index: 4; +} +body.vrm.site.index .main-content { + position: relative; +} +body .site-overview { + padding-top: 50px; +} +body .site-overview h2 { + margin-top: 0; + margin-bottom: 15px; +} +body .site-overview .container-inner { + position: relative; +} +body .site-overview .container-inner .over-google-map { + position: absolute; + top: -116px; + z-index: 2; +} +body .site-overview .container-inner .over-google-map .grid-item { + margin-bottom: 20px; +} +body .site-overview .container-inner table.site-list { + background: #ffffff; + width: 100%; + border: 1px solid #dcdbd7; +} +body .site-overview .container-inner table.site-list th { + text-align: left; + height: 45px; + border-bottom: 1px solid #dcdbd7; + background: #faf9f5; + padding: 0 0 0 20px; + font-weight: normal; + color: #63625e; + width: 110px; +} +body .site-overview .container-inner table.site-list th.name { + width: 200px; +} +body .site-overview .container-inner table.site-list th.soc { + width: 125px; +} +body .site-overview .container-inner table.site-list th.alarm { + width: 55px; + padding-right: 20px; + text-align: center; +} +body .site-overview .container-inner table.site-list th.sort-column-asc::after { + content: "▴"; + margin-left: 6px; +} +body .site-overview .container-inner table.site-list th.sort-column-desc::after { + content: "▾"; + margin-left: 6px; +} +body .site-overview .container-inner table.site-list tr.has-alarm td:first-child { + border-left: 3px solid #fa716f; + padding-left: 17px; +} +body .site-overview .container-inner table.site-list td { + height: 50px; + border-bottom: 1px solid #dcdbd7; + padding: 0 0 0 20px; +} +body .site-overview .container-inner table.site-list td.has-alarm { + border-left: 3px solid #fa716f; + padding-left: 17px; +} +body .site-overview .container-inner table.site-list td .caption { + line-height: 24px; +} +body .site-overview .container-inner table.site-list td:last-child { + text-align: center; + padding-right: 20px; +} +body .site-overview .container-inner table.site-list .voltage { + color: #387dc5; +} +body .site-overview .container-inner table.site-list .current { + color: #f0962e; +} +.site-overview-controls { + background: #faf9f5; + border-bottom: 1px solid #dcdbd7; + color: #63625e; + padding: 30px 0; +} +.site-overview-controls .container-inner { + padding: 0; +} +.site-overview-controls .container-inner .grid-item .caption { + margin-bottom: 5px; +} +.site-overview-controls .container-inner .grid-item.view-toggle .view-toggle-container { + margin-left: 20px; +} +.site-overview-controls .container-inner .grid-item.view-toggle .view-toggle-container .custom-toggle { + margin: 10px 0; + text-align: right; +} +.site-overview-controls .container-inner .grid-item.view-toggle .view-toggle-container .custom-toggle .alternative-display .on .sprite-icons, +.site-overview-controls .container-inner .grid-item.view-toggle .view-toggle-container .custom-toggle .alternative-display .off .sprite-icons { + margin-top: 8px; +} +.site-overview-controls .container-inner .grid-item.view-toggle .view-toggle-container .custom-toggle .alternative-display .off { + background-color: #4790d0 !important; + -webkit-box-shadow: 0px 2px 0px #387dc5 inset !important; + -moz-box-shadow: 0px 2px 0px #387dc5 inset !important; + box-shadow: 0px 2px 0px #387dc5 inset !important; +} +.site-overview-controls .container-inner .grid-item.view-toggle .view-toggle-container .custom-toggle .alternative-display .knob { + -webkit-box-shadow: 5px 0px 0px #5b9bcd !important; + -moz-box-shadow: 5px 0px 0px #5b9bcd !important; + box-shadow: 5px 0px 0px #5b9bcd !important; +} +.site-overview-controls .container-inner .grid-item.view-toggle .view-toggle-container .custom-toggle input:checked + label .alternative-display .knob { + -webkit-box-shadow: -5px 0px 0px #5b9bcd !important; + -moz-box-shadow: -5px 0px 0px #5b9bcd !important; + box-shadow: -5px 0px 0px #5b9bcd !important; + left: 57px; +} +.site-overview-controls .container-inner .grid-item.tags { + clear: none; + padding-top: 21px; +} +.tags, +.tagsinput { + clear: both; +} +.tags span.tag, +.tagsinput span.tag { + background-color: #4790d0; + border: 1px solid #dcdbd7; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: 0px 2px 0px #387dc5 inset; + -moz-box-shadow: 0px 2px 0px #387dc5 inset; + box-shadow: 0px 2px 0px #387dc5 inset; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + color: #ffffff; + display: inline-block; + min-height: 40px; + padding: 8px 45px 8px 10px; + text-decoration: none; + margin: 10px 10px 0 0; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + position: relative; +} +.tags span.tag:hover, +.tagsinput span.tag:hover { + background-color: #387dc5; + text-decoration: none; +} +.tags span.tag a, +.tagsinput span.tag a { + color: #4790d0; + position: absolute; + right: 7px; + top: 7px; + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -432px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .tags span.tag a, + .tagsinput span.tag a { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.site-view { + background-color: #f0efeb; +} +.site-view .container-inner { + position: relative; +} +.site-view .container-inner .tab-select { + display: none; +} +.site-view .container-inner.no-bottom-padding { + padding-bottom: 0px; +} +.VRM_Widget_SiteSummary { + margin-bottom: 20px; +} +.VRM_Widget_SiteSummary a { + display: block; + text-decoration: none; + color: #63625e; +} +.VRM_Widget_SiteSummary .title { + line-height: 22px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.VRM_Widget_SiteSummary .sub-title { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.VRM_Widget_SiteSummary.has-alarm .site-name { + color: #f35c58; + position: relative; +} +.VRM_Widget_SiteSummary.has-alarm .site-name .title { + padding-right: 30px; +} +.VRM_Widget_SiteSummary.has-alarm .site-name .alert-red { + position: absolute; + right: 20px; + top: 21px; +} +.VRM_Widget_SiteSummary.has-alarm a { + color: #f35c58; +} +.VRM_Widget_SolarChargerPVYield .jqplot-target .jqplot-yaxis { + color: #666666 !important; +} +.site-info-list li { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + max-height: 99px; + min-height: 99px; + border-top: 1px solid #dcdbd7; + border-left: 1px solid #dcdbd7; + border-right: 1px solid #dcdbd7; + background-color: #ffffff; + padding: 22px 20px 24px 20px; +} +.site-info-list li:first-child { + background-color: #faf9f5; + max-height: 79px; + min-height: 79px; +} +.site-info-list li:first-child .data-container .voltage { + color: #387dc5; +} +.site-info-list li:first-child .data-container .current { + color: #f0962e; +} +.site-info-list li.site-name { + padding: 0px; +} +.site-info-list li.site-name a { + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + height: 78px; + width: 298px; +} +.site-info-list li.site-name a:hover { + background-color: #ffffff; +} +.site-info-list li.site-name .title { + font-size: 21px; + padding-left: 20px; + padding-right: 20px; + padding-top: 22px; +} +.site-info-list li.site-name .sub-title { + padding-left: 20px; +} +.site-info-list li.site-name .sub-title .caption { + vertical-align: super; +} +.site-info-list li.site-info { + *zoom: 1; +} +.site-info-list li.site-info:before, +.site-info-list li.site-info:after { + display: table; + content: ""; + line-height: 0; +} +.site-info-list li.site-info:after { + clear: both; +} +.site-info-list li.site-info .img-container { + width: 45px; + height: 45px; + float: left; +} +.site-info-list li.site-info .data-container { + float: right; + width: 170px; + padding: 5px 5px 5px 15px; +} +.site-info-list li.site-info .data-container .caption { + display: block; + font-size: 18px; +} +.site-info-list li.site-info .data-container .data-value { + display: block; +} +.site-info-list li.site-info .data-container .data-value .olddata { + color: #f35c58; +} +.site-info-list li.site-info .data-container .data-value .current { + color: #f0962e; +} +.site-info-list li.site-info .data-container .data-value .voltage { + color: #387dc5; +} +.site-info-list li.site-info .data-container .data-value .standard { + color: #387dc5; +} +.site-info-list li:last-child { + border-bottom: 1px solid #dcdbd7; +} +/* -----------[Custom data toggle]--------------*/ +.custom-data-toggle { + *zoom: 1; + background-color: #e6e5e1; + border: 1px solid #dcdbd7; + padding: 0px 10px; +} +.custom-data-toggle:before, +.custom-data-toggle:after { + display: table; + content: ""; + line-height: 0; +} +.custom-data-toggle:after { + clear: both; +} +.custom-data-toggle.checked { + background-color: #ffffff; +} +.custom-data-toggle input { + display: none; +} +.custom-data-toggle label { + display: block; + height: 50px; + padding: 20px 10px; +} +.custom-data-toggle .img-container { + width: 45px; + height: 45px; + float: left; +} +.custom-data-toggle .data-container { + float: right; + width: 180px; + padding: 5px; +} +.custom-data-toggle .data-container .caption { + display: block; +} +.custom-data-toggle .data-container .data-value { + display: block; +} +/* -------------[ Google Maps ]-------------- */ +.gm-style img { + /** Fixes that obnoxious Bootstrap responsive image hack */ + max-width: none; +} +.gmnoprint img { + max-width: inherit; +} +/* --------------[ Tabs ]--------------------*/ +#vrm-tabs-content { + color: #63625e; +} +#vrm-tabs-content .tab-pane .content { + position: relative; + padding: 0; +} +#vrm-tabs-content .tab-pane#settings #main-settings-form { + display: none; +} +#vrm-tabs-content .tab-pane#settings .content .form-tabs-container .mobile-title { + display: none; +} +#vrm-tabs-content .tab-pane#settings .content .form-tabs-container .form-tabs { + margin-top: 0px; +} +#vrm-tabs-content .tab-pane#settings .content .form-tabs-container .form-tabs li { + overflow: hidden; +} +#vrm-tabs-content .tab-pane#settings .content .form-tabs-container .form-tabs li:first-child { + -webkit-border-top-left-radius: 5px; + -moz-border-radius-topleft: 5px; + border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; + -moz-border-radius-topright: 5px; + border-top-right-radius: 5px; +} +#vrm-tabs-content .tab-pane#settings .content .form-tabs-container .form-tabs li:first-child a { + -webkit-border-top-left-radius: 5px; + -moz-border-radius-topleft: 5px; + border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; + -moz-border-radius-topright: 5px; + border-top-right-radius: 5px; +} +#vrm-tabs-content .tab-pane#settings .content .form-tabs-container .form-tabs li:last-child { + -webkit-border-bottom-left-radius: 5px; + -moz-border-radius-bottomleft: 5px; + border-bottom-left-radius: 5px; + -webkit-border-bottom-right-radius: 5px; + -moz-border-radius-bottomright: 5px; + border-bottom-right-radius: 5px; +} +#vrm-tabs-content .tab-pane#settings .content .form-tabs-container .form-tabs li:last-child a { + -webkit-border-bottom-left-radius: 5px; + -moz-border-radius-bottomleft: 5px; + border-bottom-left-radius: 5px; + -webkit-border-bottom-right-radius: 5px; + -moz-border-radius-bottomright: 5px; + border-bottom-right-radius: 5px; +} +#vrm-tabs-content .tab-pane#settings .content .form-tabs-container .form-tabs .error, +#vrm-tabs-content .tab-pane#settings .content .form-tabs-container .form-tabs .error .required { + color: #fa716f; +} +#vrm-tabs-content .tab-pane#settings .content #settingsButtonErrorText { + display: block; + margin-top: 20px; + text-align: center; + color: #fa716f; +} +#vrm-tabs-content .tab-pane#settings .content .remove-site-question { + margin-bottom: 20px; +} +#vrm-tabs-content .tab-pane#settings .content .remove-site-question h3 { + margin-bottom: 10px; +} +#vrm-tabs-content .tab-pane#settings .content .header { + background-color: #f0efeb; + border: 1px solid #dcdbd7; + border-bottom: none; + height: 10px; + padding: 17px 20px 22px; +} +#vrm-tabs-content .tab-pane#settings .content .header .caption-right { + float: right; + padding-right: 18px; +} +#vrm-tabs-content .tab-pane#settings .content .sortable-widgets-header { + background-color: #faf9f5; + border: 1px solid #dcdbd7; + border-bottom: none; + height: 30px; + padding: 18px 20px 2px 18px; +} +#vrm-tabs-content .tab-pane#settings .content .sortable-widgets-header .caption { + font-size: 21px; +} +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .header { + background-color: #faf9f5; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list { + background-color: #ffffff; + border: 1px solid #dcdbd7; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row { + border-bottom: 1px solid #f0efeb; + height: 60px; + overflow: hidden; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row:last-child, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row:last-child, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row:last-child { + border-color: #dcdbd7; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container { + padding: 10px 20px 10px 20px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container .custom-toggle > input, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .custom-toggle > input, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle > input { + display: none; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container .custom-toggle label, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label { + font-size: 18px; + padding: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container .custom-toggle label .alternative-display, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label .alternative-display, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label .alternative-display { + left: auto; + right: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container .custom-toggle label a, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label a, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label a { + display: block; + position: absolute; + top: 8px; + right: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container .custom-toggle label a:hover > div, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label a:hover > div, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label a:hover > div { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -432px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container .custom-toggle label a:hover > div, + #vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label a:hover > div, + #vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label a:hover > div { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container .only-text, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .only-text, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .only-text { + font-size: 18px; + line-height: 44px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container .only-text .on-off, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .only-text .on-off, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .only-text .on-off { + float: right; + margin-top: -10px; + width: 170px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container .email-caption, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .email-caption, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .email-caption { + color: #387dc5; + font-size: 15px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list:last-child, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list:last-child, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list:last-child { + border-bottom: none; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list.sortable-widgets, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list.sortable-widgets, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list.sortable-widgets { + position: relative; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list.sortable-widgets li, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list.sortable-widgets li, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list.sortable-widgets li { + height: 49px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list.sortable-widgets .row, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list.sortable-widgets .row, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list.sortable-widgets .row { + color: #4790d0; + cursor: move; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list.sortable-widgets .row .inner-container, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list.sortable-widgets .row .inner-container, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list.sortable-widgets .row .inner-container { + color: #63625e; + display: block; + padding: 17px 0 12px 46px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list.sortable-widgets .row .inner-container .custom-toggle label, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list.sortable-widgets .row .inner-container .custom-toggle label, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list.sortable-widgets .row .inner-container .custom-toggle label { + cursor: move; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list.sortable-widgets .row input[type="checkbox"], +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list.sortable-widgets .row input[type="checkbox"], +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list.sortable-widgets .row input[type="checkbox"] { + position: absolute; + visibility: hidden; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list.sortable-widgets .row.ui-sortable-placeholder, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list.sortable-widgets .row.ui-sortable-placeholder, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list.sortable-widgets .row.ui-sortable-placeholder { + visibility: visible !important; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row { + border-bottom: 1px solid #f0efeb; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .disabled-widgets-container { + float: right; + margin-right: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .disabled-widgets { + background-color: #f0efeb; + border: none; + min-height: 50px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .disabled-widgets li { + border: 1px solid #dcdbd7; + margin-bottom: -1px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .disabled-widgets li .inner-container { + padding-left: 37px !important; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .disabled-widgets .ui-sortable-placeholder { + border: none; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .sortable-widget-list-disabled-caption { + margin-bottom: 3px; + margin-top: 27px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets-container { + float: left; + margin-left: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets-container .horizontal-line { + background-color: #dcdbd7; + height: 1px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets { + list-style-type: none; + margin: 0; + padding: 0; + -webkit-box-shadow: 0 0 10px #dcdbd7; + -moz-box-shadow: 0 0 10px #dcdbd7; + box-shadow: 0 0 10px #dcdbd7; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets li { + counter-increment: customlistcounter; + list-style-position: inside; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets li:before { + content: counter(customlistcounter) " "; + float: left; + margin-left: 20px; + margin-top: 17px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets li:first-child { + counter-reset: customlistcounter; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets .placeholder-list-item { + background: url('/img/drag-drop-placeholder-pattern.png') repeat; + background-color: #f0efeb !important; + height: 99px; + position: relative; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets .placeholder-list-item:before { + background-color: #f0efeb; + content: ' '; + left: 50%; + margin-left: -12px; + margin-top: -12px; + position: absolute; + top: 50%; + -webkit-border-radius: 100px; + -moz-border-radius: 100px; + border-radius: 100px; + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -672px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets .placeholder-list-item:before { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets .ui-sortable-placeholder { + background: url('/img/drag-drop-placeholder-pattern.png') repeat; + background-color: #f0efeb !important; + height: 99px; + position: relative; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets .ui-sortable-placeholder:before { + background-color: #f0efeb; + content: ' '; + left: 50%; + margin-left: -12px; + margin-top: -12px; + position: absolute; + top: 50%; + -webkit-border-radius: 100px; + -moz-border-radius: 100px; + border-radius: 100px; + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -672px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets .ui-sortable-placeholder:before { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label { + line-height: 21px; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .only-text, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .only-text { + line-height: 21px; +} +#vrm-tabs-content .tab-pane#settings .content #form-container-sitesettings { + margin-bottom: 20px; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .header { + background-color: #faf9f5; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .header .caption-right { + padding-right: 0; + width: 170px; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container img.gravatar { + height: 40px; + width: 40px; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper { + height: 40px; + width: 40px; + position: relative; + text-align: center; + vertical-align: middle; + color: #4790d0; + text-transform: uppercase; + font-size: 14px; + line-height: 40px; + border: none !important; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar { + position: absolute !important; + top: 0 !important; + left: 0 !important; + height: 38px !important; + width: 38px !important; + float: none !important; + margin: 0 !important; + border-width: 1px !important; + border-style: solid !important; + border-color: #dcdbd7; + background: none !important; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container img.gravatar, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper { + float: left; + margin-right: 20px; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container img.gravatar.admin, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar.admin, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper.admin { + color: #8bc964; + border-color: #8bc964; +} +.chrome #vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container img.gravatar, +.chrome #vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar, +.chrome #vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper, +.webkit #vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container img.gravatar, +.webkit #vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar, +.webkit #vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper { + line-height: 41px !important; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label .alternative-display { + display: block; + right: 40px; +} +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings { + margin-bottom: 10px; +} +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row { + border-bottom: 1px solid #f0efeb; +} +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container img.gravatar { + height: 40px; + width: 40px; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; +} +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper { + height: 40px; + width: 40px; + position: relative; + text-align: center; + vertical-align: middle; + color: #4790d0; + text-transform: uppercase; + font-size: 14px; + line-height: 40px; + border: none !important; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar { + position: absolute !important; + top: 0 !important; + left: 0 !important; + height: 38px !important; + width: 38px !important; + float: none !important; + margin: 0 !important; + border-width: 1px !important; + border-style: solid !important; + border-color: #dcdbd7; + background: none !important; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container img.gravatar, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper { + float: left; + margin-right: 20px; +} +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container img.gravatar.receives-notifications, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar.receives-notifications, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper.receives-notifications { + color: #4790d0; + border-color: #4790d0; +} +.chrome #vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container img.gravatar, +.chrome #vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar, +.chrome #vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper, +.webkit #vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container img.gravatar, +.webkit #vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar, +.webkit #vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper { + line-height: 41px !important; +} +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row:last-child { + border-bottom: 1px solid #dcdbd7; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings { + position: relative; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container { + /*width: 300px;*/ +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #alarm_notifications-label, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #no_data-label, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #float_limits-label, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #enum_limits-label { + height: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #alarm_notifications-element .custom-toggle.main label .caption, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #no_data-element .custom-toggle.main label .caption { + color: #387dc5; + font-size: 18px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #alarm_notifications-element dt { + height: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #alarm_notifications-element .form-input-list { + margin: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #no_data-element, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits { + position: relative; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #no_data-element fieldset dl, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits fieldset dl { + margin: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #no_data-element fieldset dl #no_data-enabled-label, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits fieldset dl #no_data-enabled-label { + height: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #no_data-element fieldset dl #no_data-enabled-element, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits fieldset dl #no_data-enabled-element { + margin-bottom: 15px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #no_data-element fieldset dl .hint, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits fieldset dl .hint { + color: #4790d0; + position: absolute; + right: -300px; + top: 0px; + width: 270px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-no_data { + margin-bottom: 15px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-float_limits, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits { + border: none; + padding: 15px; + margin-bottom: 15px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-float_limits > dl, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits > dl { + background-color: #f0efeb; + margin: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-float_limits > dl > dt, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits > dl > dt { + height: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-float_limits > dl > dd, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits > dl > dd { + position: relative; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-float_limits > dl > dd > fieldset > dl, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits > dl > dd > fieldset > dl { + margin-top: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-float_limits > dl > dd > fieldset > dl > dt:nth-child(2), +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits > dl > dd > fieldset > dl > dt:nth-child(2) { + height: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-float_limits > dl > dd > fieldset > dl > dt:not(:first-child), +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits > dl > dd > fieldset > dl > dt:not(:first-child) { + margin-top: 15px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-float_limits .custom-toggle.main label .caption, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits .custom-toggle.main label .caption { + color: #387dc5; + font-size: 18px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-float_limits .remove-alarm-button, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits .remove-alarm-button { + position: absolute; + top: 20px; + right: 20px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form dd { + margin-left: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .above-fieldset-element { + position: absolute; + right: 0px; + top: -69px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .above-fieldset-element .btn { + margin-left: 12px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .admin-users-box .title { + font-size: 18px; + margin: 20px 0 20px 20px; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings .sprite-icons.cross-in-circle-dark { + vertical-align: top; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-system-overview .device-icon { + float: left; + margin-right: 5px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-system-overview .device-icon + h3 { + line-height: 48px; +} +#vrm-tabs-content h2 { + margin: 12px 0 2px 0; +} +#vrm-tabs-content .section-heading { + *zoom: 1; + margin: 35px 0 7px 0; +} +#vrm-tabs-content .section-heading:before, +#vrm-tabs-content .section-heading:after { + display: table; + content: ""; + line-height: 0; +} +#vrm-tabs-content .section-heading:after { + clear: both; +} +#vrm-tabs-content .section-heading .sprite-icons { + float: left; + margin: 9px 21px 25px 25px; +} +#vrm-tabs-content .section-heading .information { + float: left; +} +#vrm-tabs-content .section-heading .btn { + margin-right: 10px; + margin-top: 29px; +} +#vrm-tabs-content .widget-filter-container { + margin-bottom: 20px; +} +#vrm-tabs-content .widget-filter-container #widget-filter { + width: 100%; +} +#vrm-tabs-content #advanced .section-heading { + margin: 35px 0; +} +#vrm-tabs-content .last-update-info { + color: #63625e; + padding-right: 15px; + text-align: right; + float: left; +} +#vrm-tabs-content .mobile-graph-refresh { + display: none; +} +#vrm-tabs-content .progress-meters-container { + border-top: 1px solid #dcdbd7; + height: 396px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container { + background-color: #ffffff; + border: 1px solid #dcdbd7; + border-top: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 20px 60px 48px 60px; + position: relative; + width: 100%; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter { + position: relative; + width: 100%; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container { + position: relative; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container .meter, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .meter { + background: #e6e5e1; + float: left; + height: 10px; + margin-top: 37px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container .meter .progress, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .meter .progress { + display: block; + height: 100%; + overflow: hidden; + width: 0%; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container .indicator, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .indicator { + display: inline-block; + position: absolute; + top: 0px; + visibility: hidden; + white-space: nowrap; + z-index: 1; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container .indicator .indicator-body, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .indicator .indicator-body { + color: #ffffff; + background: #63625e; + line-height: 30px; + padding: 0px 6px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container .indicator .indicator-footer, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .indicator .indicator-footer { + height: 5px; + width: 0px; + margin: 0 auto; + border-top: 5px outset #63625e; + border-left: 5px inset rgba(0, 0, 0, 0); + border-right: 5px inset rgba(0, 0, 0, 0); +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container .icon, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .icon { + left: -42px; + position: absolute; + top: 30px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container p, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container p { + font-size: 11px; + position: absolute; + top: 41px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container p.pull-right, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container p.pull-right { + right: 0px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .meter { + width: 100%; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .meter .progress { + background: #f7ab3e; + -webkit-border-top-left-radius: 2px; + -moz-border-radius-topleft: 2px; + border-top-left-radius: 2px; + -webkit-border-bottom-left-radius: 2px; + -moz-border-radius-bottomleft: 2px; + border-bottom-left-radius: 2px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .meter.positive { + -webkit-border-top-left-radius: 2px; + -moz-border-radius-topleft: 2px; + border-top-left-radius: 2px; + -webkit-border-bottom-left-radius: 2px; + -moz-border-radius-bottomleft: 2px; + border-bottom-left-radius: 2px; + width: 50%; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .meter.positive .progress { + background-color: #8bc964; + float: right; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .meter.negative { + -webkit-border-top-right-radius: 2px; + -moz-border-radius-topright: 2px; + border-top-right-radius: 2px; + -webkit-border-bottom-right-radius: 2px; + -moz-border-radius-bottomright: 2px; + border-bottom-right-radius: 2px; + width: 50%; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .meter.negative .progress { + background-color: #fa716f; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .center-point { + left: 50%; + position: absolute; + top: 36px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .center-point .divider { + background-color: #959490; + height: 18px; + width: 1px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .center-point .caption { + color: #959490; + font-size: 11px; + margin-left: -3px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container.power-distribution .meter { + background: #e6e5e1; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container.genset-actual .progress-meter .inner-meter-container .meter .progress { + background: #4790d0; +} +#vrm-tabs-content .progress-meters-container.rows-1 { + height: 198px; +} +#vrm-tabs-content .progress-meters-container.rows-1 .progress-meter-container { + height: 199px; + padding-top: 30px; +} +#vrm-tabs-content .progress-meters-container.rows-1 .progress-meter-container .inner-meter-container { + margin-top: 5px; +} +#vrm-tabs-content .progress-meters-container.rows-2 .progress-meter-container { + height: 198px; + padding-top: 30px; +} +#vrm-tabs-content .progress-meters-container.rows-2 .progress-meter-container .inner-meter-container { + margin-top: 5px; +} +#vrm-tabs-content .progress-meters-container.rows-2 .progress-meter-container:last-child { + height: 197px; +} +#vrm-tabs-content .progress-meters-container.rows-3 .progress-meter-container { + height: 132px; +} +#vrm-tabs-content .progress-meters-container.rows-3 .progress-meter-container:last-child { + height: 131px; +} +#vrm-tabs-content .totalProduced li:first-child { + border: none; + min-height: 99px; + padding: 0; +} +#vrm-tabs-content .totalProduced li:first-child .main-section { + background: #f7ab3e; + border: 0; + color: #ffffff; + height: 74px; + float: left; + padding-left: 40px; + padding-top: 25px; + width: 260px; +} +#vrm-tabs-content .totalProduced li:first-child .main-section h1 { + margin: 4px 0 0 0; +} +#vrm-tabs-content .totalProduced li:first-child .main-section.status-ok { + background: #8bc964; +} +#vrm-tabs-content .totalProduced li:first-child .main-section.status-alarm { + background: #fa716f; +} +#vrm-tabs-content .totalProduced li:first-child .corner { + position: absolute; + right: 10px; +} +#vrm-tabs-content .totalProduced li:first-child .corner.blue { + display: inline-block; + width: 30px; + height: 60px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -432px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #vrm-tabs-content .totalProduced li:first-child .corner.blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#vrm-tabs-content .totalProduced li:first-child .corner.orange { + display: inline-block; + width: 30px; + height: 60px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -462px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #vrm-tabs-content .totalProduced li:first-child .corner.orange { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#vrm-tabs-content .totalProduced li:first-child .corner.red { + display: inline-block; + width: 30px; + height: 60px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -492px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #vrm-tabs-content .totalProduced li:first-child .corner.red { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#vrm-tabs-content .totalProduced li:first-child .corner.green { + display: inline-block; + width: 30px; + height: 60px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -522px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #vrm-tabs-content .totalProduced li:first-child .corner.green { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#vrm-tabs-content .totalProduced li:nth-child(2) { + border-top: none; +} +#vrm-tabs-content .tab-pane#advanced .download-data-container { + position: absolute; + top: 14px; + right: 17px; + line-height: 26px; + padding-left: 28px; + max-height: 52px; + text-align: left; +} +#vrm-tabs-content .tab-pane#advanced .download-data-container .link-text { + padding: 0 5px; +} +#vrm-tabs-content .tab-pane#batteries .section-graph, +#vrm-tabs-content .tab-pane#solar-yield .section-graph, +#vrm-tabs-content .tab-pane#consumption .section-graph { + background-color: #ffffff; + border: 1px solid #dcdbd7; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-graph, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-graph, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-graph { + height: 324px; + margin: 40px 60px 30px 10px; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-graph.move-last-tick-to-front .jqplot-xaxis canvas:last-child, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-graph.move-last-tick-to-front .jqplot-xaxis canvas:last-child, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-graph.move-last-tick-to-front .jqplot-xaxis canvas:last-child { + left: 0px !important; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-legend, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-legend, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-legend { + background-color: #e6e5e1; + border-top: 1px solid #dcdbd7; + height: 60px; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-legend ul, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-legend ul, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-legend ul { + margin-left: 20px; + margin-top: 20px; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-legend ul li, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-legend ul li, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-legend ul li { + float: left; + margin-right: 50px; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-legend ul li .color-square, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-legend ul li .color-square, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-legend ul li .color-square { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + float: left; + height: 20px; + margin-right: 9px; + width: 20px; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-legend ul li .color-square.blue, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-legend ul li .color-square.blue, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-legend ul li .color-square.blue { + background-color: #4790d0; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-legend ul li .color-square.green, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-legend ul li .color-square.green, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-legend ul li .color-square.green { + background-color: #8bc964; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-legend ul li .color-square.orange, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-legend ul li .color-square.orange, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-legend ul li .color-square.orange { + background-color: #f7ab3e; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-legend ul li .color-square.red, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-legend ul li .color-square.red, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-legend ul li .color-square.red { + background-color: #fa716f; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-legend ul li .caption, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-legend ul li .caption, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-legend ul li .caption { + color: #63625e; + float: left; + font-size: 11px; +} +#vrm-tabs-content .tab-pane#batteries .site-info-list li:first-child { + background-color: #ffffff; + max-height: 99px; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li, +#vrm-tabs-content .tab-pane#consumption .site-info-list li { + padding: 0px; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li:first-child, +#vrm-tabs-content .tab-pane#consumption .site-info-list li:first-child { + background-color: #ffffff; + max-height: 99px; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot { + float: left; + height: 93px; + margin-bottom: -4px; + margin-top: 10px; + width: 99px; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info { + float: left; + height: 99px; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info .caption, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info .caption { + font-size: 18px; + margin-top: 31px; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info .subcaption, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info .subcaption { + color: #f7ab3e; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info ul li, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info ul li { + border: none; + float: left; + min-height: 0px; + padding-right: 10px; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info ul li.toGrid, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info ul li.toGrid, +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info ul li.gridUse, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info ul li.gridUse { + color: #fa716f; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info ul li.toBattery, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info ul li.toBattery, +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info ul li.batteryUse, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info ul li.batteryUse { + color: #4790d0; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info ul li.directUse, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info ul li.directUse, +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info ul li.solarUse, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info ul li.solarUse { + color: #f7ab3e; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info ul li.gensetUse, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info ul li.gensetUse { + color: #8bc964; +} +/* --------------[ Date range selectors ]--------------------*/ +.advanced-view-time-toggle .icon-24-center { + left: 17px; + position: absolute; + top: 8px; +} +.date-range-selectors, +.date-range-selectors-advanced { + display: none; + background-color: #faf9f5; + padding: 21px 0 30px 0; + border-bottom: 1px solid #e5e4e0; +} +.date-range-selectors .custom_date_selector_container, +.date-range-selectors-advanced .custom_date_selector_container { + padding-left: 20px; +} +.date-range-selectors .selector-list > li, +.date-range-selectors-advanced .selector-list > li { + float: left; + margin-left: 17px; +} +.date-range-selectors .selector-list > li.pickerOnly, +.date-range-selectors-advanced .selector-list > li.pickerOnly { + visibility: hidden; + width: 0; + height: 0; + overflow: hidden; +} +.date-range-selectors .selector-list > li:first-child, +.date-range-selectors-advanced .selector-list > li:first-child { + margin-left: 0px; +} +.date-range-selectors .js__datepicker, +.date-range-selectors-advanced .js__datepicker { + color: #63625e; +} +.date-range-selectors .set-time-label, +.date-range-selectors-advanced .set-time-label, +.date-range-selectors .set-view-label, +.date-range-selectors-advanced .set-view-label { + color: #63625e; + line-height: 30px; +} +.date-range-selectors .time-selector-simple, +.date-range-selectors-advanced .time-selector-simple { + height: 51px; +} +.date-range-selectors .time-selector-custom, +.date-range-selectors-advanced .time-selector-custom { + height: 51px; + display: none; +} +.date-range-selectors .advanced-view-time-toggle, +.date-range-selectors-advanced .advanced-view-time-toggle { + margin: 5px 0 0 0; +} +.currenttime { + display: none; +} +/* --------------[ Date picker: pickadate ]--------------------*/ +.picker__input { + cursor: pointer; + text-align: center; +} +.picker { + margin-left: 10px; + margin-right: 10px; + width: 300px; + margin: 10px 0; +} +.picker .picker__holder { + border: 1px solid #dcdbd7; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + color: #272622; +} +.picker .picker__holder .picker__header .picker__nav--prev:hover, +.picker .picker__holder .picker__header .picker__nav--next:hover { + background-color: #e6e5e1; +} +.picker .picker__holder .picker__day--highlighted { + background-color: #4790d0; +} +.picker .picker__holder .picker__day--highlighted:hover { + background-color: #4790d0 !important; +} +.picker .picker__holder .picker__day--selected { + border: none; +} +.picker .picker__holder .picker__day--infocus:hover, +.picker .picker__holder .picker__day--outfocus:hover { + background-color: #e6e5e1; +} +.picker .picker__holder .picker__footer .picker__button--today:hover { + background-color: #e6e5e1; +} +.date-range-selectors-advanced .section { + float: left; + margin-left: 20px; +} +.date-range-selectors-advanced .section:first-child { + margin-left: 0px; +} +.date-range-selectors-advanced .mobile-caption { + display: none; +} +.date-range-selectors-advanced .vrm-date-time-picker { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 50px; + padding: 0; + position: relative; + display: inherit; +} +.date-range-selectors-advanced .vrm-date-time-picker .picker__input, +.date-range-selectors-advanced .vrm-date-time-picker .date-range-picker-divider { + background-color: #e6e5e1; + float: left; + min-height: 48px; + max-height: 48px; +} +.date-range-selectors-advanced .vrm-date-time-picker .picker__input.changed, +.date-range-selectors-advanced .vrm-date-time-picker .date-range-picker-divider.changed { + background-color: #ffffff; + color: #63625e; +} +.date-range-selectors-advanced .vrm-date-time-picker .js__datepicker { + border: none; + color: #63625e; + -webkit-border-top-right-radius: 0px; + -moz-border-radius-topright: 0px; + border-top-right-radius: 0px; + -webkit-border-bottom-right-radius: 0px; + -moz-border-radius-bottomright: 0px; + border-bottom-right-radius: 0px; + padding: 16px 0px 12px; + width: 121px; +} +.date-range-selectors-advanced .vrm-date-time-picker .js__timepicker { + border: none; + color: #63625e; + -webkit-border-top-left-radius: 0px; + -moz-border-radius-topleft: 0px; + border-top-left-radius: 0px; + -webkit-border-bottom-left-radius: 0px; + -moz-border-radius-bottomleft: 0px; + border-bottom-left-radius: 0px; + padding: 16px 0px 12px; + width: 95px; +} +.date-range-selectors-advanced .vrm-date-time-picker .date-range-picker-divider { + height: 100%; + width: 1px; +} +.date-range-selectors-advanced .vrm-date-time-picker .date-range-picker-divider .divider { + background-color: #dcdbd7; + height: 30px; + margin-top: 9px; +} +.date-range-selectors-advanced .vrm-date-time-picker:hover .date-range-picker-divider .divider { + background-color: #e6e5e1; +} +.date-range-selectors-advanced .vrm-date-time-picker .picker { + top: 49px; + left: -1px; +} +.date-range-selectors-advanced .set-time .btn { + cursor: pointer; + padding-bottom: 9px; + padding-top: 13px; + position: relative; +} +.date-range-selectors-advanced .set-time .btn .sprite-icons { + left: 18px; + position: absolute; + top: 13px; +} +.date-range-selectors-advanced .set-time .btn .caption { + font-size: 18px; + line-height: 25px; + padding-left: 26px; +} +.date-range-selectors-advanced .set-time .btn.disabled { + cursor: default; +} +.VRM_Widget_DateRange .header.date-range-header { + height: auto; + min-height: 64px; +} +.VRM_Widget_DateRange .header.date-range-header > h3 { + float: left; + margin: 13px 11px; +} +.VRM_Widget_DateRange .date-range-list { + margin: 0; + padding: 0; + list-style-type: none; +} +.VRM_Widget_DateRange .date-range-list > li { + float: left; + color: white; + font-weight: bold; + margin: 8px 4px; +} +.VRM_Widget_DateRange .date-range-list > li.range-button-refresh { + float: right; +} +.VRM_Widget_DateRange .date-range-list > li.range-button-download { + float: right; + margin-right: 12px; + margin-left: 6px; +} +.VRM_Widget_DateRange .date-range-list > li > input, +.VRM_Widget_DateRange .date-range-list > li > span > input { + font-size: 22px; + line-height: 28px; + width: 220px; +} +.VRM_Widget_DateRange .date-range-list > li > button.small { + margin: 2px 0px; +} +.VRM_Widget_DateRange .date-range-list > li > input:hover, +.VRM_Widget_DateRange .date-range-list > li > span > input:hover { + font-style: normal; + cursor: pointer; +} +#timeRange-desktop { + position: relative; + float: left; + overflow: hidden; + width: 100%; + height: 160px; + padding: 0 0 8px 0; + margin: 0; +} +#timeRange-desktop #timePickers-desktop { + position: absolute; + top: 10px; + left: 45px; + width: 100px; + font-family: Arial; + font-size: 11px; + font-weight: normal; +} +#timeRange-desktop #timePickers-desktop input { + width: 100%; +} +#timeRange-desktop #timeRangeSet-desktop { + position: absolute; + top: 65px; + right: 45px; +} +#timeRange-desktop .datepicker { + position: relative; + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + width: 196px; + height: 147px; + cursor: default; + display: none; + margin: 0 auto; + /* Hide border divs by default */ + /* Only display the previous/next arrows on the first/last calendars */ + /* Compensate for the space lost by not having a previous arrow */ + /* Day mode calendar body */ + /* Month mode calendar body */ + /* Year mode calendar body */ + /* Not used by default, calendar cells can be marked as special if desired (doesn't seem to be totally working) */ + /* style the 'not in month' day cell away */ + /* Datepicker border styling */ + background-color: #F7F7F7; + border: 1px solid #CCCCCC; + border-radius: 5px 5px 5px 5px; + padding: 10px; + /* Tighten up the spacing between multiple calendars */ + /* Grey background behind Month Name row, and blue text */ + /* style the day of week header cells */ + /* grey underline beneath day of week row */ + /* Black text, white background, and grey borders around day cells */ + /* blue cell color for selected days */ + /* Grey out dates in the future */ + /* yellow cell background on hover */ + /* Bold today's date */ + /* cells are wider in the clean style */ +} +#timeRange-desktop .datepicker .datepickerContainer { + position: absolute; +} +#timeRange-desktop .datepicker .datepickerBorderT, +#timeRange-desktop .datepicker .datepickerBorderB, +#timeRange-desktop .datepicker .datepickerBorderL, +#timeRange-desktop .datepicker .datepickerBorderR, +#timeRange-desktop .datepicker .datepickerBorderTL, +#timeRange-desktop .datepicker .datepickerBorderTR, +#timeRange-desktop .datepicker .datepickerBorderBL, +#timeRange-desktop .datepicker .datepickerBorderBR { + display: none; +} +#timeRange-desktop .datepicker .datepickerHidden { + display: none; +} +#timeRange-desktop .datepicker table { + border-collapse: collapse; +} +#timeRange-desktop .datepicker a { + color: black; + text-decoration: none; + cursor: default; + outline: none; +} +#timeRange-desktop .datepicker table td { + text-align: center; + padding: 0; + margin: 0; +} +#timeRange-desktop .datepicker th { + text-align: center; + color: #666666; + font-weight: normal; + padding: 0; +} +#timeRange-desktop .datepicker tbody a { + display: block; +} +#timeRange-desktop .datepicker .datepickerDays a { + width: 20px; + line-height: 16px; + height: 16px; + padding-right: 2px; +} +#timeRange-desktop .datepicker .datepickerYears a, +#timeRange-desktop .datepicker .datepickerMonths a { + width: 39px; + line-height: 36px; + height: 36px; + text-align: center; +} +#timeRange-desktop .datepicker .datepickerMonths td:first-child a, +#timeRange-desktop .datepicker .datepickerMonths td:last-child a, +#timeRange-desktop .datepicker .datepickerYears td:first-child a, +#timeRange-desktop .datepicker .datepickerYears td:last-child a { + width: 38px; +} +#timeRange-desktop .datepicker td.datepickerNotInMonth a { + color: #666666; +} +#timeRange-desktop .datepicker tbody.datepickerDays td.datepickerSelected { + background: #136A9F; +} +#timeRange-desktop .datepicker tbody.datepickerDays td.datepickerNotInMonth.datepickerSelected { + background: #17384d; +} +#timeRange-desktop .datepicker tbody.datepickerYears td.datepickerSelected, +#timeRange-desktop .datepicker tbody.datepickerMonths td.datepickerSelected { + background: #17384d; +} +#timeRange-desktop .datepicker td.datepickerSelected a { + color: white; +} +#timeRange-desktop .datepicker a:hover { + color: #88c5eb; +} +#timeRange-desktop .datepicker td.datepickerNotInMonth a:hover { + color: #999999; +} +#timeRange-desktop .datepicker .datepickerSpace div { + width: 20px; +} +#timeRange-desktop .datepicker .datepickerBlock { + vertical-align: top; +} +#timeRange-desktop .datepicker a.datepickerGoNext, +#timeRange-desktop .datepicker a.datepickerGoPrev, +#timeRange-desktop .datepicker a.datepickerMonth { + text-align: center; + height: 20px; + line-height: 20px; + float: left; +} +#timeRange-desktop .datepicker th a.datepickerGoNext, +#timeRange-desktop .datepicker th a.datepickerGoPrev { + width: 20px; + color: #666666; + display: none; +} +#timeRange-desktop .datepicker th a.datepickerMonth { + width: 114px; + display: block; +} +#timeRange-desktop .datepicker .datepickerFirstView th a.datepickerGoPrev, +#timeRange-desktop .datepicker .datepickerLastView th a.datepickerGoNext { + display: block; +} +#timeRange-desktop .datepicker th a.datepickerMonth { + margin-left: 20px; +} +#timeRange-desktop .datepicker .datepickerFirstView th a.datepickerMonth { + margin-left: 0; +} +#timeRange-desktop .datepicker table.datepickerViewDays tbody.datepickerMonths, +#timeRange-desktop .datepicker table.datepickerViewDays tbody.datepickerYears { + display: none; +} +#timeRange-desktop .datepicker table.datepickerViewMonths tbody.datepickerDays, +#timeRange-desktop .datepicker table.datepickerViewMonths tbody.datepickerYears, +#timeRange-desktop .datepicker table.datepickerViewMonths tr.datepickerDoW { + display: none; +} +#timeRange-desktop .datepicker table.datepickerViewYears tbody.datepickerDays, +#timeRange-desktop .datepicker table.datepickerViewYears tbody.datepickerMonths, +#timeRange-desktop .datepicker table.datepickerViewYears tr.datepickerDoW { + display: none; +} +#timeRange-desktop .datepicker td.datepickerDisabled a, +#timeRange-desktop .datepicker td.datepickerDisabled.datepickerNotInMonth a { + color: #555555; +} +#timeRange-desktop .datepicker td.datepickerDisabled a:hover { + color: #333333; +} +#timeRange-desktop .datepicker tbody.datepickerDays td.datepickerSpecial a { + background: #770000; + color: white; +} +#timeRange-desktop .datepicker tbody.datepickerDays td.datepickerSpecial.datepickerSelected a { + background: #aa0000; +} +#timeRange-desktop .datepicker tbody.datepickerDays td.datepickerNotInMonth.datepickerSelected { + background-color: transparent; +} +#timeRange-desktop .datepicker td.datepickerNotInMonth a span { + display: none; +} +#timeRange-desktop .datepicker td.datepickerNotInMonth a:hover span { + display: none; +} +#timeRange-desktop .datepicker tbody.datepickerDays td.datepickerNotInMonth:hover { + background-color: transparent; +} +#timeRange-desktop .datepicker .datepickerSpace div { + width: 2px; +} +#timeRange-desktop .datepicker th { + background-color: #DDDDDD; +} +#timeRange-desktop .datepicker th a.datepickerMonth { + color: #008ED6; + font-weight: normal; +} +#timeRange-desktop .datepicker th { + color: black; + font-weight: bold; +} +#timeRange-desktop .datepicker table thead tr.datepickerDoW th { + border-bottom: 1px solid #CCCCCC; +} +#timeRange-desktop .datepicker a, +#timeRange-desktop .datepicker a:hover { + color: black; +} +#timeRange-desktop .datepicker table.datepickerViewDays, +#timeRange-desktop .datepicker table.datepickerViewMonths, +#timeRange-desktop .datepicker table.datepickerViewYears { + background-color: white; +} +#timeRange-desktop .datepicker table tbody.datepickerDays td { + border: 1px solid #F7F7F7; +} +#timeRange-desktop .datepicker tbody.datepickerDays td.datepickerSelected { + background-color: #0077CC; +} +#timeRange-desktop .datepicker td.datepickerFuture a { + color: #DDDDDD; +} +#timeRange-desktop .datepicker tbody.datepickerDays td:hover { + background-color: #FFCC33; +} +#timeRange-desktop .datepicker td.datepickerToday a { + font-weight: bold; +} +#timeRange-desktop .datepicker .datepickerYears a, +#timeRange-desktop .datepicker .datepickerMonths a { + width: 42px; +} +#timeRange-desktop .datepicker .datepickerMonths td:first-child a, +#timeRange-desktop .datepicker .datepickerYears td:first-child a { + width: 39px; +} +#timeRange-desktop .datepicker th a.datepickerMonth { + width: 121px; +} +.ui-timepicker-list { + overflow-y: auto; + height: 150px; + width: 6.5em; + background: #fff; + border: 1px solid #ddd; + margin: 0; + padding: 0; + list-style: none; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + outline: none; + z-index: 10001; +} +.ui-timepicker-list.ui-timepicker-with-duration { + width: 11em; +} +.ui-timepicker-duration { + margin-left: 5px; + color: #888; +} +.ui-timepicker-list:hover .ui-timepicker-duration { + color: #888; +} +.ui-timepicker-list li { + padding: 3px 0 3px 5px; + cursor: pointer; + white-space: nowrap; + color: #000; + list-style: none; + margin: 0; +} +.ui-timepicker-list:hover .ui-timepicker-selected { + background: #fff; + color: #000; +} +li.ui-timepicker-selected, +.ui-timepicker-list li:hover, +.ui-timepicker-list:hover .ui-timepicker-selected:hover { + background: #1980EC; + color: #fff; +} +li.ui-timepicker-selected .ui-timepicker-duration, +.ui-timepicker-list li:hover .ui-timepicker-duration { + color: #ccc; +} +/* Mobile only hidden unless overriden by media.css */ +.mobile-only { + display: none; +} +#dashboard-simple-datepicker.completed { + background-color: #f0efeb; +} +/* -----------[Widgets]--------------*/ +.widget { + background-color: #ffffff; + margin-bottom: 53px; +} +.widget .btn-download { + background-color: #63625e; + border: 1px solid #dcdbd7; + border-top: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + color: white; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + display: block; + font-size: 18px; + height: 79px; + line-height: 80px; + text-align: center; + text-decoration: none; + width: 100%; +} +.widget .btn-download:hover { + background-color: #4f4e4a; +} +.widget .btn-download .caption { + display: inline-block; + vertical-align: super; +} +.widget .btn-download.no-border { + border: 0; +} +.widget .header { + background-color: #faf9f5; + border: 1px solid #dcdbd7; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + min-height: 80px; + height: auto; + width: 100%; +} +.widget .header a { + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + display: block; + height: 100%; +} +.widget .header a:hover { + background-color: #ffffff; +} +.widget .header a { + color: #63625e; + text-decoration: none; +} +.widget .header .alert-red { + display: none; +} +.widget .header .title { + font-size: 21px; + padding-left: 20px; + padding-top: 20px; +} +.widget .header .sub-title { + padding-left: 20px; +} +.widget .header .sub-title ul li { + float: left; + margin-right: 35px; +} +.widget .header .sub-title ul li .caption { + margin-left: 10px; + vertical-align: super; +} +.widget .header .sub-title ul li .caption.blue { + color: #4790d0; +} +.widget .header .sub-title ul li .caption.orange { + color: #f7ab3e; +} +.widget .header .sub-title ul li .caption.gray { + color: #63625e; +} +.widget .header .sub-title ul li.toggled { + opacity: 0.4; + filter: alpha(opacity=40); +} +.widget .header .sub-title .caption { + vertical-align: super; +} +.widget .header.no-subtitle .title { + padding-top: 30px; +} +.widget .header.has-alarm { + position: relative; +} +.widget .header.has-alarm a { + color: #f35c58; + text-decoration: none; +} +.widget .header.has-alarm .alert-red { + position: absolute; + right: 20px; + top: 28px; +} +.widget .content { + border: 1px solid #dcdbd7; + border-top: none; +} +.widget .content .graph-container { + height: 255px; + padding: 50px 28px 25px 22px; +} +.widget .content .graph-container .date-range-triggered { + height: 235px !important; +} +.widget .content .jqplot-target .jqplot-yaxis { + color: #4790d0; +} +.widget .content .jqplot-target .jqplot-y2axis { + color: #f7ab3e; +} +.widget .content .blockMsg { + top: 156px !important; +} +.widget .bottom-graph { + background-color: #f0efeb; + height: 60px; + position: relative; + text-align: right; +} +.widget .bottom-graph .graph-links { + border-top: 1px solid #dcdbd7; + height: 100%; + position: absolute; + right: 0px; + top: -1px; +} +.widget .bottom-graph .graph-links li { + background-color: #63625e; + border: none; + border-bottom: 1px solid #dcdbd7; + border-top: 1px solid #dcdbd7; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + color: #e6e5e1; + cursor: pointer; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + float: left; + height: 100%; + line-height: 62px; + margin-top: -1px; + outline: none; + text-align: center; +} +.widget .bottom-graph .graph-links li:last-child { + border-right: 1px solid #dcdbd7; +} +.widget .bottom-graph .graph-links li:first-child { + border-left: 1px solid #dcdbd7; +} +.widget .bottom-graph .graph-links li.selected { + background-color: #ffffff; + border-left: 1px solid #dcdbd7; + border-right: 1px solid #dcdbd7; + border-top-color: #ffffff; + color: #63625e; +} +.widget .bottom-graph .graph-links li.selected .divider .border { + -webkit-transition: 0s; + -moz-transition: 0s; + -o-transition: 0s; + transition: 0s; + background-color: transparent; +} +.widget .bottom-graph .graph-links li.selected + li .divider:first-child .border { + background-color: transparent; +} +.widget .bottom-graph .graph-links li:hover:not(.selected) { + background-color: #959490; +} +.widget .bottom-graph .graph-links li:hover:not(.selected) .divider .border { + background-color: #959490; +} +.widget .bottom-graph .graph-links li:hover + li .divider:first-child .border { + background-color: transparent; +} +.widget .bottom-graph .graph-links li .caption { + display: inline-block; + float: left; + height: 100%; + width: 98px; +} +.widget .bottom-graph .graph-links li .divider { + display: inline-block; + float: left; + height: 100%; + width: 0.5px; +} +.widget .bottom-graph .graph-links li .divider .border { + background-color: #4f4e4a; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + height: 40px; + margin-top: 10px; +} +.widget.VRM_Widget_Alarm .inner-container { + padding: 0 20px !important; +} +.widget.VRM_Widget_Alarm .inner-container .column { + display: inline-block; + float: left; +} +.widget.VRM_Widget_Alarm .inner-container .column.left { + width: 65%; +} +.widget.VRM_Widget_Alarm .inner-container .column.right { + width: 35%; +} +.widget.VRM_Widget_Alarm .inner-container .column .duration { + color: #4790d0; +} +.widget.VRM_Widget_Status .content .widget-content-list .row:first-child, +.widget.VRM_Widget_Status .content .widget-content-list .row:nth-child(2) { + height: 117px; +} +.widget.VRM_Widget_Status .content .widget-content-list .row:last-child { + border-bottom: none; +} +.widget.VRM_Widget_Status .content .widget-content-list .row .inner-container .label { + padding-bottom: 5px; +} +.widget.VRM_Widget_Status .content .widget-content-list .row .inner-container .value .column { + text-align: right; +} +.widget.VRM_Widget_HistoricData .content .widget-content-list .row:last-child { + border-bottom: none; +} +.widget.VRM_Widget_GPSWidget .widget-map { + height: 236px; + width: 100%; +} +.widget.VRM_Widget_VeConfigure .content { + height: 316px !important; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expand-trigger:hover:not(.expanded) { + background-color: #e6e5e1; + cursor: pointer; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section { + background-color: #e6e5e1; + border-bottom: none; + display: none; + height: 236px; + position: relative; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .close-container { + margin-bottom: 12px; + margin-top: -3px; + text-align: right; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .close-container ul { + cursor: pointer; + display: inline-block; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .close-container ul li { + display: inline-block; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .close-container ul:hover .caption { + text-decoration: underline; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .close-container .caption { + padding-top: 2px; + vertical-align: top; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .button-container { + bottom: 10px; + left: 10px; + position: absolute; + width: 100%; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .button-container .filename { + display: none; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .button-container input[type="button"] { + width: 134px; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .button-container input[type="button"]:first-child { + margin-right: 6px; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .button-container .file-wrapper input[type="file"] { + opacity: 0; + filter: alpha(opacity=0); + left: -10000px; + position: absolute; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .button-container #upload { + display: none; +} +.widget.VRM_Widget_State .content .graph-container, +.widget.VRM_Widget_VeBusWarningsAndAlarms .content .graph-container { + height: 310px; + padding: 40px 48px 0px 35px; +} +.widget.VRM_Widget_State .content .graph-container .jqplot-target, +.widget.VRM_Widget_VeBusWarningsAndAlarms .content .graph-container .jqplot-target { + height: 260px !important; +} +.widget.VRM_Widget_State .state-legend, +.widget.VRM_Widget_VeBusWarningsAndAlarms .state-legend { + background-color: #e6e5e1; + border: 1px solid #dcdbd7; + border-top: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + *zoom: 1; + color: #959490; + display: none; + font-size: 11px; + min-height: 60px; + padding: 20px 34px; +} +.widget.VRM_Widget_State .state-legend:before, +.widget.VRM_Widget_VeBusWarningsAndAlarms .state-legend:before, +.widget.VRM_Widget_State .state-legend:after, +.widget.VRM_Widget_VeBusWarningsAndAlarms .state-legend:after { + display: table; + content: ""; + line-height: 0; +} +.widget.VRM_Widget_State .state-legend:after, +.widget.VRM_Widget_VeBusWarningsAndAlarms .state-legend:after { + clear: both; +} +.widget.VRM_Widget_State .state-legend ul li, +.widget.VRM_Widget_VeBusWarningsAndAlarms .state-legend ul li { + float: left; + margin-right: 15px; +} +.widget.VRM_Widget_State .state-legend ul li .abbreviation, +.widget.VRM_Widget_VeBusWarningsAndAlarms .state-legend ul li .abbreviation { + color: #387dc5; + margin-right: 7px; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section { + border-bottom: none; + height: 395px; + position: relative; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .close-container { + margin-bottom: 12px; + margin-top: -3px; + text-align: right; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .close-container ul { + cursor: pointer; + display: inline-block; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .close-container ul li { + display: inline-block; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .close-container ul:hover .caption { + text-decoration: underline; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .close-container .caption { + padding-top: 2px; + vertical-align: top; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .button-container { + bottom: 10px; + left: 10px; + position: absolute; + width: 100%; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .button-container .filename { + display: none; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .button-container input[type="button"] { + width: 134px; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .button-container input[type="button"]:first-child { + margin-right: 6px; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .button-container .file-wrapper input[type="file"] { + opacity: 0; + filter: alpha(opacity=0); + left: -10000px; + position: absolute; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .button-container #upload { + display: none; +} +.widget.VRM_Widget_PVInverterStatus .content .widget-content-list .row { + height: 98px !important; +} +.widget.VRM_Widget_PVInverterStatus .content .widget-content-list .row:last-child { + border-bottom: none; +} +.widget.list .content { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 395px; + overflow: hidden; + padding-right: 0px !important; + width: 100%; +} +.widget.list .content .widget-content-list .row { + border-bottom: 1px solid #dcdbd7; + height: 78px; + overflow: hidden; +} +.widget.list .content .widget-content-list .row .floater { + height: 50%; +} +.widget.list .content .widget-content-list .row .inner-container { + padding: 20px 20px; +} +.widget.list .content .widget-content-list .row .inner-container .label { + font-size: 18px; +} +.widget.list .content .widget-content-list .row .inner-container .label .duration { + color: #387dc5; +} +.widget.list .content .widget-content-list .row .inner-container .value { + color: #387dc5; +} +.widget.list .content .widget-content-list .row .inner-container .value .column { + float: left; + width: 33%; +} +.widget.list .content .widget-content-list .row .inner-container .value .right { + color: #f0962e; +} +.widget.list .content .widget-content-list .row .inner-container .value .voltage { + color: #387dc5; +} +.widget.list .content .widget-content-list .row .inner-container .value .current { + color: #f0962e; +} +.widget.list .content .widget-content-list .row .inner-container .value .olddata { + color: #f35c58; +} +.widget.list .content .widget-content-list .row .inner-container .datetime.alarm { + color: #f35c58; +} +.widget.list .content .widget-content-list .row.no-border-bottom { + border-bottom: none; +} +.widget.list .content.ps-active-y .ps-scrollbar-y-rail, +.widget.list .content.ps-active-y .ps-scrollbar-y-rail:hover, +.widget.list .content.ps-active-y.ps-container:hover .ps-scrollbar-y-rail { + opacity: 1; + filter: alpha(opacity=100); +} +.widget.list .content.ps-active-y.ps-container:hover .ps-scrollbar-y .row.handle { + background-color: #64635f; +} +.widget.list .content.ps-active-y.ps-container:hover .ps-scrollbar-y-rail { + background-color: #f0efeb; + border: 1px solid #dcdbd7; +} +.widget.list .content.ps-active-y .ps-scrollbar-y-rail { + background-color: rgba(240, 239, 235, 0.5); + border: 1px solid rgba(220, 219, 215, 0.5); + right: 10px !important; + margin-top: 10px; + margin-bottom: 10px; +} +.widget.list .content.ps-active-y .ps-scrollbar-y-rail .ps-scrollbar-y { + background-color: transparent; + display: table; + margin-top: -10px; +} +.widget.list .content.ps-active-y .ps-scrollbar-y-rail .ps-scrollbar-y .row { + display: table-row; +} +.widget.list .content.ps-active-y .ps-scrollbar-y-rail .ps-scrollbar-y .row .transparent-edge { + background-color: transparent; + display: table-cell; + height: 10px; + width: 100%; +} +.widget.list .content.ps-active-y .ps-scrollbar-y-rail .ps-scrollbar-y .row.handle { + background-color: #969591; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; + display: table-cell; + opacity: 1 !important; + filter: alpha(opacity=100) !important; + -webkit-transition: background-color 0.2s linear; + -moz-transition: background-color 0.2s linear; + -o-transition: background-color 0.2s linear; + transition: background-color 0.2s linear; +} +.widget.list .content.ps-active-y .ps-scrollbar-y-rail .ps-scrollbar-y .row .handle { + width: 8px; +} +/* -----------[jQuery Tags Plugin]--------------*/ +div.tagsinput { + border: 1px solid #e5e4e0; + background: #ffffff; + padding: 5px; + overflow-y: auto; +} +div.tagsinput span.tag { + display: block; + float: left; + text-decoration: none; + margin-right: 5px; + margin-bottom: 5px; + margin-top: 0px; +} +div.tagsinput span.tag a { + font-size: 0; +} +div.tagsinput input { + width: 80px !important; + margin: 0px; + border: 1px solid transparent; + padding: 5px; + background: transparent; + font-size: 15px; + color: #272622; + outline: 0px; + margin-right: 5px; + margin-bottom: 5px; + min-height: 40px; + margin-top: 0px; +} +div.tagsinput div { + display: block; + float: left; +} +div.tagsinput .tags_clear { + clear: both; + width: 100%; + height: 0px; +} +div.tagsinput .not_valid { + background: #fa716f !important; + color: #ffffff !important; +} +.VRM_Widget_CCGXDataUpload { + line-height: 19px; +} +.VRM_Widget_CCGXDataUpload .text { + border-bottom: 1px solid #dcdbd7; +} +.VRM_Widget_CCGXDataUpload .text:last-child { + border: none; +} +.VRM_Widget_CCGXDataUpload #ccgx-upload, +.VRM_Widget_CCGXDataUpload #inserted-file, +.VRM_Widget_CCGXDataUpload #ccgx-fileinput { + display: none; +} +.VRM_Widget_CCGXDataUpload .filename { + cursor: pointer; +} +.VRM_Widget_CCGXDataUpload .filename li { + float: left; + margin: 0 5px; +} +.VRM_Widget_CCGXDataUpload .filename .caption { + max-width: 210px; + overflow: hidden; + text-overflow: ellipsis; + padding: 3px 0 0 0; +} +.VRM_Widget_CCGXDataUpload .content { + overflow: visible !important; +} +.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section { + height: 316px !important; +} +.VRM_Widget_CCGXDataUpload #inserted-file { + margin: 10px 0 0 0; +} +.VRM_Widget_CCGXDataUpload .insert-ccgx-file { + background-color: #63625e; + border: 1px solid #63625e; + border-top: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + color: white; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + display: block; + font-size: 18px; + height: 79px; + line-height: 80px; + text-align: center; + text-decoration: none; + width: 100%; +} +.VRM_Widget_CCGXDataUpload .insert-ccgx-file:hover { + background-color: #4f4e4a; +} +.VRM_Widget_CCGXDataUpload .insert-ccgx-file .caption { + display: inline-block; + vertical-align: super; +} +.VRM_Widget_CCGXDataUpload .insert-ccgx-file .inverted { + -webkit-transform: rotate(180deg); + /* Opera, Chrome, and Safari */ + -ms-transform: rotate(180deg); + /* IE 9 */ + transform: rotate(180deg); +} +.leaflet-control-container .leaflet-bottom.leaflet-right { + z-index: 3; +} +.leaflet-marker-text { + margin-top: -5px; + color: #4790d0; + font-size: 21px; + font-family: Arial, sans-serif; + font-weight: bold; + font-style: normal; + text-decoration: none; + text-align: center; + line-height: 64px; +} +.leaflet-marker-text-red { + color: #fa716f; +} +.icon-pointer-blue-empty { + display: inline-block; + width: 75px; + height: 64px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -472px 0px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .icon-pointer-blue-empty { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.icon-pointer-red-empty { + display: inline-block; + width: 75px; + height: 64px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -547px 0px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .icon-pointer-red-empty { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +body.map-none .map-view { + height: 65px; + background-color: rgba(99, 98, 94, 0.1); +} +body.map-none .map-view .top-shadow, +body.map-none .map-view .bottom-shadow { + display: none; +} +body.map-none.embedded .breadcrumb { + background-color: #E6E5E1; +} +body.map-none.embedded #vrm-tabs { + right: 0; +} +body.map-none.embedded #vrm-tabs li.active { + border-top: 1px solid #dcdbd7; + border-left: 1px solid #dcdbd7; + border-right: 1px solid #dcdbd7; +} +#updateForm img.gravatar, +#updateGravatarForm img.gravatar { + height: 80px; + width: 80px; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; +} +#updateForm div.gravatar-wrapper, +#updateGravatarForm div.gravatar-wrapper { + height: 80px; + width: 80px; + position: relative; + text-align: center; + vertical-align: middle; + color: #4790d0; + text-transform: uppercase; + font-size: 14px; + line-height: 80px; + border: none !important; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +#updateForm div.gravatar-wrapper img.gravatar, +#updateGravatarForm div.gravatar-wrapper img.gravatar { + position: absolute !important; + top: 0 !important; + left: 0 !important; + height: 78px !important; + width: 78px !important; + float: none !important; + margin: 0 !important; + border-width: 1px !important; + border-style: solid !important; + border-color: #dcdbd7; + background: none !important; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +#updateForm img.gravatar, +#updateGravatarForm img.gravatar, +#updateForm div.gravatar-wrapper img.gravatar, +#updateGravatarForm div.gravatar-wrapper img.gravatar, +#updateForm div.gravatar-wrapper, +#updateGravatarForm div.gravatar-wrapper { + margin-bottom: 20px; + display: inline-block; +} +#updateForm .change-gravatar, +#updateGravatarForm .change-gravatar { + float: right; + margin-top: 23px; +} +#updateGravatarForm { + display: none; +} +#updateGravatarForm .gravatar-file-upload { + cursor: pointer; +} +#updateGravatarForm .gravatar-file-upload .sprite-icons { + position: absolute; +} +#updateGravatarForm .gravatar-upload-label { + margin: 2px 0 2px 40px; + display: inline-block; +} +.user.update .form-tabs.profile, +.user.two-step-update .form-tabs.profile, +.user.two-step-new .form-tabs.profile, +.user.two-step-verify .form-tabs.profile, +.user.two-step-done .form-tabs.profile, +.user.update-dealer .form-tabs.profile { + margin-top: 0px; +} +/* need new section for styling settings alarms form */ +#forms-container-alarms-settings label { + line-height: 44px; +} +#forms-container-alarms-settings label[class="required"]:after { + content: "*"; + color: #4790d0; +} +#forms-container-alarms-settings .custom-radio label { + line-height: 21px; +} +#forms-container-alarms-settings .settings-alarm-header { + background-color: #faf9f5; + border: 1px solid #dcdbd7; + padding: 19px; +} +#forms-container-alarms-settings .settings-alarm-toggle { + border-top: 1px solid #f0efeb; + cursor: pointer; + position: relative; +} +#forms-container-alarms-settings .settings-alarm-toggle.one-line { + padding: 19px 45px 19px 80px; +} +#forms-container-alarms-settings .settings-alarm-toggle.two-lines { + padding: 8px 45px 8px 80px; +} +#forms-container-alarms-settings .settings-alarm-toggle.has-error:first-child::before { + position: absolute; + top: 18px; + left: -35px; + content: ' '; + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -192px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #forms-container-alarms-settings .settings-alarm-toggle.has-error:first-child::before { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#forms-container-alarms-settings .settings-alarm-toggle .device-name { + font-size: 18px; +} +#forms-container-alarms-settings .settings-alarm-toggle .alarm-name { + display: block; + color: #4790d0; + font-size: 15px; +} +#forms-container-alarms-settings .settings-alarm-toggle .alarm-name.gray, +#forms-container-alarms-settings .settings-alarm-toggle .alarm-name .gray { + color: #63625e; +} +#forms-container-alarms-settings .settings-alarm-toggle .toggle-icon { + position: absolute; + right: 20px; + top: 18px; +} +#forms-container-alarms-settings .settings-alarm-toggle .device-icon { + position: absolute; + left: 18px; + top: 7px; +} +#forms-container-alarms-settings .settings-alarm-group { + border: 1px solid #dcdbd7; + background-color: #faf9f5; + border-top: 0; + border-bottom: 0; +} +#forms-container-alarms-settings .settings-alarm-group li.has-alarm-error { + border-left: 3px solid #fa716f; +} +#forms-container-alarms-settings .settings-alarm-group:first-child { + border-top: 1px solid #dcdbd7; +} +#forms-container-alarms-settings .settings-alarm-group:first-child .settings-alarm-toggle:first-child { + border-top: 0; +} +#forms-container-alarms-settings .settings-alarm-group .settings-alarm-toggle .icon-toggle { + background: url('/img/icon/icon-open.png') center center no-repeat; +} +#forms-container-alarms-settings .settings-alarm-group.active { + background-color: #ffffff; +} +#forms-container-alarms-settings .settings-alarm-group.active .settings-alarm-toggle { + border-bottom: 1px solid #f0efeb; +} +#forms-container-alarms-settings .settings-alarm-group.active .settings-alarm-toggle .icon-toggle { + background: url('/img/icon/icon-close.png') center center no-repeat; +} +#forms-container-alarms-settings .settings-alarm-group.below-alarms-fieldset-element { + border-top: 1px solid #f0efeb; + border-bottom: 1px solid #dcdbd7; + min-height: 60px; +} +#forms-container-alarms-settings .settings-alarm-group.below-alarms-fieldset-element a { + line-height: 60px; + margin-left: 80px; +} +#forms-container-alarms-settings .settings-alarm-group li:last-child { + margin-bottom: 19px; +} +#forms-container-alarms-settings .settings-alarm-description { + padding: 19px 19px 19px 80px; + display: none; +} +#forms-container-alarms-settings .settings-alarm-element { + padding: 19px 19px 0px 80px; + width: 240px; + float: left; + display: none; +} +#forms-container-alarms-settings .settings-alarm-element.has-error input[type="text"], +#forms-container-alarms-settings .settings-alarm-element.has-error input[type="email"], +#forms-container-alarms-settings .settings-alarm-element.has-error input[type="password"], +#forms-container-alarms-settings .settings-alarm-element.has-error input[type="tel"], +#forms-container-alarms-settings .settings-alarm-element.has-error input[type="url"], +#forms-container-alarms-settings .settings-alarm-element.has-error textarea { + border-color: #fa716f; + color: #fa716f; +} +#forms-container-alarms-settings .settings-alarm-element ul.errors li { + color: #fa716f; +} +#forms-container-alarms-settings .settings-alarm-delete { + width: 100%; +} +#forms-container-alarms-settings .settings-alarm-element:nth-child(even) { + padding: 19px 19px 0 19px; +} +#forms-container-alarms-settings .settings-alarm-toggle .settings-alarm-element:nth-child(even) { + padding: 19px 19px 0 19px; +} +#forms-container-alarms-settings .settings-alarm-toggle.no-description ~ .settings-alarm-element:nth-child(even) { + padding: 19px 19px 0 80px; +} +#forms-container-alarms-settings .settings-alarm-toggle.no-description ~ .settings-alarm-element:nth-child(odd) { + padding: 19px 19px 0 19px; +} +#forms-container-alarms-settings .settings-alarm-element:nth-child(2) { + padding-top: 5px; +} +.VRM_Widget_SiteSummary { + color: #63625e; +} +/* -----------[Screensave]--------------*/ +.screensaver { + background-color: #272622; + height: 100%; + left: 0; + position: fixed; + top: 0; + visibility: hidden; + width: 100%; + z-index: 10000; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + opacity: 0; + filter: alpha(opacity=0); +} +.screensaver.visible { + visibility: visible; + opacity: 1; + filter: alpha(opacity=100); +} +.screensaver.on-solar .screensaver-text { + color: #f7ab3e; +} +.screensaver.on-solar .screensaver-icon:before { + color: #f7ab3e; + content: '\e603'; +} +.screensaver.on-generator .screensaver-text { + color: #4790d0; +} +.screensaver.on-generator .screensaver-icon:before { + margin-left: -50%; + color: #4790d0; + content: '\e600'; +} +.screensaver.on-battery .screensaver-text { + color: #4790d0; +} +.screensaver.on-battery .screensaver-icon:before { + color: #4790d0; + content: '\e601'; +} +.screensaver.on-grid .screensaver-text { + color: #8bc964; +} +.screensaver.on-grid .screensaver-icon:before { + color: #8bc964; + content: '\e602'; +} +.screensaver-icon { + left: 50%; + position: absolute; + top: 50%; +} +.screensaver-icon:before { + font-family: 'screensaver-icons'; + margin-top: 60%; + position: absolute; +} +.screensaver-text { + left: 50%; + position: absolute; + text-transform: uppercase; + top: 50%; +} +.screensaver-text-grid-type { + color: #ffffff; + font-family: 'MuseoSans-700'; +} +.screensaver-company-logo { + bottom: 0; + position: absolute; + right: 0; +} +.screensaver-company-logo img { + height: 100%; + width: 100%; +} +.whitelabel-active .screensaver-company-logo { + display: none; +} +.beta-badge { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: inline-block; + font-size: 13px; + line-height: 11px; + min-width: 50px; + min-height: 20px; + padding-top: 5px; + text-decoration: none; + text-align: center; + background-color: #f7ab3e; + color: #ffffff; + top: -2px; + position: relative; + margin-left: 10px; +} +/* -----------[Modal popups]--------------*/ +.modal-popup-container { + background-color: #ffffff; + border: 1px solid #e5e4e0; + margin: 20px auto; + max-width: 560px; + padding: 20px 0; + position: relative; + width: auto; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +#modal-popup-container-share #guest-account-content { + margin-bottom: 25px; + margin-top: 25px; +} +#modal-popup-container-share #guest-account-content .modal-popup-content-row, +#modal-popup-container-share #guest-account-content .modal-popup-content-row-divider { + overflow: hidden; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +#modal-popup-container-share #guest-account-content .modal-popup-content-row:not(.visible), +#modal-popup-container-share #guest-account-content .modal-popup-content-row-divider:not(.visible) { + height: 0; + min-height: 0; + margin: 0; + padding: 0; +} +#modal-popup-container-share #guest-account-content .modal-popup-content-left-right-container { + min-height: 50px; +} +#modal-popup-container-share #guest-account-content .modal-popup-content-left-right-container .modal-popup-content-left-max { + line-height: 40px; +} +#modal-popup-container-share #guest-account-content .modal-popup-content-left-right-container .modal-popup-content-left-max input { + line-height: 10px; +} +#modal-popup-container-share #guest-account-content .modal-popup-content-left-right-container .modal-popup-content-left-max input::-webkit-input-placeholder { + line-height: normal; +} +#modal-popup-container-share #invite-user-content { + margin-top: 30px; +} +#modal-popup-container-share #invite-user-content .modal-popup-content-left-max input, +#modal-popup-container-share #invite-user-content .modal-popup-content-left-max textarea { + margin-bottom: 10px; +} +#modal-popup-container-share .invite-user-message { + margin-top: 5px; +} +.modal-popup-content { + padding: 0 49px; +} +.modal-popup-content h1 { + margin-bottom: 21px; + margin-top: 28px; +} +.modal-popup-tab-content.hidden { + display: none; +} +.modal-popup-tabs-list { + margin-bottom: -1px; +} +.modal-popup-tabs-item { + cursor: pointer; + float: left; + font-size: 18px; + margin-right: 20px; + padding-bottom: 3px; + padding-right: 10px; +} +.modal-popup-tabs-item:hover { + border-bottom: 1px solid #4790d0; +} +.modal-popup-tabs-item.selected { + border-bottom: 2px solid #4790d0; + color: #4790d0; + cursor: default; +} +.modal-popup-tabs-container { + border-bottom: 1px solid #e5e4e0; +} +.modal-popup-content-full-width { + margin-bottom: 10px; +} +.modal-popup-content-left-right-container { + position: relative; +} +.modal-popup-content-left-right-container.password-container { + height: 0; + min-height: 0 !important; + overflow: hidden; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +.modal-popup-content-left-right-container.password-container.visible { + height: 62px; +} +.modal-popup-content-left-right-container.renew-container .modal-popup-content-left-max { + height: 40px; + line-height: 40px; +} +.modal-popup-content-left-max { + padding-right: 90px; +} +.modal-popup-content-left-max input, +.modal-popup-content-left-max textarea { + margin-bottom: 5px; + width: 100%; +} +.modal-popup-content-right-control { + position: absolute; + right: 0; + top: 0; + width: 80px; +} +.modal-popup-content-right-control .custom-toggle.slide-colors { + margin-top: 5px; +} +.modal-popup-content-right-control input { + width: 100%; +} +.modal-popup-content-right-control.completed:before { + content: ''; + left: 28px; + position: absolute; + top: 9px; + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .modal-popup-content-right-control.completed:before { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.modal-popup-content-row-divider { + background-color: #dcdbd7; + height: 1px; + margin-bottom: 15px; + margin-top: 15px; +} +.modal-popup-bottom-button-row { + padding-bottom: 29px; +} +.modal-popup-bottom-button-row .btn { + margin-top: 5px; +} +.modal-popup-bottom-button-row a { + margin-top: 16px; +} +.loading-spinner { + background-image: url('/img/loader-circle.gif'); + background-repeat: no-repeat; + background-position: center center; +} +#forms-container-system-overview .btn.site-diagnostics { + margin-right: 20px; +} +/* -----------[Remote Console]--------------*/ +.remote-console-trigger { + float: right; +} +#vrm-tabs-content #remoteConsoleButton { + margin-top: 10px; +} +.remote-console-popup-container { + background-color: #faf9f5; + border: none; + max-width: 783px; + overflow: hidden; + padding: 0; + position: relative; + width: 620px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.remote-console-popup-container.password-needed .remote-console-login { + display: block; +} +.remote-console-popup-container.password-needed .remote-console-status { + display: none; +} +.remote-console-popup-container.password-needed .remote-console-logged-in { + display: none; +} +.remote-console-popup-container.password-needed .mfp-close { + color: #faf9f5; +} +.remote-console-popup-container.logged-in { + width: 783px; + /* This is needed to prevent the canvas becoming tiny on some occasions.. */ +} +.remote-console-popup-container.logged-in .remote-console-login { + display: none; +} +.remote-console-popup-container.logged-in .remote-console-status { + display: none; +} +.remote-console-popup-container.logged-in .remote-console-logged-in { + display: block; +} +.remote-console-popup-container.logged-in #remote-console-canvas { + height: 100% !important; + width: 100% !important; +} +.remote-console-popup-container.logged-in .mfp-close { + color: #faf9f5; +} +.remote-console-popup-container .mfp-close { + color: #4790d0; +} +.remote-console-login { + display: none; + height: 312px; + padding-right: 240px; +} +.remote-console-login .remote-console-display-container { + height: 100%; + text-align: center; + width: 100%; +} +.remote-console-login .remote-console-controls-container { + width: 240px; +} +.remote-console-login .remote-console-controls-title { + margin-top: 92px; + text-align: left; +} +.remote-console-status { + text-align: center; + height: 312px; +} +.remote-console-status.notification .remote-console-login-icon.notification { + display: inline-block; +} +.remote-console-status.alarm .remote-console-login-icon.alarm { + display: inline-block; +} +.remote-console-status .remote-console-login-icon { + display: none; +} +.remote-console-status .remote-console-login-icon.alarm { + fill: #fa716f; +} +.remote-console-status .remote-console-login-icon.alarm path { + fill: #fa716f !important; +} +.remote-console-status .remote-console-login-title { + margin-bottom: 10px; +} +.remote-console-status-content { + margin-top: -50px; + position: absolute; + top: 50%; + width: 100%; +} +.remote-console-logged-in { + display: none; +} +.remote-console-login-contents { + display: inline-block; + margin: 0 auto; + padding-top: 41px; + text-align: center; +} +.remote-console-login-icon { + display: inline-block; + height: 32px; + width: 32px; +} +.remote-console-login-icon path { + fill: #4790d0 !important; +} +.remote-console-login-title { + font-family: 'MuseoSans-700'; + margin-bottom: 37px; + margin-top: 11px; +} +.remote-console-login-fields-container { + text-align: left; +} +.remote-console-login-fields { + margin-top: 4px; +} +#remote-console-password { + margin-right: 5px; + width: 174px; +} +#remote-console-login { + line-height: 16px; +} +#remote-console-login .svg { + fill: #faf9f5; + height: 16px; + width: 16px; +} +.custom-check-and-radio { + margin-top: 20px; +} +.remote-console-title { + color: #4790d0; + display: none; + font-family: 'MuseoSans-700'; + margin-bottom: 0; + margin-top: 20px; + padding-left: 20px; +} +.remote-console-display-container { + display: table; +} +.remote-console-display { + background-color: #faf9f5; + padding: 20px; +} +.remote-console-display-inner { + position: relative; + border: 1px solid #e5e4e0; + height: 272px; + width: 480px; +} +.remote-console-display-inner .remote-console-status-text { + position: absolute; + top: 40%; + left: 0; + width: 100%; + text-align: center; + z-index: 9999; + color: #959490; +} +.remote-console-controls-container { + background-color: #4790d0; + height: 100%; + position: absolute; + right: 0; + top: 0; + width: 262px; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-user-select: none +} +.remote-console-controls-text { + padding-left: 20px; + padding-right: 20px; +} +.remote-console-controls-title { + margin-bottom: 0; + margin-top: 33px; +} +.remote-console-controls-subtitle { + line-height: 21px; + margin-top: 4px; +} +.remote-console-controls-explanation { + color: #f3f2ee; + line-height: 21px; + margin-top: 23px; +} +.remote-console-controls-title, +.remote-console-controls-subtitle { + color: #f3f2ee; + text-align: center; +} +.remote-console-controls { + bottom: 0; + height: 187px; + left: 0; + padding-bottom: 25px; + padding-top: 25px; + position: absolute; + width: 100%; +} +.remote-console-controls-row { + padding-bottom: 5px; + padding-top: 5px; + text-align: center; +} +.remote-console-controls-row:first-child { + /*margin-bottom: 20px;*/ +} +.remote-console-control-button { + cursor: pointer; + height: 40px; + margin-left: 3px; + margin-right: 3px; + padding: 0; + position: relative; + width: 40px; +} +.remote-console-control-button.wide { + width: 65px; +} +.remote-console-control-button.extra-wide { + width: 140px; +} +.remote-console-control-button .remote-console-control-icon { + color: #4790d0; + display: inline-block; + fill: #4790d0; + font-size: 17px; + height: 16px; + line-height: 20px; + margin-top: 11px; + width: 16px; +} +.remote-console-control-button .remote-console-control-icon.text { + left: 19px; + position: absolute; + top: -3px; + width: auto; +} +.remote-console-control-button .remote-console-control-icon path { + fill: #4790d0; +} +.remote-console-rotate-message-container { + background-color: #e5e4e0; + display: none; + height: 100%; + position: fixed; + top: 0; + width: 100%; + z-index: 100000; +} +.rotate-message-contents { + margin-top: -66px; + position: absolute; + text-align: center; + top: 50%; + width: 100%; +} +.rotate-message-icon { + display: inline-block; + height: 72px; + margin-bottom: 20px; + width: 72px; +} +.rotate-message-icon path { + fill: #4790d0; +} +.rotate-message-title { + font-family: 'MuseoSans-700'; + margin: 0; +} +#privateShareButtonMobile, +#remoteConsoleButtonMobile { + background-color: #8bc964; +} +#privateShareButtonMobile:hover, +#remoteConsoleButtonMobile:hover { + background-color: #72b84c; +} +/* -----------[Media queries for desktop]--------------*/ +@media screen and (min-width: 960px) { + .hide-desktop { + display: none; + } +} +/* -----------[Media queries for mobile/responsive]--------------*/ +@media screen and (max-width: 959px) { + .hide-responsive { + display: none; + } + .site-overview-controls .container-inner .grid-item.five-columns-width, + .site-overview-controls .container-inner .grid-item.six-columns-width, + .site-overview-controls .container-inner .grid-item.seven-columns-width, + .site-overview-controls .container-inner .grid-item.eight-columns-width, + .site-overview-controls .container-inner .grid-item.nine-columns-width, + .site-overview-controls .container-inner .grid-item.ten-columns-width, + .site-overview-controls .container-inner .grid-item.eleven-columns-width, + .site-overview-controls .container-inner .grid-item.twelve-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 300px; + } + .site-overview-controls .container-inner .grid-item.view-toggle .view-toggle-container { + display: none; + } + .this-is-the-homepage { + display: none; + } + .vrm-date-range-selection { + margin-top: 40px; + } + .date-range-selectors { + height: 65px; + } + .date-range-selectors .current, + .date-range-selectors .previous { + display: none; + } + .date-range-selectors-advanced { + margin-bottom: 4px; + } + .date-range-selectors-advanced .section { + margin-bottom: 7px; + margin-left: 0px; + width: 100%; + } + .date-range-selectors-advanced .section .mobile-caption { + display: inline-block; + float: left; + line-height: 54px; + } + .date-range-selectors-advanced .section .vrm-date-time-picker { + float: right; + } + .date-range-selectors-advanced .section .vrm-date-time-picker .picker { + left: -80px; + } + .date-range-selectors-advanced .section.set-time { + display: none; + height: 0px; + margin-bottom: 11px; + } + .date-range-selectors-advanced .section.set-time .btn { + float: left; + } + .date-range-selectors .selector-list > li:first-child { + float: left; + } + .date-range-selectors .selector-list > li:last-child { + float: right; + } + .date-range-selectors .selector-list > li, + .date-range-selectors-advanced .selector-list > li { + margin-left: 0px; + } + .date-range-selectors .custom_date_selector_container, + .date-range-selectors-advanced .custom_date_selector_container { + float: left; + padding-left: 0px; + } + .picker { + width: 300px; + } + #alarms { + display: none; + } + #mobile-alarms { + display: block; + } + #mobile-alarms .alarmCleared, + #mobile-alarms .alarmState { + text-align: right; + } + #mobile-alarms tbody tr td { + border-bottom: 0px; + padding-bottom: 0px; + } + #mobile-alarms tbody tr:nth-child(3n) td { + border-bottom: 1px solid #dcdbd7; + padding-top: 0px; + padding-bottom: 18px; + width: 320px; + } + #mobile-alarms tbody tr:nth-child(3n) td .alarmCleared { + float: right; + } + .pagination .previous, + .pagination .next { + display: none; + } + .pagination ul li { + padding: 7px; + } + .container.site-overview-content { + margin-bottom: 40px; + } + .container .container-inner { + width: 320px; + } + .container .container-inner .secondary-controls { + display: none; + } + .container .container-inner .grid-item.eight-columns-width, + .container .container-inner .grid-item.twelve-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 300px; + } + .container .container-inner .grid-item.offset-four { + margin-left: 10px; + } + .container .container-inner .over-google-map { + position: relative; + top: 0px; + } + .container .container-inner .tab-select { + display: block; + margin-top: 14px; + } + .container.top-menu { + display: none; + } + .container.breadcrumb { + background-color: #e6e5e1; + } + .container.breadcrumb .buttons-container { + display: none; + } + .container.breadcrumb .btn { + display: none; + } + .container.breadcrumb .site-select { + display: none; + } + .container.breadcrumb .breadcrumb-site-title { + display: block; + } + .container .breadcrumb-buttons-container { + padding-bottom: 12px; + } + .vrm.site.index .container.breadcrumb + .clearfix { + display: none; + } + .container.sites-statistics { + background-color: #f0efeb; + border-bottom: 1px solid #dcdbd7; + color: #959490; + display: block; + height: 80px; + } + .container.sites-statistics .grid-item { + float: none; + } + .container.sites-statistics .results .total { + padding-left: 20px; + } + .container.sites-statistics .results .alarms { + color: #f35c58; + } + .container.map-view { + display: none; + } + .container.map-overview .map { + height: 230px; + width: 100%; + } + .container.site-overview { + padding-top: 15px; + } + .container.site-view .container-inner #vrm-tabs { + display: none; + } + .container #vrm-tabs-content .tab-pane#advanced .section-heading { + margin: 35px 0 7px 0; + } + .container #vrm-tabs-content .tab-pane#advanced .download-data-container { + position: static; + top: 0; + left: 0; + float: left; + margin-bottom: 14px; + padding-left: 24px; + max-height: none; + } + .container #vrm-tabs-content .tab-pane#advanced .download-data-container .download-blue { + float: left; + } + .container #vrm-tabs-content .tab-pane#advanced .download-data-container .link-text { + float: right; + clear: right; + width: 145px; + padding: 0; + } + .container #vrm-tabs-content .tab-pane .content .last-update-info { + margin-bottom: 8px; + padding-right: 0px; + position: relative; + top: 0px; + } + .container #vrm-tabs-content .tab-pane .content .last-update-info > span:first-child { + padding-left: 27px; + } + .container #vrm-tabs-content .tab-pane .content .last-update-info .pull-right { + float: left; + } + .container #vrm-tabs-content .tab-pane .content .last-update-info .sprite-icons { + left: 0px; + position: absolute; + } + .container #vrm-tabs-content .tab-pane .content .section-heading > span, + .container #vrm-tabs-content .tab-pane .content .section-heading h2 { + display: none; + } + .container #vrm-tabs-content .tab-pane .content .mobile-graph-refresh { + display: inline-block; + width: 300px; + margin: 10px; + } + .container #vrm-tabs-content .tab-pane .content .progress-meters-container { + height: auto; + margin-bottom: 40px; + } + .container #vrm-tabs-content .tab-pane .content .progress-meters-container .progress-meter-container { + height: 150px !important; + padding: 20px 20px 48px 20px; + } + .container #vrm-tabs-content .tab-pane .content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container .icon, + .container #vrm-tabs-content .tab-pane .content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .icon { + left: auto !important; + right: 0px !important; + top: -30px !important; + } + .container #vrm-tabs-content .tab-pane .content .section-graph { + margin-bottom: 40px; + } + .container #vrm-tabs-content .tab-pane .content .section-graph .dashboard-graph { + height: 224px !important; + margin: 40px 20px 30px 10px !important; + } + .container #vrm-tabs-content .tab-pane .content .section-graph .dashboard-legend { + height: 90px !important; + } + .container #vrm-tabs-content .tab-pane .content .section-graph .dashboard-legend ul li { + margin-bottom: 9px; + margin-right: 0px !important; + width: 130px; + } + .container #vrm-tabs-content #solar-yield .content .section-graph .dashboard-graph.move-last-tick-to-front .jqplot-xaxis canvas:last-child, + .container #vrm-tabs-content #consumption .content .section-graph .dashboard-graph.move-last-tick-to-front .jqplot-xaxis canvas:last-child, + .container #vrm-tabs-content #batteries .content .section-graph .dashboard-graph.move-last-tick-to-front .jqplot-xaxis canvas:last-child { + left: 10px !important; + } + .container #vrm-tabs-content #settings .content .form-tabs-container { + margin-bottom: 40px; + margin-left: 10px; + margin-right: 10px; + width: 300px; + } + .container #vrm-tabs-content #settings .content .form-tabs-container .form-tabs { + margin-top: 14px; + } + .container #vrm-tabs-content #settings .content .form-tabs-container .form-tabs li a { + padding-left: 20px; + text-align: left; + } + .container #vrm-tabs-content #settings .content .form-tabs-container .btn { + width: 300px; + } + .container #vrm-tabs-content #settings .content .form-tabs-container .btn.force-width { + width: 300px !important; + } + .container #vrm-tabs-content #settings .content .form-tabs-container .mobile-title { + display: block; + margin-bottom: 0px; + margin-top: 50px; + } + .container #vrm-tabs-content #settings .content .remove-site-question .btn { + width: 300px; + } + .container #vrm-tabs-content #settings .content .remove-site-question .btn.force-width { + width: 300px !important; + } + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-location .location-map-container #location-map { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 300px; + width: 300px; + } + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-summarywidget .summary-widget-list-enabled-caption { + margin-bottom: 13px; + padding-right: 0; + text-align: left; + } + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-summarywidget .summary-widget-list-enabled-caption, + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-summarywidget .summary-widget-list-disabled-caption { + margin-top: 17px; + padding-left: 37px; + } + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-summarywidget .summary-widget-list-enabled-caption .sprite-icons, + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-summarywidget .summary-widget-list-disabled-caption .sprite-icons { + left: 15px; + } + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-geofence.fieldset-geofence-map { + width: auto; + } + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-geofence.fieldset-geofence-map .form-element { + width: auto !important; + } + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-geofence.fieldset-geofence-map .geofence-map-container { + width: auto; + } + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-geofence.fieldset-geofence-map .geofence-map-container #geofence-map { + width: auto; + } + .container #vrm-tabs-content #settings .content .sortable-widget-list-enabled-caption { + margin-bottom: 13px; + padding-right: 0; + text-align: left; + } + .container #vrm-tabs-content #settings .content .sortable-widget-list-disabled-caption { + margin-bottom: 13px !important; + margin-top: 16px !important; + } + .container #vrm-tabs-content #settings .content .sortable-widget-list-enabled-caption, + .container #vrm-tabs-content #settings .content .sortable-widget-list-disabled-caption { + padding-left: 37px; + } + .container #vrm-tabs-content #settings .content .sortable-widget-list-enabled-caption .sprite-icons, + .container #vrm-tabs-content #settings .content .sortable-widget-list-disabled-caption .sprite-icons { + left: 15px; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-alarms-admin-settings .form-input-list .row, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-alarms-admin-settings .form-input-list .row, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-alarms-admin-settings .form-input-list .row, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-user-settings-container .form-input-list .row, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-user-settings-container .form-input-list .row, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-user-settings-container .form-input-list .row, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-widget-settings .form-input-list .row, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-widget-settings .form-input-list .row, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-widget-settings .form-input-list .row { + height: auto; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label .alternative-display, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label .alternative-display, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label .alternative-display, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label .alternative-display, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label .alternative-display, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label .alternative-display, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle label .alternative-display, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle label .alternative-display, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle label .alternative-display { + position: relative; + left: 0; + margin-top: 10px; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label > a, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label > a, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label > a, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label > a, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label > a, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label > a, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle label > a, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle label > a, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle label > a { + top: 0; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .caption, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .caption, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .caption, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle.adjust-margin label .caption, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle.adjust-margin label .caption, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle.adjust-margin label .caption, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .caption, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .caption, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .caption { + display: inline-block; + margin-top: 10px; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .email-caption, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .email-caption, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .email-caption, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle.adjust-margin label .email-caption, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle.adjust-margin label .email-caption, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle.adjust-margin label .email-caption, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .email-caption, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .email-caption, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .email-caption { + display: inline-block; + min-width: 200px; + margin-top: 6px; + } + .container #vrm-tabs-content #settings .content #form-container-user-settings #toggleInviteForm, + .container #vrm-tabs-content #settings .content #form-alarms-admin-settings #toggleInviteForm { + margin-bottom: 20px; + position: static; + width: 300px; + } + .container #vrm-tabs-content #settings .content #form-container-user-settings #toggleInviteForm.force-width, + .container #vrm-tabs-content #settings .content #form-alarms-admin-settings #toggleInviteForm.force-width { + width: 300px !important; + } + .container #vrm-tabs-content #settings .content #form-container-user-settings #inviteFormExplanation, + .container #vrm-tabs-content #settings .content #form-alarms-admin-settings #inviteFormExplanation { + position: static; + } + .container #vrm-tabs-content #settings .content #form-container-user-settings .header .caption-right, + .container #vrm-tabs-content #settings .content #form-alarms-admin-settings .header .caption-right { + float: none; + text-transform: lowercase; + } + .container #vrm-tabs-content #settings .content #form-alarms-admin-settings .header { + height: auto; + padding-top: 7px; + padding-bottom: 6px; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings .above-fieldset-element { + margin-bottom: 20px; + position: static; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings .above-fieldset-element .btn { + margin-left: 0; + margin-bottom: 12px; + width: 300px; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings .above-fieldset-element .btn.force-width { + width: 300px !important; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings .below-alarms-fieldset-element { + text-align: center; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings .below-alarms-fieldset-element a { + margin-left: 0; + width: 300px; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings .below-alarms-fieldset-element a.force-width { + width: 300px !important; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings .hint { + display: none; + } + /* -----------[Widgets]--------------*/ + .widget .header .sub-title ul li:nth-child(2) { + margin-top: -8px; + } + .widget .bottom-graph .graph-links li.selected:nth-child(2) .caption { + width: 97px; + } + .widget.VRM_Widget_State .content .graph-container, + .widget.VRM_Widget_VeBusWarningsAndAlarms .content .graph-container { + height: 255px; + padding: 50px 28px 25px 22px; + } + .widget.VRM_Widget_State .state-legend, + .widget.VRM_Widget_VeBusWarningsAndAlarms .state-legend { + padding: 20px 22px; + } + .widget .content.ps-container { + height: auto; + } + #forms-container-alarms-settings .settings-alarm-element { + width: 188px; + float: none; + padding: 0px 19px 19px 80px !important; + } + #forms-container-alarms-settings .settings-alarm-element:nth-child(2) { + padding-top: 5px !important; + } + /* -----------[Mobile menu]--------------*/ + .mobile-menu-open-handle { + border: 1px solid #dcdbd7; + cursor: pointer; + display: block; + height: 40px; + margin-right: 0; + position: absolute; + right: 10px; + top: 20px; + width: 40px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + } + .mobile-menu-open-handle .sprite-icons { + margin-left: 8px; + margin-top: 8px; + } + body.mobile-menu-open { + overflow: auto; + } + body.mobile-menu-open .mobile-menu-open-handle { + display: none; + } + body.mobile-menu-open .mobile-menu-close-handle { + right: 20px; + } + body.mobile-menu-open .mobile-menu { + left: 0; + } + body.mobile-menu-open .site-overlay-on-menu-open { + left: 0; + opacity: 1; + filter: alpha(opacity=100); + -webkit-transition: opacity 0.25s; + -moz-transition: opacity 0.25s; + -o-transition: opacity 0.25s; + transition: opacity 0.25s; + } + .mobile-menu { + background-color: #faf9f5; + bottom: 0; + display: block; + overflow: hidden; + position: fixed; + left: -258px; + top: 0; + z-index: 1101; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: left 0.25s; + -moz-transition: left 0.25s; + -o-transition: left 0.25s; + transition: left 0.25s; + -webkit-transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1); + transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1); + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -ms-transform: translateZ(0); + -o-transform: translateZ(0); + transform: translateZ(0); + -webkit-perspective: 1000; + -moz-perspective: 1000; + -ms-perspective: 1000; + perspective: 1000; + } + .mobile-menu.has-user-search-input .hide-on-user-search-input { + display: none !important; + } + .mobile-menu .container-inner { + padding-bottom: 0; + width: 258px !important; + height: 100%; + } + .mobile-menu .container-inner ul { + position: absolute; + top: 0; + bottom: 0; + width: 100%; + margin-top: 40px; + overflow-y: scroll; + } + .mobile-menu .container-inner ul li { + padding-left: 18px; + padding-right: 18px; + } + .mobile-menu .container-inner ul li.collapsable-parent .mobile-menu-link-main { + padding-right: 20px; + } + .mobile-menu .container-inner ul li.collapsable-parent .collapsable-parent-handle { + position: absolute; + right: 13px; + top: -2px; + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -240px; + } + .mobile-menu .container-inner ul li.collapsable-child.collapsed { + display: none; + } + .mobile-menu .container-inner ul li a { + display: block; + text-decoration: none; + } + .mobile-menu .container-inner ul li a .plus-sign { + color: #afe18d; + } + .mobile-menu .container-inner ul li .mobile-menu-link-main { + color: #272622; + font-size: 18px; + margin-bottom: 17px; + margin-top: 35px; + } + .mobile-menu .container-inner ul li .mobile-menu-link-sub { + margin-top: 14px; + } + .mobile-menu .top-menu-language-fly-out, + .mobile-menu .top-menu-language-selector-container { + display: none; + } + .mobile-menu-search { + display: block; + height: 40px; + } + .mobile-menu-search .sprite-icons { + left: 8px; + position: absolute; + top: 8px; + } + .mobile-menu-search input { + background-color: #959490 !important; + border-color: #959490 !important; + color: #ffffff !important; + height: 100%; + padding-left: 40px; + width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + } + .mobile-menu-search input:-moz-placeholder { + color: #e6e5e1; + opacity: 1; + } + .mobile-menu-search input::-moz-placeholder { + color: #e6e5e1; + opacity: 1; + } + .mobile-menu-search input:-webkit-input-placeholder { + color: #e6e5e1; + opacity: 1; + } + .mobile-menu-search input::-webkit-input-placeholder { + color: #e6e5e1; + opacity: 1; + } + .mobile-menu-search input:-ms-input-placeholder { + color: #e6e5e1; + opacity: 1; + } + .mobile-menu-search input::-ms-input-placeholder { + color: #e6e5e1; + opacity: 1; + } + .mobile-menu-site-title { + font-size: 21px !important; + } + .mobile-menu-buttons-container .btn { + display: inline-block !important; + font-size: 15px; + } + .mobile-menu-buttons-container .remote-console-trigger { + display: inline-block; + } + /* -----------[Admin sites overview]--------------*/ + body.diagnostics .breadcrumb .site-select, + body.site-overview .breadcrumb .site-select, + body.user-overview .breadcrumb .site-select { + display: inline-block; + } + /* -----------[Two factor login]--------------*/ + .two-step-login .mobile-menu { + display: none; + } + .user.update .container .form-tabs-container, + .user.two-step-update .container .form-tabs-container, + .user.update-dealer .container .form-tabs-container { + margin-bottom: 40px; + margin-left: 10px; + margin-right: 10px; + width: 300px; + } + .user.update .container .form-tabs-container .form-tabs, + .user.two-step-update .container .form-tabs-container .form-tabs, + .user.update-dealer .container .form-tabs-container .form-tabs { + margin-top: 14px; + } + .user.update .container .form-tabs-container .form-tabs li a, + .user.two-step-update .container .form-tabs-container .form-tabs li a, + .user.update-dealer .container .form-tabs-container .form-tabs li a { + padding-left: 20px; + text-align: left; + } + .user.update .container .form-tabs-container .btn, + .user.two-step-update .container .form-tabs-container .btn, + .user.update-dealer .container .form-tabs-container .btn { + width: 300px; + } + .user.update .container .form-tabs-container .btn.force-width, + .user.two-step-update .container .form-tabs-container .btn.force-width, + .user.update-dealer .container .form-tabs-container .btn.force-width { + width: 300px !important; + } + .user.update .container .form-tabs-container .mobile-title, + .user.two-step-update .container .form-tabs-container .mobile-title, + .user.update-dealer .container .form-tabs-container .mobile-title { + display: block; + margin-bottom: 0px; + margin-top: 50px; + } + .user.update .container .container-inner .four-columns-width, + .user.two-step-update .container .container-inner .four-columns-width, + .user.update-dealer .container .container-inner .four-columns-width { + width: 300px; + margin-left: 10px; + margin-right: 10px; + } + .remote-console-trigger { + float: none; + margin-left: 10px; + } +} +@media screen and (max-width: 959px) and print, screen and (max-width: 959px) and (-webkit-min-device-pixel-ratio: 1.25), screen and (max-width: 959px) and (-o-min-device-pixel-ratio: 3/2), screen and (max-width: 959px) and (min--moz-device-pixel-ratio: 1.25), screen and (max-width: 959px) and (-moz-min-device-pixel-ratio: 1.25), screen and (max-width: 959px) and (-ms-min-device-pixel-ratio: 1.25), screen and (max-width: 959px) and (min-device-pixel-ratio: 1.25), screen and (max-width: 959px) and (min-resolution: 120dpi), screen and (max-width: 959px) and (min-resolution: 1.25dppx) { + .mobile-menu .container-inner ul li.collapsable-parent .collapsable-parent-handle { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +@media screen and (max-width: 795px) { + .remote-console-popup-container.logged-in { + width: 682px; + } + .remote-console-logged-in .remote-console-controls-title { + display: none; + } + .remote-console-title { + display: block; + } + .remote-console-display-container { + width: 100%; + } + .remote-console-display { + padding-right: 184px; + } + .remote-console-controls { + bottom: auto; + height: 230px; + top: 70px; + } + .remote-console-logged-in .remote-console-controls-container { + background-color: #faf9f5; + width: 181px; + } + .remote-console-logged-in .remote-console-controls-title, + .remote-console-logged-in .remote-console-controls-subtitle { + color: #4790d0; + } + .remote-console-logged-in .remote-console-controls-subtitle { + margin-top: 59px; + text-align: left; + } + .btn.remote-console-control-button { + background-color: #4790d0; + } + .btn.remote-console-control-button:hover { + background-color: #387dc5; + } + .btn.remote-console-control-button .remote-console-control-icon { + color: #faf9f5; + fill: #faf9f5; + } + .btn.remote-console-control-button .remote-console-control-icon path { + fill: #faf9f5; + } +} +@media screen and (max-width: 767px) { + .remote-console-popup-container { + border-radius: 0; + height: 100%; + left: 0; + margin: 0; + position: fixed; + top: 0; + width: 100%; + } + .remote-console-popup-container .mfp-close { + color: #4790d0; + } + .remote-console-popup-container.logged-in { + width: 100%; + } + .remote-console-popup-container.logged-in .mfp-close { + color: #4790d0; + } + .remote-console-display-inner { + width: 100%; + } + .remote-console-status { + height: 100%; + } +} +@media screen and (max-width: 570px) { + .remote-console-display-inner { + height: 200px !important; + } +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.hide { + display: none; +} +.show { + display: block; +} +.invisible { + visibility: hidden; +} +.affix { + position: fixed; +} +#cssValues.colors.blue { + color: #4790d0; +} +#cssValues.colors.blueHover { + color: #387dc5; +} +#cssValues.colors.blueShadow { + color: #5b9bcd; +} +#cssValues.colors.orange { + color: #f7ab3e; +} +#cssValues.colors.orangeHover { + color: #f0962e; +} +#cssValues.colors.green { + color: #8bc964; +} +#cssValues.colors.greenHover { + color: #72b84c; +} +#cssValues.colors.greenShadow { + color: #98c478; +} +#cssValues.colors.lightGreen { + color: #afe18d; +} +#cssValues.colors.red { + color: #fa716f; +} +#cssValues.colors.redHover { + color: #f35c58; +} +#cssValues.colors.redShadow { + color: #e66e6e; +} +#cssValues.colors.black { + color: #272622; +} +#cssValues.colors.white { + color: #ffffff; +} +#cssValues.colors.darkGray { + color: #63625e; +} +#cssValues.colors.darkGrayShadow { + color: rgba(99, 98, 94, 0.1); +} +#cssValues.colors.darkGrayLines { + color: #4f4f4b; +} +#cssValues.colors.gray { + color: #959490; +} +#cssValues.colors.grayShadow { + color: #8e8d89; +} +#cssValues.colors.lightGrayLines { + color: #dcdbd7; +} +#cssValues.colors.lightGraySurfaces { + color: #e6e5e1; +} +#cssValues.colors.lightGrayBackground { + color: #f0efeb; +} +#cssValues.colors.lightGrayWidgetHeader { + color: #faf9f5; +} +#cssValues.colors.grayLines { + color: #e5e4e0; +} +#cssValues.sprites.url { + background-image: url("/img/VRM-sprite.png?v=3"); +} +#cssValues.sprites.url2X { + background-image: url("/img/VRM-sprite@2X.png?v=3"); +} +#cssValues.sprites.width { + width: 621px; +} +#cssValues.sprites.height { + height: 888px; +} +#cssValues.fonts.fontFamily { + font-family: 'MuseoSans-300', sans-serif; +} +/*# sourceMappingURL=1a83de5aa35b26837c2042d512c73c5a_md5_7b8754c004401cfe0be061108bf9f813.css.map * + +/**************************************************************************************************************************************** +Dark mode (start) +****************************************************************************************************************************************/ +@media (prefers-color-scheme: dark) { + body { + /*background-color: #1b1b1b;*/ + background-color: #101010; + color: #e6e5e1; + } + .remote-console-display { + /*background-color: #303030;*/ + background-color: #202020; + } + .remote-console-popup-container { + /*background-color: #303030;*/ + background-color: #202020; + } + .remote-console-controls-container { + background-color: #234868; + } + + .remote-console-controls-title, .remote-console-controls-subtitle { + color: #f3f2ee; + } + + .btn.light, input.light, textarea.light { + /*background-color: #7d7c7a;*/ + background-color: #303030; + /*background-color: #202020;*/ + border: 1px solid #4b4b4b; + } + .btn.light:hover, input.light:hover, textarea.light:hover { + /*background-color: #9d9d9d;*/ + background-color: #565656; + border: 1px solid #727272; + } + .remote-console-control-button .remote-console-control-icon { + color: #cfe9ff; + fill: #cfe9ff; + } + .remote-console-control-button .remote-console-control-icon path { + fill: #cfe9ff; + } + .remote-console-display-inner { + border: 1px solid #4b4b4b; + } +} +/**************************************************************************************************************************************** +Dark mode (end) +****************************************************************************************************************************************/ diff --git a/FileSets/v3.00~42/styles.css.orig b/FileSets/v3.00~42/styles.css.orig new file mode 100644 index 00000000..696ed6cb --- /dev/null +++ b/FileSets/v3.00~42/styles.css.orig @@ -0,0 +1,10974 @@ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} +audio:not([controls]) { + display: none; +} +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +a:hover, +a:active { + outline: 0; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + /* Responsive images (ensure images don't scale beyond their parents) */ + max-width: 100%; + /* Part 1: Set a maxium relative to the parent */ + width: auto\9; + /* IE7-8 need help adjusting responsive images */ + height: auto; + /* Part 2: Scale the height according to the width, otherwise you get stretching */ + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} +#map_canvas img, +.google-maps img { + max-width: none; +} +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; + background-image: none; +} +button, +input { + *overflow: visible; + line-height: normal; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} +textarea { + overflow: auto; + vertical-align: top; +} +@media print { + * { + text-shadow: none !important; + color: #000 !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} +/* @group Base */ +.chzn-container { + position: relative; + display: inline-block; + zoom: 1; +} +.chzn-container .chzn-drop { + border-top: 0; + position: absolute; + left: 0; + z-index: 1010; +} +/* @end */ +/* @group Single Chosen */ +.chzn-container-single .chzn-single { + display: block; + outline: none; + overflow: hidden; + white-space: nowrap; + position: relative; + text-decoration: none; +} +.chzn-container-single .chzn-single span { + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.chzn-container-single .chzn-single .handle { + position: absolute; + right: 0; + top: 0; + display: block; +} +.chzn-container-single .chzn-search { + position: relative; + white-space: nowrap; + z-index: 1010; +} +.no-search + .chzn-container-single .chzn-search { + display: none !important; +} +.chzn-container-single .chzn-search input { + outline: 0; +} +/* @group Results */ +.chzn-container .chzn-results { + position: relative; + overflow-x: hidden; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} +.chzn-container-multi .chzn-results { + padding: 0; +} +.chzn-container .chzn-results li { + display: none; + margin: 0; + list-style: none; +} +.chzn-container .chzn-results .active-result { + cursor: pointer; + display: list-item; + width: 100%; +} +.chzn-container .chzn-results .no-results { + display: list-item; +} +.chzn-container .chzn-results .group-result { + cursor: default; +} +.chzn-container .chzn-results .group-option { + padding-left: 15px; +} +.chzn-container-multi .chzn-drop .result-selected { + display: none; +} +/* @end */ +div.datepicker { + position: relative; + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + width: 196px; + height: 147px; + position: absolute; + cursor: default; + top: 0; + left: 0; + display: none; +} +.datepickerContainer { + position: absolute; +} +/* Hide border divs by default */ +.datepickerBorderT, +.datepickerBorderB, +.datepickerBorderL, +.datepickerBorderR, +.datepickerBorderTL, +.datepickerBorderTR, +.datepickerBorderBL, +.datepickerBorderBR { + display: none; +} +.datepickerHidden { + display: none; +} +div.datepicker table { + border-collapse: collapse; +} +div.datepicker a { + color: black; + text-decoration: none; + cursor: default; + outline: none; +} +div.datepicker table td { + text-align: center; + padding: 0; + margin: 0; +} +div.datepicker th { + text-align: center; + color: #666666; + font-weight: normal; + padding: 0; +} +div.datepicker tbody a { + display: block; +} +.datepickerDays a { + width: 20px; + line-height: 16px; + height: 16px; + padding-right: 2px; +} +.datepickerYears a, +.datepickerMonths a { + width: 39px; + line-height: 36px; + height: 36px; + text-align: center; +} +.datepickerMonths td:first-child a, +.datepickerMonths td:last-child a, +.datepickerYears td:first-child a, +.datepickerYears td:last-child a { + width: 38px; +} +td.datepickerNotInMonth a { + color: #666666; +} +tbody.datepickerDays td.datepickerSelected { + background: #136A9F; +} +tbody.datepickerDays td.datepickerNotInMonth.datepickerSelected { + background: #17384d; +} +tbody.datepickerYears td.datepickerSelected, +tbody.datepickerMonths td.datepickerSelected { + background: #17384d; +} +div.datepicker td.datepickerSelected a { + color: white; +} +div.datepicker a:hover, +div.datepicker a:hover { + color: #88c5eb; +} +div.datepicker td.datepickerNotInMonth a:hover { + color: #999999; +} +.datepickerSpace div { + width: 20px; +} +.datepickerBlock { + vertical-align: top; +} +a.datepickerGoNext, +a.datepickerGoPrev, +a.datepickerMonth { + text-align: center; + height: 20px; + line-height: 20px; + float: left; +} +div.datepicker th a.datepickerGoNext, +div.datepicker th a.datepickerGoPrev { + width: 20px; + color: #666666; + display: none; +} +div.datepicker th a.datepickerMonth { + width: 114px; + display: block; +} +/* Only display the previous/next arrows on the first/last calendars */ +div.datepicker .datepickerFirstView th a.datepickerGoPrev, +div.datepicker .datepickerLastView th a.datepickerGoNext { + display: block; +} +/* Compensate for the space lost by not having a previous arrow */ +div.datepicker th a.datepickerMonth { + margin-left: 20px; +} +div.datepicker .datepickerFirstView th a.datepickerMonth { + margin-left: 0; +} +/* Day mode calendar body */ +table.datepickerViewDays tbody.datepickerMonths, +table.datepickerViewDays tbody.datepickerYears { + display: none; +} +/* Month mode calendar body */ +table.datepickerViewMonths tbody.datepickerDays, +table.datepickerViewMonths tbody.datepickerYears, +table.datepickerViewMonths tr.datepickerDoW { + display: none; +} +/* Year mode calendar body */ +table.datepickerViewYears tbody.datepickerDays, +table.datepickerViewYears tbody.datepickerMonths, +table.datepickerViewYears tr.datepickerDoW { + display: none; +} +td.datepickerDisabled a, +td.datepickerDisabled.datepickerNotInMonth a { + color: #555555; +} +td.datepickerDisabled a:hover { + color: #333333; +} +/* Not used by default, calendar cells can be marked as special if desired (doesn't seem to be totally working) */ +div.datepicker tbody.datepickerDays td.datepickerSpecial a { + background: #770000; + color: white; +} +div.datepicker tbody.datepickerDays td.datepickerSpecial.datepickerSelected a { + background: #aa0000; +} +/* style the 'not in month' day cell away */ +tbody.datepickerDays td.datepickerNotInMonth.datepickerSelected { + background-color: transparent; +} +div.datepicker td.datepickerNotInMonth a span { + display: none; +} +div.datepicker td.datepickerNotInMonth a:hover span { + display: none; +} +div.datepicker tbody.datepickerDays td.datepickerNotInMonth:hover { + background-color: transparent; +} +.picker { + font-size: 16px; + text-align: left; + line-height: 1.2; + color: #000; + position: absolute; + z-index: 10000; +} +.picker__input { + cursor: default; +} +.picker__input.picker__input--active { + border-color: #0089ec; +} +.picker__holder { + width: 100%; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} +.picker { + width: 100%; +} +.picker__holder { + position: absolute; + background: #fff; + border: 1px solid #aaa; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + min-width: 176px; + max-width: 466px; + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; + max-height: 0; + -ms-filter: "alpha(Opacity=0)"; + filter: alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; + -webkit-transform: translateY(-1em) perspective(600px) rotateX(10deg); + -moz-transform: translateY(-1em) perspective(600px) rotateX(10deg); + transform: translateY(-1em) perspective(600px) rotateX(10deg); + -webkit-transition: all 0.15s ease-out, max-height 0 0.15s; + -moz-transition: all 0.15s ease-out, max-height 0 0.15s; + transition: all 0.15s ease-out, max-height 0 0.15s; +} +.picker--opened .picker__holder { + max-height: 25em; + -ms-filter: "alpha(Opacity=100)"; + filter: alpha(opacity=100); + -moz-opacity: 1; + opacity: 1; + -webkit-transform: translateY(0) perspective(600px) rotateX(0); + -moz-transform: translateY(0) perspective(600px) rotateX(0); + transform: translateY(0) perspective(600px) rotateX(0); + -webkit-transition: all 0.15s ease-out, max-height 0; + -moz-transition: all 0.15s ease-out, max-height 0; + transition: all 0.15s ease-out, max-height 0; + -webkit-box-shadow: 0 6px 18px 1px rgba(0, 0, 0, 0.12); + -moz-box-shadow: 0 6px 18px 1px rgba(0, 0, 0, 0.12); + box-shadow: 0 6px 18px 1px rgba(0, 0, 0, 0.12); +} +.picker__box { + padding: 0 1em; +} +.picker__header { + text-align: center; + position: relative; + margin-top: 0.75em; +} +.picker__month, +.picker__year { + font-weight: 500; + display: inline-block; + margin-left: .25em; + margin-right: 0.25em; +} +.picker__year { + color: #999; + font-size: .8em; + font-style: italic; +} +.picker__select--month, +.picker__select--year { + font-size: .8em; + border: 1px solid #b7b7b7; + height: 2.5em; + padding: .5em .25em; + margin-left: .25em; + margin-right: .25em; + margin-top: -0.5em; +} +.picker__select--month { + width: 35%; +} +.picker__select--year { + width: 22.5%; +} +.picker__select--month:focus, +.picker__select--year:focus { + border-color: #0089ec; +} +.picker__nav--prev, +.picker__nav--next { + position: absolute; + top: -0.33em; + padding: .5em 1.33em; + width: 1em; + height: 1em; +} +.picker__nav--prev { + left: -1em; + padding-right: 1.5em; +} +.picker__nav--next { + right: -1em; + padding-left: 1.5em; +} +.picker__nav--prev:before, +.picker__nav--next:before { + content: " "; + border-top: .5em solid transparent; + border-bottom: .5em solid transparent; + border-right: .75em solid #000; + width: 0; + height: 0; + display: block; + margin: 0 auto; +} +.picker__nav--next:before { + border-right: 0; + border-left: 0.75em solid #000000; +} +.picker__nav--prev:hover, +.picker__nav--next:hover { + cursor: pointer; + color: #000; + background: #b1dcfb; +} +.picker__nav--disabled, +.picker__nav--disabled:hover, +.picker__nav--disabled:before, +.picker__nav--disabled:before:hover { + cursor: default; + background: 0; + border-right-color: #f5f5f5; + border-left-color: #f5f5f5; +} +.picker__table { + text-align: center; + border-collapse: collapse; + border-spacing: 0; + table-layout: fixed; + font-size: inherit; + width: 100%; + margin-top: .75em; + margin-bottom: 0.5em; +} +@media (min-height: 33.875em) { + .picker__table { + margin-bottom: 0.75em; + } +} +.picker__table td { + margin: 0; + padding: 0; +} +.picker__weekday { + width: 14.285714286%; + font-size: .75em; + padding-bottom: .25em; + color: #999; + font-weight: 500; +} +@media (min-height: 33.875em) { + .picker__weekday { + padding-bottom: 0.5em; + } +} +.picker__day { + padding: .3125em 0; + font-weight: 200; + border: 1px solid transparent; +} +.picker__day--today { + color: #0089ec; + position: relative; +} +.picker__day--today:before { + content: " "; + position: absolute; + top: 2px; + right: 2px; + width: 0; + height: 0; + border-top: .5em solid #0059bc; + border-left: 0.5em solid transparent; +} +.picker__day--selected, +.picker__day--selected:hover { + border-color: #0089ec; +} +.picker__day--highlighted { + background: #b1dcfb; +} +.picker__day--disabled:before { + border-top-color: #aaaaaa; +} +.picker__day--outfocus { + color: #dddddd; +} +.picker__day--infocus:hover, +.picker__day--outfocus:hover { + cursor: pointer; + color: #000; + background: #b1dcfb; +} +.picker__day--highlighted:hover, +.picker--focused .picker__day--highlighted { + background: #0089ec; + color: #ffffff; +} +.picker__day--disabled, +.picker__day--disabled:hover { + background: #f5f5f5; + border-color: #f5f5f5; + color: #ddd; + cursor: default; +} +.picker__day--highlighted.picker__day--disabled, +.picker__day--highlighted.picker__day--disabled:hover { + background: #bbbbbb; +} +.picker__footer { + text-align: center; +} +.picker__button--today, +.picker__button--clear { + border: 1px solid #fff; + background: #fff; + font-size: .8em; + padding: .66em 0; + font-weight: 700; + width: 50%; + display: inline-block; + vertical-align: bottom; +} +.picker__button--today:hover, +.picker__button--clear:hover { + cursor: pointer; + color: #000; + background: #b1dcfb; + border-bottom-color: #b1dcfb; +} +.picker__button--today:focus, +.picker__button--clear:focus { + background: #b1dcfb; + border-color: #0089ec; + outline: 0; +} +.picker__button--today:before, +.picker__button--clear:before { + position: relative; + display: inline-block; + height: 0; +} +.picker__button--today:before { + content: " "; + margin-right: .45em; + top: -0.05em; + width: 0; + border-top: .66em solid #0059bc; + border-left: 0.66em solid transparent; +} +.picker__button--clear:before { + content: "\D7"; + margin-right: .35em; + top: -0.1em; + color: #e20; + vertical-align: top; + font-size: 1.1em; +} +.picker__list { + list-style: none; + padding: .75em 0 4.2em; + margin: 0; +} +.picker__list-item { + border-bottom: 1px solid #ddd; + border-top: 1px solid #ddd; + margin-bottom: -1px; + position: relative; + background: #fff; + padding: 0.75em 1.25em; +} +@media (min-height: 46.75em) { + .picker__list-item { + padding: 0.5em 1em; + } +} +.picker__list-item:hover { + cursor: pointer; + color: #000; + background: #b1dcfb; + border-color: #0089ec; + z-index: 10; +} +.picker__list-item--selected, +.picker__list-item--selected:hover { + border-color: #0089ec; + z-index: 10; +} +.picker__list-item--highlighted { + background: #b1dcfb; +} +.picker__list-item--highlighted:hover, +.picker--focused .picker__list-item--highlighted { + background: #0089ec; + color: #ffffff; +} +.picker__list-item--disabled, +.picker__list-item--disabled:hover, +.picker--focused .picker__list-item--disabled { + background: #f5f5f5; + border-color: #f5f5f5; + color: #ddd; + cursor: default; + border-color: #ddd; + z-index: auto; +} +.picker--time .picker__button--clear { + display: block; + width: 80%; + margin: 1em auto 0; + padding: 1em 1.25em; + background: 0; + border: 0; + font-weight: 500; + font-size: .67em; + text-align: center; + text-transform: uppercase; + color: #666666; +} +.picker--time .picker__button--clear:hover, +.picker--time .picker__button--clear:focus { + color: #000; + background: #b1dcfb; + background: #e20; + border-color: #e20; + cursor: pointer; + color: #fff; + outline: 0; +} +.picker--time .picker__button--clear:before { + top: -0.25em; + color: #666; + font-size: 1.25em; + font-weight: 700; +} +.picker--time .picker__button--clear:hover:before, +.picker--time .picker__button--clear:focus:before { + color: #ffffff; +} +.picker--time { + min-width: 256px; + max-width: 320px; +} +.picker--time .picker__holder { + background: #f2f2f2; +} +@media (min-height: 40.125em) { + .picker--time .picker__holder { + font-size: 0.875em; + } +} +.picker--time .picker__box { + padding: 0; +} +/*rules for the plot target div. These will be cascaded down to all plot elements according to css rules*/ +.jqplot-target { + position: relative; + color: #666666; + font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; + font-size: 1em; + /* height: 300px; + width: 400px;*/ +} +/*rules applied to all axes*/ +.jqplot-axis { + font-size: 0.75em; +} +.jqplot-xaxis { + margin-top: 10px; +} +.jqplot-x2axis { + margin-bottom: 10px; +} +.jqplot-yaxis { + margin-right: 10px; +} +.jqplot-y2axis, +.jqplot-y3axis, +.jqplot-y4axis, +.jqplot-y5axis, +.jqplot-y6axis, +.jqplot-y7axis, +.jqplot-y8axis, +.jqplot-y9axis, +.jqplot-yMidAxis { + margin-left: 10px; + margin-right: 0px; +} +/*rules applied to all axis tick divs*/ +.jqplot-axis-tick, +.jqplot-xaxis-tick, +.jqplot-yaxis-tick, +.jqplot-x2axis-tick, +.jqplot-y2axis-tick, +.jqplot-y3axis-tick, +.jqplot-y4axis-tick, +.jqplot-y5axis-tick, +.jqplot-y6axis-tick, +.jqplot-y7axis-tick, +.jqplot-y8axis-tick, +.jqplot-y9axis-tick, +.jqplot-yMidAxis-tick { + position: absolute; + white-space: pre; +} +.jqplot-xaxis-tick { + top: 0px; + /* initial position untill tick is drawn in proper place */ + left: 15px; + /* padding-top: 10px;*/ + text-align: center; + vertical-align: top; +} +.jqplot-x2axis-tick { + bottom: 0px; + /* initial position untill tick is drawn in proper place */ + left: 15px; + /* padding-bottom: 10px;*/ + vertical-align: bottom; +} +.jqplot-yaxis-tick { + right: 0px; + /* initial position untill tick is drawn in proper place */ + top: 15px; + /* padding-right: 10px;*/ + text-align: right; +} +.jqplot-yaxis-tick.jqplot-breakTick { + right: -20px; + margin-right: 0px; + padding: 1px 5px 1px 5px; + /* background-color: white;*/ + z-index: 2; + font-size: 1.5em; +} +.jqplot-y2axis-tick, +.jqplot-y3axis-tick, +.jqplot-y4axis-tick, +.jqplot-y5axis-tick, +.jqplot-y6axis-tick, +.jqplot-y7axis-tick, +.jqplot-y8axis-tick, +.jqplot-y9axis-tick { + left: 0px; + /* initial position untill tick is drawn in proper place */ + top: 15px; + /* padding-left: 10px;*/ + /* padding-right: 15px;*/ + text-align: left; +} +.jqplot-yMidAxis-tick { + text-align: center; + white-space: nowrap; +} +.jqplot-xaxis-label { + margin-top: 10px; + font-size: 11pt; + position: absolute; +} +.jqplot-x2axis-label { + margin-bottom: 10px; + font-size: 11pt; + position: absolute; +} +.jqplot-yaxis-label { + margin-right: 10px; + /* text-align: center;*/ + font-size: 11pt; + position: absolute; +} +.jqplot-yMidAxis-label { + font-size: 11pt; + position: absolute; +} +.jqplot-y2axis-label, +.jqplot-y3axis-label, +.jqplot-y4axis-label, +.jqplot-y5axis-label, +.jqplot-y6axis-label, +.jqplot-y7axis-label, +.jqplot-y8axis-label, +.jqplot-y9axis-label { + /* text-align: center;*/ + font-size: 11pt; + margin-left: 10px; + position: absolute; +} +.jqplot-meterGauge-tick { + font-size: 0.75em; + color: #999999; +} +.jqplot-meterGauge-label { + font-size: 1em; + color: #999999; +} +table.jqplot-table-legend { + margin-top: 12px; + margin-bottom: 12px; + margin-left: 12px; + margin-right: 12px; +} +table.jqplot-table-legend, +table.jqplot-cursor-legend { + background-color: rgba(255, 255, 255, 0.6); + border: 1px solid #cccccc; + position: absolute; + font-size: 0.75em; +} +td.jqplot-table-legend { + vertical-align: middle; +} +/* +These rules could be used instead of assigning +element styles and relying on js object properties. +*/ +/* +td.jqplot-table-legend-swatch { + padding-top: 0.5em; + text-align: center; +} + +tr.jqplot-table-legend:first td.jqplot-table-legend-swatch { + padding-top: 0px; +} +*/ +td.jqplot-seriesToggle:hover, +td.jqplot-seriesToggle:active { + cursor: pointer; +} +.jqplot-table-legend .jqplot-series-hidden { + text-decoration: line-through; +} +div.jqplot-table-legend-swatch-outline { + border: 1px solid #cccccc; + padding: 1px; +} +div.jqplot-table-legend-swatch { + width: 0px; + height: 0px; + border-top-width: 5px; + border-bottom-width: 5px; + border-left-width: 6px; + border-right-width: 6px; + border-top-style: solid; + border-bottom-style: solid; + border-left-style: solid; + border-right-style: solid; +} +.jqplot-title { + top: 0px; + left: 0px; + padding-bottom: 0.5em; + font-size: 1.7em; +} +table.jqplot-cursor-tooltip { + border: 1px solid #cccccc; + font-size: 0.75em; +} +.jqplot-cursor-tooltip { + border: 1px solid #cccccc; + font-size: 0.75em; + white-space: nowrap; + background: rgba(208, 208, 208, 0.5); + padding: 1px; +} +.jqplot-highlighter-tooltip, +.jqplot-canvasOverlay-tooltip { + border: 1px solid #cccccc; + font-size: 0.75em; + white-space: nowrap; + background: rgba(208, 208, 208, 0.5); + padding: 1px; +} +.jqplot-point-label { + font-size: 0.75em; + z-index: 2; +} +td.jqplot-cursor-legend-swatch { + vertical-align: middle; + text-align: center; +} +div.jqplot-cursor-legend-swatch { + width: 1.2em; + height: 0.7em; +} +.jqplot-error { + /* Styles added to the plot target container when there is an error go here.*/ + text-align: center; +} +.jqplot-error-message { + /* Styling of the custom error message div goes here.*/ + position: relative; + top: 46%; + display: inline-block; +} +div.jqplot-bubble-label { + font-size: 0.8em; + /* background: rgba(90%, 90%, 90%, 0.15);*/ + padding-left: 2px; + padding-right: 2px; + color: #333333; +} +div.jqplot-bubble-label.jqplot-bubble-label-highlight { + background: rgba(230, 230, 230, 0.7); +} +div.jqplot-noData-container { + text-align: center; + background-color: rgba(245, 245, 245, 0.3); +} +.jqplot-table-legend { + width: initial; + left: 27px !important; + border: 0; + background-color: transparent; +} +.jqplot-table-legend tr { + display: block; + float: left; + border: 0; +} +.jqplot-table-legend tr td { + padding: 4px !important; + border: 0; + background: transparent; + line-height: 24px; +} +.jqplot-table-legend tr td .jqplot-table-legend-swatch-outline { + border: 0; + padding: 0; +} +.jqplot-table-legend tr td .jqplot-table-legend-swatch { + border-width: 1px; + border-style: solid; + width: 19px; + height: 19px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.ps-container .ps-scrollbar-x-rail { + position: absolute; + /* please don't change 'position' */ + bottom: 3px; + /* there must be 'bottom' for ps-scrollbar-x-rail */ + height: 8px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + opacity: 0; + filter: alpha(opacity=0); + -o-transition: background-color 0.2s linear, opacity 0.2s linear; + -webkit-transition: background-color 0.2s linear, opacity 0.2s linear; + -moz-transition: background-color 0.2s linear, opacity 0.2s linear; + transition: background-color 0.2s linear, opacity 0.2s linear; +} +.ps-container:hover .ps-scrollbar-x-rail, +.ps-container.hover .ps-scrollbar-x-rail { + opacity: 0.6; + filter: alpha(opacity=60); +} +.ps-container .ps-scrollbar-x-rail:hover, +.ps-container .ps-scrollbar-x-rail.hover { + background-color: #eee; + opacity: 0.9; + filter: alpha(opacity=90); +} +.ps-container .ps-scrollbar-x-rail.in-scrolling { + background-color: #eee; + opacity: 0.9; + filter: alpha(opacity=90); +} +.ps-container .ps-scrollbar-y-rail { + position: absolute; + /* please don't change 'position' */ + right: 3px; + /* there must be 'right' for ps-scrollbar-y-rail */ + width: 8px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + opacity: 0; + filter: alpha(opacity = 0); + -o-transition: background-color 0.2s linear, opacity 0.2s linear; + -webkit-transition: background-color 0.2s linear, opacity 0.2s linear; + -moz-transition: background-color 0.2s linear, opacity 0.2s linear; + transition: background-color 0.2s linear, opacity 0.2s linear; +} +.ps-container:hover .ps-scrollbar-y-rail, +.ps-container.hover .ps-scrollbar-y-rail { + opacity: 0.6; + filter: alpha(opacity=60); +} +.ps-container .ps-scrollbar-y-rail:hover, +.ps-container .ps-scrollbar-y-rail.hover { + background-color: #eee; + opacity: 0.9; + filter: alpha(opacity=90); +} +.ps-container .ps-scrollbar-y-rail.in-scrolling { + background-color: #eee; + opacity: 0.9; + filter: alpha(opacity=90); +} +.ps-container .ps-scrollbar-x { + position: absolute; + /* please don't change 'position' */ + bottom: 0; + /* there must be 'bottom' for ps-scrollbar-x */ + height: 8px; + background-color: #aaa; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -o-transition: background-color 0.2s linear; + -webkit-transition: background-color 0.2s linear; + -moz-transition: background-color 0.2s linear; + transition: background-color 0.2s linear; +} +.ps-container.ie6 .ps-scrollbar-x { + font-size: 0; + /* fixed scrollbar height in xp sp3 ie6 */ +} +.ps-container .ps-scrollbar-x-rail:hover .ps-scrollbar-x, +.ps-container .ps-scrollbar-x-rail.hover .ps-scrollbar-x { + background-color: #999; +} +.ps-container .ps-scrollbar-y { + position: absolute; + /* please don't change 'position' */ + right: 0; + /* there must be 'right' for ps-scrollbar-y */ + width: 8px; + background-color: #aaa; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -o-transition: background-color 0.2s linear; + -webkit-transition: background-color 0.2s linear; + -moz-transition: background-color 0.2s linear; + transition: background-color 0.2s linear; +} +.ps-container.ie6 .ps-scrollbar-y { + font-size: 0; + /* fixed scrollbar height in xp sp3 ie6 */ +} +.ps-container .ps-scrollbar-y-rail:hover .ps-scrollbar-y, +.ps-container .ps-scrollbar-y-rail.hover .ps-scrollbar-y { + background-color: #999; +} +.ps-container.ie .ps-scrollbar-x, +.ps-container.ie .ps-scrollbar-y { + visibility: hidden; +} +.ps-container.ie:hover .ps-scrollbar-x, +.ps-container.ie:hover .ps-scrollbar-y, +.ps-container.ie.hover .ps-scrollbar-x, +.ps-container.ie.hover .ps-scrollbar-y { + visibility: visible; +} +.chardinjs-overlay { + display: none; + position: absolute; + z-index: 999999; + background-color: black; + opacity: 0.8; + filter: alpha(opacity=80); +} +.chardinjs-helper-layer { + position: absolute; + z-index: 9999998; + color: white; +} +.chardinjs-helper-layer.chardinjs-left { + border-left: solid white 1px; + margin-left: -10px; +} +.chardinjs-helper-layer.chardinjs-right { + border-right: solid white 1px; + padding-right: 10px; +} +.chardinjs-helper-layer.chardinjs-bottom { + border-bottom: solid white 1px; + padding-bottom: 10px; +} +.chardinjs-helper-layer.chardinjs-top { + border-top: solid white 1px; + padding-top: 10px; +} +.chardinjs-tooltip { + position: absolute; + -webkit-transition: opacity 0.1s ease-out; + -moz-transition: opacity 0.1s ease-out; + -o-transition: opacity 0.1s ease-out; + transition: opacity 0.1s ease-out; + max-width: 200px; +} +.chardinjs-tooltip.chardinjs-left { + margin-left: -135px; + padding-right: 10px; +} +.chardinjs-tooltip.chardinjs-right { + margin-right: -135px; + padding-left: 10px; +} +.chardinjs-tooltip.chardinjs-bottom { + margin-bottom: -50px; + padding-top: 10px; +} +.chardinjs-tooltip.chardinjs-top { + margin-top: -50px; + padding-bottom: 10px; +} +.chardinjs-tooltip.chardinjs-right:before, +.chardinjs-tooltip.chardinjs-left:after, +.chardinjs-tooltip.chardinjs-bottom:before, +.chardinjs-tooltip.chardinjs-top:after { + content: "."; + display: inline-block; + background-color: white; + height: 1px; + overflow: hidden; + position: absolute; +} +.chardinjs-tooltip.chardinjs-right:before, +.chardinjs-tooltip.chardinjs-left:after { + width: 100px; + top: 50%; +} +.chardinjs-tooltip.chardinjs-bottom:before, +.chardinjs-tooltip.chardinjs-top:after { + width: 1px; + height: 50px; + left: 50%; +} +.chardinjs-tooltip.chardinjs-bottom:before { + top: -50px; +} +.chardinjs-tooltip.chardinjs-top:after { + bottom: -50px; +} +.chardinjs-tooltip.chardinjs-right:before { + left: -100px; +} +.chardinjs-tooltip.chardinjs-left:after { + right: -100px; +} +.chardinjs-show-element { + z-index: 9999999 !important; + opacity: 0.8; + filter: alpha(opacity=80); +} +.chardinjs-relative-position { + position: relative; +} +/* required styles */ +.leaflet-map-pane, +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-tile-pane, +.leaflet-tile-container, +.leaflet-overlay-pane, +.leaflet-shadow-pane, +.leaflet-marker-pane, +.leaflet-popup-pane, +.leaflet-overlay-pane svg, +.leaflet-zoom-box, +.leaflet-image-layer, +.leaflet-layer { + position: absolute; + left: 0; + top: 0; +} +.leaflet-container { + overflow: hidden; + -ms-touch-action: none; +} +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + -webkit-user-drag: none; +} +.leaflet-marker-icon, +.leaflet-marker-shadow { + display: block; +} +.leaflet-container img { + max-width: none ! important; +} +.leaflet-container img.leaflet-image-layer { + max-width: 15000px ! important; +} +.leaflet-tile { + filter: inherit; + visibility: hidden; +} +.leaflet-tile-loaded { + visibility: inherit; +} +.leaflet-zoom-box { + width: 0; + height: 0; +} +.leaflet-overlay-pane svg { + -moz-user-select: none; +} +.leaflet-tile-pane { + z-index: 2; +} +.leaflet-objects-pane { + z-index: 3; +} +.leaflet-overlay-pane { + z-index: 4; +} +.leaflet-shadow-pane { + z-index: 5; +} +.leaflet-marker-pane { + z-index: 6; +} +.leaflet-popup-pane { + z-index: 7; +} +.leaflet-vml-shape { + width: 1px; + height: 1px; +} +.lvml { + behavior: url(#default#VML); + display: inline-block; + position: absolute; +} +.leaflet-control { + position: relative; + z-index: 7; + pointer-events: auto; +} +.leaflet-top, +.leaflet-bottom { + position: absolute; + z-index: 1000; + pointer-events: none; +} +.leaflet-top { + top: 0; +} +.leaflet-right { + right: 0; +} +.leaflet-bottom { + bottom: 0; +} +.leaflet-left { + left: 0; +} +.leaflet-control { + float: left; + clear: both; +} +.leaflet-right .leaflet-control { + float: right; +} +.leaflet-top .leaflet-control { + margin-top: 10px; +} +.leaflet-bottom .leaflet-control { + margin-bottom: 10px; +} +.leaflet-left .leaflet-control { + margin-left: 10px; +} +.leaflet-right .leaflet-control { + margin-right: 10px; +} +.leaflet-fade-anim .leaflet-tile, +.leaflet-fade-anim .leaflet-popup { + opacity: 0; + -webkit-transition: opacity 0.2s linear; + -moz-transition: opacity 0.2s linear; + -o-transition: opacity 0.2s linear; + transition: opacity 0.2s linear; +} +.leaflet-fade-anim .leaflet-tile-loaded, +.leaflet-fade-anim .leaflet-map-pane .leaflet-popup { + opacity: 1; +} +.leaflet-zoom-anim .leaflet-zoom-animated { + -webkit-transition: -webkit-transform 0.25s cubic-bezier(0, 0, 0.25, 1); + -moz-transition: -moz-transform 0.25s cubic-bezier(0, 0, 0.25, 1); + -o-transition: -o-transform 0.25s cubic-bezier(0, 0, 0.25, 1); + transition: transform 0.25s cubic-bezier(0, 0, 0.25, 1); +} +.leaflet-zoom-anim .leaflet-tile, +.leaflet-pan-anim .leaflet-tile, +.leaflet-touching .leaflet-zoom-animated { + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} +.leaflet-zoom-anim .leaflet-zoom-hide { + visibility: hidden; +} +.leaflet-clickable { + cursor: pointer; +} +.leaflet-container { + cursor: -webkit-grab; + cursor: -moz-grab; +} +.leaflet-popup-pane, +.leaflet-control { + cursor: auto; +} +.leaflet-dragging .leaflet-container, +.leaflet-dragging .leaflet-clickable { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; +} +.leaflet-container { + background: #ddd; + outline: 0; +} +.leaflet-container a { + color: #0078A8; +} +.leaflet-container a.leaflet-active { + outline: 2px solid orange; +} +.leaflet-zoom-box { + border: 2px dotted #38f; + background: rgba(255, 255, 255, 0.5); +} +.leaflet-container { + font: 12px / 1.5 "Helvetica Neue", Arial, Helvetica, sans-serif; +} +.leaflet-bar { + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.65); + border-radius: 4px; +} +.leaflet-bar a, +.leaflet-bar a:hover { + background-color: #fff; + border-bottom: 1px solid #ccc; + width: 26px; + height: 26px; + line-height: 26px; + display: block; + text-align: center; + text-decoration: none; + color: black; +} +.leaflet-bar a, +.leaflet-control-layers-toggle { + background-position: 50% 50%; + background-repeat: no-repeat; + display: block; +} +.leaflet-bar a:hover { + background-color: #f4f4f4; +} +.leaflet-bar a:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.leaflet-bar a:last-child { + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-bottom: none; +} +.leaflet-bar a.leaflet-disabled { + cursor: default; + background-color: #f4f4f4; + color: #bbb; +} +.leaflet-touch .leaflet-bar a { + width: 30px; + height: 30px; + line-height: 30px; +} +.leaflet-control-zoom-in, +.leaflet-control-zoom-out { + font: bold 18px 'Lucida Console', Monaco, monospace; + text-indent: 1px; +} +.leaflet-control-zoom-out { + font-size: 20px; +} +.leaflet-touch .leaflet-control-zoom-in { + font-size: 22px; +} +.leaflet-touch .leaflet-control-zoom-out { + font-size: 24px; +} +.leaflet-control-layers { + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.4); + background: #fff; + border-radius: 5px; +} +.leaflet-control-layers-toggle { + background-image: url(images/layers.png); + width: 36px; + height: 36px; +} +.leaflet-retina .leaflet-control-layers-toggle { + background-image: url(images/layers-2x.png); + background-size: 26px 26px; +} +.leaflet-touch .leaflet-control-layers-toggle { + width: 44px; + height: 44px; +} +.leaflet-control-layers .leaflet-control-layers-list, +.leaflet-control-layers-expanded .leaflet-control-layers-toggle { + display: none; +} +.leaflet-control-layers-expanded .leaflet-control-layers-list { + display: block; + position: relative; +} +.leaflet-control-layers-expanded { + padding: 6px 10px 6px 6px; + color: #333; + background: #fff; +} +.leaflet-control-layers-selector { + margin-top: 2px; + position: relative; + top: 1px; +} +.leaflet-control-layers label { + display: block; +} +.leaflet-control-layers-separator { + height: 0; + border-top: 1px solid #ddd; + margin: 5px -10px 5px -6px; +} +.leaflet-container .leaflet-control-attribution { + background: #fff; + background: rgba(255, 255, 255, 0.7); + margin: 0; +} +.leaflet-control-attribution, +.leaflet-control-scale-line { + padding: 0 5px; + color: #333; +} +.leaflet-control-attribution a { + text-decoration: none; +} +.leaflet-control-attribution a:hover { + text-decoration: underline; +} +.leaflet-container .leaflet-control-attribution, +.leaflet-container .leaflet-control-scale { + font-size: 11px; +} +.leaflet-left .leaflet-control-scale { + margin-left: 5px; +} +.leaflet-bottom .leaflet-control-scale { + margin-bottom: 5px; +} +.leaflet-control-scale-line { + border: 2px solid #777; + border-top: none; + line-height: 1.1; + padding: 2px 5px 1px; + font-size: 11px; + white-space: nowrap; + overflow: hidden; + -moz-box-sizing: content-box; + box-sizing: content-box; + background: #fff; + background: rgba(255, 255, 255, 0.5); +} +.leaflet-control-scale-line:not(:first-child) { + border-top: 2px solid #777; + border-bottom: none; + margin-top: -2px; +} +.leaflet-control-scale-line:not(:first-child):not(:last-child) { + border-bottom: 2px solid #777; +} +.leaflet-touch .leaflet-control-attribution, +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + box-shadow: none; +} +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + border: 2px solid rgba(0, 0, 0, 0.2); + background-clip: padding-box; +} +.leaflet-popup { + position: absolute; + text-align: center; +} +.leaflet-popup-content-wrapper { + padding: 1px; + text-align: left; + border-radius: 12px; +} +.leaflet-popup-content { + margin: 13px 19px; + line-height: 1.4; +} +.leaflet-popup-content p { + margin: 18px 0; +} +.leaflet-popup-tip-container { + margin: 0 auto; + width: 40px; + height: 20px; + position: relative; + overflow: hidden; +} +.leaflet-popup-tip { + width: 17px; + height: 17px; + padding: 1px; + margin: -10px auto 0; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.leaflet-popup-content-wrapper, +.leaflet-popup-tip { + background: white; + box-shadow: 0 3px 14px rgba(0, 0, 0, 0.4); +} +.leaflet-container a.leaflet-popup-close-button { + position: absolute; + top: 0; + right: 0; + padding: 4px 4px 0 0; + text-align: center; + width: 18px; + height: 14px; + font: 16px / 14px Tahoma, Verdana, sans-serif; + color: #c3c3c3; + text-decoration: none; + font-weight: bold; + background: transparent; +} +.leaflet-container a.leaflet-popup-close-button:hover { + color: #999; +} +.leaflet-popup-scrolled { + overflow: auto; + border-bottom: 1px solid #ddd; + border-top: 1px solid #ddd; +} +.leaflet-oldie .leaflet-popup-content-wrapper { + zoom: 1; +} +.leaflet-oldie .leaflet-popup-tip { + width: 24px; + margin: 0 auto; + -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; + filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); +} +.leaflet-oldie .leaflet-popup-tip-container { + margin-top: -1px; +} +.leaflet-oldie .leaflet-control-zoom, +.leaflet-oldie .leaflet-control-layers, +.leaflet-oldie .leaflet-popup-content-wrapper, +.leaflet-oldie .leaflet-popup-tip { + border: 1px solid #999; +} +.leaflet-div-icon { + background: #fff; + border: 1px solid #666; +} +.leaflet-cluster-anim .leaflet-marker-icon, +.leaflet-cluster-anim .leaflet-marker-shadow { + -webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in; + -moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in; + -o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in; + transition: transform 0.3s ease-out, opacity 0.3s ease-in; +} +.marker-cluster-small { + background-color: rgba(181, 226, 140, 0.6); +} +.marker-cluster-small div { + background-color: rgba(110, 204, 57, 0.6); +} +.marker-cluster-medium { + background-color: rgba(241, 211, 87, 0.6); +} +.marker-cluster-medium div { + background-color: rgba(240, 194, 12, 0.6); +} +.marker-cluster-large { + background-color: rgba(253, 156, 115, 0.6); +} +.marker-cluster-large div { + background-color: rgba(241, 128, 23, 0.6); +} +.leaflet-oldie .marker-cluster-small { + background-color: #b5e28c; +} +.leaflet-oldie .marker-cluster-small div { + background-color: #6ecc39; +} +.leaflet-oldie .marker-cluster-medium { + background-color: #f1d357; +} +.leaflet-oldie .marker-cluster-medium div { + background-color: #f0c20c; +} +.leaflet-oldie .marker-cluster-large { + background-color: #fd9c73; +} +.leaflet-oldie .marker-cluster-large div { + background-color: #f18017; +} +.marker-cluster { + background-clip: padding-box; + border-radius: 20px; +} +.marker-cluster div { + width: 30px; + height: 30px; + margin-left: 5px; + margin-top: 5px; + text-align: center; + border-radius: 15px; + font: 12px "Helvetica Neue", Arial, Helvetica, sans-serif; +} +.marker-cluster span { + line-height: 30px; +} +/* Magnific Popup CSS */ +.mfp-bg { + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1042; + overflow: hidden; + position: fixed; + background: #0b0b0b; + opacity: 0.8; + filter: alpha(opacity=80); +} +.mfp-wrap { + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1102; + position: fixed; + outline: none !important; + -webkit-backface-visibility: hidden; +} +.mfp-container { + text-align: center; + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + padding: 0 8px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.mfp-container:before { + content: ''; + display: inline-block; + height: 100%; + vertical-align: middle; +} +.mfp-align-top .mfp-container:before { + display: none; +} +.mfp-content { + position: relative; + display: inline-block; + vertical-align: middle; + margin: 0 auto; + text-align: left; + z-index: 1045; +} +.mfp-inline-holder .mfp-content, +.mfp-ajax-holder .mfp-content { + width: 100%; + cursor: auto; +} +.mfp-ajax-cur { + cursor: progress; +} +.mfp-zoom-out-cur, +.mfp-zoom-out-cur .mfp-image-holder .mfp-close { + cursor: -moz-zoom-out; + cursor: -webkit-zoom-out; + cursor: zoom-out; +} +.mfp-zoom { + cursor: pointer; + cursor: -webkit-zoom-in; + cursor: -moz-zoom-in; + cursor: zoom-in; +} +.mfp-auto-cursor .mfp-content { + cursor: auto; +} +.mfp-close, +.mfp-arrow, +.mfp-preloader, +.mfp-counter { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.mfp-loading.mfp-figure { + display: none; +} +.mfp-hide { + display: none !important; +} +.mfp-preloader { + color: #cccccc; + position: absolute; + top: 50%; + width: auto; + text-align: center; + margin-top: -0.8em; + left: 8px; + right: 8px; + z-index: 1044; +} +.mfp-preloader a { + color: #cccccc; +} +.mfp-preloader a:hover { + color: white; +} +.mfp-s-ready .mfp-preloader { + display: none; +} +.mfp-s-error .mfp-content { + display: none; +} +button.mfp-close, +button.mfp-arrow { + overflow: visible; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; + display: block; + outline: none; + padding: 0; + z-index: 1046; + -webkit-box-shadow: none; + box-shadow: none; +} +button::-moz-focus-inner { + padding: 0; + border: 0; +} +.mfp-close { + width: 44px; + height: 44px; + line-height: 44px; + position: absolute; + right: 0; + top: 0; + text-decoration: none; + text-align: center; + opacity: 0.65; + filter: alpha(opacity=65); + padding: 0 0 18px 10px; + color: white; + font-style: normal; + font-size: 28px; + font-family: Arial, Baskerville, monospace; +} +.mfp-close:hover, +.mfp-close:focus { + opacity: 1; + filter: alpha(opacity=100); +} +.mfp-close:active { + top: 1px; +} +.mfp-close-btn-in .mfp-close { + color: #333333; +} +.mfp-image-holder .mfp-close, +.mfp-iframe-holder .mfp-close { + color: white; + right: -6px; + text-align: right; + padding-right: 6px; + width: 100%; +} +.mfp-counter { + position: absolute; + top: 0; + right: 0; + color: #cccccc; + font-size: 12px; + line-height: 18px; +} +.mfp-arrow { + position: absolute; + opacity: 0.65; + filter: alpha(opacity=65); + margin: 0; + top: 50%; + margin-top: -55px; + padding: 0; + width: 90px; + height: 110px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +.mfp-arrow:active { + margin-top: -54px; +} +.mfp-arrow:hover, +.mfp-arrow:focus { + opacity: 1; + filter: alpha(opacity=100); +} +.mfp-arrow:before, +.mfp-arrow:after, +.mfp-arrow .mfp-b, +.mfp-arrow .mfp-a { + content: ''; + display: block; + width: 0; + height: 0; + position: absolute; + left: 0; + top: 0; + margin-top: 35px; + margin-left: 35px; + border: medium inset transparent; +} +.mfp-arrow:after, +.mfp-arrow .mfp-a { + border-top-width: 13px; + border-bottom-width: 13px; + top: 8px; +} +.mfp-arrow:before, +.mfp-arrow .mfp-b { + border-top-width: 21px; + border-bottom-width: 21px; + opacity: 0.7; +} +.mfp-arrow-left { + left: 0; +} +.mfp-arrow-left:after, +.mfp-arrow-left .mfp-a { + border-right: 17px solid white; + margin-left: 31px; +} +.mfp-arrow-left:before, +.mfp-arrow-left .mfp-b { + margin-left: 25px; + border-right: 27px solid #3f3f3f; +} +.mfp-arrow-right { + right: 0; +} +.mfp-arrow-right:after, +.mfp-arrow-right .mfp-a { + border-left: 17px solid white; + margin-left: 39px; +} +.mfp-arrow-right:before, +.mfp-arrow-right .mfp-b { + border-left: 27px solid #3f3f3f; +} +.mfp-iframe-holder { + padding-top: 40px; + padding-bottom: 40px; +} +.mfp-iframe-holder .mfp-content { + line-height: 0; + width: 100%; + max-width: 900px; +} +.mfp-iframe-holder .mfp-close { + top: -40px; +} +.mfp-iframe-scaler { + width: 100%; + height: 0; + overflow: hidden; + padding-top: 56.25%; +} +.mfp-iframe-scaler iframe { + position: absolute; + display: block; + top: 0; + left: 0; + width: 100%; + height: 100%; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); + background: black; +} +/* Main image in popup */ +img.mfp-img { + width: auto; + max-width: 100%; + height: auto; + display: block; + line-height: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 40px 0 40px; + margin: 0 auto; +} +/* The shadow behind the image */ +.mfp-figure { + line-height: 0; +} +.mfp-figure:after { + content: ''; + position: absolute; + left: 0; + top: 40px; + bottom: 40px; + display: block; + right: 0; + width: auto; + height: auto; + z-index: -1; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); + background: #444444; +} +.mfp-figure small { + color: #bdbdbd; + display: block; + font-size: 12px; + line-height: 14px; +} +.mfp-figure figure { + margin: 0; +} +.mfp-bottom-bar { + margin-top: -36px; + position: absolute; + top: 100%; + left: 0; + width: 100%; + cursor: auto; +} +.mfp-title { + text-align: left; + line-height: 18px; + color: #f3f3f3; + word-wrap: break-word; + padding-right: 36px; +} +.mfp-image-holder .mfp-content { + max-width: 100%; +} +.mfp-gallery .mfp-image-holder .mfp-figure { + cursor: pointer; +} +@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) { + /** + * Remove all paddings around the image on small screen + */ + .mfp-img-mobile .mfp-image-holder { + padding-left: 0; + padding-right: 0; + } + .mfp-img-mobile img.mfp-img { + padding: 0; + } + .mfp-img-mobile .mfp-figure:after { + top: 0; + bottom: 0; + } + .mfp-img-mobile .mfp-figure small { + display: inline; + margin-left: 5px; + } + .mfp-img-mobile .mfp-bottom-bar { + background: rgba(0, 0, 0, 0.6); + bottom: 0; + margin: 0; + top: auto; + padding: 3px 5px; + position: fixed; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .mfp-img-mobile .mfp-bottom-bar:empty { + padding: 0; + } + .mfp-img-mobile .mfp-counter { + right: 5px; + top: 3px; + } + .mfp-img-mobile .mfp-close { + top: 0; + right: 0; + width: 35px; + height: 35px; + line-height: 35px; + background: rgba(0, 0, 0, 0.6); + position: fixed; + text-align: center; + padding: 0; + } +} +@media all and (max-width: 900px) { + .mfp-arrow { + -webkit-transform: scale(0.75); + transform: scale(0.75); + } + .mfp-arrow-left { + -webkit-transform-origin: 0; + transform-origin: 0; + } + .mfp-arrow-right { + -webkit-transform-origin: 100%; + transform-origin: 100%; + } + .mfp-container { + padding-left: 6px; + padding-right: 6px; + } +} +.mfp-ie7 .mfp-img { + padding: 0; +} +.mfp-ie7 .mfp-bottom-bar { + width: 600px; + left: 50%; + margin-left: -300px; + margin-top: 5px; + padding-bottom: 5px; +} +.mfp-ie7 .mfp-container { + padding: 0; +} +.mfp-ie7 .mfp-content { + padding-top: 44px; +} +.mfp-ie7 .mfp-close { + top: 0; + right: 0; + padding-top: 0; +} +/* + +====== Zoom effect ====== + +*/ +.mfp-zoom-in { + /* start state */ + /* animate in */ + /* animate out */ +} +.mfp-zoom-in .mfp-with-anim { + opacity: 0; + filter: alpha(opacity=0); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + -webkit-transform: scale(0.1); + -moz-transform: scale(0.1); + -ms-transform: scale(0.1); + -o-transform: scale(0.1); + transform: scale(0.1); +} +.mfp-zoom-in.mfp-bg { + opacity: 0; + filter: alpha(opacity=0); + -webkit-transition: all 0.3s ease-out; + -moz-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; +} +.mfp-zoom-in.mfp-ready .mfp-with-anim { + opacity: 1; + filter: alpha(opacity=100); + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); +} +.mfp-zoom-in.mfp-ready.mfp-bg { + opacity: 0.8; + filter: alpha(opacity=80); +} +.mfp-zoom-in.mfp-removing .mfp-with-anim { + transform: scale(0.1); + opacity: 0; + filter: alpha(opacity=0); +} +.mfp-zoom-in.mfp-removing.mfp-bg { + opacity: 0; + filter: alpha(opacity=0); +} +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +.sprite-site-icons.none { + background-image: none; +} +.sprite-site-icons.soc-0-percent { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -96px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.soc-0-percent { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.soc-25-percent { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -144px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.soc-25-percent { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.soc-50-percent { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -192px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.soc-50-percent { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.soc-75-percent { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -240px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.soc-75-percent { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.soc-100-percent { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -288px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.soc-100-percent { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.consumption { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -336px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.consumption { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.charging { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -384px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.charging { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-sunny { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -96px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-sunny { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-cloudy { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -144px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-cloudy { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-cloudy-with-rain { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -192px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-cloudy-with-rain { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-partially-cloudy-with-rain { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -240px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-partially-cloudy-with-rain { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-partially-cloudy { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -288px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-partially-cloudy { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-thunderstorm { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -336px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-thunderstorm { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.clock { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -384px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.clock { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-thunderstorm-with-rain { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -96px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-thunderstorm-with-rain { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-clear-night { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -144px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-clear-night { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-partially-cloudy-night { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -192px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-partially-cloudy-night { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-snow { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -240px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-snow { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-snow-and-rain { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -288px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-snow-and-rain { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.weather-fog { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -336px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.weather-fog { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.light-bulb { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -384px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.light-bulb { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.mains-on { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -336px -264px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.mains-on { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.mains-off { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -384px -264px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.mains-off { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.device-solar-charger { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -96px -312px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.device-solar-charger { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.device-battery-monitor { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -144px -312px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.device-battery-monitor { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.device-gateway { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -192px -312px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.device-gateway { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.device-ve-bus { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -240px -312px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.device-ve-bus { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.device-pv-inverter { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -288px -312px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.device-pv-inverter { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.device-io-extender { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -336px -312px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.device-io-extender { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-site-icons.device-fluid-monitor { + display: inline-block; + width: 48px; + height: 48px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -384px -312px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-site-icons.device-fluid-monitor { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons { + /**************************************************************************************************************************************** + 'Deprecated triangles' (start) + + The triangles on lines 11, 12 and 13 should normally not be used. Instead use the triangles from lines 15, 16 and 17 and give the + background a color. That way we can use transitions for these triangles by changing the background color. For an example see the + dropdowns in the styleguide. + ****************************************************************************************************************************************/ + /**************************************************************************************************************************************** + 'Deprecated triangles' (end) + ****************************************************************************************************************************************/ +} +.sprite-icons.pie-chart-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px 0px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.pie-chart-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.pie-chart-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px 0px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.pie-chart-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.graph-bars-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -24px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.graph-bars-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.graph-bars-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -24px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.graph-bars-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.lightning-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -48px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.lightning-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.lightning-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -48px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.lightning-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.sun-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -72px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.sun-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.sun-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -72px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.sun-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.sun-orange { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -72px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.sun-orange { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.graph-line-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -96px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.graph-line-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.graph-line-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -96px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.graph-line-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.graph-line-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -96px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.graph-line-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.graph-line-orange { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -72px -96px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.graph-line-orange { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.wrench-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.wrench-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.wrench-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.wrench-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.cross-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -144px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.cross-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.cross-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -144px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.cross-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.clock-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.clock-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.clock-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.clock-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.clock-red { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.clock-red { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.clock-white { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -72px -168px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.clock-white { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.alert-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -192px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.alert-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.alert-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -192px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.alert-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.alert-red { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -192px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.alert-red { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.checkmark-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.checkmark-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.checkmark-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.checkmark-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-up-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -240px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-up-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-up-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -240px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-up-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-up-middle { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -240px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-up-middle { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-down-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -264px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-down-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-down-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -264px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-down-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-down-middle { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -264px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-down-middle { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-right-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -288px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-right-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-right-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -288px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-right-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-right-middle { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -288px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-right-middle { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-right-white { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -72px -288px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-right-white { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.vertical-lines-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -312px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.vertical-lines-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.vertical-lines-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -312px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.vertical-lines-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-up-transparent-white { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -336px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-up-transparent-white { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-down-transparent-white { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -336px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-down-transparent-white { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-right-transparent-white { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -336px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-right-transparent-white { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-up-transparent-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -360px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-up-transparent-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-down-transparent-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -360px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-down-transparent-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-right-transparent-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -360px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-right-transparent-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-up-transparent-red { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -384px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-up-transparent-red { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-down-transparent-red { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -384px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-down-transparent-red { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.triangle-right-transparent-red { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -384px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.triangle-right-transparent-red { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.magnifier-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -408px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.magnifier-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.magnifier-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -408px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.magnifier-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.cross-in-circle-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -432px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.cross-in-circle-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.cross-in-circle-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -432px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.cross-in-circle-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.cross-in-circle-white { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -432px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.cross-in-circle-white { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.download-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -456px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.download-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.download-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -456px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.download-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.download-middle { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -456px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.download-middle { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.download-white { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -72px -456px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.download-white { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.download-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -72px -480px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.download-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.generator-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -480px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.generator-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.grid-green { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -504px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.grid-green { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.grid-red { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -504px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.grid-red { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.vertical-lines-thick-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -528px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.vertical-lines-thick-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.vertical-lines-thick-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -528px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.vertical-lines-thick-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.horizontal-lines-thick-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -552px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.horizontal-lines-thick-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.horizontal-lines-thick-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -552px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.horizontal-lines-thick-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.horizontal-lines-thick-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -552px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.horizontal-lines-thick-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.clock-advanced-white { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -600px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.clock-advanced-white { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.clock-advanced-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -600px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.clock-advanced-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.circle-plus-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -624px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.circle-plus-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.circle-plus-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -624px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.circle-plus-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.circle-plus-middle { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -624px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.circle-plus-middle { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.circle-minus-light { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -648px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.circle-minus-light { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.circle-minus-dark { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -648px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.circle-minus-dark { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.circle-minus-middle { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -648px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.circle-minus-middle { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.map-marker-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -100px 0px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.map-marker-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.map-marker-red { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -250px 0px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.map-marker-red { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.dotted-arrow-left-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -696px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.dotted-arrow-left-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.dotted-arrow-right-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -720px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.dotted-arrow-right-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.arrow-up-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -744px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.arrow-up-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sprite-icons.arrow-down-blue { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -768px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .sprite-icons.arrow-down-blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +/**************************************************************************************************************************************** +Colors (start) +****************************************************************************************************************************************/ +/**************************************************************************************************************************************** +Colors (end) +****************************************************************************************************************************************/ +/**************************************************************************************************************************************** +Fonts and sizes (start) +****************************************************************************************************************************************/ +@font-face { + font-family: 'MuseoSans-300'; + font-style: normal; + font-weight: normal; + src: url('/styling/webfonts/MuseoSans-300.eot'); + src: url('/styling/webfonts/MuseoSans-300.eot?#iefix') format('embedded-opentype'), url('/styling/webfonts/MuseoSans-300.woff') format('woff'), local('MuseoSans-300'), url('/styling/webfonts/MuseoSans-300.otf') format('opentype'), url('/styling/webfonts/MuseoSans-300.ttf') format('truetype'), url('/styling/webfonts/MuseoSans-300.svg#MuseoSans-300') format('svg'); +} +@font-face { + font-family: 'MuseoSans-700'; + font-style: normal; + font-weight: normal; + src: url('/styling/webfonts/MuseoSans-700.eot'); + src: url('/styling/webfonts/MuseoSans-700.eot?#iefix') format('embedded-opentype'), url('/styling/webfonts/MuseoSans-700.woff') format('woff'), local('MuseoSans-700'), url('/styling/webfonts/MuseoSans-700.otf') format('opentype'), url('/styling/webfonts/MuseoSans-700.ttf') format('truetype'), url('/styling/webfonts/MuseoSans-700.svg#MuseoSans-700') format('svg'); +} +@font-face { + font-family: 'screensaver-icons'; + font-style: normal; + font-weight: normal; + src: url('/styling/webfonts/icons/VRM-screensaver-icons.eot'); + src: url('/styling/webfonts/icons/VRM-screensaver-icons.eot?#iefix') format('embedded-opentype'), url('/styling/webfonts/icons/VRM-screensaver-icons.woff') format('woff'), url('/styling/webfonts/icons/VRM-screensaver-icons.otf') format('opentype'), url('/styling/webfonts/icons/VRM-screensaver-icons.ttf') format('truetype'), url('/styling/webfonts/icons/VRM-screensaver-icons.svg#VRM-screensaver-icon') format('svg'); +} +/**************************************************************************************************************************************** +Fonts and sizes (end) +****************************************************************************************************************************************/ +/**************************************************************************************************************************************** +Other defaults (start) +****************************************************************************************************************************************/ +/**************************************************************************************************************************************** +Other defaults (end) +****************************************************************************************************************************************/ +/**************************************************************************************************************************************** +HTML elements (start) +****************************************************************************************************************************************/ +body { + background-color: #e6e5e1; + color: #272622; + font-family: 'MuseoSans-300', sans-serif; + font-size: 15px; + line-height: 21px; + margin: 0; +} +h1 { + font-size: 26px; + font-weight: normal; + line-height: 26px; + margin-bottom: 30px; + margin-top: 75px; +} +h1.large { + font-size: 40px; +} +h2 { + font-size: 21px; + font-weight: normal; + line-height: 21px; + margin-bottom: 20px; + margin-top: 45px; +} +h3 { + font-size: 18px; + font-weight: normal; + line-height: 21px; + margin: 0; +} +h4 { + font-size: 15px; + font-weight: normal; + line-height: 15px; + margin: 0; + color: #387dc5; +} +a { + color: #387dc5; + text-decoration: underline; +} +a:hover { + color: #387dc5; +} +a:focus { + outline-style: none; +} +.legend { + font-family: 'Arial'; + font-size: 11px; + line-height: 21px; +} +ul { + margin: 0; + padding: 0; + list-style-type: none; +} +select { + height: 50px; +} +fieldset { + margin: 0; + border: 0; + padding: 0; +} +/**************************************************************************************************************************************** +HTML elements (end) +****************************************************************************************************************************************/ +/**************************************************************************************************************************************** +Inputs and buttons (start) +****************************************************************************************************************************************/ +.btn, +input, +textarea { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: inline-block; + font-size: 18px; + line-height: 18px; + min-height: 40px; + padding: 10px 10px; + text-decoration: none; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +.btn:hover, +input:hover, +textarea:hover { + text-decoration: none; +} +.btn.blue, +input.blue, +textarea.blue { + background-color: #4790d0; + border: 1px solid #387dc5; + color: #ffffff; +} +.btn.blue:hover, +input.blue:hover, +textarea.blue:hover { + background-color: #387dc5; + border: 1px solid #387dc5; +} +.btn.orange, +input.orange, +textarea.orange { + background-color: #f7ab3e; + border: 1px solid #f0962e; + color: #ffffff; +} +.btn.orange:hover, +input.orange:hover, +textarea.orange:hover { + background-color: #f0962e; + border: 1px solid #f0962e; +} +.btn.green, +input.green, +textarea.green { + background-color: #8bc964; + border: 1px solid #72b84c; + color: #ffffff; +} +.btn.green:hover, +input.green:hover, +textarea.green:hover { + background-color: #72b84c; + border: 1px solid #72b84c; +} +.btn.red, +input.red, +textarea.red { + background-color: #fa716f; + border: 1px solid #f35c58; + color: #ffffff; +} +.btn.red:hover, +input.red:hover, +textarea.red:hover { + background-color: #f35c58; + border: 1px solid #f35c58; +} +.btn.gray, +input.gray, +textarea.gray { + background-color: #e6e5e1; + border: 1px solid #dcdbd7; + color: #63625e; +} +.btn.gray:hover, +input.gray:hover, +textarea.gray:hover { + background-color: #f0efeb; + border: 1px solid #dcdbd7; +} +.btn.light, +input.light, +textarea.light { + background-color: #faf9f5; + border: 1px solid #dcdbd7; + color: #63625e; +} +.btn.light:hover, +input.light:hover, +textarea.light:hover { + background-color: #ffffff; + border: 1px solid #dcdbd7; +} +.btn.disabled, +input.disabled, +textarea.disabled, +.btn:disabled, +input:disabled, +textarea:disabled { + background-color: #e6e5e1; + border: #dcdbd7 1px solid; + border-color: #dcdbd7; + color: #63625e; + cursor: default; +} +.btn.disabled:hover, +input.disabled:hover, +textarea.disabled:hover, +.btn:disabled:hover, +input:disabled:hover, +textarea:disabled:hover { + background-color: #e6e5e1; + border: #dcdbd7 1px solid; +} +input, +button, +textarea { + outline: none; + font-family: 'MuseoSans-300', sans-serif; + padding-left: 18px; +} +input[type="text"], +input[type="email"], +input[type="password"], +input[type="tel"], +input[type="url"], +textarea { + font-size: 15px; + background-color: #f0efeb; + border: 1px solid #dcdbd7; + color: #387dc5; + height: inherit; + line-height: inherit; + padding: 10px 13px 7px; +} +input[type="text"]:hover, +input[type="email"]:hover, +input[type="password"]:hover, +input[type="tel"]:hover, +input[type="url"]:hover, +textarea:hover { + background-color: #e6e5e1; + border: 1px solid #dcdbd7; +} +input[type="text"]:-moz-placeholder, +input[type="email"]:-moz-placeholder, +input[type="password"]:-moz-placeholder, +input[type="tel"]:-moz-placeholder, +input[type="url"]:-moz-placeholder, +textarea:-moz-placeholder { + color: #63625e; + opacity: 1; +} +input[type="text"]::-moz-placeholder, +input[type="email"]::-moz-placeholder, +input[type="password"]::-moz-placeholder, +input[type="tel"]::-moz-placeholder, +input[type="url"]::-moz-placeholder, +textarea::-moz-placeholder { + color: #63625e; + opacity: 1; +} +input[type="text"]:-webkit-input-placeholder, +input[type="email"]:-webkit-input-placeholder, +input[type="password"]:-webkit-input-placeholder, +input[type="tel"]:-webkit-input-placeholder, +input[type="url"]:-webkit-input-placeholder, +textarea:-webkit-input-placeholder { + color: #63625e; + opacity: 1; +} +input[type="text"]::-webkit-input-placeholder, +input[type="email"]::-webkit-input-placeholder, +input[type="password"]::-webkit-input-placeholder, +input[type="tel"]::-webkit-input-placeholder, +input[type="url"]::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #63625e; + opacity: 1; +} +input[type="text"]:-ms-input-placeholder, +input[type="email"]:-ms-input-placeholder, +input[type="password"]:-ms-input-placeholder, +input[type="tel"]:-ms-input-placeholder, +input[type="url"]:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #63625e; + opacity: 1; +} +input[type="text"]::-ms-input-placeholder, +input[type="email"]::-ms-input-placeholder, +input[type="password"]::-ms-input-placeholder, +input[type="tel"]::-ms-input-placeholder, +input[type="url"]::-ms-input-placeholder, +textarea::-ms-input-placeholder { + color: #63625e; + opacity: 1; +} +input[type="text"]:hover, +input[type="email"]:hover, +input[type="password"]:hover, +input[type="tel"]:hover, +input[type="url"]:hover, +textarea:hover { + background-color: #ffffff; +} +input[type="text"]:focus, +input[type="email"]:focus, +input[type="password"]:focus, +input[type="tel"]:focus, +input[type="url"]:focus, +textarea:focus { + background-color: #ffffff; + border-color: #4790d0; +} +input[type="text"].completed, +input[type="email"].completed, +input[type="password"].completed, +input[type="tel"].completed, +input[type="url"].completed, +textarea.completed { + background-color: #ffffff; +} +input[type="text"].completed:hover, +input[type="email"].completed:hover, +input[type="password"].completed:hover, +input[type="tel"].completed:hover, +input[type="url"].completed:hover, +textarea.completed:hover { + border-color: #4790d0; +} +input[type="text"]:invalid, +input[type="email"]:invalid, +input[type="password"]:invalid, +input[type="tel"]:invalid, +input[type="url"]:invalid, +textarea:invalid { + box-shadow: none; +} +input[type="text"].error, +input[type="email"].error, +input[type="password"].error, +input[type="tel"].error, +input[type="url"].error, +textarea.error, +input[type="text"]:not(.needstouch):invalid:not(:focus), +input[type="email"]:not(.needstouch):invalid:not(:focus), +input[type="password"]:not(.needstouch):invalid:not(:focus), +input[type="tel"]:not(.needstouch):invalid:not(:focus), +input[type="url"]:not(.needstouch):invalid:not(:focus), +textarea:not(.needstouch):invalid:not(:focus) { + border-color: #fa716f; + color: #f35c58; +} +input[type="text"].error:hover, +input[type="email"].error:hover, +input[type="password"].error:hover, +input[type="tel"].error:hover, +input[type="url"].error:hover, +textarea.error:hover, +input[type="text"]:not(.needstouch):invalid:not(:focus):hover, +input[type="email"]:not(.needstouch):invalid:not(:focus):hover, +input[type="password"]:not(.needstouch):invalid:not(:focus):hover, +input[type="tel"]:not(.needstouch):invalid:not(:focus):hover, +input[type="url"]:not(.needstouch):invalid:not(:focus):hover, +textarea:not(.needstouch):invalid:not(:focus):hover { + border-color: #fa716f; +} +input[type="text"].disabled, +input[type="email"].disabled, +input[type="password"].disabled, +input[type="tel"].disabled, +input[type="url"].disabled, +textarea.disabled { + background-color: #e6e5e1; + border-color: #dcdbd7; + color: #63625e; +} +input[type="text"].disabled:hover, +input[type="email"].disabled:hover, +input[type="password"].disabled:hover, +input[type="tel"].disabled:hover, +input[type="url"].disabled:hover, +textarea.disabled:hover { + background-color: #f0efeb; + border-color: #dcdbd7; +} +input[type="button"], +input[type="submit"] { + border: none; + /*padding: 0;*/ + vertical-align: baseline; +} +.btn { + text-align: center; +} +/**************************************************************************************************************************************** +Inputs and buttons (end) +****************************************************************************************************************************************/ +/**************************************************************************************************************************************** +Custom select (start) +****************************************************************************************************************************************/ +.chzn-select { + visibility: hidden; +} +.chzn-select.no-search + .chzn-container .chzn-drop .chzn-results { + max-height: 259px; +} +.chzn-select.no-search + .chzn-container .chzn-drop .chzn-results .active-result:first-child { + padding-top: 20px; +} +.chzn-container { + display: block; +} +.chzn-container .chzn-single { + background-color: #ffffff; + border: 1px solid #dcdbd7; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + color: #63625e; + height: 40px; + line-height: 40px; + padding: 0 70px 0 15px; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + z-index: 1011; +} +.chzn-container .chzn-single:hover { + border-color: #959490; + color: #272622; +} +.chzn-container .chzn-single:hover .handle { + border-left-color: #959490; +} +.chzn-container .chzn-single:hover .handle .sprite-icons { + background-color: #959490; +} +.chzn-container .chzn-single .handle { + border-left: 1px solid #dcdbd7; + height: 18px; + margin-top: 11px; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + width: 37px; +} +.chzn-container .chzn-single .handle .sprite-icons { + background-color: #dcdbd7; + -webkit-transition-property: background-position; + -webkit-transition-duration: 0s; + -moz-transition-property: background-position; + -moz-transition-duration: 0s; + -o-transition-property: background-position; + -o-transition-duration: 0s; + -ms-transition-property: background-position; + -ms-transition-duration: 0s; + transition-property: background-position; + transition-duration: 0s; + -webkit-transition-property: background-color; + -webkit-transition-duration: 0.2s; + -moz-transition-property: background-color; + -moz-transition-duration: 0.2s; + -o-transition-property: background-color; + -o-transition-duration: 0.2s; + -ms-transition-property: background-color; + -ms-transition-duration: 0.2s; + transition-property: background-color; + transition-duration: 0.2s; + right: 8px; + position: absolute; + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -336px; + top: -2px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .chzn-container .chzn-single .handle .sprite-icons { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.chzn-container .chzn-drop { + background: #ffffff; + border: 1px solid #dcdbd7; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + margin-top: 5px; + z-index: 1012; +} +.chzn-container .chzn-drop .chzn-search { + background-color: #959490; + position: relative; + -webkit-border-top-left-radius: 5px; + -moz-border-radius-topleft: 5px; + border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; + -moz-border-radius-topright: 5px; + border-top-right-radius: 5px; +} +.chzn-container .chzn-drop .chzn-search .sprite-icons { + left: 15px; + position: absolute; + top: 8px; +} +.chzn-container .chzn-drop .chzn-search input[type="text"] { + background-color: #959490; + border: none; + color: #ffffff; + padding-left: 55px; + width: 100% !important; +} +.chzn-container .chzn-drop .chzn-search input[type="text"]:-moz-placeholder { + color: #e6e5e1; + opacity: 1; +} +.chzn-container .chzn-drop .chzn-search input[type="text"]::-moz-placeholder { + color: #e6e5e1; + opacity: 1; +} +.chzn-container .chzn-drop .chzn-search input[type="text"]:-webkit-input-placeholder { + color: #e6e5e1; + opacity: 1; +} +.chzn-container .chzn-drop .chzn-search input[type="text"]::-webkit-input-placeholder { + color: #e6e5e1; + opacity: 1; +} +.chzn-container .chzn-drop .chzn-search input[type="text"]:-ms-input-placeholder { + color: #e6e5e1; + opacity: 1; +} +.chzn-container .chzn-drop .chzn-search input[type="text"]::-ms-input-placeholder { + color: #e6e5e1; + opacity: 1; +} +.chzn-container .chzn-drop .chzn-results { + margin: 0px; + max-height: 254px; + padding: 0px; +} +.chzn-container .chzn-drop .chzn-results .active-result { + border-top: 1px solid #dcdbd7; + color: #63625e; + min-height: 20px; + padding: 9px 15px; +} +.chzn-container .chzn-drop .chzn-results .active-result:first-child { + border-top: none; +} +.chzn-container .chzn-drop .chzn-results .active-result.highlighted { + background-color: #e6e5e1; + color: #272622; +} +.chzn-container .chzn-drop .chzn-results .active-result.result-selected { + color: #387dc5; +} +.chzn-container .chzn-drop .chzn-results .no-results { + color: #f35c58; + height: 40px; + line-height: 44px; + padding: 0 20px; +} +.chzn-container.chzn-container-active .chzn-single { + border-color: #959490; + color: #272622; +} +.chzn-container.chzn-container-active .chzn-single .handle { + border-left-color: #959490; +} +.chzn-container.chzn-container-active .chzn-single .handle .sprite-icons { + background-color: #959490; +} +.chzn-container.chzn-container-active .chzn-single.chzn-single-with-drop .handle .sprite-icons { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -336px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .chzn-container.chzn-container-active .chzn-single.chzn-single-with-drop .handle .sprite-icons { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +/**************************************************************************************************************************************** +Custom select (end) +****************************************************************************************************************************************/ +/* The functionality */ +.custom-check-and-radio:not(#OLD-IE), +.custom-toggle:not(#OLD-IE) { + position: relative; +} +.custom-check-and-radio:not(#OLD-IE) input, +.custom-toggle:not(#OLD-IE) input { + cursor: pointer; + float: left; + height: 0px; + min-height: 0px; + opacity: 0; + filter: alpha(opacity=0); + width: 0px; + padding: 0; + position: absolute; + margin: 0; +} +.custom-check-and-radio:not(#OLD-IE) .alternative-display, +.custom-toggle:not(#OLD-IE) .alternative-display { + display: block; + cursor: pointer; + left: 0px; + position: absolute; + top: 0px; +} +.custom-check-and-radio:not(#OLD-IE) input + label, +.custom-toggle:not(#OLD-IE) input + label { + cursor: pointer; + display: block; +} +/* The common styling for checkboxes and radio buttons */ +.custom-check-and-radio:not(#OLD-IE) .alternative-display { + display: block; + background-color: #f0efeb; + border: 1px solid #dcdbd7; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 24px; + min-height: 0; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + width: 24px; +} +.custom-check-and-radio:not(#OLD-IE) input + label { + /* line-height: 28px;*/ + padding: 4px 0 0 40px; +} +.custom-check-and-radio:not(#OLD-IE) input:checked + label .alternative-display { + background-color: #4790d0; +} +.custom-check-and-radio:not(#OLD-IE) input:disabled + label .alternative-display { + background-color: #959490; +} +.custom-check-and-radio:not(#OLD-IE):hover .alternative-display { + background-color: #e6e5e1; +} +.custom-check-and-radio:not(#OLD-IE):hover input:checked + label .alternative-display { + background-color: #387dc5; +} +/* The specific styling of the checkbox */ +.custom-check:not(#OLD-IE) .alternative-display { + display: block; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.custom-check:not(#OLD-IE) .alternative-display .sprite-icons { + margin-left: -1px; + margin-top: -1px; + opacity: 0; + filter: alpha(opacity=0); + display: inline-block; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -216px; + width: 24px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .custom-check:not(#OLD-IE) .alternative-display .sprite-icons { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.custom-check:not(#OLD-IE) input:checked + label .alternative-display .sprite-icons { + opacity: 1; + filter: alpha(opacity=100); +} +.custom-check:not(#OLD-IE):hover .alternative-display .sprite-icons { + opacity: 1; + filter: alpha(opacity=100); +} +/* The specific styling of the radio button */ +.custom-radio:not(#OLD-IE) .alternative-display { + display: block; + -webkit-border-radius: 12px; + -moz-border-radius: 12px; + border-radius: 12px; +} +.custom-radio:not(#OLD-IE) .alternative-display .dot { + background-color: #f0efeb; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + height: 8px; + left: 7px; + position: absolute; + top: 7px; + width: 8px; +} +.custom-radio:not(#OLD-IE) input:checked + label .alternative-display .dot { + background-color: #ffffff; +} +.custom-radio:not(#OLD-IE):hover input:checked + label .alternative-display .dot { + background-color: #ffffff; +} +/* The specific styling of the toggle */ +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display { + border: 1px solid #dcdbd7; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + height: 40px; + width: 120px; + clear: both; +} +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display .on, +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display.toggle-blue .on { + background-color: #4790d0; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; + -webkit-box-shadow: 0px 2px 0px #387dc5 inset; + -moz-box-shadow: 0px 2px 0px #387dc5 inset; + box-shadow: 0px 2px 0px #387dc5 inset; +} +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display.toggle-green .on { + background-color: #8bc964; + -webkit-box-shadow: 0px 2px 0px #72b84c inset; + -moz-box-shadow: 0px 2px 0px #72b84c inset; + box-shadow: 0px 2px 0px #72b84c inset; +} +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display.toggle-red .on { + background-color: #fa716f; + -webkit-box-shadow: 0px 2px 0px #f35c58 inset; + -moz-box-shadow: 0px 2px 0px #f35c58 inset; + box-shadow: 0px 2px 0px #f35c58 inset; +} +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display .off { + background-color: #959490; + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; + -webkit-box-shadow: 0px 2px 0px #8e8d89 inset; + -moz-box-shadow: 0px 2px 0px #8e8d89 inset; + box-shadow: 0px 2px 0px #8e8d89 inset; +} +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display .on, +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display .off { + display: block; + color: #ffffff; + float: left; + height: 100%; + line-height: 41px; + text-align: center; + position: relative; + width: 50%; +} +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display .knob { + display: block; + background-color: #e6e5e1; + border: 1px solid #dcdbd7; + border-bottom: 0px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + border-top: none; + -webkit-box-shadow: 5px 0px 0px #8e8d89; + -moz-box-shadow: 5px 0px 0px #8e8d89; + box-shadow: 5px 0px 0px #8e8d89; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + height: 38px; + left: -1px; + position: absolute; + top: 0px; + width: 62px; +} +.custom-toggle:not(#OLD-IE).slide-over-text .alternative-display .knob .sprite-icons { + left: 17px; + position: absolute; + top: 8px; +} +.custom-toggle:not(#OLD-IE).slide-over-text input + label { + line-height: 44px; + padding: 0 0 0 140px; +} +.custom-toggle:not(#OLD-IE).slide-over-text.under-label label { + padding: 0px; +} +.custom-toggle:not(#OLD-IE).slide-over-text.under-label label .alternative-display { + position: relative; +} +.custom-toggle:not(#OLD-IE).slide-over-text.right-aligned input + label { + padding: 0; +} +.custom-toggle:not(#OLD-IE).slide-over-text.right-aligned .alternative-display { + left: auto; + right: 0px; +} +.custom-toggle:not(#OLD-IE).slide-over-text input:checked + label .alternative-display .knob, +.custom-toggle:not(#OLD-IE).slide-over-text input:checked + label .alternative-display.toggle-blue .knob { + -webkit-box-shadow: -5px 0px 0px #5b9bcd; + -moz-box-shadow: -5px 0px 0px #5b9bcd; + box-shadow: -5px 0px 0px #5b9bcd; + left: 57px; +} +.custom-toggle:not(#OLD-IE).slide-over-text input:checked + label .alternative-display.toggle-green .knob { + -webkit-box-shadow: -5px 0px 0px #98c478; + -moz-box-shadow: -5px 0px 0px #98c478; + box-shadow: -5px 0px 0px #98c478; +} +.custom-toggle:not(#OLD-IE).slide-over-text input:checked + label .alternative-display.toggle-red .knob { + -webkit-box-shadow: -5px 0px 0px #e66e6e; + -moz-box-shadow: -5px 0px 0px #e66e6e; + box-shadow: -5px 0px 0px #e66e6e; +} +.custom-toggle:not(#OLD-IE).slide-over-text:hover .alternative-display .knob { + background-color: #ffffff; +} +.custom-toggle:not(#OLD-IE).slide-over-text.button-variant .alternative-display { + display: block; + width: 140px; +} +.custom-toggle:not(#OLD-IE).slide-over-text.button-variant .toggle-caption { + display: block; + font-size: 15px; + margin-top: 11px; + text-align: center; +} +.custom-toggle:not(#OLD-IE).slide-over-text.button-variant .caption-on { + color: #8bc964; + display: none; +} +.custom-toggle:not(#OLD-IE).slide-over-text.button-variant .caption-off { + color: #959490; +} +.custom-toggle:not(#OLD-IE).slide-over-text.button-variant input:checked + label .alternative-display { + border-color: #8bc964; +} +.custom-toggle:not(#OLD-IE).slide-over-text.button-variant input:checked + label .caption-on { + display: block; +} +.custom-toggle:not(#OLD-IE).slide-over-text.button-variant input:checked + label .caption-off { + display: none; +} +.custom-toggle:not(#OLD-IE).slide-colors .alternative-display { + display: block; + background-color: #e6e5e1; + border: 1px solid #dcdbd7; + display: inline-block; + /*font-size: @sgFontSizeText * 10px;*/ + height: 30px; + position: relative; + width: 80px; + -webkit-border-radius: 100px; + -moz-border-radius: 100px; + border-radius: 100px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +.custom-toggle:not(#OLD-IE).slide-colors .alternative-display .on { + background-color: #8bc964; + left: 10px; + width: 0; +} +.custom-toggle:not(#OLD-IE).slide-colors .alternative-display .off { + background-color: #fa716f; + right: 10px; + width: 58px; +} +.custom-toggle:not(#OLD-IE).slide-colors .alternative-display .on, +.custom-toggle:not(#OLD-IE).slide-colors .alternative-display .off { + display: block; + height: 4px; + position: absolute; + top: 12px; + -webkit-border-radius: 100px; + -moz-border-radius: 100px; + border-radius: 100px; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +.custom-toggle:not(#OLD-IE).slide-colors .alternative-display .knob { + display: block; + background-color: #ffffff; + height: 24px; + left: 2px; + position: absolute; + top: 2px; + width: 24px; + -webkit-border-radius: 100px; + -moz-border-radius: 100px; + border-radius: 100px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-box-shadow: 0 2px 6px rgba(150, 149, 145, 0.5); + -moz-box-shadow: 0 2px 6px rgba(150, 149, 145, 0.5); + box-shadow: 0 2px 6px rgba(150, 149, 145, 0.5); + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +.custom-toggle:not(#OLD-IE).slide-colors .alternative-display .knob .dot { + background-color: #fa716f; + height: 8px; + left: 8px; + position: absolute; + top: 8px; + width: 8px; + -webkit-border-radius: 100px; + -moz-border-radius: 100px; + border-radius: 100px; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +.custom-toggle:not(#OLD-IE).slide-colors .caption-container { + display: inline-block; + vertical-align: top; +} +.custom-toggle:not(#OLD-IE).slide-colors .caption { + color: #fa716f; + line-height: 30px; + padding-left: 17px; + text-transform: uppercase; +} +.custom-toggle:not(#OLD-IE).slide-colors .caption:after { + content: "Off"; +} +.custom-toggle:not(#OLD-IE).slide-colors input + label { + line-height: 34px; +} +.custom-toggle:not(#OLD-IE).slide-colors input:checked + label .alternative-display .on { + width: 58px; +} +.custom-toggle:not(#OLD-IE).slide-colors input:checked + label .alternative-display .off { + width: 0; +} +.custom-toggle:not(#OLD-IE).slide-colors input:checked + label .alternative-display .knob { + left: 52px; +} +.custom-toggle:not(#OLD-IE).slide-colors input:checked + label .alternative-display .knob .dot { + background-color: #8bc964; +} +.custom-toggle:not(#OLD-IE).slide-colors input:checked + label .caption { + color: #8bc964; +} +.custom-toggle:not(#OLD-IE).slide-colors input:checked + label .caption:after { + content: "On"; +} +.custom-toggle:not(#OLD-IE).slide-colors:hover .alternative-display .knob { + background-color: #ffffff; +} +/**************************************************************************************************************************************** +Tabs (start) +****************************************************************************************************************************************/ +#vrm-tabs { + height: 65px; + margin: 0px; + padding: 0px; +} +#vrm-tabs li { + background-color: #63625e; + border-bottom: 4px solid #595854; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + float: left; + height: 60px; + list-style-position: inside; + list-style-type: none; + margin-top: 5px; + width: 100px; +} +#vrm-tabs li a { + display: inline-block; + float: left; + height: 100%; + position: relative; + text-decoration: none; + width: 99px; +} +#vrm-tabs li a .sprite-icons { + left: 38px; + position: absolute; + top: 12px; +} +#vrm-tabs li a .sprite-icons.default { + z-index: 1; +} +#vrm-tabs li a .text { + color: #e6e5e1; + font-size: 11px; + margin-top: 36px; + text-align: center; +} +#vrm-tabs li.darker { + background-color: #4f4e4a; +} +#vrm-tabs li.active { + background-color: #faf9f5; + border: none; + border-color: #ffffff; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 65px; + margin-top: 0px; +} +#vrm-tabs li.active#tab-live-feed, +#vrm-tabs li.active#tab-settings { + background-color: #f0efeb; +} +#vrm-tabs li.active a .sprite-icons.default { + display: none; +} +#vrm-tabs li.active a .text { + color: #63625e; +} +#vrm-tabs li.active .divider .border { + -webkit-transition: 0s; + -moz-transition: 0s; + -o-transition: 0s; + transition: 0s; + background-color: transparent; +} +#vrm-tabs li.active + li .divider .border { + background-color: transparent; +} +#vrm-tabs li:hover { + border-color: #959490; +} +#vrm-tabs li:hover:not(.active) { + background-color: #959490; +} +#vrm-tabs li:hover:not(.active) .divider .border { + background-color: #959490; +} +#vrm-tabs li:hover.active { + border-color: #ffffff; +} +#vrm-tabs li:hover + li .divider .border { + background-color: transparent; +} +#vrm-tabs li .divider { + display: inline-block; + float: left; + width: 0.5px; +} +#vrm-tabs li .divider .border { + background-color: #4f4e4a; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + height: 40px; + margin-top: 10px; +} +#vrm-tabs-content { + background-color: #f0efeb; +} +#vrm-tabs-content .tab-pane { + display: none; +} +#vrm-tabs-content .tab-pane .content { + padding: 10px 20px; +} +#vrm-tabs-content .active { + display: block; +} +/**************************************************************************************************************************************** +Tabs (end) +****************************************************************************************************************************************/ +/**************************************************************************************************************************************** +Form Tabs (start) +****************************************************************************************************************************************/ +.form-tabs { + list-style: none; + margin: 0; + padding: 0; +} +.form-tabs li { + border-left: 1px solid #dcdbd7; + border-bottom: 1px solid #dcdbd7; + border-right: 1px solid #dcdbd7; + background-color: #e6e5e1; +} +.form-tabs li:first-child { + border-top: 1px solid #dcdbd7; +} +.form-tabs li a { + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + display: block; + height: 50px; + line-height: 50px; + color: #63625e; + text-decoration: none; + text-align: right; + padding-right: 25px; + position: relative; + cursor: pointer; +} +.form-tabs li a.active, +.form-tabs li a:hover { + background: white; + color: #387dc5; +} +.form-tabs li a .required { + color: #4790d0; + position: absolute; + right: 20px; +} +/**************************************************************************************************************************************** +Form Tabs (end) +****************************************************************************************************************************************/ +/**************************************************************************************************************************************** +12-column grid (start) +****************************************************************************************************************************************/ +/* This mixin sets the width of an element based on the number of columns. */ +/* This mixin sets the width of a grid item based on the number of columns. */ +.container .container-inner { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + *zoom: 1; + margin: 0 auto; + width: 960px; +} +.container .container-inner:before, +.container .container-inner:after { + display: table; + content: ""; + line-height: 0; +} +.container .container-inner:after { + clear: both; +} +.container .container-inner .grid-item { + float: left; + /* Classes for setting the width of a grid item based on the number of columns it is wide. */ +} +.container .container-inner .grid-item.one-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 60px; +} +.container .container-inner .grid-item.two-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 140px; +} +.container .container-inner .grid-item.three-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 220px; +} +.container .container-inner .grid-item.four-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 300px; +} +.container .container-inner .grid-item.five-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 380px; +} +.container .container-inner .grid-item.six-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 460px; +} +.container .container-inner .grid-item.seven-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 540px; +} +.container .container-inner .grid-item.eight-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 620px; +} +.container .container-inner .grid-item.nine-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 700px; +} +.container .container-inner .grid-item.ten-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 780px; +} +.container .container-inner .grid-item.eleven-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 860px; +} +.container .container-inner .grid-item.twelve-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 940px; +} +.container .container-inner .grid-item.offset-one { + margin-left: 90px; +} +.container .container-inner .grid-item.offset-two { + margin-left: 170px; +} +.container .container-inner .grid-item.offset-three { + margin-left: 250px; +} +.container .container-inner .grid-item.offset-four { + margin-left: 330px; +} +.container .container-inner .grid-item.offset-five { + margin-left: 410px; +} +.container .container-inner .grid-item.offset-six { + margin-left: 490px; +} +.offset-gutter { + margin-left: 20px; +} +/* Classes for setting the width of an element based on the number of columns it is wide. */ +.two-columns-width { + width: 140px; +} +.two-columns-width.force-width { + width: 140px !important; +} +.three-columns-width { + width: 220px; +} +.three-columns-width.force-width { + width: 220px !important; +} +.four-columns-width { + width: 300px; +} +.four-columns-width.force-width { + width: 300px !important; +} +/**************************************************************************************************************************************** +12-column grid (end) +****************************************************************************************************************************************/ +/* -----------[Global styling]--------------*/ +.no-display { + display: none; +} +/* -----------[Homepage]--------------*/ +.vrm.index.index .container-inner .main-image-container { + background: url(/img/homepage/main-image.png) no-repeat transparent center; + height: 539px; + left: 0px; + position: absolute; + width: 100%; + min-width: 960px; + z-index: 1; +} +.vrm.index.index .container-inner .main-image-container.christmas { + background-color: #272622; + background-image: url(/img/homepage/main-image-christmas.jpg); + height: 528px; +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-container { + position: relative; +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-container { + position: relative; +} +.vrm.index.index .container-inner .main-image-laptop-slideshow { + height: 303px; + overflow: hidden; + position: absolute; + right: 0; + top: 154px; + width: 443px; + z-index: 1; + -webkit-transform: matrix3d(0.75766177, -0.11351643, 0, -0.00032209, -0.19498093, 0.94274818, 0, -0.00009209, 0, 0, 1, 0, 27, 40, 0, 1); + -moz-transform: matrix3d(0.75766177, -0.11351643, 0, -0.00032209, -0.19498093, 0.94274818, 0, -0.00009209, 0, 0, 1, 0, 27, 40, 0, 1); + -ms-transform: matrix3d(0.75766177, -0.11351643, 0, -0.00032209, -0.19498093, 0.94274818, 0, -0.00009209, 0, 0, 1, 0, 27, 40, 0, 1); + -o-transform: matrix3d(0.75766177, -0.11351643, 0, -0.00032209, -0.19498093, 0.94274818, 0, -0.00009209, 0, 0, 1, 0, 27, 40, 0, 1); + transform: matrix3d(0.75766177, -0.11351643, 0, -0.00032209, -0.19498093, 0.94274818, 0, -0.00009209, 0, 0, 1, 0, 27, 40, 0, 1); + outline: 1px solid transparent; + -webkit-transform-origin: 0px 0px 0px; + transform-origin: 0px 0px 0px; +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-slide-list { + height: 100%; + list-style-type: none; + margin: 0; + padding: 0; + width: 100%; +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-slide { + background-color: transparent; + background-size: cover; + height: 100%; + overflow: hidden; + pointer-events: none; + position: absolute; + width: 100%; + z-index: 1; +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-slide.slide-1 { + background-image: url('/img/homepage/slideshow/slide-1.jpg'); +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-slide.slide-2 { + background-image: url('/img/homepage/slideshow/slide-2.jpg'); +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-slide.slide-3 { + background-image: url('/img/homepage/slideshow/slide-3.jpg'); +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-slide.current { + pointer-events: auto; + z-index: 100; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-slide.in--next { + z-index: 50; + -webkit-animation: inNext 0.5s forwards ease-in-out; + animation: inNext 0.5s forwards ease-in-out; +} +.vrm.index.index .container-inner .main-image-laptop-slideshow-slide.out--next { + -webkit-animation: outNext 0.5s forwards ease-in-out; + animation: outNext 0.5s forwards ease-in-out; +} +@-webkit-keyframes inNext { + 0% { + -webkit-transform: translate3d(30%, 0, 0); + transform: translate3d(30%, 0, 0); + } + 100% { + -webkit-transform: none; + transform: none; + } +} +@keyframes inNext { + 0% { + -webkit-transform: translate3d(30%, 0, 0); + transform: translate3d(30%, 0, 0); + } + 100% { + -webkit-transform: none; + transform: none; + } +} +@-webkit-keyframes outNext { + 100% { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} +@keyframes outNext { + 100% { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} +.vrm.index.index .container-inner .main-image-overlay { + color: #f0efeb; + height: 494px; + padding-left: 7px; + padding-top: 45px; + position: relative; + min-width: 960px; + z-index: 2; +} +.vrm.index.index .container-inner .main-image-overlay .title { + font-size: 40px; + line-height: 40px; + width: 550px; +} +.vrm.index.index .container-inner .main-image-overlay .subtitle { + padding-top: 21px; + width: 325px; +} +.vrm.index.index .container-inner .main-image-overlay .sign-up { + background-color: rgba(0, 0, 0, 0.2); + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; + margin-top: 45px; + padding: 5px; + text-transform: uppercase; + width: 220px; +} +.vrm.index.index .container-inner .main-image-overlay.christmas .title, +.vrm.index.index .container-inner .main-image-overlay.christmas .subtitle { + visibility: hidden; +} +.vrm.index.index .container-inner .main-image-overlay.christmas .sign-up { + margin-top: 18px; +} +.vrm.index.index .container-inner .middle-section-container { + background-color: #ffffff; + border-bottom: 1px solid #dcdbd7; + left: 0px; + height: 759px; + margin-top: -11px; + padding-top: 13px; + position: absolute; + width: 100%; + min-width: 960px; +} +.vrm.index.index .container-inner .middle-section-container .middle-section-inner { + margin: 0 auto; + width: 960px; +} +.vrm.index.index .container-inner .middle-section-container .middle-section-inner .story-container { + margin-top: 17px; +} +.vrm.index.index .container-inner .middle-section-container .middle-section-inner .video-container { + margin-top: 42px; +} +.vrm.index.index .container-inner .middle-section-container .middle-section-inner .video-player { + width: 640px; + margin: 0 auto; +} +.vrm.index.index .container-inner .middle-section-container .middle-section-inner .main-image { + margin-top: 75px; + text-align: center; +} +.vrm.index.index .container-inner .middle-bottom-section-container { + background-color: #faf9f5; + border-bottom: 1px solid #dcdbd7; + left: 0px; + top: 1393px; + margin-top: -11px; + padding-top: 50px; + position: absolute; + width: 100%; + min-width: 960px; +} +.vrm.index.index .container-inner .middle-bottom-section-container .middle-section-inner { + margin: 0 auto; + width: 960px; +} +.vrm.index.index .container-inner .middle-bottom-section-container .middle-section-inner .main-image img { + float: right; + margin-right: -55px; +} +.vrm.index.index .container-inner .middle-bottom-section-container .middle-section-inner .app-icon { + padding-top: 108px; +} +.vrm.index.index .container-inner .middle-bottom-section-container .middle-section-inner .app-icon img { + float: right; +} +.vrm.index.index .container-inner .middle-bottom-section-container .middle-section-inner .text { + padding-top: 49px; +} +.vrm.index.index .container-inner .middle-bottom-section-container .middle-section-inner .text .btn { + margin-top: 35px; + padding: 8px 10px; +} +.vrm.index.index .container-inner .middle-bottom-section-container .middle-section-inner .text .btn.google-play { + margin-left: 15px; +} +.vrm.index.index .container-inner .middle-bottom-section-container .middle-section-inner .text .btn.google-play img { + padding-top: 4px; +} +.vrm.index.index .container-inner .bottom-section-container { + margin-top: 1228px; +} +.vrm.index.index .container-inner .bottom-section-container .bottom-section-inner .text h1 { + margin-top: 61px; +} +.vrm.index.index .container-inner .bottom-section-container .bottom-section-inner .text h3 { + color: #4790d0; + margin-top: 20px; +} +.vrm.index.index .container-inner .bottom-section-container .bottom-section-inner .text .btn { + margin-top: 55px; + padding: 16px 10px; +} +.vrm.index.index .container-inner .bottom-section-container .bottom-section-inner .main-image { + padding-top: 43px; + text-align: center; +} +.vrm.index.index .container-inner .bottom-section-container .bottom-section-inner .subscribe-to-newsletter { + background-color: #4790d0; + border: #dcdbd7 1px solid; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + color: #f0efeb; + font-size: 26px; + max-height: 80px; + margin-top: 50px; + padding: 16px 19px 14px 30px; + position: relative; +} +.vrm.index.index .container-inner .bottom-section-container .bottom-section-inner .subscribe-to-newsletter .caption { + display: inline-block; + margin-top: 16px; +} +.vrm.index.index .container-inner .bottom-section-container .bottom-section-inner .subscribe-to-newsletter input[type="text"], +.vrm.index.index .container-inner .bottom-section-container .bottom-section-inner .subscribe-to-newsletter input[type="email"] { + border: #8cc3f0 1px solid; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 50px; + padding-right: 62px; + width: 440px; +} +.vrm.index.index .container-inner .bottom-section-container .bottom-section-inner .subscribe-to-newsletter input[type="submit"] { + /* no retina needed, homepage not visible on mobile */ + background-image: url("/img/VRM-sprite.png"); + background-position: -64px -281px; + height: 40px; + min-height: 40px; + position: absolute; + right: 24px; + top: 21px; + width: 40px; +} +#loginForm { + display: none; +} +.msie9 .main-image-laptop-slideshow-container { + display: none !important; +} +/* -----------[ Rejected browser ]--------------*/ +.browserReject .browsers { + margin-top: 15px; +} +.browserReject .browsers a { + display: inline-block; + vertical-align: top; + width: 100px; + overflow: hidden; + margin: 0 30px; + padding-top: 110px; + /* no retina needed, homepage not visible on mobile */ + background-image: url('/img/browserSprite100.png'); + background-repeat: no-repeat; + border: none; + text-decoration: none; + cursor: pointer; + color: black; +} +.browserReject .browsers a.ie { + background-position: 0px 0px; +} +.browserReject .browsers a.firefox { + background-position: -100px 0px; +} +.browserReject .browsers a.chrome { + background-position: -200px 0px; +} +.browserReject .browsers a.opera { + background-position: -300px 0px; +} +.browserReject .browsers a.safari { + background-position: -400px 0px; +} +/* -----------[Messages, could go to styleguide]--------------*/ +.global-message, +.flash-message, +.form-message { + min-height: 40px; + color: #ffffff; +} +.global-message.error, +.flash-message.error, +.form-message.error { + background-color: #fa716f; + color: #ffffff; +} +.global-message.error ul li, +.flash-message.error ul li, +.form-message.error ul li { + padding-left: 45px; +} +.global-message.error ul li .sprite-icons, +.flash-message.error ul li .sprite-icons, +.form-message.error ul li .sprite-icons { + display: inline-block; + margin-right: 20px; +} +.global-message.success, +.flash-message.success, +.form-message.success { + background-color: #8bc964; +} +.global-message.notice, +.flash-message.notice, +.form-message.notice { + background-color: #4790d0; +} +.global-message.client-side, +.flash-message.client-side, +.form-message.client-side { + display: none; +} +.global-message ul, +.flash-message ul, +.form-message ul { + padding: 15px 0; + margin: 0; + list-style-type: none; +} +.global-message ul li, +.flash-message ul li, +.form-message ul li { + position: relative; +} +.global-message ul li .sprite-icons, +.flash-message ul li .sprite-icons, +.form-message ul li .sprite-icons { + display: none; + left: 0px; + position: absolute; + top: -3px; + top: calc(50% - 12px); +} +.global-message ul li a, +.flash-message ul li a, +.form-message ul li a { + color: #ffffff; +} +.global-message .message-text, +.flash-message .message-text, +.form-message .message-text { + display: inline-block; + padding: 15px 0; +} +.global-message .message-text a, +.flash-message .message-text a, +.form-message .message-text a { + color: #ffffff; +} +.global-message .container-inner, +.flash-message .container-inner, +.form-message .container-inner { + padding-bottom: 0; +} +.flash-message ul li { + margin-top: 10px; +} +.flash-message ul li:first-child { + margin-top: 0px; +} +/* -----------[Form related styling, could go to styleguide]--------------*/ +.form-container h3 { + padding: 18px 18px 0 18px; +} +.form-container h4 { + padding: 6px 18px 6px 18px; +} +.form-container select { + width: 260px; +} +form fieldset { + border: 1px solid #dcdbd7; + background-color: #ffffff; + padding: 19px; + min-width: inherit; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +form input[type="text"], +form input[type="email"], +form input[type="password"], +form input[type="tel"], +form input[type="url"], +form input[type="submit"], +form select { + width: 100%; +} +#sitesettings > fieldset { + width: 300px; +} +#sitesettings > fieldset#fieldset-tags { + width: 100%; +} +#fieldset-summarywidget { + width: 300px; + border: 0; + background-color: transparent; + padding: 0; +} +#fieldset-summarywidget.desktop { + width: 100%; +} +#fieldset-summarywidget.desktop .sortable-summary-widgets { + width: 300px; +} +#fieldset-summarywidget.desktop .sortable-summary-widgets .placeholder { + background-color: #dcdbd7; +} +#fieldset-summarywidget.desktop .sortable-summary-widgets .site-info { + cursor: move; +} +#fieldset-summarywidget.desktop .sortable-summary-widgets .site-info label { + cursor: move; +} +#fieldset-summarywidget.desktop .summary-widget-list-disabled-container { + float: right; + position: relative; +} +#fieldset-summarywidget.desktop .summary-widget-list-disabled .placeholder { + background-color: #f0efeb; + height: 92px; + margin-bottom: 20px; +} +#fieldset-summarywidget.desktop .summary-widget-list-disabled .site-info .custom-data-toggle { + background-color: #f0efeb; +} +#fieldset-summarywidget.desktop .summary-widget-list-disabled .site-info .custom-data-toggle label { + padding: 23px 10px 24px; +} +#fieldset-summarywidget.desktop .summary-widget-list-disabled .form-element { + margin-bottom: 10px; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled-container { + float: left; + position: relative; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled-container .horizontal-line { + background-color: #dcdbd7; + height: 1px; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled-container.full .placeholder-list-item { + display: none !important; +} +#fieldset-summarywidget.desktop .summary-widget-list-header .sub-title { + color: #4790d0; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled { + -webkit-box-shadow: 0 0 10px #dcdbd7; + -moz-box-shadow: 0 0 10px #dcdbd7; + box-shadow: 0 0 10px #dcdbd7; + /* This dummy is to be able to put styling on only the list items that are actually selected items, so without the header */ +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled .invisible-dummy { + display: none; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled .form-element { + margin: 0; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled .custom-data-toggle { + border: none; + padding: 0; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled .custom-data-toggle label { + padding: 0; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled .placeholder { + background: url('/img/drag-drop-placeholder-pattern.png') repeat; + background-color: #f0efeb !important; + height: 99px; + position: relative; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled .placeholder:before { + background-color: #f0efeb; + content: ' '; + left: 50%; + margin-left: -12px; + margin-top: -12px; + position: absolute; + top: 50%; + -webkit-border-radius: 100px; + -moz-border-radius: 100px; + border-radius: 100px; + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -672px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #fieldset-summarywidget.desktop .summary-widget-list-enabled .placeholder:before { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled .placeholder-list-item { + background: url('/img/drag-drop-placeholder-pattern.png') repeat; + background-color: #f0efeb !important; + height: 99px; + position: relative; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled .placeholder-list-item:before { + background-color: #f0efeb; + content: ' '; + left: 50%; + margin-left: -12px; + margin-top: -12px; + position: absolute; + top: 50%; + -webkit-border-radius: 100px; + -moz-border-radius: 100px; + border-radius: 100px; + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -672px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #fieldset-summarywidget.desktop .summary-widget-list-enabled .placeholder-list-item:before { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled.no-placeholder .placeholder { + display: none; +} +#fieldset-summarywidget.desktop .summary-widget-list-enabled-placeholder .invisible-dummy { + display: none; +} +.sortable-widget-list-enabled-caption { + color: #4790d0; + margin-top: 15px; + padding-right: 30px; + position: relative; + text-align: right; +} +.sortable-widget-list-enabled-caption .sprite-icons { + bottom: -1px; + right: 0; + position: absolute; +} +.sortable-widget-list-disabled-caption { + color: #4790d0; + margin-bottom: 12px; + margin-top: 46px; + padding-left: 33px; + position: relative; +} +.sortable-widget-list-disabled-caption .sprite-icons { + bottom: -1px; + left: 0; + position: absolute; +} +.ui-sortable-helper { + background-color: #ffffff !important; + border: 1px solid #dcdbd7; + -webkit-box-shadow: 0 0 10px #dcdbd7; + -moz-box-shadow: 0 0 10px #dcdbd7; + box-shadow: 0 0 10px #dcdbd7; +} +.ui-sortable-helper label { + color: #4790d0 !important; +} +.ui-sortable-helper .custom-data-toggle { + background-color: #ffffff !important; +} +.form-box input[type=file] { + font-size: 100%; +} +.form-element, +.below-fieldset-element { + margin-top: 15px; +} +.form-element:first-child, +.below-fieldset-element:first-child { + margin-top: 0px; +} +.form-element:last-child, +.below-fieldset-element:last-child { + margin-bottom: 20px; +} +.form-element ul, +.below-fieldset-element ul { + padding: 5px 0; + margin: 0; + list-style-type: none; +} +.form-element ul li, +.below-fieldset-element ul li { + color: #fa716f; +} +.form-element > label, +.below-fieldset-element > label { + display: inline-block; + margin-bottom: 5px; +} +.below-fieldset-element { + padding: 20px; + width: 260px; +} +.below-fieldset-element #submit { + width: 100%; +} +.forgot-password-link { + padding: 14px 0; + display: block; + text-align: center; +} +/* -----------[Specific form stlying for a particular parent class]--------------*/ +.button-list { + margin-top: 20px; +} +.button-list li { + padding: 0 20px; + min-height: 50px; + vertical-align: middle; +} +.button-list li .btn { + width: 100%; +} +.add-site-description, +.add-alarm-description { + color: #4790d0; + margin: 80px 0 0 0; +} +.error { + color: #fa716f; +} +.form-tabs { + margin-top: 97px; +} +.mandatory-settings { + display: inline-block; + color: #4790d0; +} +.location-help, +.summary-help { + position: absolute; + display: none; +} +body.vrm.site { + background-color: #f0efeb; +} +body.vrm.site.add .container .container-inner, +body.vrm.site.update .container .container-inner, +#form-container-sitesettings .container .container-inner { + width: 982px; +} +body.vrm.site.add .form-container, +body.vrm.site.update .form-container, +#form-container-sitesettings .form-container { + padding-bottom: 60px; +} +body.vrm.site.add #location_timezone, +body.vrm.site.update #location_timezone, +#form-container-sitesettings #location_timezone { + width: 262px; +} +body.vrm.site.add #fieldset-location.fieldset-location-map, +body.vrm.site.update #fieldset-location.fieldset-location-map, +#form-container-sitesettings #fieldset-location.fieldset-location-map { + border: none; + position: relative; + margin-right: 20px; + padding: 0; +} +body.vrm.site.add #fieldset-location.fieldset-location-map .location-map-container, +body.vrm.site.update #fieldset-location.fieldset-location-map .location-map-container, +#form-container-sitesettings #fieldset-location.fieldset-location-map .location-map-container { + border: 1px solid #dcdbd7; +} +body.vrm.site.add #fieldset-location.fieldset-location-map .location-map-container #location-map, +body.vrm.site.update #fieldset-location.fieldset-location-map .location-map-container #location-map, +#form-container-sitesettings #fieldset-location.fieldset-location-map .location-map-container #location-map { + border: 1px solid #ffffff; + height: 395px; + width: 618px; +} +body.vrm.site.add #fieldset-location.fieldset-location-map #location-info, +body.vrm.site.update #fieldset-location.fieldset-location-map #location-info, +#form-container-sitesettings #fieldset-location.fieldset-location-map #location-info { + background-color: #f0efeb; + height: 50px; + padding-top: 30px; + width: 100%; +} +body.vrm.site.add #fieldset-location.fieldset-location-map #location-info h3, +body.vrm.site.update #fieldset-location.fieldset-location-map #location-info h3, +#form-container-sitesettings #fieldset-location.fieldset-location-map #location-info h3 { + padding-top: 0; +} +body.vrm.site.add #fieldset-geofence.fieldset-geofence-map, +body.vrm.site.update #fieldset-geofence.fieldset-geofence-map, +#form-container-sitesettings #fieldset-geofence.fieldset-geofence-map { + border: none; + position: relative; + margin-right: 20px; + padding: 0; + width: 618px; + background-color: inherit; +} +body.vrm.site.add #fieldset-geofence.fieldset-geofence-map .geofence-map-container, +body.vrm.site.update #fieldset-geofence.fieldset-geofence-map .geofence-map-container, +#form-container-sitesettings #fieldset-geofence.fieldset-geofence-map .geofence-map-container { + margin-top: 20px; + border: 1px solid #dcdbd7; +} +body.vrm.site.add #fieldset-geofence.fieldset-geofence-map .geofence-map-container #geofence-map, +body.vrm.site.update #fieldset-geofence.fieldset-geofence-map .geofence-map-container #geofence-map, +#form-container-sitesettings #fieldset-geofence.fieldset-geofence-map .geofence-map-container #geofence-map { + border: 1px solid #ffffff; + height: 395px; + width: 618px; +} +body.vrm.site.add #fieldset-geofence.fieldset-geofence-map .form-element, +body.vrm.site.update #fieldset-geofence.fieldset-geofence-map .form-element, +#form-container-sitesettings #fieldset-geofence.fieldset-geofence-map .form-element { + width: 50% !important; +} +body.vrm.site.add #fieldset-geofence.fieldset-geofence-map .hint, +body.vrm.site.update #fieldset-geofence.fieldset-geofence-map .hint, +#form-container-sitesettings #fieldset-geofence.fieldset-geofence-map .hint { + color: #4790d0; +} +body.vrm.site.add #fieldset-geofence.fieldset-geofence-map .mobile-hint, +body.vrm.site.update #fieldset-geofence.fieldset-geofence-map .mobile-hint, +#form-container-sitesettings #fieldset-geofence.fieldset-geofence-map .mobile-hint { + color: #4790d0; +} +body.vrm.site.add #fieldset-geofence.fieldset-geofence-map .mobile-hint, +body.vrm.site.update #fieldset-geofence.fieldset-geofence-map .mobile-hint, +#form-container-sitesettings #fieldset-geofence.fieldset-geofence-map .mobile-hint { + display: none; +} +body.vrm.site.add #submit, +body.vrm.site.update #submit, +#form-container-sitesettings #submit { + max-width: 260px; + float: right; +} +#form-container-user-settings #toggleInviteForm { + position: absolute; + top: 4px; + right: 10px; +} +#form-container-user-settings #form-container-inviteuser { + width: 320px; +} +#form-container-user-settings #form-container-inviteuser textarea#personalMessage { + max-width: 280px; + min-width: 280px; + min-height: 100px; + height: 100px; +} +#form-container-user-settings #inviteFormExplanation { + position: absolute; + top: 100px; + right: 0; + width: 270px; + color: #4790d0; +} +#form-container-user-settings #form-user-settings-container .form-input-list .only-text { + font-size: 15px !important; +} +#form-container-user-settings #form-user-settings-container .form-input-list h4 { + color: #63625e; +} +.globalbtn { + margin-top: 20px; +} +/* -----------[User pages]--------------*/ +.vrm.user h2 { + padding-left: 20px; +} +/* ---------[Page with title and table]--------------------*/ +.vrm { + padding-bottom: 30px; +} +.vrm h2.title-with-icon { + position: relative; + padding-left: 60px; + margin-top: 48px; + margin-bottom: 38px; + line-height: 27px; +} +.vrm h2.title-with-icon .sprite-icons { + position: absolute; + left: 0px; + margin: 0px 17px; +} +/* ---------[Admin tables, could go to styleguide]------------*/ +.table-overview.registrations-per-month thead th { + text-align: center; +} +.table-overview, +.table-diagnostics { + background-color: #ffffff; + border: 1px solid #dcdbd7; + border-collapse: collapse; + margin-top: 5px; + margin-bottom: 30px; + width: 100%; + font-size: 13.5px; +} +.table-overview thead th, +.table-diagnostics thead th, +.table-overview tfoot th, +.table-diagnostics tfoot th { + text-align: left; + color: #63625e; + background-color: #f0efeb; +} +.table-overview th, +.table-diagnostics th, +.table-overview td, +.table-diagnostics td { + padding: 4px 5px 3px 5px; + border-bottom: 1px solid #dcdbd7; +} +.table-overview.table-striped thead tr, +.table-diagnostics.table-striped thead tr, +.table-overview.table-striped tfoot tr, +.table-diagnostics.table-striped tfoot tr { + background-color: #e6e5e1; +} +.table-overview.table-striped thead tr th, +.table-diagnostics.table-striped thead tr th, +.table-overview.table-striped tfoot tr th, +.table-diagnostics.table-striped tfoot tr th { + border-bottom-width: 2px; +} +.table-overview.table-striped tbody tr:nth-child(2n), +.table-diagnostics.table-striped tbody tr:nth-child(2n) { + background-color: #e6e5e1; +} +.table-overview img.gravatar, +.table-diagnostics img.gravatar { + height: 40px; + width: 40px; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; +} +.table-overview div.gravatar-wrapper, +.table-diagnostics div.gravatar-wrapper { + height: 40px; + width: 40px; + position: relative; + text-align: center; + vertical-align: middle; + color: #4790d0; + text-transform: uppercase; + font-size: 14px; + line-height: 40px; + border: none !important; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +.table-overview div.gravatar-wrapper img.gravatar, +.table-diagnostics div.gravatar-wrapper img.gravatar { + position: absolute !important; + top: 0 !important; + left: 0 !important; + height: 38px !important; + width: 38px !important; + float: none !important; + margin: 0 !important; + border-width: 1px !important; + border-style: solid !important; + border-color: #dcdbd7; + background: none !important; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +.table-overview img.gravatar, +.table-diagnostics img.gravatar, +.table-overview div.gravatar-wrapper img.gravatar, +.table-diagnostics div.gravatar-wrapper img.gravatar, +.table-overview div.gravatar-wrapper, +.table-diagnostics div.gravatar-wrapper { + background-color: white; +} +.chrome .table-overview img.gravatar, +.chrome .table-diagnostics img.gravatar, +.chrome .table-overview div.gravatar-wrapper img.gravatar, +.chrome .table-diagnostics div.gravatar-wrapper img.gravatar, +.chrome .table-overview div.gravatar-wrapper, +.chrome .table-diagnostics div.gravatar-wrapper, +.webkit .table-overview img.gravatar, +.webkit .table-diagnostics img.gravatar, +.webkit .table-overview div.gravatar-wrapper img.gravatar, +.webkit .table-diagnostics div.gravatar-wrapper img.gravatar, +.webkit .table-overview div.gravatar-wrapper, +.webkit .table-diagnostics div.gravatar-wrapper { + line-height: 44px; +} +/* --------[Specific tables]----------*/ +.table-system-overview { + background-color: #ffffff; + border: 1px solid #dcdbd7; + border-collapse: collapse; + margin-top: 5px; + margin-bottom: 30px; + width: 100%; +} +.table-system-overview thead th, +.table-system-overview tfoot th { + text-align: left; + color: #63625e; + background-color: #f0efeb; +} +.table-system-overview th, +.table-system-overview td { + padding: 15px 20px 13px 20px; + border-bottom: 1px solid #dcdbd7; +} +.table-system-overview th:first-child, +.table-system-overview td:first-child { + width: 200px; +} +#mobile-alarms { + display: none; +} +.table-alarms .alarmStarted { + color: #fa716f; +} +.table-alarms .alarmCleared { + color: #4790d0; +} +.table-alarms .alarmActive { + color: #fa716f; +} +.table-alarms .alarmInactive { + color: #4790d0; +} +.pagination ul { + display: inline-block; + background-color: #ffffff; + border: 1px solid #dcdbd7; + margin: 15px 0; + padding: 0 10px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.pagination ul li { + display: inline-block; + padding: 5px; +} +.pagination ul li a { + text-decoration: none; +} +.pagination ul li.active { + font-weight: bold; + font-size: calc(16px); +} +.pagination ul li.disabled a { + color: #272622; + cursor: default; +} +.pagination.pagination-centered { + margin-left: auto; + margin-right: auto; + text-align: center; +} +/* -----------[Menu]--------------*/ +.top-menu { + background-color: #272622; + height: 35px; + position: relative; +} +.top-menu .container-inner { + height: 100%; + text-align: right; +} +.top-menu ul { + height: 100%; + margin: 0; +} +.top-menu ul li { + display: inline-block; + height: 100%; + margin-top: -13px; + padding: 0 12.5px; +} +.top-menu ul li.pull-left { + -webkit-transform: translateY(13px); + -moz-transform: translateY(13px); + -ms-transform: translateY(13px); + -o-transform: translateY(13px); + transform: translateY(13px); +} +.top-menu ul li > ul.sub-menu { + display: none; + position: absolute; + top: 100%; + z-index: 999999; + height: auto; + margin-top: -8px; + margin-left: -32.5px; + padding: 8px 20px 20px 20px; +} +.top-menu ul li > ul.sub-menu li { + display: block; + background-color: #272622; + height: 35px; + padding: 0; + margin-top: 0; + text-align: left; + border-left: 1px solid #dcdbd7; + border-right: 1px solid #dcdbd7; +} +.top-menu ul li > ul.sub-menu li a { + padding: 7px 12.5px; + box-sizing: border-box; + min-width: 100%; +} +.top-menu ul li > ul.sub-menu li:last-child { + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; + barder-bottom: 1px solid #dcdbd7; +} +.top-menu ul li:hover > ul.sub-menu, +.top-menu ul li > ul.sub-menu.expanded { + display: block; +} +.top-menu a, +.top-menu span { + color: #ffffff; + display: inline-block; + padding-top: 7px; + text-decoration: none; +} +.top-menu a:hover { + color: #ffffff; + text-decoration: underline; +} +.top-menu .plus-sign { + color: #afe18d; +} +.top-menu .container-inner { + padding-bottom: 0; +} +.top-menu-language-selector-container { + border-left: 1px solid #63625e; + cursor: pointer; + -webkit-transform: translateY(13px); + -moz-transform: translateY(13px); + -ms-transform: translateY(13px); + -o-transform: translateY(13px); + transform: translateY(13px); +} +.top-menu-language-selector-container:hover .top-menu-language-abbreviation { + text-decoration: underline; +} +.top-menu-language-abbreviation { + color: #ffffff; + float: left; + padding-top: 7px; +} +.top-menu-language-handle { + float: left; + margin-left: 4px; + margin-top: 5px; +} +.top-menu-language-fly-out { + background-color: #ffffff; + left: 0; + overflow: hidden; + position: absolute; + top: 35px; + width: 100%; + z-index: 1100; + -webkit-box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); +} +.top-menu-language-fly-out-content { + text-align: left; +} +.top-menu-language-fly-out-content.transitional { + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +.top-menu-language-fly-out-content.visible { + margin-top: 0 !important; +} +.top-menu-language-fly-out-title { + margin-top: 24px; +} +.top-menu-language-fly-out-language-container { + margin-bottom: 20px; + margin-top: 20px; +} +.top-menu .top-menu-language-fly-out-language-link { + color: #4790d0; +} +.top-menu .top-menu-language-fly-out-language-link:hover { + color: #4790d0; +} +.top-menu .top-menu-language-fly-out-language-current { + display: inline-block; + padding-top: 7px; + color: #272622; +} +.mobile-menu { + display: none; +} +.site-overlay-on-menu-open { + background-color: rgba(0, 0, 0, 0.6); + left: -10000px; + position: fixed; + top: 0; + height: 100%; + width: 100%; + z-index: 1099; + opacity: 0; + filter: alpha(opacity=0); +} +.mobile-menu-open-handle { + display: none; +} +.mobile-menu-close-handle { + position: fixed; + top: 20px; + right: -50px; + z-index: 1100; +} +/* -----------[Header]--------------*/ +.header { + background-color: #f0efeb; + border-bottom: 1px solid #dcdbd7; + height: 80px; +} +.header .secondary-controls { + margin: 15px 10px; +} +.header .secondary-controls .btn { + padding: 14px 10px 13px 10px; +} +.header .secondary-controls ul li { + display: inline-block; + margin-left: 15px; +} +.header .secondary-controls ul li .login { + background-color: #4790d0; + color: #ffffff; +} +.header .secondary-controls ul li .login:hover { + background-color: #387dc5; +} +.breadcrumb { + background-color: #f0efeb; + border-bottom: 1px solid #dcdbd7; + border-top: 1px solid #dcdbd7; + height: 80px; +} +.breadcrumb .breadcrumb-buttons-container { + padding-top: 20px; + text-align: right; +} +.breadcrumb .breadcrumb-buttons-container .btn { + float: right; + font-size: 15px; + margin-left: 16px; +} +.breadcrumb .breadcrumb-buttons-container .remote-console-control-icon { + fill: #ffffff; +} +.breadcrumb .breadcrumb-buttons-container .remote-console-control-icon path { + fill: #ffffff; +} +.breadcrumb .site-select { + display: inline-block; + text-align: left; +} +.breadcrumb .secondary-controls { + margin: 15px 10px; +} +.breadcrumb .secondary-controls ul li { + display: inline-block; + margin-left: 15px; +} +.breadcrumb-site-title { + display: none; + font-size: 21px; + margin: 30px 0; + text-align: left; +} +.branding-logo { + display: inline-block; + width: 240px; + height: 80px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -97px -577px; + float: left; + margin: 0; + text-decoration: none; + border: none; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .branding-logo { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.sites-statistics { + display: none; +} +.map-view .map { + height: 230px; +} +.map-overview .map { + height: 480px; +} +.siteinfo img { + position: absolute !important; + width: 372.59999999999997px; + height: 532.8px; + clip: rect(86.39999999999999px 28.799999999999997px 100.79999999999998px 14.399999999999999px); + top: -81.39999999999999px; + right: -338.8px; +} +.siteinfo .infowindow { + background-color: white; + padding: 10px; + border: 1px solid #dcdbd7; + font-family: 'MuseoSans-300', sans-serif; + font-size: 12px; + line-height: 13px; +} +.siteinfo .infowindow > *:first-child { + padding-right: 14.399999999999999px; +} +.siteinfo .infowindow > * { + margin-top: 6px; +} +.map-overview, +.map-view { + border-bottom: 1px solid #dcdbd7; + position: relative; +} +.map-overview .top-shadow, +.map-view .top-shadow, +.map-overview .bottom-shadow, +.map-view .bottom-shadow { + background-color: rgba(99, 98, 94, 0.1); + position: absolute; + width: 100%; + z-index: 3; +} +.map-overview .top-shadow, +.map-view .top-shadow { + height: 5px; +} +.map-overview .bottom-shadow, +.map-view .bottom-shadow { + bottom: 0px; + height: 10px; +} +.map .cluster { + margin-top: -31px; + margin-left: -10px; +} +#vrm-tabs { + margin-top: -65px; + padding-left: 10px; + position: absolute; + z-index: 4; +} +body.vrm.site.index .main-content { + position: relative; +} +body .site-overview { + padding-top: 50px; +} +body .site-overview h2 { + margin-top: 0; + margin-bottom: 15px; +} +body .site-overview .container-inner { + position: relative; +} +body .site-overview .container-inner .over-google-map { + position: absolute; + top: -116px; + z-index: 2; +} +body .site-overview .container-inner .over-google-map .grid-item { + margin-bottom: 20px; +} +body .site-overview .container-inner table.site-list { + background: #ffffff; + width: 100%; + border: 1px solid #dcdbd7; +} +body .site-overview .container-inner table.site-list th { + text-align: left; + height: 45px; + border-bottom: 1px solid #dcdbd7; + background: #faf9f5; + padding: 0 0 0 20px; + font-weight: normal; + color: #63625e; + width: 110px; +} +body .site-overview .container-inner table.site-list th.name { + width: 200px; +} +body .site-overview .container-inner table.site-list th.soc { + width: 125px; +} +body .site-overview .container-inner table.site-list th.alarm { + width: 55px; + padding-right: 20px; + text-align: center; +} +body .site-overview .container-inner table.site-list th.sort-column-asc::after { + content: "▴"; + margin-left: 6px; +} +body .site-overview .container-inner table.site-list th.sort-column-desc::after { + content: "▾"; + margin-left: 6px; +} +body .site-overview .container-inner table.site-list tr.has-alarm td:first-child { + border-left: 3px solid #fa716f; + padding-left: 17px; +} +body .site-overview .container-inner table.site-list td { + height: 50px; + border-bottom: 1px solid #dcdbd7; + padding: 0 0 0 20px; +} +body .site-overview .container-inner table.site-list td.has-alarm { + border-left: 3px solid #fa716f; + padding-left: 17px; +} +body .site-overview .container-inner table.site-list td .caption { + line-height: 24px; +} +body .site-overview .container-inner table.site-list td:last-child { + text-align: center; + padding-right: 20px; +} +body .site-overview .container-inner table.site-list .voltage { + color: #387dc5; +} +body .site-overview .container-inner table.site-list .current { + color: #f0962e; +} +.site-overview-controls { + background: #faf9f5; + border-bottom: 1px solid #dcdbd7; + color: #63625e; + padding: 30px 0; +} +.site-overview-controls .container-inner { + padding: 0; +} +.site-overview-controls .container-inner .grid-item .caption { + margin-bottom: 5px; +} +.site-overview-controls .container-inner .grid-item.view-toggle .view-toggle-container { + margin-left: 20px; +} +.site-overview-controls .container-inner .grid-item.view-toggle .view-toggle-container .custom-toggle { + margin: 10px 0; + text-align: right; +} +.site-overview-controls .container-inner .grid-item.view-toggle .view-toggle-container .custom-toggle .alternative-display .on .sprite-icons, +.site-overview-controls .container-inner .grid-item.view-toggle .view-toggle-container .custom-toggle .alternative-display .off .sprite-icons { + margin-top: 8px; +} +.site-overview-controls .container-inner .grid-item.view-toggle .view-toggle-container .custom-toggle .alternative-display .off { + background-color: #4790d0 !important; + -webkit-box-shadow: 0px 2px 0px #387dc5 inset !important; + -moz-box-shadow: 0px 2px 0px #387dc5 inset !important; + box-shadow: 0px 2px 0px #387dc5 inset !important; +} +.site-overview-controls .container-inner .grid-item.view-toggle .view-toggle-container .custom-toggle .alternative-display .knob { + -webkit-box-shadow: 5px 0px 0px #5b9bcd !important; + -moz-box-shadow: 5px 0px 0px #5b9bcd !important; + box-shadow: 5px 0px 0px #5b9bcd !important; +} +.site-overview-controls .container-inner .grid-item.view-toggle .view-toggle-container .custom-toggle input:checked + label .alternative-display .knob { + -webkit-box-shadow: -5px 0px 0px #5b9bcd !important; + -moz-box-shadow: -5px 0px 0px #5b9bcd !important; + box-shadow: -5px 0px 0px #5b9bcd !important; + left: 57px; +} +.site-overview-controls .container-inner .grid-item.tags { + clear: none; + padding-top: 21px; +} +.tags, +.tagsinput { + clear: both; +} +.tags span.tag, +.tagsinput span.tag { + background-color: #4790d0; + border: 1px solid #dcdbd7; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: 0px 2px 0px #387dc5 inset; + -moz-box-shadow: 0px 2px 0px #387dc5 inset; + box-shadow: 0px 2px 0px #387dc5 inset; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + color: #ffffff; + display: inline-block; + min-height: 40px; + padding: 8px 45px 8px 10px; + text-decoration: none; + margin: 10px 10px 0 0; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + position: relative; +} +.tags span.tag:hover, +.tagsinput span.tag:hover { + background-color: #387dc5; + text-decoration: none; +} +.tags span.tag a, +.tagsinput span.tag a { + color: #4790d0; + position: absolute; + right: 7px; + top: 7px; + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -432px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .tags span.tag a, + .tagsinput span.tag a { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.site-view { + background-color: #f0efeb; +} +.site-view .container-inner { + position: relative; +} +.site-view .container-inner .tab-select { + display: none; +} +.site-view .container-inner.no-bottom-padding { + padding-bottom: 0px; +} +.VRM_Widget_SiteSummary { + margin-bottom: 20px; +} +.VRM_Widget_SiteSummary a { + display: block; + text-decoration: none; + color: #63625e; +} +.VRM_Widget_SiteSummary .title { + line-height: 22px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.VRM_Widget_SiteSummary .sub-title { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.VRM_Widget_SiteSummary.has-alarm .site-name { + color: #f35c58; + position: relative; +} +.VRM_Widget_SiteSummary.has-alarm .site-name .title { + padding-right: 30px; +} +.VRM_Widget_SiteSummary.has-alarm .site-name .alert-red { + position: absolute; + right: 20px; + top: 21px; +} +.VRM_Widget_SiteSummary.has-alarm a { + color: #f35c58; +} +.VRM_Widget_SolarChargerPVYield .jqplot-target .jqplot-yaxis { + color: #666666 !important; +} +.site-info-list li { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + max-height: 99px; + min-height: 99px; + border-top: 1px solid #dcdbd7; + border-left: 1px solid #dcdbd7; + border-right: 1px solid #dcdbd7; + background-color: #ffffff; + padding: 22px 20px 24px 20px; +} +.site-info-list li:first-child { + background-color: #faf9f5; + max-height: 79px; + min-height: 79px; +} +.site-info-list li:first-child .data-container .voltage { + color: #387dc5; +} +.site-info-list li:first-child .data-container .current { + color: #f0962e; +} +.site-info-list li.site-name { + padding: 0px; +} +.site-info-list li.site-name a { + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + height: 78px; + width: 298px; +} +.site-info-list li.site-name a:hover { + background-color: #ffffff; +} +.site-info-list li.site-name .title { + font-size: 21px; + padding-left: 20px; + padding-right: 20px; + padding-top: 22px; +} +.site-info-list li.site-name .sub-title { + padding-left: 20px; +} +.site-info-list li.site-name .sub-title .caption { + vertical-align: super; +} +.site-info-list li.site-info { + *zoom: 1; +} +.site-info-list li.site-info:before, +.site-info-list li.site-info:after { + display: table; + content: ""; + line-height: 0; +} +.site-info-list li.site-info:after { + clear: both; +} +.site-info-list li.site-info .img-container { + width: 45px; + height: 45px; + float: left; +} +.site-info-list li.site-info .data-container { + float: right; + width: 170px; + padding: 5px 5px 5px 15px; +} +.site-info-list li.site-info .data-container .caption { + display: block; + font-size: 18px; +} +.site-info-list li.site-info .data-container .data-value { + display: block; +} +.site-info-list li.site-info .data-container .data-value .olddata { + color: #f35c58; +} +.site-info-list li.site-info .data-container .data-value .current { + color: #f0962e; +} +.site-info-list li.site-info .data-container .data-value .voltage { + color: #387dc5; +} +.site-info-list li.site-info .data-container .data-value .standard { + color: #387dc5; +} +.site-info-list li:last-child { + border-bottom: 1px solid #dcdbd7; +} +/* -----------[Custom data toggle]--------------*/ +.custom-data-toggle { + *zoom: 1; + background-color: #e6e5e1; + border: 1px solid #dcdbd7; + padding: 0px 10px; +} +.custom-data-toggle:before, +.custom-data-toggle:after { + display: table; + content: ""; + line-height: 0; +} +.custom-data-toggle:after { + clear: both; +} +.custom-data-toggle.checked { + background-color: #ffffff; +} +.custom-data-toggle input { + display: none; +} +.custom-data-toggle label { + display: block; + height: 50px; + padding: 20px 10px; +} +.custom-data-toggle .img-container { + width: 45px; + height: 45px; + float: left; +} +.custom-data-toggle .data-container { + float: right; + width: 180px; + padding: 5px; +} +.custom-data-toggle .data-container .caption { + display: block; +} +.custom-data-toggle .data-container .data-value { + display: block; +} +/* -------------[ Google Maps ]-------------- */ +.gm-style img { + /** Fixes that obnoxious Bootstrap responsive image hack */ + max-width: none; +} +.gmnoprint img { + max-width: inherit; +} +/* --------------[ Tabs ]--------------------*/ +#vrm-tabs-content { + color: #63625e; +} +#vrm-tabs-content .tab-pane .content { + position: relative; + padding: 0; +} +#vrm-tabs-content .tab-pane#settings #main-settings-form { + display: none; +} +#vrm-tabs-content .tab-pane#settings .content .form-tabs-container .mobile-title { + display: none; +} +#vrm-tabs-content .tab-pane#settings .content .form-tabs-container .form-tabs { + margin-top: 0px; +} +#vrm-tabs-content .tab-pane#settings .content .form-tabs-container .form-tabs li { + overflow: hidden; +} +#vrm-tabs-content .tab-pane#settings .content .form-tabs-container .form-tabs li:first-child { + -webkit-border-top-left-radius: 5px; + -moz-border-radius-topleft: 5px; + border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; + -moz-border-radius-topright: 5px; + border-top-right-radius: 5px; +} +#vrm-tabs-content .tab-pane#settings .content .form-tabs-container .form-tabs li:first-child a { + -webkit-border-top-left-radius: 5px; + -moz-border-radius-topleft: 5px; + border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; + -moz-border-radius-topright: 5px; + border-top-right-radius: 5px; +} +#vrm-tabs-content .tab-pane#settings .content .form-tabs-container .form-tabs li:last-child { + -webkit-border-bottom-left-radius: 5px; + -moz-border-radius-bottomleft: 5px; + border-bottom-left-radius: 5px; + -webkit-border-bottom-right-radius: 5px; + -moz-border-radius-bottomright: 5px; + border-bottom-right-radius: 5px; +} +#vrm-tabs-content .tab-pane#settings .content .form-tabs-container .form-tabs li:last-child a { + -webkit-border-bottom-left-radius: 5px; + -moz-border-radius-bottomleft: 5px; + border-bottom-left-radius: 5px; + -webkit-border-bottom-right-radius: 5px; + -moz-border-radius-bottomright: 5px; + border-bottom-right-radius: 5px; +} +#vrm-tabs-content .tab-pane#settings .content .form-tabs-container .form-tabs .error, +#vrm-tabs-content .tab-pane#settings .content .form-tabs-container .form-tabs .error .required { + color: #fa716f; +} +#vrm-tabs-content .tab-pane#settings .content #settingsButtonErrorText { + display: block; + margin-top: 20px; + text-align: center; + color: #fa716f; +} +#vrm-tabs-content .tab-pane#settings .content .remove-site-question { + margin-bottom: 20px; +} +#vrm-tabs-content .tab-pane#settings .content .remove-site-question h3 { + margin-bottom: 10px; +} +#vrm-tabs-content .tab-pane#settings .content .header { + background-color: #f0efeb; + border: 1px solid #dcdbd7; + border-bottom: none; + height: 10px; + padding: 17px 20px 22px; +} +#vrm-tabs-content .tab-pane#settings .content .header .caption-right { + float: right; + padding-right: 18px; +} +#vrm-tabs-content .tab-pane#settings .content .sortable-widgets-header { + background-color: #faf9f5; + border: 1px solid #dcdbd7; + border-bottom: none; + height: 30px; + padding: 18px 20px 2px 18px; +} +#vrm-tabs-content .tab-pane#settings .content .sortable-widgets-header .caption { + font-size: 21px; +} +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .header { + background-color: #faf9f5; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list { + background-color: #ffffff; + border: 1px solid #dcdbd7; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row { + border-bottom: 1px solid #f0efeb; + height: 60px; + overflow: hidden; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row:last-child, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row:last-child, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row:last-child { + border-color: #dcdbd7; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container { + padding: 10px 20px 10px 20px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container .custom-toggle > input, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .custom-toggle > input, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle > input { + display: none; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container .custom-toggle label, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label { + font-size: 18px; + padding: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container .custom-toggle label .alternative-display, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label .alternative-display, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label .alternative-display { + left: auto; + right: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container .custom-toggle label a, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label a, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label a { + display: block; + position: absolute; + top: 8px; + right: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container .custom-toggle label a:hover > div, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label a:hover > div, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label a:hover > div { + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -432px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container .custom-toggle label a:hover > div, + #vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label a:hover > div, + #vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label a:hover > div { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container .only-text, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .only-text, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .only-text { + font-size: 18px; + line-height: 44px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container .only-text .on-off, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .only-text .on-off, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .only-text .on-off { + float: right; + margin-top: -10px; + width: 170px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list .row .inner-container .email-caption, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .email-caption, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .email-caption { + color: #387dc5; + font-size: 15px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list:last-child, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list:last-child, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list:last-child { + border-bottom: none; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list.sortable-widgets, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list.sortable-widgets, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list.sortable-widgets { + position: relative; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list.sortable-widgets li, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list.sortable-widgets li, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list.sortable-widgets li { + height: 49px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list.sortable-widgets .row, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list.sortable-widgets .row, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list.sortable-widgets .row { + color: #4790d0; + cursor: move; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list.sortable-widgets .row .inner-container, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list.sortable-widgets .row .inner-container, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list.sortable-widgets .row .inner-container { + color: #63625e; + display: block; + padding: 17px 0 12px 46px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list.sortable-widgets .row .inner-container .custom-toggle label, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list.sortable-widgets .row .inner-container .custom-toggle label, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list.sortable-widgets .row .inner-container .custom-toggle label { + cursor: move; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list.sortable-widgets .row input[type="checkbox"], +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list.sortable-widgets .row input[type="checkbox"], +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list.sortable-widgets .row input[type="checkbox"] { + position: absolute; + visibility: hidden; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .form-input-list.sortable-widgets .row.ui-sortable-placeholder, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list.sortable-widgets .row.ui-sortable-placeholder, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list.sortable-widgets .row.ui-sortable-placeholder { + visibility: visible !important; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row { + border-bottom: 1px solid #f0efeb; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .disabled-widgets-container { + float: right; + margin-right: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .disabled-widgets { + background-color: #f0efeb; + border: none; + min-height: 50px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .disabled-widgets li { + border: 1px solid #dcdbd7; + margin-bottom: -1px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .disabled-widgets li .inner-container { + padding-left: 37px !important; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .disabled-widgets .ui-sortable-placeholder { + border: none; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .sortable-widget-list-disabled-caption { + margin-bottom: 3px; + margin-top: 27px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets-container { + float: left; + margin-left: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets-container .horizontal-line { + background-color: #dcdbd7; + height: 1px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets { + list-style-type: none; + margin: 0; + padding: 0; + -webkit-box-shadow: 0 0 10px #dcdbd7; + -moz-box-shadow: 0 0 10px #dcdbd7; + box-shadow: 0 0 10px #dcdbd7; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets li { + counter-increment: customlistcounter; + list-style-position: inside; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets li:before { + content: counter(customlistcounter) " "; + float: left; + margin-left: 20px; + margin-top: 17px; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets li:first-child { + counter-reset: customlistcounter; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets .placeholder-list-item { + background: url('/img/drag-drop-placeholder-pattern.png') repeat; + background-color: #f0efeb !important; + height: 99px; + position: relative; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets .placeholder-list-item:before { + background-color: #f0efeb; + content: ' '; + left: 50%; + margin-left: -12px; + margin-top: -12px; + position: absolute; + top: 50%; + -webkit-border-radius: 100px; + -moz-border-radius: 100px; + border-radius: 100px; + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -672px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets .placeholder-list-item:before { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets .ui-sortable-placeholder { + background: url('/img/drag-drop-placeholder-pattern.png') repeat; + background-color: #f0efeb !important; + height: 99px; + position: relative; +} +#vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets .ui-sortable-placeholder:before { + background-color: #f0efeb; + content: ' '; + left: 50%; + margin-left: -12px; + margin-top: -12px; + position: absolute; + top: 50%; + -webkit-border-radius: 100px; + -moz-border-radius: 100px; + border-radius: 100px; + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -672px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #vrm-tabs-content .tab-pane#settings .content #form-widget-settings .active-widgets .ui-sortable-placeholder:before { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label { + line-height: 21px; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .only-text, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container .only-text { + line-height: 21px; +} +#vrm-tabs-content .tab-pane#settings .content #form-container-sitesettings { + margin-bottom: 20px; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .header { + background-color: #faf9f5; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .header .caption-right { + padding-right: 0; + width: 170px; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container img.gravatar { + height: 40px; + width: 40px; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper { + height: 40px; + width: 40px; + position: relative; + text-align: center; + vertical-align: middle; + color: #4790d0; + text-transform: uppercase; + font-size: 14px; + line-height: 40px; + border: none !important; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar { + position: absolute !important; + top: 0 !important; + left: 0 !important; + height: 38px !important; + width: 38px !important; + float: none !important; + margin: 0 !important; + border-width: 1px !important; + border-style: solid !important; + border-color: #dcdbd7; + background: none !important; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container img.gravatar, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper { + float: left; + margin-right: 20px; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container img.gravatar.admin, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar.admin, +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper.admin { + color: #8bc964; + border-color: #8bc964; +} +.chrome #vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container img.gravatar, +.chrome #vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar, +.chrome #vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper, +.webkit #vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container img.gravatar, +.webkit #vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar, +.webkit #vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container div.gravatar-wrapper { + line-height: 41px !important; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label .alternative-display { + display: block; + right: 40px; +} +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings { + margin-bottom: 10px; +} +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row { + border-bottom: 1px solid #f0efeb; +} +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container img.gravatar { + height: 40px; + width: 40px; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; +} +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper { + height: 40px; + width: 40px; + position: relative; + text-align: center; + vertical-align: middle; + color: #4790d0; + text-transform: uppercase; + font-size: 14px; + line-height: 40px; + border: none !important; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar { + position: absolute !important; + top: 0 !important; + left: 0 !important; + height: 38px !important; + width: 38px !important; + float: none !important; + margin: 0 !important; + border-width: 1px !important; + border-style: solid !important; + border-color: #dcdbd7; + background: none !important; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container img.gravatar, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper { + float: left; + margin-right: 20px; +} +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container img.gravatar.receives-notifications, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar.receives-notifications, +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper.receives-notifications { + color: #4790d0; + border-color: #4790d0; +} +.chrome #vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container img.gravatar, +.chrome #vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar, +.chrome #vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper, +.webkit #vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container img.gravatar, +.webkit #vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper img.gravatar, +.webkit #vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row .inner-container div.gravatar-wrapper { + line-height: 41px !important; +} +#vrm-tabs-content .tab-pane#settings .content #form-alarms-admin-settings .form-input-list .row:last-child { + border-bottom: 1px solid #dcdbd7; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings { + position: relative; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container { + /*width: 300px;*/ +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #alarm_notifications-label, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #no_data-label, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #float_limits-label, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #enum_limits-label { + height: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #alarm_notifications-element .custom-toggle.main label .caption, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #no_data-element .custom-toggle.main label .caption { + color: #387dc5; + font-size: 18px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #alarm_notifications-element dt { + height: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #alarm_notifications-element .form-input-list { + margin: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #no_data-element, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits { + position: relative; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #no_data-element fieldset dl, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits fieldset dl { + margin: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #no_data-element fieldset dl #no_data-enabled-label, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits fieldset dl #no_data-enabled-label { + height: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #no_data-element fieldset dl #no_data-enabled-element, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits fieldset dl #no_data-enabled-element { + margin-bottom: 15px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #no_data-element fieldset dl .hint, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits fieldset dl .hint { + color: #4790d0; + position: absolute; + right: -300px; + top: 0px; + width: 270px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-no_data { + margin-bottom: 15px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-float_limits, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits { + border: none; + padding: 15px; + margin-bottom: 15px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-float_limits > dl, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits > dl { + background-color: #f0efeb; + margin: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-float_limits > dl > dt, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits > dl > dt { + height: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-float_limits > dl > dd, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits > dl > dd { + position: relative; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-float_limits > dl > dd > fieldset > dl, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits > dl > dd > fieldset > dl { + margin-top: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-float_limits > dl > dd > fieldset > dl > dt:nth-child(2), +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits > dl > dd > fieldset > dl > dt:nth-child(2) { + height: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-float_limits > dl > dd > fieldset > dl > dt:not(:first-child), +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits > dl > dd > fieldset > dl > dt:not(:first-child) { + margin-top: 15px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-float_limits .custom-toggle.main label .caption, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits .custom-toggle.main label .caption { + color: #387dc5; + font-size: 18px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-float_limits .remove-alarm-button, +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form #fieldset-enum_limits .remove-alarm-button { + position: absolute; + top: 20px; + right: 20px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .form-container form dd { + margin-left: 0px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .above-fieldset-element { + position: absolute; + right: 0px; + top: -69px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .above-fieldset-element .btn { + margin-left: 12px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-alarms-settings .admin-users-box .title { + font-size: 18px; + margin: 20px 0 20px 20px; +} +#vrm-tabs-content .tab-pane#settings .content #form-user-settings .sprite-icons.cross-in-circle-dark { + vertical-align: top; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-system-overview .device-icon { + float: left; + margin-right: 5px; +} +#vrm-tabs-content .tab-pane#settings .content #forms-container-system-overview .device-icon + h3 { + line-height: 48px; +} +#vrm-tabs-content h2 { + margin: 12px 0 2px 0; +} +#vrm-tabs-content .section-heading { + *zoom: 1; + margin: 35px 0 7px 0; +} +#vrm-tabs-content .section-heading:before, +#vrm-tabs-content .section-heading:after { + display: table; + content: ""; + line-height: 0; +} +#vrm-tabs-content .section-heading:after { + clear: both; +} +#vrm-tabs-content .section-heading .sprite-icons { + float: left; + margin: 9px 21px 25px 25px; +} +#vrm-tabs-content .section-heading .information { + float: left; +} +#vrm-tabs-content .section-heading .btn { + margin-right: 10px; + margin-top: 29px; +} +#vrm-tabs-content .widget-filter-container { + margin-bottom: 20px; +} +#vrm-tabs-content .widget-filter-container #widget-filter { + width: 100%; +} +#vrm-tabs-content #advanced .section-heading { + margin: 35px 0; +} +#vrm-tabs-content .last-update-info { + color: #63625e; + padding-right: 15px; + text-align: right; + float: left; +} +#vrm-tabs-content .mobile-graph-refresh { + display: none; +} +#vrm-tabs-content .progress-meters-container { + border-top: 1px solid #dcdbd7; + height: 396px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container { + background-color: #ffffff; + border: 1px solid #dcdbd7; + border-top: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 20px 60px 48px 60px; + position: relative; + width: 100%; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter { + position: relative; + width: 100%; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container { + position: relative; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container .meter, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .meter { + background: #e6e5e1; + float: left; + height: 10px; + margin-top: 37px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container .meter .progress, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .meter .progress { + display: block; + height: 100%; + overflow: hidden; + width: 0%; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container .indicator, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .indicator { + display: inline-block; + position: absolute; + top: 0px; + visibility: hidden; + white-space: nowrap; + z-index: 1; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container .indicator .indicator-body, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .indicator .indicator-body { + color: #ffffff; + background: #63625e; + line-height: 30px; + padding: 0px 6px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container .indicator .indicator-footer, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .indicator .indicator-footer { + height: 5px; + width: 0px; + margin: 0 auto; + border-top: 5px outset #63625e; + border-left: 5px inset rgba(0, 0, 0, 0); + border-right: 5px inset rgba(0, 0, 0, 0); +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container .icon, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .icon { + left: -42px; + position: absolute; + top: 30px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container p, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container p { + font-size: 11px; + position: absolute; + top: 41px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container p.pull-right, +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container p.pull-right { + right: 0px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .meter { + width: 100%; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .progress-meter .meter .progress { + background: #f7ab3e; + -webkit-border-top-left-radius: 2px; + -moz-border-radius-topleft: 2px; + border-top-left-radius: 2px; + -webkit-border-bottom-left-radius: 2px; + -moz-border-radius-bottomleft: 2px; + border-bottom-left-radius: 2px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .meter.positive { + -webkit-border-top-left-radius: 2px; + -moz-border-radius-topleft: 2px; + border-top-left-radius: 2px; + -webkit-border-bottom-left-radius: 2px; + -moz-border-radius-bottomleft: 2px; + border-bottom-left-radius: 2px; + width: 50%; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .meter.positive .progress { + background-color: #8bc964; + float: right; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .meter.negative { + -webkit-border-top-right-radius: 2px; + -moz-border-radius-topright: 2px; + border-top-right-radius: 2px; + -webkit-border-bottom-right-radius: 2px; + -moz-border-radius-bottomright: 2px; + border-bottom-right-radius: 2px; + width: 50%; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .meter.negative .progress { + background-color: #fa716f; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .center-point { + left: 50%; + position: absolute; + top: 36px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .center-point .divider { + background-color: #959490; + height: 18px; + width: 1px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .center-point .caption { + color: #959490; + font-size: 11px; + margin-left: -3px; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container.power-distribution .meter { + background: #e6e5e1; +} +#vrm-tabs-content .progress-meters-container .progress-meter-container.genset-actual .progress-meter .inner-meter-container .meter .progress { + background: #4790d0; +} +#vrm-tabs-content .progress-meters-container.rows-1 { + height: 198px; +} +#vrm-tabs-content .progress-meters-container.rows-1 .progress-meter-container { + height: 199px; + padding-top: 30px; +} +#vrm-tabs-content .progress-meters-container.rows-1 .progress-meter-container .inner-meter-container { + margin-top: 5px; +} +#vrm-tabs-content .progress-meters-container.rows-2 .progress-meter-container { + height: 198px; + padding-top: 30px; +} +#vrm-tabs-content .progress-meters-container.rows-2 .progress-meter-container .inner-meter-container { + margin-top: 5px; +} +#vrm-tabs-content .progress-meters-container.rows-2 .progress-meter-container:last-child { + height: 197px; +} +#vrm-tabs-content .progress-meters-container.rows-3 .progress-meter-container { + height: 132px; +} +#vrm-tabs-content .progress-meters-container.rows-3 .progress-meter-container:last-child { + height: 131px; +} +#vrm-tabs-content .totalProduced li:first-child { + border: none; + min-height: 99px; + padding: 0; +} +#vrm-tabs-content .totalProduced li:first-child .main-section { + background: #f7ab3e; + border: 0; + color: #ffffff; + height: 74px; + float: left; + padding-left: 40px; + padding-top: 25px; + width: 260px; +} +#vrm-tabs-content .totalProduced li:first-child .main-section h1 { + margin: 4px 0 0 0; +} +#vrm-tabs-content .totalProduced li:first-child .main-section.status-ok { + background: #8bc964; +} +#vrm-tabs-content .totalProduced li:first-child .main-section.status-alarm { + background: #fa716f; +} +#vrm-tabs-content .totalProduced li:first-child .corner { + position: absolute; + right: 10px; +} +#vrm-tabs-content .totalProduced li:first-child .corner.blue { + display: inline-block; + width: 30px; + height: 60px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -432px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #vrm-tabs-content .totalProduced li:first-child .corner.blue { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#vrm-tabs-content .totalProduced li:first-child .corner.orange { + display: inline-block; + width: 30px; + height: 60px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -462px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #vrm-tabs-content .totalProduced li:first-child .corner.orange { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#vrm-tabs-content .totalProduced li:first-child .corner.red { + display: inline-block; + width: 30px; + height: 60px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -492px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #vrm-tabs-content .totalProduced li:first-child .corner.red { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#vrm-tabs-content .totalProduced li:first-child .corner.green { + display: inline-block; + width: 30px; + height: 60px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -522px -120px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #vrm-tabs-content .totalProduced li:first-child .corner.green { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#vrm-tabs-content .totalProduced li:nth-child(2) { + border-top: none; +} +#vrm-tabs-content .tab-pane#advanced .download-data-container { + position: absolute; + top: 14px; + right: 17px; + line-height: 26px; + padding-left: 28px; + max-height: 52px; + text-align: left; +} +#vrm-tabs-content .tab-pane#advanced .download-data-container .link-text { + padding: 0 5px; +} +#vrm-tabs-content .tab-pane#batteries .section-graph, +#vrm-tabs-content .tab-pane#solar-yield .section-graph, +#vrm-tabs-content .tab-pane#consumption .section-graph { + background-color: #ffffff; + border: 1px solid #dcdbd7; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-graph, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-graph, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-graph { + height: 324px; + margin: 40px 60px 30px 10px; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-graph.move-last-tick-to-front .jqplot-xaxis canvas:last-child, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-graph.move-last-tick-to-front .jqplot-xaxis canvas:last-child, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-graph.move-last-tick-to-front .jqplot-xaxis canvas:last-child { + left: 0px !important; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-legend, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-legend, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-legend { + background-color: #e6e5e1; + border-top: 1px solid #dcdbd7; + height: 60px; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-legend ul, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-legend ul, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-legend ul { + margin-left: 20px; + margin-top: 20px; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-legend ul li, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-legend ul li, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-legend ul li { + float: left; + margin-right: 50px; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-legend ul li .color-square, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-legend ul li .color-square, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-legend ul li .color-square { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + float: left; + height: 20px; + margin-right: 9px; + width: 20px; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-legend ul li .color-square.blue, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-legend ul li .color-square.blue, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-legend ul li .color-square.blue { + background-color: #4790d0; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-legend ul li .color-square.green, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-legend ul li .color-square.green, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-legend ul li .color-square.green { + background-color: #8bc964; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-legend ul li .color-square.orange, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-legend ul li .color-square.orange, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-legend ul li .color-square.orange { + background-color: #f7ab3e; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-legend ul li .color-square.red, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-legend ul li .color-square.red, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-legend ul li .color-square.red { + background-color: #fa716f; +} +#vrm-tabs-content .tab-pane#batteries .section-graph .dashboard-legend ul li .caption, +#vrm-tabs-content .tab-pane#solar-yield .section-graph .dashboard-legend ul li .caption, +#vrm-tabs-content .tab-pane#consumption .section-graph .dashboard-legend ul li .caption { + color: #63625e; + float: left; + font-size: 11px; +} +#vrm-tabs-content .tab-pane#batteries .site-info-list li:first-child { + background-color: #ffffff; + max-height: 99px; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li, +#vrm-tabs-content .tab-pane#consumption .site-info-list li { + padding: 0px; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li:first-child, +#vrm-tabs-content .tab-pane#consumption .site-info-list li:first-child { + background-color: #ffffff; + max-height: 99px; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot { + float: left; + height: 93px; + margin-bottom: -4px; + margin-top: 10px; + width: 99px; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info { + float: left; + height: 99px; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info .caption, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info .caption { + font-size: 18px; + margin-top: 31px; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info .subcaption, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info .subcaption { + color: #f7ab3e; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info ul li, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info ul li { + border: none; + float: left; + min-height: 0px; + padding-right: 10px; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info ul li.toGrid, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info ul li.toGrid, +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info ul li.gridUse, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info ul li.gridUse { + color: #fa716f; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info ul li.toBattery, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info ul li.toBattery, +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info ul li.batteryUse, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info ul li.batteryUse { + color: #4790d0; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info ul li.directUse, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info ul li.directUse, +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info ul li.solarUse, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info ul li.solarUse { + color: #f7ab3e; +} +#vrm-tabs-content .tab-pane#solar-yield .site-info-list li .plot-info ul li.gensetUse, +#vrm-tabs-content .tab-pane#consumption .site-info-list li .plot-info ul li.gensetUse { + color: #8bc964; +} +/* --------------[ Date range selectors ]--------------------*/ +.advanced-view-time-toggle .icon-24-center { + left: 17px; + position: absolute; + top: 8px; +} +.date-range-selectors, +.date-range-selectors-advanced { + display: none; + background-color: #faf9f5; + padding: 21px 0 30px 0; + border-bottom: 1px solid #e5e4e0; +} +.date-range-selectors .custom_date_selector_container, +.date-range-selectors-advanced .custom_date_selector_container { + padding-left: 20px; +} +.date-range-selectors .selector-list > li, +.date-range-selectors-advanced .selector-list > li { + float: left; + margin-left: 17px; +} +.date-range-selectors .selector-list > li.pickerOnly, +.date-range-selectors-advanced .selector-list > li.pickerOnly { + visibility: hidden; + width: 0; + height: 0; + overflow: hidden; +} +.date-range-selectors .selector-list > li:first-child, +.date-range-selectors-advanced .selector-list > li:first-child { + margin-left: 0px; +} +.date-range-selectors .js__datepicker, +.date-range-selectors-advanced .js__datepicker { + color: #63625e; +} +.date-range-selectors .set-time-label, +.date-range-selectors-advanced .set-time-label, +.date-range-selectors .set-view-label, +.date-range-selectors-advanced .set-view-label { + color: #63625e; + line-height: 30px; +} +.date-range-selectors .time-selector-simple, +.date-range-selectors-advanced .time-selector-simple { + height: 51px; +} +.date-range-selectors .time-selector-custom, +.date-range-selectors-advanced .time-selector-custom { + height: 51px; + display: none; +} +.date-range-selectors .advanced-view-time-toggle, +.date-range-selectors-advanced .advanced-view-time-toggle { + margin: 5px 0 0 0; +} +.currenttime { + display: none; +} +/* --------------[ Date picker: pickadate ]--------------------*/ +.picker__input { + cursor: pointer; + text-align: center; +} +.picker { + margin-left: 10px; + margin-right: 10px; + width: 300px; + margin: 10px 0; +} +.picker .picker__holder { + border: 1px solid #dcdbd7; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + color: #272622; +} +.picker .picker__holder .picker__header .picker__nav--prev:hover, +.picker .picker__holder .picker__header .picker__nav--next:hover { + background-color: #e6e5e1; +} +.picker .picker__holder .picker__day--highlighted { + background-color: #4790d0; +} +.picker .picker__holder .picker__day--highlighted:hover { + background-color: #4790d0 !important; +} +.picker .picker__holder .picker__day--selected { + border: none; +} +.picker .picker__holder .picker__day--infocus:hover, +.picker .picker__holder .picker__day--outfocus:hover { + background-color: #e6e5e1; +} +.picker .picker__holder .picker__footer .picker__button--today:hover { + background-color: #e6e5e1; +} +.date-range-selectors-advanced .section { + float: left; + margin-left: 20px; +} +.date-range-selectors-advanced .section:first-child { + margin-left: 0px; +} +.date-range-selectors-advanced .mobile-caption { + display: none; +} +.date-range-selectors-advanced .vrm-date-time-picker { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 50px; + padding: 0; + position: relative; + display: inherit; +} +.date-range-selectors-advanced .vrm-date-time-picker .picker__input, +.date-range-selectors-advanced .vrm-date-time-picker .date-range-picker-divider { + background-color: #e6e5e1; + float: left; + min-height: 48px; + max-height: 48px; +} +.date-range-selectors-advanced .vrm-date-time-picker .picker__input.changed, +.date-range-selectors-advanced .vrm-date-time-picker .date-range-picker-divider.changed { + background-color: #ffffff; + color: #63625e; +} +.date-range-selectors-advanced .vrm-date-time-picker .js__datepicker { + border: none; + color: #63625e; + -webkit-border-top-right-radius: 0px; + -moz-border-radius-topright: 0px; + border-top-right-radius: 0px; + -webkit-border-bottom-right-radius: 0px; + -moz-border-radius-bottomright: 0px; + border-bottom-right-radius: 0px; + padding: 16px 0px 12px; + width: 121px; +} +.date-range-selectors-advanced .vrm-date-time-picker .js__timepicker { + border: none; + color: #63625e; + -webkit-border-top-left-radius: 0px; + -moz-border-radius-topleft: 0px; + border-top-left-radius: 0px; + -webkit-border-bottom-left-radius: 0px; + -moz-border-radius-bottomleft: 0px; + border-bottom-left-radius: 0px; + padding: 16px 0px 12px; + width: 95px; +} +.date-range-selectors-advanced .vrm-date-time-picker .date-range-picker-divider { + height: 100%; + width: 1px; +} +.date-range-selectors-advanced .vrm-date-time-picker .date-range-picker-divider .divider { + background-color: #dcdbd7; + height: 30px; + margin-top: 9px; +} +.date-range-selectors-advanced .vrm-date-time-picker:hover .date-range-picker-divider .divider { + background-color: #e6e5e1; +} +.date-range-selectors-advanced .vrm-date-time-picker .picker { + top: 49px; + left: -1px; +} +.date-range-selectors-advanced .set-time .btn { + cursor: pointer; + padding-bottom: 9px; + padding-top: 13px; + position: relative; +} +.date-range-selectors-advanced .set-time .btn .sprite-icons { + left: 18px; + position: absolute; + top: 13px; +} +.date-range-selectors-advanced .set-time .btn .caption { + font-size: 18px; + line-height: 25px; + padding-left: 26px; +} +.date-range-selectors-advanced .set-time .btn.disabled { + cursor: default; +} +.VRM_Widget_DateRange .header.date-range-header { + height: auto; + min-height: 64px; +} +.VRM_Widget_DateRange .header.date-range-header > h3 { + float: left; + margin: 13px 11px; +} +.VRM_Widget_DateRange .date-range-list { + margin: 0; + padding: 0; + list-style-type: none; +} +.VRM_Widget_DateRange .date-range-list > li { + float: left; + color: white; + font-weight: bold; + margin: 8px 4px; +} +.VRM_Widget_DateRange .date-range-list > li.range-button-refresh { + float: right; +} +.VRM_Widget_DateRange .date-range-list > li.range-button-download { + float: right; + margin-right: 12px; + margin-left: 6px; +} +.VRM_Widget_DateRange .date-range-list > li > input, +.VRM_Widget_DateRange .date-range-list > li > span > input { + font-size: 22px; + line-height: 28px; + width: 220px; +} +.VRM_Widget_DateRange .date-range-list > li > button.small { + margin: 2px 0px; +} +.VRM_Widget_DateRange .date-range-list > li > input:hover, +.VRM_Widget_DateRange .date-range-list > li > span > input:hover { + font-style: normal; + cursor: pointer; +} +#timeRange-desktop { + position: relative; + float: left; + overflow: hidden; + width: 100%; + height: 160px; + padding: 0 0 8px 0; + margin: 0; +} +#timeRange-desktop #timePickers-desktop { + position: absolute; + top: 10px; + left: 45px; + width: 100px; + font-family: Arial; + font-size: 11px; + font-weight: normal; +} +#timeRange-desktop #timePickers-desktop input { + width: 100%; +} +#timeRange-desktop #timeRangeSet-desktop { + position: absolute; + top: 65px; + right: 45px; +} +#timeRange-desktop .datepicker { + position: relative; + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + width: 196px; + height: 147px; + cursor: default; + display: none; + margin: 0 auto; + /* Hide border divs by default */ + /* Only display the previous/next arrows on the first/last calendars */ + /* Compensate for the space lost by not having a previous arrow */ + /* Day mode calendar body */ + /* Month mode calendar body */ + /* Year mode calendar body */ + /* Not used by default, calendar cells can be marked as special if desired (doesn't seem to be totally working) */ + /* style the 'not in month' day cell away */ + /* Datepicker border styling */ + background-color: #F7F7F7; + border: 1px solid #CCCCCC; + border-radius: 5px 5px 5px 5px; + padding: 10px; + /* Tighten up the spacing between multiple calendars */ + /* Grey background behind Month Name row, and blue text */ + /* style the day of week header cells */ + /* grey underline beneath day of week row */ + /* Black text, white background, and grey borders around day cells */ + /* blue cell color for selected days */ + /* Grey out dates in the future */ + /* yellow cell background on hover */ + /* Bold today's date */ + /* cells are wider in the clean style */ +} +#timeRange-desktop .datepicker .datepickerContainer { + position: absolute; +} +#timeRange-desktop .datepicker .datepickerBorderT, +#timeRange-desktop .datepicker .datepickerBorderB, +#timeRange-desktop .datepicker .datepickerBorderL, +#timeRange-desktop .datepicker .datepickerBorderR, +#timeRange-desktop .datepicker .datepickerBorderTL, +#timeRange-desktop .datepicker .datepickerBorderTR, +#timeRange-desktop .datepicker .datepickerBorderBL, +#timeRange-desktop .datepicker .datepickerBorderBR { + display: none; +} +#timeRange-desktop .datepicker .datepickerHidden { + display: none; +} +#timeRange-desktop .datepicker table { + border-collapse: collapse; +} +#timeRange-desktop .datepicker a { + color: black; + text-decoration: none; + cursor: default; + outline: none; +} +#timeRange-desktop .datepicker table td { + text-align: center; + padding: 0; + margin: 0; +} +#timeRange-desktop .datepicker th { + text-align: center; + color: #666666; + font-weight: normal; + padding: 0; +} +#timeRange-desktop .datepicker tbody a { + display: block; +} +#timeRange-desktop .datepicker .datepickerDays a { + width: 20px; + line-height: 16px; + height: 16px; + padding-right: 2px; +} +#timeRange-desktop .datepicker .datepickerYears a, +#timeRange-desktop .datepicker .datepickerMonths a { + width: 39px; + line-height: 36px; + height: 36px; + text-align: center; +} +#timeRange-desktop .datepicker .datepickerMonths td:first-child a, +#timeRange-desktop .datepicker .datepickerMonths td:last-child a, +#timeRange-desktop .datepicker .datepickerYears td:first-child a, +#timeRange-desktop .datepicker .datepickerYears td:last-child a { + width: 38px; +} +#timeRange-desktop .datepicker td.datepickerNotInMonth a { + color: #666666; +} +#timeRange-desktop .datepicker tbody.datepickerDays td.datepickerSelected { + background: #136A9F; +} +#timeRange-desktop .datepicker tbody.datepickerDays td.datepickerNotInMonth.datepickerSelected { + background: #17384d; +} +#timeRange-desktop .datepicker tbody.datepickerYears td.datepickerSelected, +#timeRange-desktop .datepicker tbody.datepickerMonths td.datepickerSelected { + background: #17384d; +} +#timeRange-desktop .datepicker td.datepickerSelected a { + color: white; +} +#timeRange-desktop .datepicker a:hover { + color: #88c5eb; +} +#timeRange-desktop .datepicker td.datepickerNotInMonth a:hover { + color: #999999; +} +#timeRange-desktop .datepicker .datepickerSpace div { + width: 20px; +} +#timeRange-desktop .datepicker .datepickerBlock { + vertical-align: top; +} +#timeRange-desktop .datepicker a.datepickerGoNext, +#timeRange-desktop .datepicker a.datepickerGoPrev, +#timeRange-desktop .datepicker a.datepickerMonth { + text-align: center; + height: 20px; + line-height: 20px; + float: left; +} +#timeRange-desktop .datepicker th a.datepickerGoNext, +#timeRange-desktop .datepicker th a.datepickerGoPrev { + width: 20px; + color: #666666; + display: none; +} +#timeRange-desktop .datepicker th a.datepickerMonth { + width: 114px; + display: block; +} +#timeRange-desktop .datepicker .datepickerFirstView th a.datepickerGoPrev, +#timeRange-desktop .datepicker .datepickerLastView th a.datepickerGoNext { + display: block; +} +#timeRange-desktop .datepicker th a.datepickerMonth { + margin-left: 20px; +} +#timeRange-desktop .datepicker .datepickerFirstView th a.datepickerMonth { + margin-left: 0; +} +#timeRange-desktop .datepicker table.datepickerViewDays tbody.datepickerMonths, +#timeRange-desktop .datepicker table.datepickerViewDays tbody.datepickerYears { + display: none; +} +#timeRange-desktop .datepicker table.datepickerViewMonths tbody.datepickerDays, +#timeRange-desktop .datepicker table.datepickerViewMonths tbody.datepickerYears, +#timeRange-desktop .datepicker table.datepickerViewMonths tr.datepickerDoW { + display: none; +} +#timeRange-desktop .datepicker table.datepickerViewYears tbody.datepickerDays, +#timeRange-desktop .datepicker table.datepickerViewYears tbody.datepickerMonths, +#timeRange-desktop .datepicker table.datepickerViewYears tr.datepickerDoW { + display: none; +} +#timeRange-desktop .datepicker td.datepickerDisabled a, +#timeRange-desktop .datepicker td.datepickerDisabled.datepickerNotInMonth a { + color: #555555; +} +#timeRange-desktop .datepicker td.datepickerDisabled a:hover { + color: #333333; +} +#timeRange-desktop .datepicker tbody.datepickerDays td.datepickerSpecial a { + background: #770000; + color: white; +} +#timeRange-desktop .datepicker tbody.datepickerDays td.datepickerSpecial.datepickerSelected a { + background: #aa0000; +} +#timeRange-desktop .datepicker tbody.datepickerDays td.datepickerNotInMonth.datepickerSelected { + background-color: transparent; +} +#timeRange-desktop .datepicker td.datepickerNotInMonth a span { + display: none; +} +#timeRange-desktop .datepicker td.datepickerNotInMonth a:hover span { + display: none; +} +#timeRange-desktop .datepicker tbody.datepickerDays td.datepickerNotInMonth:hover { + background-color: transparent; +} +#timeRange-desktop .datepicker .datepickerSpace div { + width: 2px; +} +#timeRange-desktop .datepicker th { + background-color: #DDDDDD; +} +#timeRange-desktop .datepicker th a.datepickerMonth { + color: #008ED6; + font-weight: normal; +} +#timeRange-desktop .datepicker th { + color: black; + font-weight: bold; +} +#timeRange-desktop .datepicker table thead tr.datepickerDoW th { + border-bottom: 1px solid #CCCCCC; +} +#timeRange-desktop .datepicker a, +#timeRange-desktop .datepicker a:hover { + color: black; +} +#timeRange-desktop .datepicker table.datepickerViewDays, +#timeRange-desktop .datepicker table.datepickerViewMonths, +#timeRange-desktop .datepicker table.datepickerViewYears { + background-color: white; +} +#timeRange-desktop .datepicker table tbody.datepickerDays td { + border: 1px solid #F7F7F7; +} +#timeRange-desktop .datepicker tbody.datepickerDays td.datepickerSelected { + background-color: #0077CC; +} +#timeRange-desktop .datepicker td.datepickerFuture a { + color: #DDDDDD; +} +#timeRange-desktop .datepicker tbody.datepickerDays td:hover { + background-color: #FFCC33; +} +#timeRange-desktop .datepicker td.datepickerToday a { + font-weight: bold; +} +#timeRange-desktop .datepicker .datepickerYears a, +#timeRange-desktop .datepicker .datepickerMonths a { + width: 42px; +} +#timeRange-desktop .datepicker .datepickerMonths td:first-child a, +#timeRange-desktop .datepicker .datepickerYears td:first-child a { + width: 39px; +} +#timeRange-desktop .datepicker th a.datepickerMonth { + width: 121px; +} +.ui-timepicker-list { + overflow-y: auto; + height: 150px; + width: 6.5em; + background: #fff; + border: 1px solid #ddd; + margin: 0; + padding: 0; + list-style: none; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + outline: none; + z-index: 10001; +} +.ui-timepicker-list.ui-timepicker-with-duration { + width: 11em; +} +.ui-timepicker-duration { + margin-left: 5px; + color: #888; +} +.ui-timepicker-list:hover .ui-timepicker-duration { + color: #888; +} +.ui-timepicker-list li { + padding: 3px 0 3px 5px; + cursor: pointer; + white-space: nowrap; + color: #000; + list-style: none; + margin: 0; +} +.ui-timepicker-list:hover .ui-timepicker-selected { + background: #fff; + color: #000; +} +li.ui-timepicker-selected, +.ui-timepicker-list li:hover, +.ui-timepicker-list:hover .ui-timepicker-selected:hover { + background: #1980EC; + color: #fff; +} +li.ui-timepicker-selected .ui-timepicker-duration, +.ui-timepicker-list li:hover .ui-timepicker-duration { + color: #ccc; +} +/* Mobile only hidden unless overriden by media.css */ +.mobile-only { + display: none; +} +#dashboard-simple-datepicker.completed { + background-color: #f0efeb; +} +/* -----------[Widgets]--------------*/ +.widget { + background-color: #ffffff; + margin-bottom: 53px; +} +.widget .btn-download { + background-color: #63625e; + border: 1px solid #dcdbd7; + border-top: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + color: white; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + display: block; + font-size: 18px; + height: 79px; + line-height: 80px; + text-align: center; + text-decoration: none; + width: 100%; +} +.widget .btn-download:hover { + background-color: #4f4e4a; +} +.widget .btn-download .caption { + display: inline-block; + vertical-align: super; +} +.widget .btn-download.no-border { + border: 0; +} +.widget .header { + background-color: #faf9f5; + border: 1px solid #dcdbd7; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + min-height: 80px; + height: auto; + width: 100%; +} +.widget .header a { + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + display: block; + height: 100%; +} +.widget .header a:hover { + background-color: #ffffff; +} +.widget .header a { + color: #63625e; + text-decoration: none; +} +.widget .header .alert-red { + display: none; +} +.widget .header .title { + font-size: 21px; + padding-left: 20px; + padding-top: 20px; +} +.widget .header .sub-title { + padding-left: 20px; +} +.widget .header .sub-title ul li { + float: left; + margin-right: 35px; +} +.widget .header .sub-title ul li .caption { + margin-left: 10px; + vertical-align: super; +} +.widget .header .sub-title ul li .caption.blue { + color: #4790d0; +} +.widget .header .sub-title ul li .caption.orange { + color: #f7ab3e; +} +.widget .header .sub-title ul li .caption.gray { + color: #63625e; +} +.widget .header .sub-title ul li.toggled { + opacity: 0.4; + filter: alpha(opacity=40); +} +.widget .header .sub-title .caption { + vertical-align: super; +} +.widget .header.no-subtitle .title { + padding-top: 30px; +} +.widget .header.has-alarm { + position: relative; +} +.widget .header.has-alarm a { + color: #f35c58; + text-decoration: none; +} +.widget .header.has-alarm .alert-red { + position: absolute; + right: 20px; + top: 28px; +} +.widget .content { + border: 1px solid #dcdbd7; + border-top: none; +} +.widget .content .graph-container { + height: 255px; + padding: 50px 28px 25px 22px; +} +.widget .content .graph-container .date-range-triggered { + height: 235px !important; +} +.widget .content .jqplot-target .jqplot-yaxis { + color: #4790d0; +} +.widget .content .jqplot-target .jqplot-y2axis { + color: #f7ab3e; +} +.widget .content .blockMsg { + top: 156px !important; +} +.widget .bottom-graph { + background-color: #f0efeb; + height: 60px; + position: relative; + text-align: right; +} +.widget .bottom-graph .graph-links { + border-top: 1px solid #dcdbd7; + height: 100%; + position: absolute; + right: 0px; + top: -1px; +} +.widget .bottom-graph .graph-links li { + background-color: #63625e; + border: none; + border-bottom: 1px solid #dcdbd7; + border-top: 1px solid #dcdbd7; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + color: #e6e5e1; + cursor: pointer; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + float: left; + height: 100%; + line-height: 62px; + margin-top: -1px; + outline: none; + text-align: center; +} +.widget .bottom-graph .graph-links li:last-child { + border-right: 1px solid #dcdbd7; +} +.widget .bottom-graph .graph-links li:first-child { + border-left: 1px solid #dcdbd7; +} +.widget .bottom-graph .graph-links li.selected { + background-color: #ffffff; + border-left: 1px solid #dcdbd7; + border-right: 1px solid #dcdbd7; + border-top-color: #ffffff; + color: #63625e; +} +.widget .bottom-graph .graph-links li.selected .divider .border { + -webkit-transition: 0s; + -moz-transition: 0s; + -o-transition: 0s; + transition: 0s; + background-color: transparent; +} +.widget .bottom-graph .graph-links li.selected + li .divider:first-child .border { + background-color: transparent; +} +.widget .bottom-graph .graph-links li:hover:not(.selected) { + background-color: #959490; +} +.widget .bottom-graph .graph-links li:hover:not(.selected) .divider .border { + background-color: #959490; +} +.widget .bottom-graph .graph-links li:hover + li .divider:first-child .border { + background-color: transparent; +} +.widget .bottom-graph .graph-links li .caption { + display: inline-block; + float: left; + height: 100%; + width: 98px; +} +.widget .bottom-graph .graph-links li .divider { + display: inline-block; + float: left; + height: 100%; + width: 0.5px; +} +.widget .bottom-graph .graph-links li .divider .border { + background-color: #4f4e4a; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + height: 40px; + margin-top: 10px; +} +.widget.VRM_Widget_Alarm .inner-container { + padding: 0 20px !important; +} +.widget.VRM_Widget_Alarm .inner-container .column { + display: inline-block; + float: left; +} +.widget.VRM_Widget_Alarm .inner-container .column.left { + width: 65%; +} +.widget.VRM_Widget_Alarm .inner-container .column.right { + width: 35%; +} +.widget.VRM_Widget_Alarm .inner-container .column .duration { + color: #4790d0; +} +.widget.VRM_Widget_Status .content .widget-content-list .row:first-child, +.widget.VRM_Widget_Status .content .widget-content-list .row:nth-child(2) { + height: 117px; +} +.widget.VRM_Widget_Status .content .widget-content-list .row:last-child { + border-bottom: none; +} +.widget.VRM_Widget_Status .content .widget-content-list .row .inner-container .label { + padding-bottom: 5px; +} +.widget.VRM_Widget_Status .content .widget-content-list .row .inner-container .value .column { + text-align: right; +} +.widget.VRM_Widget_HistoricData .content .widget-content-list .row:last-child { + border-bottom: none; +} +.widget.VRM_Widget_GPSWidget .widget-map { + height: 236px; + width: 100%; +} +.widget.VRM_Widget_VeConfigure .content { + height: 316px !important; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expand-trigger:hover:not(.expanded) { + background-color: #e6e5e1; + cursor: pointer; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section { + background-color: #e6e5e1; + border-bottom: none; + display: none; + height: 236px; + position: relative; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .close-container { + margin-bottom: 12px; + margin-top: -3px; + text-align: right; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .close-container ul { + cursor: pointer; + display: inline-block; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .close-container ul li { + display: inline-block; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .close-container ul:hover .caption { + text-decoration: underline; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .close-container .caption { + padding-top: 2px; + vertical-align: top; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .button-container { + bottom: 10px; + left: 10px; + position: absolute; + width: 100%; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .button-container .filename { + display: none; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .button-container input[type="button"] { + width: 134px; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .button-container input[type="button"]:first-child { + margin-right: 6px; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .button-container .file-wrapper input[type="file"] { + opacity: 0; + filter: alpha(opacity=0); + left: -10000px; + position: absolute; +} +.widget.VRM_Widget_VeConfigure .content .widget-content-list .row.expandable-section .inner-container .button-container #upload { + display: none; +} +.widget.VRM_Widget_State .content .graph-container, +.widget.VRM_Widget_VeBusWarningsAndAlarms .content .graph-container { + height: 310px; + padding: 40px 48px 0px 35px; +} +.widget.VRM_Widget_State .content .graph-container .jqplot-target, +.widget.VRM_Widget_VeBusWarningsAndAlarms .content .graph-container .jqplot-target { + height: 260px !important; +} +.widget.VRM_Widget_State .state-legend, +.widget.VRM_Widget_VeBusWarningsAndAlarms .state-legend { + background-color: #e6e5e1; + border: 1px solid #dcdbd7; + border-top: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + *zoom: 1; + color: #959490; + display: none; + font-size: 11px; + min-height: 60px; + padding: 20px 34px; +} +.widget.VRM_Widget_State .state-legend:before, +.widget.VRM_Widget_VeBusWarningsAndAlarms .state-legend:before, +.widget.VRM_Widget_State .state-legend:after, +.widget.VRM_Widget_VeBusWarningsAndAlarms .state-legend:after { + display: table; + content: ""; + line-height: 0; +} +.widget.VRM_Widget_State .state-legend:after, +.widget.VRM_Widget_VeBusWarningsAndAlarms .state-legend:after { + clear: both; +} +.widget.VRM_Widget_State .state-legend ul li, +.widget.VRM_Widget_VeBusWarningsAndAlarms .state-legend ul li { + float: left; + margin-right: 15px; +} +.widget.VRM_Widget_State .state-legend ul li .abbreviation, +.widget.VRM_Widget_VeBusWarningsAndAlarms .state-legend ul li .abbreviation { + color: #387dc5; + margin-right: 7px; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section { + border-bottom: none; + height: 395px; + position: relative; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .close-container { + margin-bottom: 12px; + margin-top: -3px; + text-align: right; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .close-container ul { + cursor: pointer; + display: inline-block; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .close-container ul li { + display: inline-block; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .close-container ul:hover .caption { + text-decoration: underline; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .close-container .caption { + padding-top: 2px; + vertical-align: top; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .button-container { + bottom: 10px; + left: 10px; + position: absolute; + width: 100%; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .button-container .filename { + display: none; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .button-container input[type="button"] { + width: 134px; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .button-container input[type="button"]:first-child { + margin-right: 6px; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .button-container .file-wrapper input[type="file"] { + opacity: 0; + filter: alpha(opacity=0); + left: -10000px; + position: absolute; +} +.widget.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section .inner-container .button-container #upload { + display: none; +} +.widget.VRM_Widget_PVInverterStatus .content .widget-content-list .row { + height: 98px !important; +} +.widget.VRM_Widget_PVInverterStatus .content .widget-content-list .row:last-child { + border-bottom: none; +} +.widget.list .content { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 395px; + overflow: hidden; + padding-right: 0px !important; + width: 100%; +} +.widget.list .content .widget-content-list .row { + border-bottom: 1px solid #dcdbd7; + height: 78px; + overflow: hidden; +} +.widget.list .content .widget-content-list .row .floater { + height: 50%; +} +.widget.list .content .widget-content-list .row .inner-container { + padding: 20px 20px; +} +.widget.list .content .widget-content-list .row .inner-container .label { + font-size: 18px; +} +.widget.list .content .widget-content-list .row .inner-container .label .duration { + color: #387dc5; +} +.widget.list .content .widget-content-list .row .inner-container .value { + color: #387dc5; +} +.widget.list .content .widget-content-list .row .inner-container .value .column { + float: left; + width: 33%; +} +.widget.list .content .widget-content-list .row .inner-container .value .right { + color: #f0962e; +} +.widget.list .content .widget-content-list .row .inner-container .value .voltage { + color: #387dc5; +} +.widget.list .content .widget-content-list .row .inner-container .value .current { + color: #f0962e; +} +.widget.list .content .widget-content-list .row .inner-container .value .olddata { + color: #f35c58; +} +.widget.list .content .widget-content-list .row .inner-container .datetime.alarm { + color: #f35c58; +} +.widget.list .content .widget-content-list .row.no-border-bottom { + border-bottom: none; +} +.widget.list .content.ps-active-y .ps-scrollbar-y-rail, +.widget.list .content.ps-active-y .ps-scrollbar-y-rail:hover, +.widget.list .content.ps-active-y.ps-container:hover .ps-scrollbar-y-rail { + opacity: 1; + filter: alpha(opacity=100); +} +.widget.list .content.ps-active-y.ps-container:hover .ps-scrollbar-y .row.handle { + background-color: #64635f; +} +.widget.list .content.ps-active-y.ps-container:hover .ps-scrollbar-y-rail { + background-color: #f0efeb; + border: 1px solid #dcdbd7; +} +.widget.list .content.ps-active-y .ps-scrollbar-y-rail { + background-color: rgba(240, 239, 235, 0.5); + border: 1px solid rgba(220, 219, 215, 0.5); + right: 10px !important; + margin-top: 10px; + margin-bottom: 10px; +} +.widget.list .content.ps-active-y .ps-scrollbar-y-rail .ps-scrollbar-y { + background-color: transparent; + display: table; + margin-top: -10px; +} +.widget.list .content.ps-active-y .ps-scrollbar-y-rail .ps-scrollbar-y .row { + display: table-row; +} +.widget.list .content.ps-active-y .ps-scrollbar-y-rail .ps-scrollbar-y .row .transparent-edge { + background-color: transparent; + display: table-cell; + height: 10px; + width: 100%; +} +.widget.list .content.ps-active-y .ps-scrollbar-y-rail .ps-scrollbar-y .row.handle { + background-color: #969591; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + cursor: pointer; + display: table-cell; + opacity: 1 !important; + filter: alpha(opacity=100) !important; + -webkit-transition: background-color 0.2s linear; + -moz-transition: background-color 0.2s linear; + -o-transition: background-color 0.2s linear; + transition: background-color 0.2s linear; +} +.widget.list .content.ps-active-y .ps-scrollbar-y-rail .ps-scrollbar-y .row .handle { + width: 8px; +} +/* -----------[jQuery Tags Plugin]--------------*/ +div.tagsinput { + border: 1px solid #e5e4e0; + background: #ffffff; + padding: 5px; + overflow-y: auto; +} +div.tagsinput span.tag { + display: block; + float: left; + text-decoration: none; + margin-right: 5px; + margin-bottom: 5px; + margin-top: 0px; +} +div.tagsinput span.tag a { + font-size: 0; +} +div.tagsinput input { + width: 80px !important; + margin: 0px; + border: 1px solid transparent; + padding: 5px; + background: transparent; + font-size: 15px; + color: #272622; + outline: 0px; + margin-right: 5px; + margin-bottom: 5px; + min-height: 40px; + margin-top: 0px; +} +div.tagsinput div { + display: block; + float: left; +} +div.tagsinput .tags_clear { + clear: both; + width: 100%; + height: 0px; +} +div.tagsinput .not_valid { + background: #fa716f !important; + color: #ffffff !important; +} +.VRM_Widget_CCGXDataUpload { + line-height: 19px; +} +.VRM_Widget_CCGXDataUpload .text { + border-bottom: 1px solid #dcdbd7; +} +.VRM_Widget_CCGXDataUpload .text:last-child { + border: none; +} +.VRM_Widget_CCGXDataUpload #ccgx-upload, +.VRM_Widget_CCGXDataUpload #inserted-file, +.VRM_Widget_CCGXDataUpload #ccgx-fileinput { + display: none; +} +.VRM_Widget_CCGXDataUpload .filename { + cursor: pointer; +} +.VRM_Widget_CCGXDataUpload .filename li { + float: left; + margin: 0 5px; +} +.VRM_Widget_CCGXDataUpload .filename .caption { + max-width: 210px; + overflow: hidden; + text-overflow: ellipsis; + padding: 3px 0 0 0; +} +.VRM_Widget_CCGXDataUpload .content { + overflow: visible !important; +} +.VRM_Widget_CCGXDataUpload .content .widget-content-list .row.expandable-section { + height: 316px !important; +} +.VRM_Widget_CCGXDataUpload #inserted-file { + margin: 10px 0 0 0; +} +.VRM_Widget_CCGXDataUpload .insert-ccgx-file { + background-color: #63625e; + border: 1px solid #63625e; + border-top: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + color: white; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + display: block; + font-size: 18px; + height: 79px; + line-height: 80px; + text-align: center; + text-decoration: none; + width: 100%; +} +.VRM_Widget_CCGXDataUpload .insert-ccgx-file:hover { + background-color: #4f4e4a; +} +.VRM_Widget_CCGXDataUpload .insert-ccgx-file .caption { + display: inline-block; + vertical-align: super; +} +.VRM_Widget_CCGXDataUpload .insert-ccgx-file .inverted { + -webkit-transform: rotate(180deg); + /* Opera, Chrome, and Safari */ + -ms-transform: rotate(180deg); + /* IE 9 */ + transform: rotate(180deg); +} +.leaflet-control-container .leaflet-bottom.leaflet-right { + z-index: 3; +} +.leaflet-marker-text { + margin-top: -5px; + color: #4790d0; + font-size: 21px; + font-family: Arial, sans-serif; + font-weight: bold; + font-style: normal; + text-decoration: none; + text-align: center; + line-height: 64px; +} +.leaflet-marker-text-red { + color: #fa716f; +} +.icon-pointer-blue-empty { + display: inline-block; + width: 75px; + height: 64px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -472px 0px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .icon-pointer-blue-empty { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.icon-pointer-red-empty { + display: inline-block; + width: 75px; + height: 64px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -547px 0px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .icon-pointer-red-empty { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +body.map-none .map-view { + height: 65px; + background-color: rgba(99, 98, 94, 0.1); +} +body.map-none .map-view .top-shadow, +body.map-none .map-view .bottom-shadow { + display: none; +} +body.map-none.embedded .breadcrumb { + background-color: #E6E5E1; +} +body.map-none.embedded #vrm-tabs { + right: 0; +} +body.map-none.embedded #vrm-tabs li.active { + border-top: 1px solid #dcdbd7; + border-left: 1px solid #dcdbd7; + border-right: 1px solid #dcdbd7; +} +#updateForm img.gravatar, +#updateGravatarForm img.gravatar { + height: 80px; + width: 80px; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; +} +#updateForm div.gravatar-wrapper, +#updateGravatarForm div.gravatar-wrapper { + height: 80px; + width: 80px; + position: relative; + text-align: center; + vertical-align: middle; + color: #4790d0; + text-transform: uppercase; + font-size: 14px; + line-height: 80px; + border: none !important; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +#updateForm div.gravatar-wrapper img.gravatar, +#updateGravatarForm div.gravatar-wrapper img.gravatar { + position: absolute !important; + top: 0 !important; + left: 0 !important; + height: 78px !important; + width: 78px !important; + float: none !important; + margin: 0 !important; + border-width: 1px !important; + border-style: solid !important; + border-color: #dcdbd7; + background: none !important; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +#updateForm img.gravatar, +#updateGravatarForm img.gravatar, +#updateForm div.gravatar-wrapper img.gravatar, +#updateGravatarForm div.gravatar-wrapper img.gravatar, +#updateForm div.gravatar-wrapper, +#updateGravatarForm div.gravatar-wrapper { + margin-bottom: 20px; + display: inline-block; +} +#updateForm .change-gravatar, +#updateGravatarForm .change-gravatar { + float: right; + margin-top: 23px; +} +#updateGravatarForm { + display: none; +} +#updateGravatarForm .gravatar-file-upload { + cursor: pointer; +} +#updateGravatarForm .gravatar-file-upload .sprite-icons { + position: absolute; +} +#updateGravatarForm .gravatar-upload-label { + margin: 2px 0 2px 40px; + display: inline-block; +} +.user.update .form-tabs.profile, +.user.two-step-update .form-tabs.profile, +.user.two-step-new .form-tabs.profile, +.user.two-step-verify .form-tabs.profile, +.user.two-step-done .form-tabs.profile, +.user.update-dealer .form-tabs.profile { + margin-top: 0px; +} +/* need new section for styling settings alarms form */ +#forms-container-alarms-settings label { + line-height: 44px; +} +#forms-container-alarms-settings label[class="required"]:after { + content: "*"; + color: #4790d0; +} +#forms-container-alarms-settings .custom-radio label { + line-height: 21px; +} +#forms-container-alarms-settings .settings-alarm-header { + background-color: #faf9f5; + border: 1px solid #dcdbd7; + padding: 19px; +} +#forms-container-alarms-settings .settings-alarm-toggle { + border-top: 1px solid #f0efeb; + cursor: pointer; + position: relative; +} +#forms-container-alarms-settings .settings-alarm-toggle.one-line { + padding: 19px 45px 19px 80px; +} +#forms-container-alarms-settings .settings-alarm-toggle.two-lines { + padding: 8px 45px 8px 80px; +} +#forms-container-alarms-settings .settings-alarm-toggle.has-error:first-child::before { + position: absolute; + top: 18px; + left: -35px; + content: ' '; + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -48px -192px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + #forms-container-alarms-settings .settings-alarm-toggle.has-error:first-child::before { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +#forms-container-alarms-settings .settings-alarm-toggle .device-name { + font-size: 18px; +} +#forms-container-alarms-settings .settings-alarm-toggle .alarm-name { + display: block; + color: #4790d0; + font-size: 15px; +} +#forms-container-alarms-settings .settings-alarm-toggle .alarm-name.gray, +#forms-container-alarms-settings .settings-alarm-toggle .alarm-name .gray { + color: #63625e; +} +#forms-container-alarms-settings .settings-alarm-toggle .toggle-icon { + position: absolute; + right: 20px; + top: 18px; +} +#forms-container-alarms-settings .settings-alarm-toggle .device-icon { + position: absolute; + left: 18px; + top: 7px; +} +#forms-container-alarms-settings .settings-alarm-group { + border: 1px solid #dcdbd7; + background-color: #faf9f5; + border-top: 0; + border-bottom: 0; +} +#forms-container-alarms-settings .settings-alarm-group li.has-alarm-error { + border-left: 3px solid #fa716f; +} +#forms-container-alarms-settings .settings-alarm-group:first-child { + border-top: 1px solid #dcdbd7; +} +#forms-container-alarms-settings .settings-alarm-group:first-child .settings-alarm-toggle:first-child { + border-top: 0; +} +#forms-container-alarms-settings .settings-alarm-group .settings-alarm-toggle .icon-toggle { + background: url('/img/icon/icon-open.png') center center no-repeat; +} +#forms-container-alarms-settings .settings-alarm-group.active { + background-color: #ffffff; +} +#forms-container-alarms-settings .settings-alarm-group.active .settings-alarm-toggle { + border-bottom: 1px solid #f0efeb; +} +#forms-container-alarms-settings .settings-alarm-group.active .settings-alarm-toggle .icon-toggle { + background: url('/img/icon/icon-close.png') center center no-repeat; +} +#forms-container-alarms-settings .settings-alarm-group.below-alarms-fieldset-element { + border-top: 1px solid #f0efeb; + border-bottom: 1px solid #dcdbd7; + min-height: 60px; +} +#forms-container-alarms-settings .settings-alarm-group.below-alarms-fieldset-element a { + line-height: 60px; + margin-left: 80px; +} +#forms-container-alarms-settings .settings-alarm-group li:last-child { + margin-bottom: 19px; +} +#forms-container-alarms-settings .settings-alarm-description { + padding: 19px 19px 19px 80px; + display: none; +} +#forms-container-alarms-settings .settings-alarm-element { + padding: 19px 19px 0px 80px; + width: 240px; + float: left; + display: none; +} +#forms-container-alarms-settings .settings-alarm-element.has-error input[type="text"], +#forms-container-alarms-settings .settings-alarm-element.has-error input[type="email"], +#forms-container-alarms-settings .settings-alarm-element.has-error input[type="password"], +#forms-container-alarms-settings .settings-alarm-element.has-error input[type="tel"], +#forms-container-alarms-settings .settings-alarm-element.has-error input[type="url"], +#forms-container-alarms-settings .settings-alarm-element.has-error textarea { + border-color: #fa716f; + color: #fa716f; +} +#forms-container-alarms-settings .settings-alarm-element ul.errors li { + color: #fa716f; +} +#forms-container-alarms-settings .settings-alarm-delete { + width: 100%; +} +#forms-container-alarms-settings .settings-alarm-element:nth-child(even) { + padding: 19px 19px 0 19px; +} +#forms-container-alarms-settings .settings-alarm-toggle .settings-alarm-element:nth-child(even) { + padding: 19px 19px 0 19px; +} +#forms-container-alarms-settings .settings-alarm-toggle.no-description ~ .settings-alarm-element:nth-child(even) { + padding: 19px 19px 0 80px; +} +#forms-container-alarms-settings .settings-alarm-toggle.no-description ~ .settings-alarm-element:nth-child(odd) { + padding: 19px 19px 0 19px; +} +#forms-container-alarms-settings .settings-alarm-element:nth-child(2) { + padding-top: 5px; +} +.VRM_Widget_SiteSummary { + color: #63625e; +} +/* -----------[Screensave]--------------*/ +.screensaver { + background-color: #272622; + height: 100%; + left: 0; + position: fixed; + top: 0; + visibility: hidden; + width: 100%; + z-index: 10000; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; + opacity: 0; + filter: alpha(opacity=0); +} +.screensaver.visible { + visibility: visible; + opacity: 1; + filter: alpha(opacity=100); +} +.screensaver.on-solar .screensaver-text { + color: #f7ab3e; +} +.screensaver.on-solar .screensaver-icon:before { + color: #f7ab3e; + content: '\e603'; +} +.screensaver.on-generator .screensaver-text { + color: #4790d0; +} +.screensaver.on-generator .screensaver-icon:before { + margin-left: -50%; + color: #4790d0; + content: '\e600'; +} +.screensaver.on-battery .screensaver-text { + color: #4790d0; +} +.screensaver.on-battery .screensaver-icon:before { + color: #4790d0; + content: '\e601'; +} +.screensaver.on-grid .screensaver-text { + color: #8bc964; +} +.screensaver.on-grid .screensaver-icon:before { + color: #8bc964; + content: '\e602'; +} +.screensaver-icon { + left: 50%; + position: absolute; + top: 50%; +} +.screensaver-icon:before { + font-family: 'screensaver-icons'; + margin-top: 60%; + position: absolute; +} +.screensaver-text { + left: 50%; + position: absolute; + text-transform: uppercase; + top: 50%; +} +.screensaver-text-grid-type { + color: #ffffff; + font-family: 'MuseoSans-700'; +} +.screensaver-company-logo { + bottom: 0; + position: absolute; + right: 0; +} +.screensaver-company-logo img { + height: 100%; + width: 100%; +} +.whitelabel-active .screensaver-company-logo { + display: none; +} +.beta-badge { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: inline-block; + font-size: 13px; + line-height: 11px; + min-width: 50px; + min-height: 20px; + padding-top: 5px; + text-decoration: none; + text-align: center; + background-color: #f7ab3e; + color: #ffffff; + top: -2px; + position: relative; + margin-left: 10px; +} +/* -----------[Modal popups]--------------*/ +.modal-popup-container { + background-color: #ffffff; + border: 1px solid #e5e4e0; + margin: 20px auto; + max-width: 560px; + padding: 20px 0; + position: relative; + width: auto; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +#modal-popup-container-share #guest-account-content { + margin-bottom: 25px; + margin-top: 25px; +} +#modal-popup-container-share #guest-account-content .modal-popup-content-row, +#modal-popup-container-share #guest-account-content .modal-popup-content-row-divider { + overflow: hidden; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +#modal-popup-container-share #guest-account-content .modal-popup-content-row:not(.visible), +#modal-popup-container-share #guest-account-content .modal-popup-content-row-divider:not(.visible) { + height: 0; + min-height: 0; + margin: 0; + padding: 0; +} +#modal-popup-container-share #guest-account-content .modal-popup-content-left-right-container { + min-height: 50px; +} +#modal-popup-container-share #guest-account-content .modal-popup-content-left-right-container .modal-popup-content-left-max { + line-height: 40px; +} +#modal-popup-container-share #guest-account-content .modal-popup-content-left-right-container .modal-popup-content-left-max input { + line-height: 10px; +} +#modal-popup-container-share #guest-account-content .modal-popup-content-left-right-container .modal-popup-content-left-max input::-webkit-input-placeholder { + line-height: normal; +} +#modal-popup-container-share #invite-user-content { + margin-top: 30px; +} +#modal-popup-container-share #invite-user-content .modal-popup-content-left-max input, +#modal-popup-container-share #invite-user-content .modal-popup-content-left-max textarea { + margin-bottom: 10px; +} +#modal-popup-container-share .invite-user-message { + margin-top: 5px; +} +.modal-popup-content { + padding: 0 49px; +} +.modal-popup-content h1 { + margin-bottom: 21px; + margin-top: 28px; +} +.modal-popup-tab-content.hidden { + display: none; +} +.modal-popup-tabs-list { + margin-bottom: -1px; +} +.modal-popup-tabs-item { + cursor: pointer; + float: left; + font-size: 18px; + margin-right: 20px; + padding-bottom: 3px; + padding-right: 10px; +} +.modal-popup-tabs-item:hover { + border-bottom: 1px solid #4790d0; +} +.modal-popup-tabs-item.selected { + border-bottom: 2px solid #4790d0; + color: #4790d0; + cursor: default; +} +.modal-popup-tabs-container { + border-bottom: 1px solid #e5e4e0; +} +.modal-popup-content-full-width { + margin-bottom: 10px; +} +.modal-popup-content-left-right-container { + position: relative; +} +.modal-popup-content-left-right-container.password-container { + height: 0; + min-height: 0 !important; + overflow: hidden; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + transition: 0.2s; +} +.modal-popup-content-left-right-container.password-container.visible { + height: 62px; +} +.modal-popup-content-left-right-container.renew-container .modal-popup-content-left-max { + height: 40px; + line-height: 40px; +} +.modal-popup-content-left-max { + padding-right: 90px; +} +.modal-popup-content-left-max input, +.modal-popup-content-left-max textarea { + margin-bottom: 5px; + width: 100%; +} +.modal-popup-content-right-control { + position: absolute; + right: 0; + top: 0; + width: 80px; +} +.modal-popup-content-right-control .custom-toggle.slide-colors { + margin-top: 5px; +} +.modal-popup-content-right-control input { + width: 100%; +} +.modal-popup-content-right-control.completed:before { + content: ''; + left: 28px; + position: absolute; + top: 9px; + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: 0px -216px; +} +@media print, (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 3/2), (min--moz-device-pixel-ratio: 1.25), (-moz-min-device-pixel-ratio: 1.25), (-ms-min-device-pixel-ratio: 1.25), (min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { + .modal-popup-content-right-control.completed:before { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +.modal-popup-content-row-divider { + background-color: #dcdbd7; + height: 1px; + margin-bottom: 15px; + margin-top: 15px; +} +.modal-popup-bottom-button-row { + padding-bottom: 29px; +} +.modal-popup-bottom-button-row .btn { + margin-top: 5px; +} +.modal-popup-bottom-button-row a { + margin-top: 16px; +} +.loading-spinner { + background-image: url('/img/loader-circle.gif'); + background-repeat: no-repeat; + background-position: center center; +} +#forms-container-system-overview .btn.site-diagnostics { + margin-right: 20px; +} +/* -----------[Remote Console]--------------*/ +.remote-console-trigger { + float: right; +} +#vrm-tabs-content #remoteConsoleButton { + margin-top: 10px; +} +.remote-console-popup-container { + background-color: #faf9f5; + border: none; + max-width: 783px; + overflow: hidden; + padding: 0; + position: relative; + width: 620px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.remote-console-popup-container.password-needed .remote-console-login { + display: block; +} +.remote-console-popup-container.password-needed .remote-console-status { + display: none; +} +.remote-console-popup-container.password-needed .remote-console-logged-in { + display: none; +} +.remote-console-popup-container.password-needed .mfp-close { + color: #faf9f5; +} +.remote-console-popup-container.logged-in { + width: 783px; + /* This is needed to prevent the canvas becoming tiny on some occasions.. */ +} +.remote-console-popup-container.logged-in .remote-console-login { + display: none; +} +.remote-console-popup-container.logged-in .remote-console-status { + display: none; +} +.remote-console-popup-container.logged-in .remote-console-logged-in { + display: block; +} +.remote-console-popup-container.logged-in #remote-console-canvas { + height: 100% !important; + width: 100% !important; +} +.remote-console-popup-container.logged-in .mfp-close { + color: #faf9f5; +} +.remote-console-popup-container .mfp-close { + color: #4790d0; +} +.remote-console-login { + display: none; + height: 312px; + padding-right: 240px; +} +.remote-console-login .remote-console-display-container { + height: 100%; + text-align: center; + width: 100%; +} +.remote-console-login .remote-console-controls-container { + width: 240px; +} +.remote-console-login .remote-console-controls-title { + margin-top: 92px; + text-align: left; +} +.remote-console-status { + text-align: center; + height: 312px; +} +.remote-console-status.notification .remote-console-login-icon.notification { + display: inline-block; +} +.remote-console-status.alarm .remote-console-login-icon.alarm { + display: inline-block; +} +.remote-console-status .remote-console-login-icon { + display: none; +} +.remote-console-status .remote-console-login-icon.alarm { + fill: #fa716f; +} +.remote-console-status .remote-console-login-icon.alarm path { + fill: #fa716f !important; +} +.remote-console-status .remote-console-login-title { + margin-bottom: 10px; +} +.remote-console-status-content { + margin-top: -50px; + position: absolute; + top: 50%; + width: 100%; +} +.remote-console-logged-in { + display: none; +} +.remote-console-login-contents { + display: inline-block; + margin: 0 auto; + padding-top: 41px; + text-align: center; +} +.remote-console-login-icon { + display: inline-block; + height: 32px; + width: 32px; +} +.remote-console-login-icon path { + fill: #4790d0 !important; +} +.remote-console-login-title { + font-family: 'MuseoSans-700'; + margin-bottom: 37px; + margin-top: 11px; +} +.remote-console-login-fields-container { + text-align: left; +} +.remote-console-login-fields { + margin-top: 4px; +} +#remote-console-password { + margin-right: 5px; + width: 174px; +} +#remote-console-login { + line-height: 16px; +} +#remote-console-login .svg { + fill: #faf9f5; + height: 16px; + width: 16px; +} +.custom-check-and-radio { + margin-top: 20px; +} +.remote-console-title { + color: #4790d0; + display: none; + font-family: 'MuseoSans-700'; + margin-bottom: 0; + margin-top: 20px; + padding-left: 20px; +} +.remote-console-display-container { + display: table; +} +.remote-console-display { + background-color: #faf9f5; + padding: 20px; +} +.remote-console-display-inner { + position: relative; + border: 1px solid #e5e4e0; + height: 272px; + width: 480px; +} +.remote-console-display-inner .remote-console-status-text { + position: absolute; + top: 40%; + left: 0; + width: 100%; + text-align: center; + z-index: 9999; + color: #959490; +} +.remote-console-controls-container { + background-color: #4790d0; + height: 100%; + position: absolute; + right: 0; + top: 0; + width: 262px; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-user-select: none +} +.remote-console-controls-text { + padding-left: 20px; + padding-right: 20px; +} +.remote-console-controls-title { + margin-bottom: 0; + margin-top: 33px; +} +.remote-console-controls-subtitle { + line-height: 21px; + margin-top: 4px; +} +.remote-console-controls-explanation { + color: #f3f2ee; + line-height: 21px; + margin-top: 23px; +} +.remote-console-controls-title, +.remote-console-controls-subtitle { + color: #f3f2ee; + text-align: center; +} +.remote-console-controls { + bottom: 0; + height: 187px; + left: 0; + padding-bottom: 25px; + padding-top: 25px; + position: absolute; + width: 100%; +} +.remote-console-controls-row { + padding-bottom: 5px; + padding-top: 5px; + text-align: center; +} +.remote-console-controls-row:first-child { + /*margin-bottom: 20px;*/ +} +.remote-console-control-button { + cursor: pointer; + height: 40px; + margin-left: 3px; + margin-right: 3px; + padding: 0; + position: relative; + width: 40px; +} +.remote-console-control-button.wide { + width: 65px; +} +.remote-console-control-button.extra-wide { + width: 140px; +} +.remote-console-control-button .remote-console-control-icon { + color: #4790d0; + display: inline-block; + fill: #4790d0; + font-size: 17px; + height: 16px; + line-height: 20px; + margin-top: 11px; + width: 16px; +} +.remote-console-control-button .remote-console-control-icon.text { + left: 19px; + position: absolute; + top: -3px; + width: auto; +} +.remote-console-control-button .remote-console-control-icon path { + fill: #4790d0; +} +.remote-console-rotate-message-container { + background-color: #e5e4e0; + display: none; + height: 100%; + position: fixed; + top: 0; + width: 100%; + z-index: 100000; +} +.rotate-message-contents { + margin-top: -66px; + position: absolute; + text-align: center; + top: 50%; + width: 100%; +} +.rotate-message-icon { + display: inline-block; + height: 72px; + margin-bottom: 20px; + width: 72px; +} +.rotate-message-icon path { + fill: #4790d0; +} +.rotate-message-title { + font-family: 'MuseoSans-700'; + margin: 0; +} +#privateShareButtonMobile, +#remoteConsoleButtonMobile { + background-color: #8bc964; +} +#privateShareButtonMobile:hover, +#remoteConsoleButtonMobile:hover { + background-color: #72b84c; +} +/* -----------[Media queries for desktop]--------------*/ +@media screen and (min-width: 960px) { + .hide-desktop { + display: none; + } +} +/* -----------[Media queries for mobile/responsive]--------------*/ +@media screen and (max-width: 959px) { + .hide-responsive { + display: none; + } + .site-overview-controls .container-inner .grid-item.five-columns-width, + .site-overview-controls .container-inner .grid-item.six-columns-width, + .site-overview-controls .container-inner .grid-item.seven-columns-width, + .site-overview-controls .container-inner .grid-item.eight-columns-width, + .site-overview-controls .container-inner .grid-item.nine-columns-width, + .site-overview-controls .container-inner .grid-item.ten-columns-width, + .site-overview-controls .container-inner .grid-item.eleven-columns-width, + .site-overview-controls .container-inner .grid-item.twelve-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 300px; + } + .site-overview-controls .container-inner .grid-item.view-toggle .view-toggle-container { + display: none; + } + .this-is-the-homepage { + display: none; + } + .vrm-date-range-selection { + margin-top: 40px; + } + .date-range-selectors { + height: 65px; + } + .date-range-selectors .current, + .date-range-selectors .previous { + display: none; + } + .date-range-selectors-advanced { + margin-bottom: 4px; + } + .date-range-selectors-advanced .section { + margin-bottom: 7px; + margin-left: 0px; + width: 100%; + } + .date-range-selectors-advanced .section .mobile-caption { + display: inline-block; + float: left; + line-height: 54px; + } + .date-range-selectors-advanced .section .vrm-date-time-picker { + float: right; + } + .date-range-selectors-advanced .section .vrm-date-time-picker .picker { + left: -80px; + } + .date-range-selectors-advanced .section.set-time { + display: none; + height: 0px; + margin-bottom: 11px; + } + .date-range-selectors-advanced .section.set-time .btn { + float: left; + } + .date-range-selectors .selector-list > li:first-child { + float: left; + } + .date-range-selectors .selector-list > li:last-child { + float: right; + } + .date-range-selectors .selector-list > li, + .date-range-selectors-advanced .selector-list > li { + margin-left: 0px; + } + .date-range-selectors .custom_date_selector_container, + .date-range-selectors-advanced .custom_date_selector_container { + float: left; + padding-left: 0px; + } + .picker { + width: 300px; + } + #alarms { + display: none; + } + #mobile-alarms { + display: block; + } + #mobile-alarms .alarmCleared, + #mobile-alarms .alarmState { + text-align: right; + } + #mobile-alarms tbody tr td { + border-bottom: 0px; + padding-bottom: 0px; + } + #mobile-alarms tbody tr:nth-child(3n) td { + border-bottom: 1px solid #dcdbd7; + padding-top: 0px; + padding-bottom: 18px; + width: 320px; + } + #mobile-alarms tbody tr:nth-child(3n) td .alarmCleared { + float: right; + } + .pagination .previous, + .pagination .next { + display: none; + } + .pagination ul li { + padding: 7px; + } + .container.site-overview-content { + margin-bottom: 40px; + } + .container .container-inner { + width: 320px; + } + .container .container-inner .secondary-controls { + display: none; + } + .container .container-inner .grid-item.eight-columns-width, + .container .container-inner .grid-item.twelve-columns-width { + margin-left: 10px; + margin-right: 10px; + width: 300px; + } + .container .container-inner .grid-item.offset-four { + margin-left: 10px; + } + .container .container-inner .over-google-map { + position: relative; + top: 0px; + } + .container .container-inner .tab-select { + display: block; + margin-top: 14px; + } + .container.top-menu { + display: none; + } + .container.breadcrumb { + background-color: #e6e5e1; + } + .container.breadcrumb .buttons-container { + display: none; + } + .container.breadcrumb .btn { + display: none; + } + .container.breadcrumb .site-select { + display: none; + } + .container.breadcrumb .breadcrumb-site-title { + display: block; + } + .container .breadcrumb-buttons-container { + padding-bottom: 12px; + } + .vrm.site.index .container.breadcrumb + .clearfix { + display: none; + } + .container.sites-statistics { + background-color: #f0efeb; + border-bottom: 1px solid #dcdbd7; + color: #959490; + display: block; + height: 80px; + } + .container.sites-statistics .grid-item { + float: none; + } + .container.sites-statistics .results .total { + padding-left: 20px; + } + .container.sites-statistics .results .alarms { + color: #f35c58; + } + .container.map-view { + display: none; + } + .container.map-overview .map { + height: 230px; + width: 100%; + } + .container.site-overview { + padding-top: 15px; + } + .container.site-view .container-inner #vrm-tabs { + display: none; + } + .container #vrm-tabs-content .tab-pane#advanced .section-heading { + margin: 35px 0 7px 0; + } + .container #vrm-tabs-content .tab-pane#advanced .download-data-container { + position: static; + top: 0; + left: 0; + float: left; + margin-bottom: 14px; + padding-left: 24px; + max-height: none; + } + .container #vrm-tabs-content .tab-pane#advanced .download-data-container .download-blue { + float: left; + } + .container #vrm-tabs-content .tab-pane#advanced .download-data-container .link-text { + float: right; + clear: right; + width: 145px; + padding: 0; + } + .container #vrm-tabs-content .tab-pane .content .last-update-info { + margin-bottom: 8px; + padding-right: 0px; + position: relative; + top: 0px; + } + .container #vrm-tabs-content .tab-pane .content .last-update-info > span:first-child { + padding-left: 27px; + } + .container #vrm-tabs-content .tab-pane .content .last-update-info .pull-right { + float: left; + } + .container #vrm-tabs-content .tab-pane .content .last-update-info .sprite-icons { + left: 0px; + position: absolute; + } + .container #vrm-tabs-content .tab-pane .content .section-heading > span, + .container #vrm-tabs-content .tab-pane .content .section-heading h2 { + display: none; + } + .container #vrm-tabs-content .tab-pane .content .mobile-graph-refresh { + display: inline-block; + width: 300px; + margin: 10px; + } + .container #vrm-tabs-content .tab-pane .content .progress-meters-container { + height: auto; + margin-bottom: 40px; + } + .container #vrm-tabs-content .tab-pane .content .progress-meters-container .progress-meter-container { + height: 150px !important; + padding: 20px 20px 48px 20px; + } + .container #vrm-tabs-content .tab-pane .content .progress-meters-container .progress-meter-container .progress-meter .inner-meter-container .icon, + .container #vrm-tabs-content .tab-pane .content .progress-meters-container .progress-meter-container .deviation-meter .inner-meter-container .icon { + left: auto !important; + right: 0px !important; + top: -30px !important; + } + .container #vrm-tabs-content .tab-pane .content .section-graph { + margin-bottom: 40px; + } + .container #vrm-tabs-content .tab-pane .content .section-graph .dashboard-graph { + height: 224px !important; + margin: 40px 20px 30px 10px !important; + } + .container #vrm-tabs-content .tab-pane .content .section-graph .dashboard-legend { + height: 90px !important; + } + .container #vrm-tabs-content .tab-pane .content .section-graph .dashboard-legend ul li { + margin-bottom: 9px; + margin-right: 0px !important; + width: 130px; + } + .container #vrm-tabs-content #solar-yield .content .section-graph .dashboard-graph.move-last-tick-to-front .jqplot-xaxis canvas:last-child, + .container #vrm-tabs-content #consumption .content .section-graph .dashboard-graph.move-last-tick-to-front .jqplot-xaxis canvas:last-child, + .container #vrm-tabs-content #batteries .content .section-graph .dashboard-graph.move-last-tick-to-front .jqplot-xaxis canvas:last-child { + left: 10px !important; + } + .container #vrm-tabs-content #settings .content .form-tabs-container { + margin-bottom: 40px; + margin-left: 10px; + margin-right: 10px; + width: 300px; + } + .container #vrm-tabs-content #settings .content .form-tabs-container .form-tabs { + margin-top: 14px; + } + .container #vrm-tabs-content #settings .content .form-tabs-container .form-tabs li a { + padding-left: 20px; + text-align: left; + } + .container #vrm-tabs-content #settings .content .form-tabs-container .btn { + width: 300px; + } + .container #vrm-tabs-content #settings .content .form-tabs-container .btn.force-width { + width: 300px !important; + } + .container #vrm-tabs-content #settings .content .form-tabs-container .mobile-title { + display: block; + margin-bottom: 0px; + margin-top: 50px; + } + .container #vrm-tabs-content #settings .content .remove-site-question .btn { + width: 300px; + } + .container #vrm-tabs-content #settings .content .remove-site-question .btn.force-width { + width: 300px !important; + } + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-location .location-map-container #location-map { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 300px; + width: 300px; + } + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-summarywidget .summary-widget-list-enabled-caption { + margin-bottom: 13px; + padding-right: 0; + text-align: left; + } + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-summarywidget .summary-widget-list-enabled-caption, + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-summarywidget .summary-widget-list-disabled-caption { + margin-top: 17px; + padding-left: 37px; + } + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-summarywidget .summary-widget-list-enabled-caption .sprite-icons, + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-summarywidget .summary-widget-list-disabled-caption .sprite-icons { + left: 15px; + } + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-geofence.fieldset-geofence-map { + width: auto; + } + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-geofence.fieldset-geofence-map .form-element { + width: auto !important; + } + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-geofence.fieldset-geofence-map .geofence-map-container { + width: auto; + } + .container #vrm-tabs-content #settings .content #form-container-sitesettings #sitesettings #fieldset-geofence.fieldset-geofence-map .geofence-map-container #geofence-map { + width: auto; + } + .container #vrm-tabs-content #settings .content .sortable-widget-list-enabled-caption { + margin-bottom: 13px; + padding-right: 0; + text-align: left; + } + .container #vrm-tabs-content #settings .content .sortable-widget-list-disabled-caption { + margin-bottom: 13px !important; + margin-top: 16px !important; + } + .container #vrm-tabs-content #settings .content .sortable-widget-list-enabled-caption, + .container #vrm-tabs-content #settings .content .sortable-widget-list-disabled-caption { + padding-left: 37px; + } + .container #vrm-tabs-content #settings .content .sortable-widget-list-enabled-caption .sprite-icons, + .container #vrm-tabs-content #settings .content .sortable-widget-list-disabled-caption .sprite-icons { + left: 15px; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-alarms-admin-settings .form-input-list .row, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-alarms-admin-settings .form-input-list .row, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-alarms-admin-settings .form-input-list .row, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-user-settings-container .form-input-list .row, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-user-settings-container .form-input-list .row, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-user-settings-container .form-input-list .row, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-widget-settings .form-input-list .row, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-widget-settings .form-input-list .row, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-widget-settings .form-input-list .row { + height: auto; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label .alternative-display, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label .alternative-display, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label .alternative-display, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label .alternative-display, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label .alternative-display, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label .alternative-display, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle label .alternative-display, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle label .alternative-display, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle label .alternative-display { + position: relative; + left: 0; + margin-top: 10px; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label > a, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label > a, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle label > a, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label > a, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label > a, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle label > a, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle label > a, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle label > a, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle label > a { + top: 0; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .caption, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .caption, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .caption, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle.adjust-margin label .caption, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle.adjust-margin label .caption, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle.adjust-margin label .caption, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .caption, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .caption, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .caption { + display: inline-block; + margin-top: 10px; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .email-caption, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .email-caption, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-alarms-admin-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .email-caption, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle.adjust-margin label .email-caption, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle.adjust-margin label .email-caption, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-user-settings-container .form-input-list .row .inner-container .custom-toggle.adjust-margin label .email-caption, + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .email-caption, + .container #vrm-tabs-content #settings .content #form-container-user-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .email-caption, + .container #vrm-tabs-content #settings .content #form-container-widget-settings #form-widget-settings .form-input-list .row .inner-container .custom-toggle.adjust-margin label .email-caption { + display: inline-block; + min-width: 200px; + margin-top: 6px; + } + .container #vrm-tabs-content #settings .content #form-container-user-settings #toggleInviteForm, + .container #vrm-tabs-content #settings .content #form-alarms-admin-settings #toggleInviteForm { + margin-bottom: 20px; + position: static; + width: 300px; + } + .container #vrm-tabs-content #settings .content #form-container-user-settings #toggleInviteForm.force-width, + .container #vrm-tabs-content #settings .content #form-alarms-admin-settings #toggleInviteForm.force-width { + width: 300px !important; + } + .container #vrm-tabs-content #settings .content #form-container-user-settings #inviteFormExplanation, + .container #vrm-tabs-content #settings .content #form-alarms-admin-settings #inviteFormExplanation { + position: static; + } + .container #vrm-tabs-content #settings .content #form-container-user-settings .header .caption-right, + .container #vrm-tabs-content #settings .content #form-alarms-admin-settings .header .caption-right { + float: none; + text-transform: lowercase; + } + .container #vrm-tabs-content #settings .content #form-alarms-admin-settings .header { + height: auto; + padding-top: 7px; + padding-bottom: 6px; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings .above-fieldset-element { + margin-bottom: 20px; + position: static; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings .above-fieldset-element .btn { + margin-left: 0; + margin-bottom: 12px; + width: 300px; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings .above-fieldset-element .btn.force-width { + width: 300px !important; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings .below-alarms-fieldset-element { + text-align: center; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings .below-alarms-fieldset-element a { + margin-left: 0; + width: 300px; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings .below-alarms-fieldset-element a.force-width { + width: 300px !important; + } + .container #vrm-tabs-content #settings .content #forms-container-alarms-settings .hint { + display: none; + } + /* -----------[Widgets]--------------*/ + .widget .header .sub-title ul li:nth-child(2) { + margin-top: -8px; + } + .widget .bottom-graph .graph-links li.selected:nth-child(2) .caption { + width: 97px; + } + .widget.VRM_Widget_State .content .graph-container, + .widget.VRM_Widget_VeBusWarningsAndAlarms .content .graph-container { + height: 255px; + padding: 50px 28px 25px 22px; + } + .widget.VRM_Widget_State .state-legend, + .widget.VRM_Widget_VeBusWarningsAndAlarms .state-legend { + padding: 20px 22px; + } + .widget .content.ps-container { + height: auto; + } + #forms-container-alarms-settings .settings-alarm-element { + width: 188px; + float: none; + padding: 0px 19px 19px 80px !important; + } + #forms-container-alarms-settings .settings-alarm-element:nth-child(2) { + padding-top: 5px !important; + } + /* -----------[Mobile menu]--------------*/ + .mobile-menu-open-handle { + border: 1px solid #dcdbd7; + cursor: pointer; + display: block; + height: 40px; + margin-right: 0; + position: absolute; + right: 10px; + top: 20px; + width: 40px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + } + .mobile-menu-open-handle .sprite-icons { + margin-left: 8px; + margin-top: 8px; + } + body.mobile-menu-open { + overflow: auto; + } + body.mobile-menu-open .mobile-menu-open-handle { + display: none; + } + body.mobile-menu-open .mobile-menu-close-handle { + right: 20px; + } + body.mobile-menu-open .mobile-menu { + left: 0; + } + body.mobile-menu-open .site-overlay-on-menu-open { + left: 0; + opacity: 1; + filter: alpha(opacity=100); + -webkit-transition: opacity 0.25s; + -moz-transition: opacity 0.25s; + -o-transition: opacity 0.25s; + transition: opacity 0.25s; + } + .mobile-menu { + background-color: #faf9f5; + bottom: 0; + display: block; + overflow: hidden; + position: fixed; + left: -258px; + top: 0; + z-index: 1101; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: left 0.25s; + -moz-transition: left 0.25s; + -o-transition: left 0.25s; + transition: left 0.25s; + -webkit-transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1); + transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1); + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -ms-transform: translateZ(0); + -o-transform: translateZ(0); + transform: translateZ(0); + -webkit-perspective: 1000; + -moz-perspective: 1000; + -ms-perspective: 1000; + perspective: 1000; + } + .mobile-menu.has-user-search-input .hide-on-user-search-input { + display: none !important; + } + .mobile-menu .container-inner { + padding-bottom: 0; + width: 258px !important; + height: 100%; + } + .mobile-menu .container-inner ul { + position: absolute; + top: 0; + bottom: 0; + width: 100%; + margin-top: 40px; + overflow-y: scroll; + } + .mobile-menu .container-inner ul li { + padding-left: 18px; + padding-right: 18px; + } + .mobile-menu .container-inner ul li.collapsable-parent .mobile-menu-link-main { + padding-right: 20px; + } + .mobile-menu .container-inner ul li.collapsable-parent .collapsable-parent-handle { + position: absolute; + right: 13px; + top: -2px; + display: inline-block; + width: 24px; + height: 24px; + background-image: url("/img/VRM-sprite.png?v=3"); + background-size: 621px 888px; + background-repeat: no-repeat; + background-position: -24px -240px; + } + .mobile-menu .container-inner ul li.collapsable-child.collapsed { + display: none; + } + .mobile-menu .container-inner ul li a { + display: block; + text-decoration: none; + } + .mobile-menu .container-inner ul li a .plus-sign { + color: #afe18d; + } + .mobile-menu .container-inner ul li .mobile-menu-link-main { + color: #272622; + font-size: 18px; + margin-bottom: 17px; + margin-top: 35px; + } + .mobile-menu .container-inner ul li .mobile-menu-link-sub { + margin-top: 14px; + } + .mobile-menu .top-menu-language-fly-out, + .mobile-menu .top-menu-language-selector-container { + display: none; + } + .mobile-menu-search { + display: block; + height: 40px; + } + .mobile-menu-search .sprite-icons { + left: 8px; + position: absolute; + top: 8px; + } + .mobile-menu-search input { + background-color: #959490 !important; + border-color: #959490 !important; + color: #ffffff !important; + height: 100%; + padding-left: 40px; + width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + } + .mobile-menu-search input:-moz-placeholder { + color: #e6e5e1; + opacity: 1; + } + .mobile-menu-search input::-moz-placeholder { + color: #e6e5e1; + opacity: 1; + } + .mobile-menu-search input:-webkit-input-placeholder { + color: #e6e5e1; + opacity: 1; + } + .mobile-menu-search input::-webkit-input-placeholder { + color: #e6e5e1; + opacity: 1; + } + .mobile-menu-search input:-ms-input-placeholder { + color: #e6e5e1; + opacity: 1; + } + .mobile-menu-search input::-ms-input-placeholder { + color: #e6e5e1; + opacity: 1; + } + .mobile-menu-site-title { + font-size: 21px !important; + } + .mobile-menu-buttons-container .btn { + display: inline-block !important; + font-size: 15px; + } + .mobile-menu-buttons-container .remote-console-trigger { + display: inline-block; + } + /* -----------[Admin sites overview]--------------*/ + body.diagnostics .breadcrumb .site-select, + body.site-overview .breadcrumb .site-select, + body.user-overview .breadcrumb .site-select { + display: inline-block; + } + /* -----------[Two factor login]--------------*/ + .two-step-login .mobile-menu { + display: none; + } + .user.update .container .form-tabs-container, + .user.two-step-update .container .form-tabs-container, + .user.update-dealer .container .form-tabs-container { + margin-bottom: 40px; + margin-left: 10px; + margin-right: 10px; + width: 300px; + } + .user.update .container .form-tabs-container .form-tabs, + .user.two-step-update .container .form-tabs-container .form-tabs, + .user.update-dealer .container .form-tabs-container .form-tabs { + margin-top: 14px; + } + .user.update .container .form-tabs-container .form-tabs li a, + .user.two-step-update .container .form-tabs-container .form-tabs li a, + .user.update-dealer .container .form-tabs-container .form-tabs li a { + padding-left: 20px; + text-align: left; + } + .user.update .container .form-tabs-container .btn, + .user.two-step-update .container .form-tabs-container .btn, + .user.update-dealer .container .form-tabs-container .btn { + width: 300px; + } + .user.update .container .form-tabs-container .btn.force-width, + .user.two-step-update .container .form-tabs-container .btn.force-width, + .user.update-dealer .container .form-tabs-container .btn.force-width { + width: 300px !important; + } + .user.update .container .form-tabs-container .mobile-title, + .user.two-step-update .container .form-tabs-container .mobile-title, + .user.update-dealer .container .form-tabs-container .mobile-title { + display: block; + margin-bottom: 0px; + margin-top: 50px; + } + .user.update .container .container-inner .four-columns-width, + .user.two-step-update .container .container-inner .four-columns-width, + .user.update-dealer .container .container-inner .four-columns-width { + width: 300px; + margin-left: 10px; + margin-right: 10px; + } + .remote-console-trigger { + float: none; + margin-left: 10px; + } +} +@media screen and (max-width: 959px) and print, screen and (max-width: 959px) and (-webkit-min-device-pixel-ratio: 1.25), screen and (max-width: 959px) and (-o-min-device-pixel-ratio: 3/2), screen and (max-width: 959px) and (min--moz-device-pixel-ratio: 1.25), screen and (max-width: 959px) and (-moz-min-device-pixel-ratio: 1.25), screen and (max-width: 959px) and (-ms-min-device-pixel-ratio: 1.25), screen and (max-width: 959px) and (min-device-pixel-ratio: 1.25), screen and (max-width: 959px) and (min-resolution: 120dpi), screen and (max-width: 959px) and (min-resolution: 1.25dppx) { + .mobile-menu .container-inner ul li.collapsable-parent .collapsable-parent-handle { + background-image: url("/img/VRM-sprite@2X.png?v=3"); + background-size: 621px 888px; + } +} +@media screen and (max-width: 795px) { + .remote-console-popup-container.logged-in { + width: 682px; + } + .remote-console-logged-in .remote-console-controls-title { + display: none; + } + .remote-console-title { + display: block; + } + .remote-console-display-container { + width: 100%; + } + .remote-console-display { + padding-right: 184px; + } + .remote-console-controls { + bottom: auto; + height: 230px; + top: 70px; + } + .remote-console-logged-in .remote-console-controls-container { + background-color: #faf9f5; + width: 181px; + } + .remote-console-logged-in .remote-console-controls-title, + .remote-console-logged-in .remote-console-controls-subtitle { + color: #4790d0; + } + .remote-console-logged-in .remote-console-controls-subtitle { + margin-top: 59px; + text-align: left; + } + .btn.remote-console-control-button { + background-color: #4790d0; + } + .btn.remote-console-control-button:hover { + background-color: #387dc5; + } + .btn.remote-console-control-button .remote-console-control-icon { + color: #faf9f5; + fill: #faf9f5; + } + .btn.remote-console-control-button .remote-console-control-icon path { + fill: #faf9f5; + } +} +@media screen and (max-width: 767px) { + .remote-console-popup-container { + border-radius: 0; + height: 100%; + left: 0; + margin: 0; + position: fixed; + top: 0; + width: 100%; + } + .remote-console-popup-container .mfp-close { + color: #4790d0; + } + .remote-console-popup-container.logged-in { + width: 100%; + } + .remote-console-popup-container.logged-in .mfp-close { + color: #4790d0; + } + .remote-console-display-inner { + width: 100%; + } + .remote-console-status { + height: 100%; + } +} +@media screen and (max-width: 570px) { + .remote-console-display-inner { + height: 200px !important; + } +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.hide { + display: none; +} +.show { + display: block; +} +.invisible { + visibility: hidden; +} +.affix { + position: fixed; +} +#cssValues.colors.blue { + color: #4790d0; +} +#cssValues.colors.blueHover { + color: #387dc5; +} +#cssValues.colors.blueShadow { + color: #5b9bcd; +} +#cssValues.colors.orange { + color: #f7ab3e; +} +#cssValues.colors.orangeHover { + color: #f0962e; +} +#cssValues.colors.green { + color: #8bc964; +} +#cssValues.colors.greenHover { + color: #72b84c; +} +#cssValues.colors.greenShadow { + color: #98c478; +} +#cssValues.colors.lightGreen { + color: #afe18d; +} +#cssValues.colors.red { + color: #fa716f; +} +#cssValues.colors.redHover { + color: #f35c58; +} +#cssValues.colors.redShadow { + color: #e66e6e; +} +#cssValues.colors.black { + color: #272622; +} +#cssValues.colors.white { + color: #ffffff; +} +#cssValues.colors.darkGray { + color: #63625e; +} +#cssValues.colors.darkGrayShadow { + color: rgba(99, 98, 94, 0.1); +} +#cssValues.colors.darkGrayLines { + color: #4f4f4b; +} +#cssValues.colors.gray { + color: #959490; +} +#cssValues.colors.grayShadow { + color: #8e8d89; +} +#cssValues.colors.lightGrayLines { + color: #dcdbd7; +} +#cssValues.colors.lightGraySurfaces { + color: #e6e5e1; +} +#cssValues.colors.lightGrayBackground { + color: #f0efeb; +} +#cssValues.colors.lightGrayWidgetHeader { + color: #faf9f5; +} +#cssValues.colors.grayLines { + color: #e5e4e0; +} +#cssValues.sprites.url { + background-image: url("/img/VRM-sprite.png?v=3"); +} +#cssValues.sprites.url2X { + background-image: url("/img/VRM-sprite@2X.png?v=3"); +} +#cssValues.sprites.width { + width: 621px; +} +#cssValues.sprites.height { + height: 888px; +} +#cssValues.fonts.fontFamily { + font-family: 'MuseoSans-300', sans-serif; +} +/*# sourceMappingURL=1a83de5aa35b26837c2042d512c73c5a_md5_7b8754c004401cfe0be061108bf9f813.css.map */ \ No newline at end of file diff --git a/changes b/changes index ab70dfdc..bfe5b082 100644 --- a/changes +++ b/changes @@ -1,3 +1,6 @@ +v7.50: + add dark mode + v7.49: add support for v3.00~42 (includes generator on AC 2) @@ -90,7 +93,7 @@ v7.17: fixed: Multi gauge not showing proper limits, including no yellow region v7.16: added v3.00~17 - fixed: alternator gauge polarity was backwards + fixed: alternator gauge polarity was backwards v7.15: fixed: systemcalc crash in v2.90-2.93 (no devices shown on GUI) @@ -272,7 +275,7 @@ v5.29: added humidity to temps tiles added DC System detail added details and gauges to Mobile Overview - + alternator, etc (DC sources) development on hold v5.28~6: switched from /Mode to /State for battery State in DC System detail page diff --git a/setup b/setup index c95eb0e3..4552905a 100755 --- a/setup +++ b/setup @@ -16,7 +16,7 @@ qmlDir=/opt/victronenergy/gui/qml #### following lines incorporate SetupHelper utilities into this script # Refer to the SetupHelper ReadMe file for details. - + source "/data/SetupHelper/CommonResources" #### end of lines to include SetupHelper @@ -75,77 +75,80 @@ if [ $scriptAction == 'INSTALL' ] ; then # create dbus Settings if they haven't been set previously # if one setting exists, assume they are all there # NOTE: if new settings are added in the future, change test for that one - # to avoid creating that new parameter !!!! - dbus-send --system --print-reply=literal --dest=com.victronenergy.settings /Settings/GuiMods/ReplaceInactiveAcIn \ + # to avoid NOT creating that new parameter !!!! + dbus-send --system --print-reply=literal --dest=com.victronenergy.settings /Settings/GuiMods/DarkMode \ com.victronenergy.BusItem.GetValue &> /dev/null if (( $? != 0 )); then logMessage "creating GuiMods Settings" - dbus -y com.victronenergy.settings /Settings AddSettings\ - '%[{"path": "/GuiMods/GaugeLimits/PeakPower", "default":0.0},\ - {"path":"/GuiMods/GaugeLimits/CautionPower", "default":0.0},\ - {"path":"/GuiMods/GaugeLimits/ContiuousPower", "default":0.0},\ - {"path":"/GuiMods/GaugeLimits/AcOutputMaxPower", "default":0.0},\ - {"path":"/GuiMods/GaugeLimits/PvChargerMaxPower", "default":0.0},\ - {"path":"/GuiMods/GaugeLimits/BatteryMaxDischargeCurrent", "default":0.0},\ - {"path":"/GuiMods/AcCurrentLimit/Preset1", "default":10},\ - {"path":"/GuiMods/AcCurrentLimit/Preset2", "default":20},\ - {"path":"/GuiMods/AcCurrentLimit/Preset3", "default":30},\ - {"path":"/GuiMods/AcCurrentLimit/Preset4", "default":50},\ - {"path":"/GuiMods/TemperatureScale", "default":1},\ - {"path":"/GuiMods/ShortenTankNames", "default":1, "min":0, "max":1},\ - {"path":"/GuiMods/UseEnhancedMobileOverview", "default":1, "min":0, "max":1},\ - {"path":"/GuiMods/UseEnhancedFlowOverview", "default":1, "min":0, "max":1},\ - {"path":"/GuiMods/ShowEnhancedFlowOverviewTanks", "default":1, "min":0, "max":1},\ - {"path":"/GuiMods/ShowEnhancedFlowOverviewTemps", "default":1, "min":0, "max":1},\ - {"path":"/GuiMods/ShowEnhancedFlowLoadsOnInput", "default":1, "min":0, "max":1},\ - {"path":"/GuiMods/EnhancedFlowCombineLoads", "default":0, "min":0, "max":1},\ - {"path":"/GuiMods/ShowGauges", "default":1, "min":0, "max":1},\ - {"path":"/GuiMods/ShowTileOverview", "default":1, "min":0, "max":1},\ - {"path":"/GuiMods/MoveSettings", "default":1, "min":0, "max":1},\ - {"path":"/GuiMods/ShowRelayOverview", "default":1, "min":0, "max":1}, \ - {"path":"/GuiMods/ShowInactiveFlowTiles", "default":0}, \ - {"path":"/GuiMods/ShowTanksTempsDigIn", "default":0, "min":0, "max":1}, \ - {"path":"/GuiMods/FlowOverview", "default":1, "min":0, "max":3}, \ - {"path":"/GuiMods/CustomDcSystemName", "default":""}, \ - {"path":"/GuiMods/TimeFormat", "default":1}, \ - {"path": "/Relay/0/CustomName", "default":""},\ - {"path": "/Relay/0/Show", "default":1, "min":0, "max":1},\ - {"path": "/Relay/1/CustomName", "default":""},\ - {"path": "/Relay/1/Show", "default":1, "min":0, "max":1},\ - {"path": "/Relay/2/CustomName", "default":""},\ - {"path": "/Relay/2/Show", "default":1, "min":0, "max":1},\ - {"path": "/Relay/3/CustomName", "default":""},\ - {"path": "/Relay/3/Show", "default":1, "min":0, "max":1},\ - {"path": "/Relay/4/CustomName", "default":""},\ - {"path": "/Relay/4/Show", "default":1, "min":0, "max":1},\ - {"path": "/Relay/5/CustomName", "default":""},\ - {"path": "/Relay/5/Show", "default":1, "min":0, "max":1}, \ - {"path":"/GuiMods/GaugeLimits/BatteryMaxChargeCurrent", "default":0.0}, \ - {"path":"/GuiMods/GaugeLimits/AcOutputNonCriticalMaxPower", "default":0.0}, \ - {"path":"/GuiMods/GaugeLimits/PvOnGridMaxPower", "default":0.0}, \ - {"path":"/GuiMods/GaugeLimits/PvOnOutputMaxPower", "default":0.0}, \ - {"path":"/GuiMods/GaugeLimits/MaxChargerPower", "default":0.0}, \ - {"path":"/GuiMods/GaugeLimits/MaxFeedInPower", "default":0.0}, \ - {"path":"/GuiMods/GaugeLimits/DcSystemMaxLoad", "default":0.0}, \ - {"path":"/GuiMods/GaugeLimits/DcSystemMaxCharge", "default":0.0}, \ - {"path":"/GuiMods/GaugeLimits/MaxAlternatorPower", "default":0.0}, \ - {"path":"/GuiMods/GaugeLimits/MaxWindGenPower", "default":0.0}, \ - {"path":"/GuiMods/GaugeLimits/MaxAcChargerPower", "default":0.0}, \ - {"path":"/GuiMods/UseEnhancedGeneratorOverview", "default":1.0}, \ - {"path":"/GuiMods/GaugeLimits/MaxFuelCellPower", "default":0.0}, \ - {"path":"/GuiMods/ShowBatteryTempOnFlows", "default":1, "min":0, "max":1}, \ - {"path":"/GuiMods/KilowattThreshold", "default":1000, "min":1000, "max":10000}, \ - {"path":"/GuiMods/TankBarFormat", "default":0, "min":0, "max":2}, \ - {"path":"/FischerPanda0/ServiceInterval", "default":0, "min":-1, "max":5000000}, \ - {"path":"/Generator0/ServiceInterval", "default":0, "min":-1, "max":5000000}, \ - {"path":"/GuiMods/GaugeLimits/MaxMotorDriveCharge", "default":0.0}, \ - {"path":"/GuiMods/GaugeLimits/MaxMotorDriveLoad", "default":0.0}, \ - {"path":"/GuiMods/ReplaceInactiveAcIn", "default":0, "min":0, "max":1} ]' > /dev/null + dbus -y com.victronenergy.settings /Settings AddSettings \ + '%[ \ + {"path":"/GuiMods/GaugeLimits/PeakPower", "default":0.0}, \ + {"path":"/GuiMods/GaugeLimits/CautionPower", "default":0.0}, \ + {"path":"/GuiMods/GaugeLimits/ContiuousPower", "default":0.0}, \ + {"path":"/GuiMods/GaugeLimits/AcOutputMaxPower", "default":0.0}, \ + {"path":"/GuiMods/GaugeLimits/PvChargerMaxPower", "default":0.0}, \ + {"path":"/GuiMods/GaugeLimits/BatteryMaxDischargeCurrent", "default":0.0}, \ + {"path":"/GuiMods/AcCurrentLimit/Preset1", "default":10}, \ + {"path":"/GuiMods/AcCurrentLimit/Preset2", "default":20}, \ + {"path":"/GuiMods/AcCurrentLimit/Preset3", "default":30}, \ + {"path":"/GuiMods/AcCurrentLimit/Preset4", "default":50}, \ + {"path":"/GuiMods/TemperatureScale", "default":1}, \ + {"path":"/GuiMods/ShortenTankNames", "default":1, "min":0, "max":1}, \ + {"path":"/GuiMods/UseEnhancedMobileOverview", "default":1, "min":0, "max":1}, \ + {"path":"/GuiMods/UseEnhancedFlowOverview", "default":1, "min":0, "max":1}, \ + {"path":"/GuiMods/ShowEnhancedFlowOverviewTanks", "default":1, "min":0, "max":1}, \ + {"path":"/GuiMods/ShowEnhancedFlowOverviewTemps", "default":1, "min":0, "max":1}, \ + {"path":"/GuiMods/ShowEnhancedFlowLoadsOnInput", "default":1, "min":0, "max":1}, \ + {"path":"/GuiMods/EnhancedFlowCombineLoads", "default":0, "min":0, "max":1}, \ + {"path":"/GuiMods/ShowGauges", "default":1, "min":0, "max":1}, \ + {"path":"/GuiMods/ShowTileOverview", "default":1, "min":0, "max":1}, \ + {"path":"/GuiMods/MoveSettings", "default":1, "min":0, "max":1}, \ + {"path":"/GuiMods/ShowRelayOverview", "default":1, "min":0, "max":1}, \ + {"path":"/GuiMods/ShowInactiveFlowTiles", "default":0}, \ + {"path":"/GuiMods/ShowTanksTempsDigIn", "default":0, "min":0, "max":1}, \ + {"path":"/GuiMods/FlowOverview", "default":1, "min":0, "max":3}, \ + {"path":"/GuiMods/CustomDcSystemName", "default":""}, \ + {"path":"/GuiMods/TimeFormat", "default":1}, \ + {"path":"/Relay/0/CustomName", "default":""}, \ + {"path":"/Relay/0/Show", "default":1, "min":0, "max":1}, \ + {"path":"/Relay/1/CustomName", "default":""}, \ + {"path":"/Relay/1/Show", "default":1, "min":0, "max":1}, \ + {"path":"/Relay/2/CustomName", "default":""}, \ + {"path":"/Relay/2/Show", "default":1, "min":0, "max":1}, \ + {"path":"/Relay/3/CustomName", "default":""}, \ + {"path":"/Relay/3/Show", "default":1, "min":0, "max":1}, \ + {"path":"/Relay/4/CustomName", "default":""}, \ + {"path":"/Relay/4/Show", "default":1, "min":0, "max":1}, \ + {"path":"/Relay/5/CustomName", "default":""}, \ + {"path":"/Relay/5/Show", "default":1, "min":0, "max":1}, \ + {"path":"/GuiMods/GaugeLimits/BatteryMaxChargeCurrent", "default":0.0}, \ + {"path":"/GuiMods/GaugeLimits/AcOutputNonCriticalMaxPower", "default":0.0}, \ + {"path":"/GuiMods/GaugeLimits/PvOnGridMaxPower", "default":0.0}, \ + {"path":"/GuiMods/GaugeLimits/PvOnOutputMaxPower", "default":0.0}, \ + {"path":"/GuiMods/GaugeLimits/MaxChargerPower", "default":0.0}, \ + {"path":"/GuiMods/GaugeLimits/MaxFeedInPower", "default":0.0}, \ + {"path":"/GuiMods/GaugeLimits/DcSystemMaxLoad", "default":0.0}, \ + {"path":"/GuiMods/GaugeLimits/DcSystemMaxCharge", "default":0.0}, \ + {"path":"/GuiMods/GaugeLimits/MaxAlternatorPower", "default":0.0}, \ + {"path":"/GuiMods/GaugeLimits/MaxWindGenPower", "default":0.0}, \ + {"path":"/GuiMods/GaugeLimits/MaxAcChargerPower", "default":0.0}, \ + {"path":"/GuiMods/UseEnhancedGeneratorOverview", "default":1.0}, \ + {"path":"/GuiMods/GaugeLimits/MaxFuelCellPower", "default":0.0}, \ + {"path":"/GuiMods/ShowBatteryTempOnFlows", "default":1, "min":0, "max":1}, \ + {"path":"/GuiMods/KilowattThreshold", "default":1000, "min":1000, "max":10000}, \ + {"path":"/GuiMods/TankBarFormat", "default":0, "min":0, "max":2}, \ + {"path":"/FischerPanda0/ServiceInterval", "default":0, "min":-1, "max":5000000}, \ + {"path":"/Generator0/ServiceInterval", "default":0, "min":-1, "max":5000000}, \ + {"path":"/GuiMods/GaugeLimits/MaxMotorDriveCharge", "default":0.0}, \ + {"path":"/GuiMods/GaugeLimits/MaxMotorDriveLoad", "default":0.0}, \ + {"path":"/GuiMods/ReplaceInactiveAcIn", "default":0, "min":0, "max":1}, \ + {"path":"/GuiMods/DarkMode", "default":0, "min":0, "max":1} \ + ]' > /dev/null fi - temp=$(dbus-send --system --print-reply=literal --dest=com.victronenergy.settings /Settings/GuiMods/ShowInactiveFlowTiles\ + temp=$(dbus-send --system --print-reply=literal --dest=com.victronenergy.settings /Settings/GuiMods/ShowInactiveFlowTiles \ com.victronenergy.BusItem.GetMax) - temp=$(echo $temp| awk '{print $3}') + temp=$(echo $temp | awk '{print $3}') if (( $temp != 0)); then removeDbusSettings "GuiMods/ShowInactiveFlowTiles" logMessage "creating ShowInactiveFlowTiles without limits" @@ -162,7 +165,7 @@ if [ $scriptAction == 'INSTALL' ] ; then || [ -f "$setupOptionsDir/hideTileOverview" ] \ || [ -f "$setupOptionsDir/enhancedFlow" ]; then logMessage "moving setup options to GuiMods2 Settings" - + if [ -f "$setupOptionsDir/useEnhancedOverview" ]; then setSetting 1 /Settings/GuiMods/UseEnhancedMobileOverview else @@ -187,7 +190,7 @@ if [ $scriptAction == 'INSTALL' ] ; then setSetting acCurrentLimitPreset2 /Settings/GuiMods/AcCurrentLimit/Preset2 setSetting acCurrentLimitPreset3 /Settings/GuiMods/AcCurrentLimit/Preset3 setSetting acCurrentLimitPreset4 /Settings/GuiMods/AcCurrentLimit/Preset4 - else + else moveSetting "" /Settings/InverterLimits/AcCurrentLimit/Preset1 /Settings/GuiMods/AcCurrentLimit/Preset1 moveSetting "" /Settings/InverterLimits/AcCurrentLimit/Preset1 /Settings/GuiMods/AcCurrentLimit/Preset2 moveSetting "" /Settings/InverterLimits/AcCurrentLimit/Preset1 /Settings/GuiMods/AcCurrentLimit/Preset3 @@ -195,19 +198,19 @@ if [ $scriptAction == 'INSTALL' ] ; then fi # copy DVCC max battery charge current to gauge Settings if gauge setting is 0 - maxCharge=$(dbus-send --system --print-reply=literal --dest=com.victronenergy.settings /Settings/GuiMods/GaugeLimits/BatteryMaxChargeCurrent\ + maxCharge=$(dbus-send --system --print-reply=literal --dest=com.victronenergy.settings /Settings/GuiMods/GaugeLimits/BatteryMaxChargeCurrent \ com.victronenergy.BusItem.GetValue 2> /dev/null | awk '{print $3}') - dvccCharge=$(dbus-send --system --print-reply=literal --dest=com.victronenergy.settings /Settings/SystemSetup/MaxChargeCurrent\ + dvccCharge=$(dbus-send --system --print-reply=literal --dest=com.victronenergy.settings /Settings/SystemSetup/MaxChargeCurrent \ com.victronenergy.BusItem.GetValue 2> /dev/null | awk '{print $3}') if [ ! -z $maxCharge ] && [ $maxCharge == 0 ] && [ ! -z $dvccCharge ]; then dbus -y com.victronenergy.settings /Settings/GuiMods/GaugeLimits/BatteryMaxChargeCurrent SetValue $dvccCharge > /dev/null fi - + else dbus -y com.victronenergy.settings /Settings/GuiMods/UseEnhancedFlowOverview SetValue 0 > /dev/null fi - - # remove unused setup options (now in Settings) + + # remove unused setup options (now in Settings) rm -f "$setupOptionsDir/useEnhancedOverview" rm -f "$setupOptionsDir/enhancedFlow" rm -f "$setupOptionsDir/hideTileOverview" @@ -223,23 +226,23 @@ if [ $scriptAction == 'INSTALL' ] ; then rm -f "$setupOptionsDir/temperatureScale" rm -f "$setupOptionsDir/acCurrentLimitPresets" - # remove old Settings - removeDbusSettings "InverterLimits/PeakPower", "InverterLimits/ContiuousPower",\ - "InverterLimits/CautionPower", "InverterLimits/OutputPowerLimit",\ - "SystemSetup/MaxDischargeCurrent",\ - "InverterLimits/AcCurrentLimit/Preset1", "InverterLimits/AcCurrentLimit/Preset2",\ - "InverterLimits/AcCurrentLimit/Preset3", "InverterLimits/AcCurrentLimit/Preset4",\ + # remove old Settings + removeDbusSettings "InverterLimits/PeakPower", "InverterLimits/ContiuousPower", \ + "InverterLimits/CautionPower", "InverterLimits/OutputPowerLimit", \ + "SystemSetup/MaxDischargeCurrent", \ + "InverterLimits/AcCurrentLimit/Preset1", "InverterLimits/AcCurrentLimit/Preset2", \ + "InverterLimits/AcCurrentLimit/Preset3", "InverterLimits/AcCurrentLimit/Preset4", \ "PvCharger/MaxPower" fi fi - + # GuiMods2 was just uninstalled, so switch to the grid parallel overview so user sees same screen as with GuiMods2 if $activateGridParallelOverview ; then logMessage "GuiMods is replacing GuiMods2 - enable grid paraellel overview in GuiMods" setSetting 1 "/Settings/GuiMods/UseEnhancedGridParallelFlowOverview" fi - + # remove GuiMods2 from packageList - if it's reistalled, it will ba added back # but we want to skip any checks for GuiMods including from packageInstaller if [ -f "$packageListFile" ] && [ $(grep -c "GuiMods2" "$packageListFile") != 0 ]; then @@ -316,6 +319,27 @@ if [ $scriptAction == 'INSTALL' ] ; then updateActiveFile "/opt/victronenergy/gui/qml/PageGenerator.qml" updateActiveFile "/opt/victronenergy/gui/qml/PageSettingsGenerator.qml" + # only used for darkmode | start + # can be removed, when Victron launches new UI with darkmode + updateActiveFile "$qmlDir/Battery.qml" + updateActiveFile "$qmlDir/MbEditBox.qml" + updateActiveFile "$qmlDir/MbEditBoxDateTime.qml" + updateActiveFile "$qmlDir/MbItem.qml" + updateActiveFile "$qmlDir/MbSpinBox.qml" + updateActiveFile "$qmlDir/MbStyle.qml" + updateActiveFile "$qmlDir/MbSubMenu.qml" + updateActiveFile "$qmlDir/OverviewBox.qml" + updateActiveFile "$qmlDir/OverviewConnection.qml" + updateActiveFile "$qmlDir/OverviewConnectionEnd.qml" + updateActiveFile "$qmlDir/OverviewGridParallel.qml" + updateActiveFile "$qmlDir/OverviewHub.qml" + updateActiveFile "$qmlDir/OverviewSolarCharger.qml" + updateActiveFile "$qmlDir/OverviewSolarInverter.qml" + updateActiveFile "$qmlDir/Tile.qml" + updateActiveFile "$qmlDir/TileText.qml" + updateActiveFile "/var/www/venus/styling/styles.css" + # only used for darkmode | end + # revert to VisualItemModel if before v3.00~14 (v3.00~14 uses VisibleItemModel) versionStringToNumber "v3.00~14" if (( $venusVersionNumber < $versionNumber )); then @@ -407,6 +431,27 @@ if [ $scriptAction == 'UNINSTALL' ] ; then restoreActiveFile "/opt/victronenergy/gui/qml/PageSettingsGenerator.qml" logMessage "++ setup: Uninstalled GeneratorConnector" + # only used for darkmode | start + # can be removed, when Victron launches new UI with darkmode + restoreActiveFile "$qmlDir/Battery.qml" + restoreActiveFile "$qmlDir/MbEditBox.qml" + restoreActiveFile "$qmlDir/MbEditBoxDateTime.qml" + restoreActiveFile "$qmlDir/MbItem.qml" + restoreActiveFile "$qmlDir/MbSpinBox.qml" + restoreActiveFile "$qmlDir/MbStyle.qml" + restoreActiveFile "$qmlDir/MbSubMenu.qml" + restoreActiveFile "$qmlDir/OverviewBox.qml" + restoreActiveFile "$qmlDir/OverviewConnection.qml" + restoreActiveFile "$qmlDir/OverviewConnectionEnd.qml" + restoreActiveFile "$qmlDir/OverviewGridParallel.qml" + restoreActiveFile "$qmlDir/OverviewHub.qml" + restoreActiveFile "$qmlDir/OverviewSolarCharger.qml" + restoreActiveFile "$qmlDir/OverviewSolarInverter.qml" + restoreActiveFile "$qmlDir/Tile.qml" + restoreActiveFile "$qmlDir/TileText.qml" + restoreActiveFile "/var/www/venus/styling/styles.css" + # only used for darkmode | end + logMessage "++ $packageName uninstalled" fi diff --git a/version b/version index 4cb7b9e9..9123ddba 100644 --- a/version +++ b/version @@ -1 +1 @@ -v7.49 +v7.50