{"title":"Adjustable Spectrum Grow Lights","description":"\u003cp\u003eTunable spectrum LED grow lights let growers fine-tune wavelength ratios for different stages of plant growth. Do you need more blue during vegetables to keep internodes tight? More red and far-red for explosive blooms? These grow lights let you dial in the ideal blend.\u003c\/p\u003e\n\u003cp\u003eSpectrum plays a role in shaping plant height, leaf expansion, and pigment expression. Adjustable grow lights allow precise control in dynamic grow environments. Ideal for serious growers chasing optimal morphology and performance across a 2×2 to 5×5 ft space.\u003c\/p\u003e\n\u003cp\u003eGrow smarter with \u003ca href=\"https:\/\/growlightcentral.com\/pages\/commercial-orders\" title=\"Grow Light Central for Commercial \u0026amp; Bulk Ordering\"\u003ebulk discounts\u003c\/a\u003e and \u003ca href=\"https:\/\/growlightcentral.com\/pages\/indoor-horticulture-energy-efficiency-rebate-incentive-programs\" title=\"Grow Light Central Indoor Horticulture Energy Efficiency Rebate \u0026amp; Incentive Programs\"\u003erebate opportunities\u003c\/a\u003e only at Grow Light Central.\u003c\/p\u003e","products":[{"product_id":"california-lightworks-solarsystem-550-led-grow-light","title":"California Lightworks SolarSystem 550 LED Grow Light","description":"\u003ch2\u003e400 W full spectrum OSRAM SSL LED delivers programmable lighting across 6 × 6 veg and 4 × 4 bloom zones.\u003c\/h2\u003e\n\u003cp\u003eThe SolarSystem 550 by California Lightworks is \u003cstrong\u003edesigned as a high-power veg and bloom light.\u003c\/strong\u003e It features \u003cstrong\u003eOSRAM SSL LEDs and draws only 400 Watts\u003c\/strong\u003e. It easily replaces a 600-watt HPS light.\u003c\/p\u003e\n\u003cp\u003eIn flowering\/bloom, it has a 3 ft x 4 ft coverage area, and for vegetative growth, it can cover up to a 6 ft x 8 ft area.\u003c\/p\u003e\n\u003ch3\u003eProgrammable Spectrum Control\u003c\/h3\u003e\n\u003cp\u003eA fully programmable central controller \u003cstrong\u003eautomatically controls hundreds of lights (\u003ca href=\"https:\/\/growlightcentral.com\/products\/california-lightworks-solarsystem-controller\"\u003eavailable separately here.\u003c\/a\u003e)\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eActs as a timer and spectrum customization\u003c\/li\u003e\n\u003cli\u003eIt can be programmed by the day, week, or season to best match natural sunlight\u003c\/li\u003e\n\u003cli\u003eChain multiple lights together using a single controller\u003c\/li\u003e\n\u003cli\u003eIncludes grower-proven pre-set lighting programs\u003c\/li\u003e\n\u003cli\u003eCustomizable for any crop or grow strategy\u003c\/li\u003e\n\u003cli\u003eCommunicates with environmental controllers and light sensors for maximum efficiency\u003c\/li\u003e\n\u003cli\u003eSmart spectrum control reduces power usage and increases crop quality\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eHigh Efficiency. Low Maintenance.\u003c\/h3\u003e\n\u003cp\u003eOver 40% power savings vs. HID lights.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eNEVER change (or spend money on) bulbs again\u003c\/li\u003e\n\u003cli\u003eNO ducting required (you'll save tons on cooling equipment alone)\u003c\/li\u003e\n\u003cli\u003eCompact design minimizes the shadow effect in greenhouses\u003c\/li\u003e\n\u003cli\u003eLightweight \u0026amp; easy to install\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eOSRAM SSL LEDs\u003c\/strong\u003e are rated for 50,000 hours\u003c\/li\u003e\n\u003cli\u003eUser-replaceable fans are also rated for 50,000 hours\u003c\/li\u003e\n\u003cli\u003eWaterproof, so it can handle any wet or humid conditions in your grow environment\u003c\/li\u003e\n\u003cli\u003eIf you have any problems, it's all covered by a \u003cstrong\u003e5 year warranty\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eUL-Listed\u003c\/strong\u003e, so it can be used in a commercial grow environment.\u003c\/li\u003e\n\u003cli\u003eMade in the USA (California) by a team of grow experts that are always there for you if you have any issues.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSolar System 550 LED fixture\u003c\/li\u003e\n\u003cli\u003ePower cord\u003c\/li\u003e\n\u003cli\u003eCommunications cable\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/CLW-SS550lr.pdf?11794176560997557516\" rel=\"noopener\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eCalifornia Lightworks SolarSystem 550 Video\u003c\/h3\u003e\n\u003cp\u003e\u003ciframe height=\"360\" width=\"640\" src=\"https:\/\/player.vimeo.com\/video\/621879688?h=0b4b36338b\" title=\"vimeo-player\"\u003e\u003c\/iframe\u003e\u003c\/p\u003e","brand":"California Lightworks","offers":[{"title":"120V","offer_id":50435153723684,"sku":"CLW-SS-550-120V","price":639.0,"currency_code":"USD","in_stock":true},{"title":"240V","offer_id":50435153756452,"sku":"CLW-SS-550-240V","price":639.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/california-lightworks-solarsystem-550-high-efficiency-led-light-1.jpg?v=1753840313"},{"product_id":"california-lightworks-solarsystem-1100-led-grow-light","title":"California Lightworks SolarSystem 1100 LED Grow Light","description":"\u003ch2\u003e800 W full spectrum LED with dual UVB input offers programmable lighting across 8 × 8 ft veg and 5 × 5 ft bloom canopy.\u003c\/h2\u003e\n\u003cp\u003eIt features \u003cspan\u003eOSRAM SSL LEDs and \u003c\/span\u003e\u003cstrong\u003edraws 800 watts at maximum output\u003c\/strong\u003e. It easily replaces a 1000-watt HPS light.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eIn flowering\/bloom,\u003c\/strong\u003e it has a 4 ft x 4 ft coverage area, and for vegetative growth, it can cover up to an 8 ft x 8 ft area.\u003c\/p\u003e\n\u003cp\u003eFor fans of the discontinued SolarSystem 880, \u003cstrong\u003ethere is a \u003ca href=\"https:\/\/growlightcentral.com\/products\/california-lightworks-solarsystem-1100-uvb\"\u003eUVB version of the SolarSystem 1100\u003c\/a\u003e available \u003c\/strong\u003ethat combines it with two SolarSystem UVB bars (those bars are also \u003ca href=\"https:\/\/growlightcentral.com\/products\/california-lightworks-solarsystem-uvb-grow-light\"\u003esold separately here\u003c\/a\u003e).\u003c\/p\u003e\n\u003ch3\u003eProgrammable Spectrum Control\u003c\/h3\u003e\n\u003cp\u003eFully programmable central controller automatically controls hundreds of lights. Save $20 when buying the controller together with the light. \u003cstrong\u003eNote that the controller is needed for dimming, spectrum control, and timer functions.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eActs as a timer and spectrum customization\u003c\/li\u003e\n\u003cli\u003eCan be programmed by the day, week, or season to best match natural sunlight\u003c\/li\u003e\n\u003cli\u003eChain multiple lights together using a single controller\u003c\/li\u003e\n\u003cli\u003eIncludes grower-proven pre-set lighting programs\u003c\/li\u003e\n\u003cli\u003eCustomizable for any crop or grow strategy\u003c\/li\u003e\n\u003cli\u003eCommunicates with environmental controllers and light sensors for maximum efficiency\u003c\/li\u003e\n\u003cli\u003eSmart spectrum control reduces power usage and increases crop quality\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eHigh Efficiency. Low Maintenance.\u003c\/h3\u003e\n\u003cp\u003eOver 40% power savings vs. HID lights.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eNEVER change (or spend money on) bulbs again\u003c\/li\u003e\n\u003cli\u003eNO ducting required (you'll save tons on cooling equipment alone)\u003c\/li\u003e\n\u003cli\u003eCompact design minimizes the shadow effect in greenhouses\u003c\/li\u003e\n\u003cli\u003eLightweight \u0026amp; easy to install\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eOSRAM SSL LEDs\u003c\/strong\u003e are rated for 50,000 hours\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eUser replaceable fans\u003c\/strong\u003e are also rated for 50,000 hours\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eWaterproof,\u003c\/strong\u003e so it can handle any wet or humid conditions in your grow environment\u003c\/li\u003e\n\u003cli\u003eIf you have any problems, it's all covered by a \u003cstrong\u003e5 year warranty\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eUL Listed\u003c\/strong\u003e, so it can be used in a commercial grow environment.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMade in the USA\u003c\/strong\u003e (California) by a team of growing experts who are always there for you if you have any issues.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSolar System 1100 LED fixture\u003c\/li\u003e\n\u003cli\u003e6 foot power cord\u003c\/li\u003e\n\u003cli\u003eCommunications cable\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/CLW-SS1100hr.pdf?8753168995791596102\" rel=\"noopener\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eCalifornia Lightworks SolarSystem 1100 Video\u003c\/h3\u003e\n\u003cp\u003e\u003ciframe height=\"360\" width=\"640\" src=\"https:\/\/player.vimeo.com\/video\/621924816?h=566cc1f655\" title=\"vimeo-player\"\u003e\u003c\/iframe\u003e\u003c\/p\u003e","brand":"California Lightworks","offers":[{"title":"120V","offer_id":46928795304228,"sku":"CLW-SS-1100-120V","price":1274.0,"currency_code":"USD","in_stock":true},{"title":"240V","offer_id":50435149791524,"sku":"CLW-SS-1100-240V","price":1274.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/california-lightworks-solarsystem-1100-commercial-led-light-1.jpg?v=1753840273"},{"product_id":"california-lightworks-solarsystem-275","title":"California Lightworks SolarSystem 275 LED Grow Light","description":"\u003ch2\u003e200 W full spectrum LED delivers 350 µmol\/s and replaces a 400 W HPS with energy savings for veg and bloom zones.\u003c\/h2\u003e\n\u003cp\u003eIt features \u003cspan\u003eOSRAM LEDs and \u003c\/span\u003e\u003cstrong\u003edraws only 200 watts at full power\u003c\/strong\u003e. It easily replaces a 400-watt HPS light.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eIn flowering\/bloom,\u003c\/strong\u003e it has a 3 ft x 3 ft coverage area, and for vegetative growth, it can cover up to a 5 ft x 5 ft area.\u003c\/p\u003e\n\u003ch3\u003eProgrammable Spectrum Control\u003c\/h3\u003e\n\u003cp\u003eFully programmable central controller \u003cstrong\u003eautomatically controls hundreds of lights\u003c\/strong\u003e (\u003ca href=\"https:\/\/growlightcentral.com\/products\/california-lightworks-solarsystem-controller\"\u003eavailable separately here\u003c\/a\u003e).\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eActs as a timer and spectrum customization\u003c\/li\u003e\n\u003cli\u003eCan be programmed by the day, week, or season to best match natural sunlight\u003c\/li\u003e\n\u003cli\u003eChain multiple lights together using a single controller\u003c\/li\u003e\n\u003cli\u003eIncludes grower-proven pre-set lighting programs\u003c\/li\u003e\n\u003cli\u003eCustomizable for any crop or grow strategy\u003c\/li\u003e\n\u003cli\u003eCommunicates with environmental controllers and light sensors for maximum efficiency\u003c\/li\u003e\n\u003cli\u003eSmart spectrum control reduces power usage and increases crop quality\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eHigh Efficiency. Low Maintenance.\u003c\/h3\u003e\n\u003cp\u003eOver 40% power savings vs. HID lights.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eNEVER change (or spend money on) bulbs again\u003c\/li\u003e\n\u003cli\u003eNO ducting required (you'll save tons on cooling equipment alone)\u003c\/li\u003e\n\u003cli\u003eCompact design minimizes the shadow effect in greenhouses\u003c\/li\u003e\n\u003cli\u003eLightweight \u0026amp; easy to install\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eOSRAM SSL LEDs\u003c\/strong\u003e are rated for 50,000 hours\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFan\u003c\/strong\u003e (User replaceable) are also rated for 50,000 hours\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eWaterproof\u003c\/strong\u003e, so it can handle any wet or humid conditions in your grow environment\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e5 year warranty\u003c\/strong\u003e giving you added assurance that if you have any problems, it's all covered.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eUL Listed\u003c\/strong\u003e, so it can be used in a commercial grow environment.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMade in the USA\u003c\/strong\u003e (California) by a team of grow experts that are always there for you if you have any issues.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSolar System 275 LED Fixture\u003c\/li\u003e\n\u003cli\u003ePower Cord\u003c\/li\u003e\n\u003cli\u003eCommunications Cable\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/CLW-SS275lr.pdf?16432425981424283077\" rel=\"noopener\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"California Lightworks","offers":[{"title":"Default Title","offer_id":43017582675,"sku":"CLW-SS-275","price":389.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/California-Lightworks-SolarSystem-275-1.jpg?v=1753836219"},{"product_id":"scynce-raging-kush","title":"Scynce LED Raging Kush II LED Grow Light","description":"\u003ch2\u003eAchieve maximum growth control with customizable spectrums, precise intensity adjustments, and efficient light distribution.\u003c\/h2\u003e\n\u003cp\u003eThe Raging Kush II has rewritten the playbook for growers who demand full control over their environment. \u003cstrong\u003eWith 4 color channels, including a new full power spectrum tuning feature,\u003c\/strong\u003e this light can be adjusted to suit any crop, strain, or growth stage. Whether you need perfect white light (2700K \u0026amp; 6500K) or precise red spectrum (660nm \u0026amp; 730nm), the Raging Kush II allows you to fine-tune the spectrum and intensity (from 10%-100% dimming) for optimal growth.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFeaturing Scynce's one-of-a-kind optics in 2 options, it ensures uniform light distribution and eliminates hotspots,\u003c\/strong\u003e while the IP66 waterproof rating makes it perfect for demanding environments. This 650W powerhouse is ideal for 4.5' x 4.5' flower coverage and 5' x 5' mother coverage, making it the go-to tool for any serious grower.\u003c\/p\u003e\n\u003ch3\u003eChoosing the Right Optic: Linear 70° vs. Conic 120°\u003c\/h3\u003e\n\u003cp\u003eOur revolutionary optics are designed to \u003cstrong\u003edeliver even, natural light distribution, ensuring plants receive equal-intensity illumination from all angles.\u003c\/strong\u003e This prevents hotspots, burned leaves, and uneven growth, creating a larger, more productive growing area.\u003c\/p\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/SCYNCELED_LDC-RagingKale-01-2-768x499.png?v=1741941017\" alt=\"Spectrum choice diagram for Raging Kush II comparing linear 70° vs conic 120° optics for canopy coverage\" style=\"float: none;\"\u003e\u003c\/div\u003e\n\u003ch3\u003eLinear 70° Optic – Ideal for Single-Level \u0026amp; Open Spaces\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eThe Linear 70° optic is engineered for single-level warehouse and greenhouse environments,\u003c\/strong\u003e providing even light intensity across a large growing area. It allows the Kush II to be positioned 24″ to 72″ above the canopy while maintaining uniform coverage.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eDeep Light Penetration\u003c\/strong\u003e – Reaches lower plant layers for consistent growth.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePrevents Hotspots\u003c\/strong\u003e – Eliminates light intensity variations that can burn plants.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLarger Coverage Area\u003c\/strong\u003e – Distributes light evenly across wide spaces.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eConic 120° Optic – Optimized for Vertical Racking \u0026amp; Low Ceilings\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eThe Conic 120° optic is designed for vertical racking and low-ceiling grow spaces,\u003c\/strong\u003e ensuring even light distribution while allowing the Kush II to be placed just 6″ to 18″ above the canopy.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eMaximizes Canopy Coverage\u003c\/strong\u003e – Ensures even light spread across all plant levels.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePrevents Burn \u0026amp; Stress\u003c\/strong\u003e – Softens direct light exposure for close-proximity growing.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eIdeal for Multi-Tier Racking\u003c\/strong\u003e – Optimized for stacked grow setups and compact spaces.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eIs the Raging Kush II Energy Efficient?\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eAbsolutely. The Raging Kush II features 2.51 umol\/j efficacy, which means it delivers maximum light output while using less energy.\u003c\/strong\u003e Its ability to adjust the spectrum from 2700K to 6500K and customize the red and far-red channel (660nm and 730nm) ensures precise light delivery, enhancing your plant’s growth while lowering energy costs.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eFull Power Spectrum Tuning\u003c\/strong\u003e – Control over the spectrum with 4 color channels, allowing for precise adjustments in white and red light.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDimmable\u003c\/strong\u003e – Adjustable light intensity from 10% to 100%, with the ability to dim all the way to off.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAdvanced Control Options\u003c\/strong\u003e – Offers wired \u0026amp; wireless control of spectrum, intensity, and scheduling for flexible operation.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCustomizable Red\/Far-Red Channels\u003c\/strong\u003e – Red (660nm) and far-red (730nm) channels can be adjusted for specific growth needs or turned off completely.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eWaterproof Sealing\u003c\/strong\u003e – \u003cstrong\u003eIP66 rating\u003c\/strong\u003e makes it resistant to moisture, ideal for \u003cstrong\u003ehumid growing environments\u003c\/strong\u003e.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eThermal Management\u003c\/strong\u003e – Passive cooling system for efficient heat dissipation without the need for noisy fans.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMax Coverage Areas\u003c\/strong\u003e – Provides optimal coverage for flowering (4.5’x4.5’) and \u003cstrong\u003emother plants\u003c\/strong\u003e (5’x5’).\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eHigh PPFD \u0026amp; PPF\u003c\/strong\u003e – Delivers up to 1,057 µmol\/m²\/s and 1,631 μmol\/s PPF for high intensity and maximum growth.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eSpectrum Adjustability\u003c\/strong\u003e – White (2700K and 6500K) and red (660nm and 730nm) spectrums offer flexibility to match different growth stages.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEase of Setup and Operation\u003c\/strong\u003e – Cable management system for a clean installation and integrated scheduling for automatic lighting cycles.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eScynceLED Raging Kush 2.0 LED Grow Light\u003c\/li\u003e\n\u003cli\u003ePower Cord\u003c\/li\u003e\n\u003cli\u003eNylon Ratchet Hangers\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/scynceled.com\/wp-content\/uploads\/2022\/05\/SCYNCE_Raging-Kush_2.0_v5.pdf\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/scynceled.com\/wp-content\/uploads\/2021\/03\/Scynce_RagingKush2.0_User-Manual.pdf\"\u003eUser Manual\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Scynce LED","offers":[{"title":"70 Degree - Ideal for Single-Level \u0026 Open Spaces \/ 110 (NEMA 5\/15)","offer_id":39465968336958,"sku":"527203-110","price":699.0,"currency_code":"USD","in_stock":true},{"title":"70 Degree - Ideal for Single-Level \u0026 Open Spaces \/ 220 (NEMA 6\/15)","offer_id":39465968369726,"sku":"527203-220","price":699.0,"currency_code":"USD","in_stock":true},{"title":"70 Degree - Ideal for Single-Level \u0026 Open Spaces \/ 277 (NEMA 7\/15)","offer_id":39465968402494,"sku":"527203-277","price":699.0,"currency_code":"USD","in_stock":true},{"title":"70 Degree - Ideal for Single-Level \u0026 Open Spaces \/ Flying Leads","offer_id":50422664560932,"sku":"527203-FL","price":699.0,"currency_code":"USD","in_stock":true},{"title":"120 Degree - Ideal for Vertical Racking \u0026 Low Ceilings \/ 110 (NEMA 5\/15)","offer_id":50474878402852,"sku":"527202-110","price":699.0,"currency_code":"USD","in_stock":true},{"title":"120 Degree - Ideal for Vertical Racking \u0026 Low Ceilings \/ 220 (NEMA 6\/15)","offer_id":50474878435620,"sku":"527202-220","price":699.0,"currency_code":"USD","in_stock":true},{"title":"120 Degree - Ideal for Vertical Racking \u0026 Low Ceilings \/ 277 (NEMA 7\/15)","offer_id":50474878468388,"sku":"527202-277","price":699.0,"currency_code":"USD","in_stock":true},{"title":"120 Degree - Ideal for Vertical Racking \u0026 Low Ceilings \/ Flying Leads","offer_id":50474878501156,"sku":"527202-FL","price":699.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Scynce-LED-Raging-Kush-II-LED-Grow-Light-1.jpg?v=1753799614"},{"product_id":"scynce-dragon-alpha","title":"Scynce LED Dragon Alpha III LED Grow Light","description":"\u003ch2\u003eMaximize yields with even light distribution, energy savings, and scalable installation.\u003c\/h2\u003e\n\u003cp\u003eThe DRAGON Alpha III takes precision growing to the next level, delivering \u003cstrong\u003eoptimized light distribution, energy efficiency, and seamless scalability\u003c\/strong\u003e for commercial and high-end home grows. With an \u003cstrong\u003eadvanced passively cooled heatsink\u003c\/strong\u003e, this fixture runs cooler while cutting power consumption. Its \u003cstrong\u003epatented optics \u003c\/strong\u003eevenly distribute light from all angles, ensuring deeper canopy penetration and consistent growth from top to bottom. Plus, the power daisy-chain system makes installation faster and more cost-effective, allowing growers to scale effortlessly without extra wiring complexity.\u003c\/p\u003e\n\u003ch3\u003eWhat is the Linear 70 Optic?\u003c\/h3\u003e\n\u003cp\u003eThe Linear 70 optic is \u003cstrong\u003ea specialized lens technology that distributes light evenly across the plant canopy. \u003c\/strong\u003eUnlike traditional LED grow lights that create hotspots (areas of excessive light intensity) directly beneath the fixture, the Linear 70 spreads light more uniformly, mimicking natural sunlight.\u003c\/p\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg style=\"float: none;\" alt=\"Linear 70° optic on Dragon Alpha III lens disperses light evenly across canopy for uniform plant growth\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/SCYNCELED_LDC-RagingKale-01-2-768x499.png?v=1741941017\"\u003e\u003c\/div\u003e\n\u003ch4\u003eHow It Works and Why It’s Better\u003c\/h4\u003e\n\u003cp\u003eTraditional LED fixtures often have uneven light distribution, where the center receives too much light, leading to burned leaves, while the edges get too little, resulting in weaker plant growth.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eThe \u003c\/strong\u003e\u003cstrong\u003eLinear 70 optic solves this problem \u003c\/strong\u003e\u003cstrong\u003eby delivering equal-intensity light from all angles\u003c\/strong\u003e, ensuring that every part of the plant canopy receives the same amount of light.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eThis technology \u003c\/strong\u003e\u003cstrong\u003eprevents hotspots and burn damage\u003c\/strong\u003e, allowing plants to absorb light efficiently and safely.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEnsures uniform light penetration, even in larger grow spaces \u003c\/strong\u003esuch as warehouses and greenhouses.\u003c\/li\u003e\n\u003cli\u003eAllows the Alpha III to be \u003cstrong\u003ehung between 24” and 72” (2 to 6 feet) above the canopy \u003c\/strong\u003ewhile maintaining the same light intensity across the plants.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eIs the DRAGON Alpha III Energy-Efficient?\u003c\/h3\u003e\n\u003cp\u003eAbsolutely. While traditional HPS lights struggle at 1.3–1.7 µmol\/J,\u003cstrong\u003e the DRAGON Alpha III crushes it with 2.51+ µmol\/J, delivering more usable light per watt and dramatically lowering energy costs.\u003c\/strong\u003e That means higher yields, lower overhead, and a more sustainable grow operation. Whether you're running hydroponics, soil, or coco, this fixture keeps your power bill in check while supercharging plant growth.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003ePassively cooled heatsink\u003c\/strong\u003e reduces power consumption and improves energy efficiency\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOptimized optical footprint\u003c\/strong\u003e ensures even light distribution for uniform canopy coverage\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDaisy-chain power system\u003c\/strong\u003e allows easy connection of multiple lights, simplifying facility power layout and reducing installation costs\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eHot-swappable power supply and controller\u003c\/strong\u003e minimize downtime and improve serviceability\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePatented optics technology\u003c\/strong\u003e ensures equal light intensity from all angles, enhancing canopy penetration and preventing hot spots\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDesigned for high-output applications\u003c\/strong\u003e in indoor warehouses, highbays, and greenhouses\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eScynceLED Dragon Alpha III Fixture\u003c\/li\u003e\n\u003cli\u003eExternally Mounted Power Supply \u0026amp; Power Hub\/Nexus for Wireless Control\u003c\/li\u003e\n\u003cli\u003ePower Cord\u003c\/li\u003e\n\u003cli\u003eNylon Ratchet Hangers\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/SCYNCE_ALPHA_III_Spec_Sheet_v2.pdf?v=1740568300\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/scynceled.com\/wp-content\/uploads\/2024\/08\/Scynce_Alpha-3_User-Manual-V3.pdf\"\u003eUser Manual\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Scynce LED","offers":[{"title":"110 (NEMA 5\/15) \/ No","offer_id":39466620092478,"sku":"527022-110","price":849.0,"currency_code":"USD","in_stock":true},{"title":"110 (NEMA 5\/15) \/ Hanging Hooks for Unistrut Mounting | $4 Per Unit","offer_id":50474576511268,"sku":"527022-110-52821","price":855.0,"currency_code":"USD","in_stock":true},{"title":"110 (NEMA 5\/15) \/ Full Hanging Kit | $25 Per Unit","offer_id":50474576544036,"sku":"527022-110-52822","price":875.0,"currency_code":"USD","in_stock":true},{"title":"220 (NEMA 6\/15) \/ No","offer_id":39466620158014,"sku":"527022-220","price":849.0,"currency_code":"USD","in_stock":true},{"title":"220 (NEMA 6\/15) \/ Hanging Hooks for Unistrut Mounting | $4 Per Unit","offer_id":50474576675108,"sku":"527022-220-52821","price":855.0,"currency_code":"USD","in_stock":true},{"title":"220 (NEMA 6\/15) \/ Full Hanging Kit | $25 Per Unit","offer_id":50474576707876,"sku":"527022-220-52822","price":875.0,"currency_code":"USD","in_stock":true},{"title":"277 (NEMA 7\/15) \/ No","offer_id":39466620190782,"sku":"527022-277","price":849.0,"currency_code":"USD","in_stock":true},{"title":"277 (NEMA 7\/15) \/ Hanging Hooks for Unistrut Mounting | $4 Per Unit","offer_id":50474576838948,"sku":"527022-277-52821","price":855.0,"currency_code":"USD","in_stock":true},{"title":"277 (NEMA 7\/15) \/ Full Hanging Kit | $25 Per Unit","offer_id":50474576871716,"sku":"527022-277-52822","price":875.0,"currency_code":"USD","in_stock":true},{"title":"Flying Leads \/ No","offer_id":50422732456228,"sku":"527022-FL","price":849.0,"currency_code":"USD","in_stock":true},{"title":"Flying Leads \/ Hanging Hooks for Unistrut Mounting | $4 Per Unit","offer_id":50474577002788,"sku":"527022-FL-52821","price":855.0,"currency_code":"USD","in_stock":true},{"title":"Flying Leads \/ Full Hanging Kit | $25 Per Unit","offer_id":50474577035556,"sku":"527022-FL-52822","price":875.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Scynce-LED-Dragon-Alpha-III-LED-Grow-Light-1.jpg?v=1753800274"},{"product_id":"scynce-raging-kale","title":"Scynce LED Raging Kale II LED Grow Light","description":"\u003ch2\u003eMaximize growth potential with uniform light distribution, energy efficiency, and seamless control.\u003c\/h2\u003e\n\u003cp\u003eThe RAGING Kale II is a low-profile, high-performance fixture \u003cstrong\u003edesigned for indoor and vertical farming, delivering powerful, evenly distributed light for early-stage growth.\u003c\/strong\u003e With an IP66 waterproof rating, it withstands humid environments, while wireless connectivity makes it easy to manage.\u003c\/p\u003e\n\u003cp\u003eBuilt-in collaboration with top botanists, this fixture \u003cstrong\u003eensures robust, healthy growth with patented optics \u003c\/strong\u003ethat eliminate hotspots and provide deep canopy penetration. It's the ultimate balance of power, efficiency, and affordability, available in full-spectrum white or with 660nm \u0026amp; 720nm red capabilities.\u003c\/p\u003e\n\u003ch3\u003eWhat is Conic 120° Optic?\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eThe Kale II features the Conic 120° optic,\u003c\/strong\u003e designed for vertical racking and low-ceiling grow spaces,\u003cstrong\u003e ensuring equal-intensity light from all angles\u003c\/strong\u003e and mimicking natural sunlight for consistent growth across the entire canopy.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003ePrevents Hotspots \u0026amp; Leaf Burn\u003c\/strong\u003e – Eliminates uneven light distribution, reducing the risk of bleaching or burned leaves.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMaximizes Canopy Coverage\u003c\/strong\u003e – Expands the effective growing area by delivering light uniformly.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEnhances Lower Canopy Growth\u003c\/strong\u003e – Improves light penetration, leading to denser growth beneath the canopy.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/SCYNCELED_LDC_Kush-2.0-768x499.png?v=1741943874\" alt=\"Conic 120° optic on Raging Kale II grow light delivering even-intensity light from all angles for uniform canopy coverage\" style=\"float: none;\"\u003e\u003c\/div\u003e\n\u003ch3\u003eIs the RAGING Kale II Energy-Efficient?\u003c\/h3\u003e\n\u003cp\u003eAbsolutely. While older HPS lights waste energy at just 1.3–1.7 µmol\/J, the RAGING KaleII \u003cstrong\u003edelivers over 2.33 µmol\/J, giving you more usable plant light per watt and reducing operating costs. \u003c\/strong\u003eThat means lower heat output, better efficiency, and maximized growth potential while controlling your energy bills. If you're serious about dialing in your early-stage lighting, this fixture is built for you.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eLow-profile design\u003c\/strong\u003e ideal for indoor and vertical farming applications\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eIP66 waterproof rating\u003c\/strong\u003e ensures durability in humid and wet environments\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eWireless connectivity\u003c\/strong\u003e for seamless integration and remote control\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePatented optics technology\u003c\/strong\u003e provides uniform light distribution from all angles\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAvailable in full-spectrum white\u003c\/strong\u003e or with added \u003cstrong\u003e660nm and 720nm red capabilities\u003c\/strong\u003e for enhanced plant growth\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDesigned in collaboration with expert botanists\u003c\/strong\u003e to meet high-performance cultivation demands\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePrevents hot spots and uneven growth\u003c\/strong\u003e by immersing the entire canopy in consistent light\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eScynceLED Raging Kale 2.0 LED Grow Light\u003c\/li\u003e\n\u003cli\u003ePower Cord\u003c\/li\u003e\n\u003cli\u003e\n\u003cmeta charset=\"utf-8\"\u003eNylon Ratchet Hangers\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/scynceled.com\/wp-content\/uploads\/2024\/10\/SCYNCE-Raging-Kale-II-Spec-Sheet_v5.pdf\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Scynce_RagingKaleV_User-Manual-2.pdf?v=1742303947\"\u003eUser Manual\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Scynce_Raging_Kale_Gonio-Report-1.pdf?v=1742303858\"\u003eLuminaire Property Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Scynce LED","offers":[{"title":"110 (NEMA 5\/15) Clear","offer_id":39466017030206,"sku":"52730-110","price":264.0,"currency_code":"USD","in_stock":true},{"title":"220 (NEMA 6\/15) Clear","offer_id":39466017062974,"sku":"52730-220","price":264.0,"currency_code":"USD","in_stock":true},{"title":"277 (NEMA 7\/15) Clear","offer_id":39466017095742,"sku":"52730-277","price":264.0,"currency_code":"USD","in_stock":true},{"title":"Flying Leads","offer_id":50422765060388,"sku":"52730-FL","price":264.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Scynce-LED-Raging-Kale-II-LED-Grow-Light-1.jpg?v=1753800315"},{"product_id":"medic-grow-spectrum-x-led-grow-light","title":"Medic Grow Spectrum X 780-880W UV + IR Commercial LED Grow Light","description":"\u003ch2\u003eEnhance yields and flower quality with UV, Far-Red, and full-spectrum LEDs built for commercial tents and vertical farms.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eMedic Grow Spectrum X\u003c\/strong\u003e is built for growers chasing \u003cstrong\u003etop-tier harvests\u003c\/strong\u003e without wasting power. Cranking out up to \u003cstrong\u003e2200 µmol\/s\u003c\/strong\u003e of PPF, this 780-880W beast lights up 5'x5' tents and vertical racks with dense, even coverage. Adjustable spectrums and added UV + Far Red give your plants the full light recipe for stacked biomass and better flower quality. Whether you’re running soil, coco, or hydro, this light keeps your grow consistent from veg to flower.\u003c\/p\u003e\n\u003cp\u003eThis isn’t just another bar light. With its \u003cstrong\u003e8-bar design\u003c\/strong\u003e and Osram diodes, the Spectrum X delivers uniform intensity across the canopy and deep light penetration that budget fixtures can’t touch. The built-in dimmer and LCD let you fine-tune your grow without extra controllers, while the full aluminum build keeps heat and noise down in humid grow rooms. If you want a high-yield setup with serious control, this is your \u003cstrong\u003ego-to LED grow light\u003c\/strong\u003e.\u003c\/p\u003e\n\u003ch3\u003eIs the Medic Grow Spectrum X energy-efficient?\u003c\/h3\u003e\n\u003cp\u003eRated at up to \u003cstrong\u003e2.8 µmol\/J\u003c\/strong\u003e, the Spectrum X leaves HID tech in the dust. Compare that to old-school HPS at 1.3–1.7 µmol\/J and you’ll see real energy savings. Bottom line—\u003cstrong\u003emore light\u003c\/strong\u003e per watt means stronger plants and lower energy costs across your grow cycles.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eHigh PAR Value\u003c\/strong\u003e: Osram diodes deliver up to 2.8 μmol\/J PPE and 2200 μmol\/s PPF, boosting yield by 5-10% and improving quality.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCustom Full Spectrum + UV\u003c\/strong\u003e: Tailored spectrums for vegetative (V1) and flowering (U1) stages, with UV and Far-Red light to enhance biomass, flavor, and flower quality.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEven Light Penetration\u003c\/strong\u003e: 8-bar layout ensures uniform light distribution and improved air circulation; densely placed diodes provide deep penetration for continuous growth.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eBuilt-in Dimmer \u0026amp; LCD Display\u003c\/strong\u003e: Integrated dimmer and user-friendly LCD show light intensity, time, spectrum, and current.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDurable Aluminum Body\u003c\/strong\u003e: Full aluminum construction for quiet operation, excellent heat dissipation, and waterproof design for humid environments.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMedic Grow Spectrum X LED Grow Light\u003c\/li\u003e\n\u003cli\u003eAdapter\u003c\/li\u003e\n\u003cli\u003eRJ Cord\u003c\/li\u003e\n\u003cli\u003ePower Cord\u003c\/li\u003e\n\u003cli\u003eHanging Strings\u003c\/li\u003e\n\u003cli\u003eUser Manual\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Medic Grow","offers":[{"title":"Spectrum X 880W","offer_id":50963662962980,"sku":"Spectrum -X","price":719.1,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Medic-Grow-Spectrum-X-LED-Grow-Light-12.jpg?v=1753916532"},{"product_id":"grand-master-leds-tarantula-borg-evolution","title":"Grand Master LEDs Tarantula Borg Evolution Ultra","description":"\u003ch2\u003eDelivers 4,066 PPF with 6,900 diodes, optical lenses, triple red peak technology, and 50% blue capability for next-level production.\u003c\/h2\u003e\n\u003cp\u003eThe Tarantula Borg Evolution Ultra changes the game with \u003cstrong\u003e6,900 diodes under optical lenses\u003c\/strong\u003e, delivering uniform intensity from 12 to 30 inches while protecting your investment between crops.\u003c\/p\u003e\n\u003cp\u003eThe new deep red channel features dual peaks at 640nm and 660nm that combine with warm white to create a \u003cstrong\u003etriple red peak\u003c\/strong\u003e spanning 600 to 660nm, driving chlorophyll production and synthesis beyond what previous generation fixtures could achieve. The cool white channel now delivers triple blue peaks at 485nm, 450nm, and 437nm, giving you \u003cstrong\u003e50% blue capability\u003c\/strong\u003e for tight vegetative growth and terpene manipulation in late flower. This is the fixture for growers who understand that 2026 demands quality first, where your COA results determine your market value.\u003c\/p\u003e\n\u003cp\u003eThe 10 bar design delivers 4,066 PPF across 5' x 5' canopies, the IP66 waterproof rating handles high humidity flower rooms, and the \u003cstrong\u003e60 preset spectrums\u003c\/strong\u003e give you proven recipes while the 4 independent channels let you push beyond them when you're chasing specific profiles.\u003c\/p\u003e\n\u003ch3\u003eIs the Tarantula Borg Evolution V2 energy-efficient?\u003c\/h3\u003e\n\u003cp\u003eThe verified \u003cstrong\u003e2.59 µmol\/J system efficacy\u003c\/strong\u003e when running all 4 channels at 100% delivers competitive efficiency, with individual channel performance telling the complete story. The red channel achieves 3.05 µmol\/J, cool white delivers 2.69 µmol\/J, and warm white runs at 2.57 µmol\/J. \u003c\/p\u003e\n\u003ch3\u003eBoost Efficiency by Mounting the Driver Outside the Tent\u003c\/h3\u003e\n\u003cp\u003eImprove cooling and reduce clutter by placing the driver remotely using the \u003ca title=\"Grand Master LEDs Driver Box Extension\" href=\"https:\/\/growlightcentral.com\/products\/grand-master-leds-driver-box-extension\"\u003eGrand Master LEDs Driver Box Extension\u003c\/a\u003e. Use one Driver Box Extension (two for dual-driver units) to streamline your setup.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDesigned for Commercial Production, Vertical Racks, Medical Gardens, 5x5 or 4x4 Tents\u003c\/li\u003e\n\u003cli\u003e10 Bar Design\u003c\/li\u003e\n\u003cli\u003e2,000K to 20,000K+ Color Range\u003c\/li\u003e\n\u003cli\u003e4 Channels\u003c\/li\u003e\n\u003cli\u003eIP66 Waterproof\u003c\/li\u003e\n\u003cli\u003eFolding Design for fast and easy installation\u003c\/li\u003e\n\u003cli\u003ePotentiometer for each channel for Manual control\u003c\/li\u003e\n\u003cli\u003eRJ45 Port\u003c\/li\u003e\n\u003cli\u003e60 Preset Spectrums\u003c\/li\u003e\n\u003cli\u003eFahold Drivers\u003c\/li\u003e\n\u003cli\u003e5 Year Warranty\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrand Master LEDs Tarantula Borg Evolution Ultra\u003c\/li\u003e\n\u003cli\u003eInstallation Accessories\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Grand Master LEDs","offers":[{"title":"120V","offer_id":53498943176996,"sku":null,"price":1400.0,"currency_code":"USD","in_stock":true},{"title":"240V","offer_id":53498943209764,"sku":null,"price":1400.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/grand-master-leds-tarantula-borg-evolution-ultra-2.jpg?v=1777497774"},{"product_id":"grand-master-leds-tarantula-voyager","title":"Grand Master LEDs Tarantula Voyager - Dual Channel","description":"\u003ch2\u003eA commercial-ready LED grow light engineered for controlled intensity, uniform coverage and long term production reliability.\u003c\/h2\u003e\n\u003cp\u003eThis \u003cstrong\u003eLED grow light\u003c\/strong\u003e is built for growers who need power without complexity. The Tarantula Voyager uses a 10 bar design with Osram 660nm and LEDESTAR diodes to deliver balanced full-spectrum LED grow light output across a true 5x5 footprint. With 3960 PPF on tap, this LED indoor plant grow light performs exceptionally in vertical racks and high-density tents running soil or hydro where uniform canopy response matters.\u003cstrong\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eIs the Tarantula Voyager Energy-Efficient?\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eAbsolutely. \u003cmeta charset=\"utf-8\"\u003eRunning both channels at full output, this full-spectrum LED grow light \u003cstrong\u003edelivers 2.64 µmol per joule\u003c\/strong\u003e, outperforming HPS systems, which typically range from 1.3 to 2.1 µmol per joule. That translates to more usable plant light per watt, reduced heat load, and better electrical efficiency in commercial grow rooms.\u003c\/p\u003e\n\u003ch3\u003eBoost Efficiency by Mounting the Driver Outside the Tent\u003c\/h3\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003eImprove cooling and reduce clutter by placing the driver remotely using the \u003ca href=\"https:\/\/growlightcentral.com\/products\/grand-master-leds-driver-box-extension\" title=\"Grand Master LEDs Driver Box Extension\"\u003eGrand Master LEDs Driver Box Extension\u003c\/a\u003e. Use one Driver Box Extension (two for dual-driver units) to streamline your setup.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDesigned for Commercial Production, Vertical Racks, Medical Gardens, 5x5 Tents\u003c\/li\u003e\n\u003cli\u003e10 Bar Design\u003c\/li\u003e\n\u003cli\u003e2 Channel\u003c\/li\u003e\n\u003cli\u003eIP66 Waterproof\u003c\/li\u003e\n\u003cli\u003eFolding Design for fast and easy installation\u003c\/li\u003e\n\u003cli\u003ePotentiometer for each channel for Manual control\u003c\/li\u003e\n\u003cli\u003eRJ Port Dimming\u003c\/li\u003e\n\u003cli\u003e12 Custom spectrums included in the manual (can be saved manually in the Grand Master LEDs Controller)\u003c\/li\u003e\n\u003cli\u003eInventronics Drivers\u003c\/li\u003e\n\u003cli\u003e5 Year Warranty\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrand Master Tarantula Voyager LED Light\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Grand Master LEDs","offers":[{"title":"120V","offer_id":50769095393572,"sku":"","price":1149.0,"currency_code":"USD","in_stock":true},{"title":"240V","offer_id":50769095426340,"sku":"","price":1149.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Grand-Master-LEDs-Tarantula-Voyager-Dual-Channel-6.jpg?v=1753912269"},{"product_id":"dragon","title":"GrowPros DraGrow Dual Channel 1350W LED Grow Light - UVA \u0026 Full Spectrum + Far Red + Deep Blue","description":"\u003ch2\u003eOffering three power modes, UV and Far Red, dual dimming channels, and 3.02 µmol\/J efficiency for powerful 4x6 canopy coverage.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eDragrow 4x6 Full-Spectrum LED Grow Light\u003c\/strong\u003e is built for growers who demand serious performance from seedling to harvest. It offers complete flexibility for veg and flower stages with dual-channel controls and three selectable power modes (1000W, 1200W, 1350W). The slim 12-bar design ensures uniform canopy coverage across a 4' x 6' footprint, making it ideal for both tents and commercial rooms.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eEngineered with high-quality diodes, this light delivers up to 3.02 µmol\/J efficacy \u003c\/strong\u003eand a massive 3847 µmol\/s output, ensuring plants receive optimal light intensity for vigorous growth. With UV and Far Red supplementation, TrolMaster compatibility, and passive cooling, the Dragrow provides consistent results while keeping efficiency high. A 5-year warranty and rebate eligibility further add to its long-term value.\u003c\/p\u003e\n\u003ch3\u003eIs the Dragrow 1350W energy-efficient?\u003c\/h3\u003e\n\u003cp\u003eAt 3.02 µmol\/J, this commercial LED grow light \u003cstrong\u003esaves up to 40% energy\u003c\/strong\u003e compared to HPS. Furthermore, it reduces heat output, lowering cooling costs and creating a more sustainable grow environment. As a result, operating expenses drop while efficiency rises.\u003c\/p\u003e\n\u003ch3\u003ePower Settings \u0026amp; Dimming Control\u003c\/h3\u003e\n\u003cp\u003eThis grow LED light includes \u003cstrong\u003eGovernor Presets\u003c\/strong\u003e (e.g., \u003cstrong\u003e1350W, 1200W, 1000W\u003c\/strong\u003e) for facilities with limited power capacity. These presets let you easily adjust to available power in your grow room and act as a safety mechanism if needed. The presets also make them help in maximizing utility rebates. The Dragrow supports \u003cstrong\u003esmooth dimming from about 1% to 100%\u003c\/strong\u003e, that is 0W to 1350W but when a governor preset in engaged then the max power is limited to that setting.\u003c\/p\u003e\n\u003ch3\u003eRecommended Setup\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eFLOWER\u003c\/strong\u003e: 4' x 6' Area; Max: 5' x 7', 12\" - 24\" from top of canopy\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVEG\u003c\/strong\u003e: 5' x 7' Area; Max: 5' x 8', 24\" - 48\" from top of canopy\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 class=\"elementor-heading-title elementor-size-default\" style=\"text-align: center;\"\u003eADJUSTABLE SPECTRUM\u003c\/h3\u003e\n\u003cstyle\u003e\n\/* Chart Container *\/\n.chart-containerdragon {\n    width: 100%;\n    margin: 10px auto;\n    display: flex;\n    justify-content: center;\n}\n\n\/* Control Panels *\/\n#control-panelsdragon {\n    display: flex;\n    justify-content: space-around;\n    margin-bottom: 20px;\n    flex-wrap: wrap;\n}\n\n.control-paneldragon {\n    width: 100%;\n    border: 1px dashed #999999;\n    padding: 20px;\n    margin-bottom: 20px;\n    border-radius: 2px;\n    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n}\n\n.slider-title { \n    font-family: Jost, sans-serif; \n    font-size: 20px; \n    margin-bottom: 15px;\n    color: #000000;\n}\n\n.slider-paratitle {\n    display: flex;\n    flex-direction: row;\n    justify-content: space-between;\n    margin-top: 10px;\n}\n\n.slider-paratitle .current-value {\n    text-align: right;\n    width: 100%;\n    font-weight: bold;\n    color: #000000;\n}\n.slider-paratitle span {\n    color:#000000;\n}\n\n\/* Custom Process Bar Styles *\/\n.process-containerdragon {\n    width: 100%;\n    height: 16px;\n    background-color: #333333;\n    position: relative;\n    cursor: pointer;\n    border-radius:2px;\n}\n\n.process-bar {\n    height: 100%;\n    background-color: #999999;\n    width: 0;\n    position: absolute;\n    top: 0;\n    left: 0;\n    transform: translateX(0);\n    will-change: width, transform;\n    border-radius:2px;\n}\n\n.process-thumb {\n    width: 20px;\n    height: 20px;\n    background-color: #046e82;\n    border: 1px solid #000000;\n    border-radius: 2px;\n    position: absolute;\n    top: 50%;\n    transform: translate(-50%, -50%);\n    left: 0;\n    cursor: pointer;\n    touch-action: none;\n    transform: translate(-50%, -50%) translateX(0);\n    transition: none;\n    will-change: transform;\n}\n\n\/* Responsive adjustments *\/\n@media screen and (max-width: 767px) {\n    #control-panelsdragon { \n        flex-direction: column; \n    }\n    .control-paneldragon { \n        width: 100%; \n        margin-bottom: 20px; \n        padding:10px;\n    }\n    .slider-title { font-size:12px; }\n    .slider-title span {font-size:7px;}\n    .process-containerdragon { height:14px; }\n    .process-thumb { width: 16px; height: 22px; }\n    .slider-paratitle span { font-size:10px; }\n}\n\u003c\/style\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-settings=\"{'background_background':'classic'}\" data-element_type=\"container\" data-id=\"8c690b6\" class=\"elementor-element elementor-element-8c690b6 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"html.default\" data-element_type=\"widget\" data-id=\"c109f0e\" class=\"elementor-element elementor-element-c109f0e elementor-widget elementor-widget-html\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"\u003e\u003c\/script\u003e\n\u003cdiv class=\"chart-containerdragon\"\u003e\u003ccanvas height=\"305\" width=\"611\" style=\"display: block; box-sizing: border-box; height: 340px; width: 680px;\" id=\"myChart_dragon\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003cscript\u003e\n    var chartdragon = jQuery.noConflict(true);\n    chartdragon(document).ready(function($) {\n        \/\/ Chart.js Setup\n        const ctx = chartdragon('#myChart_dragon')[0].getContext('2d');\n        let chart;\n        const dataset1dragon = {\n            label: 'Channel 1',\n            labels: ['','', '360', '', '', '', '', '395', '', '', '', '', '', '450', '', '', '', '', '', '500', '', '', '', '', '', '', '', '', '', '600', '', '', '', '', '660', '', '', '', '', '', '', '730', '', '', '', '', '', '780', '', '', '', '', '', ''],\n            data: [0, 0, 0, 0.2, 1.1, 3, 10, 25, 10, 3.2, 1.1, 0.4, 0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n        };\n        const dataset2dragon = {\n            label: 'Channel 2',\n            data: [0, 0, 0, 0, 0, 0, 0, 0, 0.6, 2.6, 5.2, 9.3, 20.1, 48, 20.3, 13.5, 6.7, 2.9, 6.3, 14.6, 20, 24.4, 27.4, 30.4, 32.9, 35.4, 37.9, 39.4, 38.9, 36.8, 33.6, 30.9, 34.8, 70, 98, 30, 11.3, 4.3, 5.3, 9.5, 14.7, 18.3, 6.4, 1.5, 0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n        };\n        const colors = ['#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#65009f', '#40009f', '#1e149e', '#103e93', '#265aa8', '#3173b8', '#3698d5', '#45bee3', '#6fc4be', '#6ebf80', '#69b72d', '#69b72d', '#6bb72d', '#79bc28', '#97c626', '#a8cc2b', '#c8d933', '#d8e036', '#f1eb36', '#f4c41c', '#f19518', '#ed761b', '#e95619', '#e62718', '#e11713', '#ce141b', '#b91c22', '#a91f24', '#951e23', '#851123', '#7f191e', '#7d191d', '#76161b', '#6a1216', '#631014', '#5f0e12', '#51050a', '#440104', '#380103', '#230304', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714'];\n\n        let scale1 = 1;\n        let scale2 = 1;\n\n        function createGradient(ctx, chartArea, colors) {\n            const gradient = ctx.createLinearGradient(chartArea.left, 0, chartArea.right, 1);\n            colors.forEach((color, index) =\u003e {\n                gradient.addColorStop(index \/ (colors.length - 1), color);\n            });\n            return gradient;\n        }\n\n        function createChart(labels, combinedData) {\n            if (chart) {\n                chart.destroy();\n            }\n\n            chart = new Chart(ctx, {\n                type: 'line',\n                data: {\n                    labels: labels,\n                    datasets: [\n                        {\n                            type: 'line',\n                            label: 'PPF',\n                            data: combinedData,\n                            borderWidth: 0.1,\n                            backgroundColor: function(context) {\n                                const chart = context.chart;\n                                const { ctx, chartArea } = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            borderColor: function(context) {\n                                const chart = context.chart;\n                                const { ctx, chartArea } = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            fill: true,\n                            tension: 0.4 \/\/ Smoothing effect\n                        },\n                        {\n                            type: 'line',\n                            label: 'Outline',\n                            data: combinedData,\n                            borderWidth: 2,\n                            backgroundColor: 'transparent',\n                            borderColor: '#000000', \/\/ Outline color\n                            fill: false,\n                            tension: 0.4\n                        }\n                    ]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: true,\n                    scales: {\n                        x: {\n                            stacked: true,\n                            grid: {\n                                display: false \/\/ Hide y-axis grid lines\n                            },\n                            ticks: {\n                                color: '#000000',\n                                autoSkip: false, \/\/ Prevent auto-skipping of labels\n                                maxRotation: 0, \/\/ Prevent label rotation\n                                minRotation: 0, \/\/ Prevent label rotation\n                                maxTicksLimit: labels.length \/\/ Ensure all labels are shown\n                            },\n                            border: {\n                                width: 2,\n                                color: '#000000', \/\/ Change y-axis line color\n                            }\n                        },\n                        y: {\n                            beginAtZero: true,\n                            max: 100, \/\/ Set a static max value for y-axis to accommodate added values\n                            grid: {\n                                color: '#444444',\n                            },\n                            border: {\n                                width: 2,\n                                color: '#000000', \/\/ Change y-axis line color\n                            },\n                            ticks: {\n                                color: '#000000',\n                                callback: function(value) {\n                                    return value % 20 === 0 ? value + '%' : ''; \/\/ Custom label formatting\n                                }\n                            }\n                        }\n                    },\n                    events: null,\n                    radius: 0,\n                    plugins: {\n                        filler: { propagate: true }, \/\/ Enable filler\n                        legend: { display: false },\n                    },\n                    animation: {\n                        duration: 0 \/\/ Animation duration for smoother updates\n                    }\n                }\n            });\n        }\n\n        function combineData(data1, data2) {\n            return data1.map((value, index) =\u003e {\n                return value + data2[index];\n            });\n        }\n\n        function updateChart() {\n            const scaledData1 = dataset1dragon.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset2dragon.data.map(value =\u003e value * scale2);\n            const combinedData = combineData(scaledData1, scaledData2);\n\n            if (chart) {\n                chart.data.datasets[0].data = combinedData;\n                chart.data.datasets[1].data = combinedData; \/\/ Update outline dataset\n                chart.options.animation.duration = 300;\n                chart.update();\n            }\n        }\n\n        function createProcessBar(containerId, valueId) {\n            const $container = chartdragon(`#${containerId}`);\n            const $controlPanel = $container.closest('.control-paneldragon');\n            const $thumb = $container.find('.process-thumb');\n            const $bar = $container.find('.process-bar');\n            const $currentValue = chartdragon(`#${valueId}`);\n            let dragging = false;\n            let containerOffset = $controlPanel.offset().left;\n            let containerWidth = $controlPanel.width();\n            let processContainerWidth = $container.width();\n            \/\/ Initialize to max wattage for each channel\n            let currentW = containerId === 'process-container1dragon' ? 65 : 1285;\n\n            \/\/ Update container metrics on resize\n            function updateContainerMetrics() {\n                containerOffset = $controlPanel.offset().left;\n                containerWidth = $controlPanel.width();\n                processContainerWidth = $container.width();\n                setBarByWattage(currentW);\n            }\n\n            chartdragon(window).on('resize', updateContainerMetrics);\n\n            \/\/ Initialize container metrics\n            updateContainerMetrics();\n\n            \/\/ Function to set the bar and thumb position based on wattage\n            function setBarByWattage(wattage) {\n                const maxWattage = containerId === 'process-container1dragon' ? 65 : 1285;\n                currentW = Math.min(Math.max(wattage, 0), maxWattage);\n                const touchRatio = currentW \/ maxWattage;\n                const thumbLeft = touchRatio * processContainerWidth;\n\n                \/\/ Update bar width\n                $bar.css('width', `${touchRatio * 100}%`);\n                \/\/ Update thumb position\n                $thumb.css('transform', `translate(-50%, -50%) translateX(${thumbLeft}px)`);\n                \/\/ Update displayed value\n                $currentValue.text(`${currentW.toFixed(0)}W`);\n                \/\/ Update the corresponding scale variable and chart\n                if (containerId === 'process-container1dragon') {\n                    scale1 = currentW \/ maxWattage;\n                } else if (containerId === 'process-container2dragon') {\n                    scale2 = currentW \/ maxWattage;\n                }\n                updateChart();\n            }\n\n            \/\/ Function to handle the dragging logic\n            function handleDrag(pageX) {\n                const newLeft = pageX - containerOffset;\n                const clampedLeft = Math.min(Math.max(newLeft, 0), containerWidth);\n                const touchRatio = clampedLeft \/ containerWidth;\n                const maxWattage = containerId === 'process-container1dragon' ? 65 : 1285;\n                const newWattage = touchRatio * maxWattage;\n                setBarByWattage(newWattage);\n            }\n\n            \/\/ Throttle dragging using requestAnimationFrame\n            let rafId = null;\n\n            function onDrag(pageX) {\n                if (rafId) return; \/\/ If a frame is already requested, do nothing\n                rafId = requestAnimationFrame(() =\u003e {\n                    handleDrag(pageX);\n                    rafId = null;\n                });\n            }\n\n            \/\/ Mouse events\n            $thumb.on('mousedown', function(e) {\n                e.preventDefault();\n                dragging = true;\n            });\n\n            chartdragon(document).on('mousemove', function(e) {\n                if (dragging) {\n                onDrag(e.pageX);\n                }\n            });\n\n            chartdragon(document).on('mouseup', function() {\n                dragging = false;\n            });\n\n            \/\/ Touch events bound to control panel\n            $controlPanel.on('touchstart', function(e) {\n                e.preventDefault();\n                dragging = true;\n                const touch = e.originalEvent.touches[0];\n                onDrag(touch.pageX);\n            });\n\n            chartdragon(document).on('touchmove', function(e) {\n                if (dragging) {\n                    const touch = e.originalEvent.touches[0];\n                    onDrag(touch.pageX);\n                    e.preventDefault();\n                }\n            });\n\n            chartdragon(document).on('touchend touchcancel', function() {\n                dragging = false;\n            });\n\n            \/\/ Click on the control panel to set the thumb position\n            $controlPanel.on('click', function(e) {\n                const pageX = e.pageX;\n                onDrag(pageX);\n            });\n\n            \/\/ Initialize the bar to max wattage\n            setBarByWattage(currentW);\n        }\n\n        \/\/ Initialize the chart\n        function initializeChart() {\n            const scaledData1 = dataset1dragon.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset2dragon.data.map(value =\u003e value * scale2);\n            const initialCombinedData = combineData(scaledData1, scaledData2);\n            createChart(dataset1dragon.labels, initialCombinedData);\n        }\n\n        \/\/ Initial load\n        initializeChart();\n\n        \/\/ Create Process Bars for Channel 1 and Channel 2\n        createProcessBar('process-container1dragon', 'global-value1dragon');\n        createProcessBar('process-container2dragon', 'global-value2dragon');\n\n        \/\/ Debounced Resize Handler to Redraw Chart on Screen Size Change\n        let resizeTimeout;\n        chartdragon(window).on('resize', function(){\n            clearTimeout(resizeTimeout);\n            resizeTimeout = setTimeout(function(){\n                if(chart){\n                    chart.resize();\n                }\n                \/\/ Update container metrics for process bars\n                chartdragon('.process-containerdragon').each(function(){\n                    const containerId = chartdragon(this).attr('id');\n                    const valueId = chartdragon(this).siblings('.slider-paratitle').find('.current-value').attr('id');\n                    \/\/ The process bars are already handling their own resize events\n                    \/\/ No additional action is needed here\n                });\n            }, 200); \/\/ Adjust the timeout as needed\n        });\n    });\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-settings=\"{'background_background':'classic'}\" data-element_type=\"container\" data-id=\"6f387c1\" class=\"elementor-element elementor-element-6f387c1 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"heading.default\" data-element_type=\"widget\" data-id=\"759cc7e\" class=\"elementor-element elementor-element-759cc7e elementor-widget elementor-widget-heading\"\u003e\n\u003ch4 class=\"elementor-heading-title elementor-size-default\" style=\"text-align: center;\"\u003eSlide the Bar to See How the Spectrum Changes\u003c\/h4\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"control-panelsdragon\" data-element_type=\"container\" data-id=\"772c78b\" class=\"elementor-element elementor-element-772c78b e-flex e-con-boxed e-con e-child\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-element_type=\"container\" data-id=\"0ef7635\" class=\"elementor-element elementor-element-0ef7635 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"html.default\" data-element_type=\"widget\" data-id=\"f323d91\" class=\"elementor-element elementor-element-f323d91 elementor-widget elementor-widget-html\"\u003e\n\u003cdiv class=\"control-paneldragon\"\u003e\n\u003cp class=\"slider-title\"\u003e\u003cstrong\u003eChannel 1: UVA\u003c\/strong\u003e\u003c\/p\u003e\n\u003cdiv id=\"process-container1dragon\" class=\"process-containerdragon\"\u003e\n\u003cdiv style=\"width: 100%;\" class=\"process-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv style=\"transform: translate(-50%, -50%) translateX(237.778px);\" class=\"process-thumb\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e \u003cspan id=\"global-value1dragon\" class=\"current-value\"\u003e65W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-element_type=\"container\" data-id=\"6a966da\" class=\"elementor-element elementor-element-6a966da e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"html.default\" data-element_type=\"widget\" data-id=\"145f0c5\" class=\"elementor-element elementor-element-145f0c5 elementor-widget elementor-widget-html\"\u003e\n\u003cdiv class=\"control-paneldragon\"\u003e\n\u003cp class=\"slider-title\"\u003e\u003cstrong\u003eChannel 2: Full Spectrum\u003c\/strong\u003e\u003c\/p\u003e\n\u003cdiv id=\"process-container2dragon\" class=\"process-containerdragon\"\u003e\n\u003cdiv style=\"width: 100%;\" class=\"process-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv style=\"transform: translate(-50%, -50%) translateX(237.778px);\" class=\"process-thumb\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e \u003cspan id=\"global-value2dragon\" class=\"current-value\"\u003e1285W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eFull Spectrum Illumination\u003c\/strong\u003e, encompassing Far Red and Ultraviolet (UV) wavelengths.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDual Channel Controls \u003c\/strong\u003efor versatile customization.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAdjustable wattage option\u003c\/strong\u003e offers an easy way to choose desired wattage for higher and lower lumen intensity outputs for different growth stages.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eExceptionally High Photosynthetic Photon Efficacy (PPE)\u003c\/strong\u003e of up to 3.02 µmols\/J, ensuring optimal plant growth.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eElevated Photosynthetic Photon Flux Density (PPFD)\u003c\/strong\u003e reaching 1696 µmols\/m2\/s at a distance of 12 inches.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDimensions:\u003c\/strong\u003e 4 feet by 6 feet, featuring 12 bars for uniform photon dispersion.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEquipped with two physical dimmers\u003c\/strong\u003e for manual adjustment of the two channels, giving user precise control.\u003c\/li\u003e\n\u003cli\u003eData control up to 100x fixtures per lighting controller.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1x DraGrow LED Grow Light\u003c\/li\u003e\n\u003cli\u003e1x 10′ 240V Power Cord for flexible power connections\u003c\/li\u003e\n\u003cli\u003e2x Steel Wire Slings for secure mounting\u003c\/li\u003e\n\u003cli\u003e1x Data Cable for connectivity\u003c\/li\u003e\n\u003cli\u003e2x 8″ Rope Ratchets for adjustable hanging\u003c\/li\u003e\n\u003cli\u003e1x 120-240V Plug Adapter for versatile power options\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros_DraGrow_LED_Grow_Light_Spec_Sheet.pdf?v=1759313821\" title=\"GrowPros DraGrow LED Grow Light Spec Sheet\" rel=\"noopener\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 data-start=\"909\" data-end=\"984\"\u003eDaisy Chaining\u003c\/h3\u003e\n\u003cp\u003e\u003cimg\u003e\u003c\/p\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Beast-Series-Dragon-2-Daisy-Chaining.png?v=1740475010\" alt=\"HLG Scorpion Diablo X LED grow light featuring integrated daisy-chain power system for linking multiple fixtures\" style=\"float: none;\"\u003e\u003c\/div\u003e\n\u003cp\u003e\u003cimg\u003e\u003cimg\u003e\u003cimg\u003e\u003c\/p\u003e\n\u003ch3\u003eAdditional Information:\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eVersatile Design:\u003c\/strong\u003e Ideal for commercial cultivation, providing a complete light spectrum that mimics natural sunlight for optimal growth conditions.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eExtended Lifespan:\u003c\/strong\u003e Designed for durability and long-term use, surpassing traditional grow light sources to promote vigorous plant development.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eGrowPros DraGrow Video\u003c\/h3\u003e\n\u003cp\u003e\u003ciframe title=\"YouTube video player\" src=\"https:\/\/www.youtube.com\/embed\/EIUh1JjpWUc?si=wc9D8ybQaKlbXYmO\" height=\"315\" width=\"560\"\u003e\u003c\/iframe\u003e\u003c\/p\u003e\n\u003c!----\u003e","brand":"GrowPros","offers":[{"title":"Default Title","offer_id":49484047548708,"sku":"GPS-DC1350-UI","price":959.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-DraGrow-2-Channel-Control-Full-Spectrum-LED-Light-4.jpg?v=1753790377"},{"product_id":"phoenix","title":"GrowPros Phoenix Dual Channel 900W LED Grow Light - UVA \u0026 Full Spectrum + Far Red + Deep Blue","description":"\u003ch2\u003eOffering 3 power modes, dual channel spectrum control, 3.1 µmol\/J efficiency, and full-spectrum output with UV and Far Red for maximum plant growth.\u003c\/h2\u003e\n\u003cp\u003eThis grow LED light includes \u003cstrong\u003eGovernor Presets\u003c\/strong\u003e (\u003cstrong\u003e900W, 800W, 660W\u003c\/strong\u003e) for facilities with limited power capacity. These presets let you easily adjust to available power in your grow room and act as a safety mechanism if needed. The presets also make them help in maximizing utility rebates. The Phoenix supports \u003cstrong\u003esmooth dimming from about 1% to 100%\u003c\/strong\u003e, that is 0W to 900W but when a governor preset in engaged then the max power is limited to that setting.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eFeaturing dual dimming channels, \u003c\/strong\u003egrowers can independently fine-tune spectrum for different strains or growth phases. TrolMaster compatibility (via LMA-14 adapter) makes integration into automated environments seamless, while its foldable design allows quick setup and efficient storage. Certified by ETL and DLC and backed by a 5-year warranty, the Phoenix is built for long-term commercial and home hydroponic success.\u003c\/p\u003e\n\u003ch3\u003eIs the Phoenix 900W energy-efficient?\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eYes. With PPE up to 3.1 µmol\/J, this LED grow plant light outperforms HPS systems.\u003c\/strong\u003e For comparison, older HPS fixtures average 1.3 µmol\/J, standard DE HPS reach 1.7 µmol\/J, and premium models top at 2.1 µmol\/J. The Phoenix delivers more usable light per watt, giving growers stronger yields with lower long-term energy costs.\u003c\/p\u003e\n\u003ch3\u003ePower Settings \u0026amp; Dimming\u003c\/h3\u003e\n\u003cp\u003eThis grow LED light includes \u003cstrong\u003eGovernor Presets \u003c\/strong\u003e(e.g.,\u003cstrong\u003e 960W, 830W, 660W\u003c\/strong\u003e) for facilities with limited power capacity. These presets make it easy to match available power while maintaining performance. The grow light also offers \u003cstrong\u003esmooth dimming from about 30% to 100%\u003c\/strong\u003e, letting you fine-tune output — for example, at a 900W preset can run anywhere between \u003cstrong\u003e270W and 900W.\u003c\/strong\u003e\u003c\/p\u003e\n\u003ch3\u003eRecommended Setup\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eFLOWER\u003c\/strong\u003e: 4' x 4' Area, 12\" - 24\" from top of canopy\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eVEG\u003c\/strong\u003e: 5’ x 5′ Area\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 class=\"elementor-heading-title elementor-size-default\" style=\"text-align: center;\"\u003eADJUSTABLE SPECTRUM\u003c\/h3\u003e\n\u003cstyle\u003e\n\/* Chart Container *\/\n.chart-containerphoenix {\n    width: 100%;\n    margin: 10px auto;\n    display: flex;\n    justify-content: center;\n}\n\n\/* Control Panels *\/\n#control-panelsphoenix {\n    display: flex;\n    justify-content: space-around;\n    margin-bottom: 20px;\n    flex-wrap: wrap;\n}\n\n.control-panelphoenix {\n    width: 100%;\n    border: 1px dashed #999999;\n    padding: 20px;\n    margin-bottom: 20px;\n    border-radius: 2px;\n    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n}\n\n.slider-title { \n    font-family: Jost, sans-serif; \n    font-size: 20px; \n    margin-bottom: 15px;\n    color: #000000;\n}\n\n.slider-paratitle {\n    display: flex;\n    flex-direction: row;\n    justify-content: space-between;\n    margin-top: 10px;\n}\n\n.slider-paratitle .current-value {\n    text-align: right;\n    width: 100%;\n    font-weight: bold;\n    color: #000000;\n}\n.slider-paratitle span {\n    color:#000000;\n}\n\n\/* Custom Process Bar Styles *\/\n.process-containerphoenix {\n    width: 100%;\n    height: 16px;\n    background-color: #333333;\n    position: relative;\n    cursor: pointer;\n    border-radius:2px;\n}\n\n.process-bar {\n    height: 100%;\n    background-color: #999999;\n    width: 0;\n    position: absolute;\n    top: 0;\n    left: 0;\n    transform: translateX(0);\n    will-change: width, transform;\n    border-radius:2px;\n}\n\n.process-thumb {\n    width: 20px;\n    height: 20px;\n    background-color: #046e82;\n    border: 1px solid #000000;\n    border-radius: 2px;\n    position: absolute;\n    top: 50%;\n    transform: translate(-50%, -50%);\n    left: 0;\n    cursor: pointer;\n    touch-action: none;\n    transform: translate(-50%, -50%) translateX(0);\n    transition: none;\n    will-change: transform;\n}\n\n\/* Responsive adjustments *\/\n@media screen and (max-width: 767px) {\n    #control-panelsphoenix { \n        flex-direction: column; \n    }\n    .control-panelphoenix { \n        width: 100%; \n        margin-bottom: 20px; \n        padding:10px;\n    }\n    .slider-title { font-size:12px; }\n    .slider-title span {font-size:7px;}\n    .process-containerphoenix { height:14px; }\n    .process-thumb { width: 16px; height: 22px; }\n    .slider-paratitle span { font-size:10px; }\n}\n\u003c\/style\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-settings=\"{'background_background':'classic'}\" data-element_type=\"container\" data-id=\"91e871f\" class=\"elementor-element elementor-element-91e871f e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"html.default\" data-element_type=\"widget\" data-id=\"934de49\" class=\"elementor-element elementor-element-934de49 elementor-widget elementor-widget-html\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"\u003e\u003c\/script\u003e\n\u003cdiv class=\"chart-containerphoenix\"\u003e\u003ccanvas height=\"305\" width=\"611\" style=\"display: block; box-sizing: border-box; height: 340px; width: 680px;\" id=\"myChart_phoenix\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003cscript\u003e\n    var chartphoenix = jQuery.noConflict(true);\n    chartphoenix(document).ready(function($) {\n        \/\/ Chart.js Setup\n        const ctx = chartphoenix('#myChart_phoenix')[0].getContext('2d');\n        let chart;\n        const dataset1phoenix = {\n            label: 'Channel 1',\n            labels: ['','', '360', '', '', '', '', '395', '', '', '', '', '', '450', '', '', '', '', '', '500', '', '', '', '', '', '', '', '', '', '600', '', '', '', '', '660', '', '', '', '', '', '', '730', '', '', '', '', '', '780', '', '', '', '', '', ''],\n            data: [0, 0, 0, 0.2, 1.1, 3, 10, 25, 10, 3.2, 1.1, 0.4, 0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n        };\n        const dataset2phoenix = {\n            label: 'Channel 2',\n            data: [0, 0, 0, 0, 0, 0, 0, 0, 0.6, 2.6, 5.2, 9.3, 20.1, 48, 20.3, 13.5, 6.7, 2.9, 6.3, 14.6, 20, 24.4, 27.4, 30.4, 32.9, 35.4, 37.9, 39.4, 38.9, 36.8, 33.6, 30.9, 34.8, 70, 98, 30, 11.3, 4.3, 5.3, 9.5, 14.7, 18.3, 6.4, 1.5, 0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n        };\n        const colors = ['#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#65009f', '#40009f', '#1e149e', '#103e93', '#265aa8', '#3173b8', '#3698d5', '#45bee3', '#6fc4be', '#6ebf80', '#69b72d', '#69b72d', '#6bb72d', '#79bc28', '#97c626', '#a8cc2b', '#c8d933', '#d8e036', '#f1eb36', '#f4c41c', '#f19518', '#ed761b', '#e95619', '#e62718', '#e11713', '#ce141b', '#b91c22', '#a91f24', '#951e23', '#851123', '#7f191e', '#7d191d', '#76161b', '#6a1216', '#631014', '#5f0e12', '#51050a', '#440104', '#380103', '#230304', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714'];\n\n        let scale1 = 1;\n        let scale2 = 1;\n\n        function createGradient(ctx, chartArea, colors) {\n            const gradient = ctx.createLinearGradient(chartArea.left, 0, chartArea.right, 1);\n            colors.forEach((color, index) =\u003e {\n                gradient.addColorStop(index \/ (colors.length - 1), color);\n            });\n            return gradient;\n        }\n\n        function createChart(labels, combinedData) {\n            if (chart) {\n                chart.destroy();\n            }\n\n            chart = new Chart(ctx, {\n                type: 'line',\n                data: {\n                    labels: labels,\n                    datasets: [\n                        {\n                            type: 'line',\n                            label: 'PPF',\n                            data: combinedData,\n                            borderWidth: 0.1,\n                            backgroundColor: function(context) {\n                                const chart = context.chart;\n                                const { ctx, chartArea } = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            borderColor: function(context) {\n                                const chart = context.chart;\n                                const { ctx, chartArea } = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            fill: true,\n                            tension: 0.4 \/\/ Smoothing effect\n                        },\n                        {\n                            type: 'line',\n                            label: 'Outline',\n                            data: combinedData,\n                            borderWidth: 2,\n                            backgroundColor: 'transparent',\n                            borderColor: '#000000', \/\/ Outline color\n                            fill: false,\n                            tension: 0.4\n                        }\n                    ]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: true,\n                    scales: {\n                        x: {\n                            stacked: true,\n                            grid: {\n                                display: false \/\/ Hide y-axis grid lines\n                            },\n                            ticks: {\n                                color: '#000000',\n                                autoSkip: false, \/\/ Prevent auto-skipping of labels\n                                maxRotation: 0, \/\/ Prevent label rotation\n                                minRotation: 0, \/\/ Prevent label rotation\n                                maxTicksLimit: labels.length \/\/ Ensure all labels are shown\n                            },\n                            border: {\n                                width: 2,\n                                color: '#000000', \/\/ Change y-axis line color\n                            }\n                        },\n                        y: {\n                            beginAtZero: true,\n                            max: 100, \/\/ Set a static max value for y-axis to accommodate added values\n                            grid: {\n                                color: '#444444',\n                            },\n                            border: {\n                                width: 2,\n                                color: '#000000', \/\/ Change y-axis line color\n                            },\n                            ticks: {\n                                color: '#000000',\n                                callback: function(value) {\n                                    return value % 20 === 0 ? value + '%' : ''; \/\/ Custom label formatting\n                                }\n                            }\n                        }\n                    },\n                    events: null,\n                    radius: 0,\n                    plugins: {\n                        filler: { propagate: true }, \/\/ Enable filler\n                        legend: { display: false },\n                    },\n                    animation: {\n                        duration: 0 \/\/ Animation duration for smoother updates\n                    }\n                }\n            });\n        }\n\n        function combineData(data1, data2) {\n            return data1.map((value, index) =\u003e {\n                return value + data2[index];\n            });\n        }\n\n        function updateChart() {\n            const scaledData1 = dataset1phoenix.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset2phoenix.data.map(value =\u003e value * scale2);\n            const combinedData = combineData(scaledData1, scaledData2);\n\n            if (chart) {\n                chart.data.datasets[0].data = combinedData;\n                chart.data.datasets[1].data = combinedData; \/\/ Update outline dataset\n                chart.options.animation.duration = 300;\n                chart.update();\n            }\n        }\n\n        function createProcessBar(containerId, valueId) {\n            const $container = chartphoenix(`#${containerId}`);\n            const $controlPanel = $container.closest('.control-panelphoenix');\n            const $thumb = $container.find('.process-thumb');\n            const $bar = $container.find('.process-bar');\n            const $currentValue = chartphoenix(`#${valueId}`);\n            let dragging = false;\n            let containerOffset = $controlPanel.offset().left;\n            let containerWidth = $controlPanel.width();\n            let processContainerWidth = $container.width();\n            \/\/ Initialize to max wattage for each channel\n            let currentW = containerId === 'process-container1phoenix' ? 45 : 855;\n\n            \/\/ Update container metrics on resize\n            function updateContainerMetrics() {\n                containerOffset = $controlPanel.offset().left;\n                containerWidth = $controlPanel.width();\n                processContainerWidth = $container.width();\n                setBarByWattage(currentW);\n            }\n\n            chartphoenix(window).on('resize', updateContainerMetrics);\n\n            \/\/ Initialize container metrics\n            updateContainerMetrics();\n\n            \/\/ Function to set the bar and thumb position based on wattage\n            function setBarByWattage(wattage) {\n                const maxWattage = containerId === 'process-container1phoenix' ? 45 : 855;\n                currentW = Math.min(Math.max(wattage, 0), maxWattage);\n                const touchRatio = currentW \/ maxWattage;\n                const thumbLeft = touchRatio * processContainerWidth;\n\n                \/\/ Update bar width\n                $bar.css('width', `${touchRatio * 100}%`);\n                \/\/ Update thumb position\n                $thumb.css('transform', `translate(-50%, -50%) translateX(${thumbLeft}px)`);\n                \/\/ Update displayed value\n                $currentValue.text(`${currentW.toFixed(0)}W`);\n                \/\/ Update the corresponding scale variable and chart\n                if (containerId === 'process-container1phoenix') {\n                    scale1 = currentW \/ maxWattage;\n                } else if (containerId === 'process-container2phoenix') {\n                    scale2 = currentW \/ maxWattage;\n                }\n                updateChart();\n            }\n\n            \/\/ Function to handle the dragging logic\n            function handleDrag(pageX) {\n                const newLeft = pageX - containerOffset;\n                const clampedLeft = Math.min(Math.max(newLeft, 0), containerWidth);\n                const touchRatio = clampedLeft \/ containerWidth;\n                const maxWattage = containerId === 'process-container1phoenix' ? 45 : 855;\n                const newWattage = touchRatio * maxWattage;\n                setBarByWattage(newWattage);\n            }\n\n            \/\/ Throttle dragging using requestAnimationFrame\n            let rafId = null;\n\n            function onDrag(pageX) {\n                if (rafId) return; \/\/ If a frame is already requested, do nothing\n                rafId = requestAnimationFrame(() =\u003e {\n                    handleDrag(pageX);\n                    rafId = null;\n                });\n            }\n\n            \/\/ Mouse events\n            $thumb.on('mousedown', function(e) {\n                e.preventDefault();\n                dragging = true;\n            });\n\n            chartphoenix(document).on('mousemove', function(e) {\n                if (dragging) {\n                onDrag(e.pageX);\n                }\n            });\n\n            chartphoenix(document).on('mouseup', function() {\n                dragging = false;\n            });\n\n            \/\/ Touch events bound to control panel\n            $controlPanel.on('touchstart', function(e) {\n                e.preventDefault();\n                dragging = true;\n                const touch = e.originalEvent.touches[0];\n                onDrag(touch.pageX);\n            });\n\n            chartphoenix(document).on('touchmove', function(e) {\n                if (dragging) {\n                    const touch = e.originalEvent.touches[0];\n                    onDrag(touch.pageX);\n                    e.preventDefault();\n                }\n            });\n\n            chartphoenix(document).on('touchend touchcancel', function() {\n                dragging = false;\n            });\n\n            \/\/ Click on the control panel to set the thumb position\n            $controlPanel.on('click', function(e) {\n                const pageX = e.pageX;\n                onDrag(pageX);\n            });\n\n            \/\/ Initialize the bar to max wattage\n            setBarByWattage(currentW);\n        }\n\n        \/\/ Initialize the chart\n        function initializeChart() {\n            const scaledData1 = dataset1phoenix.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset2phoenix.data.map(value =\u003e value * scale2);\n            const initialCombinedData = combineData(scaledData1, scaledData2);\n            createChart(dataset1phoenix.labels, initialCombinedData);\n        }\n\n        \/\/ Initial load\n        initializeChart();\n\n        \/\/ Create Process Bars for Channel 1 and Channel 2\n        createProcessBar('process-container1phoenix', 'global-value1phoenix');\n        createProcessBar('process-container2phoenix', 'global-value2phoenix');\n\n        \/\/ Debounced Resize Handler to Redraw Chart on Screen Size Change\n        let resizeTimeout;\n        chartphoenix(window).on('resize', function(){\n            clearTimeout(resizeTimeout);\n            resizeTimeout = setTimeout(function(){\n                if(chart){\n                    chart.resize();\n                }\n                \/\/ Update container metrics for process bars\n                chartphoenix('.process-containerphoenix').each(function(){\n                    const containerId = chartphoenix(this).attr('id');\n                    const valueId = chartphoenix(this).siblings('.slider-paratitle').find('.current-value').attr('id');\n                    \/\/ The process bars are already handling their own resize events\n                    \/\/ No additional action is needed here\n                });\n            }, 200); \/\/ Adjust the timeout as needed\n        });\n    });\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-settings=\"{'background_background':'classic'}\" data-element_type=\"container\" data-id=\"38566e3\" class=\"elementor-element elementor-element-38566e3 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"heading.default\" data-element_type=\"widget\" data-id=\"1f9dbf2\" class=\"elementor-element elementor-element-1f9dbf2 elementor-widget elementor-widget-heading\"\u003e\n\u003ch4 class=\"elementor-heading-title elementor-size-default\" style=\"text-align: center;\"\u003eSlide the Bar to See How the Spectrum Changes\u003c\/h4\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"control-panelsphoenix\" data-element_type=\"container\" data-id=\"661f908\" class=\"elementor-element elementor-element-661f908 e-flex e-con-boxed e-con e-child\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-element_type=\"container\" data-id=\"4245247\" class=\"elementor-element elementor-element-4245247 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"html.default\" data-element_type=\"widget\" data-id=\"d53fd90\" class=\"elementor-element elementor-element-d53fd90 elementor-widget elementor-widget-html\"\u003e\n\u003cdiv class=\"control-panelphoenix\"\u003e\n\u003cp class=\"slider-title\"\u003e\u003cstrong\u003eChannel 1: UVA\u003c\/strong\u003e\u003c\/p\u003e\n\u003cdiv id=\"process-container1phoenix\" class=\"process-containerphoenix\"\u003e\n\u003cdiv style=\"width: 100%;\" class=\"process-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv style=\"transform: translate(-50%, -50%) translateX(237.778px);\" class=\"process-thumb\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e \u003cspan id=\"global-value1phoenix\" class=\"current-value\"\u003e45W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-element_type=\"container\" data-id=\"d769702\" class=\"elementor-element elementor-element-d769702 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"html.default\" data-element_type=\"widget\" data-id=\"fcb1db4\" class=\"elementor-element elementor-element-fcb1db4 elementor-widget elementor-widget-html\"\u003e\n\u003cdiv class=\"control-panelphoenix\"\u003e\n\u003cp class=\"slider-title\"\u003e\u003cstrong\u003eChannel 2: Full Spectrum\u003c\/strong\u003e\u003c\/p\u003e\n\u003cdiv id=\"process-container2phoenix\" class=\"process-containerphoenix\"\u003e\n\u003cdiv style=\"width: 100%;\" class=\"process-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv style=\"transform: translate(-50%, -50%) translateX(237.778px);\" class=\"process-thumb\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e \u003cspan id=\"global-value2phoenix\" class=\"current-value\"\u003e855\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eFull-spectrum illumination\u003c\/strong\u003e, encompassing Far Red and Ultraviolet(UV) wavelengths.\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eCompatible with most major lighting controllers.\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDual Channel Controls \u003c\/strong\u003efor versatile customization.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eExceptionally High Photosynthetic Photon Efficacy (PPE) \u003c\/strong\u003eof up to 3.0 μmols, ensuring optimal plant growth.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eElevated Photosynthetic Photon Flux (PPF) r\u003c\/strong\u003eeaching 2565 μmols\/s.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEffortless Installation: \u003c\/strong\u003eReady to use upon unpacking, no assembly required.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDimensions: \u003c\/strong\u003e4 feet by 4 feet, featuring 8 bars for uniform photon dispersion.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEquipped with two physical dimmers for manual adjustment \u003c\/strong\u003eof the two channels, giving user precise control.\u003c\/li\u003e\n\u003cli\u003eScientifically engineered to maximize photosynthesis, growth and yield\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1x PHOENIX LED Grow Light\u003c\/li\u003e\n\u003cli\u003e1x 10′ 240V Power Cord\u003c\/li\u003e\n\u003cli\u003e2x Steel Wire Slings for secure mounting\u003c\/li\u003e\n\u003cli\u003e1x Data Cable for connectivity\u003c\/li\u003e\n\u003cli\u003e2x 8″ Rope Ratchets for adjustable hanging\u003c\/li\u003e\n\u003cli\u003e1x 120-240V Plug Adapter for versatile power connections\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" title=\"GrowPros Phoenix Dual Channel 900W LED Grow Light Spec Sheet\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros_Phoenix_Spec_Sheet.pdf?v=1759317688\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDaisy Chaining\u003c\/h3\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg style=\"float: none;\" alt=\"Hydro-X lighting controller system connected to LED grow lights using RJ cables in daisy chain configuration\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Beast-Series-Phoenix-2-Daisy-Chaining.png?v=1740474738\"\u003e\u003c\/div\u003e\n\u003ch3\u003eAdditional Information:\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eCompatibility:\u003c\/strong\u003e Works with most major lighting controllers (please contact our support team for details on compatibility).\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eScientific Engineering:\u003c\/strong\u003e Designed to maximize photosynthesis, growth, and yield, ensuring your plants receive the best possible light conditions for vigorous development.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c!----\u003e","brand":"GrowPros","offers":[{"title":"Default Title","offer_id":49484099027236,"sku":"GPS-PHOENIX-UI","price":720.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Phoenix-Dual-Channel-LED-Grow-Light-4.jpg?v=1753790396"},{"product_id":"ultra-400","title":"GrowPros Eagle Dual-Channel 450W LED Veg Light - UVA \u0026 Full Spectrum + Deep Blue + Red","description":"\u003ch2\u003eDelivers dual channel spectrum with UVA blue and white optimized for vegetation 3.01 µmol\/J efficiency, and slim foldable design.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eEagle LED Veg Light is engineered exclusively for the vegetative stage\u003c\/strong\u003e, with a dual-channel spectrum of UVA, blue, and white light that reduces internodal spacing and promotes vigorous root growth. \u003cstrong\u003eDrawing 450W with a PPE of 3.01 µmol\/J,\u003c\/strong\u003e this light produces 1326 µmol\/s PPF and an average PPFD of 750 µmol\/m²\/s over a 4' x 4' area. Its slim, foldable design and low heat output make it ideal for vertical cultivation, maximizing space and efficiency in multi-tier commercial setups.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eBuilt for commercial growers, \u003c\/strong\u003ethe Eagle integrates seamlessly with TrolMaster controllers via the LMA-14 adapter, offering independent dimming on each channel for precise spectrum adjustment. \u003cstrong\u003eWith passive thermal management, \u003c\/strong\u003eDLC certification, and a 5-year warranty, it provides reliable, long-term performance while qualifying for energy rebate programs in many regions.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAttention: Not ideal as a flowering light.\u003c\/strong\u003e\u003c\/p\u003e\n\u003ch3\u003eIs the GrowPros Eagle energy-efficient?\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eAt 3.01 µmol\/J, this veg grow light is significantly more efficient than HPS systems.\u003c\/strong\u003e Older fixtures average 1.3 µmol\/J, standard DE HPS reach 1.7 µmol\/J, and premium HPS peak near 2.1 µmol\/J. The Eagle delivers more usable light per watt, reducing power costs while producing healthier, stronger plants during the critical vegetative stage.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eRecommended Setup\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eVeg: \u003c\/strong\u003e4' x 4' Area; Max: 5' x 5'\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 style=\"text-align: center;\"\u003eAdjustable Spectrum\u003c\/h3\u003e\n\u003cstyle\u003e\n    \/* Chart Container *\/\n    #chartcontainer_eagle .chart-containereagle {\n        width: 100%;\n        margin: 10px auto;\n        display: flex;\n        justify-content: center;\n    }\n\n    \/* Control Panels *\/\n    #chartcontainer_eagle #control-panelseagle {\n        display: flex;\n        justify-content: space-around;\n        margin-bottom: 20px;\n        flex-wrap: wrap;\n    }\n\n    #chartcontainer_eagle .control-paneleagle {\n        width: 100%;\n        border: 1px dashed #999999;\n        padding: 20px;\n        margin-bottom: 20px;\n        border-radius: 2px;\n        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n    }\n\n    #chartcontainer_eagle .slider-title { \n        font-family: Jost, sans-serif; \n        font-size: 20px; \n        margin-bottom: 15px;\n        color: #000000;\n    }\n\n    #chartcontainer_eagle .slider-paratitle {\n        display: flex;\n        flex-direction: row;\n        justify-content: space-between;\n        margin-top: 10px;\n    }\n\n    #chartcontainer_eagle .slider-paratitle .current-value {\n        text-align: right;\n        width: 100%;\n        font-weight: bold;\n        color: #000000;\n    }\n    #chartcontainer_eagle .slider-paratitle span {\n        color:#000000;\n    }\n    \/* Custom Process Bar Styles *\/\n    #chartcontainer_eagle .process-containereagle {\n        width: 100%;\n        height: 16px;\n        background-color: #333333;\n        position: relative;\n        cursor: pointer;\n        border-radius:2px;\n    }\n\n    #chartcontainer_eagle .process-bar {\n        height: 100%;\n        background-color: #999999;\n        width: 0;\n        position: absolute;\n        top: 0;\n        left: 0;\n        transform: translateX(0);\n        will-change: width, transform;\n        border-radius:2px;\n    }\n\n    #chartcontainer_eagle .process-thumb {\n        width: 20px;\n        height: 20px;\n        background-color: #046e82;\n        border: 1px solid #000000;\n        border-radius: 2px;\n        position: absolute;\n        top: 50%;\n        transform: translate(-50%, -50%);\n        left: 0;\n        cursor: pointer;\n        touch-action: none;\n        transform: translate(-50%, -50%) translateX(0);\n        transition: none;\n        will-change: transform;\n    }\n\n    \/* Responsive adjustments *\/\n    @media screen and (max-width: 767px) {\n        #chartcontainer_eagle #control-panelseagle { \n            flex-direction: column; \n        }\n        #chartcontainer_eagle .control-paneleagle { \n            width: 100%; \n            margin-bottom: 20px; \n            padding:10px;\n        }\n        #chartcontainer_eagle .slider-title { font-size:12px; }\n        #chartcontainer_eagle .slider-title span {font-size:7px;}\n        #chartcontainer_eagle .process-containereagle { height:14px; }\n        #chartcontainer_eagle .process-thumb { width: 16px; height: 22px; }\n        #chartcontainer_eagle .slider-paratitle span { font-size:10px; }\n    }\n\u003c\/style\u003e\n\u003cdiv class=\"elementor-element elementor-element-a47e5ae e-flex e-con-boxed e-con e-parent e-lazyloaded\" data-id=\"a47e5ae\" data-element_type=\"container\" id=\"chartcontainer_eagle\" data-settings='{\"background_background\":\"classic\"}'\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-91e871f e-con-full e-flex e-con e-child\" data-id=\"91e871f\" data-element_type=\"container\" data-settings='{\"background_background\":\"classic\"}'\u003e\n\u003cdiv class=\"elementor-element elementor-element-934de49 elementor-widget elementor-widget-html\" data-id=\"934de49\" data-element_type=\"widget\" data-widget_type=\"html.default\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"\u003e\u003c\/script\u003e\n\u003cdiv class=\"chart-containereagle\"\u003e\u003ccanvas id=\"myChart_eagle\" style=\"display: block; box-sizing: border-box; height: 340px; width: 680px;\" width=\"611\" height=\"305\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003cscript\u003e\n    var charteagle = jQuery.noConflict(true);\n    charteagle(document).ready(function($) {\n        \/\/ Chart.js Setup\n        const ctx = charteagle('#myChart_eagle')[0].getContext('2d');\n        let chart;\n        const dataset1eagle = {\n            label: 'Channel 1',\n            labels: ['','', '360', '', '', '', '', '395', '', '', '', '', '', '450', '', '', '', '', '', '500', '', '', '', '', '', '', '', '', '', '600', '', '', '', '', '660', '', '', '', '', '', '', '730', '', '', '', '', '', '780', '', '', '', '', '', ''],\n            data: [0, 0, 0, 0, 0, 0, 0, 0, 0.2, 2, 10, 30, 60, 99, 50, 32, 18, 14, 19, 29, 38, 45, 49.4, 52.4, 54, 55, 55.8, 56, 55, 51, 45, 38, 34, 39, 59, 37, 17, 9, 5, 3, 2.1, 1.6, 1.2, 1, 0.8, 0.5, 0.2, 0.1, 0, 0, 0, 0, 0, 0, 0 ]\n        };\n        const dataset2eagle = {\n            label: 'Channel 2',\n            data: [0, 0, 0, 0.2, 1.1, 3, 10, 30, 10, 3.2, 1.1, 0.4, 0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n        };\n        const colors = ['#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#65009f', '#40009f', '#1e149e', '#103e93', '#265aa8', '#3173b8', '#3698d5', '#45bee3', '#6fc4be', '#6ebf80', '#69b72d', '#69b72d', '#6bb72d', '#79bc28', '#97c626', '#a8cc2b', '#c8d933', '#d8e036', '#f1eb36', '#f4c41c', '#f19518', '#ed761b', '#e95619', '#e62718', '#e11713', '#ce141b', '#b91c22', '#a91f24', '#951e23', '#851123', '#7f191e', '#7d191d', '#76161b', '#6a1216', '#631014', '#5f0e12', '#51050a', '#440104', '#380103', '#230304', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714'];\n\n        let scale1 = 1;\n        let scale2 = 1;\n\n        function createGradient(ctx, chartArea, colors) {\n            const gradient = ctx.createLinearGradient(chartArea.left, 0, chartArea.right, 1);\n            colors.forEach((color, index) =\u003e {\n                gradient.addColorStop(index \/ (colors.length - 1), color);\n            });\n            return gradient;\n        }\n\n        function createChart(labels, combinedData) {\n            if (chart) {\n                chart.destroy();\n            }\n\n            chart = new Chart(ctx, {\n                type: 'line',\n                data: {\n                    labels: labels,\n                    datasets: [\n                        {\n                            type: 'line',\n                            label: 'PPF',\n                            data: combinedData,\n                            borderWidth: 0.1,\n                            backgroundColor: function(context) {\n                                const chart = context.chart;\n                                const { ctx, chartArea } = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            borderColor: function(context) {\n                                const chart = context.chart;\n                                const { ctx, chartArea } = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            fill: true,\n                            tension: 0.4 \/\/ Smoothing effect\n                        },\n                        {\n                            type: 'line',\n                            label: 'Outline',\n                            data: combinedData,\n                            borderWidth: 2,\n                            backgroundColor: 'transparent',\n                            borderColor: '#000000', \/\/ Outline color\n                            fill: false,\n                            tension: 0.4\n                        }\n                    ]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: true,\n                    scales: {\n                        x: {\n                            stacked: true,\n                            grid: {\n                                display: false \/\/ Hide y-axis grid lines\n                            },\n                            ticks: {\n                                color: '#000000',\n                                autoSkip: false, \/\/ Prevent auto-skipping of labels\n                                maxRotation: 0, \/\/ Prevent label rotation\n                                minRotation: 0, \/\/ Prevent label rotation\n                                maxTicksLimit: labels.length \/\/ Ensure all labels are shown\n                            },\n                            border: {\n                                width: 2,\n                                color: '#000000', \/\/ Change y-axis line color\n                            }\n                        },\n                        y: {\n                            beginAtZero: true,\n                            max: 100, \/\/ Set a static max value for y-axis to accommodate added values\n                            grid: {\n                                color: '#444444',\n                            },\n                            border: {\n                                width: 2,\n                                color: '#000000', \/\/ Change y-axis line color\n                            },\n                            ticks: {\n                                color: '#000000',\n                                callback: function(value) {\n                                    return value % 20 === 0 ? value + '%' : ''; \/\/ Custom label formatting\n                                }\n                            }\n                        }\n                    },\n                    events: null,\n                    radius: 0,\n                    plugins: {\n                        filler: { propagate: true }, \/\/ Enable filler\n                        legend: { display: false },\n                    },\n                    animation: {\n                        duration: 0 \/\/ Animation duration for smoother updates\n                    }\n                }\n            });\n        }\n\n        function combineData(data1, data2) {\n            return data1.map((value, index) =\u003e {\n                return value + data2[index];\n            });\n        }\n\n        function updateChart() {\n            const scaledData1 = dataset1eagle.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset2eagle.data.map(value =\u003e value * scale2);\n            const combinedData = combineData(scaledData1, scaledData2);\n\n            if (chart) {\n                chart.data.datasets[0].data = combinedData;\n                chart.data.datasets[1].data = combinedData; \/\/ Update outline dataset\n                chart.options.animation.duration = 300;\n                chart.update();\n            }\n        }\n\n        function createProcessBar(containerId, valueId) {\n            const $container = charteagle(`#${containerId}`);\n            const $controlPanel = $container.closest('.control-paneleagle');\n            const $thumb = $container.find('.process-thumb');\n            const $bar = $container.find('.process-bar');\n            const $currentValue = charteagle(`#${valueId}`);\n            let dragging = false;\n            let containerOffset = $controlPanel.offset().left;\n            let containerWidth = $controlPanel.width();\n            let processContainerWidth = $container.width();\n            \/\/ Initialize to max wattage for each channel\n            let currentW = containerId === 'process-container1eagle' ? 415 : 35;\n\n            \/\/ Update container metrics on resize\n            function updateContainerMetrics() {\n                containerOffset = $controlPanel.offset().left;\n                containerWidth = $controlPanel.width();\n                processContainerWidth = $container.width();\n                setBarByWattage(currentW);\n            }\n\n            charteagle(window).on('resize', updateContainerMetrics);\n\n            \/\/ Initialize container metrics\n            updateContainerMetrics();\n\n            \/\/ Function to set the bar and thumb position based on wattage\n            function setBarByWattage(wattage) {\n                const maxWattage = containerId === 'process-container1eagle' ? 415 : 35;\n                currentW = Math.min(Math.max(wattage, 0), maxWattage);\n                const touchRatio = currentW \/ maxWattage;\n                const thumbLeft = touchRatio * processContainerWidth;\n\n                \/\/ Update bar width\n                $bar.css('width', `${touchRatio * 100}%`);\n                \/\/ Update thumb position\n                $thumb.css('transform', `translate(-50%, -50%) translateX(${thumbLeft}px)`);\n                \/\/ Update displayed value\n                $currentValue.text(`${currentW.toFixed(0)}W`);\n                \/\/ Update the corresponding scale variable and chart\n                if (containerId === 'process-container1eagle') {\n                    scale1 = currentW \/ maxWattage;\n                } else if (containerId === 'process-container2eagle') {\n                    scale2 = currentW \/ maxWattage;\n                }\n                updateChart();\n            }\n\n            \/\/ Function to handle the dragging logic\n            function handleDrag(pageX) {\n                const newLeft = pageX - containerOffset;\n                const clampedLeft = Math.min(Math.max(newLeft, 0), containerWidth);\n                const touchRatio = clampedLeft \/ containerWidth;\n                const maxWattage = containerId === 'process-container1eagle' ? 415 : 35;\n                const newWattage = touchRatio * maxWattage;\n                setBarByWattage(newWattage);\n            }\n\n            \/\/ Throttle dragging using requestAnimationFrame\n            let rafId = null;\n\n            function onDrag(pageX) {\n                if (rafId) return; \/\/ If a frame is already requested, do nothing\n                rafId = requestAnimationFrame(() =\u003e {\n                    handleDrag(pageX);\n                    rafId = null;\n                });\n            }\n\n            \/\/ Mouse events\n            $thumb.on('mousedown', function(e) {\n                e.preventDefault();\n                dragging = true;\n            });\n\n            charteagle(document).on('mousemove', function(e) {\n                if (dragging) {\n                onDrag(e.pageX);\n                }\n            });\n\n            charteagle(document).on('mouseup', function() {\n                dragging = false;\n            });\n\n            \/\/ Touch events bound to control panel\n            $controlPanel.on('touchstart', function(e) {\n                e.preventDefault();\n                dragging = true;\n                const touch = e.originalEvent.touches[0];\n                onDrag(touch.pageX);\n            });\n\n            charteagle(document).on('touchmove', function(e) {\n                if (dragging) {\n                    const touch = e.originalEvent.touches[0];\n                    onDrag(touch.pageX);\n                    e.preventDefault();\n                }\n            });\n\n            charteagle(document).on('touchend touchcancel', function() {\n                dragging = false;\n            });\n\n            \/\/ Click on the control panel to set the thumb position\n            $controlPanel.on('click', function(e) {\n                const pageX = e.pageX;\n                onDrag(pageX);\n            });\n\n            \/\/ Initialize the bar to max wattage\n            setBarByWattage(currentW);\n        }\n\n        \/\/ Initialize the chart\n        function initializeChart() {\n            const scaledData1 = dataset1eagle.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset2eagle.data.map(value =\u003e value * scale2);\n            const initialCombinedData = combineData(scaledData1, scaledData2);\n            createChart(dataset1eagle.labels, initialCombinedData);\n        }\n\n        \/\/ Initial load\n        initializeChart();\n\n        \/\/ Create Process Bars for Channel 1 and Channel 2\n        createProcessBar('process-container1eagle', 'global-value1eagle');\n        createProcessBar('process-container2eagle', 'global-value2eagle');\n\n        \/\/ Debounced Resize Handler to Redraw Chart on Screen Size Change\n        let resizeTimeout;\n        charteagle(window).on('resize', function(){\n            clearTimeout(resizeTimeout);\n            resizeTimeout = setTimeout(function(){\n                if(chart){\n                    chart.resize();\n                }\n                \/\/ Update container metrics for process bars\n                charteagle('.process-containereagle').each(function(){\n                    const containerId = charteagle(this).attr('id');\n                    const valueId = charteagle(this).siblings('.slider-paratitle').find('.current-value').attr('id');\n                    \/\/ The process bars are already handling their own resize events\n                    \/\/ No additional action is needed here\n                });\n            }, 200); \/\/ Adjust the timeout as needed\n        });\n    });\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-38566e3 e-con-full e-flex e-con e-child\" data-id=\"38566e3\" data-element_type=\"container\" data-settings='{\"background_background\":\"classic\"}'\u003e\n\u003cdiv class=\"elementor-element elementor-element-1f9dbf2 elementor-widget elementor-widget-heading\" data-id=\"1f9dbf2\" data-element_type=\"widget\" data-widget_type=\"heading.default\"\u003e\n\u003ch4 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eSlide the Bar to See How the Spectrum Changes\u003c\/h4\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-661f908 e-flex e-con-boxed e-con e-child\" data-id=\"661f908\" data-element_type=\"container\" id=\"control-panelseagle\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-d769702 e-con-full e-flex e-con e-child\" data-id=\"d769702\" data-element_type=\"container\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-fcb1db4 elementor-widget elementor-widget-html\" data-id=\"fcb1db4\" data-element_type=\"widget\" data-widget_type=\"html.default\"\u003e\n\u003cdiv class=\"control-paneleagle\"\u003e\n\u003cdiv id=\"control-panelseagle\" data-element_type=\"container\" data-id=\"661f908\" class=\"elementor-element elementor-element-661f908 e-flex e-con-boxed e-con e-child\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-element_type=\"container\" data-id=\"d769702\" class=\"elementor-element elementor-element-d769702 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"html.default\" data-element_type=\"widget\" data-id=\"fcb1db4\" class=\"elementor-element elementor-element-fcb1db4 elementor-widget elementor-widget-html\"\u003e\n\u003cdiv class=\"control-paneleagle\"\u003e\n\u003cdiv class=\"slider-title\"\u003e\u003cstrong\u003eChannel 1: \u003cspan style=\"color: #ae94ff;\"\u003eUVA\u003c\/span\u003e\u003c\/strong\u003e\u003c\/div\u003e\n\u003cdiv id=\"process-container2eagle\" class=\"process-containereagle\"\u003e\n\u003cdiv style=\"width: 100%;\" class=\"process-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv style=\"transform: translate(-50%, -50%) translateX(237.778px);\" class=\"process-thumb\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e                                                                                                                                    \u003cstrong\u003e\u003cspan id=\"global-value2eagle\" class=\"current-value\"\u003e35W\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-element_type=\"container\" data-id=\"4245247\" class=\"elementor-element elementor-element-4245247 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"html.default\" data-element_type=\"widget\" data-id=\"d53fd90\" class=\"elementor-element elementor-element-d53fd90 elementor-widget elementor-widget-html\"\u003e\n\u003cdiv class=\"control-paneleagle\"\u003e\n\u003cdiv class=\"slider-title\"\u003e\u003cstrong\u003eChannel 2: Full Spectrum\u003c\/strong\u003e\u003c\/div\u003e\n\u003cdiv id=\"process-container1eagle\" class=\"process-containereagle\"\u003e\n\u003cdiv style=\"width: 100%;\" class=\"process-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv style=\"transform: translate(-50%, -50%) translateX(237.778px);\" class=\"process-thumb\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e                                                                                                                                  \u003cstrong\u003e\u003cspan id=\"global-value1eagle\" class=\"current-value\"\u003e415W\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReduces internodal spacing, increases root development with blue + white spectrum\u003c\/li\u003e\n\u003cli\u003eOptimized spectrum specifically for vegetative growth only before the flowering stage\u003c\/li\u003e\n\u003cli\u003eDual-channel controls for flexible spectrum adjustment\u003c\/li\u003e\n\u003cli\u003eDesigned for commercial use, supporting 208- 277V power outlets for robust performance\u003c\/li\u003e\n\u003cli\u003eHassle-free setup with a foldable design—simply open and use, no assembly required\u003c\/li\u003e\n\u003cli\u003eEligible for energy rebates\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDaisy Chaining\u003c\/h3\u003e\n\u003cp\u003e\u003cimg alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Eagle-Dual-Channels-LED-Veg-Light-Daisy-Chaining.png?v=1750330269\" alt=\"TrolMaster controller and lighting module wiring diagram for indoor grow setup\" style=\"float: none;\"\u003e\u003c\/div\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros Eagle Dual-Channel LED Veg Light \u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros_Eagle_Dual-Channel_LED_Veg_Light_Manual.pdf?v=1750331601\" rel=\"noopener\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2 data-start=\"679\" data-end=\"718\"\u003eMaximum Power Electrical Data\u003c\/h2\u003e\n\u003cp data-start=\"720\" data-end=\"795\"\u003e\u003cstrong\u003eAC Voltage:\u003c\/strong\u003e 120V \/ 208V \/ 240V \/ 277V\u003cbr data-start=\"641\" data-end=\"644\"\u003e\u003cstrong\u003eAC Current: \u003c\/strong\u003e3.74A \/ 2.12A \/ 1.82A \/ 1.55A\u003cbr data-start=\"685\" data-end=\"688\"\u003e\u003cstrong\u003eAC Power: \u003c\/strong\u003e449W \/ 441W \/ 467W \/ 430W\u003cbr data-start=\"723\" data-end=\"726\"\u003e\u003cstrong\u003ePower Factor: \u003c\/strong\u003e0.998 \/ 0.980 \/ 0.970 \/ 0.956\u003c\/p\u003e","brand":"GrowPros","offers":[{"title":"Default Title","offer_id":49484219679012,"sku":"GPS-DC450-VEG","price":400.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Eagle-LED-Veg-Light-3.jpg?v=1753790241"},{"product_id":"secret-lighting-sl-830-uv-ir-led-grow-light","title":"SecretLED Lighting SL-830 UV\/IR LED Grow Light","description":"\u003ch2\u003eFine-tune your spectrum with UV, IR, and full-spectrum dimming for advanced growth control, higher potency, and optimized flowering yield.\u003c\/h2\u003e\n\u003cp\u003e\u003cstrong\u003eThe Secret Lighting SL-830 UV\/IR \u003c\/strong\u003e is a high-efficiency full-spectrum LED grow light, meticulously crafted for horticultural excellence. This fixture is nicknamed “GHOST” for incorporating beneficial non-visible light. Engineered with the latest technology,\u003cstrong\u003e this bright white light with added 660nm red diodes goes beyond conventional spectrums by incorporating Ultraviolet (UV) 385nm and Infrared (IR)730nm wavelengths.\u003c\/strong\u003e Tailored to provide unparalleled versatility, it empowers users to optimize plant growth, quality, and yield precisely. Whether used in various stages of plant development or for specific crops, the Secret Lighting SL-830 UV\/IR is your key to achieving exceptional results.\u003c\/p\u003e\n\u003cp\u003eThe Secret Lighting SL-830 UV\/IR has the power and versatility for all stages and styles of indoor growing\u003cstrong\u003e. Used primarily for high-intensity flowering needs\u003c\/strong\u003e, the all-new onboard multi-channel dimming feature allows for more control over desired light intensity and integration of UV\/IR into your spectrum recipe. The output of Full Spectrum can be adjusted from 0% to 100% using the onboard dial. The output of the UV\/IR can be adjusted and mixed using their onboard dials.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe Secret Lighting Control (NOT INCLUDED) can be added to one or more Secret Lighting fixtures for even more precise External Dimming Control\u003c\/strong\u003e. Including: On\/Off Timing, 0-100% Output, Sunrise\/Sunset Programming and more. The Secret Lighting Control can control up to 250 Secret Lighting fixtures per controller.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDesigned for use in open rooms, over benches, in racks or grow tents\u003c\/li\u003e\n\u003cli\u003eOnboard Dimming + UV\/IR Integration\u003c\/li\u003e\n\u003cli\u003eExternal Dimming (Controller NOT INCLUDED)\u003c\/li\u003e\n\u003cli\u003ePassively Cooled\u003c\/li\u003e\n\u003cli\u003ePlug \u0026amp; Play - contains power \u0026amp; dimming cords, power supply, and mounting hardware\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1 x Fixture\u003c\/li\u003e\n\u003cli\u003e2 x Fixture Hooks\u003c\/li\u003e\n\u003cli\u003e1 x SECRET Power Cord (10')\u003c\/li\u003e\n\u003cli\u003e1 x SECRET Control Cable (10')\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.secretled.com\/image\/Spec_Sheets\/Secret-Lighting-SL830.pdf\" rel=\"noopener\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"SecretLED","offers":[{"title":"120V","offer_id":50345201467684,"sku":"SL-830-UV\/IR-120V","price":1249.0,"currency_code":"USD","in_stock":true},{"title":"240V","offer_id":50345201500452,"sku":"SL-830-UV\/IR-240V","price":1249.0,"currency_code":"USD","in_stock":true},{"title":"277V","offer_id":50345201533220,"sku":"SL-830-UV\/IR-277V","price":1249.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Secret-Lighting-SL-830-UV-IR-LED-Grow-Light-3.jpg?v=1754060689"},{"product_id":"growpros-4-under-canopy-grow-lights-model-3-dual-channel-150w-pack-of-2","title":"GrowPros 4' Cobra Under Canopy Grow Lights Model 3 - 150W Dual Channel UVA + Blue + 5000K \/ Deep Red + Far Red + 3000K","description":"\u003ch2\u003ePush more light through your canopy layers using this compact 4ft dual-channel fixture built for B-bud boost and consistent growth below the tops.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eGrowPros Solutions 4ft Under Canopy Light Model 3\u003c\/strong\u003e is designed to provide supplemental light to the lower regions of plants in indoor cultivation environments by strategically placing it beneath the top canopy of plants. This ensures leaves and flowers below the canopy receive optimal light exposure by eliminating shady areas. Under Canopy Grow Lights' benefits include uniform light distribution, maximized yield, and denser flowers.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eGrowPros Solutions' first-ever under-canopy grow lights dual channel\u003c\/strong\u003e is engineered to \u003cstrong\u003eenhance the yield and color of lower flowers\u003c\/strong\u003e. These supplemental lights can significantly enlarge B-buds and C-buds, promoting better growth and development in areas that typically underperform.\u003c\/p\u003e\n\u003cp\u003eBuilt with \u003cstrong\u003epremium housing and glass lenses\u003c\/strong\u003e, the \u003cmeta charset=\"utf-8\"\u003eCobra UCL Model 3 is a \u003cstrong\u003edual-channel LED grow light\u003c\/strong\u003e designed for growers who want full control. One channel focuses on \u003cstrong\u003eUV and blue wavelengths\u003c\/strong\u003e to drive resin production and quality, while the second channel emphasizes \u003cstrong\u003ered spectrum output\u003c\/strong\u003e for yield. This flexibility makes it ideal for \u003cstrong\u003ecraft operations\u003c\/strong\u003e aiming to fine-tune plant response through each stage.\u003c\/p\u003e\n\u003ch3 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eADJUSTABLE SPECTRUM\u003c\/h3\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"b8cbdd1\" class=\"elementor-element elementor-element-b8cbdd1 e-flex e-con-boxed e-con e-parent e-lazyloaded\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"567dbcc\" class=\"elementor-element elementor-element-567dbcc e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"a47eaa5\" class=\"elementor-element elementor-element-a47eaa5 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"\u003e\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n    \/* Chart Container *\/\n    #chartcontainer_4ftuclm3 .chart-container4ftuclm3 {\n        width: 100%;\n        margin: 10px auto;\n        display: flex;\n        justify-content: center;\n    }\n\n    \/* Control Panels *\/\n    #chartcontainer_4ftuclm3 #control-panels4ftuclm3 {\n        display: flex;\n        justify-content: space-around;\n        margin-bottom: 20px;\n        flex-wrap: wrap;\n    }\n\n    #chartcontainer_4ftuclm3 .control-panel4ftuclm3 {\n        width: 100%;\n        border: 1px dashed #000000;\n        padding: 20px;\n        border-radius: 2px;\n        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n    }\n\n    #chartcontainer_4ftuclm3 .slider-title { \n        font-family: Jost, sans-serif; \n        font-size: 20px; \n        margin-bottom: 15px;\n        color: #000000;\n    }\n\n    #chartcontainer_4ftuclm3 .slider-paratitle {\n        display: flex;\n        flex-direction: row;\n        justify-content: space-between;\n        margin-top: 10px;\n    }\n\n    #chartcontainer_4ftuclm3 .slider-paratitle .current-value {\n        text-align: right;\n        width: 100%;\n        font-weight: bold;\n        color: #000000;\n    }\n    #chartcontainer_4ftuclm3 .slider-paratitle span {\n        color:#000000;\n    }\n    \/* Custom Process Bar Styles *\/\n    #chartcontainer_4ftuclm3 .process-container4ftuclm3 {\n        width: 100%;\n        height: 16px;\n        background-color: #333333;\n        position: relative;\n        cursor: pointer;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm3 .process-bar {\n        height: 100%;\n        background-color: #999999;\n        width: 0;\n        position: absolute;\n        top: 0;\n        left: 0;\n        transform: translateX(0);\n        will-change: width, transform;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm3 .process-thumb {\n        width: 20px;\n        height: 20px;\n        background-color: #046e82;\n        border: 1px solid #000000;\n        border-radius: 2px;\n        position: absolute;\n        top: 50%;\n        transform: translate(-50%, -50%) translateX(0);\n        left: 0;\n        cursor: pointer;\n        touch-action: none;\n        transition: none;\n        will-change: transform;\n    }\n    @media screen and (min-width: 768px) and (max-width: 1024px){\n        #chartcontainer_4ftuclm3 .control-panel4ftuclm3 { padding:10px 20px;}\n        #chartcontainer_4ftuclm3 .slider-title {\n            font-size:10px; \n            margin-bottom:8px ;\n        }\n        #chartcontainer_4ftuclm3 .process-container4ftuclm3 { height:14px; }\n        #chartcontainer_4ftuclm3 .process-thumb { width: 16px; height: 22px; }\n        #chartcontainer_4ftuclm3 .slider-paratitle span {font-size:12px;}\n    }\n    \/* Responsive adjustments *\/\n    @media screen and (max-width: 767px) {\n        #chartcontainer_4ftuclm3 #control-panels4ftuclm3 { \n            flex-direction: column; \n        }\n        #chartcontainer_4ftuclm3 .control-panel4ftuclm3 { \n            width: 100%; \n            margin-bottom: 20px; \n            padding:10px;\n        }\n        #chartcontainer_4ftuclm3 .slider-title { font-size:8px; margin-bottom:4px; }\n\t\t#chartcontainer_4ftuclm3 .slider-title span { font-size: 7px; }\n        #chartcontainer_4ftuclm3 .process-container4ftuclm3 { height:14px; }\n        #chartcontainer_4ftuclm3 .process-thumb { width: 16px; height: 22px; }\n        #chartcontainer_4ftuclm3 .slider-paratitle span { font-size:10px; }\n    }\n\u003c\/style\u003e\n\u003cdiv class=\"elementor-element elementor-element-b8cbdd1 e-flex e-con-boxed e-con e-parent e-lazyloaded\" data-id=\"b8cbdd1\" data-element_type=\"container\" id=\"chartcontainer_4ftuclm3\" data-settings='{\"background_background\":\"classic\"}'\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-567dbcc e-con-full e-flex e-con e-child\" data-id=\"567dbcc\" data-element_type=\"container\" data-settings='{\"background_background\":\"classic\"}'\u003e\n\u003cdiv class=\"elementor-element elementor-element-0b5c308 elementor-widget elementor-widget-text-editor\" data-id=\"0b5c308\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"chart-container4ftuclm3\"\u003e\u003ccanvas id=\"myChart_4ftuclm3\" style=\"display: block; box-sizing: border-box; height: 305px; width: 610px;\" width=\"1221\" height=\"610\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003cscript\u003e\n    var chart4ftuclm3 = jQuery.noConflict(true);\n    chart4ftuclm3(document).ready(function($) {\n        \/\/ Chart.js Setup\n        const ctx = chart4ftuclm3('#myChart_4ftuclm3')[0].getContext('2d');\n        let chart;\n        const dataset14ftuclm3 = {\n            label: 'Channel 1',\n            labels: ['','', '360', '', '', '', '', '395', '', '', '', '', '', '450', '', '', '', '', '', '500', '', '', '', '', '', '', '', '', '', '600', '', '', '', '', '660', '', '', '', '', '', '', '730', '', '', '', '', '', '780', '', '', '', '', '', ''],\n            data: [0, 0, 0, 0.2, 1.1, 3, 10, 23, 10, 2, 2, 8, 22, 53, 31, 15, 8, 12.2, 16, 18.4, 19.6, 20.2, 20.8, 21.4, 22, 22.6, 23.2, 23.8, 23.4, 22.2, 20, 17, 13, 9, 6, 4, 2.8, 2, 1.5, 1.1, 0.5, 0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n        };\n        const dataset24ftuclm3 = {\n            label: 'Channel 2',\n            data: [0, 0, 0, 0, 0, 0.2, 0.4, 0.9, 2.2, 3.6, 2.2, 1.3, 1.1, 1.1, 1.3, 1.5, 1.7, 2, 2.3, 2.6, 3, 3.4, 3.9, 4.4, 4.9, 5.4, 5.9, 6.4, 6.9, 7.8, 9.6, 12.6, 20.8, 50, 94, 50, 21.3, 10, 6.3, 8.3, 12.9, 17, 12.7, 7.3, 3.3, 1.4, 0.2, 0, 0, 0, 0, 0, 0]\n        };\n        const colors = ['#9b51e0','#9b51e0','#9b51e0', '#9b51e0', '#9b51e0','#9b51e0','#9b51e0', '#9b51e0', '#9b51e0', '#9b51e0', '#9b51e0', '#053390', '#1c4a9d', '#1c4a9d','#265aa8', '#3173b8', '#3698d5','#45bee3','#6fc4be', '#6ebf80', '#69b72d','#69b72d', '#6bb72d', '#79bc28','#97c626','#a8cc2b', '#c8d933','#d8e036', '#f1eb36', '#f4c41c', '#f19518', '#ed761b', '#e95619','#e62718','#e11713','#ce141b', '#b91c22', '#a91f24', '#951e23', '#851123', '#7f191e', '#7d191d','#76161b', '#6a1216', '#631014', '#5f0e12', '#51050a','#440104', '#380103','#230304','#221714', '#221714', '#221714','#221714', '#221714', '#221714','#221714', '#221714','#221714', '#221714'];\n\n        let scale1 = 1;\n        let scale2 = 1;\n\n        function createGradient(ctx, chartArea, colors) {\n            const gradient = ctx.createLinearGradient(chartArea.left, 0, chartArea.right, 1);\n            colors.forEach((color, index) =\u003e {\n                gradient.addColorStop(index \/ (colors.length - 1), color);\n            });\n            return gradient;\n        }\n\n        function createChart(labels, combinedData) {\n            if (chart) {\n                chart.destroy();\n            }\n\n            chart = new Chart(ctx, {\n                type: 'line',\n                data: {\n                    labels: labels,\n                    datasets: [\n                        {\n                            type: 'line',\n                            label: 'PPF',\n                            data: combinedData,\n                            borderWidth: 0.1,\n                            backgroundColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            borderColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            fill: true,\n                            tension: 0.4 \/\/ Smoothing effect\n                        },\n                        {\n                            type: 'line',\n                            label: 'Outline',\n                            data: combinedData,\n                            borderWidth: 2,\n                            backgroundColor: 'transparent',\n                            borderColor: '#000000', \/\/ Outline color\n                            fill: false,\n                            tension: 0.4\n                        }\n                    ]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: true,\n                    scales: {\n                        x: {\n                            stacked: true,\n                            grid: {\n                                display: false \/\/ Hide y-axis grid lines\n                            },\n                            ticks: {\n                                color: '#000000',\n                                autoSkip: false, \/\/ Prevent auto-skipping of labels\n                                maxRotation: 0, \/\/ Prevent label rotation\n                                minRotation: 0, \/\/ Prevent label rotation\n                                maxTicksLimit: labels.length \/\/ Ensure all labels are shown\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000',  \/\/ Change x-axis line color\n                            }\n                        },\n                        y: {\n                            beginAtZero: true,\n                            max: 100, \/\/ Set a static max value for y-axis to accommodate added values\n                            grid: {\n                                color: '#000000',\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000', \/\/ Change y-axis line color\n                            },\n                            ticks: {\n                                color: '#000000',\n                                callback: function(value) {\n                                    return value % 20 === 0 ? value + '%' : ''; \/\/ Custom label formatting\n                                }\n                            }\n                        }\n                    },\n                    events: null,\n                    radius: 0,\n                    plugins: {\n                        filler: {propagate: true}, \/\/ Enable filler\n                        legend: { display: false },\n                    },\n                    animation: {\n                        duration: 0 \/\/ Animation duration for smoother updates\n                    }\n                }\n            });\n        }\n\n        function combineData(data1, data2) {\n            return data1.map((value, index) =\u003e {\n                return value + data2[index];\n            });\n        }\n\n        function updateChart() {\n            const scaledData1 = dataset14ftuclm3.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset24ftuclm3.data.map(value =\u003e value * scale2);\n            const combinedData = combineData(scaledData1, scaledData2);\n            \n            if (chart) {\n                chart.data.datasets[0].data = combinedData;\n                chart.data.datasets[1].data = combinedData; \/\/ Update outline dataset\n                chart.options.animation.duration = 300;\n                chart.update();\n            }\n        }\n\n        function createProcessBar(containerId, valueId) {\n            const $container = chart4ftuclm3(`#${containerId}`);\n            const $controlPanel = $container.closest('.control-panel4ftuclm3');\n            const $thumb = $container.find('.process-thumb');\n            const $bar = $container.find('.process-bar');\n            const $currentValue = chart4ftuclm3(`#${valueId}`);\n            let dragging = false;\n            let containerOffset = $controlPanel.offset().left;\n            let containerWidth = $controlPanel.width();\n            let processContainerWidth = $container.width();\n            let currentW = 75; \/\/ Set initial wattage to 75W\n\n            \/\/ Update container metrics on resize\n            function updateContainerMetrics() {\n                containerOffset = $controlPanel.offset().left;\n                containerWidth = $controlPanel.width();\n                processContainerWidth = $container.width();\n                setBarByWattage(currentW);\n            }\n\n            chart4ftuclm3(window).on('resize', updateContainerMetrics);\n\n            \/\/ Initialize container metrics\n            updateContainerMetrics();\n\n            \/\/ Function to set the bar and thumb position based on wattage\n            function setBarByWattage(wattage) {\n                currentW = Math.min(Math.max(wattage, 0), 75);\n                const touchRatio = currentW \/ 75;\n                const thumbLeft = touchRatio * processContainerWidth;\n\n                \/\/ Update bar width\n                $bar.css('width', `${touchRatio * 100}%`);\n                \/\/ Update thumb position\n                $thumb.css('transform', `translate(-50%, -50%) translateX(${thumbLeft}px)`);\n                \/\/ Update displayed value\n                $currentValue.text(`${currentW.toFixed(0)}W`);\n                \/\/ Update the corresponding scale variable and chart\n                if (containerId === 'process-container14ftuclm3') {\n                    scale1 = currentW \/ 75;\n                } else if (containerId === 'process-container24ftuclm3') {\n                    scale2 = currentW \/ 75;\n                }\n                updateChart();\n            }\n\n            \/\/ Function to handle the dragging logic\n            function handleDrag(pageX) {\n                const newLeft = pageX - containerOffset;\n                const clampedLeft = Math.min(Math.max(newLeft, 0), containerWidth);\n                const touchRatio = clampedLeft \/ containerWidth;\n                const newWattage = touchRatio * 75;\n                setBarByWattage(newWattage);\n            }\n\n            \/\/ Throttle dragging using requestAnimationFrame\n            let rafId = null;\n\n            function onDrag(pageX) {\n                if (rafId) return; \/\/ If a frame is already requested, do nothing\n                rafId = requestAnimationFrame(() =\u003e {\n                    handleDrag(pageX);\n                    rafId = null;\n                });\n            }\n\n            \/\/ Mouse events\n            $thumb.on('mousedown', function(e) {\n                e.preventDefault();\n                dragging = true;\n            });\n\n            chart4ftuclm3(document).on('mousemove', function(e) {\n                if (dragging) {\n                    onDrag(e.pageX);\n                }\n            });\n\n            chart4ftuclm3(document).on('mouseup', function() {\n                dragging = false;\n            });\n\n            \/\/ Touch events bound to control panel\n            $controlPanel.on('touchstart', function(e) {\n                e.preventDefault();\n                dragging = true;\n                const touch = e.originalEvent.touches[0];\n                onDrag(touch.pageX);\n            });\n\n            chart4ftuclm3(document).on('touchmove', function(e) {\n                if (dragging) {\n                    const touch = e.originalEvent.touches[0];\n                    onDrag(touch.pageX);\n                    e.preventDefault();\n                }\n            });\n\n            chart4ftuclm3(document).on('touchend touchcancel', function() {\n                dragging = false;\n            });\n\n            \/\/ Click on the control panel to set the thumb position\n            $controlPanel.on('click', function(e) {\n                const pageX = e.pageX;\n                onDrag(pageX);\n            });\n\n            \/\/ Initialize the bar to 75W\n            setBarByWattage(currentW);\n        }\n\n        \/\/ Initialize the chart\n        function initializeChart() {\n            const scaledData1 = dataset14ftuclm3.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset24ftuclm3.data.map(value =\u003e value * scale2);\n            const initialCombinedData = combineData(scaledData1, scaledData2);\n            createChart(dataset14ftuclm3.labels, initialCombinedData);\n        }\n\n        \/\/ Initial load\n        initializeChart();\n\n        \/\/ Create Process Bars for Channel 1 and Channel 2\n        createProcessBar('process-container14ftuclm3', 'global-value14ftuclm3');\n        createProcessBar('process-container24ftuclm3', 'global-value24ftuclm3');\n\n        \/\/ Debounced Resize Handler to Redraw Chart on Screen Size Change\n        let resizeTimeout;\n        chart4ftuclm3(window).on('resize', function(){\n\n            clearTimeout(resizeTimeout);\n            resizeTimeout = setTimeout(function(){\n                if(chart){\n                    chart.resize();\n                }\n                \/\/ Update container metrics for process bars\n                chart4ftuclm3('.process-container4ftuclm3').each(function(){\n                    const containerId = chart4ftuclm3(this).attr('id');\n                    const valueId = chart4ftuclm3(this).siblings('.slider-paratitle').find('.current-value').attr('id');\n                    \/\/ The process bars are already handling their own resize events\n                    \/\/ No additional action is needed here\n                });\n            }, 200); \/\/ Adjust the timeout as needed\n        });\n    });\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"9f42342\" class=\"elementor-element elementor-element-9f42342 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"heading.default\" data-element_type=\"widget\" data-id=\"9681445\" class=\"elementor-element elementor-element-9681445 elementor-widget__width-inherit elementor-widget elementor-widget-heading\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003ch3 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eSlide the Bar to See How the Spectrum Changes\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-9f233e7 e-flex e-con-boxed e-con e-child\" data-id=\"9f233e7\" data-element_type=\"container\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-508146d e-con-full e-flex e-con e-child\" data-id=\"508146d\" data-element_type=\"container\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-c92d4f2 elementor-widget elementor-widget-text-editor\" data-id=\"c92d4f2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"control-panel4ftuclm3\"\u003e\n\u003cdiv class=\"slider-title\"\u003e\u003cstrong\u003eChannel 1: \u003cspan style=\"color: #77a6fa;\"\u003eUVA + Blue + 5000K\u003c\/span\u003e\u003c\/strong\u003e\u003c\/div\u003e\n\u003cdiv class=\"process-container4ftuclm3\" id=\"process-container14ftuclm3\"\u003e\n\u003cdiv class=\"process-bar\" style=\"width: 100%;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"process-thumb\" style=\"transform: translate(-50%, -50%) translateX(216.094px);\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e \u003cspan class=\"current-value\" id=\"global-value14ftuclm3\"\u003e75W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-62c2a7f e-con-full e-flex e-con e-child\" data-id=\"62c2a7f\" data-element_type=\"container\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-7be2e4d elementor-widget elementor-widget-text-editor\" data-id=\"7be2e4d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"control-panel4ftuclm3\"\u003e\n\u003cdiv class=\"slider-title\"\u003e\u003cstrong\u003eChannel 2: \u003cspan style=\"color: red;\"\u003eDeep Red + Far Red + 3000K\u003c\/span\u003e\u003c\/strong\u003e\u003c\/div\u003e\n\u003cdiv id=\"process-container24ftuclm3\" class=\"process-container4ftuclm3\"\u003e\n\u003cdiv class=\"process-bar\" style=\"width: 100%;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"process-thumb\" style=\"transform: translate(-50%, -50%) translateX(216.094px);\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e\u003cbr\u003e\u003cspan id=\"global-value24ftuclm3\" class=\"current-value\"\u003e75W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3\u003eUsage Guidelines\u003c\/h3\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Under-Canopy-Light-8ft-Model-4-Attentions_a1f0c090-e40f-4ede-8d46-ca41b2f490d5.jpg?v=1738834103\" alt=\"Instructional image demonstrating how to safely connect multiple under-canopy lights\" style=\"float: none;\"\u003e\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdapted with 120V power cord or 240V power cord \u003cstrong\u003e*Sold Separately*\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDual Channel:\u003c\/strong\u003e Blue + White + UVA \/ Red + IR + White spectrum for veg and flowering stages\u003c\/li\u003e\n\u003cli\u003eDimmable and compatible with most controllers on the market via RJ12 Data Cable (integrated with power cord)\u003c\/li\u003e\n\u003cli\u003eDesigned for enhancing plant growth and optimizing light availability to less exposed areas\u003c\/li\u003e\n\u003cli\u003eBuilt-in driver, slim profile\u003c\/li\u003e\n\u003cli\u003eImproves overall quality, especially B-bud structure, density, and coloring\u003c\/li\u003e\n\u003cli\u003eYields improvement and booster\u003c\/li\u003e\n\u003cli\u003eCompact and lightweight, heavy-duty components and quality\u003c\/li\u003e\n\u003cli\u003eEasy to work around during harvest\u003c\/li\u003e\n\u003cli\u003eQuick to uninstall between setting up and taking down runs\u003c\/li\u003e\n\u003cli\u003ePower and data chaining through same connections, no extra components required\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAccessories available:\u003c\/strong\u003e Under Canopy Grow Lights Stands and Inter-connect Cable \u003cstrong\u003e*Sold Separately*\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros 4' Under Canopy Grow Lights Model 3 Dual Channel 150W\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/wegrowpros.com\/specsheets\/UCLModel3-150W.pdf\" rel=\"noopener\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eMaximum Power Electrical Data\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eAC Current:\u003c\/strong\u003e 120V - 1.28A | 208V - 0.73A | 220V - 0.67A | 240V - 0.63A | 277V - 0.54A\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAC Power:\u003c\/strong\u003e 120V - 154W | 208V - 152W | 220V - 151W | 240V - 150W | 277V - 149.5W\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePower Factor:\u003c\/strong\u003e 120V - 0.99 | 208V - 0.98 | 220V - 0.97 | 240V - 0.97 | 277V - 0.95\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDaisy Chain:\u003c\/strong\u003e 8 pcs @120V | 12 pcs @208V | 14 pcs @220V | 16 pcs @240V | 18 pcs @277V\u003c\/p\u003e\n\u003ch3\u003eInterconnect Cables and Power Cords\u003c\/h3\u003e\n\u003cp\u003eAdditional components can be ordered separately since quantities will depend on the total number of lights and selected configurations.\u003c\/p\u003e\n\u003cp\u003eNote also that the lights connect together without interconnecting cables. The interconnecting cables are only needed to create the U where you have 2 rows of lights on a single bench OR if you need a space (up to 4 feet) between under canopy lights.\u003c\/p\u003e\n\u003cp\u003eSee the above chart for limitations on how many lights can be connected on 1 power cable.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOrder your cords and cables below:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/growpros-4-interconnect-cable-for-under-canopy-grow-lights\" target=\"_blank\"\u003eInterconnect Cables\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/products\/growpros-power-cord-with-rj-cable\" target=\"_blank\"\u003ePower Cords\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/power-adapter\" target=\"_blank\"\u003ePower Adaptors\u003c\/a\u003e (Convert 120V\/240V into 277V Male Plug)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eController\u003c\/h3\u003e\n\u003cp\u003eA controller with an RJ-12 signal is required to operate. We recommend the \u003ca rel=\"noopener\" title=\"Growpros grow light controller\" href=\"https:\/\/growlightcentral.com\/products\/growpros-grow-room-light-controller\" target=\"_blank\"\u003eGrowPros controller.\u003c\/a\u003e\u003c\/p\u003e","brand":"GrowPros","offers":[{"title":"120V \/ No","offer_id":50351078277412,"sku":"GPS-UCL3-4FT-UV-120V","price":195.0,"currency_code":"USD","in_stock":true},{"title":"120V \/ Pair of Stands (+$25)","offer_id":50723445145892,"sku":"GPS-UCL3-4FT-UV-120V-STAND","price":220.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ No","offer_id":50354716967204,"sku":"GPS-UCL3-4FT-UV-240V","price":195.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ Pair of Stands (+$25)","offer_id":50723445178660,"sku":"GPS-UCL3-4FT-UV-240V-STAND","price":220.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Under-Canopy-Light-Model-3-1.jpg?v=1753795481"},{"product_id":"growpros-8-under-canopy-grow-lights-model-3-dual-channel-300w-pack-of-2","title":"GrowPros 8' Cobra Under Canopy Grow Lights Model 3 - 300W Dual Channel UVA + Blue + 5000K \/ Deep Red + Far Red + 3000K","description":"\u003ch2\u003eLight up the entire canopy from top to bottom with this 8ft dual-channel fixture that boosts both veg and flower performance using UVA, blue, red, and far-red.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eGrowPros Solutions 8ft Under Canopy Light Model 3\u003c\/strong\u003e is designed to provide \u003cstrong\u003esupplemental light\u003c\/strong\u003e to the lower regions of plants in indoor cultivation environments by strategically placing them beneath the top canopy of plants to ensure leaves and flowers below the canopy receive optimal light exposure by eliminating shady areas. Under Canopy Grow Lights, benefits include uniform light distribution, maximized yield, and denser flowers.\u003c\/p\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cstrong\u003eGrowPros Solutions' first-ever under-canopy grow lights dual channel\u003c\/strong\u003e is engineered to \u003cstrong\u003eenhance the yield and color of lower flowers\u003c\/strong\u003e. These supplemental lights can significantly enlarge B-buds and C-buds, promoting better growth and development in areas that typically underperform.\u003c\/p\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003eBuilt with \u003cstrong\u003epremium housing and glass lenses\u003c\/strong\u003e, the \u003cmeta charset=\"utf-8\"\u003eCobra UCL Model 3 is a \u003cstrong\u003edual-channel LED grow light\u003c\/strong\u003e designed for growers who want full control. One channel focuses on \u003cstrong\u003eUV and blue wavelengths\u003c\/strong\u003e to drive resin production and quality, while the second channel emphasizes \u003cstrong\u003ered spectrum output\u003c\/strong\u003e for yield. This flexibility makes it ideal for \u003cstrong\u003ecraft operations\u003c\/strong\u003e aiming to fine-tune plant response through each stage.\u003c\/p\u003e\n\u003ch3 class=\"elementor-heading-title elementor-size-default\" style=\"text-align: center;\"\u003eADJUSTABLE SPECTRUM\u003c\/h3\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"b8cbdd1\" class=\"elementor-element elementor-element-b8cbdd1 e-flex e-con-boxed e-con e-parent e-lazyloaded\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"567dbcc\" class=\"elementor-element elementor-element-567dbcc e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"a47eaa5\" class=\"elementor-element elementor-element-a47eaa5 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"\u003e\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n    \/* Chart Container *\/\n    #chartcontainer_4ftuclm3 .chart-container4ftuclm3 {\n        width: 100%;\n        margin: 10px auto;\n        display: flex;\n        justify-content: center;\n    }\n\n    \/* Control Panels *\/\n    #chartcontainer_4ftuclm3 #control-panels4ftuclm3 {\n        display: flex;\n        justify-content: space-around;\n        margin-bottom: 20px;\n        flex-wrap: wrap;\n    }\n\n    #chartcontainer_4ftuclm3 .control-panel4ftuclm3 {\n        width: 100%;\n        border: 1px dashed #000000;\n        padding: 20px;\n        border-radius: 2px;\n        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n    }\n\n    #chartcontainer_4ftuclm3 .slider-title { \n        font-family: Jost, sans-serif; \n        font-size: 20px; \n        margin-bottom: 15px;\n        color: #000000;\n    }\n\n    #chartcontainer_4ftuclm3 .slider-paratitle {\n        display: flex;\n        flex-direction: row;\n        justify-content: space-between;\n        margin-top: 10px;\n    }\n\n    #chartcontainer_4ftuclm3 .slider-paratitle .current-value {\n        text-align: right;\n        width: 100%;\n        font-weight: bold;\n        color: #000000;\n    }\n    #chartcontainer_4ftuclm3 .slider-paratitle span {\n        color:#000000;\n    }\n    \/* Custom Process Bar Styles *\/\n    #chartcontainer_4ftuclm3 .process-container4ftuclm3 {\n        width: 100%;\n        height: 16px;\n        background-color: #333333;\n        position: relative;\n        cursor: pointer;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm3 .process-bar {\n        height: 100%;\n        background-color: #999999;\n        width: 0;\n        position: absolute;\n        top: 0;\n        left: 0;\n        transform: translateX(0);\n        will-change: width, transform;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm3 .process-thumb {\n        width: 20px;\n        height: 20px;\n        background-color: #046e82;\n        border: 1px solid #000000;\n        border-radius: 2px;\n        position: absolute;\n        top: 50%;\n        transform: translate(-50%, -50%) translateX(0);\n        left: 0;\n        cursor: pointer;\n        touch-action: none;\n        transition: none;\n        will-change: transform;\n    }\n    @media screen and (min-width: 768px) and (max-width: 1024px){\n        #chartcontainer_4ftuclm3 .control-panel4ftuclm3 { padding:10px 20px;}\n        #chartcontainer_4ftuclm3 .slider-title {\n            font-size:10px; \n            margin-bottom:8px ;\n        }\n        #chartcontainer_4ftuclm3 .process-container4ftuclm3 { height:14px; }\n        #chartcontainer_4ftuclm3 .process-thumb { width: 16px; height: 22px; }\n        #chartcontainer_4ftuclm3 .slider-paratitle span {font-size:12px;}\n    }\n    \/* Responsive adjustments *\/\n    @media screen and (max-width: 767px) {\n        #chartcontainer_4ftuclm3 #control-panels4ftuclm3 { \n            flex-direction: column; \n        }\n        #chartcontainer_4ftuclm3 .control-panel4ftuclm3 { \n            width: 100%; \n            margin-bottom: 20px; \n            padding:10px;\n        }\n        #chartcontainer_4ftuclm3 .slider-title { font-size:8px; margin-bottom:4px; }\n\t\t#chartcontainer_4ftuclm3 .slider-title span { font-size: 7px; }\n        #chartcontainer_4ftuclm3 .process-container4ftuclm3 { height:14px; }\n        #chartcontainer_4ftuclm3 .process-thumb { width: 16px; height: 22px; }\n        #chartcontainer_4ftuclm3 .slider-paratitle span { font-size:10px; }\n    }\n\u003c\/style\u003e\n\u003cdiv class=\"elementor-element elementor-element-b8cbdd1 e-flex e-con-boxed e-con e-parent e-lazyloaded\" data-id=\"b8cbdd1\" data-element_type=\"container\" id=\"chartcontainer_4ftuclm3\" data-settings='{\"background_background\":\"classic\"}'\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-567dbcc e-con-full e-flex e-con e-child\" data-id=\"567dbcc\" data-element_type=\"container\" data-settings='{\"background_background\":\"classic\"}'\u003e\n\u003cdiv class=\"elementor-element elementor-element-0b5c308 elementor-widget elementor-widget-text-editor\" data-id=\"0b5c308\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"chart-container4ftuclm3\"\u003e\u003ccanvas id=\"myChart_4ftuclm3\" style=\"display: block; box-sizing: border-box; height: 305px; width: 610px;\" width=\"1221\" height=\"610\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003cscript\u003e\n    var chart4ftuclm3 = jQuery.noConflict(true);\n    chart4ftuclm3(document).ready(function($) {\n        \/\/ Chart.js Setup\n        const ctx = chart4ftuclm3('#myChart_4ftuclm3')[0].getContext('2d');\n        let chart;\n        const dataset14ftuclm3 = {\n            label: 'Channel 1',\n            labels: ['','', '360', '', '', '', '', '395', '', '', '', '', '', '450', '', '', '', '', '', '500', '', '', '', '', '', '', '', '', '', '600', '', '', '', '', '660', '', '', '', '', '', '', '730', '', '', '', '', '', '780', '', '', '', '', '', ''],\n            data: [0, 0, 0, 0.2, 1.1, 3, 10, 23, 10, 2, 2, 8, 22, 53, 31, 15, 8, 12.2, 16, 18.4, 19.6, 20.2, 20.8, 21.4, 22, 22.6, 23.2, 23.8, 23.4, 22.2, 20, 17, 13, 9, 6, 4, 2.8, 2, 1.5, 1.1, 0.5, 0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n        };\n        const dataset24ftuclm3 = {\n            label: 'Channel 2',\n            data: [0, 0, 0, 0, 0, 0.2, 0.4, 0.9, 2.2, 3.6, 2.2, 1.3, 1.1, 1.1, 1.3, 1.5, 1.7, 2, 2.3, 2.6, 3, 3.4, 3.9, 4.4, 4.9, 5.4, 5.9, 6.4, 6.9, 7.8, 9.6, 12.6, 20.8, 50, 94, 50, 21.3, 10, 6.3, 8.3, 12.9, 17, 12.7, 7.3, 3.3, 1.4, 0.2, 0, 0, 0, 0, 0, 0]\n        };\n        const colors = ['#9b51e0','#9b51e0','#9b51e0', '#9b51e0', '#9b51e0','#9b51e0','#9b51e0', '#9b51e0', '#9b51e0', '#9b51e0', '#9b51e0', '#053390', '#1c4a9d', '#1c4a9d','#265aa8', '#3173b8', '#3698d5','#45bee3','#6fc4be', '#6ebf80', '#69b72d','#69b72d', '#6bb72d', '#79bc28','#97c626','#a8cc2b', '#c8d933','#d8e036', '#f1eb36', '#f4c41c', '#f19518', '#ed761b', '#e95619','#e62718','#e11713','#ce141b', '#b91c22', '#a91f24', '#951e23', '#851123', '#7f191e', '#7d191d','#76161b', '#6a1216', '#631014', '#5f0e12', '#51050a','#440104', '#380103','#230304','#221714', '#221714', '#221714','#221714', '#221714', '#221714','#221714', '#221714','#221714', '#221714'];\n\n        let scale1 = 1;\n        let scale2 = 1;\n\n        function createGradient(ctx, chartArea, colors) {\n            const gradient = ctx.createLinearGradient(chartArea.left, 0, chartArea.right, 1);\n            colors.forEach((color, index) =\u003e {\n                gradient.addColorStop(index \/ (colors.length - 1), color);\n            });\n            return gradient;\n        }\n\n        function createChart(labels, combinedData) {\n            if (chart) {\n                chart.destroy();\n            }\n\n            chart = new Chart(ctx, {\n                type: 'line',\n                data: {\n                    labels: labels,\n                    datasets: [\n                        {\n                            type: 'line',\n                            label: 'PPF',\n                            data: combinedData,\n                            borderWidth: 0.1,\n                            backgroundColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            borderColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            fill: true,\n                            tension: 0.4 \/\/ Smoothing effect\n                        },\n                        {\n                            type: 'line',\n                            label: 'Outline',\n                            data: combinedData,\n                            borderWidth: 2,\n                            backgroundColor: 'transparent',\n                            borderColor: '#000000', \/\/ Outline color\n                            fill: false,\n                            tension: 0.4\n                        }\n                    ]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: true,\n                    scales: {\n                        x: {\n                            stacked: true,\n                            grid: {\n                                display: false \/\/ Hide y-axis grid lines\n                            },\n                            ticks: {\n                                color: '#000000',\n                                autoSkip: false, \/\/ Prevent auto-skipping of labels\n                                maxRotation: 0, \/\/ Prevent label rotation\n                                minRotation: 0, \/\/ Prevent label rotation\n                                maxTicksLimit: labels.length \/\/ Ensure all labels are shown\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000',  \/\/ Change x-axis line color\n                            }\n                        },\n                        y: {\n                            beginAtZero: true,\n                            max: 100, \/\/ Set a static max value for y-axis to accommodate added values\n                            grid: {\n                                color: '#000000',\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000', \/\/ Change y-axis line color\n                            },\n                            ticks: {\n                                color: '#000000',\n                                callback: function(value) {\n                                    return value % 20 === 0 ? value + '%' : ''; \/\/ Custom label formatting\n                                }\n                            }\n                        }\n                    },\n                    events: null,\n                    radius: 0,\n                    plugins: {\n                        filler: {propagate: true}, \/\/ Enable filler\n                        legend: { display: false },\n                    },\n                    animation: {\n                        duration: 0 \/\/ Animation duration for smoother updates\n                    }\n                }\n            });\n        }\n\n        function combineData(data1, data2) {\n            return data1.map((value, index) =\u003e {\n                return value + data2[index];\n            });\n        }\n\n        function updateChart() {\n            const scaledData1 = dataset14ftuclm3.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset24ftuclm3.data.map(value =\u003e value * scale2);\n            const combinedData = combineData(scaledData1, scaledData2);\n            \n            if (chart) {\n                chart.data.datasets[0].data = combinedData;\n                chart.data.datasets[1].data = combinedData; \/\/ Update outline dataset\n                chart.options.animation.duration = 300;\n                chart.update();\n            }\n        }\n\n        function createProcessBar(containerId, valueId) {\n            const $container = chart4ftuclm3(`#${containerId}`);\n            const $controlPanel = $container.closest('.control-panel4ftuclm3');\n            const $thumb = $container.find('.process-thumb');\n            const $bar = $container.find('.process-bar');\n            const $currentValue = chart4ftuclm3(`#${valueId}`);\n            let dragging = false;\n            let containerOffset = $controlPanel.offset().left;\n            let containerWidth = $controlPanel.width();\n            let processContainerWidth = $container.width();\n            let currentW = 150; \/\/ Set initial wattage to 150W\n\n            \/\/ Update container metrics on resize\n            function updateContainerMetrics() {\n                containerOffset = $controlPanel.offset().left;\n                containerWidth = $controlPanel.width();\n                processContainerWidth = $container.width();\n                setBarByWattage(currentW);\n            }\n\n            chart4ftuclm3(window).on('resize', updateContainerMetrics);\n\n            \/\/ Initialize container metrics\n            updateContainerMetrics();\n\n            \/\/ Function to set the bar and thumb position based on wattage\n            function setBarByWattage(wattage) {\n                currentW = Math.min(Math.max(wattage, 0), 150);\n                const touchRatio = currentW \/ 150;\n                const thumbLeft = touchRatio * processContainerWidth;\n\n                \/\/ Update bar width\n                $bar.css('width', `${touchRatio * 100}%`);\n                \/\/ Update thumb position\n                $thumb.css('transform', `translate(-50%, -50%) translateX(${thumbLeft}px)`);\n                \/\/ Update displayed value\n                $currentValue.text(`${currentW.toFixed(0)}W`);\n                \/\/ Update the corresponding scale variable and chart\n                if (containerId === 'process-container14ftuclm3') {\n                    scale1 = currentW \/ 150;\n                } else if (containerId === 'process-container24ftuclm3') {\n                    scale2 = currentW \/ 150;\n                }\n                updateChart();\n            }\n\n            \/\/ Function to handle the dragging logic\n            function handleDrag(pageX) {\n                const newLeft = pageX - containerOffset;\n                const clampedLeft = Math.min(Math.max(newLeft, 0), containerWidth);\n                const touchRatio = clampedLeft \/ containerWidth;\n                const newWattage = touchRatio * 150;\n                setBarByWattage(newWattage);\n            }\n\n            \/\/ Throttle dragging using requestAnimationFrame\n            let rafId = null;\n\n            function onDrag(pageX) {\n                if (rafId) return; \/\/ If a frame is already requested, do nothing\n                rafId = requestAnimationFrame(() =\u003e {\n                    handleDrag(pageX);\n                    rafId = null;\n                });\n            }\n\n            \/\/ Mouse events\n            $thumb.on('mousedown', function(e) {\n                e.preventDefault();\n                dragging = true;\n            });\n\n            chart4ftuclm3(document).on('mousemove', function(e) {\n                if (dragging) {\n                    onDrag(e.pageX);\n                }\n            });\n\n            chart4ftuclm3(document).on('mouseup', function() {\n                dragging = false;\n            });\n\n            \/\/ Touch events bound to control panel\n            $controlPanel.on('touchstart', function(e) {\n                e.preventDefault();\n                dragging = true;\n                const touch = e.originalEvent.touches[0];\n                onDrag(touch.pageX);\n            });\n\n            chart4ftuclm3(document).on('touchmove', function(e) {\n                if (dragging) {\n                    const touch = e.originalEvent.touches[0];\n                    onDrag(touch.pageX);\n                    e.preventDefault();\n                }\n            });\n\n            chart4ftuclm3(document).on('touchend touchcancel', function() {\n                dragging = false;\n            });\n\n            \/\/ Click on the control panel to set the thumb position\n            $controlPanel.on('click', function(e) {\n                const pageX = e.pageX;\n                onDrag(pageX);\n            });\n\n            \/\/ Initialize the bar to 150W\n            setBarByWattage(currentW);\n        }\n\n        \/\/ Initialize the chart\n        function initializeChart() {\n            const scaledData1 = dataset14ftuclm3.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset24ftuclm3.data.map(value =\u003e value * scale2);\n            const initialCombinedData = combineData(scaledData1, scaledData2);\n            createChart(dataset14ftuclm3.labels, initialCombinedData);\n        }\n\n        \/\/ Initial load\n        initializeChart();\n\n        \/\/ Create Process Bars for Channel 1 and Channel 2\n        createProcessBar('process-container14ftuclm3', 'global-value14ftuclm3');\n        createProcessBar('process-container24ftuclm3', 'global-value24ftuclm3');\n\n        \/\/ Debounced Resize Handler to Redraw Chart on Screen Size Change\n        let resizeTimeout;\n        chart4ftuclm3(window).on('resize', function(){\n\n            clearTimeout(resizeTimeout);\n            resizeTimeout = setTimeout(function(){\n                if(chart){\n                    chart.resize();\n                }\n                \/\/ Update container metrics for process bars\n                chart4ftuclm3('.process-container4ftuclm3').each(function(){\n                    const containerId = chart4ftuclm3(this).attr('id');\n                    const valueId = chart4ftuclm3(this).siblings('.slider-paratitle').find('.current-value').attr('id');\n                    \/\/ The process bars are already handling their own resize events\n                    \/\/ No additional action is needed here\n                });\n            }, 200); \/\/ Adjust the timeout as needed\n        });\n    });\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"9f42342\" class=\"elementor-element elementor-element-9f42342 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"heading.default\" data-element_type=\"widget\" data-id=\"9681445\" class=\"elementor-element elementor-element-9681445 elementor-widget__width-inherit elementor-widget elementor-widget-heading\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003ch3 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eSlide the Bar to See How the Spectrum Changes\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-9f233e7 e-flex e-con-boxed e-con e-child\" data-id=\"9f233e7\" data-element_type=\"container\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-508146d e-con-full e-flex e-con e-child\" data-id=\"508146d\" data-element_type=\"container\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-c92d4f2 elementor-widget elementor-widget-text-editor\" data-id=\"c92d4f2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"control-panel4ftuclm3\"\u003e\n\u003cdiv class=\"slider-title\"\u003e\u003cstrong\u003eChannel 1: \u003cspan style=\"color: #77a6fa;\"\u003eUVA + Blue + 5000K\u003c\/span\u003e\u003c\/strong\u003e\u003c\/div\u003e\n\u003cdiv class=\"process-container4ftuclm3\" id=\"process-container14ftuclm3\"\u003e\n\u003cdiv class=\"process-bar\" style=\"width: 100%;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"process-thumb\" style=\"transform: translate(-50%, -50%) translateX(216.094px);\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e \u003cspan class=\"current-value\" id=\"global-value14ftuclm3\"\u003e150W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-62c2a7f e-con-full e-flex e-con e-child\" data-id=\"62c2a7f\" data-element_type=\"container\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-7be2e4d elementor-widget elementor-widget-text-editor\" data-id=\"7be2e4d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"control-panel4ftuclm3\"\u003e\n\u003cdiv class=\"slider-title\"\u003e\u003cstrong\u003eChannel 2: \u003cspan style=\"color: red;\"\u003eDeep Red + Far Red + 3000K\u003c\/span\u003e\u003c\/strong\u003e\u003c\/div\u003e\n\u003cdiv id=\"process-container24ftuclm3\" class=\"process-container4ftuclm3\"\u003e\n\u003cdiv class=\"process-bar\" style=\"width: 100%;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"process-thumb\" style=\"transform: translate(-50%, -50%) translateX(216.094px);\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e\u003cbr\u003e\u003cspan id=\"global-value24ftuclm3\" class=\"current-value\"\u003e150W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3\u003eUsage Guidelines\u003c\/h3\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Under-Canopy-Light-8ft-Model-4-Attentions_a1f0c090-e40f-4ede-8d46-ca41b2f490d5.jpg?v=1738834103\" alt=\"Instructional guide on safely daisy-chaining under-canopy lights with power off steps\" style=\"float: none;\"\u003e\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdapted with 120V power cord or 240V power cord \u003cstrong\u003e*Sold Separately*\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDual Channel:\u003c\/strong\u003e Blue + White + UVA \/ Red + IR + White spectrum for veg and flowering stages\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDimmable\u003c\/strong\u003e and compatible with most controllers on the market via RJ12 Data Cable (integrated with power cord)\u003c\/li\u003e\n\u003cli\u003eDesigned for enhancing plant growth and optimizing light availability to less exposed areas\u003c\/li\u003e\n\u003cli\u003eBuilt-in driver, slim profile\u003c\/li\u003e\n\u003cli\u003eImproves overall quality, especially B-bud structure, density, and coloring\u003c\/li\u003e\n\u003cli\u003eYields improvement and booster\u003c\/li\u003e\n\u003cli\u003eCompact and lightweight, heavy-duty components and quality\u003c\/li\u003e\n\u003cli\u003eEasy to work around during harvest\u003c\/li\u003e\n\u003cli\u003eQuick to uninstall between setting up and taking down runs\u003c\/li\u003e\n\u003cli\u003ePower and data chaining through same connections, no extra components required\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAccessories available:\u003c\/strong\u003e Under Canopy Grow Lights Stands and Inter-connect Cable \u003cstrong\u003e*Sold Separately*\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros 8' Under Canopy Grow Lights Model 3 Dual Channel 300W\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/wegrowpros.com\/specsheets\/UCLModel3-300W.pdf\" rel=\"noopener\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eMaximum Power Electrical Data\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eAC Current\u003c\/strong\u003e: 120V - 2.57A | 208V - 1.46A | 220V - 1.37A | 240V - 1.25A | 277V - 1.08A\u003cbr\u003e\u003cstrong\u003eAC Power\u003c\/strong\u003e: 120V - 308W | 208V - 304W | 220V - 302W | 240V - 300W | 277V - 299W\u003cbr\u003e\u003cstrong\u003ePower Factor\u003c\/strong\u003e: 120V - 0.99 | 208V - 0.98 | 220V - 0.97 | 240V - 0.97 | 277V - 0.95\u003cbr\u003e\u003cstrong\u003eDaisy Chain\u003c\/strong\u003e: 4 pcs @120V | 6 pcs @208V | 7 pcs @220V | 8 pcs @240V | 9 pcs @277V\u003c\/p\u003e\n\u003ch3\u003eInterconnect Cables and Power Cords\u003c\/h3\u003e\n\u003cp\u003eAdditional components can be ordered separately since quantities will depend on the total number of lights and selected configurations.\u003c\/p\u003e\n\u003cp\u003eNote also that the lights connect together without interconnecting cables. The interconnecting cables are only needed to create the U where you have 2 rows of lights on a single bench OR if you need a space (up to 4 feet) between under canopy lights.\u003c\/p\u003e\n\u003cp\u003eSee the above chart for limitations on how many lights can be connected on 1 power cable.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOrder your cords and cables below:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/growpros-4-interconnect-cable-for-under-canopy-grow-lights\" rel=\"noopener\" target=\"_blank\"\u003eInterconnect Cables\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/growlightcentral.com\/products\/growpros-power-cord-with-rj-cable\" rel=\"noopener\" target=\"_blank\"\u003ePower Cords\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/power-adapter\" rel=\"noopener\" target=\"_blank\"\u003ePower Adaptors\u003c\/a\u003e (Convert 120V\/240V into 277V Male Plug)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eController\u003c\/h3\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(255, 42, 0);\"\u003eA controller with an RJ-12 signal is required to operate. We recommend the \u003ca rel=\"noopener\" title=\"Growpros grow light controller\" href=\"https:\/\/growlightcentral.com\/products\/growpros-grow-room-light-controller\" style=\"color: rgb(255, 42, 0);\" target=\"_blank\"\u003eGrowPros controller.\u003c\/a\u003e\u003c\/span\u003e\u003c\/p\u003e","brand":"GrowPros","offers":[{"title":"120V \/ No","offer_id":50351135326500,"sku":"GPS-UCL3-8FT-UV-120V","price":345.0,"currency_code":"USD","in_stock":true},{"title":"120V \/ Pair of Stands | $25","offer_id":50723445211428,"sku":"GPS-UCL3-8FT-UV-120V-STAND","price":400.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ No","offer_id":50354716639524,"sku":"GPS-UCL3-8FT-UV-240V","price":345.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ Pair of Stands | $25","offer_id":50723445244196,"sku":"GPS-UCL3-8FT-UV-240V-STAND","price":400.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Under-Canopy-Light-Model-3-1.jpg?v=1753795481"},{"product_id":"growpros-4-under-canopy-grow-lights-model-4-dual-channel-150w-pack-of-2","title":"GrowPros 4' Viper Under Canopy Grow Lights Model 4 - 150W Dual Channel 80% Red + White \/ Far Red (730nm)","description":"\u003ch2\u003eBoost bud quality and increase yields by lighting up the lower canopy with a compact dual-channel system designed for deeper, more uniform flower development.\u003c\/h2\u003e\n\u003cp\u003e\u003cstrong\u003eGrowPros Solutions' first-ever under-canopy lights with dual channels\u003c\/strong\u003e are engineered to enhance the yield and color of lower flowers. These supplemental lights can significantly enlarge B-buds and C-buds, promoting better growth and development in areas that typically underperform. By targeting the understory, Growpros Solutions ensures a more uniform and abundant harvest, maximizing the potential of every plant.\u003c\/p\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003eDesigned for aggressive flowering strategies, Viper UCL Model 4 delivers \u003cstrong\u003eapproximately 80 percent red spectrum on Channel 1\u003c\/strong\u003e, with an \u003cstrong\u003eindependent 730nm far red Channel 2\u003c\/strong\u003e. This setup activates the \u003cstrong\u003eEmerson Effect\u003c\/strong\u003e, where deep red and far red light together increase photosynthetic efficiency beyond their individual impact. The result is improved \u003cstrong\u003elight penetration\u003c\/strong\u003e, \u003cstrong\u003ephytochrome shifting\u003c\/strong\u003e, and \u003cstrong\u003eearlier bud set\u003c\/strong\u003e.\u003c\/p\u003e\n\u003ch3 class=\"elementor-heading-title elementor-size-default\" style=\"text-align: center;\"\u003eADJUSTABLE SPECTRUM\u003c\/h3\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"b8cbdd1\" class=\"elementor-element elementor-element-b8cbdd1 e-flex e-con-boxed e-con e-parent e-lazyloaded\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"567dbcc\" class=\"elementor-element elementor-element-567dbcc e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"a47eaa5\" class=\"elementor-element elementor-element-a47eaa5 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"\u003e\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n    \/* Chart Container *\/\n    #chartcontainer_4ftuclm4 .chart-container4ftuclm4 {\n        width: 100%;\n        margin: 10px auto;\n        display: flex;\n        justify-content: center;\n    }\n\n    \/* Control Panels *\/\n    #chartcontainer_4ftuclm4 #control-panels4ftuclm4 {\n        display: flex;\n        justify-content: space-around;\n        margin-bottom: 20px;\n        flex-wrap: wrap;\n    }\n\n    #chartcontainer_4ftuclm4 .control-panel4ftuclm4 {\n        width: 100%;\n        border: 1px dashed #000000;\n        padding: 20px;\n        border-radius: 2px;\n        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n    }\n\n    #chartcontainer_4ftuclm4 .slider-title { \n        font-family: Jost, sans-serif; \n        font-size: 20px; \n        margin-bottom: 15px;\n        color: #000000;\n    }\n\n    #chartcontainer_4ftuclm4 .slider-paratitle {\n        display: flex;\n        flex-direction: row;\n        justify-content: space-between;\n        margin-top: 10px;\n    }\n\n    #chartcontainer_4ftuclm4 .slider-paratitle .current-value {\n        text-align: right;\n        width: 100%;\n        font-weight: bold;\n        color: #000000;\n    }\n    #chartcontainer_4ftuclm4 .slider-paratitle span {\n        color:#cccccc;\n    }\n    \/* Custom Process Bar Styles *\/\n    #chartcontainer_4ftuclm4 .process-container4ftuclm4 {\n        width: 100%;\n        height: 16px;\n        background-color: #333333;\n        position: relative;\n        cursor: pointer;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm4 .process-bar {\n        height: 100%;\n        background-color: #999999;\n        width: 0;\n        position: absolute;\n        top: 0;\n        left: 0;\n        transform: translateX(0);\n        will-change: width, transform;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm4 .process-thumb {\n        width: 20px;\n        height: 20px;\n        background-color: #046e82;\n        border: 1px solid #111111;\n        border-radius: 2px;\n        position: absolute;\n        top: 50%;\n        transform: translate(-50%, -50%) translateX(0);\n        left: 0;\n        cursor: pointer;\n        touch-action: none;\n        transition: none;\n        will-change: transform;\n    }\n    @media screen and (min-width: 768px) and (max-width: 1024px){\n        #chartcontainer_4ftuclm4 .control-panel4ftuclm4 { padding:10px 20px;}\n        #chartcontainer_4ftuclm4 .slider-title {\n            font-size:10px; \n            margin-bottom:8px ;\n        }\n        #chartcontainer_4ftuclm4 .process-container4ftuclm4 { height:14px; }\n        #chartcontainer_4ftuclm4 .process-thumb { width: 16px; height: 22px; }\n        #chartcontainer_4ftuclm4 .slider-paratitle span {font-size:12px;}\n    }\n    \/* Responsive adjustments *\/\n    @media screen and (max-width: 767px) {\n        #chartcontainer_4ftuclm4 #control-panels4ftuclm4 { \n            flex-direction: column; \n        }\n        #chartcontainer_4ftuclm4 .control-panel4ftuclm4 { \n            width: 100%; \n            margin-bottom: 20px; \n            padding:10px;\n        }\n        #chartcontainer_4ftuclm4 .slider-title { font-size:8px; margin-bottom:4px; }\n        #chartcontainer_4ftuclm4 .slider-title span { font-size: 7px; }\n        #chartcontainer_4ftuclm4 .process-container4ftuclm4 { height:14px; }\n        #chartcontainer_4ftuclm4 .process-thumb { width: 16px; height: 22px; }\n        #chartcontainer_4ftuclm4 .slider-paratitle span { font-size:10px; }\n    }\n\u003c\/style\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' id=\"chartcontainer_4ftuclm4\" data-element_type=\"container\" data-id=\"b8cbdd1\" class=\"elementor-element elementor-element-b8cbdd1 e-flex e-con-boxed e-con e-parent e-lazyloaded\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"567dbcc\" class=\"elementor-element elementor-element-567dbcc e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"a47eaa5\" class=\"elementor-element elementor-element-a47eaa5 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"chart-container4ftuclm4\"\u003e\u003ccanvas height=\"610\" width=\"1221\" style=\"display: block; box-sizing: border-box; height: 305px; width: 610px;\" id=\"myChart_4ftuclm4\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003cscript\u003e\n    var chart4ftuclm4 = jQuery.noConflict(true);\n    chart4ftuclm4(document).ready(function($) {\n        \/\/ Chart.js Setup\n        const ctx = chart4ftuclm4('#myChart_4ftuclm4')[0].getContext('2d');\n        let chart;\n        \n        const dataset14ftuclm4 = {\n            label: 'Channel 1',\n            labels: ['','', '360', '', '', '', '', '395', '', '', '', '', '', '450', '', '', '', '', '', '500', '', '', '', '', '', '', '', '', '', '600', '', '', '', '', '660', '', '', '', '', '', '', '730', '', '', '', '', '', '780', '', '', '', '', '', ''],\n            data: [0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 2, 7, 12, 7.5, 3.6, 2.3, 2.5, 3.6, 4.8, 5.8, 6.8, 8, 8.6, 9.2, 9.6, 10.2, 10.43, 10.4, 10.5, 11.1, 16, 30, 60, 100, 50, 15, 6, 2.4, 1.1, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n        };\n        const dataset24ftuclm4 = {\n            label: 'Channel 2',\n            data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4, 1.2, 2.6, 5.6, 12, 18.2, 21, 18.2, 12, 6, 2.7, 1.2, 0.2, 0, 0, 0]\n        };\n        const colors = ['#111a39','#111a39','#111a39', '#111a39', '#111a39','#111a39','#111a39', '#111a39', '#162143', '#162143', '#162143', '#053390', '#1c4a9d', '#1c4a9d','#265aa8', '#3173b8', '#3698d5','#45bee3','#6fc4be', '#6ebf80', '#69b72d','#69b72d', '#6bb72d', '#79bc28','#97c626','#a8cc2b', '#c8d933','#d8e036', '#f1eb36','#f4c41c','#f19518', '#ed761b', '#e95619','#e62718','#e11713','#ce141b', '#b91c22', '#a91f24', '#951e23', '#851123', '#7f191e', '#7d191d','#76161b', '#6a1216', '#631014', '#5f0e12', '#51050a','#440104', '#380103','#230304','#221714', '#221714', '#221714','#221714', '#221714', '#221714','#221714', '#221714','#221714', '#221714'];\n        \n        let scale1 = 1;\n        let scale2 = 1;\n\n        function createGradient(ctx, chartArea, colors) {\n            const gradient = ctx.createLinearGradient(chartArea.left, 0, chartArea.right, 1);\n            colors.forEach((color, index) =\u003e {\n                gradient.addColorStop(index \/ (colors.length - 1), color);\n            });\n            return gradient;\n        }\n\n        function createChart(labels, combinedData) {\n            if (chart) {\n                chart.destroy();\n            }\n\n            chart = new Chart(ctx, {\n                type: 'line',\n                data: {\n                    labels: labels,\n                    datasets: [\n                        {\n                            type: 'line',\n                            label: 'PPF',\n                            data: combinedData,\n                            borderWidth: 0.1,\n                            backgroundColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            borderColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            fill: true,\n                            tension: 0.4 \/\/ Smoothing effect\n                        },\n                        {\n                            type: 'line',\n                            label: 'Outline',\n                            data: combinedData,\n                            borderWidth: 2,\n                            backgroundColor: 'transparent',\n                            borderColor: '#000000', \/\/ Outline color\n                            fill: false,\n                            tension: 0.4\n                        }\n                    ]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: true,\n                    scales: {\n                        x: {\n                            stacked: true,\n                            grid: {\n                                display: false \/\/ Hide y-axis grid lines\n                            },\n                            ticks: {\n                                color: '#000000',\n                                autoSkip: false, \/\/ Prevent auto-skipping of labels\n                                maxRotation: 0, \/\/ Prevent label rotation\n                                minRotation: 0, \/\/ Prevent label rotation\n                                maxTicksLimit: labels.length \/\/ Ensure all labels are shown\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000' \/\/ Change x-axis line color\n                            }\n                        },\n                        y: {\n                            beginAtZero: true,\n                            max: 100, \/\/ Set a static max value for y-axis to accommodate added values\n                            grid: {\n                                color: '#000000',\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000' \/\/ Change y-axis line color\n                            },\n                            ticks: {\n                                color: '#000000',\n                                callback: function(value) {\n                                    return value % 20 === 0 ? value + '%' : ''; \/\/ Custom label formatting\n                                }\n                            }\n                        }\n                    },\n                    events: null,\n                    radius: 0,\n                    plugins: {\n                        filler: {propagate: true}, \/\/ Enable filler\n                        legend: { display: false },\n                    },\n                    animation: {\n                        duration: 0 \/\/ Animation duration for smoother updates\n                    }\n                }\n            });\n        }\n\n        function combineData(data1, data2) {\n            return data1.map((value, index) =\u003e {\n                return value + data2[index];\n            });\n        }\n\n        function updateChart() {\n            const scaledData1 = dataset14ftuclm4.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset24ftuclm4.data.map(value =\u003e value * scale2);\n            const combinedData = combineData(scaledData1, scaledData2);\n            \n            if (chart) {\n                chart.data.datasets[0].data = combinedData;\n                chart.data.datasets[1].data = combinedData; \/\/ Update outline dataset\n                chart.options.animation.duration = 300;\n                chart.update();\n            }\n        }\n\n        function createProcessBar(containerId, valueId, maxWattage) { \/\/ Added maxWattage parameter\n            const $container = chart4ftuclm4(`#${containerId}`);\n            const $controlPanel = $container.closest('.control-panel4ftuclm4');\n            const $thumb = $container.find('.process-thumb');\n            const $bar = $container.find('.process-bar');\n            const $currentValue = chart4ftuclm4(`#${valueId}`);\n            let dragging = false;\n            let containerOffset = $controlPanel.offset().left;\n            let containerWidth = $controlPanel.width();\n            let processContainerWidth = $container.width();\n            let currentW = maxWattage; \/\/ Initialize to maxWattage\n\n            \/\/ Update container metrics on resize\n            function updateContainerMetrics() {\n                containerOffset = $controlPanel.offset().left;\n                containerWidth = $controlPanel.width();\n                processContainerWidth = $container.width();\n                setBarByWattage(currentW);\n            }\n\n            chart4ftuclm4(window).on('resize', updateContainerMetrics);\n\n            \/\/ Initialize container metrics\n            updateContainerMetrics();\n\n            \/\/ Function to set the bar and thumb position based on wattage\n            function setBarByWattage(wattage) {\n                currentW = Math.min(Math.max(wattage, 0), maxWattage);\n                const touchRatio = currentW \/ maxWattage;\n                const thumbLeft = touchRatio * processContainerWidth;\n\n                \/\/ Update bar width\n                $bar.css('width', `${touchRatio * 100}%`);\n                \/\/ Update thumb position\n                $thumb.css('transform', `translate(-50%, -50%) translateX(${thumbLeft}px)`);\n                \/\/ Update displayed value\n                $currentValue.text(`${currentW.toFixed(0)}W`);\n                \/\/ Update the corresponding scale variable and chart\n                if (containerId === 'process-container14ftuclm4') {\n                    scale1 = currentW \/ maxWattage;\n                } else if (containerId === 'process-container24ftuclm4') {\n                    scale2 = currentW \/ maxWattage;\n                }\n                updateChart();\n            }\n\n            \/\/ Function to handle the dragging logic\n            function handleDrag(pageX) {\n                const newLeft = pageX - containerOffset;\n                const clampedLeft = Math.min(Math.max(newLeft, 0), containerWidth);\n                const touchRatio = clampedLeft \/ containerWidth;\n                const newWattage = touchRatio * maxWattage;\n                setBarByWattage(newWattage);\n            }\n\n            \/\/ Throttle dragging using requestAnimationFrame\n            let rafId = null;\n\n            function onDrag(pageX) {\n                if (rafId) return; \/\/ If a frame is already requested, do nothing\n                rafId = requestAnimationFrame(() =\u003e {\n                    handleDrag(pageX);\n                    rafId = null;\n                });\n            }\n\n            \/\/ Mouse events\n            $thumb.on('mousedown', function(e) {\n                e.preventDefault();\n                dragging = true;\n            });\n\n            chart4ftuclm4(document).on('mousemove', function(e) {\n                if (dragging) {\n                    onDrag(e.pageX);\n                }\n            });\n\n            chart4ftuclm4(document).on('mouseup', function() {\n                dragging = false;\n            });\n\n            \/\/ Touch events bound to control panel\n            $controlPanel.on('touchstart', function(e) {\n                e.preventDefault();\n                dragging = true;\n                const touch = e.originalEvent.touches[0];\n                onDrag(touch.pageX);\n            });\n\n            chart4ftuclm4(document).on('touchmove', function(e) {\n                if (dragging) {\n                    const touch = e.originalEvent.touches[0];\n                    onDrag(touch.pageX);\n                    e.preventDefault();\n                }\n            });\n\n            chart4ftuclm4(document).on('touchend touchcancel', function() {\n                dragging = false;\n            });\n\n            \/\/ Click on the control panel to set the thumb position\n            $controlPanel.on('click', function(e) {\n                const pageX = e.pageX;\n                onDrag(pageX);\n            });\n\n            \/\/ Initialize the bar to maxWattage\n            setBarByWattage(currentW);\n        }\n\n        \/\/ Initialize the chart\n        function initializeChart() {\n            const scaledData1 = dataset14ftuclm4.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset24ftuclm4.data.map(value =\u003e value * scale2);\n            const initialCombinedData = combineData(scaledData1, scaledData2);\n            createChart(dataset14ftuclm4.labels, initialCombinedData);\n        }\n\n        \/\/ Initial load\n        initializeChart();\n\n        \/\/ Create Process Bars for Channel 1 and Channel 2 with different max wattages\n        createProcessBar('process-container14ftuclm4', 'global-value14ftuclm4', 125); \/\/ Channel 1 with 125W max\n        createProcessBar('process-container24ftuclm4', 'global-value24ftuclm4', 25);  \/\/ Channel 2 with 25W max\n\n        \/\/ Debounced Resize Handler to Redraw Chart on Screen Size Change\n        let resizeTimeout;\n        chart4ftuclm4(window).on('resize', function(){\n\n            clearTimeout(resizeTimeout);\n            resizeTimeout = setTimeout(function(){\n                if(chart){\n                    chart.resize();\n                }\n                \/\/ Update container metrics for process bars\n                chart4ftuclm4('.process-container4ftuclm4').each(function(){\n                    const containerId = chart4ftuclm4(this).attr('id');\n                    const valueId = chart4ftuclm4(this).siblings('.slider-paratitle').find('.current-value').attr('id');\n                    \/\/ The process bars are already handling their own resize events\n                    \/\/ No additional action is needed here\n                });\n            }, 200); \/\/ Adjust the timeout as needed\n        });\n    });\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"9f42342\" class=\"elementor-element elementor-element-9f42342 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"heading.default\" data-element_type=\"widget\" data-id=\"9681445\" class=\"elementor-element elementor-element-9681445 elementor-widget__width-inherit elementor-widget elementor-widget-heading\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003ch3 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eSlide the Bar to See How the Spectrum Changes\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"control-panels4ftuclm4\" data-element_type=\"container\" data-id=\"214c828\" class=\"elementor-element elementor-element-214c828 e-flex e-con-boxed e-con e-child\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-element_type=\"container\" data-id=\"0c28797\" class=\"elementor-element elementor-element-0c28797 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"63a8a0a\" class=\"elementor-element elementor-element-63a8a0a elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"control-panel4ftuclm4\"\u003e\n\u003ch3 class=\"slider-title\"\u003eChannel 1: \u003cspan style=\"color: #ff3333;\"\u003e80% Red + White \u003c\/span\u003e\n\u003c\/h3\u003e\n\u003cdiv id=\"process-container14ftuclm4\" class=\"process-container4ftuclm4\"\u003e\n\u003cdiv style=\"width: 100%;\" class=\"process-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv style=\"transform: translate(-50%, -50%) translateX(206.094px);\" class=\"process-thumb\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\" class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e \u003cspan id=\"global-value14ftuclm4\" class=\"current-value\"\u003e125W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-element_type=\"container\" data-id=\"063d3cd\" class=\"elementor-element elementor-element-063d3cd e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"1d6dc00\" class=\"elementor-element elementor-element-1d6dc00 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"control-panel4ftuclm4\"\u003e\n\u003ch3 class=\"slider-title\"\u003eChannel 2: \u003cspan style=\"color: #cc0000;\"\u003eFar Red (730nm)\u003c\/span\u003e\n\u003c\/h3\u003e\n\u003cdiv id=\"process-container24ftuclm4\" class=\"process-container4ftuclm4\"\u003e\n\u003cdiv style=\"width: 100%;\" class=\"process-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv style=\"transform: translate(-50%, -50%) translateX(206.094px);\" class=\"process-thumb\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\" class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e \u003cspan id=\"global-value24ftuclm4\" class=\"current-value\"\u003e25W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3\u003eUsage Guidelines\u003c\/h3\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Under-Canopy-Light-4ft-Model-3-Attentions_3452f4f5-44a8-45c5-a535-472c1623bd70.jpg?v=1738839923\" alt=\"Installation safety instructions for under-canopy lighting\" style=\"float: none;\"\u003e\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCompatible with 120V or 240V power cords (sold separately)\u003c\/li\u003e\n\u003cli\u003eOptional accessories: stands, bench bridge stands, and interconnect cable (all sold separately)\u003c\/li\u003e\n\u003cli\u003eDual Channel Spectrum - Red + White \/ Far Red optimized for veg and flowering stages\u003c\/li\u003e\n\u003cli\u003eDimmable via RJ12 Data Cable, compatible with most major controllers\u003c\/li\u003e\n\u003cli\u003eEnhances plant growth by improving light exposure to lower canopy areas\u003c\/li\u003e\n\u003cli\u003eBuilt-in driver, compact slim profile, and low-heat operation\u003c\/li\u003e\n\u003cli\u003eBoosts lower flower and fruit growth to match top canopy size and quality\u003c\/li\u003e\n\u003cli\u003eImproves structure, density, and color for higher-quality harvests\u003c\/li\u003e\n\u003cli\u003eEasy to maneuver during harvest, especially with bench bridge stands\u003c\/li\u003e\n\u003cli\u003eQuick to install or remove between grow cycles\u003c\/li\u003e\n\u003cli\u003ePower + data chaining via single connection - no extra components required\u003c\/li\u003e\n\u003cli\u003eDo not mix or daisy-chain different models or lengths\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros 4' Under Canopy Grow Lights Model 4 Dual Channel 150W\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/wegrowpros.com\/specsheets\/UCLModel4-150W.pdf\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eMaximum Power Electrical Data\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eAC Current\u003c\/strong\u003e: 120V - 1.27A | 208V - 0.73A | 220V - 0.68A | 240V - 0.63A | 277V - 0.53A\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAC Power\u003c\/strong\u003e: 120V - 152W | 208V - 151W | 220V - 150.5W | 240V - 150W | 277V - 148W\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePower Factor\u003c\/strong\u003e: 120V - 0.99 | 208V - 0.98 | 220V - 0.97 | 240V - 0.96 | 277V - 0.94\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDaisy Chain\u003c\/strong\u003e: 8 pcs @120V | 12 pcs @208V | 14 pcs @220V | 16 pcs @240V | 18 pcs @277V\u003c\/p\u003e\n\u003ch3\u003eInterconnect Cables and Power Cords\u003c\/h3\u003e\n\u003cp\u003eAdditional components can be ordered separately since quantities will depend on the total number of lights and selected configurations.\u003c\/p\u003e\n\u003cp\u003eNote also that the lights connect together without interconnecting cables. The interconnecting cables are only needed to create the U where you have 2 rows of lights on a single bench OR if you need a space (up to 4 feet) between under canopy lights.\u003c\/p\u003e\n\u003cp\u003eSee the above chart for limitations on how many lights can be connected on 1 power cable.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOrder your cords and cables below:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/growpros-4-interconnect-cable-for-under-canopy-grow-lights\" target=\"_blank\"\u003eInterconnect Cables\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/products\/growpros-power-cord-with-rj-cable\" target=\"_blank\"\u003ePower Cords\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/power-adapter\" target=\"_blank\"\u003ePower Adaptors\u003c\/a\u003e (Convert 120V\/240V into 277V Male Plug)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eController\u003c\/h3\u003e\n\u003cp\u003eA controller with an RJ-12 signal is required to operate. We recommend the \u003ca rel=\"noopener\" title=\"Growpros grow light controller\" href=\"https:\/\/growlightcentral.com\/products\/growpros-grow-room-light-controller\" target=\"_blank\"\u003eGrowPros controller.\u003c\/a\u003e\u003c\/p\u003e","brand":"GrowPros","offers":[{"title":"120V \/ No","offer_id":50351298838820,"sku":"GPS-UCL4-4FT-IR-120V","price":195.0,"currency_code":"USD","in_stock":true},{"title":"120V \/ Pair of Stands (+$25)","offer_id":50723445276964,"sku":"GPS-UCL4-4FT-IR-120V-STAND","price":220.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ No","offer_id":50354716475684,"sku":"GPS-UCL4-4FT-IR-240V","price":195.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ Pair of Stands (+$25)","offer_id":50723445309732,"sku":"GPS-UCL4-4FT-IR-240V-STAND","price":220.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Under-Canopy-Light-Model-4ft-1.jpg?v=1768590574"},{"product_id":"growpros-8-under-canopy-grow-lights-model-4-dual-channel-300w-pack-of-2","title":"GrowPros 8' Viper Under Canopy Grow Lights Model 4 - 300W Dual Channel 80% Red + White \/ Far Red (730nm)","description":"\u003ch2\u003eHit every layer of your canopy with dual-channel red, white, and infrared lighting to grow bigger buds, speed up flowering, and reduce labor at harvest.\u003c\/h2\u003e\n\u003cp\u003eGrowPros Solutions’ first-ever \u003cstrong\u003eunder canopy light dual channel\u003c\/strong\u003e are engineered to \u003cstrong\u003eenhance yield and color\u003c\/strong\u003e of lower flowers. These \u003cstrong\u003esupplemental lights\u003c\/strong\u003e can significantly \u003cstrong\u003eenlarge B-buds and C-buds\u003c\/strong\u003e, promoting better growth and development in areas that typically underperform. By targeting the \u003cstrong\u003eunderstory\u003c\/strong\u003e, Growpros Solutions ensures a \u003cstrong\u003emore uniform and abundant harvest\u003c\/strong\u003e, maximizing every plant's potential.\u003c\/p\u003e\n\u003cp\u003eDesigned for aggressive flowering strategies, Viper UCL Model 4 delivers \u003cstrong\u003eapproximately 80 percent red spectrum on Channel 1\u003c\/strong\u003e, with an \u003cstrong\u003eindependent 730nm far red Channel 2\u003c\/strong\u003e. This setup activates the \u003cstrong\u003eEmerson Effect\u003c\/strong\u003e, where deep red and far red light together increase photosynthetic efficiency beyond their individual impact. The result is improved \u003cstrong\u003elight penetration\u003c\/strong\u003e, \u003cstrong\u003ephytochrome shifting\u003c\/strong\u003e, and \u003cstrong\u003eearlier bud set\u003c\/strong\u003e.\u003c\/p\u003e\n\u003ch2 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eADJUSTABLE SPECTRUM\u003c\/h2\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"b8cbdd1\" class=\"elementor-element elementor-element-b8cbdd1 e-flex e-con-boxed e-con e-parent e-lazyloaded\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"567dbcc\" class=\"elementor-element elementor-element-567dbcc e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"a47eaa5\" class=\"elementor-element elementor-element-a47eaa5 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"\u003e\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n    \/* Chart Container *\/\n    #chartcontainer_4ftuclm4 .chart-container4ftuclm4 {\n        width: 100%;\n        margin: 10px auto;\n        display: flex;\n        justify-content: center;\n    }\n\n    \/* Control Panels *\/\n    #chartcontainer_4ftuclm4 #control-panels4ftuclm4 {\n        display: flex;\n        justify-content: space-around;\n        margin-bottom: 20px;\n        flex-wrap: wrap;\n    }\n\n    #chartcontainer_4ftuclm4 .control-panel4ftuclm4 {\n        width: 100%;\n        border: 1px dashed #000000;\n        padding: 20px;\n        border-radius: 2px;\n        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n    }\n\n    #chartcontainer_4ftuclm4 .slider-title { \n        font-family: Jost, sans-serif; \n        font-size: 20px; \n        margin-bottom: 15px;\n        color: #000000;\n    }\n\n    #chartcontainer_4ftuclm4 .slider-paratitle {\n        display: flex;\n        flex-direction: row;\n        justify-content: space-between;\n        margin-top: 10px;\n    }\n\n    #chartcontainer_4ftuclm4 .slider-paratitle .current-value {\n        text-align: right;\n        width: 100%;\n        font-weight: bold;\n        color: #000000;\n    }\n    #chartcontainer_4ftuclm4 .slider-paratitle span {\n        color:#cccccc;\n    }\n    \/* Custom Process Bar Styles *\/\n    #chartcontainer_4ftuclm4 .process-container4ftuclm4 {\n        width: 100%;\n        height: 16px;\n        background-color: #333333;\n        position: relative;\n        cursor: pointer;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm4 .process-bar {\n        height: 100%;\n        background-color: #999999;\n        width: 0;\n        position: absolute;\n        top: 0;\n        left: 0;\n        transform: translateX(0);\n        will-change: width, transform;\n        border-radius:2px;\n    }\n\n    #chartcontainer_4ftuclm4 .process-thumb {\n        width: 20px;\n        height: 20px;\n        background-color: #046e82;\n        border: 1px solid #111111;\n        border-radius: 2px;\n        position: absolute;\n        top: 50%;\n        transform: translate(-50%, -50%) translateX(0);\n        left: 0;\n        cursor: pointer;\n        touch-action: none;\n        transition: none;\n        will-change: transform;\n    }\n    @media screen and (min-width: 768px) and (max-width: 1024px){\n        #chartcontainer_4ftuclm4 .control-panel4ftuclm4 { padding:10px 20px;}\n        #chartcontainer_4ftuclm4 .slider-title {\n            font-size:10px; \n            margin-bottom:8px ;\n        }\n        #chartcontainer_4ftuclm4 .process-container4ftuclm4 { height:14px; }\n        #chartcontainer_4ftuclm4 .process-thumb { width: 16px; height: 22px; }\n        #chartcontainer_4ftuclm4 .slider-paratitle span {font-size:12px;}\n    }\n    \/* Responsive adjustments *\/\n    @media screen and (max-width: 767px) {\n        #chartcontainer_4ftuclm4 #control-panels4ftuclm4 { \n            flex-direction: column; \n        }\n        #chartcontainer_4ftuclm4 .control-panel4ftuclm4 { \n            width: 100%; \n            margin-bottom: 20px; \n            padding:10px;\n        }\n        #chartcontainer_4ftuclm4 .slider-title { font-size:8px; margin-bottom:4px; }\n        #chartcontainer_4ftuclm4 .slider-title span { font-size: 7px; }\n        #chartcontainer_4ftuclm4 .process-container4ftuclm4 { height:14px; }\n        #chartcontainer_4ftuclm4 .process-thumb { width: 16px; height: 22px; }\n        #chartcontainer_4ftuclm4 .slider-paratitle span { font-size:10px; }\n    }\n\u003c\/style\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' id=\"chartcontainer_4ftuclm4\" data-element_type=\"container\" data-id=\"b8cbdd1\" class=\"elementor-element elementor-element-b8cbdd1 e-flex e-con-boxed e-con e-parent e-lazyloaded\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"567dbcc\" class=\"elementor-element elementor-element-567dbcc e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"a47eaa5\" class=\"elementor-element elementor-element-a47eaa5 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"chart-container4ftuclm4\"\u003e\u003ccanvas height=\"610\" width=\"1221\" style=\"display: block; box-sizing: border-box; height: 305px; width: 610px;\" id=\"myChart_4ftuclm4\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003cscript\u003e\n    var chart4ftuclm4 = jQuery.noConflict(true);\n    chart4ftuclm4(document).ready(function($) {\n        \/\/ Chart.js Setup\n        const ctx = chart4ftuclm4('#myChart_4ftuclm4')[0].getContext('2d');\n        let chart;\n        \n        const dataset14ftuclm4 = {\n            label: 'Channel 1',\n            labels: ['','', '360', '', '', '', '', '395', '', '', '', '', '', '450', '', '', '', '', '', '500', '', '', '', '', '', '', '', '', '', '600', '', '', '', '', '660', '', '', '', '', '', '', '730', '', '', '', '', '', '780', '', '', '', '', '', ''],\n            data: [0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 2, 7, 12, 7.5, 3.6, 2.3, 2.5, 3.6, 4.8, 5.8, 6.8, 8, 8.6, 9.2, 9.6, 10.2, 10.43, 10.4, 10.5, 11.1, 16, 30, 60, 100, 50, 15, 6, 2.4, 1.1, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n        };\n        const dataset24ftuclm4 = {\n            label: 'Channel 2',\n            data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4, 1.2, 2.6, 5.6, 12, 18.2, 21, 18.2, 12, 6, 2.7, 1.2, 0.2, 0, 0, 0]\n        };\n        const colors = ['#111a39','#111a39','#111a39', '#111a39', '#111a39','#111a39','#111a39', '#111a39', '#162143', '#162143', '#162143', '#053390', '#1c4a9d', '#1c4a9d','#265aa8', '#3173b8', '#3698d5','#45bee3','#6fc4be', '#6ebf80', '#69b72d','#69b72d', '#6bb72d', '#79bc28','#97c626','#a8cc2b', '#c8d933','#d8e036', '#f1eb36','#f4c41c','#f19518', '#ed761b', '#e95619','#e62718','#e11713','#ce141b', '#b91c22', '#a91f24', '#951e23', '#851123', '#7f191e', '#7d191d','#76161b', '#6a1216', '#631014', '#5f0e12', '#51050a','#440104', '#380103','#230304','#221714', '#221714', '#221714','#221714', '#221714', '#221714','#221714', '#221714','#221714', '#221714'];\n        \n        let scale1 = 1;\n        let scale2 = 1;\n\n        function createGradient(ctx, chartArea, colors) {\n            const gradient = ctx.createLinearGradient(chartArea.left, 0, chartArea.right, 1);\n            colors.forEach((color, index) =\u003e {\n                gradient.addColorStop(index \/ (colors.length - 1), color);\n            });\n            return gradient;\n        }\n\n        function createChart(labels, combinedData) {\n            if (chart) {\n                chart.destroy();\n            }\n\n            chart = new Chart(ctx, {\n                type: 'line',\n                data: {\n                    labels: labels,\n                    datasets: [\n                        {\n                            type: 'line',\n                            label: 'PPF',\n                            data: combinedData,\n                            borderWidth: 0.1,\n                            backgroundColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            borderColor: function(context) {\n                                const chart = context.chart;\n                                const {ctx, chartArea} = chart;\n\n                                if (!chartArea) {\n                                    return null;\n                                }\n\n                                return createGradient(ctx, chartArea, colors);\n                            },\n                            fill: true,\n                            tension: 0.4 \/\/ Smoothing effect\n                        },\n                        {\n                            type: 'line',\n                            label: 'Outline',\n                            data: combinedData,\n                            borderWidth: 2,\n                            backgroundColor: 'transparent',\n                            borderColor: '#000000', \/\/ Outline color\n                            fill: false,\n                            tension: 0.4\n                        }\n                    ]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: true,\n                    scales: {\n                        x: {\n                            stacked: true,\n                            grid: {\n                                display: false \/\/ Hide y-axis grid lines\n                            },\n                            ticks: {\n                                color: '#000000',\n                                autoSkip: false, \/\/ Prevent auto-skipping of labels\n                                maxRotation: 0, \/\/ Prevent label rotation\n                                minRotation: 0, \/\/ Prevent label rotation\n                                maxTicksLimit: labels.length \/\/ Ensure all labels are shown\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000' \/\/ Change x-axis line color\n                            }\n                        },\n                        y: {\n                            beginAtZero: true,\n                            max: 100, \/\/ Set a static max value for y-axis to accommodate added values\n                            grid: {\n                                color: '#000000',\n                            },\n                            border: {\n                                width:2,\n                                color: '#000000' \/\/ Change y-axis line color\n                            },\n                            ticks: {\n                                color: '#000000',\n                                callback: function(value) {\n                                    return value % 20 === 0 ? value + '%' : ''; \/\/ Custom label formatting\n                                }\n                            }\n                        }\n                    },\n                    events: null,\n                    radius: 0,\n                    plugins: {\n                        filler: {propagate: true}, \/\/ Enable filler\n                        legend: { display: false },\n                    },\n                    animation: {\n                        duration: 0 \/\/ Animation duration for smoother updates\n                    }\n                }\n            });\n        }\n\n        function combineData(data1, data2) {\n            return data1.map((value, index) =\u003e {\n                return value + data2[index];\n            });\n        }\n\n        function updateChart() {\n            const scaledData1 = dataset14ftuclm4.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset24ftuclm4.data.map(value =\u003e value * scale2);\n            const combinedData = combineData(scaledData1, scaledData2);\n            \n            if (chart) {\n                chart.data.datasets[0].data = combinedData;\n                chart.data.datasets[1].data = combinedData; \/\/ Update outline dataset\n                chart.options.animation.duration = 300;\n                chart.update();\n            }\n        }\n\n        function createProcessBar(containerId, valueId, maxWattage) { \/\/ Added maxWattage parameter\n            const $container = chart4ftuclm4(`#${containerId}`);\n            const $controlPanel = $container.closest('.control-panel4ftuclm4');\n            const $thumb = $container.find('.process-thumb');\n            const $bar = $container.find('.process-bar');\n            const $currentValue = chart4ftuclm4(`#${valueId}`);\n            let dragging = false;\n            let containerOffset = $controlPanel.offset().left;\n            let containerWidth = $controlPanel.width();\n            let processContainerWidth = $container.width();\n            let currentW = maxWattage; \/\/ Initialize to maxWattage\n\n            \/\/ Update container metrics on resize\n            function updateContainerMetrics() {\n                containerOffset = $controlPanel.offset().left;\n                containerWidth = $controlPanel.width();\n                processContainerWidth = $container.width();\n                setBarByWattage(currentW);\n            }\n\n            chart4ftuclm4(window).on('resize', updateContainerMetrics);\n\n            \/\/ Initialize container metrics\n            updateContainerMetrics();\n\n            \/\/ Function to set the bar and thumb position based on wattage\n            function setBarByWattage(wattage) {\n                currentW = Math.min(Math.max(wattage, 0), maxWattage);\n                const touchRatio = currentW \/ maxWattage;\n                const thumbLeft = touchRatio * processContainerWidth;\n\n                \/\/ Update bar width\n                $bar.css('width', `${touchRatio * 100}%`);\n                \/\/ Update thumb position\n                $thumb.css('transform', `translate(-50%, -50%) translateX(${thumbLeft}px)`);\n                \/\/ Update displayed value\n                $currentValue.text(`${currentW.toFixed(0)}W`);\n                \/\/ Update the corresponding scale variable and chart\n                if (containerId === 'process-container14ftuclm4') {\n                    scale1 = currentW \/ maxWattage;\n                } else if (containerId === 'process-container24ftuclm4') {\n                    scale2 = currentW \/ maxWattage;\n                }\n                updateChart();\n            }\n\n            \/\/ Function to handle the dragging logic\n            function handleDrag(pageX) {\n                const newLeft = pageX - containerOffset;\n                const clampedLeft = Math.min(Math.max(newLeft, 0), containerWidth);\n                const touchRatio = clampedLeft \/ containerWidth;\n                const newWattage = touchRatio * maxWattage;\n                setBarByWattage(newWattage);\n            }\n\n            \/\/ Throttle dragging using requestAnimationFrame\n            let rafId = null;\n\n            function onDrag(pageX) {\n                if (rafId) return; \/\/ If a frame is already requested, do nothing\n                rafId = requestAnimationFrame(() =\u003e {\n                    handleDrag(pageX);\n                    rafId = null;\n                });\n            }\n\n            \/\/ Mouse events\n            $thumb.on('mousedown', function(e) {\n                e.preventDefault();\n                dragging = true;\n            });\n\n            chart4ftuclm4(document).on('mousemove', function(e) {\n                if (dragging) {\n                    onDrag(e.pageX);\n                }\n            });\n\n            chart4ftuclm4(document).on('mouseup', function() {\n                dragging = false;\n            });\n\n            \/\/ Touch events bound to control panel\n            $controlPanel.on('touchstart', function(e) {\n                e.preventDefault();\n                dragging = true;\n                const touch = e.originalEvent.touches[0];\n                onDrag(touch.pageX);\n            });\n\n            chart4ftuclm4(document).on('touchmove', function(e) {\n                if (dragging) {\n                    const touch = e.originalEvent.touches[0];\n                    onDrag(touch.pageX);\n                    e.preventDefault();\n                }\n            });\n\n            chart4ftuclm4(document).on('touchend touchcancel', function() {\n                dragging = false;\n            });\n\n            \/\/ Click on the control panel to set the thumb position\n            $controlPanel.on('click', function(e) {\n                const pageX = e.pageX;\n                onDrag(pageX);\n            });\n\n            \/\/ Initialize the bar to maxWattage\n            setBarByWattage(currentW);\n        }\n\n        \/\/ Initialize the chart\n        function initializeChart() {\n            const scaledData1 = dataset14ftuclm4.data.map(value =\u003e value * scale1);\n            const scaledData2 = dataset24ftuclm4.data.map(value =\u003e value * scale2);\n            const initialCombinedData = combineData(scaledData1, scaledData2);\n            createChart(dataset14ftuclm4.labels, initialCombinedData);\n        }\n\n        \/\/ Initial load\n        initializeChart();\n\n        \/\/ Create Process Bars for Channel 1 and Channel 2 with different max wattages\n        createProcessBar('process-container14ftuclm4', 'global-value14ftuclm4', 250); \/\/ Channel 1 with 250W max\n        createProcessBar('process-container24ftuclm4', 'global-value24ftuclm4', 50);  \/\/ Channel 2 with 50W max\n\n        \/\/ Debounced Resize Handler to Redraw Chart on Screen Size Change\n        let resizeTimeout;\n        chart4ftuclm4(window).on('resize', function(){\n\n            clearTimeout(resizeTimeout);\n            resizeTimeout = setTimeout(function(){\n                if(chart){\n                    chart.resize();\n                }\n                \/\/ Update container metrics for process bars\n                chart4ftuclm4('.process-container4ftuclm4').each(function(){\n                    const containerId = chart4ftuclm4(this).attr('id');\n                    const valueId = chart4ftuclm4(this).siblings('.slider-paratitle').find('.current-value').attr('id');\n                    \/\/ The process bars are already handling their own resize events\n                    \/\/ No additional action is needed here\n                });\n            }, 200); \/\/ Adjust the timeout as needed\n        });\n    });\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-settings='{\"background_background\":\"classic\"}' data-element_type=\"container\" data-id=\"9f42342\" class=\"elementor-element elementor-element-9f42342 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"heading.default\" data-element_type=\"widget\" data-id=\"9681445\" class=\"elementor-element elementor-element-9681445 elementor-widget__width-inherit elementor-widget elementor-widget-heading\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003ch3 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eSlide the Bar to See How the Spectrum Changes\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"control-panels4ftuclm4\" data-element_type=\"container\" data-id=\"214c828\" class=\"elementor-element elementor-element-214c828 e-flex e-con-boxed e-con e-child\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv data-element_type=\"container\" data-id=\"0c28797\" class=\"elementor-element elementor-element-0c28797 e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"63a8a0a\" class=\"elementor-element elementor-element-63a8a0a elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"control-panel4ftuclm4\"\u003e\n\u003ch3 class=\"slider-title\"\u003eChannel 1: \u003cspan style=\"color: #ff3333;\"\u003e80%Red + White \u003c\/span\u003e\n\u003c\/h3\u003e\n\u003cdiv id=\"process-container14ftuclm4\" class=\"process-container4ftuclm4\"\u003e\n\u003cdiv style=\"width: 100%;\" class=\"process-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv style=\"transform: translate(-50%, -50%) translateX(206.094px);\" class=\"process-thumb\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\" class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e \u003cspan id=\"global-value14ftuclm4\" class=\"current-value\"\u003e250W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv data-element_type=\"container\" data-id=\"063d3cd\" class=\"elementor-element elementor-element-063d3cd e-con-full e-flex e-con e-child\"\u003e\n\u003cdiv data-widget_type=\"text-editor.default\" data-element_type=\"widget\" data-id=\"1d6dc00\" class=\"elementor-element elementor-element-1d6dc00 elementor-widget elementor-widget-text-editor\"\u003e\n\u003cdiv class=\"elementor-widget-container\"\u003e\n\u003cdiv class=\"control-panel4ftuclm4\"\u003e\n\u003ch3 class=\"slider-title\"\u003eChannel 2: \u003cspan style=\"color: #cc0000;\"\u003eInfraRed (730nm)\u003c\/span\u003e\n\u003c\/h3\u003e\n\u003cdiv id=\"process-container24ftuclm4\" class=\"process-container4ftuclm4\"\u003e\n\u003cdiv style=\"width: 100%;\" class=\"process-bar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv style=\"transform: translate(-50%, -50%) translateX(206.094px);\" class=\"process-thumb\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\" class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e \u003cspan id=\"global-value24ftuclm4\" class=\"current-value\"\u003e50W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3\u003eUsage Guidelines\u003c\/h3\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-Under-Canopy-Light-4ft-Model-3-Attentions_3452f4f5-44a8-45c5-a535-472c1623bd70.jpg?v=1738839923\" alt=\"Under canopy lighting daisy-chain setup instructions showing safe power disconnection steps\" style=\"float: none;\"\u003e\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCompatible with 120V or 240V power cords (sold separately)\u003c\/li\u003e\n\u003cli\u003eOptional accessories: stands, bench bridge stands, and interconnect cable (all sold separately)\u003c\/li\u003e\n\u003cli\u003eDual Channel Spectrum - Red + White \/ Far Red optimized for veg and flowering stages\u003c\/li\u003e\n\u003cli\u003eDimmable via RJ12 Data Cable, compatible with most major controllers\u003c\/li\u003e\n\u003cli\u003eEnhances plant growth by improving light exposure to lower canopy areas\u003c\/li\u003e\n\u003cli\u003eBuilt-in driver, compact slim profile, and low-heat operation\u003c\/li\u003e\n\u003cli\u003eBoosts lower flower and fruit growth to match top canopy size and quality\u003c\/li\u003e\n\u003cli\u003eImproves structure, density, and color for higher-quality harvests\u003c\/li\u003e\n\u003cli\u003eEasy to maneuver during harvest, especially with bench bridge stands\u003c\/li\u003e\n\u003cli\u003eQuick to install or remove between grow cycles\u003c\/li\u003e\n\u003cli\u003ePower + data chaining via single connection - no extra components required\u003c\/li\u003e\n\u003cli\u003eDo not mix or daisy-chain different models or lengths\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros 8' Under Canopy Grow Lights Model 4 Dual Channel 300W\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/wegrowpros.com\/specsheets\/UCLModel4-300W.pdf\" rel=\"noopener\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eMaximum Power Electrical Data\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eAC Current\u003c\/strong\u003e: 120V - 2.54A | 208V - 1.46A | 220V - 1.37A | 240V - 1.25A | 277V - 1.07A\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAC Power\u003c\/strong\u003e: 120V - 305W | 208V - 303W | 220V - 302W | 240V - 300W | 277V - 297W\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePower Factor\u003c\/strong\u003e: 120V - 0.99 | 208V - 0.98 | 220V - 0.98 | 240V - 0.97 | 277V - 0.97\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDaisy Chain\u003c\/strong\u003e: 6 pcs @120V | 7 pcs @208V | 8 pcs @220V | 8 pcs @240V | 9 pcs @277V\u003c\/p\u003e\n\u003ch3\u003eInterconnect Cables and Power Cords\u003c\/h3\u003e\n\u003cp\u003eAdditional components can be ordered separately since quantities will depend on the total number of lights and selected configurations.\u003c\/p\u003e\n\u003cp\u003eNote also that the lights connect together without interconnecting cables. The interconnecting cables are only needed to create the U where you have 2 rows of lights on a single bench OR if you need a space (up to 4 feet) between under canopy lights.\u003c\/p\u003e\n\u003cp\u003eSee the above chart for limitations on how many lights can be connected on 1 power cable.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOrder your cords and cables below:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/growpros-4-interconnect-cable-for-under-canopy-grow-lights\" target=\"_blank\"\u003eInterconnect Cables\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/products\/growpros-power-cord-with-rj-cable\" target=\"_blank\"\u003ePower Cords\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003ca rel=\"noopener\" href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/power-adapter\" target=\"_blank\"\u003ePower Adaptors\u003c\/a\u003e (Convert 120V\/240V into 277V Male Plug)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eController\u003c\/h3\u003e\n\u003cp\u003eA controller with an RJ-12 signal is required to operate. We recommend the \u003ca rel=\"noopener\" title=\"Growpros grow light controller\" href=\"https:\/\/growlightcentral.com\/products\/growpros-grow-room-light-controller\" target=\"_blank\"\u003eGrowPros controller.\u003c\/a\u003e\u003c\/p\u003e","brand":"GrowPros","offers":[{"title":"120V \/ No","offer_id":50351298969892,"sku":"GPS-UCL4-8FT-IR-120V","price":345.0,"currency_code":"USD","in_stock":true},{"title":"120V \/ Pair of Stands | $25","offer_id":50723445375268,"sku":"GPS-UCL4-8FT-IR-120V-STAND","price":365.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ No","offer_id":50354716344612,"sku":"GPS-UCL4-8FT-IR-240V","price":345.0,"currency_code":"USD","in_stock":true},{"title":"240V \/ Pair of Stands | $25","offer_id":50723445408036,"sku":"GPS-UCL4-8FT-IR-240V-STAND","price":365.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/growpros-under-canopy-lights-8ft-1.jpg?v=1768599452"},{"product_id":"growpros-gh1000-greenhouse-supplemental-light-dual-channel","title":"GrowPros GH1000 Dual Channel Greenhouse Supplemental Light - Blue White \u0026 Deep Red","description":"\u003ch2\u003eBoost greenhouse yields with this 1000W dual-channel light that delivers powerful, spectrum-adjustable coverage across all seasons and grow stages.\u003c\/h2\u003e\n\u003cp\u003e\u003cstrong\u003eThe 1000-watt GH1000 greenhouse light\u003c\/strong\u003e is designed to improve the quality and boost the yields of your greenhouse crops. The 2 channels could create a special spectrum, which is amazing for supplementing additional light to the plants during all seasons and latitudes. Designed to operate in a greenhouse environment, this light can withstand extreme temperature differentials and is IP65-rated, immune to water damage, and safe and easy to clean. \u003cstrong\u003eThe GH1000 has both power chaining a data chaining.\u003c\/strong\u003e The diodes are angled to give maximum light spread over the canopy. The intensity of this light allows it to be hung high above the canopy, and the slender profile minimizes the shadowing of sunlight.\u003c\/p\u003e\n\u003ch3 class=\"elementor-heading-title elementor-size-default\" style=\"text-align: center;\"\u003eADJUSTABLE SPECTRUM\u003c\/h3\u003e\n\u003cstyle\u003e\n\/* Chart Container *\/\n.chart-container4ftgh1000 {\n    width: 100%;\n    margin: 10px auto;\n    display: flex;\n    justify-content: center;\n}\n\n\/* Control Panels *\/\n#control-panels4ftgh1000 {\n    display: flex;\n    justify-content: space-around;\n    margin-bottom: 20px;\n    flex-wrap: wrap;\n}\n\n.control-panel4ftgh1000 {\n    width: 100%;\n    border: 1px dashed #999999;\n    padding: 20px;\n    margin-bottom: 20px;\n    border-radius: 2px;\n    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n}\n\n.slider-title { \n    font-family: Jost, sans-serif; \n    font-size: 20px; \n    margin-bottom: 15px;\n    color: #000000;\n}\n\n.slider-paratitle {\n    display: flex;\n    flex-direction: row;\n    justify-content: space-between;\n    margin-top: 10px;\n}\n\n.slider-paratitle .current-value {\n    text-align: right;\n    width: 100%;\n    font-weight: bold;\n    color: #000000;\n}\n.slider-paratitle span {\n    color:#000000;\n}\n\n\/* Custom Process Bar Styles *\/\n.process-container4ftgh1000 {\n    width: 100%;\n    height: 16px;\n    background-color: #333333;\n    position: relative;\n    cursor: pointer;\n    border-radius:2px;\n}\n\n.process-bar {\n    height: 100%;\n    background-color: #999999;\n    width: 0;\n    position: absolute;\n    top: 0;\n    left: 0;\n    transform: translateX(0);\n    will-change: width, transform;\n    border-radius:2px;\n}\n\n.process-thumb {\n    width: 20px;\n    height: 20px;\n    background-color: #046e82;\n    border: 1px solid #000000;\n    border-radius: 2px;\n    position: absolute;\n    top: 50%;\n    transform: translate(-50%, -50%);\n    left: 0;\n    cursor: pointer;\n    touch-action: none;\n    transform: translate(-50%, -50%) translateX(0);\n    transition: none;\n    will-change: transform;\n}\n\n\/* Responsive adjustments *\/\n@media screen and (max-width: 767px) {\n    #control-panels4ftgh1000 { \n        flex-direction: column; \n    }\n    .control-panel4ftgh1000 { \n        width: 100%; \n        margin-bottom: 20px; \n        padding:10px;\n    }\n    .slider-title { font-size:12px; }\n    .slider-title span {font-size:7px;}\n    .process-container4ftgh1000 { height:14px; }\n    .process-thumb { width: 16px; height: 22px; }\n    .slider-paratitle span { font-size:10px; }\n}\n\u003c\/style\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-4a78a7c e-con-full e-flex e-con e-child\" data-id=\"4a78a7c\" data-element_type=\"container\" data-settings='{\"background_background\":\"classic\"}'\u003e\n\u003cdiv class=\"elementor-element elementor-element-d7976ec elementor-widget elementor-widget-html\" data-id=\"d7976ec\" data-element_type=\"widget\" data-widget_type=\"html.default\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"\u003e\u003c\/script\u003e\n\u003cdiv class=\"chart-container4ftgh1000\"\u003e\u003ccanvas id=\"myChart_4ftgh1000\" style=\"display: block; box-sizing: border-box; height: 340px; width: 680px;\" width=\"611\" height=\"305\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003cscript\u003e\nvar chart4ftgh1000 = jQuery.noConflict(true);\nchart4ftgh1000(document).ready(function(chart4ftgh1000) {\n    \/\/ Chart.js Setup\n    const ctx = chart4ftgh1000('#myChart_4ftgh1000')[0].getContext('2d');\n    let chart;\n    \n    const dataset14ftgh1000 = {\n        label: 'Channel 1',\n        labels: ['','', '360', '', '', '', '', '395', '', '', '', '', '', '450', '', '', '', '', '', '500', '', '', '', '', '', '', '', '', '', '600', '', '', '', '', '660', '', '', '', '', '', '', '730', '', '', '', '', '', '780', '', '', '', '', '', ''],\n        data: [0, 0, 0, 0, 0, 0, 0, 0, 0.2, 1, 3, 8, 20, 40, 20, 8, 2.5, 1.1, 2.6, 9, 15, 18.2, 18.9, 18.7, 18.4, 18, 17.4, 16.6, 15.4, 13.8, 11.8, 9.2, 6.6, 4, 2.1, 1, 0.5, 0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n    };\n    const dataset24ftgh1000 = {\n        label: 'Channel 2',\n        data:  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 4, 12, 40, 85, 40, 12, 4, 0.6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n    };\n    const colors = ['#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#65009f', '#40009f', '#1e149e', '#103e93', '#265aa8', '#3173b8', '#3698d5', '#45bee3', '#6fc4be', '#6ebf80', '#69b72d', '#69b72d', '#6bb72d', '#79bc28', '#97c626', '#a8cc2b', '#c8d933', '#d8e036', '#f1eb36', '#f4c41c', '#f19518', '#ed761b', '#e95619', '#e62718', '#e11713', '#ce141b', '#b91c22', '#a91f24', '#951e23', '#851123', '#7f191e', '#7d191d', '#76161b', '#6a1216', '#631014', '#5f0e12', '#51050a', '#440104', '#380103', '#230304', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714'];\n    \n    let scale1 = 1;\n    let scale2 = 1;\n\n    function createGradient(ctx, chartArea, colors) {\n        const gradient = ctx.createLinearGradient(chartArea.left, 0, chartArea.right, 1);\n        colors.forEach((color, index) =\u003e {\n            gradient.addColorStop(index \/ (colors.length - 1), color);\n        });\n        return gradient;\n    }\n\n    function createChart(labels, combinedData) {\n        if (chart) {\n            chart.destroy();\n        }\n\n        chart = new Chart(ctx, {\n            type: 'line',\n            data: {\n                labels: labels,\n                datasets: [\n                    {\n                        type: 'line',\n                        label: 'PPF',\n                        data: combinedData,\n                        borderWidth: 0.1,\n                        backgroundColor: function(context) {\n                            const chart = context.chart;\n                            const {ctx, chartArea} = chart;\n\n                            if (!chartArea) {\n                                return null;\n                            }\n\n                            return createGradient(ctx, chartArea, colors);\n                        },\n                        borderColor: function(context) {\n                            const chart = context.chart;\n                            const {ctx, chartArea} = chart;\n\n                            if (!chartArea) {\n                                return null;\n                            }\n\n                            return createGradient(ctx, chartArea, colors);\n                        },\n                        fill: true,\n                        tension: 0.4 \/\/ Smoothing effect\n                    },\n                    {\n                        type: 'line',\n                        label: 'Outline',\n                        data: combinedData,\n                        borderWidth: 2,\n                        backgroundColor: 'transparent',\n                        borderColor: '#000000', \/\/ Outline color\n                        fill: false,\n                        tension: 0.4\n                    }\n                ]\n            },\n            options: {\n                responsive: true,\n                maintainAspectRatio: true,\n                scales: {\n                    x: {\n                        stacked: true,\n                        grid: {\n                            display: false \/\/ Hide y-axis grid lines\n                        },\n                        ticks: {\n                            color: '#000000',\n                            autoSkip: false, \/\/ Prevent auto-skipping of labels\n                            maxRotation: 0, \/\/ Prevent label rotation\n                            minRotation: 0, \/\/ Prevent label rotation\n                            maxTicksLimit: labels.length \/\/ Ensure all labels are shown\n                        },\n                        border: {\n                            width:2,\n                            color: '#000000' \/\/ Change x-axis line color\n                        }\n                    },\n                    y: {\n                        beginAtZero: true,\n                        max: 100, \/\/ Set a static max value for y-axis to accommodate added values\n                        grid: {\n                            color: '#444444',\n                        },\n                        border: {\n                            width:2,\n                            color: '#000000' \/\/ Change y-axis line color\n                        },\n                        ticks: {\n                            color: '#000000',\n                            callback: function(value) {\n                                return value % 20 === 0 ? value + '%' : ''; \/\/ Custom label formatting\n                            }\n                        }\n                    }\n                },\n                events: null,\n                radius: 0,\n                plugins: {\n                    filler: {propagate: true}, \/\/ Enable filler\n                    legend: { display: false },\n                },\n                animation: {\n                    duration: 0 \/\/ Animation duration for smoother updates\n                }\n            }\n        });\n    }\n\n    function combineData(data1, data2) {\n        return data1.map((value, index) =\u003e {\n            return value + data2[index];\n        });\n    }\n\n    function updateChart() {\n        const scaledData1 = dataset14ftgh1000.data.map(value =\u003e value * scale1);\n        const scaledData2 = dataset24ftgh1000.data.map(value =\u003e value * scale2);\n        const combinedData = combineData(scaledData1, scaledData2);\n        \n        if (chart) {\n            chart.data.datasets[0].data = combinedData;\n            chart.data.datasets[1].data = combinedData; \/\/ Update outline dataset\n            chart.options.animation.duration = 300;\n            chart.update();\n        }\n    }\n\n    function createProcessBar(containerId, valueId, maxWattage) {\n        const $container = chart4ftgh1000(`#${containerId}`);\n        const $controlPanel = $container.closest('.control-panel4ftgh1000');\n        const $thumb = $container.find('.process-thumb');\n        const $bar = $container.find('.process-bar');\n        const $currentValue = chart4ftgh1000(`#${valueId}`);\n        let dragging = false;\n        let containerOffset = $controlPanel.offset().left;\n        let containerWidth = $controlPanel.width();\n        let processContainerWidth = $container.width();\n        let currentW = maxWattage; \/\/ Initialize to maxWattage or set desired initial value\n\n        \/\/ Update container metrics on resize\n        function updateContainerMetrics() {\n            containerOffset = $controlPanel.offset().left;\n            containerWidth = $controlPanel.width();\n            processContainerWidth = $container.width();\n            setBarByWattage(currentW);\n        }\n\n        chart4ftgh1000(window).on('resize', updateContainerMetrics);\n\n        \/\/ Initialize container metrics\n        updateContainerMetrics();\n\n        \/\/ Function to set the bar and thumb position based on wattage\n        function setBarByWattage(wattage) {\n            currentW = Math.min(Math.max(wattage, 0), maxWattage);\n            const touchRatio = currentW \/ maxWattage;\n            const thumbLeft = touchRatio * processContainerWidth;\n\n            \/\/ Update bar width\n            $bar.css('width', `${touchRatio * 100}%`);\n            \/\/ Update thumb position\n            $thumb.css('transform', `translate(-50%, -50%) translateX(${thumbLeft}px)`);\n            \/\/ Update displayed value\n            $currentValue.text(`${currentW.toFixed(0)}W`);\n            \/\/ Update the corresponding scale variable and chart\n            if (containerId === 'process-container14ftgh1000') {\n                scale1 = currentW \/ maxWattage;\n            } else if (containerId === 'process-container24ftgh1000') {\n                scale2 = currentW \/ maxWattage;\n            }\n            updateChart();\n        }\n\n        \/\/ Function to handle the dragging logic\n        function handleDrag(pageX) {\n            const newLeft = pageX - containerOffset;\n            const clampedLeft = Math.min(Math.max(newLeft, 0), containerWidth);\n            const touchRatio = clampedLeft \/ containerWidth;\n            const newWattage = touchRatio * maxWattage;\n            setBarByWattage(newWattage);\n        }\n\n        \/\/ Throttle dragging using requestAnimationFrame\n        let rafId = null;\n\n        function onDrag(pageX) {\n            if (rafId) return;\n            rafId = requestAnimationFrame(() =\u003e {\n                handleDrag(pageX);\n                rafId = null;\n            });\n        }\n\n        \/\/ Mouse events\n        $thumb.on('mousedown', function(e) {\n            e.preventDefault();\n            dragging = true;\n        });\n\n        chart4ftgh1000(document).on('mousemove', function(e) {\n            if (dragging) {\n                onDrag(e.pageX);\n            }\n        });\n\n        chart4ftgh1000(document).on('mouseup', function() {\n            dragging = false;\n        });\n\n        \/\/ Touch events\n        $controlPanel.on('touchstart', function(e) {\n            e.preventDefault();\n            dragging = true;\n            const touch = e.originalEvent.touches[0];\n            onDrag(touch.pageX);\n        });\n\n        chart4ftgh1000(document).on('touchmove', function(e) {\n            if (dragging) {\n                const touch = e.originalEvent.touches[0];\n                onDrag(touch.pageX);\n                e.preventDefault();\n            }\n        });\n\n        chart4ftgh1000(document).on('touchend touchcancel', function() {\n            dragging = false;\n        });\n\n        \/\/ Click on the control panel to set the thumb position\n        $controlPanel.on('click', function(e) {\n            const pageX = e.pageX;\n            onDrag(pageX);\n        });\n\n        \/\/ Initialize the bar to maxWattage or desired initial value\n        setBarByWattage(currentW);\n    }\n\n    \/\/ Initialize the chart\n    function initializeChart() {\n        const scaledData1 = dataset14ftgh1000.data.map(value =\u003e value * scale1);\n        const scaledData2 = dataset24ftgh1000.data.map(value =\u003e value * scale2);\n        const initialCombinedData = combineData(scaledData1, scaledData2);\n        createChart(dataset14ftgh1000.labels, initialCombinedData);\n    }\n\n    \/\/ Initial load\n    initializeChart();\n\n    \/\/ Create Process Bars for Channel 1 and Channel 2 with different max wattages\n    createProcessBar('process-container14ftgh1000', 'global-value14ftgh1000', 600); \/\/ Channel 1 with 600W max\n    createProcessBar('process-container24ftgh1000', 'global-value24ftgh1000', 400);  \/\/ Channel 2 with 400W max\n\n    \/\/ Debounced Resize Handler to Redraw Chart on Screen Size Change\n    let resizeTimeout;\n    chart4ftgh1000(window).on('resize', function(){\n\n        clearTimeout(resizeTimeout);\n        resizeTimeout = setTimeout(function(){\n            if(chart){\n                chart.resize();\n            }\n            \/\/ Update container metrics for process bars\n            chart4ftgh1000('.process-container4ftgh1000').each(function(){\n                const containerId = chart4ftgh1000(this).attr('id');\n                const valueId = chart4ftgh1000(this).siblings('.slider-paratitle').find('.current-value').attr('id');\n                \/\/ The process bars are already handling their own resize events\n                \/\/ No additional action is needed here\n            });\n        }, 200); \/\/ Adjust the timeout as needed\n    });\n});\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-136a6e3 e-con-full e-flex e-con e-child\" data-id=\"136a6e3\" data-element_type=\"container\" data-settings='{\"background_background\":\"classic\"}'\u003e\n\u003cdiv class=\"elementor-element elementor-element-aaf35a4 elementor-widget elementor-widget-heading\" data-id=\"aaf35a4\" data-element_type=\"widget\" data-widget_type=\"heading.default\"\u003e\n\u003ch4 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eSlide the Bar to See How the Spectrum Changes\u003c\/h4\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-21acff7 e-flex e-con-boxed e-con e-child\" data-id=\"21acff7\" data-element_type=\"container\" id=\"control-panels4ftgh1000\"\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-0ef501d e-con-full e-flex e-con e-child\" data-id=\"0ef501d\" data-element_type=\"container\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-443ea56 elementor-widget elementor-widget-html\" data-id=\"443ea56\" data-element_type=\"widget\" data-widget_type=\"html.default\"\u003e\n\u003cdiv class=\"control-panel4ftgh1000\"\u003e\n\u003cstrong\u003eChannel 1: \u003cspan style=\"color: rgb(0, 170, 255);\"\u003eBlue White\u003c\/span\u003e\u003c\/strong\u003e\n\u003cdiv id=\"process-container14ftgh1000\" class=\"process-container4ftgh1000\"\u003e\n\u003cdiv class=\"process-bar\" style=\"width: 100%;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"process-thumb\" style=\"transform: translate(-50%, -50%) translateX(237.778px);\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e \u003cspan id=\"global-value14ftgh1000\" class=\"current-value\"\u003e600W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-7b79f14 e-con-full e-flex e-con e-child\" data-id=\"7b79f14\" data-element_type=\"container\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-414c051 elementor-widget elementor-widget-html\" data-id=\"414c051\" data-element_type=\"widget\" data-widget_type=\"html.default\"\u003e\n\u003cdiv class=\"control-panel4ftgh1000\"\u003e\n\u003cstrong\u003eChannel 2: \u003cspan style=\"color: rgb(255, 42, 0);\"\u003eDeep Red\u003c\/span\u003e\u003c\/strong\u003e\n\u003cdiv id=\"process-container24ftgh1000\" class=\"process-container4ftgh1000\"\u003e\n\u003cdiv class=\"process-bar\" style=\"width: 100%;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"process-thumb\" style=\"transform: translate(-50%, -50%) translateX(237.778px);\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cstrong\u003e\u003cspan class=\"value\"\u003e0W\u003c\/span\u003e\u003c\/strong\u003e \u003cspan id=\"global-value24ftgh1000\" class=\"current-value\"\u003e400W\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1000W output increases yields by supplementing additional light over a 64sqft area.\u003c\/li\u003e\n\u003cli\u003eDeep Reds and Full Spectrum White Diodes add the perfect supplemental light.\u003c\/li\u003e\n\u003cli\u003eDesigned to be run in high and low operating temperatures. Compact and lightweight for minimizing strain on greenhouse structures.\u003c\/li\u003e\n\u003cli\u003eEasy to install and control.\u003c\/li\u003e\n\u003cli\u003eDLC listed and eligible for rebates.\u003c\/li\u003e\n\u003cli\u003e10′ power chaining cord allows for a variety of spacing options. Variable input wattage; perfect for any greenhouse setup.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros GH1000 Greenhouse Supplemental Light\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/wegrowpros.com\/specsheets\/GH1000.pdf\" rel=\"noopener\" target=\"_blank\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eMaximum Power Electrical Data\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eAC Current\u003c\/strong\u003e: 120V - 8.57A | 208V - 4.85A | 220V - 4.56A | 240V - 4.16A | 277V - 3.59A\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eAC Power\u003c\/strong\u003e: 120V - 1029W | 208V - 1010W | 220V - 1004W | 240V - 1000W | 277V - 995W\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003ePower Factor\u003c\/strong\u003e: 120V - 0.99 | 208V - 0.99 | 220V - 0.98 | 240V - 0.98 | 277V - 0.98\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDaisy Chain\u003c\/strong\u003e: 1 pc @120V | 2 pcs @208V | 2 pcs @220V | 3 pcs @240V | 3 pcs @277V\u003c\/p\u003e\n\u003ch3\u003eInterconnect Cables and Power Cords\u003c\/h3\u003e\n\u003cp\u003eAdditional components can be ordered separately since quantities will depend on the total number of lights and selected configurations.\u003c\/p\u003e\n\u003cp\u003eNote also that the lights connect together without interconnecting cables. The interconnecting cables are only needed to create the U where you have 2 rows of lights on a single bench OR if you need a space (up to 4 feet) between under canopy lights.\u003c\/p\u003e\n\u003cp\u003eSee the above chart for limitations on how many lights can be connected on 1 power cable.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOrder your cords and cables below:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/growpros-4-interconnect-cable-for-under-canopy-grow-lights\" rel=\"noopener\" target=\"_blank\"\u003eInterconnect Cables\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/growlightcentral.com\/products\/growpros-power-cord-with-rj-cable\" rel=\"noopener\" target=\"_blank\"\u003ePower Cords\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/growlightcentral.com\/collections\/under-canopy\/products\/power-adapter\" rel=\"noopener\" target=\"_blank\"\u003ePower Adaptors\u003c\/a\u003e (Convert 120V\/240V into 277V Male Plug)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eGrowPros GH1000 Video\u003c\/h3\u003e\n\u003cp\u003e\u003ciframe width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/8CUttOP699k?si=T_z9mG0pnvLao8So\" title=\"YouTube video player\"\u003e\u003c\/iframe\u003e\u003c\/p\u003e","brand":"GrowPros","offers":[{"title":"Default Title","offer_id":50354821824804,"sku":"GPS-GH1000","price":675.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros-GH1000-Greenhouse-Supplemental-Light-1.jpg?v=1753797803"},{"product_id":"scynce-led-raging-kale-ii-led-grow-light","title":"Scynce LED Raging Kale II+ LED Grow Light","description":"\u003ch2\u003eMaximize growth and efficiency with this LED light designed for even distribution and enhanced flowering.\u003c\/h2\u003e\n\u003cp\u003eThe RAGING Kale II+ is a low-profile, high-performance LED grow light \u003cstrong\u003edesigned for indoor and vertical farming. It provides full-spectrum white light with enhanced red capabilities (660nm \u0026amp; 720nm)\u003c\/strong\u003e for boosted flowering and increased photosynthetic efficiency. With an IP66 waterproof rating, it thrives in humid environments, while wireless connectivity allows easy remote management.\u003c\/p\u003e\n\u003cp\u003eDeveloped in collaboration with top botanists, the \u003cstrong\u003eKale II+ \u003c\/strong\u003e\u003cstrong\u003eutilizes patented Conic 120° optics \u003c\/strong\u003eto eliminate hotspots, enhance canopy penetration, and ensure even light distribution. Whether you're focusing on early-stage growth, vegetative development, or maximizing bloom performance, the Kale II+ delivers unparalleled power, efficiency, and control.\u003c\/p\u003e\n\u003ch3\u003eWhat is Conic 120° Optic?\u003c\/h3\u003e\n\u003cp\u003eThe Kale II+ features ScynceLED’s \u003cstrong\u003eConic 120° optic\u003c\/strong\u003e, specifically designed for \u003cstrong\u003evertical racking and low-ceiling grow spaces\u003c\/strong\u003e. This innovative optic \u003cstrong\u003emimics natural sunlight\u003c\/strong\u003e, ensuring light is evenly distributed across the canopy without harsh intensity spikes.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003ePrevents Hotspots \u0026amp; Leaf Burn\u003c\/strong\u003e – Eliminates uneven light distribution, reducing the risk of bleaching or burned leaves.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMaximizes Canopy Coverage\u003c\/strong\u003e – Expands the effective growing area by delivering light uniformly.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEnhances Lower Canopy Growth\u003c\/strong\u003e – Improves light penetration, leading to denser growth beneath the canopy.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg style=\"float: none;\" alt=\"LED grow light with Conic 120° optic ensuring balanced illumination across plants\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/SCYNCELED_LDC_Kush-2.0-768x499.png?v=1741943874\"\u003e\u003c\/div\u003e\n\u003ch3\u003eIs the RAGING Kale II+ Energy-Efficient?\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eAbsolutely.\u003c\/strong\u003e Traditional HPS grow lights operate inefficiently at 1.3–1.7 µmol\/J, while premium DE HPS models max out at 2.1 µmol\/J. The Kale II+ crushes these numbers, \u003cstrong\u003edelivering over 2.33 µmol\/J—giving you more usable plant light per watt while reducing heat output and lowering operational costs. \u003c\/strong\u003eIf efficiency, power, and savings are your priorities, the Kale II+ is your go-to lighting solution.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eAvailable in full-spectrum white with 660nm \u0026amp; 720nm red\u003c\/strong\u003e for advanced growth control\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eLow-profile design\u003c\/strong\u003e ideal for indoor and vertical farming applications\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eIP66 waterproof rating\u003c\/strong\u003e ensures durability in humid and wet environments\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eWireless connectivity\u003c\/strong\u003e for seamless integration and remote control\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePatented optics technology\u003c\/strong\u003e provides uniform light distribution from all angles\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDesigned in collaboration with expert botanists\u003c\/strong\u003e to meet high-performance cultivation demands\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePrevents hot spots and uneven growth\u003c\/strong\u003e by immersing the entire canopy in consistent light\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eScynceLED Raging Kale II+ LED Grow Light\u003c\/li\u003e\n\u003cli\u003ePower Cord\u003c\/li\u003e\n\u003cli\u003eNylon Ratchet Hangers\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/scynceled.com\/wp-content\/uploads\/2024\/10\/SCYNCE-Raging-Kale-II-Spec-Sheet_v5.pdf\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Scynce_RagingKaleV_User-Manual-2.pdf?v=1742303947\"\u003eUser Manual\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Scynce LED","offers":[{"title":"110 (NEMA 5\/15) Clear \/ No","offer_id":50475283972388,"sku":"52730-110","price":314.0,"currency_code":"USD","in_stock":true},{"title":"110 (NEMA 5\/15) Clear \/ Under Canopy Mounting Kit | $20","offer_id":50475378278692,"sku":"52730-110-52818","price":334.0,"currency_code":"USD","in_stock":true},{"title":"220 (NEMA 6\/15) Clear \/ No","offer_id":50475284005156,"sku":"52730-220","price":314.0,"currency_code":"USD","in_stock":true},{"title":"220 (NEMA 6\/15) Clear \/ Under Canopy Mounting Kit | $20","offer_id":50475378311460,"sku":"52730-220-52818","price":334.0,"currency_code":"USD","in_stock":true},{"title":"277 (NEMA 7\/15) Clear \/ No","offer_id":50475284037924,"sku":"52730-277","price":314.0,"currency_code":"USD","in_stock":true},{"title":"277 (NEMA 7\/15) Clear \/ Under Canopy Mounting Kit | $20","offer_id":50475378344228,"sku":"52730-277-52818","price":334.0,"currency_code":"USD","in_stock":true},{"title":"Flying Leads \/ No","offer_id":50475284070692,"sku":"52730-FL","price":314.0,"currency_code":"USD","in_stock":true},{"title":"Flying Leads \/ Under Canopy Mounting Kit | $20","offer_id":50475378376996,"sku":"52730-FL-52818","price":334.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Scynce-LED-Raging-Kale-II-Plus-LED-Grow-Light-1.jpg?v=1753800316"},{"product_id":"grand-master-leds-tarantula-explorer","title":"Grand Master LEDs Tarantula Explorer Ultra","description":"\u003ch2\u003eA high-output LED grow light with customizable spectrum control, advanced optics, and commercial-grade performance, engineered for maximum crop quality and production efficiency.\u003c\/h2\u003e\n\u003cp data-start=\"98\" data-end=\"632\"\u003eThe Grand Master Tarantula Explorer Ultra is designed for growers who want complete spectrum control without sacrificing output. \u003cstrong\u003eFeaturing a powerful 2-channel system capable of producing up to 12 unique spectrum combinations, \u003c\/strong\u003ethis LED grow light allows cultivators to fine-tune light recipes for different cultivars, growth stages, and production goals. Whether you're running commercial flower rooms, vertical racks, low ceiling facilities, or premium grow tents, the Explorer Ultra delivers exceptional flexibility and performance.\u003c\/p\u003e\n\u003cp data-start=\"634\" data-end=\"1124\"\u003eAt \u003cstrong data-start=\"637\" data-end=\"668\"\u003e1,440W with up to 3,744 PPF\u003c\/strong\u003e, the Explorer Ultra is one of the highest output fixtures in its class. The upgraded spectrum delivers enhanced 640nm deep red output for flowering performance and a triple-blue-peak design featuring 437nm and 485nm wavelengths that increase blue content to 50%. Combined with optical lenses for superior uniformity and easier cleaning, this fixture gives professional growers the tools to maximize crop quality while maintaining operational efficiency.\u003c\/p\u003e\n\u003ch3\u003eBoost Efficiency by Mounting the Driver Outside the Tent\u003c\/h3\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003eImprove cooling and reduce clutter by placing the driver remotely using the \u003ca href=\"https:\/\/growlightcentral.com\/products\/grand-master-leds-driver-box-extension\" title=\"Grand Master LEDs Driver Box Extension\"\u003eGrand Master LEDs Driver Box Extension\u003c\/a\u003e. Use one Driver Box Extension (two for dual-driver units) to streamline your setup.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e2-Channels and up to 12 Spectrums\u003c\/li\u003e\n\u003cli\u003eDesigned for Commercial production, vertical racks, low ceilings, and grow tents\u003c\/li\u003e\n\u003cli\u003eLEDESTAR Diodes\u003c\/li\u003e\n\u003cli\u003eFeatures 730nm\u003c\/li\u003e\n\u003cli\u003eIP66 Waterproof\u003c\/li\u003e\n\u003cli\u003eFolding Design for fast and easy installation\u003c\/li\u003e\n\u003cli\u003eManual Knob Dimming\u003c\/li\u003e\n\u003cli\u003eRecommended to be controlled with the Grand Master Controller\u003c\/li\u003e\n\u003cli\u003eMay be compatible with other controllers via the RJ14 port (refer to the respective manufacturer’s manual for compatibility details)\u003c\/li\u003e\n\u003cli\u003e5 Year Warranty\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrand Master LEDs Tarantula Explorer Ultra Grow Light\u003c\/li\u003e\n\u003cli\u003eAccessories\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Grand_Master_Tarantula_Explorer_Ultra_Grow_LED_Light_Manual.pdf\" title=\"Grand Master Tarantula Explorer Ultra Grow LED Light User Manual\"\u003eProduct Manual\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Grand Master LEDs","offers":[{"title":"120V","offer_id":50638442201380,"sku":"","price":1149.0,"currency_code":"USD","in_stock":true},{"title":"240V","offer_id":50638442234148,"sku":"","price":1149.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/grand-master-tarantula-explorer-ultra-1.jpg?v=1780945277"},{"product_id":"faven-chroma-under-canopy-light","title":"Faven Chroma 120W Under Canopy Light with Spectrum Control","description":"\u003ch2\u003eBoosts yields by 20-30% with spectrum control, 2.9 umol\/J efficiency, and far red enhancement for full canopy performance.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eFaven Chroma Under Canopy Light\u003c\/strong\u003e is the most advanced tool yet for growers looking to unlock the full potential of their canopy. Built with \u003cstrong\u003espectrum tunability (R4-R9)\u003c\/strong\u003e and an \u003cstrong\u003eindependent far-red channel\u003c\/strong\u003e, Chroma lets you dial in growth from stretch to finish while boosting yield, quality, and ROI. With up to \u003cstrong\u003e2.9 umol\/J efficacy\u003c\/strong\u003e packed into a compact, waterproof design, it's purpose-built for under-canopy performance and engineered for serious results.\u003c\/p\u003e\n\u003cp\u003eChroma isn't just another bar light. Adjustable spectrum (R4-R9) means you can fine-tune morphology, stacking, and finishing color, while the far-red channel can shave \u003cstrong\u003e5-7 days off flowering cycles\u003c\/strong\u003e. That's not just efficiency - that's profit. Over \u003cstrong\u003e85% of Faven customers report a one-run ROI\u003c\/strong\u003e, thanks to yield bumps of \u003cstrong\u003e20-30%+, fewer smalls, and less plant labor\u003c\/strong\u003e.\u003c\/p\u003e\n\u003ch3\u003eMore Diodes, Smarter Performance: What Makes Chroma a Winner\u003c\/h3\u003e\n\u003cp\u003eMost tunable lights on the market don't actually shut off their diodes - they just dim them down. That means even when a channel is set to \"0%,\" the diodes are still running in the background, wearing out and wasting energy.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe Faven Chroma is different. \u003c\/strong\u003eIt's \u003cstrong\u003epacked with twice as many diodes \u003c\/strong\u003eand designed so they switch completely on or off. When you adjust from R4 to R9, you're not dimming the same diodes - you're lighting up more of them. This gives your plants the full power of the spectrum at every setting, while extending the life of the fixture.\u003c\/p\u003e\n\u003ch3\u003eADD-ONS TO MAKE A MORE SOLID GROW SETUP\u003c\/h3\u003e\n\u003ch4\u003eControllers\u003c\/h4\u003e\n\u003cp\u003e\u003cstrong\u003eThe real power of Chroma is unlocked with CX2 or GrowFlux controls, available as add-ons.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ca title=\"Faven Chroma CX2 Controller\" href=\"https:\/\/growlightcentral.com\/products\/faven-chroma-cx2-controller\"\u003e\u003cstrong\u003eCX2 Controller\u003c\/strong\u003e\u003c\/a\u003e - Perfect for smaller grows or first-time Chroma users. Adjust spectrum, dimming, and far red scheduling with an intuitive interface. Now with a \u003cstrong\u003eclearer R Value breakdown (R4 = 40% red, R8 = 80% red), spectrum performance guidance by range, and a \u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/CX2_Chroma_R_Values.pdf\" title=\"Faven CX2 Chroma R Values\"\u003esuggested production schedule\u003c\/a\u003e\u003c\/strong\u003e so your growers always know what to run and when. One CX2 can run up to 100 to 150 lights, keeping things simple and cost-effective.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGrowFlux Wireless System\u003c\/strong\u003e \u003cstrong\u003e(\u003ca href=\"https:\/\/growlightcentral.com\/products\/hlg-growflux-access-point\" title=\"Growflux Access Point\"\u003eAccess Point\u003c\/a\u003e and \u003ca href=\"https:\/\/growlightcentral.com\/products\/growflux-universal-dimmer\" title=\"Growflux Universal Dimmer\"\u003eUniversal Dimmer\u003c\/a\u003e)\u003c\/strong\u003e - Designed for large-scale facilities. Control hundreds of lights from your phone or computer, set complex recipes, and manage multiple zones with ease. Built-in spectrum tuning and remote scheduling mean you can oversee your facility from anywhere.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eNOTE: A controller is required to run the Chroma since it has 2 drivers and works on a RS485 protocol vs the standard 0-10V\u003c\/p\u003e\n\u003ch4\u003eInterconnect Cables and Power Cords\u003c\/h4\u003e\n\u003cp\u003eAdditional components can be ordered separately since quantities will depend on the total number of lights and selected configurations.\u003c\/p\u003e\n\u003cp\u003eNote also that the lights connect together without interconnecting cables. The interconnecting cables are only needed to create the U where you have 2 rows of lights on a single bench OR if you need a space (up to 4 feet) between under canopy lights.\u003c\/p\u003e\n\u003cp\u003eSee the chart below for limitations on how many lights can be connected to 1 power cable.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eOrder your cords and cables below:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/growlightcentral.com\/products\/under-canopy-lighting-extension-cord\" title=\"Faven Under Canopy Lighting Jumper Cable\"\u003eInterconnect Cables\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/growlightcentral.com\/products\/faven-chroma-power-cord\" title=\"Faven Chroma Power Cord for Under Canopy Lights\"\u003ePower Cords\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch4\u003eMax Daisy-Chain Capacity\u003c\/h4\u003e\n\u003cul\u003e\n\u003cli\u003e1.0 Amps - 10 lights - \u003cstrong\u003e120V\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003e0.5 Amps - 17 lights - \u003cstrong\u003e240V\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003e0.43 Amps - 20 lights - \u003cstrong\u003e277V\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch4\u003eLock Your Lights in Place with Faven Couplings\u003c\/h4\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https:\/\/growlightcentral.com\/products\/faven-coupling\" title=\"Faven Coupling for Under Canopy Lights\"\u003eFaven Couplings\u003c\/a\u003e\u003c\/strong\u003e are designed to keep your under-canopy lights firmly connected. Since Chroma fixtures \u003cstrong\u003econnect directly to each other without cords\u003c\/strong\u003e, any movement of tables can cause those connections to wiggle loose over time. A coupling slides over the joint where two lights meet, \u003cstrong\u003elocking them together so they stay tight and waterproof.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMost growers find they need couplings equal to about 80% of their total light count.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eExample: \u003c\/strong\u003eIf you're installing 24 Chroma lights, plan on ordering around 19 couplers to keep every connection point secure.\u003c\/p\u003e\n\u003ch3\u003eIs Chroma Energy Efficient?\u003c\/h3\u003e\n\u003cp\u003eAbsolutely. \u003cstrong\u003eChroma runs at 2.9 umol\/J\u003c\/strong\u003e, so you're getting top-tier efficiency on par with premium overhead lights. Most tunable under-canopy fixtures waste power by dimming diodes. Chroma solves that with \u003cstrong\u003edouble the diode count\u003c\/strong\u003e, cycling them at full strength for even output and longer lifespan.\u003c\/p\u003e\n\u003ch3\u003eGrow Smarter with Chroma Recipes\u003c\/h3\u003e\n\u003cp\u003eWith Chroma, you can adjust the spectrum as your plants grow. The \u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Growing_with_Faven.pdf\" title=\"Growing With Faven Lightning Guide\"\u003eGrowing with Faven Guide\u003c\/a\u003e shows you exactly how to do it step by step:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eEarly Stage\u003c\/strong\u003e: Use R4-R5 for a few weeks to keep plants compact and well-stacked.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMid Stage\u003c\/strong\u003e: Switch to R6-R7 for balanced growth and canopy strength.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eFinishing\u003c\/strong\u003e: End with R8-R9 plus far-red to boost color, density, and speed up ripening.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eGrowers using these recipes have reported \u003cstrong\u003e5-7 days faster harvests\u003c\/strong\u003e and more uniform quality across their canopy.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eSpectrum Tunability (R4 to R9):\u003c\/strong\u003e Adjust red from 40% to 90% to control stretch, stack, and finish.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eIndependent Far-Red Channel:\u003c\/strong\u003e Run before and after lights-on to accelerate flowering and ripening.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eController Compatibility:\u003c\/strong\u003e Works with CX2, GrowFlux, approved RS485 adapters, and even 0-10V systems.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e120W + 15W Far Red LED:\u003c\/strong\u003e Dimmable with internal driver.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eWaterproof \u0026amp; Certified:\u003c\/strong\u003e IP66 rating, ETL, DLC, CE, and FCC certified.\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eDurable Build:\u003c\/strong\u003e 46\" L x 2.9\" W x 3.3\" H, 5-year warranty.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFaven Chroma Under Canopy Light\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca title=\"Faven Chroma Under Canopy Light Spec Sheet\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/faven-chroma-under-canopy-lights-specs-sheet.pdf?v=1758110068\"\u003eChroma Spec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca title=\"Faven CX2 Controller Spec Sheet\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/Faven_CX2_Controller.pdf?v=1758272092\"\u003eFaven CX2 Controller Spec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Faven Lighting","offers":[{"title":"Default Title","offer_id":51089393615140,"sku":"10-010602-485","price":199.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/faven-chroma-under-canopy-light-1.jpg?v=1758136486"},{"product_id":"growpros-ultrapro-960-led-grow-light","title":"GrowPros UltraPro 960 LED Grow Light - 960\/830\/660 Wattage Adjustable","description":"\u003ch2\u003eDelivers full-spectrum Far Red light with up to 3.23 µmol\/J efficiency and three power modes for efficient vertical or hydroponic grows.\u003c\/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eGrowPros ULTRAPRO 960 LED Grow Light\u003c\/strong\u003e is engineered for \u003cstrong\u003ehigh-performance hydroponic and vertical grow environments\u003c\/strong\u003e. Featuring a \u003cstrong\u003eslim, foldable design\u003c\/strong\u003e and \u003cstrong\u003efull-spectrum light with Far Red\u003c\/strong\u003e, it supports vigorous plant development from seedling to harvest. With \u003cstrong\u003ethree adjustable wattage modes: 960W, 830W, and 660W, \u003c\/strong\u003eyou get precise control over output, efficiency, and energy use, making it one of the most versatile grow light LEDs in its class. Certified by ETL, DLC, CE, and FCC, and backed by a \u003cstrong\u003e5-year limited warranty\u003c\/strong\u003e, the UltraPro delivers professional-grade results growers can depend on.\u003c\/p\u003e\n\u003ch3\u003ePower Settings \u0026amp; Dimming\u003c\/h3\u003e\n\u003cp\u003eThis grow LED light includes \u003cstrong\u003eGovernor Presets\u003c\/strong\u003e (\u003cstrong\u003e960W, 830W, 660W\u003c\/strong\u003e) for facilities with limited power capacity. These presets let you easily adjust to available power in your grow room and act as a safety mechanism if needed. The presets also make them help in maximizing utility rebates. The UltrPro supports \u003cstrong\u003esmooth dimming from about 1% to 100%\u003c\/strong\u003e, that is 0W to 960W but when a governor preset in engaged then the max power is limited to that setting.\u003c\/p\u003e\n\u003ch3\u003eIs the GrowPros ULTRAPRO 960 energy-efficient?\u003c\/h3\u003e\n\u003cp\u003eAbsolutely. The UltraPro reaches up to \u003cstrong\u003e3.23 µmol\/J\u003c\/strong\u003e, nearly twice as efficient as a standard 1000W HPS system (~1.7 µmol\/J). The result is more usable light per watt and lower energy costs without sacrificing canopy intensity. Its \u003cstrong\u003epassive cooling system\u003c\/strong\u003e minimizes heat output and maintenance, while \u003cstrong\u003eFar Red supplementation\u003c\/strong\u003e boosts photosynthesis and flowering speed, making it one of the most productive and efficient grow lights on the market today.\u003c\/p\u003e\n\u003ch3 style=\"text-align: center;\"\u003eDimmable Spectrum\u003c\/h3\u003e\n\u003cstyle\u003e\n.process-containerultrapro {\n  width: 100%;\n  height: 16px;\n  background-color: #333333; \/* dark background track *\/\n  position: relative;\n  cursor: pointer;\n  border-radius: 2px;\n}\n\n.process-bar {\n  height: 100%;\n  background-color: #999999; \/* lighter fill *\/\n  width: 0;\n  position: absolute;\n  top: 0;\n  left: 0;\n  border-radius: 2px;\n}\n\n.process-thumb {\n  width: 20px;\n  height: 20px;\n  background-color: #046e82; \/* teal knob *\/\n  border: 1px solid #000;\n  border-radius: 2px;\n  position: absolute;\n  top: 50%;\n  left: 0;\n  transform: translate(-50%, -50%);\n  cursor: pointer;\n}\n\n\/* Labels on the bar edges *\/\n.bar-label {\n  position: absolute;\n  top: 50%;\n  transform: translateY(-50%);\n  color: #000000;\n  font-size: 13px;\n  font-weight: 600;\n  pointer-events: none;\n}\n\n.bar-label.left {\n  left: 0;               \/* Start of the bar *\/\n  transform: translateY(-50%) translateX(-100%); \/* shift slightly outside *\/\n}\n\n.bar-label.right {\n  right: 0;              \/* End of the bar *\/\n  transform: translateY(-50%) translateX(100%);  \/* shift slightly outside *\/\n}\n\u003c\/style\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-44dd680 e-con-full e-flex e-con e-child\" data-id=\"44dd680\" data-element_type=\"container\" data-settings=\"{'background_background':'classic'}\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-75d92e3 elementor-widget elementor-widget-html\" data-id=\"75d92e3\" data-element_type=\"widget\" data-widget_type=\"html.default\"\u003e\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"\u003e\u003c\/script\u003e \u003cscript src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"\u003e\u003c\/script\u003e\n\u003cdiv class=\"chart-containerultrapro\"\u003e\u003ccanvas id=\"myChart_ultrapro\" style=\"display: block; box-sizing: border-box; height: 340px; width: 680px;\" width=\"612\" height=\"306\"\u003e\u003c\/canvas\u003e\u003c\/div\u003e\n\u003cscript\u003e\n\t\tvar chartultrapro = jQuery.noConflict(true);\n        chartultrapro(document).ready(function(chartultrapro) {\n            \/\/ Chart.js Setup\n            const ctx = chartultrapro('#myChart_ultrapro')[0].getContext('2d');\n            let chart;\n            const dataset1ultrapro = {\n\t\t\tlabel: 'Channel 1',\n\t\t\tlabels: ['','', '360', '', '', '', '', '395', '', '', '', '', '', '450', '', '', '', '', '', '500', '', '', '', '', '', '', '', '', '', '600', '', '', '', '', '660', '', '', '', '', '', '', '730', '', '', '', '', '', '780', '', '', '', '', '', ''],\n\t\t\tdata: [0, 0, 0, 0, 0, 0, 0.2, 0.4, 1, 3, 10, 30, 40, 75, 30, 12, 6, 6, 10, 16, 21.5, 24, 25.4, 26.4, 27, 27.6, 27, 26, 24.6, 23, 21, 20, 24, 45, 99, 48, 18, 8, 4, 3, 4, 5, 6, 6, 4, 2, 1, 0.2, 0, 0, 0, 0, 0, 0, 0 ]\n\t\t};\n\n\t\tconst colors = ['#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#ae00ef', '#65009f', '#40009f', '#1e149e', '#103e93', '#265aa8', '#3173b8', '#3698d5', '#45bee3', '#6fc4be', '#6ebf80', '#69b72d', '#69b72d', '#6bb72d', '#79bc28', '#97c626', '#a8cc2b', '#c8d933', '#d8e036', '#f1eb36', '#f4c41c', '#f19518', '#ed761b', '#e95619', '#e62718', '#e11713', '#ce141b', '#b91c22', '#a91f24', '#951e23', '#851123', '#7f191e', '#7d191d', '#76161b', '#6a1216', '#631014', '#5f0e12', '#51050a', '#440104', '#380103', '#230304', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714', '#221714'];\n    \n            let scale1 = 0;\n\n            function createGradient(ctx, chartArea, colors) {\n                const gradient = ctx.createLinearGradient(chartArea.left, 0, chartArea.right, 1);\n                colors.forEach((color, index) =\u003e {\n                    gradient.addColorStop(index \/ (colors.length - 1), color);\n                });\n                return gradient;\n            }\n\n            function createChart(labels, combinedData) {\n                if (chart) {\n                    chart.destroy();\n                }\n\n                chart = new Chart(ctx, {\n                    type: 'line',\n                    data: {\n                        labels: labels,\n                        datasets: [\n                            {\n                                type: 'line',\n                                label: 'PPF',\n                                data: combinedData,\n                                borderWidth: 0.1,\n                                backgroundColor: function(context) {\n                                    const chart = context.chart;\n                                    const {ctx, chartArea} = chart;\n\n                                    if (!chartArea) {\n                                        return null;\n                                    }\n\n                                    return createGradient(ctx, chartArea, colors);\n                                },\n                                borderColor: function(context) {\n                                    const chart = context.chart;\n                                    const {ctx, chartArea} = chart;\n\n                                    if (!chartArea) {\n                                        return null;\n                                    }\n\n                                    return createGradient(ctx, chartArea, colors);\n                                },\n                                fill: true,\n                                tension: 0.4 \/\/ Smoothing effect\n                            },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'line',\n\t\t\t\t\t\t\t\tlabel: 'Outline',\n\t\t\t\t\t\t\t\tdata: combinedData,\n\t\t\t\t\t\t\t\tborderWidth: 2,\n\t\t\t\t\t\t\t\tbackgroundColor: 'transparent',\n\t\t\t\t\t\t\t\tborderColor: '#ffffff', \/\/ Outline color\n\t\t\t\t\t\t\t\tfill: false,\n\t\t\t\t\t\t\t\ttension: 0.4\n\t\t\t\t\t\t\t}\n                        ]\n                    },\n                    options: {\n                        responsive: true,\n                        maintainAspectRatio: true,\n                        scales: {\n                            x: {\n                                stacked: true,\n                                grid: {\n                                    display: false \/\/ Hide y-axis grid lines\n                                },\n                                ticks: {\n                                    color: '#000000',\n                                    autoSkip: false, \/\/ Prevent auto-skipping of labels\n                                    maxRotation: 0, \/\/ Prevent label rotation\n                                    minRotation: 0, \/\/ Prevent label rotation\n                                    maxTicksLimit: labels.length \/\/ Ensure all labels are shown\n                                },\n                                border: {\n\t\t\t\t\t\t\t\t\twidth:2,\n                                    color: '#000000',  \/\/ Change x-axis line color\n                                }\n                            },\n                            y: {\n                                beginAtZero: true,\n                                max: 100, \/\/ Set a static max value for y-axis to accommodate added values\n                                grid: {\n                                    color: '#444444',\n                                },\n                                border: {\n\t\t\t\t\t\t\t\t\twidth:2,\n                                    color: '#000000',  \/\/ Change x-axis line color\n                                },\n                                ticks: {\n                                    color: '#000000',\n                                    callback: function(value) {\n                                        return value % 20 === 0 ? value + '%' : ''; \/\/ Custom label formatting\n                                    }\n                                }\n                            }\n                        },\n                        events: null,\n                        radius: 0,\n                        plugins: {\n                            filler: {propagate: true}, \/\/ Enable filler\n                            legend: { display: false },\n                        },\n                        animation: {\n                            duration: 0 \/\/ Animation duration for smoother updates\n                        }\n                    }\n                });\n            }\n\t\t\t\n            function updateChart() {\n                const scaledData1 = dataset1ultrapro.data.map(value =\u003e value * scale1);\n                const combinedData = scaledData1;\n                \n                if (chart) {\n                    chart.data.datasets[0].data = combinedData;\n                \tchart.data.datasets[1].data = combinedData; \/\/ Update outline dataset\n                    chart.options.animation.duration = 300;\n                    chart.update();\n                }\n            }\n\n            function createProcessBar(containerId, valueId) {\n                const $container = chartultrapro(`#${containerId}`);\n                const $thumb = $container.find('.process-thumb');\n                const $bar = $container.find('.process-bar');\n                const $currentValue = chartultrapro(`#${valueId}`);\n                let dragging = false;\n                let containerOffset = $container.offset().left;\n                let containerWidth = $container.width();\n                let currentW = 100; \n\t\t\t\t\n                \/\/ Update container metrics on resize\n                function updateContainerMetrics() {\n                    containerOffset = $container.offset().left;\n                    containerWidth = $container.width();\n                    setBarByWattage(currentW);\n                }\n\n                chartultrapro(window).on('resize', updateContainerMetrics);\n\n                \/\/ Initialize container metrics\n                updateContainerMetrics();\n\n                \/\/ Function to set the bar and thumb position based on wattage\n                function setBarByWattage(wattage) {\n                    currentW = Math.min(Math.max(wattage, 0), 100);\n                    const newLeft = (currentW \/ 100) * containerWidth;\n\n                    \/\/ Update bar width\n                    $bar.css('width', `${(currentW \/ 100) * 100}%`);\n                    \/\/ Update thumb position using transform for better performance\n                    $thumb.css('transform', `translate(-50%, -50%) translateX(${newLeft}px)`);\n                    \/\/ Update displayed value\n                    $currentValue.text(`${currentW.toFixed(0)}%`);\n                    \/\/ Update the corresponding scale variable and chart\n                    if (containerId === 'process-container1ultrapro') {\n                        scale1 = currentW \/ 100;\n                    }\n                    updateChart();\n                }\n\n                \/\/ Function to handle the dragging logic\n                function handleDrag(pageX) {\n                    const newLeft = pageX - containerOffset;\n                    const clampedLeft = Math.min(Math.max(newLeft, 0), containerWidth);\n                    const newWattage = (clampedLeft \/ containerWidth) * 100;\n                    setBarByWattage(newWattage);\n                }\n\n                \/\/ Throttle dragging using requestAnimationFrame\n                let rafId = null;\n\n                function onDrag(pageX) {\n                    if (rafId) return; \/\/ If a frame is already requested, do nothing\n                    rafId = requestAnimationFrame(() =\u003e {\n                        handleDrag(pageX);\n                        rafId = null;\n                    });\n                }\n\n                \/\/ Mouse events\n                $thumb.on('mousedown', function(e) {\n                    e.preventDefault();\n                    dragging = true;\n                });\n\n                chartultrapro(document).on('mousemove', function(e) {\n                    if (dragging) {\n                        onDrag(e.pageX);\n                    }\n                });\n\n                chartultrapro(document).on('mouseup', function() {\n                    dragging = false;\n                });\n\n                \/\/ Touch events\n                $thumb.on('touchstart', function(e) {\n                    e.preventDefault();\n                    dragging = true;\n                });\n\n                chartultrapro(document).on('touchmove', function(e) {\n                    if (dragging) {\n                        const touch = e.originalEvent.touches[0];\n                        onDrag(touch.pageX);\n                    }\n                });\n\n                chartultrapro(document).on('touchend touchcancel', function() {\n                    dragging = false;\n                });\n\n                \/\/ Click on the process container to set the thumb position\n                $container.on('click', function(e) {\n                    const pageX = e.pageX;\n                    onDrag(pageX);\n                });\n\n                setBarByWattage(currentW);\n            }\n\n            \/\/ Initialize the chart\n            function initializeChart() {\n                const initialCombinedData = dataset1ultrapro.data.map(value =\u003e value * scale1);\n                createChart(dataset1ultrapro.labels, initialCombinedData);\n            }\n\n            \/\/ Initial load\n            initializeChart();\n\n            \/\/ Create Process Bars for Channel 1 and Channel 2\n            createProcessBar('process-container1ultrapro', 'global-value1ultrapro');\n            createProcessBar('process-container2ultrapro', 'global-value2ultrapro');\n\n            \/\/ Debounced Resize Handler to Redraw Chart on Screen Size Change\n            let resizeTimeout;\n            chartultrapro(window).on('resize', function(){\n\n                clearTimeout(resizeTimeout);\n                resizeTimeout = setTimeout(function(){\n                    if(chart){\n                        chart.resize();\n                    }\n                    \/\/ Update container metrics for process bars\n                    chartultrapro('.process-containerultrapro').each(function(){\n                        const containerId = chartultrapro(this).attr('id');\n                        const valueId = chartultrapro(this).siblings('.slider-paratitle').find('.current-value').attr('id');\n                        \/\/ The process bars are already handling their own resize events\n                        \/\/ No additional action is needed here\n                    });\n                }, 200); \/\/ Adjust the timeout as needed\n            });\n        });\n    \u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-7500d28 content-slider e-con-full e-flex e-con e-child\" data-id=\"7500d28\" data-element_type=\"container\" data-settings=\"{'background_background':'classic'}\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-3b6c947 elementor-widget elementor-widget-heading\" data-id=\"3b6c947\" data-element_type=\"widget\" data-widget_type=\"heading.default\"\u003e\n\u003ch3 style=\"text-align: center;\" class=\"elementor-heading-title elementor-size-default\"\u003eSlide the Bar to See How the Spectrum Changes\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"elementor-element elementor-element-5505263 elementor-widget elementor-widget-html\" data-id=\"5505263\" data-element_type=\"widget\" data-widget_type=\"html.default\"\u003e\n\u003cdiv\u003e\n\u003c!-- Channel 1 Control Panel --\u003e\n\u003cdiv class=\"control-panelultrapro\"\u003e\n\u003cdiv class=\"process-containerultrapro\" id=\"process-container1ultrapro\"\u003e\n\u003cdiv class=\"process-bar\" style=\"width: 100%;\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"process-thumb\" style=\"transform: translate(-50%, -50%) translateX(237.778px);\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n.slider-paratitle {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  margin-top: 6px;\n  font-weight: 600;\n  color: #000000;\n  font-size: 13px;\n}\n\u003c\/style\u003e\n\u003cdiv class=\"e-con-inner\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-7500d28 content-slider e-con-full e-flex e-con e-child\" data-id=\"7500d28\" data-element_type=\"container\" data-settings=\"{'background_background':'classic'}\"\u003e\n\u003cdiv class=\"elementor-element elementor-element-5505263 elementor-widget elementor-widget-html\" data-id=\"5505263\" data-element_type=\"widget\" data-widget_type=\"html.default\"\u003e\n\u003cdiv id=\"control-panelsultrapro\"\u003e\n\u003cdiv class=\"control-panelultrapro\"\u003e\n\u003cdiv class=\"slider-paratitle\"\u003e\n\u003cspan class=\"value\"\u003e0%\u003c\/span\u003e \u003cspan class=\"current-value\" id=\"global-value1ultrapro\"\u003e100%\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExperience optimal plant growth with our full spectrum, including Far Red lighting\u003c\/li\u003e\n\u003cli\u003ePerfect for vertical cultivation, our ultra-slim design maximizes space efficiency\u003c\/li\u003e\n\u003cli\u003eDesigned for commercial use, supporting 208-277V power outlets for robust performance\u003c\/li\u003e\n\u003cli\u003eEnjoy hassle-free setup with our foldable design-simply open and use, no assembly required\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePower Options:\u003c\/strong\u003e 960W \/ 830W \/ 660W adjustable\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePPF Output:\u003c\/strong\u003e 2938 µmol\/s (960W) | 2606 µmol\/s (830W) | 2132 µmol\/s (660W)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eEfficiency (PPE):\u003c\/strong\u003e 3.06 µmol\/J (960W) | 3.14 µmol\/J (830W) | 3.23 µmol\/J (660W)\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eMounting:\u003c\/strong\u003e Overhead or vertical\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eAutomation:\u003c\/strong\u003e TrolMaster Hydro-X compatible (LMA-14 adapter)\u003cstrong\u003e\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eRebate Eligible:\u003c\/strong\u003e Qualifies for many utility rebate programs\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrowPros ULTRAPRO 960 LED Grow Light\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca title=\"GrowPros ULTRAPRO 960 LED Grow Light Spec Sheet\" href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/GrowPros_ULTRAPro_Spec_Sheet.pdf?v=1762552749\"\u003eSpec Sheet\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"GrowPros","offers":[{"title":"Default Title","offer_id":51284020396324,"sku":"GPS-ULTRA-960-PRO","price":649.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/growpros-ultrapro-960-led-grow-light-1.jpg?v=1762580958"},{"product_id":"grand-master-tarantula-borg-evolution-1600","title":"Grand Master LEDs Tarantula Borg Evolution 1600 LED Grow Light","description":"\u003ch2\u003e4 independently controllable channels spanning 1,800K to 18,000K, giving you precise spectrum manipulation throughout the entire lifecycle.\u003c\/h2\u003e\n\u003cp\u003eThe Tarantula Borg EVO 1600 \u003cstrong\u003eoffers  4 independent channels spanning 1,800K to 18,000K, \u003c\/strong\u003egiving you complete control over your spectral output. This is a commercial-grade fixture built for growers who understand that spectrum manipulation drives quality, yield, and finishing time.\u003c\/p\u003e\n\u003cp\u003eThe 10 bar design \u003cstrong\u003edelivers uniform intensity across 4' x 4' or 5' x 5' canopies\u003c\/strong\u003e, the IP66 waterproof rating protects your investment in high humidity flower rooms, and the 60 preset spectrums let you dial in proven recipes for everything from seedlings to late flower without guesswork.\u003c\/p\u003e\n\u003cp\u003eWhen you need spectrum precision for commercial production, vertical racks, or medical gardens where cannabinoid profiles matter, this is the grow light that gives you control.\u003c\/p\u003e\n\u003ch3\u003eIs the Tarantula Borg EVO 1600 Energy Efficient?\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eYes. The verified 2.71 µmol\/J system efficacy when running all 4 channels at 100%\u003c\/strong\u003e puts this fixture in the top tier of commercial grow lights, and the individual channel efficiencies tell an even better story.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe red channel achieves 3.21 µmol\/J, cool white delivers 3.0 µmol\/J\u003c\/strong\u003e, and warm white runs at 2.62 µmol\/J. Standard 1000W DE HPS fixtures deliver 1.7 µmol\/J, which means you get 59% more usable plant light per watt with the Tarantula Borg EVO 1600 at full power. \u003c\/p\u003e\n\u003cp\u003eThe real efficiency advantage comes from channel control: during veg, y\u003cstrong\u003eou can run primarily cool white at 3.0 µmol\/J efficiency while keeping other channels off,\u003c\/strong\u003e significantly reducing power consumption compared to full-spectrum fixtures running all wavelengths.\u003c\/p\u003e\n\u003ch3\u003eFeatures\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDesigned for Commercial Production, Vertical Racks, Medical Gardens, 5x5 or 4x4 Tents\u003c\/li\u003e\n\u003cli\u003e10 Bar Design\u003c\/li\u003e\n\u003cli\u003e1,800K to 18,000K Color Range\u003c\/li\u003e\n\u003cli\u003e4 Channels\u003c\/li\u003e\n\u003cli\u003eIP66 Waterproof\u003c\/li\u003e\n\u003cli\u003eFolding Design for fast and easy installation\u003c\/li\u003e\n\u003cli\u003eRemovable plastic covers (convenient for diode protection and cleaning)\u003c\/li\u003e\n\u003cli\u003ePotentiometer for each channel for Manual control\u003c\/li\u003e\n\u003cli\u003eRJ45 Port\u003c\/li\u003e\n\u003cli\u003e60 Preset Spectrums\u003c\/li\u003e\n\u003cli\u003eIndividual Fahold Drivers for Warranty convenience\u003c\/li\u003e\n\u003cli\u003e5 Year Warranty\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eWhat's Included?\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGrand Master Tarantula Borg Evolution 1600 LED Grow Light\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eDownload Resources\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/TARANTULA_BORG_EVOLUTION_1600_20260114_v2.pdf?v=1772706322\" title=\"Grand Master LEDs Tarantula Borg Evolution 1600 LED Grow Light Manual\"\u003eProduct Manual\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Grand Master LEDs","offers":[{"title":"120V","offer_id":52103273808164,"sku":null,"price":1300.0,"currency_code":"USD","in_stock":true},{"title":"240V","offer_id":52103273840932,"sku":null,"price":1300.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/1428\/files\/grand-master-tarantula-borg-evolution-1600-1.jpg?v=1772711276"}],"url":"https:\/\/growlightcentral.com\/collections\/adjustable-spectrum-grow-lights\/brand_faven-lighting.oembed","provider":"Grow Light Central","version":"1.0","type":"link"}