{#BTN_REBOOT_SUCCESSFUL_SAVE}
@@ -341,6 +342,7 @@
             var maxInv = 0;
             var ts = 0;
 
+            /*IF_ESP8266*/
             var esp8266pins = [
                 [255, "{#PIN_OFF}"],
                 [0, "D3 (GPIO0)"],
@@ -361,6 +363,7 @@
                 [15, "D8 (GPIO15)"],
                 [16, "D0 (GPIO16 - {#PIN_NO_IRQ})"]
             ];
+            /*ENDIF_ESP8266*/
 
             /*IF_ESP32*/
             var esp32pins = [
@@ -392,6 +395,7 @@
                 [36, "VP (GPIO36, {#PIN_INPUT_ONLY})"],
                 [39, "VN (GPIO39, {#PIN_INPUT_ONLY})"]
             ];
+            /*IF_ESP32-S2*/
             var esp32sXpins = [
                 [255, "off / default"],
                 [0,  "GPIO0 ({#PIN_DONT_USE} - BOOT)"],
@@ -440,6 +444,58 @@
                 [47, "GPIO47"],
                 [48, "GPIO48"],
             ];
+            /*ENDIF_ESP32-S2*/
+            /*IF_ESP32-S3*/
+            var esp32sXpins = [
+                [255, "off / default"],
+                [0,  "GPIO0 ({#PIN_DONT_USE} - BOOT)"],
+                [1,  "GPIO1"],
+                [2,  "GPIO2"],
+                [3,  "GPIO3"],
+                [4,  "GPIO4"],
+                [5,  "GPIO5"],
+                [6,  "GPIO6"],
+                [7,  "GPIO7"],
+                [8,  "GPIO8"],
+                [9,  "GPIO9"],
+                [10, "GPIO10"],
+                [11, "GPIO11"],
+                [12, "GPIO12"],
+                [13, "GPIO13"],
+                [14, "GPIO14"],
+                [15, "GPIO15"],
+                [16, "GPIO16"],
+                [17, "GPIO17"],
+                [18, "GPIO18"],
+                [19, "GPIO19 ({#PIN_DONT_USE} - USB-)"],
+                [20, "GPIO20 ({#PIN_DONT_USE} - USB+)"],
+                [21, "GPIO21"],
+                [26, "GPIO26 (PSRAM - {#PIN_NOT_AVAIL})"],
+                [27, "GPIO27 (FLASH - {#PIN_NOT_AVAIL})"],
+                [28, "GPIO28 (FLASH - {#PIN_NOT_AVAIL})"],
+                [29, "GPIO29 (FLASH - {#PIN_NOT_AVAIL})"],
+                [30, "GPIO30 (FLASH - {#PIN_NOT_AVAIL})"],
+                [31, "GPIO31 (FLASH - {#PIN_NOT_AVAIL})"],
+                [32, "GPIO32 (FLASH - {#PIN_NOT_AVAIL})"],
+                [33, "GPIO33 (not exposed on S3-WROOM modules)"],
+                [34, "GPIO34 (not exposed on S3-WROOM modules)"],
+                [35, "GPIO35"],
+                [36, "GPIO36"],
+                [37, "GPIO37"],
+                [38, "GPIO38"],
+                [39, "GPIO39"],
+                [40, "GPIO40"],
+                [41, "GPIO41"],
+                [42, "GPIO42"],
+                [43, "GPIO43"],
+                [44, "GPIO44"],
+                [45, "GPIO45 ({#PIN_DONT_USE} - STRAPPING PIN)"],
+                [46, "GPIO46 ({#PIN_DONT_USE} - STRAPPING PIN)"],
+                [47, "GPIO47"],
+                [48, "GPIO48"],
+            ];
+            /*ENDIF_ESP32-S3*/
+            /*IF_ESP32-C3*/
             var esp32c3pins = [
                 [255, "off / default"],
                 [0,  "GPIO0"],
@@ -465,6 +521,7 @@
                 [20, "GPIO20 (RX)"],
                 [21, "GPIO21 (TX)"],
             ];
+            /*ENDIF_ESP32-C3*/
             /*ENDIF_ESP32*/
             var nrfPa = [
                 [0, "MIN ({#PIN_RECOMMENDED})"],
@@ -890,11 +947,19 @@
 
             function parsePinout(obj, type, system) {
                 var e = document.getElementById("pinout");
-                var pinList = esp8266pins;
                 /*IF_ESP32*/
                 var pinList = esp32pins;
-                if ("ESP32-S3" == system.chip_model || "ESP32-S2" == system.chip_model) pinList = esp32sXpins;
-                else if("ESP32-C3" == system["chip_model"]) pinList = esp32c3pins;
+                /*IF_ESP32-S2*/
+                pinList = esp32sXpins;
+                /*ENDIF_ESP32-S2*/
+                /*IF_ESP32-S3*/
+                pinList = esp32sXpins;
+                /*ENDIF_ESP32-S3*/
+                /*IF_ESP32-C3*/
+                pinList = esp32c3pins;
+                /*ENDIF_ESP32-C3*/
+                /*ELSE*/
+                var pinList = esp8266pins;
                 /*ENDIF_ESP32*/
                 pins = [['led0', 'pinLed0', '{#LED_AT_LEAST_ONE_PRODUCING}'], ['led1', 'pinLed1', '{#LED_MQTT_CONNECTED}'], ['led2', 'pinLed2', '{#LED_NIGHT_TIME}']];
                 for(p of pins) {
@@ -926,11 +991,19 @@
                 var en = inp("nrfEnable", null, null, ["cb"], "nrfEnable", "checkbox");
                 en.checked = obj["en"];
 
-                var pinList = esp8266pins;
                 /*IF_ESP32*/
                 var pinList = esp32pins;
-                if ("ESP32-S3" == system.chip_model || "ESP32-S2" == system.chip_model) pinList = esp32sXpins;
-                else if("ESP32-C3" == system["chip_model"]) pinList = esp32c3pins;
+                /*IF_ESP32-S2*/
+                pinList = esp32sXpins;
+                /*ENDIF_ESP32-S2*/
+                /*IF_ESP32-S3*/
+                pinList = esp32sXpins;
+                /*ENDIF_ESP32-S3*/
+                /*IF_ESP32-C3*/
+                pinList = esp32c3pins;
+                /*ENDIF_ESP32-C3*/
+                /*ELSE*/
+                var pinList = esp8266pins;
                 /*ENDIF_ESP32*/
 
                 e.replaceChildren (
@@ -962,8 +1035,15 @@
                 var e = document.getElementById("cmt");
                 var en = inp("cmtEnable", null, null, ["cb"], "cmtEnable", "checkbox");
                 var pinList = esp32pins;
-                if ("ESP32-S3" == system.chip_model || "ESP32-S2" == system.chip_model) pinList = esp32sXpins;
-                else if("ESP32-C3" == system["chip_model"]) pinList = esp32c3pins;
+                /*IF_ESP32-S2*/
+                pinList = esp32sXpins;
+                /*ENDIF_ESP32-S2*/
+                /*IF_ESP32-S3*/
+                pinList = esp32sXpins;
+                /*ENDIF_ESP32-S3*/
+                /*IF_ESP32-C3*/
+                pinList = esp32c3pins;
+                /*ENDIF_ESP32-C3*/
 
                 en.checked = obj["en"];
 
@@ -1008,12 +1088,21 @@
                 }
             }
 
+            /*IF_PLUGIN_DISPLAY*/
             function parseDisplay(obj, type, system) {
-                var pinList = esp8266pins;
                 /*IF_ESP32*/
                 var pinList = esp32pins;
-                if ("ESP32-S3" == system.chip_model || "ESP32-S2" == system.chip_model) pinList = esp32sXpins;
-                else if("ESP32-C3" == system["chip_model"]) pinList = esp32c3pins;
+                /*IF_ESP32-S2*/
+                pinList = esp32sXpins;
+                /*ENDIF_ESP32-S2*/
+                /*IF_ESP32-S3*/
+                pinList = esp32sXpins;
+                /*ENDIF_ESP32-S3*/
+                /*IF_ESP32-C3*/
+                pinList = esp32c3pins;
+                /*ENDIF_ESP32-C3*/
+                /*ELSE*/
+                var pinList = esp8266pins;
                 /*ENDIF_ESP32*/
 
                 for(var i of ["disp_pwr"])
@@ -1149,6 +1238,7 @@
                 setHide("screenSaver",     !optionsMap.get(dispType)[2]);
                 setHide("pirPin",          !(optionsMap.get(dispType)[2] && (screenSaver==2))); // show pir pin only for motion screensaver
             }
+            /*ENDIF_PLUGIN_DISPLAY*/
 
             function tick() {
                 document.getElementById("date").innerHTML = toIsoDateStr((new Date((++ts) * 1000)));
@@ -1168,7 +1258,9 @@
                     parseCmtRadio(root["radioCmt"], root["system"]["esp_type"], root["system"]);
                     /*ENDIF_ESP32*/
                     parseSerial(root["serial"]);
+                    /*IF_PLUGIN_DISPLAY*/
                     parseDisplay(root["display"], root["system"]["esp_type"], root["system"]);
+                    /*ENDIF_PLUGIN_DISPLAY*/
                     getAjax("/api/inverter/list", parseIv);
                 }
             }
diff --git a/src/web/html/style.css b/src/web/html/style.css
index be0405f8..9df9a4a7 100644
--- a/src/web/html/style.css
+++ b/src/web/html/style.css
@@ -153,7 +153,7 @@ svg.icon {
     background-color: var(--nav-active);
 }
 
-span.seperator {
+span.separator {
     width: 100%;
     height: 1px;
     margin: 5px 0 5px;
diff --git a/src/web/web.h b/src/web/web.h
index de4938f1..0a4f0ed5 100644
--- a/src/web/web.h
+++ b/src/web/web.h
@@ -661,7 +661,7 @@ class Web {
             { "max_power",            "gauge",   metricConstInverterFormat, [](Inverter<> *iv)-> uint64_t {return iv->getMaxPower();} },
             { "radio_rx_success",     "counter" ,metricConstInverterFormat, [](Inverter<> *iv)-> uint64_t {return iv->radioStatistics.rxSuccess;} },
             { "radio_rx_fail",        "counter" ,metricConstInverterFormat, [](Inverter<> *iv)-> uint64_t {return iv->radioStatistics.rxFail;} },
-            { "radio_rx_fail_answer", "counter" ,metricConstInverterFormat, [](Inverter<> *iv)-> uint64_t {return iv->radioStatistics.rxFailNoAnser;} },
+            { "radio_rx_fail_answer", "counter" ,metricConstInverterFormat, [](Inverter<> *iv)-> uint64_t {return iv->radioStatistics.rxFailNoAnswer;} },
             { "radio_frame_cnt",      "counter" ,metricConstInverterFormat, [](Inverter<> *iv)-> uint64_t {return iv->radioStatistics.frmCnt;} },
             { "radio_tx_cnt",         "counter" ,metricConstInverterFormat, [](Inverter<> *iv)-> uint64_t {return iv->radioStatistics.txCnt;} },
             { "radio_retransmits",    "counter" ,metricConstInverterFormat, [](Inverter<> *iv)-> uint64_t {return iv->radioStatistics.retransmits;} },