<p>The Lauxes NeXT Generation NXT21 Linear Grate is perfect for the bathroom or outdoors. It is triple anodised aluminium guaranteed against rust for life with a 25 year finish guarantee. With only a 21mm depth it is the lowest profile drain in the market - perfect for shallow areas or to install in line with tiles.</p>
<p>We can custom produce any length with any outlet position, or you can request a length and simply assemble and install on site.</p>
<h2> </h2>
<p><strong><span style="color: #3598db;">Normally RRP is $390 per metre - Now only $14.95 + $270 (ie. $0.27 per mm)</span> </strong>plus any customisation options. See below</p>
<h4><strong>Long-lasting Anodised Aluminium Linear Indoor/Outdoor Grates</strong></h4>
<p>Crafted from triple anodised aluminium and designed with precision engineering, the NeXT Generation Indoor/Outdoor Grate is built to last. Its sleek and modern design adds a touch of elegance to any bathroom décor, patio or pool area. </p>
<h4><strong>Lifetime Warranty and Protection</strong></h4>
<p>Lauxes grates are UV stable and are made of triple anodised aluminium. Through the process of anodisation, aluminum is reinforced by the addition of an oxide layer that is nearly as tough as diamond. This oxide layer naturally resists corrosion, assuring by a <strong>25-year warranty against discoloration,</strong> as well as a <strong>Lifetime Rustproof Warranty</strong>.</p>
<h4><strong>Custom production or simple DIY onsite assembly</strong></h4>
<p>We can fully customise and assemble for you or can provide all the parts for your installer to assemble (see options). Or if you want full flexibility you can order a sufficient length and simply cut the tray and/or drill the outlet hole on site. There is <strong>no welding required</strong> – simply assemble with adhesive silicone.</p>
<p>1. Choose your length of drain – we will cut and supply the exact length (drain length includes the endcaps)</p>
<p>2. Choose whether you wish us to pre-install the end caps on the tray (we use high quality adhesive silicone) or whether the installer will do this (provides flexibility if you may wish to cut tray shorter)</p>
<p>3. Choose whether you wish us to drill the outlet hole and glue on, or simply provide the outlet for the installer to assemble (provides flexibility for installer to choose outlet position)</p>
<p>Need corners or have any special requests? 90 degree corners are available, and we can cut any angle. Contact our service team.</p>
<h4><strong>Modern and Customisable Drains for your Bathrooms and Outdoor Areas</strong></h4>
<ul>
<li><span style="color: #0000ff;"><strong>MODERN DESIGN</strong></span> - Adds a modern touch to your space</li>
</ul>
<ul>
<li><span style="color: #0000ff;"><strong>DURABLE</strong></span> - Triple anodised aluminium with UV, rust, and finish protection</li>
</ul>
<ul>
<li><strong><span style="color: #0000ff;">CUSTOM MADE</span> </strong>- If desired, we can produce to any mm length, and any outlet position/size</li>
</ul>
<ul>
<li><span style="color: #0000ff;"><strong>PREFER TO DIY?</strong></span> - We can provide all components and the installer can cut and assemble on site</li>
</ul>
<ul>
<li><strong><span style="color: #0000ff;">EASY TO INSTALL</span> </strong>- Can be adhered direct to the surface – no bedding required</li>
</ul>
<ul>
<li><strong><span style="color: #0000ff;">EASY MAINTENANCE</span> </strong>- It is simple to remove the insert to clean your tray</li>
</ul>
<ul>
<li><strong><span style="color: #0000ff;">SATISFACTION GUARANTEED</span> </strong>- Backed by a Lifetime Rustproof Warranty</li>
</ul>
<h4>Specifications</h4>
<ul>
<li><strong>Material: </strong>Triple anodised UV protect aluminium</li>
<li><strong>Finish: </strong>Matte Gold</li>
<li><strong>Width: </strong>100mm</li>
<li><strong>Depth: </strong>21mm</li>
<li><strong>Warranty: </strong>Lifetime Rustproof Warranty and Discoloration Warranty</li>
<li><em>End caps included</em></li>
</ul>
<p> </p>
<h4><strong> Cleaning & Maintenance</strong></h4>
<p> As with any finished building product, your Lauxes anodised aluminium floor grate requires cleaning to function at its best. With our easy roll out system, customers can simply pull out the top tray for accessible and frequent cleaning. To hold their high-end value, maximise longevity and maintain their warranty, all anodised aluminium grates must be washed down on a regular basis (at least once every three months and more often some instances). Soot and grime often contain moisture and salts which will adversely affect the anodised finish if left on for extended periods of time. No abrasive or harsh chemicals, such as acidic or alkaline products must be used on or near the grates. Always refer to cleaning product labels prior to use, to avoid damage to the grates and other accessories. Look out for labels that state ‘not to be used on aluminium’ specifically.</p>
<h4><strong>Dimensions</strong></h4>
<p><img src="/content/bathroom/drains/lauxes-nxt21-aluminium-shower-grate-dimensions.jpg
" alt="Lauxes NeXT Generation NXT26 Aluminium Shower Grate Dimensions" width="650" height="650" /></p>
<h4><strong>Installation</strong></h4>
<p>Click the icon below to download the installation manual PDF of this product.</p>
<p><a title="Lauxes NXT21 Shower Grate Installation Guide" href="/content/bathroom/drains/Cutting-and-Installing-Instructions-for-all-grates_Lauxes-Grates.pdf" target="_blank" rel="noopener"><img src="/content/bathroom/drains/instruction-manual-blue_1.png" alt="NXT21 Installation guide" width="100" height="100" /></a></p>
<h4><strong>Custom production or simple DIY onsite assembly</strong></h4>
<p>We can fully customise and assemble for you or can provide all the parts for your installer to assemble (see options). Or if you want full flexibility yo can order a sufficient length and simply cut the tray and/or drill the outlet hole on site. There is <strong>no welding required</strong> – simply assemble with adhesive silicone.</p>
<p>1. Choose your length of drain – we will cut and supply the exact length (drain length includes the endcaps)</p>
<p>2. Choose whether you wish us to pre-install the end caps on the tray (we use high quality adhesive silicone) or whether the installer will do this (provides flexibility if you may wish to cut tray shorter)</p>
<p>3. Choose whether you wish us to drill the outlet hole and glue on, or simply provide the outlet for the installer to assemble (provides flexibility for installer to choose outlet position)</p>
[{"id":8034,"title":"Serrano-promo-icon-despatched-in-3-days","icon-promo":"<div class=\"se-component se-image-container __se__float-none\">\n \n <figure>\n\n <img src=\"https:\/\/store-vf7rovdake.mybigcommerce.com\/content\/Product-Assets\/Icon Promos\/Serrano-promo-icon-despatched-in-3-days.png\" alt=\"\" data-rotate=\"\" data-proportion=\"true\" data-rotatex=\"\" data-rotatey=\"\" width=\"\" height=\"\" data-size=\",\" data-align=\"none\" data-percentage=\"auto,auto\" data-index=\"0\" data-file-name=\"1_day_despatch.png\" data-file-size=\"0\" data-origin=\",\" style=\"\">\n\n <\/figure>\n<\/div>"}]
[{"id":8042,"title":"dispatch_csg_custom","dispatch-time":"<span class=\"\"title\"\">Typically produced\/dispatched in 3 business days<\/span> <span class=\"\"text\"\">Jump-the-Queue option available for urgent orders. Enter your postcode to see shipping costs.<\/span>"}]
[{"id":8199,"title":"Lifetime-Rustproof -Warranty-Lauxes","warranty":"<h4><strong>Lifetime Rustproof Warranty<\/strong><\/h4>\r\n<p>Lauxes grates are carefully designed and manufactured to the highest standard with meticulous attention to detail. It is because of this care we stand behind your recently purchased unique, cost effective and rust proof product. Damages arising from improper\/insufficient\/negligent care or installation not in accordance with AS\/NZS 3500.2 or the manufacturers specifications will void the product warranty. If at any time the product itself should develop any defect, Lauxes Grates agree to correct the defect(s) without charge to the registered purchaser\/original owner. This guarantee does not provide coverage of repairs necessitated by normal wear, misuse, accidental damage or as a result from poor cleaning.<\/p>\r\n\r\n<h4><strong>Discoloration Warranty<\/strong><\/h4>\r\n<p>All Lauxes floor grates are 100% UV Stabilised, meaning they are suitable for both indoor and outdoor applications. A minimum 25-year guarantee of no\r\nfading and discoloration* is presented on all Lauxes Grates products. Colour changes arising from improper\/insufficient\/negligence care\r\nor installation not in accordance with AS\/NZS 3500.2 or manufacturers specifications will void the product warranty.<\/p>\r\n<p>*Lauxes floor grates may slightly vary in colours due to environmental factors during manufacturing processes.<\/p>"}]
<style class="config-engine-styles"> :root { --primary: #2563eb; --text: #111827; --border: #e5e7eb; --bg-light: #f8fafc; } @keyframes bundleSpinLoader { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .bundle-loading-modal { display: none; position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: rgba(0,0,0,0.7); z-index: 999999; justify-content: center; align-items: center; flex-direction: column; } .bundle-loading-content { background: white; padding: 30px; border-radius: 8px; text-align: center; max-width: 400px; width: 90%; box-shadow: 0 10px 25px rgba(0,0,0,0.2); } .bundle-spinner { border: 4px solid #f3f3f3; border-top: 4px solid var(--primary); border-radius: 50%; width: 40px; height: 40px; animation: bundleSpinLoader 1s linear infinite; margin: 0 auto 15px auto; } .productView-options, .productView-info { display: none !important; } .quote-card { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; width: 100%; color: var(--text); margin: 0 auto; background: transparent; box-shadow: none; border: none; } .bundle-group-container { background: #fff; border: 1px solid var(--border); border-radius: 12px; margin-bottom: 20px; box-shadow: 0 2px 8px rgba(0,0,0,0.04); } .group-instance-header { padding: 20px; font-size: 1.1rem; font-weight: 700; color: var(--text); display: flex; justify-content: space-between; align-items: center; } .btn-remove-clone { cursor: pointer; color: #9ca3af; background: none; border: none; transition: color 0.2s; padding: 0; margin-left: auto; } .btn-remove-clone:hover { color: #ef4444; } .quote-card input:not([type="radio"]):not([type="checkbox"]), .quote-card select { padding: 10px; border: 1px solid var(--border); border-radius: 6px; font-size: 0.95rem; width: 100%; box-sizing: border-box; background: #fff; } .quote-card input:focus, .quote-card select:focus { outline: 2px solid #93c5fd; border-color: var(--primary); } .quote-card .required-error { border-color: #ef4444 !important; background-color: #fef2f2 !important; box-shadow: 0 0 0 1px #ef4444; } .quote-card .required-error-element { border-color: #ef4444 !important; background-color: #fef2f2 !important; box-shadow: 0 0 0 1px #ef4444; border-radius: 6px; transition: 0.2s; } .quote-card .error-msg { color: #ef4444; font-size: 0.75rem; font-weight: 600; margin-top: 4px; display: none; } .quote-card .required-error + .error-msg { display: block; } .quote-card .swatch-item { display: block; height: 100%; } .quote-card .swatch-visual { border: 2px solid var(--border); padding: 6px; border-radius: 6px; background: white; text-align: center; transition: all 0.2s; height: 100%; display: flex; flex-direction: column; box-sizing: border-box; } .quote-card .swatch-item:hover .swatch-tooltip { display: block !important; } .quote-card .swatch-item input:checked + .swatch-visual { border-color: var(--primary) !important; background-color: #eff6ff !important; } @media print { .config-bundle-wrapper { box-shadow: none; border: 1px solid #eee; } .config-bundle-wrapper .btn-container, .config-bundle-wrapper .bundle-add-to-cart-btn, .config-bundle-wrapper .bundle-download-pdf-btn, .config-bundle-wrapper .bundle-download-text-btn { display: none; } }</style><div class="quote-card config-bundle-wrapper" data-auto-note-prefix="Custom value for"><div id="bundle-loading-modal" class="bundle-loading-modal"><div class="bundle-loading-content"><div class="bundle-spinner"></div><h3 style="margin: 0 0 10px 0; color: #1e293b;">Processing Order...</h3><p style="margin: 0; color: #64748b; font-size: 14px;">Please wait while we add your products to the cart. Do not close or refresh this page.</p></div></div><form class="main-bundle-form"><div class="group-master-wrapper" data-group-id="1774331316328"><div class="bundle-group-container"><div class="group-instance-header"><span style="font-size: 1.1rem; font-weight: bold; color: #111827;">Drains</span></div><div class="element-wrapper" data-element-required="true" style="margin-bottom: 5px;"><div class="item-row bundle-child-form" style="display: flex; flex-wrap: wrap; padding: 15px 15px 0px 15px; align-items: flex-start; border-bottom: 1px solid #f8fafc;"><input type="hidden" name="product_id" value="1202" data-deps="" data-price="14.95"><div style="display: flex; width: 100%; align-items: flex-start; gap: 15px; justify-content: space-between;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><div style="font-size: 1rem; font-weight: 500; color: #111827; padding-top: 10px;">Production Cost</div></div><div class="qty-col" style="display: none;"><input type="hidden" name="qty[]" class="qty-number-input" data-default="1" value="1"></div><div class="price-display" style="width: 80px; flex: 0 0 80px; text-align: right; font-weight: 600; color: #111827; align-self: flex-start; padding-top: 10px;"></div></div><div class="mod-container" style="width: 100%; display: none;"><div class="modifier-row" style="display: none; width: 100%; align-items: flex-start; gap: 15px; padding-top: 15px; margin-top: 15px; border-top: 1px solid #f1f5f9;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><label style="font-size: 1rem; font-weight: 500; color: #111827; text-transform: none; margin: 0; padding-top: 10px; display: block;"> Notes </label></div><div class="input-col" style="flex: 1; min-width: 150px;"><input type="text" placeholder="Enter details..." name="attribute[429]" class="mod-input auto-note-input" data-group-name="Drains" data-overwrite-notes="true" data-do-not-delete="true" style="width: 100%; padding: 10px; border: 1px solid #d1d5db; border-radius: 6px; background: #fff; box-sizing: border-box;"></div><div style="width: 80px; flex: 0 0 80px;"></div></div></div></div></div><div class="element-wrapper" data-element-required="true" style="margin-bottom: 5px;"><div class="item-row bundle-child-form" style="display: flex; flex-wrap: wrap; padding: 15px 15px 0px 15px; align-items: flex-start; border-bottom: 1px solid #f8fafc;"><input type="hidden" name="product_id" value="1457" data-deps="" data-price="0.27"><div style="display: flex; width: 100%; align-items: flex-start; gap: 15px; justify-content: space-between;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><div style="font-size: 1rem; font-weight: 500; color: #111827; padding-top: 10px;">Enter Length ($0.27/mm)<span style="color:#ef4444;">*</span></div></div><div class="qty-col" style="flex: 1; min-width: 150px;"><input type="number" name="qty[]" class="qty-number-input" data-default="0" value="0" min="0" step="1" style="width:100%; padding:10px; border:1px solid #d1d5db; border-radius:6px; box-sizing:border-box; font-size: 0.95rem;"></div><div class="price-display" style="width: 80px; flex: 0 0 80px; text-align: right; font-weight: 600; color: #111827; align-self: flex-start; padding-top: 10px;"></div></div><div class="mod-container" style="width: 100%; display: none;"><div class="modifier-row" style="display: none; width: 100%; align-items: flex-start; gap: 15px; padding-top: 15px; margin-top: 15px; border-top: 1px solid #f1f5f9;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><label style="font-size: 1rem; font-weight: 500; color: #111827; text-transform: none; margin: 0; padding-top: 10px; display: block;"> Notes </label></div><div class="input-col" style="flex: 1; min-width: 150px;"><input type="text" placeholder="Enter details..." name="attribute[428]" class="mod-input auto-note-input" data-group-name="Drains" data-overwrite-notes="true" data-do-not-delete="true" style="width: 100%; padding: 10px; border: 1px solid #d1d5db; border-radius: 6px; background: #fff; box-sizing: border-box;"></div><div style="width: 80px; flex: 0 0 80px;"></div></div></div></div></div><div class="element-wrapper" data-element-required="false" style="margin-bottom: 5px;"><div class="item-row bundle-child-form" data-show-mods="true" style="display: flex; flex-direction: column; padding: 15px 20px; border-bottom: 1px solid #f8fafc;"><div style="display: flex; width: 100%; align-items: flex-start; gap: 15px; justify-content: space-between;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><label style="font-size: 1rem; font-weight: 500; color: #111827; text-transform: none; display: block; margin: 0; padding-top: 10px;">Want us to install end-caps on tray? </label></div><div class="input-col" style="flex: 1; min-width: 150px;"><select name="product_id" class="required-target" style="width: 100%; padding: 10px; border: 1px solid #d1d5db; border-radius: 6px; background: #fff; box-sizing: border-box; font-size: 0.95rem;"><option value="" data-price="">No, the installer will</option><option value="318" data-deps="" data-price="10.00" data-description="" >Yes, +$9.95</option></select><div class="option-description-display" style="font-size: 0.85rem; color: #64748b; margin-top: 4px; display: none;"></div></div><div class="price-display select-price-display" style="width: 80px; flex: 0 0 80px; text-align: right; font-weight: 600; color: #111827; align-self: flex-start; padding-top: 10px;">$0.00</div></div><input type="hidden" name="qty[]" class="qty-number-input" data-default="1" value="1"><div class="mod-wrapper" data-product="318" style="display: none; width: 100%;"><div class="modifier-row" style="display: none; width: 100%; align-items: flex-start; gap: 15px; padding-top: 15px; margin-top: 15px; border-top: 1px solid #f1f5f9;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><label style="font-size: 1rem; font-weight: 500; color: #111827; text-transform: none; display: block; margin: 0; padding-top: 10px;"> Notes </label></div><div class="input-col" style="flex: 1; min-width: 150px;"><input type="text" placeholder="Enter details..." name="attribute[330]" class="mod-input auto-note-input" data-group-name="Drains" data-overwrite-notes="true" style="width: 100%; padding: 10px; border: 1px solid #d1d5db; border-radius: 6px; background: #fff; box-sizing: border-box;"></div><div style="width: 80px; flex: 0 0 80px;"></div></div></div></div></div><div class="element-wrapper" data-element-required="false" style="margin-bottom: 5px;"><div class="item-row bundle-child-form" data-show-mods="false" style="display: flex; flex-direction: column; padding: 15px 20px; border-bottom: 1px solid #f8fafc;"><div style="display: flex; width: 100%; align-items: flex-start; gap: 15px; justify-content: space-between;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><label style="font-size: 1rem; font-weight: 500; color: #111827; text-transform: none; display: block; margin: 0; padding-top: 10px;">Select Outlet Size </label><div class="qty-override-wrapper" style="display: none; width: 100%; margin-top: 8px;"><label style="display: flex; align-items: center; gap: 8px; font-size: 0.9rem; cursor: pointer; color: #334155; font-weight: 500;"><input type="checkbox" class="qty-override-toggle"> I I need multiple Outlets </label></div></div><div class="input-col" style="flex: 1; min-width: 150px;"><select name="product_id" class="required-target" style="width: 100%; padding: 10px; border: 1px solid #d1d5db; border-radius: 6px; background: #fff; box-sizing: border-box; font-size: 0.95rem;"><option value="" data-price="">No, not required</option><option value="1432" data-deps="" data-price="10.95" data-description="Matte Gold" >DN 40 mm</option><option value="1441" data-deps="" data-price="12.95" data-description="Matte Gold" >DN 50 mm</option><option value="1428" data-deps="" data-price="13.95" data-description="Matte Gold" >DN 72 mm</option><option value="1383" data-deps="" data-price="14.95" data-description="Matte Gold" >DN 80 mm</option></select><div class="option-description-display" style="font-size: 0.85rem; color: #64748b; margin-top: 4px; display: none;"></div></div><div class="price-display select-price-display" style="width: 80px; flex: 0 0 80px; text-align: right; font-weight: 600; color: #111827; align-self: flex-start; padding-top: 10px;">$0.00</div></div><div class="qty-row-wrapper" data-base-vis="false" style="display: none; width: 100%; align-items: flex-start; gap: 15px; padding-top: 15px; margin-top: 15px; border-top: 1px solid #f1f5f9; justify-content: space-between;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><label style="font-size: 1rem; font-weight: 500; color: #111827; text-transform: none; margin: 0; padding-top: 10px; display: block;">Qty</label></div><div class="input-col" style="flex: 1; min-width: 150px;"><input type="number" name="qty[]" class="qty-number-input" data-default="1" value="1" min="0" step="1" style="width:100%; padding:10px; border:1px solid #d1d5db; border-radius:6px; box-sizing:border-box; font-size: 0.95rem;"></div><div style="width: 80px; flex: 0 0 80px;"></div></div><div class="mod-wrapper" data-product="1432" style="display: none; width: 100%;"><div class="modifier-row" style="display: none; width: 100%; align-items: flex-start; gap: 15px; padding-top: 15px; margin-top: 15px; border-top: 1px solid #f1f5f9;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><label style="font-size: 1rem; font-weight: 500; color: #111827; text-transform: none; display: block; margin: 0; padding-top: 10px;"> Notes </label></div><div class="input-col" style="flex: 1; min-width: 150px;"><input type="text" placeholder="Enter details..." name="attribute[358]" class="mod-input auto-note-input" data-group-name="Drains" data-overwrite-notes="true" style="width: 100%; padding: 10px; border: 1px solid #d1d5db; border-radius: 6px; background: #fff; box-sizing: border-box;"></div><div style="width: 80px; flex: 0 0 80px;"></div></div></div><div class="mod-wrapper" data-product="1441" style="display: none; width: 100%;"><div class="modifier-row" style="display: none; width: 100%; align-items: flex-start; gap: 15px; padding-top: 15px; margin-top: 15px; border-top: 1px solid #f1f5f9;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><label style="font-size: 1rem; font-weight: 500; color: #111827; text-transform: none; display: block; margin: 0; padding-top: 10px;"> Notes </label></div><div class="input-col" style="flex: 1; min-width: 150px;"><input type="text" placeholder="Enter details..." name="attribute[359]" class="mod-input auto-note-input" data-group-name="Drains" data-overwrite-notes="true" style="width: 100%; padding: 10px; border: 1px solid #d1d5db; border-radius: 6px; background: #fff; box-sizing: border-box;"></div><div style="width: 80px; flex: 0 0 80px;"></div></div></div><div class="mod-wrapper" data-product="1428" style="display: none; width: 100%;"><div class="modifier-row" style="display: none; width: 100%; align-items: flex-start; gap: 15px; padding-top: 15px; margin-top: 15px; border-top: 1px solid #f1f5f9;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><label style="font-size: 1rem; font-weight: 500; color: #111827; text-transform: none; display: block; margin: 0; padding-top: 10px;"> Notes </label></div><div class="input-col" style="flex: 1; min-width: 150px;"><input type="text" placeholder="Enter details..." name="attribute[357]" class="mod-input auto-note-input" data-group-name="Drains" data-overwrite-notes="true" style="width: 100%; padding: 10px; border: 1px solid #d1d5db; border-radius: 6px; background: #fff; box-sizing: border-box;"></div><div style="width: 80px; flex: 0 0 80px;"></div></div></div><div class="mod-wrapper" data-product="1383" style="display: none; width: 100%;"><div class="modifier-row" style="display: none; width: 100%; align-items: flex-start; gap: 15px; padding-top: 15px; margin-top: 15px; border-top: 1px solid #f1f5f9;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><label style="font-size: 1rem; font-weight: 500; color: #111827; text-transform: none; display: block; margin: 0; padding-top: 10px;"> Notes </label></div><div class="input-col" style="flex: 1; min-width: 150px;"><input type="text" placeholder="Enter details..." name="attribute[355]" class="mod-input auto-note-input" data-group-name="Drains" data-overwrite-notes="true" style="width: 100%; padding: 10px; border: 1px solid #d1d5db; border-radius: 6px; background: #fff; box-sizing: border-box;"></div><div style="width: 80px; flex: 0 0 80px;"></div></div></div></div></div><div class="element-wrapper" data-element-required="false" style="margin-bottom: 5px;"><div class="item-row bundle-child-form" data-show-mods="true" style="display: flex; flex-direction: column; padding: 15px 20px; border-bottom: 1px solid #f8fafc;"><div style="display: flex; width: 100%; align-items: flex-start; gap: 15px; justify-content: space-between;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><label style="font-size: 1rem; font-weight: 500; color: #111827; text-transform: none; display: block; margin: 0; padding-top: 10px;">Want us to drill hole and install outlet? </label></div><div class="input-col" style="flex: 1; min-width: 150px;"><select name="product_id" class="required-target" style="width: 100%; padding: 10px; border: 1px solid #d1d5db; border-radius: 6px; background: #fff; box-sizing: border-box; font-size: 0.95rem;"><option value="" data-price="">No, the installer will</option><option value="323" data-deps="" data-price="19.95" data-description="" >Yes, +$19.95</option></select><div class="option-description-display" style="font-size: 0.85rem; color: #64748b; margin-top: 4px; display: none;"></div></div><div class="price-display select-price-display" style="width: 80px; flex: 0 0 80px; text-align: right; font-weight: 600; color: #111827; align-self: flex-start; padding-top: 10px;">$0.00</div></div><input type="hidden" name="qty[]" class="qty-number-input" data-default="1" value="1"><div class="mod-wrapper" data-product="323" style="display: none; width: 100%;"><div class="modifier-row" style="display: flex; width: 100%; align-items: flex-start; gap: 15px; padding-top: 15px; margin-top: 15px; border-top: 1px solid #f1f5f9;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><label style="font-size: 1rem; font-weight: 500; color: #111827; text-transform: none; display: block; margin: 0; padding-top: 10px;"> Enter Outlet Position <span style="color:#ef4444;">*</span></label><div style="font-size: 0.8rem; color: #6b7280; margin-top: 4px;">Distance from tray end to centre of outlet (mm)</div></div><div class="input-col" style="flex: 1; min-width: 150px;"><input type="text" placeholder="Distance from tray end to centre of outlet (mm)" name="attribute[137]" data-required="true" class="mod-input" style="width: 100%; padding: 10px; border: 1px solid #d1d5db; border-radius: 6px; background: #fff; box-sizing: border-box;"><div class="error-msg">⚠ This field is required</div></div><div style="width: 80px; flex: 0 0 80px;"></div></div><div class="modifier-row" style="display: none; width: 100%; align-items: flex-start; gap: 15px; padding-top: 15px; margin-top: 15px; border-top: 1px solid #f1f5f9;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><label style="font-size: 1rem; font-weight: 500; color: #111827; text-transform: none; display: block; margin: 0; padding-top: 10px;"> Notes </label></div><div class="input-col" style="flex: 1; min-width: 150px;"><input type="text" placeholder="Distance from tray end to centre of outlet (mm)" name="attribute[331]" class="mod-input auto-note-input" data-group-name="Drains" data-overwrite-notes="true" style="width: 100%; padding: 10px; border: 1px solid #d1d5db; border-radius: 6px; background: #fff; box-sizing: border-box;"></div><div style="width: 80px; flex: 0 0 80px;"></div></div></div></div></div><div class="item-row" style="display: flex; flex-direction: column; padding: 15px 20px; border-bottom: 1px solid #f8fafc; border-top: 1px solid #f1f5f9;"><div style="display: flex; width: 100%; align-items: flex-start; gap: 15px; justify-content: space-between;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><label style="font-size: 1rem; font-weight: 500; color: #111827; text-transform: none; display: block; margin: 0; padding-top: 10px;">Customer Note</label></div><div class="input-col" style="flex: 1; min-width: 150px;"><input type="text" class="customer-note-input" placeholder="e.g. for Bathroom" style="width: 100%; padding: 10px; border: 1px solid #d1d5db; border-radius: 6px; box-sizing: border-box; font-size: 0.95rem; background: #fff;"></div><div style="width: 80px; flex: 0 0 80px;"></div></div></div><div class="group-subtotal" style="display: flex; justify-content: space-between; padding: 16px 20px; border-top: 1px solid #e5e7eb; font-weight: 600; font-size: 1.05rem; color: #111827; background: #fff; border-bottom-left-radius: 8px; border-bottom-right-radius: 8px;"><div>Subtotal</div><div class="group-subtotal-val">$0.00</div></div></div><div class="btn-container" style="padding: 0 0 20px 0; border: none;"><button type="button" class="btn-add btn-add-more-group" data-target="1774331316328" style="width: 100%; padding: 14px; background: white; border: 1px solid #e5e7eb; color: #111827; border-radius: 8px; font-weight: 500; font-size: 1rem; cursor: pointer; transition: 0.2s; display: flex; justify-content: center; align-items: center; gap: 8px;"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="pointer-events:none;"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg> Add More </button></div></div><div class="group-master-wrapper" data-group-id="1774336176831"><div class="bundle-group-container"><div class="group-instance-header" style="display:none;"></div><div class="element-wrapper" data-element-required="false" style="margin-bottom: 5px;"><div class="item-row bundle-child-form" data-show-mods="true" style="display: flex; flex-direction: column; padding: 15px 20px; border-bottom: 1px solid #f8fafc;"><div style="display: flex; width: 100%; align-items: flex-start; gap: 15px; justify-content: space-between;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><label style="font-size: 1rem; font-weight: 500; color: #111827; text-transform: none; display: block; margin: 0; padding-top: 10px;">Dispatch Priority </label></div><div class="input-col" style="flex: 1; min-width: 150px;"><select name="product_id" class="required-target" style="width: 100%; padding: 10px; border: 1px solid #d1d5db; border-radius: 6px; background: #fff; box-sizing: border-box; font-size: 0.95rem;"><option value="" data-price="">Standard (typically within 3 business days)</option><option value="324" data-deps="" data-price="19.95" data-description="move to front of production queue" >Jump the queue +$19.95</option></select><div class="option-description-display" style="font-size: 0.85rem; color: #64748b; margin-top: 4px; display: none;"></div></div><div class="price-display select-price-display" style="width: 80px; flex: 0 0 80px; text-align: right; font-weight: 600; color: #111827; align-self: flex-start; padding-top: 10px;">$0.00</div></div><div class="qty-row-wrapper" data-base-vis="true" style="display: none; width: 100%; align-items: flex-start; gap: 15px; padding-top: 15px; margin-top: 15px; border-top: 1px solid #f1f5f9; justify-content: space-between;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><label style="font-size: 1rem; font-weight: 500; color: #111827; text-transform: none; margin: 0; padding-top: 10px; display: block;">Qty</label></div><div class="input-col" style="flex: 1; min-width: 150px;"><input type="number" name="qty[]" class="qty-number-input" data-default="1" value="1" min="0" step="1" style="width:100%; padding:10px; border:1px solid #d1d5db; border-radius:6px; box-sizing:border-box; font-size: 0.95rem;"></div><div style="width: 80px; flex: 0 0 80px;"></div></div><div class="mod-wrapper" data-product="324" style="display: none; width: 100%;"><div class="modifier-row" style="display: none; width: 100%; align-items: flex-start; gap: 15px; padding-top: 15px; margin-top: 15px; border-top: 1px solid #f1f5f9;"><div class="label-col" style="width: 40%; flex: 0 0 40%; min-width: 150px;"><label style="font-size: 1rem; font-weight: 500; color: #111827; text-transform: none; display: block; margin: 0; padding-top: 10px;"> Notes </label></div><div class="input-col" style="flex: 1; min-width: 150px;"><input type="text" placeholder="Enter details..." name="attribute[332]" class="mod-input" style="width: 100%; padding: 10px; border: 1px solid #d1d5db; border-radius: 6px; background: #fff; box-sizing: border-box;"></div><div style="width: 80px; flex: 0 0 80px;"></div></div></div></div></div><div class="group-subtotal" style="display: flex; justify-content: space-between; padding: 16px 20px; border-top: 1px solid #e5e7eb; font-weight: 600; font-size: 1.05rem; color: #111827; background: #fff; border-bottom-left-radius: 8px; border-bottom-right-radius: 8px;"><div>Subtotal</div><div class="group-subtotal-val">$0.00</div></div></div></div><div class="quote-footer" style="padding: 0; background: transparent; display: flex; flex-direction: column; gap: 15px;"><div style="background: #111827; color: white; padding: 20px; border-radius: 8px; display: flex; justify-content: space-between; align-items: center; font-size: 1.25rem; font-weight: bold; width: 100%; box-sizing: border-box;"><div>Grand Total</div><div id="live-total">$0.00</div></div><button type="button" class="bundle-add-to-cart-btn" data-default-text="Add to Cart" style="width: 100%; padding: 15px; margin-top: 5px; background: #2563eb; color: #ffffff; border: none; font-size: 1.1rem; border-radius: 8px; font-weight: bold; cursor: pointer; transition: 0.2s;">Add to Cart</button><button type="button" class="bundle-download-pdf-btn" onclick="generatePDF()" style="width: 100%; padding: 15px; background: #ef4444; color: #ffffff; border: none; font-size: 1.1rem; border-radius: 8px; font-weight: bold; cursor: pointer; transition: 0.2s;">Download PDF Quotation</button></div></form></div><script src="https://store-vf7rovdake.mybigcommerce.com/content/apps/js/product-config-app-main.js"></script>