{"id":205,"date":"2026-07-19T19:36:06","date_gmt":"2026-07-19T16:36:06","guid":{"rendered":"https:\/\/alexlasplantas.ru\/?p=205"},"modified":"2026-07-20T17:45:22","modified_gmt":"2026-07-20T14:45:22","slug":"dli-%d0%ba%d0%b0%d0%bb%d1%8c%d0%ba%d1%83%d0%bb%d1%8f%d1%82%d0%be%d1%80-%d1%80%d0%b0%d1%81%d1%87%d1%91%d1%82-led-%d1%84%d0%b8%d1%82%d0%be%d1%81%d0%b2%d0%b5%d1%82%d0%b0-%d0%b4%d0%bb%d1%8f-%d0%ba%d0%be","status":"publish","type":"post","link":"https:\/\/alexlasplantas.ru\/?p=205","title":{"rendered":"\u0420\u0430\u0441\u0447\u0451\u0442 LED \u0444\u0438\u0442\u043e\u0441\u0432\u0435\u0442\u0430 \u0434\u043b\u044f \u043a\u043e\u043c\u043d\u0430\u0442\u043d\u044b\u0445 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0439. DLI \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440."},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>\u0414\u043b\u044f \u0440\u0430\u0441\u0447\u0451\u0442\u0430 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 \u0444\u0438\u0442\u043e\u043b\u0430\u043c\u043f \u0438 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0434\u043e \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u044f \u044f \u0441\u043e\u0437\u0434\u0430\u043b (\u043d\u0430\u0432\u0430\u0439\u0431\u043a\u043e\u0434\u0438\u043b) DLI-\u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u0434\u043b\u044f \u043a\u043e\u043c\u043d\u0430\u0442\u043d\u044b\u0445 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0439. <\/strong>\u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0432\u0437\u044f\u0442\u044b \u0443\u0441\u0440\u0435\u0434\u043d\u0451\u043d\u043d\u044b\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 LED-\u043b\u0430\u043c\u043f \u0438 \u0441\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0439 \u0432 \u0441\u0432\u0435\u0442\u0435.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\">\u041f\u0435\u0440\u0435\u0434\u0432\u0438\u0433\u0430\u044f \u043f\u043e\u043b\u0437\u0443\u043d\u043a\u0438 <strong>\u041c\u043e\u0449\u043d\u043e\u0441\u0442\u0438<\/strong>, <strong>\u0412\u044b\u0441\u043e\u0442\u044b<\/strong> \u0438 <strong>\u0427\u0430\u0441\u043e\u0432<\/strong>, \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u044d\u0442\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043e\u0431\u0449\u0438\u0439 DLI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0412\u044b \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 DLI, PPFD \u0438 \u043a\u0443\u0434\u0430 \u043f\u0440\u043e\u043f\u0430\u043b\u0438 \u043b\u044e\u043a\u0441\u044b? <\/strong>\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u043c\u043e\u044e \u0441\u0442\u0430\u0442\u044c\u044e <a href=\"https:\/\/alexlasplantas.ru\/?p=151\" data-type=\"post\" data-id=\"151\">\u043e \u0441\u0443\u0442\u043e\u0447\u043d\u043e\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u044f \u0432 \u0441\u0432\u0435\u0442\u0435<\/a>. DLI (\u0441\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u0441\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b) \u2014 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0433\u043e\u043b\u044b\u0445 \u041b\u044e\u043a\u0441\u043e\u0432 \u0438 PPFD.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0412\u0441\u0435 \u043b\u0430\u043c\u043f\u044b \u0440\u0430\u0437\u043d\u044b\u0435, \u0432\u0441\u0435 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043d\u044b\u0435, \u0438 \u0434\u0430\u0436\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043a\u043e\u043c\u043d\u0430\u0442\u044b \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u044b \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443 \u2014 \u043e\u043a\u043d\u0430, \u0441\u0442\u0435\u043d\u044b, \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0435 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0443 \u0432\u0441\u0435\u0445 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0446\u0438\u0444\u0440\u044b \u0438\u0437 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u2014 \u044d\u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430, \u0430 \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044f. \u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0439\u0442\u0435 \u0437\u0430 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0435\u043c: \u0432\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043b\u0438\u0441\u0442\u044c\u044f \u043c\u0435\u043b\u044c\u0447\u0430\u044e\u0442 \u0438 \u0442\u0435\u0440\u044f\u044e\u0442 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0446\u0432\u0435\u0442\u0430 \u2014 \u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043b\u0430\u043c\u043f\u0443 \u0438\u043b\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u044c\u0442\u0435 \u0432\u0440\u0435\u043c\u044f; \u043d\u0430 \u043b\u0438\u0441\u0442\u044c\u044f\u0445 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0432\u0435\u0442\u043b\u044b\u0435 \u043f\u044f\u0442\u043d\u0430 \u0438\u043b\u0438 \u043f\u043e\u0434\u0441\u044b\u0445\u0430\u044e\u0442 \u043a\u0440\u0430\u044f\/\u043a\u043e\u043d\u0447\u0438\u043a\u0438 \u2014 \u043f\u043e\u0434\u043d\u0438\u043c\u0438\u0442\u0435 \u043b\u0430\u043c\u043f\u0443 \u0432\u044b\u0448\u0435 \u0438\u043b\u0438 \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u0435 \u0447\u0430\u0441\u044b. \u0421\u0430\u043c\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0435 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u044f \u2014 \u043b\u0443\u0447\u0448\u0438\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440, \u0447\u0435\u043c \u043b\u044e\u0431\u0430\u044f \u0444\u043e\u0440\u043c\u0443\u043b\u0430.<\/p>\n\n\n\n<div style=\"height:19px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div style=\"height:19px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<style data-wp-block-html=\"css\">\n#fito-calc-container {\n  background: #FBFFF2;\n  border: 1px solid #c8dfa6;\n  border-radius: var(--wp--custom--border-radius, 8px);\n  padding: 30px;\n  width: 100%;\n  max-width: 100%;\n  margin: 30px auto;\n  font-family: var(--wp--preset--font-family--system-font, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif);\n  color: #005131;\n  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.04);\n  box-sizing: border-box;\n}\n\n#fito-calc-container * {\n  box-sizing: border-box;\n}\n\n.calc-title {\n  margin-top: 0;\n  margin-bottom: 8px;\n  font-size: 24px;\n  color: #005131;\n  font-weight: 700;\n  text-align: center;\n}\n\n.calc-subtitle {\n  font-size: 14px;\n  color: #005131;\n  text-align: center;\n  margin-bottom: 24px;\n  line-height: 1.4;\n}\n\n.calc-divider {\n  border: 0;\n  height: 1px;\n  background: #c8dfa6;\n  margin: 0 0 24px 0;\n}\n\n.calc-group {\n  margin-bottom: 28px;\n}\n\n.calc-group label {\n  display: block;\n  font-size: 14px;\n  font-weight: 600;\n  margin-bottom: 8px;\n  color: #005131;\n}\n\n.calc-mode-tabs {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-start;\n  gap: 12px;\n}\n\n.calc-mode-tab {\n  border: 1px solid #0b6a47;\n  border-radius: 999px;\n  background: #FBFFF2;\n  color: #005131;\n  font-size: 18px;\n  font-weight: 500;\n  line-height: 1.2;\n  padding: 16px 24px;\n  text-align: left;\n  flex: 0 0 auto;\n  white-space: nowrap;\n  cursor: pointer;\n  transition: background-color 0.2s ease, border-color 0.2s ease;\n}\n\n.calc-mode-tab.is-active {\n  background: #c9f43a;\n  border-color: #c9f43a;\n  font-weight: 700;\n}\n\n.calc-mode-native {\n  display: none !important;\n}\n\n.calc-group select {\n  width: 100% !important;\n  padding: 10px 45px 10px 14px !important;\n  border: 1px solid #c8dfa6 !important;\n  border-radius: 6px !important;\n  font-size: 15px !important;\n  color: #005131 !important;\n  background-color: #EBF7D3 !important;\n  -webkit-appearance: none !important;\n  -moz-appearance: none !important;\n  appearance: none !important;\n  background-image: url(\"data:image\/svg+xml;utf8,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23005131' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'><\/polyline><\/svg>\") !important;\n  background-repeat: no-repeat !important;\n  background-position: right 14px center !important;\n  background-size: 16px !important;\n  transition: border-color 0.2s, background-color 0.2s;\n}\n\n.calc-group input[type=\"number\"] {\n  width: 100% !important;\n  padding: 10px 14px !important;\n  border: 1px solid #c8dfa6 !important;\n  border-radius: 6px !important;\n  font-size: 15px !important;\n  background-color: #EBF7D3 !important;\n  color: #005131 !important;\n  transition: border-color 0.2s, background-color 0.2s;\n}\n\n.calc-group select::-ms-expand {\n  display: none !important;\n}\n.calc-group select:-moz-focusring {\n  color: transparent !important;\n  text-shadow: 0 0 0 #005131 !important;\n}\n\n.calc-group select:focus,\n.calc-group input[type=\"number\"]:focus {\n  border-color: #005131 !important;\n  outline: none !important;\n  background-color: #FBFFF2 !important;\n}\n\n.input-range-wrapper {\n  margin-bottom: 34px;\n}\n\n.dynamic-slider {\n  -webkit-appearance: none;\n  appearance: none;\n  width: 100%;\n  height: 8px;\n  border-radius: 4px;\n  background: #EBF7D3;\n  outline: none;\n  margin: 15px 0 10px 0;\n  cursor: pointer;\n  display: block;\n}\n\n.dynamic-slider::-webkit-slider-thumb {\n  -webkit-appearance: none;\n  appearance: none;\n  width: 22px;\n  height: 22px;\n  border-radius: 50%;\n  cursor: pointer;\n  transition: transform 0.1s ease;\n  box-shadow: 0 2px 4px rgba(0,0,0,0.15);\n  border: 2px solid #ffffff;\n}\n.dynamic-slider::-webkit-slider-thumb:hover { transform: scale(1.15); }\n\n.dynamic-slider::-moz-range-thumb {\n  width: 22px;\n  height: 22px;\n  border-radius: 50%;\n  cursor: pointer;\n  transition: transform 0.1s ease;\n  box-shadow: 0 2px 4px rgba(0,0,0,0.15);\n  border: 2px solid #ffffff;\n}\n.dynamic-slider::-moz-range-thumb:hover { transform: scale(1.15); }\n\n.slider-watts::-webkit-slider-thumb { background-color: #f59e0b; }\n.slider-watts::-moz-range-thumb { background-color: #f59e0b; }\n.slider-watts::-webkit-slider-runnable-track { background: linear-gradient(to right, #f59e0b 0%, #f59e0b var(--value), #EBF7D3 var(--value), #EBF7D3 100%); border-radius: 4px; }\n.slider-watts::-moz-range-track { background: linear-gradient(to right, #f59e0b 0%, #f59e0b var(--value), #EBF7D3 var(--value), #EBF7D3 100%); border-radius: 4px; }\n\n.slider-height::-webkit-slider-thumb { background-color: #6366f1; }\n.slider-height::-moz-range-thumb { background-color: #6366f1; }\n.slider-height::-webkit-slider-runnable-track { background: linear-gradient(to right, #6366f1 0%, #6366f1 var(--value), #EBF7D3 var(--value), #EBF7D3 100%); border-radius: 4px; }\n.slider-height::-moz-range-track { background: linear-gradient(to right, #6366f1 0%, #6366f1 var(--value), #EBF7D3 var(--value), #EBF7D3 100%); border-radius: 4px; }\n\n.slider-normal::-webkit-slider-thumb { background-color: #10B96D; }\n.slider-normal::-moz-range-thumb { background-color: #10B96D; }\n.slider-normal::-webkit-slider-runnable-track { background: linear-gradient(to right, #10B96D 0%, #10B96D var(--value), #EBF7D3 var(--value), #EBF7D3 100%); border-radius: 4px; }\n.slider-normal::-moz-range-track { background: linear-gradient(to right, #10B96D 0%, #10B96D var(--value), #EBF7D3 var(--value), #EBF7D3 100%); border-radius: 4px; }\n\n.slider-warning::-webkit-slider-thumb { background-color: #f59e0b; }\n.slider-warning::-moz-range-thumb { background-color: #f59e0b; }\n.slider-warning::-webkit-slider-runnable-track { background: linear-gradient(to right, #f59e0b 0%, #f59e0b var(--value), #EBF7D3 var(--value), #EBF7D3 100%); border-radius: 4px; }\n.slider-warning::-moz-range-track { background: linear-gradient(to right, #f59e0b 0%, #f59e0b var(--value), #EBF7D3 var(--value), #EBF7D3 100%); border-radius: 4px; }\n\n.slider-danger::-webkit-slider-thumb { background-color: #ef4444; }\n.slider-danger::-moz-range-thumb { background-color: #ef4444; }\n.slider-danger::-webkit-slider-runnable-track { background: linear-gradient(to right, #ef4444 0%, #ef4444 var(--value), #EBF7D3 var(--value), #EBF7D3 100%); border-radius: 4px; }\n.slider-danger::-moz-range-track { background: linear-gradient(to right, #ef4444 0%, #ef4444 var(--value), #EBF7D3 var(--value), #EBF7D3 100%); border-radius: 4px; }\n\n.dynamic-slider:disabled {\n  background: #c8dfa6;\n  cursor: not-allowed;\n  opacity: 0.6;\n}\n.dynamic-slider:disabled::-webkit-slider-thumb {\n  background-color: #a3c27a;\n  transform: none !important;\n  cursor: not-allowed;\n}\n.dynamic-slider:disabled::-moz-range-thumb {\n  background-color: #a3c27a;\n  transform: none !important;\n  cursor: not-allowed;\n}\n\n.watts-bold      { color: #f59e0b; font-weight: 700; }\n.distance-bold   { color: #6366f1; font-weight: 700; }\n.distance-danger { color: #b91c1c; font-weight: 700; }\n.hours-normal    { color: #10B96D; font-weight: 700; }\n.hours-warning   { color: #b45309; font-weight: 700; }\n.hours-danger    { color: #b91c1c; font-weight: 700; }\n\n.efficiency-badge {\n  margin-top: 8px;\n  font-size: 13px;\n  color: #005131;\n  background: #EBF7D3;\n  padding: 6px 12px;\n  border-radius: 6px;\n  display: inline-block;\n}\n\n.hours-warning-msg, .distance-warning-msg {\n  margin-top: 12px;\n  font-size: 13px;\n  line-height: 1.4;\n  padding: 10px 12px;\n  border-radius: 6px;\n  font-weight: 500;\n}\n.msg-warning { background-color: #fffbeb; color: #92400e; border-left: 4px solid #f59e0b; }\n.msg-danger  { background-color: #fef2f2; color: #991b1b; border-left: 4px solid #ef4444; }\n\n#calc-results {\n  margin-top: 28px;\n  padding-top: 24px;\n  border-top: 2px dashed #c8dfa6;\n}\n\n.result-metrics {\n  display: flex;\n  gap: 16px;\n  margin-bottom: 24px;\n}\n\n.metric-card {\n  flex: 1;\n  background: #EBF7D3;\n  border: 1px solid #c8dfa6;\n  border-radius: 8px;\n  padding: 16px 10px;\n  text-align: center;\n}\n\n.metric-card.metric-card-highlight {\n  background: #fef3c7;\n  border: 2px solid #f59e0b;\n  box-shadow: 0 2px 8px rgba(245, 158, 11, 0.15);\n}\n\n.metric-card.metric-card-highlight .metric-label {\n  color: #92400e;\n}\n\n.metric-card.metric-card-highlight .metric-value,\n.metric-card.metric-card-highlight .metric-unit {\n  color: #92400e;\n}\n\n.metric-label {\n  display: block;\n  font-size: 11px;\n  text-transform: uppercase;\n  color: #005131;\n  font-weight: 600;\n  letter-spacing: 0.5px;\n  margin-bottom: 6px;\n}\n\n.metric-value {\n  display: block;\n  font-size: 32px;\n  font-weight: 700;\n  color: #005131;\n  line-height: 1.1;\n  transition: color 0.2s ease;\n}\n\n.metric-unit {\n  display: block;\n  font-size: 12px;\n  color: #3a7a58;\n  margin-top: 4px;\n}\n\n\/* \u0426\u0432\u0435\u0442 \u0447\u0438\u0441\u043b\u0430 DLI \u043f\u043e \u0441\u0442\u0430\u0442\u0443\u0441\u0443 *\/\n.text-excellent { color: #4f5df0; }\n.text-success { color: #35c63a; }\n.text-warning { color: #f08a00; }\n.text-danger  { color: #e23346; }\n\n.verdict-container {\n  padding: 16px;\n  border-radius: 8px;\n  border-left: 4px solid #c8dfa6;\n}\n.verdict-container h4 {\n  margin-top: 0;\n  margin-bottom: 6px;\n  font-size: 16px;\n  font-weight: 700;\n}\n.verdict-container p {\n  margin: 0;\n  font-size: 14px;\n  line-height: 1.5;\n}\n.verdict-container .target-info {\n  margin-top: 10px;\n  font-size: 13px;\n  color: #3f3f46;\n  border-top: 1px solid rgba(0, 81, 49, 0.1);\n  padding-top: 8px;\n}\n\n.status-danger         { background-color: #fef2f2; border-left-color: #ef4444; color: #991b1b; }\n.status-warning        { background-color: #fffbeb; border-left-color: #f59e0b; color: #92400e; }\n.status-success        { background-color: #effaf3; border-left-color: #10B96D; color: #065f46; }\n.status-excellent      { background-color: #faf5ff; border-left-color: #8b5cf6; color: #5b21b6; }\n.status-recommendation { background-color: #fef3c7; border-left-color: #f59e0b; color: #78350f; }\n\n@media (max-width: 480px) {\n  .calc-mode-tab {\n    font-size: 16px;\n    padding: 14px 18px;\n  }\n\n  .result-metrics {\n    flex-direction: column;\n  }\n}\n\n<\/style>\n\n<script data-wp-block-html=\"js\">\n(function() {\n\"use strict\";\n\nif (typeof window === \"undefined\") return;\nif (window.__fitoCalcScriptLoaded === true) return;\nwindow.__fitoCalcScriptLoaded = true;\n\nfunction initFitoCalculator() {\n  const container = document.getElementById(\"fito-calc-container\");\n  if (!container || container.dataset.fitoCalcInitialized === \"1\") return;\n  container.dataset.fitoCalcInitialized = \"1\";\n  const FitoConfig = {\n      lamp_types: {\n          \"quantum_board_full\": {\n              efficiency: 2.5,\n              spectrum: \"\u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0435\u043a\u0442\u0440 + \u043a\u0440\u0430\u0441\u043d\u044b\u0439 660 \u043d\u043c\",\n              dist_offset: 20,\n              room_loss_factor: 0.85\n          },\n          \"e27_fitolamp_clear\": {\n              efficiency: 2.2,\n              spectrum: \"\u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0435\u043a\u0442\u0440 + \u043a\u0440\u0430\u0441\u043d\u044b\u0439 660 \u043d\u043c\",\n              dist_offset: 12,\n              room_loss_factor: 0.78\n          },\n          \"e27_household_matte\": {\n              efficiency: 1.0,\n              spectrum: \"\u0411\u0435\u043b\u044b\u0439 \u0441\u043f\u0435\u043a\u0442\u0440\",\n              dist_offset: 5,\n              room_loss_factor: 0.45\n          }\n      },\n      plant_groups: {\n          \"low_light\":       { min_dli: 2.0,  good_dli: 4.0,  opt_dli: 6.0,  max_dli: 8.0  },\n          \"medium_light\":    { min_dli: 4.0,  good_dli: 7.0,  opt_dli: 10.0, max_dli: 12.0 },\n          \"high_light\":      { min_dli: 10.0, good_dli: 13.0, opt_dli: 17.0, max_dli: 20.0 },\n          \"very_high_light\": { min_dli: 16.0, good_dli: 19.0, opt_dli: 25.0, max_dli: 30.0 }\n      },\n      lux_to_ppfd_factors: {\n          \"quantum_board\": 0.0195,\n          \"led_cool\": 0.0135,\n          \"led_warm\": 0.0150,\n          \"sunlight\": 0.0185,\n          \"bicolor\": 0.0450\n      }\n  };\n\n  const calcModeSelect = document.getElementById(\"calc-mode\");\n  const calcModeTabs = document.querySelectorAll(\".calc-mode-tab\");\n  const blockPreset = document.getElementById(\"block-preset\");\n  const blockManual = document.getElementById(\"block-manual\");\n\n  const lampTypeGroup = document.getElementById(\"lamp-type-group\");\n  const lampTypeSelect = document.getElementById(\"lamp-type\");\n  const effValue = document.getElementById(\"eff-value\");\n  const spectrumValue = document.getElementById(\"spectrum-value\");\n\n  const wattsSlider = document.getElementById(\"lamp-watts-slider\");\n  const wattsVal = document.getElementById(\"watts-val\");\n  const wattsLabel = document.getElementById(\"watts-label\");\n  const wattsWrapper = document.getElementById(\"watts-wrapper\");\n\n  const dliTargetSlider = document.getElementById(\"dli-target-slider\");\n  const dliTargetVal = document.getElementById(\"dli-target-val\");\n  const dliTargetWrapper = document.getElementById(\"dli-target-wrapper\");\n\n  const manualParWrapper = document.getElementById(\"manual-par-wrapper\");\n  const passportPPFDInput = document.getElementById(\"passport-ppfd\");\n  const passportPPFDVal = document.getElementById(\"passport-ppfd-val\");\n  const passportDistanceInput = document.getElementById(\"passport-distance\");\n  const passportDistanceVal = document.getElementById(\"passport-distance-val\");\n\n  const distanceSlider = document.getElementById(\"lamp-distance-slider\");\n  const distanceVal = document.getElementById(\"distance-val\");\n  const distanceWarningText = document.getElementById(\"distance-warning-text\");\n\n  const manualTypeSelect = document.getElementById(\"manual-type\");\n  const luxSourceContainer = document.getElementById(\"lux-source-container\");\n  const luxSourceTypeSelect = document.getElementById(\"lux-source-type\");\n  const manualValueInput = document.getElementById(\"manual-value\");\n  const manualValueLabel = document.getElementById(\"manual-value-label\");\n\n  const hoursSlider = document.getElementById(\"light-hours\");\n  const hoursVal = document.getElementById(\"hours-val\");\n  const hoursWarningText = document.getElementById(\"hours-warning-text\");\n  const plantGroupSelect = document.getElementById(\"plant-group\");\n\n  const labelMetric1 = document.getElementById(\"label-metric-1\");\n  const unitMetric1 = document.getElementById(\"unit-metric-1\");\n  const labelMetric2 = document.getElementById(\"label-metric-2\");\n  const unitMetric2 = document.getElementById(\"unit-metric-2\");\n\n  const verdictBox = document.getElementById(\"verdict-box\");\n  const statusEl = document.getElementById(\"res-status\");\n  const adviceEl = document.getElementById(\"res-advice\");\n  const resPPFDEl = document.getElementById(\"res-ppfd\");\n  const resDLIEl = document.getElementById(\"res-dli\");\n  const resTargetDLIEl = document.getElementById(\"res-target-dli\");\n\n  function updateLampDetails(lamp) {\n      if (!lamp) return;\n      if (effValue) effValue.textContent = lamp.efficiency.toFixed(1);\n      if (spectrumValue) spectrumValue.textContent = lamp.spectrum;\n  }\n\n  function updateSliderProgress(slider) {\n      if (!slider) return;\n      const min = parseFloat(slider.min) || 0;\n      const max = parseFloat(slider.max) || 100;\n      const value = parseFloat(slider.value) || 0;\n      const percent = ((value - min) \/ (max - min)) * 100;\n      const thumbWidth = 22;\n      const offset = (0.5 - percent \/ 100) * thumbWidth;\n      slider.style.setProperty(\"--value\", `calc(${percent}% + ${offset}px)`);\n  }\n\n  function calculatePPFDByPower(watts, efficiency, distanceCm, lampKey) {\n      const lamp = FitoConfig.lamp_types[lampKey];\n      const offset = lamp ? lamp.dist_offset : 0;\n      const lossFactor = lamp ? lamp.room_loss_factor : 0.70;\n      const distanceM = (distanceCm + offset) \/ 100;\n      if (distanceM <= 0) return 0;\n      const totalPPF = watts * efficiency;\n      const ppfdInBox = totalPPF \/ (distanceM * distanceM);\n      return Math.round(ppfdInBox * lossFactor);\n  }\n\n  function calculatePPFDByPassport(passportPPFD, passportDistance, realDistance) {\n      if (realDistance <= 0) return 0;\n      return Math.round(passportPPFD * Math.pow(passportDistance \/ realDistance, 2));\n  }\n\n  function applyVerdictByDLI(calculatedDLI, plant) {\n      if (!verdictBox || !statusEl || !adviceEl || !resDLIEl) return;\n      const maxSafeDLI = typeof plant.max_dli === \"number\" ? plant.max_dli : null;\n\n      verdictBox.className = \"verdict-container\";\n      resDLIEl.classList.remove(\"text-success\", \"text-warning\", \"text-danger\", \"text-excellent\");\n\n      if (maxSafeDLI !== null) {\n          if (calculatedDLI > maxSafeDLI) {\n          verdictBox.classList.add(\"status-danger\");\n          statusEl.textContent = \"\u26a0\ufe0f \u041f\u0435\u0440\u0435\u0438\u0437\u0431\u044b\u0442\u043e\u043a \u0441\u0432\u0435\u0442\u0430\";\n          adviceEl.textContent = \"\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0441\u0432\u0435\u0442\u0430! \u0422\u0435\u043a\u0443\u0449\u0438\u0439 DLI \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0434\u043b\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b.\";\n          resDLIEl.classList.add(\"text-danger\");\n          } else if (calculatedDLI >= plant.opt_dli) {\n              verdictBox.classList.add(\"status-excellent\");\n              statusEl.textContent = \"\ud83c\udf1f \u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435\";\n              adviceEl.textContent = \"\u0420\u0435\u0436\u0438\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u043e\u0441\u0442\u0430. \u0420\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0432\u0435\u0442\u0432\u0438\u0442\u0441\u044f \u0438 \u0446\u0432\u0435\u0442\u0451\u0442. \u0421\u043b\u0435\u0434\u0438\u0442\u0435 \u0437\u0430 \u0432\u043b\u0430\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0443\u0431\u0441\u0442\u0440\u0430\u0442\u0430 \u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u0435\u043c \u2014 \u043f\u0440\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u043c DLI \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0432\u043e\u0434\u044b \u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c \u0432 \u0443\u0434\u043e\u0431\u0440\u0435\u043d\u0438\u044f\u0445 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u044e\u0442 (\u0431\u0435\u0437 \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u043a\u043e\u0440\u043c\u043a\u0438 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u0438\u0441\u0442\u043e\u0449\u0438\u0442 \u0441\u0432\u043e\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b). \u041f\u0440\u0438\u0443\u0447\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u043a \u044d\u0442\u043e\u0439 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e (\u043d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0432\u044b\u0441\u043e\u0442\u044b), \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0432\u043e\u0433\u043e \u0448\u043e\u043a\u0430.\";\n              resDLIEl.classList.add(\"text-excellent\");\n          } else if (calculatedDLI >= plant.good_dli) {\n              verdictBox.classList.add(\"status-success\");\n              statusEl.textContent = \"\u2600\ufe0f \u0425\u043e\u0440\u043e\u0448\u0435\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435\";\n              adviceEl.textContent = \"\u0420\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0437\u0434\u043e\u0440\u043e\u0432\u044b\u043c, \u0438\u043c\u0435\u0435\u0442 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u0443\u044e \u043e\u043a\u0440\u0430\u0441\u043a\u0443 \u043b\u0438\u0441\u0442\u044c\u0435\u0432 \u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u043e\u0443\u0437\u043b\u0438\u044f. \u041e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0430\u043b\u0430\u043d\u0441 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439. \u0415\u0441\u043b\u0438 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u044f\u043b\u043e \u0432 \u0442\u0435\u043d\u0438, \u043f\u0440\u0438\u0443\u0447\u0430\u0439\u0442\u0435 \u0435\u0433\u043e \u043a \u044d\u0442\u043e\u0439 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 7\u201310 \u0434\u043d\u0435\u0439 (\u043d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0432\u044b\u0441\u043e\u0442\u044b \u043f\u043e\u0434\u0432\u0435\u0441\u0430), \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0432\u043e\u0433\u043e \u0448\u043e\u043a\u0430.\";\n              resDLIEl.classList.add(\"text-success\");\n          } else if (calculatedDLI >= plant.min_dli) {\n              verdictBox.classList.add(\"status-warning\");\n              statusEl.textContent = \"\u26c5 \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\";\n              adviceEl.textContent = \"\u0420\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0436\u0438\u0437\u043d\u0435\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0432\u044b\u0442\u044f\u043d\u0443\u0442\u044b\u0435 \u0441\u0442\u0435\u0431\u043b\u0438 \u0438\u043b\u0438 \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439 \u0440\u043e\u0441\u0442. \u0414\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u044c\u0442\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0438\u043b\u0438 \u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043b\u0430\u043c\u043f\u0443.\";\n              resDLIEl.classList.add(\"text-warning\");\n          } else {\n              verdictBox.classList.add(\"status-danger\");\n              statusEl.textContent = \"\u274c \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0432\u0435\u0442\u0430 (\u0414\u0435\u0444\u0438\u0446\u0438\u0442)\";\n              adviceEl.textContent = \"\u0414\u0435\u0444\u0438\u0446\u0438\u0442 \u044d\u043d\u0435\u0440\u0433\u0438\u0438. \u0420\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u043d\u0430\u0447\u043d\u0451\u0442 \u0432\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0431\u043b\u0435\u0434\u043d\u0435\u0442\u044c, \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0438\u0436\u043d\u0438\u0435 \u043b\u0438\u0441\u0442\u044c\u044f \u0438\u043b\u0438 \u043e\u0442\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0446\u0432\u0435\u0441\u0442\u0438. \u041e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043b\u0430\u043c\u043f\u0443 \u043d\u0438\u0436\u0435 \u0438\u043b\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u044c\u0442\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0447\u0430\u0441\u043e\u0432 \u0432 \u0434\u0435\u043d\u044c.\";\n              resDLIEl.classList.add(\"text-danger\");\n          }\n      } else if (calculatedDLI >= plant.opt_dli) {\n          verdictBox.classList.add(\"status-excellent\");\n          statusEl.textContent = \"\ud83c\udf1f \u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435\";\n          adviceEl.textContent = \"\u0420\u0435\u0436\u0438\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u043e\u0441\u0442\u0430. \u0420\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0432\u0435\u0442\u0432\u0438\u0442\u0441\u044f \u0438 \u0446\u0432\u0435\u0442\u0451\u0442. \u0421\u043b\u0435\u0434\u0438\u0442\u0435 \u0437\u0430 \u0432\u043b\u0430\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0443\u0431\u0441\u0442\u0440\u0430\u0442\u0430 \u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u0435\u043c \u2014 \u043f\u0440\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u043c DLI \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0432\u043e\u0434\u044b \u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c \u0432 \u0443\u0434\u043e\u0431\u0440\u0435\u043d\u0438\u044f\u0445 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u044e\u0442 (\u0431\u0435\u0437 \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u043a\u043e\u0440\u043c\u043a\u0438 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u0438\u0441\u0442\u043e\u0449\u0438\u0442 \u0441\u0432\u043e\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b). \u041f\u0440\u0438\u0443\u0447\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u043a \u044d\u0442\u043e\u0439 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e (\u043d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0432\u044b\u0441\u043e\u0442\u044b), \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0432\u043e\u0433\u043e \u0448\u043e\u043a\u0430.\";\n          resDLIEl.classList.add(\"text-excellent\");\n      } else if (calculatedDLI >= plant.good_dli) {\n          verdictBox.classList.add(\"status-success\");\n          statusEl.textContent = \"\u2600\ufe0f \u0425\u043e\u0440\u043e\u0448\u0435\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435\";\n          adviceEl.textContent = \"\u0420\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0437\u0434\u043e\u0440\u043e\u0432\u044b\u043c, \u0438\u043c\u0435\u0435\u0442 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u0443\u044e \u043e\u043a\u0440\u0430\u0441\u043a\u0443 \u043b\u0438\u0441\u0442\u044c\u0435\u0432 \u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u043e\u0443\u0437\u043b\u0438\u044f. \u041e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0430\u043b\u0430\u043d\u0441 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439. \u0415\u0441\u043b\u0438 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u044f\u043b\u043e \u0432 \u0442\u0435\u043d\u0438, \u043f\u0440\u0438\u0443\u0447\u0430\u0439\u0442\u0435 \u0435\u0433\u043e \u043a \u044d\u0442\u043e\u0439 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 7\u201310 \u0434\u043d\u0435\u0439 (\u043d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0432\u044b\u0441\u043e\u0442\u044b \u043f\u043e\u0434\u0432\u0435\u0441\u0430), \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0432\u043e\u0433\u043e \u0448\u043e\u043a\u0430.\";\n          resDLIEl.classList.add(\"text-success\");\n      } else if (calculatedDLI >= plant.min_dli) {\n          verdictBox.classList.add(\"status-warning\");\n          statusEl.textContent = \"\u26c5 \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\";\n          adviceEl.textContent = \"\u0420\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0436\u0438\u0437\u043d\u0435\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0432\u044b\u0442\u044f\u043d\u0443\u0442\u044b\u0435 \u0441\u0442\u0435\u0431\u043b\u0438 \u0438\u043b\u0438 \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439 \u0440\u043e\u0441\u0442. \u0414\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u044c\u0442\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0438\u043b\u0438 \u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043b\u0430\u043c\u043f\u0443.\";\n          resDLIEl.classList.add(\"text-warning\");\n      } else {\n          verdictBox.classList.add(\"status-danger\");\n          statusEl.textContent = \"\u274c \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0432\u0435\u0442\u0430 (\u0414\u0435\u0444\u0438\u0446\u0438\u0442)\";\n          adviceEl.textContent = \"\u0414\u0435\u0444\u0438\u0446\u0438\u0442 \u044d\u043d\u0435\u0440\u0433\u0438\u0438. \u0420\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u043d\u0430\u0447\u043d\u0451\u0442 \u0432\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0431\u043b\u0435\u0434\u043d\u0435\u0442\u044c, \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0438\u0436\u043d\u0438\u0435 \u043b\u0438\u0441\u0442\u044c\u044f \u0438\u043b\u0438 \u043e\u0442\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0446\u0432\u0435\u0441\u0442\u0438. \u041e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043b\u0430\u043c\u043f\u0443 \u043d\u0438\u0436\u0435 \u0438\u043b\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u044c\u0442\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0447\u0430\u0441\u043e\u0432 \u0432 \u0434\u0435\u043d\u044c.\";\n          resDLIEl.classList.add(\"text-danger\");\n      }\n  }\n\n  function setMetricsDefault() {\n      if (labelMetric1) labelMetric1.textContent = \"\u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 PPFD\";\n      if (unitMetric1) unitMetric1.textContent = \"\u043c\u043a\u043c\u043e\u043b\u044c\/(\u043c\u00b2\u00b7\u0441\u0435\u043a)\";\n      if (labelMetric2) labelMetric2.textContent = \"\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0439 DLI\";\n      if (unitMetric2) unitMetric2.textContent = \"\u043c\u043e\u043b\u044c\/\u043c\u00b2\/\u0434\u0435\u043d\u044c\";\n  }\n\n  function setMetricsReverse() {\n      if (labelMetric1) labelMetric1.textContent = \"\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0435 \u0412\u0430\u0442\u0442\u044b\";\n      if (unitMetric1) unitMetric1.textContent = \"\u0412\u0442\";\n      if (labelMetric2) labelMetric2.textContent = \"\u0426\u0435\u043b\u0435\u0432\u043e\u0439 DLI\";\n      if (unitMetric2) unitMetric2.textContent = \"\u043c\u043e\u043b\u044c\/\u043c\u00b2\/\u0434\u0435\u043d\u044c\";\n  }\n\n  function syncModeTabs(mode) {\n      if (!calcModeTabs) return;\n      if (calcModeTabs.length <= 0) return;\n      calcModeTabs.forEach(function(tab) {\n          const tabMode = tab.getAttribute(\"data-calc-mode\");\n          const isActive = tabMode === mode;\n          if (isActive) {\n              tab.classList.add(\"is-active\");\n              tab.setAttribute(\"aria-selected\", \"true\");\n          } else {\n              tab.classList.remove(\"is-active\");\n              tab.setAttribute(\"aria-selected\", \"false\");\n          }\n      });\n  }\n\n  function updateLuxSourceVisibility() {\n      if (!luxSourceContainer) return;\n      if (!manualTypeSelect) {\n          luxSourceContainer.style.display = \"none\";\n          return;\n      }\n      if (manualTypeSelect.value === \"lux\") {\n          luxSourceContainer.style.display = \"block\";\n      } else {\n          luxSourceContainer.style.display = \"none\";\n      }\n  }\n\n  function toggleModeUI(mode) {\n      syncModeTabs(mode);\n      if (mode === \"manual\") {\n          if (blockPreset) blockPreset.style.display = \"none\";\n          if (blockManual) blockManual.style.display = \"block\";\n          if (manualParWrapper) manualParWrapper.style.display = \"none\";\n          setMetricsDefault();\n          return;\n      }\n\n      if (blockPreset) blockPreset.style.display = \"block\";\n      if (blockManual) blockManual.style.display = \"none\";\n\n      if (mode === \"reverse\") {\n          if (wattsSlider) wattsSlider.disabled = true;\n          if (lampTypeGroup) lampTypeGroup.style.display = \"block\";\n          if (wattsWrapper) wattsWrapper.style.display = \"none\";\n          if (dliTargetWrapper) dliTargetWrapper.style.display = \"block\";\n          if (manualParWrapper) manualParWrapper.style.display = \"none\";\n          if (wattsLabel) wattsLabel.childNodes[0].nodeValue = \"\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u0430\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u043b\u0430\u043c\u043f\u044b: \";\n          if (wattsVal) wattsVal.textContent = \"--\";\n          setMetricsReverse();\n      } else if (mode === \"manual_par\") {\n          if (wattsSlider) wattsSlider.disabled = false;\n          if (lampTypeGroup) lampTypeGroup.style.display = \"none\";\n          if (wattsWrapper) wattsWrapper.style.display = \"none\";\n          if (dliTargetWrapper) dliTargetWrapper.style.display = \"none\";\n          if (manualParWrapper) manualParWrapper.style.display = \"block\";\n          if (wattsLabel) wattsLabel.childNodes[0].nodeValue = \"\u0420\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u043b\u0430\u043c\u043f\u044b: \";\n          setMetricsDefault();\n      } else {\n          if (wattsSlider) wattsSlider.disabled = false;\n          if (lampTypeGroup) lampTypeGroup.style.display = \"block\";\n          if (wattsWrapper) wattsWrapper.style.display = \"block\";\n          if (dliTargetWrapper) dliTargetWrapper.style.display = \"none\";\n          if (manualParWrapper) manualParWrapper.style.display = \"none\";\n          if (wattsLabel) wattsLabel.childNodes[0].nodeValue = \"\u0420\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u043b\u0430\u043c\u043f\u044b: \";\n          setMetricsDefault();\n      }\n  }\n\n  function updateDistanceAndHoursState(distance, hours) {\n      if (distanceVal) distanceVal.textContent = distance;\n      if (distanceSlider) {\n          distanceSlider.className = \"dynamic-slider\";\n          distanceSlider.classList.add(distance <= 15 ? \"slider-danger\" : \"slider-height\");\n      }\n      if (distanceVal) distanceVal.className = distance <= 15 ? \"distance-danger\" : \"distance-bold\";\n      if (distanceWarningText) {\n          distanceWarningText.style.display = \"none\";\n          distanceWarningText.className = \"distance-warning-msg\";\n          if (distance <= 15) {\n              distanceWarningText.classList.add(\"msg-danger\");\n              distanceWarningText.textContent = \"\u26a0\ufe0f \u041e\u0447\u0435\u043d\u044c \u0431\u043b\u0438\u0437\u043a\u043e! \u041f\u0440\u0438 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043c\u0435\u043d\u0435\u0435 20 \u0441\u043c \u043c\u043e\u0449\u043d\u044b\u0435 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0430\u043c\u043f\u044b \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0442\u0435\u0440\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u043b\u0438 \u0441\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u043e\u0436\u043e\u0433\u0438 \u0432\u0435\u0440\u0445\u0443\u0448\u0435\u043a \u043b\u0438\u0441\u0442\u044c\u0435\u0432. \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0439\u0442\u0435 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0443.\";\n              distanceWarningText.style.display = \"block\";\n          }\n      }\n\n      if (hoursVal) hoursVal.textContent = hours;\n      if (hoursSlider) {\n          hoursSlider.className = \"dynamic-slider\";\n      }\n      if (hoursVal) hoursVal.className = \"\";\n      if (hoursWarningText) {\n          hoursWarningText.style.display = \"none\";\n          hoursWarningText.className = \"hours-warning-msg\";\n      }\n\n      if (hours <= 16) {\n          if (hoursSlider) hoursSlider.classList.add(\"slider-normal\");\n          if (hoursVal) hoursVal.classList.add(\"hours-normal\");\n      } else if (hours <= 18) {\n          if (hoursSlider) hoursSlider.classList.add(\"slider-warning\");\n          if (hoursVal) hoursVal.classList.add(\"hours-warning\");\n          if (hoursWarningText) {\n              hoursWarningText.classList.add(\"msg-warning\");\n              hoursWarningText.textContent = \"\u26a0\ufe0f \u0414\u043b\u0438\u043d\u043d\u044b\u0439 \u0441\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u0434\u0435\u043d\u044c. \u041f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0441\u0442\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0446\u0432\u0435\u0442\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0440\u0430\u0441\u0441\u0430\u0434\u044b, \u043d\u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0432 \u0442\u0430\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0443\u0442\u043e\u043c\u043b\u044f\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043a\u043e\u043c\u043d\u0430\u0442\u043d\u044b\u0445 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0439.\";\n              hoursWarningText.style.display = \"block\";\n          }\n      } else {\n          if (hoursSlider) hoursSlider.classList.add(\"slider-danger\");\n          if (hoursVal) hoursVal.classList.add(\"hours-danger\");\n          if (hoursWarningText) {\n              hoursWarningText.classList.add(\"msg-danger\");\n              hoursWarningText.textContent = \"\ud83d\uded1 \u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u0420\u0430\u0441\u0442\u0435\u043d\u0438\u044f\u043c \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043d\u043e\u0447\u043d\u043e\u0439 \u043e\u0442\u0434\u044b\u0445 (\u043c\u0438\u043d\u0438\u043c\u0443\u043c 4\u20136 \u0447\u0430\u0441\u043e\u0432 \u0442\u0435\u043c\u043d\u043e\u0442\u044b). \u041a\u0440\u0443\u0433\u043b\u043e\u0441\u0443\u0442\u043e\u0447\u043d\u0430\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442 \u043c\u0435\u0442\u0430\u0431\u043e\u043b\u0438\u0437\u043c \u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0434\u0435\u0433\u0440\u0430\u0434\u0430\u0446\u0438\u0438 \u043b\u0438\u0441\u0442\u044c\u0435\u0432.\";\n              hoursWarningText.style.display = \"block\";\n          }\n      }\n  }\n\n  function updateCalculations() {\n      if (!calcModeSelect || !hoursSlider || !distanceSlider || !plantGroupSelect) return;\n\n      const mode = calcModeSelect.value;\n      const hours = parseFloat(hoursSlider.value) || 0;\n      const distance = parseFloat(distanceSlider.value) || 0;\n      const plant = FitoConfig.plant_groups[plantGroupSelect.value];\n      const metricCards = document.querySelectorAll(\".metric-card\");\n\n      updateLuxSourceVisibility();\n      updateDistanceAndHoursState(distance, hours);\n      updateSliderProgress(hoursSlider);\n      updateSliderProgress(distanceSlider);\n\n      if (resTargetDLIEl) {\n          if (!plant) {\n              resTargetDLIEl.textContent = \"\u2014\";\n          } else {\n          resTargetDLIEl.textContent = `${plant.min_dli} \/ ${plant.good_dli} \/ ${plant.opt_dli}`;\n          }\n      }\n\n      metricCards.forEach((card) => card.classList.remove(\"metric-card-highlight\"));\n\n      if (mode === \"reverse\") {\n          const selectedLampKey = lampTypeSelect ? lampTypeSelect.value : \"e27_fitolamp_clear\";\n          const lamp = FitoConfig.lamp_types[selectedLampKey];\n          updateLampDetails(lamp);\n\n          const targetDLI = dliTargetSlider ? parseFloat(dliTargetSlider.value) || 0 : 0;\n          if (dliTargetVal) dliTargetVal.textContent = targetDLI.toFixed(1);\n\n          const safeHours = hours > 0 ? hours : 1;\n          const targetPPFD = Math.round((targetDLI * 1000000) \/ (3600 * safeHours));\n          const distanceM = (distance + lamp.dist_offset) \/ 100;\n          const rawWatts = (targetPPFD * distanceM * distanceM) \/ (lamp.efficiency * lamp.room_loss_factor);\n\n          const minWatts = wattsSlider ? (parseFloat(wattsSlider.min) || 5) : 5;\n          const maxWatts = wattsSlider ? (parseFloat(wattsSlider.max) || 250) : 250;\n          let requiredWatts = Math.max(minWatts, Math.min(maxWatts, Math.ceil(rawWatts)));\n          requiredWatts = requiredWatts <= 20 ? Math.round(requiredWatts) : Math.round(requiredWatts \/ 5) * 5;\n\n          if (wattsSlider) wattsSlider.value = String(requiredWatts);\n          if (wattsVal) wattsVal.textContent = String(requiredWatts);\n          if (resPPFDEl) resPPFDEl.textContent = String(requiredWatts);\n          if (resDLIEl) resDLIEl.textContent = String(targetDLI);\n          if (metricCards[0]) metricCards[0].classList.add(\"metric-card-highlight\");\n\n          if (verdictBox) verdictBox.className = \"verdict-container\";\n          if (resDLIEl) resDLIEl.classList.remove(\"text-success\", \"text-warning\", \"text-danger\", \"text-excellent\");\n\n          let currentStatusText = \"\";\n          let currentAdviceText = \"\";\n\n          const maxSafeDLI = typeof plant.max_dli === \"number\" ? plant.max_dli : null;\n          if (maxSafeDLI !== null) {\n              if (targetDLI > maxSafeDLI) {\n                  if (verdictBox) verdictBox.classList.add(\"status-danger\");\n                  if (resDLIEl) resDLIEl.classList.add(\"text-danger\");\n                  currentStatusText = \"\u26a0\ufe0f \u041f\u0435\u0440\u0435\u0438\u0437\u0431\u044b\u0442\u043e\u043a \u0441\u0432\u0435\u0442\u0430\";\n                  currentAdviceText = \"\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0441\u0432\u0435\u0442\u0430! \u0422\u0435\u043a\u0443\u0449\u0438\u0439 DLI \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0434\u043b\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b.\";\n              } else if (targetDLI >= plant.opt_dli) {\n                  if (verdictBox) verdictBox.classList.add(\"status-excellent\");\n                  if (resDLIEl) resDLIEl.classList.add(\"text-excellent\");\n                  currentStatusText = \"\ud83c\udf1f \u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435\";\n                  currentAdviceText = \"\u0420\u0435\u0436\u0438\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u043e\u0441\u0442\u0430. \u0420\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0432\u0435\u0442\u0432\u0438\u0442\u0441\u044f \u0438 \u0446\u0432\u0435\u0442\u0451\u0442. \u0421\u043b\u0435\u0434\u0438\u0442\u0435 \u0437\u0430 \u0432\u043b\u0430\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0443\u0431\u0441\u0442\u0440\u0430\u0442\u0430 \u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u0435\u043c \u2014 \u043f\u0440\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u043c DLI \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0432\u043e\u0434\u044b \u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c \u0432 \u0443\u0434\u043e\u0431\u0440\u0435\u043d\u0438\u044f\u0445 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u044e\u0442 (\u0431\u0435\u0437 \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u043a\u043e\u0440\u043c\u043a\u0438 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u0438\u0441\u0442\u043e\u0449\u0438\u0442 \u0441\u0432\u043e\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b). \u041f\u0440\u0438\u0443\u0447\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u043a \u044d\u0442\u043e\u0439 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e (\u043d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0432\u044b\u0441\u043e\u0442\u044b), \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0432\u043e\u0433\u043e \u0448\u043e\u043a\u0430.\";\n              } else if (targetDLI >= plant.good_dli) {\n                  if (verdictBox) verdictBox.classList.add(\"status-success\");\n                  if (resDLIEl) resDLIEl.classList.add(\"text-success\");\n                  currentStatusText = \"\u2600\ufe0f \u0425\u043e\u0440\u043e\u0448\u0435\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435\";\n                  currentAdviceText = \"\u0420\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0437\u0434\u043e\u0440\u043e\u0432\u044b\u043c, \u0438\u043c\u0435\u0435\u0442 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u0443\u044e \u043e\u043a\u0440\u0430\u0441\u043a\u0443 \u043b\u0438\u0441\u0442\u044c\u0435\u0432 \u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u043e\u0443\u0437\u043b\u0438\u044f. \u041e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0430\u043b\u0430\u043d\u0441 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439. \u0415\u0441\u043b\u0438 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u044f\u043b\u043e \u0432 \u0442\u0435\u043d\u0438, \u043f\u0440\u0438\u0443\u0447\u0430\u0439\u0442\u0435 \u0435\u0433\u043e \u043a \u044d\u0442\u043e\u0439 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 7\u201310 \u0434\u043d\u0435\u0439 (\u043d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0432\u044b\u0441\u043e\u0442\u044b \u043f\u043e\u0434\u0432\u0435\u0441\u0430), \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0432\u043e\u0433\u043e \u0448\u043e\u043a\u0430.\";\n              } else if (targetDLI >= plant.min_dli) {\n                  if (verdictBox) verdictBox.classList.add(\"status-warning\");\n                  if (resDLIEl) resDLIEl.classList.add(\"text-warning\");\n                  currentStatusText = \"\u26c5 \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\";\n                  currentAdviceText = \"\u0420\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0436\u0438\u0437\u043d\u0435\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0432\u044b\u0442\u044f\u043d\u0443\u0442\u044b\u0435 \u0441\u0442\u0435\u0431\u043b\u0438 \u0438\u043b\u0438 \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439 \u0440\u043e\u0441\u0442. \u0414\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u044c\u0442\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0438\u043b\u0438 \u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043b\u0430\u043c\u043f\u0443.\";\n              } else {\n                  if (verdictBox) verdictBox.classList.add(\"status-danger\");\n                  if (resDLIEl) resDLIEl.classList.add(\"text-danger\");\n                  currentStatusText = \"\u274c \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0432\u0435\u0442\u0430 (\u0414\u0435\u0444\u0438\u0446\u0438\u0442)\";\n                  currentAdviceText = \"\u0414\u0435\u0444\u0438\u0446\u0438\u0442 \u044d\u043d\u0435\u0440\u0433\u0438\u0438. \u0420\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u043d\u0430\u0447\u043d\u0451\u0442 \u0432\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0431\u043b\u0435\u0434\u043d\u0435\u0442\u044c, \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0438\u0436\u043d\u0438\u0435 \u043b\u0438\u0441\u0442\u044c\u044f \u0438\u043b\u0438 \u043e\u0442\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0446\u0432\u0435\u0441\u0442\u0438. \u041e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043b\u0430\u043c\u043f\u0443 \u043d\u0438\u0436\u0435 \u0438\u043b\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u044c\u0442\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0447\u0430\u0441\u043e\u0432 \u0432 \u0434\u0435\u043d\u044c.\";\n              }\n          } else if (targetDLI >= plant.opt_dli) {\n              if (verdictBox) verdictBox.classList.add(\"status-excellent\");\n              if (resDLIEl) resDLIEl.classList.add(\"text-excellent\");\n              currentStatusText = \"\ud83c\udf1f \u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435\";\n              currentAdviceText = \"\u0420\u0435\u0436\u0438\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u043e\u0441\u0442\u0430. \u0420\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0432\u0435\u0442\u0432\u0438\u0442\u0441\u044f \u0438 \u0446\u0432\u0435\u0442\u0451\u0442. \u0421\u043b\u0435\u0434\u0438\u0442\u0435 \u0437\u0430 \u0432\u043b\u0430\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0443\u0431\u0441\u0442\u0440\u0430\u0442\u0430 \u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u0435\u043c \u2014 \u043f\u0440\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u043c DLI \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0432\u043e\u0434\u044b \u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c \u0432 \u0443\u0434\u043e\u0431\u0440\u0435\u043d\u0438\u044f\u0445 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u044e\u0442 (\u0431\u0435\u0437 \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u043a\u043e\u0440\u043c\u043a\u0438 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u0438\u0441\u0442\u043e\u0449\u0438\u0442 \u0441\u0432\u043e\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b). \u041f\u0440\u0438\u0443\u0447\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u043a \u044d\u0442\u043e\u0439 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e (\u043d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0432\u044b\u0441\u043e\u0442\u044b), \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0432\u043e\u0433\u043e \u0448\u043e\u043a\u0430.\";\n          } else if (targetDLI >= plant.good_dli) {\n              if (verdictBox) verdictBox.classList.add(\"status-success\");\n              if (resDLIEl) resDLIEl.classList.add(\"text-success\");\n              currentStatusText = \"\u2600\ufe0f \u0425\u043e\u0440\u043e\u0448\u0435\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435\";\n              currentAdviceText = \"\u0420\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0437\u0434\u043e\u0440\u043e\u0432\u044b\u043c, \u0438\u043c\u0435\u0435\u0442 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u0443\u044e \u043e\u043a\u0440\u0430\u0441\u043a\u0443 \u043b\u0438\u0441\u0442\u044c\u0435\u0432 \u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u043e\u0443\u0437\u043b\u0438\u044f. \u041e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0430\u043b\u0430\u043d\u0441 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439. \u0415\u0441\u043b\u0438 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u044f\u043b\u043e \u0432 \u0442\u0435\u043d\u0438, \u043f\u0440\u0438\u0443\u0447\u0430\u0439\u0442\u0435 \u0435\u0433\u043e \u043a \u044d\u0442\u043e\u0439 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 7\u201310 \u0434\u043d\u0435\u0439 (\u043d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0432\u044b\u0441\u043e\u0442\u044b \u043f\u043e\u0434\u0432\u0435\u0441\u0430), \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0432\u043e\u0433\u043e \u0448\u043e\u043a\u0430.\";\n          } else if (targetDLI >= plant.min_dli) {\n              if (verdictBox) verdictBox.classList.add(\"status-warning\");\n              if (resDLIEl) resDLIEl.classList.add(\"text-warning\");\n              currentStatusText = \"\u26c5 \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\";\n              currentAdviceText = \"\u0420\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0436\u0438\u0437\u043d\u0435\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0432\u044b\u0442\u044f\u043d\u0443\u0442\u044b\u0435 \u0441\u0442\u0435\u0431\u043b\u0438 \u0438\u043b\u0438 \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439 \u0440\u043e\u0441\u0442. \u0414\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u044c\u0442\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0438\u043b\u0438 \u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043b\u0430\u043c\u043f\u0443.\";\n          } else {\n              if (verdictBox) verdictBox.classList.add(\"status-danger\");\n              if (resDLIEl) resDLIEl.classList.add(\"text-danger\");\n              currentStatusText = \"\u274c \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0432\u0435\u0442\u0430 (\u0414\u0435\u0444\u0438\u0446\u0438\u0442)\";\n              currentAdviceText = \"\u0414\u0435\u0444\u0438\u0446\u0438\u0442 \u044d\u043d\u0435\u0440\u0433\u0438\u0438. \u0420\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u043d\u0430\u0447\u043d\u0451\u0442 \u0432\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0431\u043b\u0435\u0434\u043d\u0435\u0442\u044c, \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0438\u0436\u043d\u0438\u0435 \u043b\u0438\u0441\u0442\u044c\u044f \u0438\u043b\u0438 \u043e\u0442\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0446\u0432\u0435\u0441\u0442\u0438. \u041e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043b\u0430\u043c\u043f\u0443 \u043d\u0438\u0436\u0435 \u0438\u043b\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u044c\u0442\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0447\u0430\u0441\u043e\u0432 \u0432 \u0434\u0435\u043d\u044c.\";\n          }\n\n          if (statusEl) statusEl.textContent = currentStatusText;\n          if (adviceEl) {\n              adviceEl.innerHTML = `${currentAdviceText}<br><br>\u0427\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u043c\u0438 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 DLI <b>${targetDLI.toFixed(1)}<\/b> \u043c\u043e\u043b\u044c\/\u043c\u00b2\/\u0434\u0435\u043d\u044c \u043f\u0440\u0438 \u0444\u043e\u0442\u043e\u043f\u0435\u0440\u0438\u043e\u0434\u0435 ${hours} \u0447. \u043d\u0430 \u0432\u044b\u0441\u043e\u0442\u0435 ${distance} \u0441\u043c, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u043b\u0430\u043c\u043f\u0430 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043a\u043e\u043b\u043e <b>${requiredWatts} \u0412\u0442<\/b>.`;\n          }\n          return;\n      }\n\n      let finalPPFD = 0;\n\n      if (mode === \"preset\") {\n          const selectedLampKey = lampTypeSelect ? lampTypeSelect.value : \"e27_fitolamp_clear\";\n          const lamp = FitoConfig.lamp_types[selectedLampKey];\n          updateLampDetails(lamp);\n\n          let watts = wattsSlider ? parseFloat(wattsSlider.value) || 0 : 0;\n          if (wattsVal) wattsVal.textContent = String(watts);\n          finalPPFD = calculatePPFDByPower(watts, lamp.efficiency, distance, selectedLampKey);\n      } else if (mode === \"manual\") {\n          const manualVal = manualValueInput ? parseFloat(manualValueInput.value) : NaN;\n          if (isNaN(manualVal) || manualVal <= 0) {\n              if (resPPFDEl) resPPFDEl.textContent = \"0\";\n              if (resDLIEl) resDLIEl.textContent = \"0\";\n              applyVerdictByDLI(0, plant);\n              return;\n          }\n          const isLuxInput = manualTypeSelect ? manualTypeSelect.value === \"lux\" : false;\n          if (isLuxInput) {\n              const sourceType = luxSourceTypeSelect ? luxSourceTypeSelect.value : \"quantum_board\";\n              const selectedFactor = FitoConfig.lux_to_ppfd_factors[sourceType];\n              let factorToUse = FitoConfig.lux_to_ppfd_factors.quantum_board;\n              if (typeof selectedFactor === \"number\") {\n                  factorToUse = selectedFactor;\n              }\n              finalPPFD = Math.round(manualVal * factorToUse);\n          } else {\n              finalPPFD = Math.round(manualVal);\n          }\n      } else if (mode === \"manual_par\") {\n          const passportPPFD = passportPPFDInput ? parseFloat(passportPPFDInput.value) || 0 : 0;\n          const passportDistance = passportDistanceInput ? parseFloat(passportDistanceInput.value) || 0 : 0;\n          finalPPFD = calculatePPFDByPassport(passportPPFD, passportDistance, distance);\n\n          if (passportPPFDVal) passportPPFDVal.textContent = String(Math.round(passportPPFD));\n          if (passportDistanceVal) passportDistanceVal.textContent = String(Math.round(passportDistance));\n      }\n\n      const calculatedDLI = parseFloat(((finalPPFD * 3600 * hours) \/ 1000000).toFixed(2));\n\n      if (resPPFDEl) resPPFDEl.textContent = String(finalPPFD);\n      if (resDLIEl) resDLIEl.textContent = String(calculatedDLI);\n\n      applyVerdictByDLI(calculatedDLI, plant);\n  }\n\n  if (calcModeSelect) {\n      calcModeSelect.addEventListener(\"change\", function() {\n          toggleModeUI(calcModeSelect.value);\n          updateCalculations();\n      });\n  }\n\n  if (calcModeSelect) {\n      if (calcModeTabs) {\n          if (calcModeTabs.length > 0) {\n              calcModeTabs.forEach(function(tab) {\n                  tab.addEventListener(\"click\", function() {\n                      const mode = tab.getAttribute(\"data-calc-mode\");\n                      if (!mode) return;\n                      calcModeSelect.value = mode;\n                      toggleModeUI(mode);\n                      updateCalculations();\n                  });\n              });\n          }\n      }\n  }\n\n  if (manualTypeSelect) {\n      manualTypeSelect.addEventListener(\"change\", function() {\n          if (manualValueLabel) {\n              manualValueLabel.textContent = manualTypeSelect.value === \"ppfd\"\n                  ? \"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 PPFD (\u043c\u043a\u043c\u043e\u043b\u044c\/\u043c\u00b2\/\u0441\u0435\u043a):\"\n                  : \"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u0438 (Lux \/ \u041b\u044e\u043a\u0441\u044b):\";\n          }\n          updateLuxSourceVisibility();\n          updateCalculations();\n      });\n  }\n\n  if (luxSourceTypeSelect) {\n      luxSourceTypeSelect.addEventListener(\"change\", updateCalculations);\n  }\n\n  if (lampTypeSelect) lampTypeSelect.addEventListener(\"change\", updateCalculations);\n  if (plantGroupSelect) plantGroupSelect.addEventListener(\"change\", updateCalculations);\n\n  if (wattsSlider) {\n      wattsSlider.addEventListener(\"input\", function() {\n          updateSliderProgress(wattsSlider);\n          updateCalculations();\n      });\n  }\n\n  if (distanceSlider) {\n      distanceSlider.addEventListener(\"input\", function() {\n          updateSliderProgress(distanceSlider);\n          updateCalculations();\n      });\n  }\n\n  if (hoursSlider) {\n      hoursSlider.addEventListener(\"input\", function() {\n          updateSliderProgress(hoursSlider);\n          updateCalculations();\n      });\n  }\n\n  if (dliTargetSlider) {\n      dliTargetSlider.addEventListener(\"input\", function() {\n          if (dliTargetVal) dliTargetVal.textContent = parseFloat(dliTargetSlider.value).toFixed(1);\n          updateSliderProgress(dliTargetSlider);\n          updateCalculations();\n      });\n  }\n\n  if (manualValueInput) {\n      manualValueInput.addEventListener(\"input\", updateCalculations);\n      manualValueInput.addEventListener(\"change\", updateCalculations);\n  }\n\n  if (passportPPFDInput) {\n      passportPPFDInput.addEventListener(\"input\", function() {\n          if (passportPPFDVal) passportPPFDVal.textContent = String(Math.round(parseFloat(passportPPFDInput.value) || 0));\n          updateSliderProgress(passportPPFDInput);\n          updateCalculations();\n      });\n      passportPPFDInput.addEventListener(\"change\", updateCalculations);\n  }\n\n  if (passportDistanceInput) {\n      passportDistanceInput.addEventListener(\"input\", function() {\n          if (passportDistanceVal) passportDistanceVal.textContent = String(Math.round(parseFloat(passportDistanceInput.value) || 0));\n          updateSliderProgress(passportDistanceInput);\n          updateCalculations();\n      });\n      passportDistanceInput.addEventListener(\"change\", updateCalculations);\n  }\n\n  \/\/ \u041f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u0441\u043b\u0430\u0439\u0434\u0435\u0440\u043e\u0432\n  if (wattsSlider) updateSliderProgress(wattsSlider);\n  if (distanceSlider) updateSliderProgress(distanceSlider);\n  if (hoursSlider) updateSliderProgress(hoursSlider);\n  if (dliTargetSlider) updateSliderProgress(dliTargetSlider);\n  if (passportPPFDInput) updateSliderProgress(passportPPFDInput);\n  if (passportDistanceInput) updateSliderProgress(passportDistanceInput);\n\n  \/\/ \u041f\u0420\u0410\u0412\u0418\u041b\u042c\u041d\u0410\u042f \u0418\u041d\u0418\u0426\u0418\u0410\u041b\u0418\u0417\u0410\u0426\u0418\u042f \u0411\u0415\u0417 \u0420\u0415\u041a\u0423\u0420\u0421\u0418\u0418 Event\n  if (calcModeSelect) {\n      toggleModeUI(calcModeSelect.value);\n      updateCalculations();\n  }\n}\n\nif (document.readyState === \"loading\") {\n  document.addEventListener(\"DOMContentLoaded\", initFitoCalculator);\n} else {\n  initFitoCalculator();\n}\n\nfunction tryInitFitoCalculator() {\n  const container = document.getElementById(\"fito-calc-container\");\n  if (!container) return false;\n  initFitoCalculator();\n  return true;\n}\n\nfunction scheduleInitRetries() {\n  const maxAttempts = 40;\n  const retryDelayMs = 250;\n  let attempts = 0;\n  const timerId = setInterval(function() {\n    attempts += 1;\n    if (tryInitFitoCalculator() || attempts >= maxAttempts) {\n      clearInterval(timerId);\n    }\n  }, retryDelayMs);\n}\n\nfunction observeDynamicMount() {\n  if (typeof MutationObserver === \"undefined\" || !document.documentElement) return;\n  const observer = new MutationObserver(function() {\n    if (tryInitFitoCalculator()) {\n      observer.disconnect();\n    }\n  });\n  observer.observe(document.documentElement, { childList: true, subtree: true });\n}\n\nwindow.addEventListener(\"load\", tryInitFitoCalculator);\nwindow.addEventListener(\"pageshow\", tryInitFitoCalculator);\nscheduleInitRetries();\nobserveDynamicMount();\n})();\n<\/script>\n\n  <div id=\"fito-calc-container\">\n    <h2 class=\"calc-title\">DLI \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 LED \u0444\u0438\u0442\u043e\u0441\u0432\u0435\u0442\u0430<\/h2>\n    <p class=\"calc-subtitle\">\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0432\u0435\u0442\u0430 \u0438\u043b\u0438 \u043f\u043e\u0434\u0431\u0435\u0440\u0438\u0442\u0435 \u043b\u0430\u043c\u043f\u0443 \u043f\u043e\u0434 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0432\u0430\u0448\u0438\u0445 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0439<\/p>\n\n    <hr class=\"calc-divider\">\n\n    <div class=\"calc-group\">\n      <div class=\"calc-mode-tabs\" role=\"tablist\" aria-label=\"\u0420\u0435\u0436\u0438\u043c \u0440\u0430\u0441\u0447\u0435\u0442\u0430\">\n        <button type=\"button\" class=\"calc-mode-tab is-active\" data-calc-mode=\"preset\">\u0413\u043e\u0442\u043e\u0432\u044b\u0435 \u043f\u0440\u0435\u0441\u0435\u0442\u044b LED \u041b\u0430\u043c\u043f<\/button>\n        <button type=\"button\" class=\"calc-mode-tab\" data-calc-mode=\"manual\">\u0420\u0443\u0447\u043d\u043e\u0439 \u0432\u0432\u043e\u0434 \u0437\u0430\u043c\u0435\u0440\u043e\u0432 PPFD\/Lux<\/button>\n        <button type=\"button\" class=\"calc-mode-tab\" data-calc-mode=\"reverse\">\u041f\u043e\u0434\u0431\u043e\u0440 \u043b\u0430\u043c\u043f \u043f\u043e\u0434 DLI<\/button>\n        <button type=\"button\" class=\"calc-mode-tab\" data-calc-mode=\"manual_par\">\u0420\u0430\u0441\u0447\u0451\u0442 \u043f\u043e\u0434 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043b\u0430\u043c\u043f\u044b<\/button>\n      <\/div>\n      <select id=\"calc-mode\" class=\"calc-mode-native\">\n        <option value=\"preset\" selected>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043f\u0440\u0435\u0441\u0435\u0442\u044b \u043b\u0430\u043c\u043f<\/option>\n        <option value=\"manual\">\u0420\u0443\u0447\u043d\u043e\u0439 \u0432\u0432\u043e\u0434 \u0437\u0430\u043c\u0435\u0440\u043e\u0432 (PPFD \/ Lux)<\/option>\n        <option value=\"reverse\">\u041f\u043e\u0434\u0431\u043e\u0440 \u043b\u0430\u043c\u043f\u044b \u043f\u043e\u0434 \u043d\u043e\u0440\u043c\u0443 DLI<\/option>\n        <option value=\"manual_par\">\u0420\u0430\u0441\u0447\u0435\u0442 \u043f\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u043b\u0430\u043c\u043f\u044b<\/option>\n      <\/select>\n    <\/div>\n\n    <div class=\"calc-group\">\n      <label for=\"plant-group\">\u041a\u0430\u043a\u043e\u0435 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u043c:<\/label>\n      <select id=\"plant-group\">\n        <option value=\"low_light\">\u041d\u0438\u0437\u043a\u0438\u0439 DLI (Low-light) \u2014 \u041f\u0430\u043f\u043e\u0440\u043e\u0442\u043d\u0438\u043a\u0438, \u041c\u0430\u0440\u0430\u043d\u0442\u0430, \u0421\u043f\u0430\u0442\u0438\u0444\u0438\u043b\u043b\u0443\u043c, \u0410\u0433\u043b\u0430\u043e\u043d\u0435\u043c\u0430<\/option>\n        <option value=\"medium_light\" selected>\u0421\u0440\u0435\u0434\u043d\u0438\u0439 DLI (Medium-light) \u2014 \u0410\u043d\u0442\u0443\u0440\u0438\u0443\u043c, \u0424\u0438\u043b\u043e\u0434\u0435\u043d\u0434\u0440\u043e\u043d, \u0410\u043b\u043e\u043a\u0430\u0437\u0438\u044f, \u041a\u0430\u043b\u0430\u0442\u0435\u044f, \u0421\u0430\u043d\u0441\u0435\u0432\u0438\u0435\u0440\u0438\u044f<\/option>\n        <option value=\"high_light\">\u0412\u044b\u0441\u043e\u043a\u0438\u0439 DLI (High-light) \u2014 \u041c\u043e\u043d\u0441\u0442\u0435\u0440\u0430, \u0424\u0438\u043a\u0443\u0441, \u041a\u0440\u043e\u0442\u043e\u043d, \u0413\u0438\u0431\u0438\u0441\u043a\u0443\u0441, \u041f\u0430\u043b\u044c\u043c\u044b<\/option>\n        <option value=\"very_high_light\">\u041e\u0447\u0435\u043d\u044c \u0432\u044b\u0441\u043e\u043a\u0438\u0439 DLI (Very high-light) \u2014 \u0426\u0438\u0442\u0440\u0443\u0441\u043e\u0432\u044b\u0435, \u041f\u0435\u0440\u0446\u044b, \u041a\u0430\u043a\u0442\u0443\u0441\u044b, \u0421\u0443\u043a\u043a\u0443\u043b\u0435\u043d\u0442\u044b<\/option>\n      <\/select>\n    <\/div>\n\n    <div id=\"block-preset\">\n      <div class=\"calc-group\" id=\"lamp-type-group\">\n        <label for=\"lamp-type\">\u0422\u0438\u043f \u0441\u0432\u0435\u0442\u0438\u043b\u044c\u043d\u0438\u043a\u0430 \/ \u043b\u0430\u043c\u043f\u044b:<\/label>\n        <select id=\"lamp-type\">\n          <option value=\"e27_fitolamp_clear\" selected>\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0444\u0438\u0442\u043e\u043b\u0430\u043c\u043f\u0430 E27 (Samsung + Osram\/Seoul, \u0431\u0435\u0437 \u043a\u043e\u043b\u043f\u0430\u043a\u0430)<\/option>\n          <option value=\"quantum_board_full\">\u041f\u0440\u043e\u0444. Quantum Board \/ \u041b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 Full Spectrum (Samsung\/Osram)<\/option>\n          <option value=\"e27_household_matte\">\u041e\u0431\u044b\u0447\u043d\u0430\u044f \u0431\u044b\u0442\u043e\u0432\u0430\u044f LED-\u043b\u0430\u043c\u043f\u0430 (\u043c\u0430\u0442\u043e\u0432\u0430\u044f \u0438\u0437 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430)<\/option>\n        <\/select>\n        <div id=\"lamp-efficiency-info\" class=\"efficiency-badge\">\n          \u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c (PPE): <strong id=\"eff-value\">0<\/strong> \u043c\u043a\u043c\u043e\u043b\u044c\/\u0414\u0436\n        <\/div>\n        <div id=\"lamp-spectrum-info\" class=\"efficiency-badge\">\n          \u0421\u043f\u0435\u043a\u0442\u0440: <strong id=\"spectrum-value\">\u2014<\/strong>\n        <\/div>\n      <\/div>\n\n      <div class=\"calc-group input-range-wrapper\" id=\"dli-target-wrapper\" style=\"display: none;\">\n        <label id=\"dli-target-label\">\u0426\u0435\u043b\u0435\u0432\u043e\u0439 DLI: <span id=\"dli-target-val\" class=\"watts-bold\">7.0<\/span> \u043c\u043e\u043b\u044c\/\u043c\u00b2\/\u0434\u0435\u043d\u044c.<\/label>\n        <input type=\"range\" id=\"dli-target-slider\" min=\"1.0\" max=\"30.0\" value=\"7.0\" step=\"0.5\" class=\"slider-watts dynamic-slider\">\n      <\/div>\n\n      <div class=\"calc-group input-range-wrapper\" id=\"watts-wrapper\">\n        <label id=\"watts-label\">\u0420\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u043b\u0430\u043c\u043f\u044b: <span id=\"watts-val\" class=\"watts-bold\">12<\/span> \u0412\u0442.<\/label>\n        <input type=\"range\" id=\"lamp-watts-slider\" min=\"5\" max=\"250\" value=\"12\" step=\"1\" class=\"slider-watts dynamic-slider\">\n      <\/div>\n\n      <div id=\"manual-par-wrapper\" style=\"display: none;\">\n        <div class=\"calc-group input-range-wrapper\">\n          <label for=\"passport-ppfd\">\u041f\u0430\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0439 PPFD \u043b\u0430\u043c\u043f\u044b: <span id=\"passport-ppfd-val\" class=\"watts-bold\">300<\/span> \u043c\u043a\u043c\u043e\u043b\u044c\/\u043c\u00b2\/\u0441\u0435\u043a.<\/label>\n          <input type=\"range\" id=\"passport-ppfd\" min=\"10\" max=\"2000\" value=\"300\" step=\"10\" class=\"slider-watts dynamic-slider\">\n        <\/div>\n\n        <div class=\"calc-group input-range-wrapper\">\n          <label for=\"passport-distance\">\u0412\u044b\u0441\u043e\u0442\u0430 \u0437\u0430\u043c\u0435\u0440\u0430 \u0432 \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u0435: <span id=\"passport-distance-val\" class=\"distance-bold\">30<\/span> \u0441\u043c.<\/label>\n          <input type=\"range\" id=\"passport-distance\" min=\"10\" max=\"150\" value=\"30\" step=\"1\" class=\"slider-height dynamic-slider\">\n        <\/div>\n      <\/div>\n\n      <div class=\"calc-group input-range-wrapper\">\n        <label for=\"lamp-distance-slider\">\u0412\u044b\u0441\u043e\u0442\u0430 \u043f\u043e\u0434\u0432\u0435\u0441\u0430 \u043d\u0430\u0434 \u043b\u0438\u0441\u0442\u044c\u044f\u043c\u0438: <span id=\"distance-val\" class=\"distance-bold\">30<\/span> \u0441\u043c.<\/label>\n        <input type=\"range\" id=\"lamp-distance-slider\" min=\"10\" max=\"80\" value=\"30\" step=\"5\" class=\"slider-height dynamic-slider\">\n        <div id=\"distance-warning-text\" class=\"distance-warning-msg\" style=\"display: none;\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div id=\"block-manual\" style=\"display: none;\">\n      <div class=\"calc-group\">\n        <label for=\"manual-type\">\u0427\u0442\u043e \u0432\u044b \u0438\u0437\u043c\u0435\u0440\u0438\u043b\u0438 \u0438\u043b\u0438 \u0437\u043d\u0430\u0435\u043c:<\/label>\n        <select id=\"manual-type\">\n          <option value=\"ppfd\">\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 PPFD (\u043c\u043a\u043c\u043e\u043b\u044c\/\u043c\u00b2\/\u0441\u0435\u043a)<\/option>\n          <option value=\"lux\">\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u0438 (Lux \/ \u041b\u044e\u043a\u0441\u044b)<\/option>\n        <\/select>\n      <\/div>\n\n      <div id=\"lux-source-container\" class=\"calc-group\" style=\"display: none;\">\n        <label for=\"lux-source-type\">\u041a\u0430\u043a\u043e\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0432\u0435\u0442\u0430 \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u0442\u0435?<\/label>\n        <select id=\"lux-source-type\">\n          <option value=\"quantum_board\" selected>\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0435\u043b\u044b\u0439 \u0444\u0438\u0442\u043e\u0441\u0432\u0435\u0442 (Full Spectrum LED \/ Samsung \/ Osram)<\/option>\n          <option value=\"led_cool\">\u041e\u0431\u044b\u0447\u043d\u0430\u044f \u0431\u044b\u0442\u043e\u0432\u0430\u044f LED-\u043b\u0430\u043c\u043f\u0430 (\u0425\u043e\u043b\u043e\u0434\u043d\u044b\u0439 \u0441\u0432\u0435\u0442, 4000K\u20136500K)<\/option>\n          <option value=\"led_warm\">\u041e\u0431\u044b\u0447\u043d\u0430\u044f \u0431\u044b\u0442\u043e\u0432\u0430\u044f LED-\u043b\u0430\u043c\u043f\u0430 (\u0422\u0451\u043f\u043b\u044b\u0439 \u0441\u0432\u0435\u0442, 2700K\u20133000K)<\/option>\n          <option value=\"sunlight\">\u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043e\u043b\u043d\u0435\u0447\u043d\u044b\u0439 \u0441\u0432\u0435\u0442 (\u041e\u043a\u043d\u043e \/ \u0423\u043b\u0438\u0446\u0430)<\/option>\n          <option value=\"bicolor\">\u041a\u0440\u0430\u0441\u043d\u043e-\u0441\u0438\u043d\u0438\u0439 \u0444\u0438\u0442\u043e\u0441\u0432\u0435\u0442 (\u00ab\u041c\u0430\u0440\u0433\u0430\u043d\u0446\u043e\u0432\u043a\u0430\u00bb \/ \u0411\u0438\u043a\u043e\u043b\u043e\u0440)<\/option>\n        <\/select>\n      <\/div>\n\n      <div class=\"calc-group\">\n        <label id=\"manual-value-label\" for=\"manual-value\">\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:<\/label>\n        <input type=\"number\" id=\"manual-value\" value=\"150\" min=\"1\" max=\"100000\">\n      <\/div>\n    <\/div>\n\n    <div class=\"calc-group input-range-wrapper\">\n      <label for=\"light-hours\">\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u043e\u0432 \u0432 \u0434\u0435\u043d\u044c \u0441\u0432\u0435\u0442\u0438\u0442 \u043b\u0430\u043c\u043f\u0430: <span id=\"hours-val\" class=\"hours-normal\">12<\/span> \u0447.<\/label>\n      <input type=\"range\" id=\"light-hours\" min=\"4\" max=\"24\" value=\"12\" step=\"1\" class=\"slider-normal dynamic-slider\">\n      <div id=\"hours-warning-text\" class=\"hours-warning-msg\" style=\"display: none;\"><\/div>\n    <\/div>\n\n    <div id=\"calc-results\">\n      <div class=\"result-metrics\">\n        <div class=\"metric-card\">\n          <span class=\"metric-label\" id=\"label-metric-1\">\u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 PPFD<\/span>\n          <span class=\"metric-value\" id=\"res-ppfd\">0<\/span>\n          <span class=\"metric-unit\" id=\"unit-metric-1\">\u043c\u043a\u043c\u043e\u043b\u044c\/(\u043c\u00b2\u00b7\u0441\u0435\u043a)<\/span>\n        <\/div>\n        <div class=\"metric-card\">\n          <span class=\"metric-label\" id=\"label-metric-2\">\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0439 DLI<\/span>\n          <span class=\"metric-value\" id=\"res-dli\">0<\/span>\n          <span class=\"metric-unit\" id=\"unit-metric-2\">\u043c\u043e\u043b\u044c\/\u043c\u00b2\/\u0434\u0435\u043d\u044c<\/span>\n        <\/div>\n      <\/div>\n\n      <div id=\"verdict-box\" class=\"verdict-container\">\n        <h4 id=\"res-status\">\u0421\u0442\u0430\u0442\u0443\u0441<\/h4>\n        <p id=\"res-advice\">\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u044f<\/p>\n        <p class=\"target-info\">\u041d\u043e\u0440\u043c\u0430 DLI \u0434\u043b\u044f \u0433\u0440\u0443\u043f\u043f\u044b \u2014 \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \/ \u0425\u043e\u0440\u043e\u0448\u0435\u0435 \/ \u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0435: <strong id=\"res-target-dli\">0<\/strong> \u043c\u043e\u043b\u044c\/\u043c\u00b2\/\u0434\u0435\u043d\u044c.<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<div style=\"height:19px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">\u041a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u0430, \u0430 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b Lux\u2192PPFD \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043b\u0430\u043c\u043f \u2014 \u0443\u0441\u0440\u0435\u0434\u043d\u0451\u043d\u043d\u044b\u0435 \u043e\u0442\u0440\u0430\u0441\u043b\u0435\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u0442\u043e\u0438\u0442 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u0430\u043a \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u044b\u0441\u043e\u0442\u044b\/\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438, \u0430 \u043d\u0435 \u043a\u0430\u043a \u0442\u043e\u0447\u043d\u043e\u0435 \u0444\u043e\u0442\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><a href=\"https:\/\/dalink.to\/alexlasplantas\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"350\" height=\"350\" src=\"http:\/\/alexlasplantas.ru\/wp-content\/uploads\/2026\/07\/Speech-bubble.gif\" alt=\"\" class=\"wp-image-227\" style=\"width:121px;height:auto\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043f\u043e\u043c\u043e\u0433 \u044d\u0442\u043e\u0442 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440, \u044f \u0431\u0443\u0434\u0435 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0435\u043d \u0437\u0430 \u043b\u044e\u0431\u043e\u0439 \u0434\u043e\u043d\u0430\u0442 \u0432 \u20bd \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/dalink.to\/alexlasplantas\" target=\"_blank\" rel=\"noopener\">DALink<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/ko-fi.com\/alexlasplantas\" target=\"_blank\" rel=\"noopener\">Ko-Fi<\/a> \u0438\u0437 \u0435\u0432\u0440\u043e\u043f\u044b \u0438 \u043c\u0438\u0440\u0430.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>DLI \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440. \u0420\u0430\u0441\u0447\u0451\u0442 LED \u0444\u0438\u0442\u043e\u0441\u0432\u0435\u0442\u0430 \u0434\u043b\u044f \u043a\u043e\u043c\u043d\u0430\u0442\u043d\u044b\u0445 \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u0439.<\/p>\n","protected":false},"author":2,"featured_media":250,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[6,10,7,8],"class_list":["post-205","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-1","tag-dli","tag-lux","tag-ppfd","tag-8"],"_links":{"self":[{"href":"https:\/\/alexlasplantas.ru\/index.php?rest_route=\/wp\/v2\/posts\/205","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alexlasplantas.ru\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alexlasplantas.ru\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alexlasplantas.ru\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/alexlasplantas.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=205"}],"version-history":[{"count":25,"href":"https:\/\/alexlasplantas.ru\/index.php?rest_route=\/wp\/v2\/posts\/205\/revisions"}],"predecessor-version":[{"id":252,"href":"https:\/\/alexlasplantas.ru\/index.php?rest_route=\/wp\/v2\/posts\/205\/revisions\/252"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/alexlasplantas.ru\/index.php?rest_route=\/wp\/v2\/media\/250"}],"wp:attachment":[{"href":"https:\/\/alexlasplantas.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=205"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alexlasplantas.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=205"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alexlasplantas.ru\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}